form.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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="loadWeight">
  26. <a-input-number v-model:value="formData.loadWeight" style="width:90%" :precision="2" :min="0.01" :max="99999" placeholder="请输入车辆装载量" allow-clear /><span style="margin-left:10px;">吨</span>
  27. </a-form-item>
  28. <a-form-item label="结算基础金额:" name="settleAccount">
  29. <a-input-number v-model:value="formData.settleAccount" style="width:90%" :precision="2" :min="0.01" :max="9999999" placeholder="请输入结算基础金额" allow-clear /><span style="margin-left:10px;">元</span>
  30. </a-form-item>
  31. <a-form-item label="预约审核开关:" name="auditSwitch">
  32. <a-radio-group button-style="solid" v-model:value="formData.auditSwitch">
  33. <a-radio-button value="1">
  34. 开启
  35. </a-radio-button>
  36. <a-radio-button value="2">
  37. 关闭
  38. </a-radio-button>
  39. </a-radio-group>
  40. </a-form-item>
  41. <a-form-item label="订单重量校验开关:" name="orderWeightSwitch">
  42. <a-radio-group button-style="solid" v-model:value="formData.orderWeightSwitch">
  43. <a-radio-button value="1">
  44. 开启
  45. </a-radio-button>
  46. <a-radio-button value="2">
  47. 关闭
  48. </a-radio-button>
  49. </a-radio-group>
  50. </a-form-item>
  51. <a-form-item label="门禁强制校验开关:" name="accessControlSwitch">
  52. <a-radio-group button-style="solid" v-model:value="formData.accessControlSwitch">
  53. <a-radio-button value="1">
  54. 开启
  55. </a-radio-button>
  56. <a-radio-button value="2">
  57. 关闭
  58. </a-radio-button>
  59. </a-radio-group>
  60. </a-form-item>
  61. <!-- <a-form-item label="排队通知开关:" name="lineNoticeSwitch">
  62. <a-radio-group button-style="solid" v-model:value="formData.lineNoticeSwitch">
  63. <a-radio-button value="1">
  64. 开启
  65. </a-radio-button>
  66. <a-radio-button value="2">
  67. 关闭
  68. </a-radio-button>
  69. </a-radio-group>
  70. </a-form-item>-->
  71. <!-- <a-form-item label="临时预约审核开关:" name="temporaryAuditSwitch">
  72. <a-radio-group button-style="solid" v-model:value="formData.temporaryAuditSwitch">
  73. <a-radio-button value="1">
  74. 开启
  75. </a-radio-button>
  76. <a-radio-button value="2">
  77. 关闭
  78. </a-radio-button>
  79. </a-radio-group>
  80. </a-form-item>-->
  81. <a-form-item label="装货点位共享开关:" name="loadSwitch">
  82. <a-radio-group button-style="solid" v-model:value="formData.loadSwitch">
  83. <a-radio-button value="1">
  84. 开启
  85. </a-radio-button>
  86. <a-radio-button value="2">
  87. 关闭
  88. </a-radio-button>
  89. </a-radio-group>
  90. </a-form-item>
  91. </a-form>
  92. <template #footer>
  93. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  94. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  95. </template>
  96. </xn-form-container>
  97. </template>
  98. <script setup name="bizConfigForm">
  99. import { cloneDeep } from 'lodash-es'
  100. import { required } from '@/utils/formRules'
  101. import bizConfigApi from '@/api/biz/bizConfigApi'
  102. // 抽屉状态
  103. const open = ref(false)
  104. const emit = defineEmits({ successful: null })
  105. const formRef = ref()
  106. // 表单数据
  107. const formData = ref({})
  108. const submitLoading = ref(false)
  109. //设置表单样式
  110. const labelCol = ref({ span: 6})
  111. const wrapperCol = ref({ span: 16})
  112. // 打开抽屉
  113. const onOpen = (record) => {
  114. open.value = true
  115. if (record) {
  116. let recordData = cloneDeep(record)
  117. formData.value = Object.assign({}, recordData)
  118. }else{
  119. formData.value.auditSwitch = '2'
  120. formData.value.orderWeightSwitch = '2'
  121. formData.value.accessControlSwitch = '2'
  122. }
  123. }
  124. // 关闭抽屉
  125. const onClose = () => {
  126. formRef.value.resetFields()
  127. formData.value = {}
  128. open.value = false
  129. }
  130. // 默认要校验的
  131. const formRules = {
  132. queueEfficiency: [required('请输入排队时效')],
  133. pullNumber: [required('请输入时段下拉个数')],
  134. stopDuration: [required('请输入停留时长')],
  135. auditSwitch: [required('请输入预约审核开关(1:开启 2:关闭)')],
  136. orderWeightSwitch: [required('请输入订单重量校验开关(1:开启 2:关闭)')],
  137. accessControlSwitch: [required('请输入门禁强制校验开关')],
  138. lossWarn: [required('请输入装卸损耗预警值')],
  139. applyCount: [required('请输入预约申请数量')],
  140. lineNoticeSwitch: [required('请选择排队通知开关')],
  141. loadWeight: [required('请输入车辆装载量')],
  142. settleAccount:[required('请输入结算基础金额')],
  143. loadSwitch:[required('请选择装货点位共享开关')],
  144. }
  145. // 验证并提交数据
  146. const onSubmit = () => {
  147. formRef.value
  148. .validate()
  149. .then(() => {
  150. submitLoading.value = true
  151. const formDataParam = cloneDeep(formData.value)
  152. bizConfigApi
  153. .bizConfigSubmitForm(formDataParam, formDataParam.id)
  154. .then(() => {
  155. onClose()
  156. emit('successful')
  157. })
  158. .finally(() => {
  159. submitLoading.value = false
  160. })
  161. })
  162. .catch(() => {})
  163. }
  164. // 抛出函数
  165. defineExpose({
  166. onOpen
  167. })
  168. </script>