| | |
| | | </el-button> |
| | | </template> |
| | | <template #menu-before="{row}"> |
| | | |
| | | <el-link size="small" type="primary" v-if="[0,1,2,3].includes(row.status)" @click="handleClose(row)" class="link-btn" |
| | | v-hasPermi="['tms:tmsDispatchOrder:closeOrder']" |
| | | :underline="false" icon="el-icon-close">作废 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="![0,1].includes(row.status)" @click="handleLogItinerary(row)" |
| | | v-hasPermi="['tms:tmsTrip:list']" |
| | | class="link-btn" :underline="false" icon="el-icon-view">查看行程 |
| | |
| | | :true-value="1" |
| | | :false-value="0" |
| | | @change="(e:number) =>isYFChange(e, row)" ></el-checkbox> |
| | | </template> |
| | | <template #remark="{row}"> |
| | | <el-input v-model="row.remark" placeholder="备注" ></el-input> |
| | | </template> |
| | | <template #expand="{row}"> |
| | | <el-descriptions :column="3" border v-if="row.isYF == 1"> |
| | |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="调度单作废" v-model="open5" class="avue-dialog avue-dialog--top" width="80%"> |
| | | <el-descriptions :column="3" border> |
| | | <el-descriptions-item label="调度单号">{{form.dispatchNo}}</el-descriptions-item> |
| | | <el-descriptions-item label="客户名称">{{form.customerName}}</el-descriptions-item> |
| | | <el-descriptions-item label="项目名称">{{form.projectName}}</el-descriptions-item> |
| | | <el-descriptions-item label="运输路线">{{form.transportLine}}</el-descriptions-item> |
| | | <el-descriptions-item label="车型">{{form.$actualVehicleType}}</el-descriptions-item> |
| | | <el-descriptions-item label="车牌">{{form.licensePlate}}</el-descriptions-item> |
| | | </el-descriptions> |
| | | |
| | | <avue-form v-model="boxForm" ref="boxFormRef" |
| | | :option="boxFormOption"> |
| | | |
| | | </avue-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" |
| | | :loading="pageF.isUploading" @click="submitForm5"> |
| | | {{ pageF.isUploading ? '提交中' : '确 定' }} |
| | | </el-button> |
| | | |
| | | <el-button @click="open5 = false">取 消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | </basicContainer> |
| | | </template> |
| | |
| | | costListTmsDispatchOrder, |
| | | updateTmsDispatchOrder, |
| | | generateTmsDispatchOrder, initGenerate, initYSGenerate, |
| | | ysGenerateTmsDispatchOrder, initYFGenerate,yfGenerateTmsDispatchOrder, |
| | | getServiceProvider |
| | | ysGenerateTmsDispatchOrder, initYFGenerate, yfGenerateTmsDispatchOrder, |
| | | getServiceProvider, checkCloseOrder, closeOrder |
| | | } from "@/api/tms/tmsDispatchOrder"; |
| | | import useCurrentInstance from "@/utils/useCurrentInstance"; |
| | | import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick} from "vue"; |
| | |
| | | isLoad: -1, |
| | | active: 'tab1', |
| | | quotationItems:[], |
| | | serviceProviderList: <any>[] |
| | | serviceProviderList: <any>[], |
| | | open5:false, |
| | | }) |
| | | const { |
| | | queryParams, form, page, selectionList, |
| | | boxTableData, optionType,open, |
| | | boxTableData, optionType,open,open5, |
| | | boxFormOption, boxForm, boxTableOption,boxItemTableOption,selectionList2,isCustoms,isLoad,active,quotationItems,serviceProviderList |
| | | } = toRefs(data); |
| | | const option = ref({ |
| | |
| | | search: true, |
| | | }, |
| | | isUrgent: { |
| | | label: '是否紧急否', |
| | | label: '是否紧急', |
| | | display: false, minWidth: 100, |
| | | search: true, |
| | | type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string', |
| | | |
| | | }, |
| | | isfk: { |
| | | label: '是否放空', |
| | | display: false, minWidth: 100, |
| | | search: true, |
| | | type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string', |
| | |
| | | }, { |
| | | label: '待生成应付', |
| | | prop: 'tab2', |
| | | }, { |
| | | label: '已作废', |
| | | prop: 'tab3', |
| | | }] |
| | | }) |
| | | const tabsOption2 = ref({ |
| | |
| | | voucherUrl: { |
| | | label: '行程凭证', |
| | | display: true, |
| | | span: 24, |
| | | accept: 'string', dataType: 'string', |
| | | type: 'upload', |
| | | action: '/common/upload2', |
| | | |
| | | }, |
| | | remark: { |
| | | label: '备注',span:24, |
| | | display: true, |
| | | type: 'textarea', |
| | | |
| | | }, |
| | | dataSource: { |
| | |
| | | action: '/common/upload2', |
| | | |
| | | }, |
| | | remark: { |
| | | label: '备注', |
| | | display: true, |
| | | }, |
| | | isYF:{ |
| | | label: '是否应付费用', |
| | | display: true, |
| | |
| | | }, |
| | | sum: { |
| | | label: '总金额', |
| | | }, |
| | | remark: { |
| | | label: '备注', |
| | | }, |
| | | isYF: { |
| | | label: '是否应付费用', |
| | |
| | | }) |
| | | |
| | | |
| | | const closeOption = ref({ |
| | | menuBtn: false, |
| | | labelWidth: 120, |
| | | column: { |
| | | closeWhy:{ |
| | | label: '作废原因',span:24, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/close_why', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "作废原因不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | closeWhyRemark:{ |
| | | label: '作废原因说明', |
| | | type: 'textarea', |
| | | span:24, |
| | | }, |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | |
| | | isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1; |
| | | console.log(pageF.single) |
| | | }, |
| | | getBeginListFunc: () => { |
| | | getBeginListFunc: (params = {}) => { |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRange, 'createTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.updateTimeRange, 'updateTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.confirmTimeRange, 'confirmTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.okTimeRange, 'okTime') || {}; |
| | | }, |
| | | return params; |
| | | }, |
| | | |
| | | }) |
| | | |
| | |
| | | |
| | | |
| | | const getTab1Data = async () =>{ |
| | | const quotePlanItemRes = await listTmsQuoteItem({quotePlanId: form.value.quotePlanId, pageNum: 1, pageSize: 999}); |
| | | let items = quotePlanItemRes.rows || []; |
| | | |
| | | const quotePlanItemRes2 = await listTmsQuoteItem({quotePlanId: form.value.quotePlanId, pageNum: 1, pageSize: 999}); |
| | | let list = quotePlanItemRes2.rows || []; |
| | | let quotePlanItemRes = await getDicts("sys_quotation_items"); |
| | | console.log(quotePlanItemRes) |
| | | let items = quotePlanItemRes.data || []; |
| | | let res = await listTmsQuoteFee({dispatchId: form.value.id, pageNum: 1, pageSize: 999}); |
| | | let rowsData = res.rows || []; |
| | | selectionList2.value = [] |
| | | itemsTableRef.value?.clearSelection(); |
| | | itemsTableData.value = items.map( (item: any) => { |
| | | let find = rowsData.find((ele: any) => { |
| | | return item.free == ele.free |
| | | let find2 = list.find((ele: any) => { |
| | | return item.dictValue == ele.free |
| | | }); |
| | | let find = rowsData.find((ele: any) => { |
| | | return item.dictValue == ele.free |
| | | }); |
| | | delete item.remark; |
| | | if (find) { |
| | | let aRow = { |
| | | unit: '次', |
| | | |
| | | ...item, |
| | | feeType: item.freeName, |
| | | rowKey: item.id, |
| | | freeName:item.dictLabel, |
| | | feeType: item.dictLabel, |
| | | rowKey: item.dictCode, |
| | | free: item.dictValue, |
| | | ...find, |
| | | ...find2, |
| | | price: find.price||0, |
| | | currency: find.currency|| 'RMB', |
| | | sum: find.sum|| 0, |
| | | }; |
| | | selectionList2.value.push(aRow); |
| | | return aRow |
| | | } else { |
| | | return { |
| | | ...item, |
| | | rowKey: item.id, |
| | | feeType: item.freeName, |
| | | unit: item.unit, |
| | | price: item.price, |
| | | currency: item.currency, |
| | | freeName:item.dictLabel, |
| | | rowKey: item.dictCode, |
| | | feeType: item.dictLabel, |
| | | price: 0, |
| | | currency: 'RMB', |
| | | count: 0, |
| | | unit: '次', |
| | | free: item.dictValue, |
| | | sum: 0, |
| | | ...find2, |
| | | } |
| | | } |
| | | }) |
| | |
| | | |
| | | }else if (column.prop === 'tab2'){ |
| | | accountsPayableStatus = 0; |
| | | }else if (column.prop === 'tab3'){ |
| | | queryParams.value.inStatusList = [5]; |
| | | } |
| | | page.value.currentPage = 1; |
| | | queryParams.value.accountsReceivableStatus = accountsReceivableStatus; |
| | |
| | | row.yfServiceProviderName = active.serviceProviderName; |
| | | row.yfServiceProviderType = active.serviceProviderType; |
| | | } |
| | | const handleClose = (row:any) => { |
| | | |
| | | if (row.status == 2 && row.isfk == 1){ |
| | | checkCloseOrder(row.id).then(res=>{ |
| | | open5.value = true; |
| | | form.value = row; |
| | | boxFormOption.value = closeOption.value; |
| | | }); |
| | | }else{ |
| | | open5.value = true; |
| | | form.value = row; |
| | | boxFormOption.value = closeOption.value; |
| | | |
| | | } |
| | | } |
| | | const submitForm5 = () =>{ |
| | | boxFormRef.value.validate((valid: boolean,done:any) => { |
| | | console.log(valid) |
| | | if(valid){ |
| | | boxForm.value.id = form.value.id; |
| | | closeOrder(boxForm.value).then(res=>{ |
| | | ElMessage.success('操作成功'); |
| | | open5.value = false; |
| | | done(); |
| | | onLoad(page.value) |
| | | }).catch(err=>{ |
| | | done(); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | </script> |