dispatchadd.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <template>
  2. <xn-form-container
  3. :title="formData.id ? '装载车调度更换' : '装载车调度新增'"
  4. :width="900"
  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="loadNumber">
  11. <a-input v-model:value="formData.loadNumber" placeholder="请输入预约单号" allow-clear disabled/>
  12. </a-form-item>
  13. <a-form-item label="装卸点位:" name="loadPointId">
  14. <a-select v-model:value="formData.loadPointId" placeholder="请选择装卸点位"
  15. :options="loadPointIdList" @change="onChangePoint"
  16. > </a-select>
  17. </a-form-item>
  18. <a-form-item label="装卸时间:" name="loadTimeId" >
  19. <a-select v-model:value="formData.loadTimeId" placeholder="请选择装卸时间"
  20. :options="loadTimeIdList" @change="onChangeLoadTime"
  21. > </a-select>
  22. </a-form-item>
  23. <a-form-item label="可约次数:" name="availableNumber" v-show="numberFlag">
  24. <a-input v-model:value="formData.availableNumber" placeholder="请输入可约次数" allow-clear disabled/>
  25. </a-form-item>
  26. <a-form-item label="已约次数:" name="alreadyNumber" v-show="numberFlag">
  27. <a-input v-model:value="formData.alreadyNumber" placeholder="请输入已约次数" allow-clear disabled/>
  28. </a-form-item>
  29. </a-form>
  30. <!-- <s-table
  31. ref="tableRef"
  32. :columns="columns"
  33. :data="loadData"
  34. bordered
  35. :row-key="(record) => record.id"
  36. >
  37. <template #operator class="table-operator">
  38. <a-space>
  39. <a-button type="primary" @click="formRef.onOpen()">
  40. <template #icon><plus-outlined /></template>
  41. 新增
  42. </a-button>
  43. </a-space>
  44. </template>
  45. <template #bodyCell="{ column, record }">
  46. <template v-if="column.dataIndex === 'action'">
  47. <a-space>
  48. <a-button type="link" size="small" v-if="hasPerm('bizDispatchReplace')" @click="replaceRef.onOpen(record)">更换</a-button>
  49. </a-space>
  50. <a-space>
  51. <a-button type="link" danger size="small" v-if="hasPerm('bizOrderDispatchDelete')" @click="deleteConfig(record)">删除</a-button>
  52. </a-space>
  53. </template>
  54. </template>
  55. </s-table>-->
  56. <template #footer>
  57. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  58. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  59. </template>
  60. <Replace ref="replaceRef" @successful="tableRef.refresh(true)" />
  61. </xn-form-container>
  62. </template>
  63. <script setup name="bizOrderForm">
  64. import { cloneDeep } from 'lodash-es'
  65. import { required } from '@/utils/formRules'
  66. import tool from '@/utils/tool'
  67. import goodsConfApi from '@/api/biz/goodsConfApi'
  68. import bizSaleOrderApi from "@/api/biz/bizSaleOrderApi";
  69. import bizLoadPointApi from "@/api/biz/bizLoadPointApi";
  70. import bizLoadTimeApi from "@/api/biz/bizLoadTimeApi"
  71. import bizOrderLoadApi from "@/api/biz/bizOrderLoadApi";
  72. import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
  73. import {Modal} from 'ant-design-vue';
  74. import {createVNode} from 'vue';
  75. import Replace from './replace.vue'
  76. import bizLoadDispatchApi from "@/api/biz/bizLoadDispatchApi";
  77. // 抽屉状态
  78. const open = ref(false)
  79. const emit = defineEmits({ successful: null })
  80. const formRef = ref()
  81. const tableRef = ref()
  82. const replaceRef = ref()
  83. const numberFlag = ref(false)
  84. // 表单数据
  85. const formData = ref({})
  86. const submitLoading = ref(false)
  87. //设置表单样式
  88. const labelCol = ref({ span: 5})
  89. const wrapperCol = ref({ span: 16})
  90. //订单类型
  91. const orderTypeList = tool.dictList('order_type')
  92. const goodIdList = ref()
  93. const customerIdList = ref()
  94. const saleOrderInfoList = ref()
  95. const deliveryTimeIdList = ref()
  96. const supplierIdList = ref()
  97. const loadPointIdList = ref()
  98. const loadTimeIdList = ref()
  99. // 打开抽屉
  100. const onOpen = (record,loadNumber) => {
  101. open.value = true
  102. if (record) {
  103. let recordData = cloneDeep(record)
  104. formData.value.appointId = record
  105. formData.value.loadNumber = loadNumber
  106. }
  107. //装货点位查询
  108. bizLoadPointApi.getList({appointType:'2'}).then((res)=>{
  109. loadPointIdList.value = res.map((item)=>{
  110. return{
  111. value:item.id,
  112. label:item.loadPoint
  113. }
  114. })
  115. })
  116. }
  117. //卸货点位点击事件
  118. const onChangePoint =(value)=>{
  119. formData.value.loadTimeId = ''
  120. loadTimeIdList.value = ''
  121. formData.value.availableNumber = ''
  122. formData.value.alreadyNumber = ''
  123. bizLoadTimeApi.searchNow({pointId:formData.value.loadPointId}).then((res)=>{
  124. loadTimeIdList.value = res.map((item)=>{
  125. return{
  126. value:item.id,
  127. label:item.beginTime+'~'+item.endTime
  128. }
  129. })
  130. })
  131. }
  132. const onChangeLoadTime = (value) => {
  133. bizLoadTimeApi.bizLoadTimeDetail({id:value}).then((res)=>{
  134. formData.value.availableNumber = res.availableNumber
  135. formData.value.alreadyNumber = res.alreadyNumber
  136. numberFlag.value = true
  137. })
  138. }
  139. const loadData = (parameter) => {
  140. return bizLoadDispatchApi.getPageList({appointId:formData.value.id,appointType:'2'}).then((data) => {
  141. return data
  142. })
  143. }
  144. const columns = [
  145. {
  146. title: '装卸点位',
  147. dataIndex: 'loadPoint',
  148. align:'center'
  149. },
  150. {
  151. title: '开始时间',
  152. dataIndex: 'beginTime',
  153. align:'center'
  154. },
  155. {
  156. title: '结束时间',
  157. dataIndex: 'endTime',
  158. align:'center'
  159. },
  160. {
  161. title: '可约次数',
  162. dataIndex: 'availableNumber',
  163. align:'center'
  164. },
  165. {
  166. title: '已约次数',
  167. dataIndex: 'alreadyNumber',
  168. align:'center'
  169. },
  170. ]
  171. // 操作栏通过权限判断是否显示
  172. columns.push({
  173. title: '操作',
  174. dataIndex: 'action',
  175. align: 'center',
  176. width: 150
  177. })
  178. // 关闭抽屉
  179. const onClose = () => {
  180. formRef.value.resetFields()
  181. formData.value = {}
  182. open.value = false
  183. loadTimeIdList.value = ''
  184. numberFlag.value = false
  185. emit('successful')
  186. }
  187. // 默认要校验的
  188. const formRules = {
  189. //orderNumber: [required('请输入订单编号')],
  190. //orderName: [required('请输入订单名称')],
  191. //customerId:[required('请选择客户信息')],
  192. loadPointId:[required('请选择装卸点位')],
  193. loadTimeId: [required('请选择装卸时间')],
  194. }
  195. // 删除
  196. const deleteConfig = (record) => {
  197. Modal.confirm({
  198. title: '确定删除该数据吗?',
  199. icon: createVNode(ExclamationCircleOutlined),
  200. content: '',
  201. onOk() {
  202. submitLoading.value = true
  203. let params = [
  204. {
  205. id: record.id
  206. }
  207. ]
  208. bizLoadDispatchApi
  209. .deleteDispatch(params)
  210. .then(() => {
  211. tableRef.value.refresh(true)
  212. })
  213. .finally(() => {
  214. submitLoading.value = false
  215. })
  216. },
  217. onCancel() {}
  218. })
  219. }
  220. // 验证并提交数据
  221. const onSubmit = () => {
  222. formRef.value
  223. .validate()
  224. .then(() => {
  225. submitLoading.value = true
  226. const formDataParam = cloneDeep(formData.value)
  227. bizLoadDispatchApi
  228. .bizLoadDispatchSubmitDispatch(formDataParam, formDataParam.id)
  229. .then(() => {
  230. onClose()
  231. })
  232. .finally(() => {
  233. submitLoading.value = false
  234. })
  235. })
  236. .catch(() => {})
  237. }
  238. // 抛出函数
  239. defineExpose({
  240. onOpen
  241. })
  242. </script>
  243. <style>
  244. /* 修改禁用状态下的颜色 */
  245. .ant-radio-button-wrapper-disabled {
  246. color: black !important; /* 设置文字颜色 */
  247. background-color: #f0f0f0 !important; /* 设置背景颜色 */
  248. }
  249. /* 修改禁用状态下选中项的颜色 */
  250. .ant-radio-button-wrapper-checked.ant-radio-button-wrapper-disabled {
  251. color: white !important; /* 设置文字颜色 */
  252. background-color: blue !important; /* 设置选中项的背景颜色 */
  253. }
  254. </style>