form.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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="orderId">
  11. <a-select v-model:value="formData.orderId" placeholder="请选择订单信息"
  12. :options="orderIdList" @change="onChangeOrder"
  13. > </a-select>
  14. </a-form-item>
  15. <a-form-item label="装卸点位:" name="loadPointId">
  16. <a-select v-model:value="formData.loadPointId" placeholder="请选择装卸点位"
  17. :options="loadPointIdList" @change="onChangePoint"
  18. > </a-select>
  19. </a-form-item>
  20. <a-form-item label="装卸时间:" name="loadTimeId">
  21. <a-select v-model:value="formData.loadTimeId" placeholder="请选择装卸时间"
  22. :options="loadTimeIdList"
  23. > </a-select>
  24. </a-form-item>
  25. <a-form-item label="车牌号:" name="licenseNumber">
  26. <a-input v-model:value="formData.licenseNumber" placeholder="请输入车牌号" allow-clear />
  27. </a-form-item>
  28. <!-- <a-form-item label="预约时段:" name="timeId">
  29. <a-select v-model:value="formData.timeId" placeholder="请选择预约时段"
  30. :options="timeIdList"
  31. > </a-select>
  32. </a-form-item>-->
  33. <a-form-item label="车辆轴数:" name="overId">
  34. <a-select v-model:value="formData.overId" placeholder="请选择车辆轴数"
  35. :options="overIdList"
  36. > </a-select>
  37. </a-form-item>
  38. <a-form-item label="司机姓名:" name="driverName">
  39. <a-input v-model:value="formData.driverName" placeholder="请输入司机姓名" allow-clear />
  40. </a-form-item>
  41. <a-form-item label="司机电话:" name="driverMobile">
  42. <a-input v-model:value="formData.driverMobile" placeholder="请输入司机电话" allow-clear />
  43. </a-form-item>
  44. </a-form>
  45. <template #footer>
  46. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  47. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  48. </template>
  49. </xn-form-container>
  50. </template>
  51. <script setup name="bizAppointmentRecordForm">
  52. import { cloneDeep } from 'lodash-es'
  53. import { required } from '@/utils/formRules'
  54. import bizAppointmentRecordApi from '@/api/biz/bizAppointmentRecordApi'
  55. import bizAppointmentTimeApi from "@/api/biz/bizAppointmentTimeApi";
  56. import bizOrderApi from '@/api/biz/bizOrderApi'
  57. import bizExcessConfigApi from "@/api/biz/bizExcessConfigApi";
  58. import bizOrderLoadApi from "@/api/biz/bizOrderLoadApi";
  59. // 抽屉状态
  60. const open = ref(false)
  61. const emit = defineEmits({ successful: null })
  62. const formRef = ref()
  63. // 表单数据
  64. const formData = ref({})
  65. const submitLoading = ref(false)
  66. const orderIdList = ref()
  67. const timeIdList = ref()
  68. const overIdList = ref()
  69. const loadPointIdList = ref()
  70. const loadTimeIdList = ref()
  71. //设置表单样式
  72. const labelCol = ref({ span: 5})
  73. const wrapperCol = ref({ span: 16})
  74. // 打开抽屉
  75. const onOpen = (record) => {
  76. open.value = true
  77. if (record) {
  78. let recordData = cloneDeep(record)
  79. formData.value = Object.assign({}, recordData)
  80. }
  81. //查询订单信息
  82. bizOrderApi.getList().then((res)=>{
  83. orderIdList.value = res.map((item)=>{
  84. return{
  85. value:item.id,
  86. label:item.orderNumber
  87. }
  88. })
  89. })
  90. //查询预约时段下拉
  91. /*bizAppointmentTimeApi.getDownList().then((res)=>{
  92. timeIdList.value = res.map((item)=>{
  93. return{
  94. value:item.id,
  95. label:item.beginTime + '-' + item.endTime
  96. }
  97. })
  98. })*/
  99. //查询车辆轴数
  100. bizExcessConfigApi.getList().then((res)=>{
  101. overIdList.value = res.map((item)=>{
  102. return{
  103. value:item.id,
  104. label:item.vehicleAxleNumber+'轴'
  105. }
  106. })
  107. })
  108. //查询装卸点位信息
  109. if(formData.value.orderId){
  110. bizOrderLoadApi.getPointList({orderId:formData.value.orderId}).then((res)=>{
  111. loadPointIdList.value=res.map((item)=>{
  112. return{
  113. value:item.loadPointId,
  114. label:item.loadPoint
  115. }
  116. })
  117. })
  118. }
  119. //查询装卸时间信息
  120. if(formData.value.orderId && formData.value.loadPointId){
  121. bizOrderLoadApi.getLoadTimeList({orderId:formData.value.orderId,loadPointId:formData.value.loadPointId}).then((res)=>{
  122. loadTimeIdList.value = res.map((item)=>{
  123. return{
  124. value:item.loadTimeId,
  125. label:item.beginTime+'~'+item.endTime
  126. }
  127. })
  128. })
  129. }
  130. }
  131. //订单点击事件
  132. const onChangeOrder = (value) =>{
  133. formData.value.loadTimeId = ''
  134. formData.value.loadPointId = ''
  135. loadTimeIdList.value = ''
  136. console.log("value:"+JSON.stringify(value))
  137. bizOrderLoadApi.getPointList({orderId:value}).then((res)=>{
  138. loadPointIdList.value=res.map((item)=>{
  139. return{
  140. value:item.loadPointId,
  141. label:item.loadPoint
  142. }
  143. })
  144. })
  145. }
  146. //装卸点位点击事件
  147. const onChangePoint = (value) =>{
  148. formData.value.loadTimeId = ''
  149. bizOrderLoadApi.getLoadTimeList({orderId:formData.value.orderId,loadPointId:value}).then((res)=>{
  150. loadTimeIdList.value = res.map((item)=>{
  151. return{
  152. value:item.loadTimeId,
  153. label:item.beginTime+'~'+item.endTime
  154. }
  155. })
  156. })
  157. }
  158. // 关闭抽屉
  159. const onClose = () => {
  160. formRef.value.resetFields()
  161. formData.value = {}
  162. open.value = false
  163. }
  164. // 默认要校验的
  165. const formRules = {
  166. orderId: [required('请选择订单信息')],
  167. licenseNumber: [required('请输入车牌号')],
  168. //timeId: [required('请选择预约时段')],
  169. overId: [required('请选择车辆轴数')],
  170. driverName:[required('请输入司机姓名')],
  171. driverMobile:[required('请输入司机电话')],
  172. loadPointId:[required('请选择装卸点位')],
  173. loadTimeId:[required('请选择装卸时间')],
  174. }
  175. // 验证并提交数据
  176. const onSubmit = () => {
  177. formRef.value
  178. .validate()
  179. .then(() => {
  180. submitLoading.value = true
  181. const formDataParam = cloneDeep(formData.value)
  182. bizAppointmentRecordApi
  183. .bizAppointmentRecordSubmitForm(formDataParam, formDataParam.id)
  184. .then(() => {
  185. onClose()
  186. emit('successful')
  187. })
  188. .finally(() => {
  189. submitLoading.value = false
  190. })
  191. })
  192. .catch(() => {})
  193. }
  194. // 抛出函数
  195. defineExpose({
  196. onOpen
  197. })
  198. </script>