form.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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-item label="司机:" name="driverId">
  45. <xn-user-selector
  46. :org-tree-api="selectorApiFunction.orgTreeApi"
  47. :user-page-api="selectorApiFunction.userPageApi"
  48. :radio-model="true"
  49. placeholder="请选择司机"
  50. v-model:value="formData.driverId"
  51. />
  52. </a-form-item>
  53. </a-form>
  54. <template #footer>
  55. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  56. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  57. </template>
  58. </xn-form-container>
  59. </template>
  60. <script setup name="bizAppointmentRecordForm">
  61. import { cloneDeep } from 'lodash-es'
  62. import { required } from '@/utils/formRules'
  63. import bizAppointmentRecordApi from '@/api/biz/bizAppointmentRecordApi'
  64. import bizAppointmentTimeApi from "@/api/biz/bizAppointmentTimeApi";
  65. import bizOrderApi from '@/api/biz/bizOrderApi'
  66. import bizExcessConfigApi from "@/api/biz/bizExcessConfigApi";
  67. import bizOrderLoadApi from "@/api/biz/bizOrderLoadApi";
  68. import userApi from '@/api/biz/bizUserApi'
  69. // 抽屉状态
  70. const open = ref(false)
  71. const emit = defineEmits({ successful: null })
  72. const formRef = ref()
  73. // 表单数据
  74. const formData = ref({})
  75. const submitLoading = ref(false)
  76. const orderIdList = ref()
  77. const timeIdList = ref()
  78. const overIdList = ref()
  79. const loadPointIdList = ref()
  80. const loadTimeIdList = ref()
  81. //设置表单样式
  82. const labelCol = ref({ span: 5})
  83. const wrapperCol = ref({ span: 16})
  84. // 打开抽屉
  85. const onOpen = (record) => {
  86. open.value = true
  87. if (record) {
  88. let recordData = cloneDeep(record)
  89. formData.value = Object.assign({}, recordData)
  90. }
  91. //查询订单信息
  92. bizOrderApi.getList().then((res)=>{
  93. orderIdList.value = res.map((item)=>{
  94. return{
  95. value:item.id,
  96. label:item.orderNumber
  97. }
  98. })
  99. })
  100. //查询预约时段下拉
  101. /*bizAppointmentTimeApi.getDownList().then((res)=>{
  102. timeIdList.value = res.map((item)=>{
  103. return{
  104. value:item.id,
  105. label:item.beginTime + '-' + item.endTime
  106. }
  107. })
  108. })*/
  109. //查询车辆轴数
  110. bizExcessConfigApi.getList().then((res)=>{
  111. overIdList.value = res.map((item)=>{
  112. return{
  113. value:item.id,
  114. label:item.vehicleAxleNumber+'轴'
  115. }
  116. })
  117. })
  118. //查询装卸点位信息
  119. if(formData.value.orderId){
  120. bizOrderLoadApi.getPointList({orderId:formData.value.orderId}).then((res)=>{
  121. loadPointIdList.value=res.map((item)=>{
  122. return{
  123. value:item.loadPointId,
  124. label:item.loadPoint
  125. }
  126. })
  127. })
  128. }
  129. //查询装卸时间信息
  130. if(formData.value.orderId && formData.value.loadPointId){
  131. bizOrderLoadApi.getLoadTimeList({orderId:formData.value.orderId,loadPointId:formData.value.loadPointId}).then((res)=>{
  132. loadTimeIdList.value = res.map((item)=>{
  133. return{
  134. value:item.loadTimeId,
  135. label:item.beginTime+'~'+item.endTime
  136. }
  137. })
  138. })
  139. }
  140. }
  141. //订单点击事件
  142. const onChangeOrder = (value) =>{
  143. formData.value.loadTimeId = ''
  144. formData.value.loadPointId = ''
  145. loadTimeIdList.value = ''
  146. console.log("value:"+JSON.stringify(value))
  147. bizOrderLoadApi.getPointList({orderId:value}).then((res)=>{
  148. loadPointIdList.value=res.map((item)=>{
  149. return{
  150. value:item.loadPointId,
  151. label:item.loadPoint
  152. }
  153. })
  154. })
  155. }
  156. //装卸点位点击事件
  157. const onChangePoint = (value) =>{
  158. formData.value.loadTimeId = ''
  159. bizOrderLoadApi.getLoadTimeList({orderId:formData.value.orderId,loadPointId:value}).then((res)=>{
  160. loadTimeIdList.value = res.map((item)=>{
  161. return{
  162. value:item.loadTimeId,
  163. label:item.beginTime+'~'+item.endTime
  164. }
  165. })
  166. })
  167. }
  168. // 关闭抽屉
  169. const onClose = () => {
  170. formRef.value.resetFields()
  171. formData.value = {}
  172. open.value = false
  173. }
  174. // 默认要校验的
  175. const formRules = {
  176. orderId: [required('请选择订单信息')],
  177. licenseNumber: [required('请输入车牌号')],
  178. //timeId: [required('请选择预约时段')],
  179. overId: [required('请选择车辆轴数')],
  180. loadPointId:[required('请选择装卸点位')],
  181. loadTimeId:[required('请选择装卸时间')],
  182. driverId:[required('请选择司机')],
  183. }
  184. // 验证并提交数据
  185. const onSubmit = () => {
  186. formRef.value
  187. .validate()
  188. .then(() => {
  189. submitLoading.value = true
  190. const formDataParam = cloneDeep(formData.value)
  191. bizAppointmentRecordApi
  192. .bizAppointmentRecordSubmitForm(formDataParam, formDataParam.id)
  193. .then(() => {
  194. onClose()
  195. emit('successful')
  196. })
  197. .finally(() => {
  198. submitLoading.value = false
  199. })
  200. })
  201. .catch(() => {})
  202. }
  203. // 传递设计器需要的API
  204. const selectorApiFunction = {
  205. orgTreeApi: (param) => {
  206. return userApi.userOrgTreeSelector(param).then((data) => {
  207. return Promise.resolve(data)
  208. })
  209. },
  210. userPageApi: (param) => {
  211. param.roleName = '司机'
  212. return userApi.userSelectorByRole(param).then((data) => {
  213. return Promise.resolve(data)
  214. })
  215. }
  216. }
  217. // 抛出函数
  218. defineExpose({
  219. onOpen
  220. })
  221. </script>