form.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <xn-form-container
  3. :title="formData.id ? '编辑系统配置' : '增加系统配置'"
  4. :width="700"
  5. v-model:open="open"
  6. :destroy-on-close="true"
  7. @close="onClose"
  8. >
  9. <a-form ref="formRef" :model="formData" :rules="formRules" :wrapper-col="wrapperCol" :label-col="labelCol">
  10. <a-form-item label="排队时效:" name="queueEfficiency">
  11. <a-input-number v-model:value="formData.queueEfficiency" style="width:90%" :precision="0" :min="1" :max="99999" placeholder="请输入排队时效" allow-clear /><span style="margin-left:10px;">分钟</span>
  12. </a-form-item>
  13. <!-- <a-form-item label="时段下拉个数:" name="pullNumber">
  14. <a-input-number v-model:value="formData.pullNumber" style="width:90%" :precision="0" :min="1" :max="99999" placeholder="请输入时段下拉个数" allow-clear /><span style="margin-left:10px;">个</span>
  15. </a-form-item>-->
  16. <a-form-item label="停留时长:" name="stopDuration">
  17. <a-input-number v-model:value="formData.stopDuration" style="width:90%" :precision="0" :min="1" :max="99999" placeholder="请输入停留时长" allow-clear /><span style="margin-left:10px;">分钟</span>
  18. </a-form-item>
  19. <a-form-item label="装卸损耗预警值:" name="lossWarn">
  20. <a-input-number v-model:value="formData.lossWarn" style="width:90%" :precision="0" :min="1" :max="99999" placeholder="请输入装卸损耗预警值" allow-clear /><span style="margin-left:10px;">%</span>
  21. </a-form-item>
  22. <a-form-item label="预约申请数量:" name="applyCount">
  23. <a-input-number v-model:value="formData.applyCount" style="width:90%" :precision="0" :min="1" :max="99999" placeholder="请输入预约申请数量" allow-clear /><span style="margin-left:10px;">个</span>
  24. </a-form-item>
  25. <a-form-item label="预约审核开关:" name="auditSwitch">
  26. <a-radio-group button-style="solid" v-model:value="formData.auditSwitch">
  27. <a-radio-button value="1">
  28. 开启
  29. </a-radio-button>
  30. <a-radio-button value="2">
  31. 关闭
  32. </a-radio-button>
  33. </a-radio-group>
  34. </a-form-item>
  35. <a-form-item label="订单重量校验开关:" name="orderWeightSwitch">
  36. <a-radio-group button-style="solid" v-model:value="formData.orderWeightSwitch">
  37. <a-radio-button value="1">
  38. 开启
  39. </a-radio-button>
  40. <a-radio-button value="2">
  41. 关闭
  42. </a-radio-button>
  43. </a-radio-group>
  44. </a-form-item>
  45. <a-form-item label="门禁强制校验开关:" name="accessControlSwitch">
  46. <a-radio-group button-style="solid" v-model:value="formData.accessControlSwitch">
  47. <a-radio-button value="1">
  48. 开启
  49. </a-radio-button>
  50. <a-radio-button value="2">
  51. 关闭
  52. </a-radio-button>
  53. </a-radio-group>
  54. </a-form-item>
  55. <a-form-item label="排队通知开关:" name="lineNoticeSwitch">
  56. <a-radio-group button-style="solid" v-model:value="formData.lineNoticeSwitch">
  57. <a-radio-button value="1">
  58. 开启
  59. </a-radio-button>
  60. <a-radio-button value="2">
  61. 关闭
  62. </a-radio-button>
  63. </a-radio-group>
  64. </a-form-item>
  65. <a-form-item label="临时预约审核开关:" name="temporaryAuditSwitch">
  66. <a-radio-group button-style="solid" v-model:value="formData.temporaryAuditSwitch">
  67. <a-radio-button value="1">
  68. 开启
  69. </a-radio-button>
  70. <a-radio-button value="2">
  71. 关闭
  72. </a-radio-button>
  73. </a-radio-group>
  74. </a-form-item>
  75. </a-form>
  76. <template #footer>
  77. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  78. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  79. </template>
  80. </xn-form-container>
  81. </template>
  82. <script setup name="bizConfigForm">
  83. import { cloneDeep } from 'lodash-es'
  84. import { required } from '@/utils/formRules'
  85. import bizConfigApi from '@/api/biz/bizConfigApi'
  86. // 抽屉状态
  87. const open = ref(false)
  88. const emit = defineEmits({ successful: null })
  89. const formRef = ref()
  90. // 表单数据
  91. const formData = ref({})
  92. const submitLoading = ref(false)
  93. //设置表单样式
  94. const labelCol = ref({ span: 6})
  95. const wrapperCol = ref({ span: 16})
  96. // 打开抽屉
  97. const onOpen = (record) => {
  98. open.value = true
  99. if (record) {
  100. let recordData = cloneDeep(record)
  101. formData.value = Object.assign({}, recordData)
  102. }else{
  103. formData.value.auditSwitch = '2'
  104. formData.value.orderWeightSwitch = '2'
  105. formData.value.accessControlSwitch = '2'
  106. }
  107. }
  108. // 关闭抽屉
  109. const onClose = () => {
  110. formRef.value.resetFields()
  111. formData.value = {}
  112. open.value = false
  113. }
  114. // 默认要校验的
  115. const formRules = {
  116. queueEfficiency: [required('请输入排队时效')],
  117. pullNumber: [required('请输入时段下拉个数')],
  118. stopDuration: [required('请输入停留时长')],
  119. auditSwitch: [required('请输入预约审核开关(1:开启 2:关闭)')],
  120. orderWeightSwitch: [required('请输入订单重量校验开关(1:开启 2:关闭)')],
  121. accessControlSwitch: [required('请输入门禁强制校验开关')],
  122. lossWarn: [required('请输入装卸损耗预警值')],
  123. applyCount: [required('请输入预约申请数量')],
  124. lineNoticeSwitch: [required('请选择排队通知开关')],
  125. }
  126. // 验证并提交数据
  127. const onSubmit = () => {
  128. formRef.value
  129. .validate()
  130. .then(() => {
  131. submitLoading.value = true
  132. const formDataParam = cloneDeep(formData.value)
  133. bizConfigApi
  134. .bizConfigSubmitForm(formDataParam, formDataParam.id)
  135. .then(() => {
  136. onClose()
  137. emit('successful')
  138. })
  139. .finally(() => {
  140. submitLoading.value = false
  141. })
  142. })
  143. .catch(() => {})
  144. }
  145. // 抛出函数
  146. defineExpose({
  147. onOpen
  148. })
  149. </script>