From 7ed2a032d0724e68aec8af940f2ce0023a9f0eb7 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 15 四月 2026 09:27:51 +0800
Subject: [PATCH] 修改调度单年月日
---
ui/admin-ui3/src/views/tms/generationCost/index.vue | 891 ++++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 545 insertions(+), 346 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/generationCost/index.vue b/ui/admin-ui3/src/views/tms/generationCost/index.vue
index 7a72327..6995609 100644
--- a/ui/admin-ui3/src/views/tms/generationCost/index.vue
+++ b/ui/admin-ui3/src/views/tms/generationCost/index.vue
@@ -1,133 +1,95 @@
<template>
<basicContainer>
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form" v-model:search="queryParams"
- ref="crudRef"
- @row-update="rowUpdate"
- @row-save="rowSave"
- @refresh-change="refreshChange"
- @row-del="rowDel"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" v-model:search="queryParams" ref="crudRef"
+ @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
+ @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+ @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
<template #menu-left>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['tms:tmsDispatchOrder:export']"
- >瀵煎嚭
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['tms:tmsDispatchOrder:export']">瀵煎嚭
</el-button>
- <el-button
- type="primary"
- icon="Promotion"
- :disabled="pageF.multiple"
- @click="handleYSGenerate"
- v-hasPermi="['tms:tmsDispatchOrder:generate']"
- >鐢熸垚搴旀敹璐圭敤
- </el-button>
- <el-button
- type="success"
- icon="Promotion"
- :disabled="pageF.multiple"
- @click="handleYFGenerate"
- v-hasPermi="['tms:tmsDispatchOrder:generate']"
- >鐢熸垚搴斾粯璐圭敤
- </el-button>
+ <el-button type="primary" icon="Promotion" :disabled="pageF.multiple" @click="handleYSGenerate"
+ v-hasPermi="['tms:tmsDispatchOrder:generate']">鐢熸垚搴旀敹璐圭敤
+ </el-button>
+ <el-button type="success" icon="Promotion" :disabled="pageF.multiple" @click="handleYFGenerate"
+ v-hasPermi="['tms:tmsDispatchOrder:generate']">鐢熸垚搴斾粯璐圭敤
+ </el-button>
</template>
- <template #menu-before="{row}">
-
- <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">鏌ョ湅琛岀▼
+ <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">鏌ョ湅琛岀▼
</el-link>
<el-link size="small" type="primary" v-if="row.accountsReceivableStatus == 0" @click="handleAddFinance(row)"
- class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']"
- :underline="false" icon="el-icon-edit-pen">璐圭敤鐧昏
+ class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']" :underline="false" icon="el-icon-edit-pen">璐圭敤鐧昏
</el-link>
</template>
- <template #menu="{row}">
+ <template #menu="{ row }">
<el-link size="small" type="primary" @click="handleLog(row)" class="link-btn" :underline="false"
- icon="el-icon-tickets">鏃ュ織
+ icon="el-icon-tickets">鏃ュ織
</el-link>
</template>
<template #body>
- <avue-tabs :option="tabsOption"
- @change="handleChange"></avue-tabs>
+ <avue-tabs :option="tabsOption" @change="handleChange"></avue-tabs>
</template>
</avue-crud>
<el-dialog title="璐圭敤鐧昏" v-model="pageF.open" 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-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-tabs :option="tabsOption2" ref="tabsOption2Ref"
- @change="handleChange2"></avue-tabs>
+ <avue-tabs :option="tabsOption2" ref="tabsOption2Ref" @change="handleChange2"></avue-tabs>
<div v-if="active === 'tab1'">
- <avue-crud
- :option="itemsTableOption" ref="itemsTableRef"
- :data="itemsTableData"
- @selection-change="selectionChange2"
- >
- <template #count="{row}">
+ <avue-crud :option="itemsTableOption" ref="itemsTableRef" :data="itemsTableData"
+ @selection-change="selectionChange2">
+ <template #count="{ row }">
<el-input-number v-model="row.count" @change="countChange(row)" placeholder="璇疯緭鍏ヨ璐规暟閲�"
- :min="0"></el-input-number>
+ :min="0"></el-input-number>
</template>
- <template #isYF="{row}">
- <el-checkbox v-model="row.isYF"
- :true-value="1"
- :false-value="0"
- @change="(e:number) =>isYFChange(e, row)" ></el-checkbox>
+ <template #isYF="{ row }">
+ <el-checkbox v-model="row.isYF" :true-value="1" :false-value="0"
+ @change="(e: number) => isYFChange(e, row)"></el-checkbox>
</template>
- <template #expand="{row}">
+ <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">
<el-descriptions-item label="鏈嶅姟鍟�">
- <el-select v-model="row.serviceProviderId" placeholder="璇烽�夋嫨鏈嶅姟鍟�"
- @change="serviceProviderChange(row)"
- :filterable="true">
- <el-option v-for="item in row.serviceProviderData"
- :key="item.id" :label="item.serviceShortName"
- :value="item.id"></el-option>
+ <el-select v-model="row.serviceProviderId" placeholder="璇烽�夋嫨鏈嶅姟鍟�" @change="serviceProviderChange(row)"
+ :filterable="true">
+ <el-option v-for="item in row.serviceProviderData" :key="item.id" :label="item.serviceShortName"
+ :value="item.id"></el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="鏄惁瀛樺湪搴斾粯鎶ヤ环">
- <span :style="{color: row.isCZYF == 0? 'red': ''}">{{row.isCZYF == 0? '鍚�': row.isCZYF == 1? '鏄�': ''}}</span>
+ <span :style="{ color: row.isCZYF == 0 ? 'red' : '' }">{{ row.isCZYF == 0 ? '鍚�' : row.isCZYF == 1 ? '鏄�'
+ :
+ '' }}</span>
</el-descriptions-item>
<el-descriptions-item label="璁¤垂閲戦">
- <el-input v-model="row.yfPrice" :min="1"
- @change="yfPriceChange(row)"
- type="number" placeholder="璇疯緭鍏ラ噾棰�"></el-input>
+ <el-input v-model="row.yfPrice" :min="1" @change="yfPriceChange(row)" type="number"
+ placeholder="璇疯緭鍏ラ噾棰�"></el-input>
</el-descriptions-item>
<el-descriptions-item label="甯佸埗">
- <el-radio-group v-model="row.yfCurrency" >
- <el-radio
- v-for="dict in sys_currency"
- :key="dict.value"
- :label="dict.value"
- >{{ dict.label }}</el-radio>
+ <el-radio-group v-model="row.yfCurrency">
+ <el-radio v-for="dict in sys_currency" :key="dict.value" :label="dict.value">{{ dict.label
+ }}</el-radio>
</el-radio-group>
</el-descriptions-item>
<el-descriptions-item label="璁¤垂鏁伴噺">
<el-input-number v-model="row.yfCount" @change="yfPriceChange(row)" placeholder="璇疯緭鍏ヨ璐规暟閲�"
- :min="0"></el-input-number>
+ :min="0"></el-input-number>
</el-descriptions-item>
<el-descriptions-item label="鎬婚噾棰�">{{ row.yfSum }}</el-descriptions-item>
@@ -137,48 +99,53 @@
</div>
<div v-if="active === 'tab2'">
<h2>瀹炴姤瀹為攢璐圭敤</h2>
- <avue-form v-model="boxForm" ref="boxFormRef"
- :option="boxFormOption">
+ <avue-form v-model="boxForm" ref="boxFormRef" :option="boxFormOption">
+ <template #voucherUrl="{ row }">
+ <el-upload class="upload-demo" ref="uploadRef" :limit="1" drag :action="urlApi + '/common/upload2'" multiple
+ :show-file-list="true" :on-success="(res) => handleUploadAfter(res, row)"
+ :on-exceed="(files) => handleExceed(files, row)">
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <div class="el-upload__text">
+ 鐐瑰嚮鎴栧皢鍥剧墖鎷栨嫿鍒版鍖哄煙涓婁紶
+ </div>
- </avue-form>
- <avue-crud
- :option="boxTableOption"
- :data="boxTableData"
- >
- <template #isYF="{row}">
- <el-checkbox v-model="row.isYF"
- :true-value="1"
- :false-value="0"
- @change="(e:number) =>isYFChange(e, row)" ></el-checkbox>
+ </el-upload>
</template>
- <template #yfServiceProviderId="{row}">
- <el-select v-model="row.yfServiceProviderIdType" placeholder="璇烽�夋嫨鏈嶅姟鍟�"
- @change="(e:any)=>ysServiceProviderChange(e,row)"
- :filterable="true">
+ </avue-form>
+ <avue-crud :option="boxTableOption" :data="boxTableData" @selection-change="boxSelectionChange">
+ <template #menu-left>
+ <el-button type="danger" plain icon="Delete"
+ :disabled="!(boxSelectionList.length === 1 && boxSelectionList[0]?.status === 0)"
+ @click="handleBatchBoxDel">
+ 浣滃簾
+ </el-button>
+ </template>
+ <template #isYF="{ row }">
+ <el-checkbox v-model="row.isYF" :disabled="row.status == 1" :true-value="1" :false-value="0"
+ @change="(e: number) => isYFChange(e, row)"></el-checkbox>
+ </template>
+ <template #yfServiceProviderId="{ row }">
+ <el-select :disabled="row.status == 1" v-model="row.yfServiceProviderIdType" placeholder="璇烽�夋嫨鏈嶅姟鍟�"
+ @change="(e: any) => ysServiceProviderChange(e, row)" :filterable="true">
<el-option v-for="item in serviceProviderList"
- :key="item.serviceProviderId + '_'+ item.serviceProviderType" :label="item.serviceProviderName"
- :value="item.serviceProviderId + '_'+ item.serviceProviderType"></el-option>
+ :key="item.serviceProviderId + '_' + item.serviceProviderType" :label="item.serviceProviderName"
+ :value="item.serviceProviderId + '_' + item.serviceProviderType"></el-option>
</el-select>
</template>
- <template #yfPrice="{row}">
- <el-input v-model="row.yfPrice" :min="1"
- type="number" placeholder="璇疯緭鍏ラ噾棰�"></el-input>
+ <template #yfPrice="{ row }">
+ <el-input :disabled="row.status == 1" v-model="row.yfPrice" :min="1" type="number"
+ placeholder="璇疯緭鍏ラ噾棰�"></el-input>
</template>
- <template #yfCurrency="{row}">
- <el-radio-group v-model="row.yfCurrency" >
- <el-radio
- v-for="dict in sys_currency"
- :key="dict.value"
- :label="dict.value"
- >{{ dict.label }}</el-radio>
- </el-radio-group>
+ <template #yfCurrency="{ row }">
+ <el-radio-group v-model="row.yfCurrency" :disabled="row.status == 1">
+ <el-radio v-for="dict in sys_currency" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
+ </el-radio-group>
</template>
</avue-crud>
</div>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitForm">
+ <el-button type="primary" :loading="pageF.isUploading" @click="submitForm">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
@@ -191,29 +158,31 @@
<el-dialog :title="pageF.title" v-model="open" class="avue-dialog avue-dialog--top" width="80%">
- <avue-crud
- :option="boxTableOption" ref="itemsTableRef"
- :data="boxTableData"
- >
- <template #expand="{row}">
- <avue-crud
- :option="boxItemTableOption" ref="itemsTableRef2"
- :data="row.tmsReceivableFeeItems"
- >
+ <avue-crud :option="boxTableOption" ref="itemsTableRef" :data="boxTableData">
+ <template #expand="{ row }">
+ <avue-crud v-if="optionType === 'ysGenerate'" :option="boxItemTableOption" ref="itemsTableRef2"
+ :data="row.tmsReceivableFeeItems">
</avue-crud>
- </template>
- <template #receivableAmount="{row}">
- <div v-if="row.receivableAmountRMB > 0">{{row.receivableAmountRMB}}浜烘皯甯�</div>
- <div v-if="row.receivableAmountHKD > 0">{{row.receivableAmountHKD}}娓竵</div>
+ <avue-crud v-else :option="boxItemTableOption" ref="itemsTableRef2" :data="row.payableFeeItems">
+ </avue-crud>
+ </template>
+ <template #receivableAmount="{ row }">
+ <div v-if="row.receivableAmountRMB > 0">{{ row.receivableAmountRMB }}浜烘皯甯�</div>
+ <div v-if="row.receivableAmountHKD > 0">{{ row.receivableAmountHKD }}娓竵</div>
+
+ </template>
+
+ <template #payableAmount="{ row }">
+ <div v-if="row.payableRmbAmount > 0">{{ row.payableRmbAmount }}浜烘皯甯�</div>
+ <div v-if="row.payableHkbAmount > 0">{{ row.payableHkbAmount }}娓竵</div>
</template>
</avue-crud>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitGenerate">
+ <el-button type="primary" v-if="optionType != 'view'" :loading="pageF.isUploading" @click="submitGenerate">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
@@ -222,7 +191,29 @@
</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>
@@ -237,35 +228,36 @@
costListTmsDispatchOrder,
updateTmsDispatchOrder,
generateTmsDispatchOrder, initGenerate, initYSGenerate,
- ysGenerateTmsDispatchOrder, initYFGenerate,yfGenerateTmsDispatchOrder,
- getServiceProvider
+ ysGenerateTmsDispatchOrder, initYFGenerate, yfGenerateTmsDispatchOrder,
+ getServiceProvider, checkCloseOrder, closeOrder, tmsFinanceDetail
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
-import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick} from "vue";
-import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-import {usePagePlus} from "@/hooks/usePagePlus";
-import {hasPermission} from "@/utils/permissionUtils";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {addTmsTrip, listTmsTrip} from "@/api/tms/tmsTrip";
-import {saveTmsFinanceDetail, listTmsFinanceDetail, updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail";
-import {listTmsQuoteItem} from "@/api/tms/tmsQuotePlanItem";
-import {getDicts} from "@/api/system/dict/data";
-import {listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
-import {listTmsCustomsServiceProvider} from "@/api/tms/tmsCustomsServiceProvider";
-import {listTmsLoadingServiceProvider} from "@/api/tms/tmsLoadingServiceProvider";
-import {selectPaymentTmsQuotePlan} from "@/api/tms/tmsQuotePlan";
-import {addTmsQuoteFee, listTmsQuoteFee, pushTmsQuoteFee} from "@/api/tms/tmsQuoteFee";
-import {an} from "vue-router/dist/router-CWoNjPRp";
+import { computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { addTmsTrip, listTmsTrip } from "@/api/tms/tmsTrip";
+import { saveTmsFinanceDetail, listTmsFinanceDetail, updateTmsFinanceDetail } from "@/api/tms/tmsFinanceDetail";
+import { listTmsQuoteItem } from "@/api/tms/tmsQuotePlanItem";
+import { getDicts } from "@/api/system/dict/data";
+import { listTmsServiceProvider } from "@/api/tms/tmsServiceProvider";
+import { listTmsCustomsServiceProvider } from "@/api/tms/tmsCustomsServiceProvider";
+import { listTmsLoadingServiceProvider } from "@/api/tms/tmsLoadingServiceProvider";
+import { selectPaymentTmsQuotePlan } from "@/api/tms/tmsQuotePlan";
+import { addTmsQuoteFee, listTmsQuoteFee, pushTmsQuoteFee } from "@/api/tms/tmsQuoteFee";
+import { status } from "nprogress";
-const {appContext} = getCurrentInstance();
-const {proxy} = useCurrentInstance();
+const { appContext } = getCurrentInstance();
+
+const { proxy } = useCurrentInstance();
const crudRef = ref();
const boxFormRef = ref();
-const {sys_quotation_items,sys_unit,sys_currency} =
- proxy.useDict("sys_quotation_items","sys_unit","sys_currency");
+const { sys_quotation_items, sys_unit, sys_currency } =
+ proxy.useDict("sys_quotation_items", "sys_unit", "sys_currency");
const permissionList = (key: any, row: any, index: any) => {
if (key == 'addBtn') {
return hasPermission(["tms:tmsDispatchOrder:add"])
@@ -281,6 +273,8 @@
};
const data = reactive({
form: <TmsDispatchOrderI>{},
+ selectionList2: <any>[],
+ boxSelectionList: <any>[],
queryParams: <TmsDispatchOrderI & PageQueryInterface>{},
page: <PagesInterface>{
pageSize: 10,
@@ -298,20 +292,20 @@
open: false,
open2: false,
goodsTableData: <any>[],
- selectionList2: <any>[],
goodsForm: <any>{},
open3: false,
actualForm: <any>{},
- isCustoms:<any> -1,
+ isCustoms: <any>-1,
isLoad: -1,
active: 'tab1',
- quotationItems:[],
- serviceProviderList: <any>[]
+ quotationItems: [],
+ serviceProviderList: <any>[],
+ open5: false,
})
const {
queryParams, form, page, selectionList,
- boxTableData, optionType,open,
- boxFormOption, boxForm, boxTableOption,boxItemTableOption,selectionList2,isCustoms,isLoad,active,quotationItems,serviceProviderList
+ boxTableData, optionType, open, open5, boxSelectionList,
+ boxFormOption, boxForm, boxTableOption, boxItemTableOption, selectionList2, isCustoms, isLoad, active, quotationItems, serviceProviderList
} = toRefs(data);
const option = ref({
pageKey: 'TmsDispatchOrder',
@@ -395,7 +389,7 @@
],
},
isUrgent: {
- label: '鏄惁绱ф��',value: '1',
+ label: '鏄惁绱ф��', value: '1',
display: true,
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
rules: [
@@ -456,7 +450,7 @@
message: "鏄惁鏄嚜钀ヨ溅闃熶笉鑳戒负绌�", trigger: "change"
}
],
- change: ({value}: any) => {
+ change: ({ value }: any) => {
console.log(value)
option.value.group.forEach((item: any) => {
if (item.prop == 'pcxx') {
@@ -472,7 +466,7 @@
},
},
- commissionModel:{
+ commissionModel: {
label: '鎻愭垚妯″紡',
display: true, type: 'radio', dicUrl: '/system/dict/data/type/commission_model', dataType: 'string',
rules: [
@@ -571,25 +565,28 @@
column: {
dispatchNo: {
- label: '璋冨害鍗曞彿', minWidth: 120,
+ label: '璋冨害鍗曞彿', minWidth: 140,
display: false,
search: true,
},
customerName: {
label: '瀹㈡埛',
- display: false, minWidth: 120,
+ display: false, minWidth: 200,
search: true,
+ overHidden: true
},
projectName: {
label: '椤圭洰鍚嶇О',
- display: false, minWidth: 120,
+ display: false, minWidth: 150,
search: true,
+ overHidden: true
},
contractName: {
- label: '鍏宠仈鍚堝悓鍚嶇О', minWidth: 120,
+ label: '鍏宠仈鍚堝悓鍚嶇О', minWidth: 160,
display: false,
search: true,
+ overHidden: true
},
orderType: {
label: '璁㈠崟绫诲瀷',
@@ -622,7 +619,14 @@
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',
@@ -655,13 +659,15 @@
shipperName: {
label: '瑁呰揣鐐瑰悕绉�',
- display: false, minWidth: 120,
+ display: false, minWidth: 160,
search: true,
+ overHidden: true
},
receiverName: {
- label: '鍗歌揣鐐瑰悕绉�', minWidth: 120,
+ label: '鍗歌揣鐐瑰悕绉�', minWidth: 160,
display: false,
search: true,
+ overHidden: true
},
// accountsReceivableStatus: {
// label: '搴旀敹璐圭敤鐢熸垚鐘舵��', minWidth: 160,
@@ -696,7 +702,7 @@
inStatusList: {
label: '鐘舵��', minWidth: 150,
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',
- display: false,multiple:true,
+ display: false, multiple: true,
hide: true,
search: true,
@@ -731,22 +737,22 @@
},
updateTimeRange: {
label: '鏇存柊鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
valueFormat: 'YYYY-MM-DD',
},
confirmTimeRange: {
label: '纭鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
valueFormat: 'YYYY-MM-DD',
},
okTimeRange: {
label: '瀹屾垚鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
valueFormat: 'YYYY-MM-DD',
},
orderTimeRange: {
label: '涓嬪崟鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
valueFormat: 'YYYY-MM-DD',
},
@@ -763,21 +769,24 @@
}, {
label: '寰呯敓鎴愬簲浠�',
prop: 'tab2',
+ }, {
+ label: '宸蹭綔搴�',
+ prop: 'tab3',
}]
})
const tabsOption2 = ref({
column: [
- {
+ {
label: '鎶ヤ环璐圭敤鐧昏',
prop: 'tab1',
- name: 'tab1',
+ name: 'tab1',
},
{
- label: '瀹炴姤瀹為攢璐圭敤鐧昏',
- prop: 'tab2',
+ label: '瀹炴姤瀹為攢璐圭敤鐧昏',
+ prop: 'tab2',
name: 'tab2',
- }]
+ }]
})
const itineraryTableOption = ref({
menu: false,
@@ -820,7 +829,7 @@
display: true,
},
voucherUrl: {
- label: '琛岀▼鍑瘉',
+ label: '琛岀▼鍑瘉3',
display: true,
span: 24, dataType: 'string',
type: 'upload',
@@ -871,10 +880,15 @@
voucherUrl: {
label: '琛岀▼鍑瘉',
display: true,
- span: 24,
accept: 'string', dataType: 'string',
type: 'upload',
- action: '/common/upload2',
+ // action: '/common/upload2',
+ slot: true,
+ },
+ remark: {
+ label: '澶囨敞', span: 24,
+ display: true,
+ type: 'textarea',
},
dataSource: {
@@ -888,7 +902,8 @@
const financeTableOption = ref({
menu: false,
addBtn: false,
- header: false, selection: false,
+ header: true,
+ selection: true,
title: '鍘嗗彶鍨粯璐圭敤',
column: {
dataSource: {
@@ -916,6 +931,17 @@
label: '閲戦',
display: true,
},
+ currency: {
+ label: '甯佸埗',
+ display: true,
+ type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
+ rules: [
+ {
+ required: true,
+ message: "甯佸埗涓嶈兘涓虹┖", trigger: "change"
+ }
+ ],
+ },
feeVoucherUrl: {
label: '璐圭敤鍑瘉',
display: true,
@@ -925,35 +951,42 @@
action: '/common/upload2',
},
- isYF:{
+ remark: {
+ label: '澶囨敞',
+ display: true,
+ },
+ isYF: {
label: '鏄惁搴斾粯璐圭敤',
display: true,
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
},
- yfServiceProviderId:{
+ yfServiceProviderId: {
label: '鏈嶅姟鍟�',
display: true,
type: 'select',
},
- yfPrice:{
+ yfPrice: {
label: '搴斾粯閲戦',
display: true,
},
- yfCurrency:{
+ yfCurrency: {
label: '搴斾粯甯佸埗',
display: true,
-
- }
-
+ },
+ status: {
+ label: '鐘舵��',
+ display: true,
+ type: 'select', dicUrl: '/system/dict/data/type/sys_cancel_word', dataType: 'string',
+ },
}
})
const itemsTableOption = ref({
pageKey: 'itemsTable',
rowKey: 'rowKey',
- header: false,expand:true,
+ header: false, expand: true,
addBtn: false, menu: false,
column: {
feeType: {
@@ -974,6 +1007,9 @@
sum: {
label: '鎬婚噾棰�',
},
+ remark: {
+ label: '澶囨敞',
+ },
isYF: {
label: '鏄惁搴斾粯璐圭敤',
}
@@ -984,35 +1020,35 @@
const YSGenerateTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- expand:true,
- defaultExpandAll:true,
- rowKey:'id',
- column:{
- dispatchNo:{
+ expand: true,
+ defaultExpandAll: true,
+ rowKey: 'id',
+ column: {
+ dispatchNo: {
label: '璋冨害鍗曞彿',
},
- customerName:{
+ customerName: {
label: '瀹㈡埛鍚嶇О',
},
- shipperName:{
+ shipperName: {
label: '瑁呰揣鍦�',
},
- receiverName:{
+ receiverName: {
label: '鍗歌揣鍦�',
},
- transportLine:{
+ transportLine: {
label: '杩愯緭璺嚎',
},
- actualVehicleType:{
+ actualVehicleType: {
label: '杞﹀瀷',
display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
- },licensePlate:{
+ }, licensePlate: {
label: '杞︾墝',
},
- receivableAmount:{
+ receivableAmount: {
label: '搴旀敹璐圭敤',
}
}
@@ -1020,26 +1056,26 @@
const YSGenerateItemTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- rowKey:'rowKey',
+ rowKey: 'rowKey',
- column:{
- feeType:{
+ column: {
+ feeType: {
label: '璐圭敤绫诲瀷',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_fee_type',
},
- feeName:{
+ feeName: {
label: '璐圭敤鍚嶇О',
},
- registerTime:{
+ registerTime: {
label: '鐧昏鏃堕棿',
},
- registerAmount:{
+ registerAmount: {
label: '鐧昏閲戦',
},
- currency:{
+ currency: {
label: '甯佸埗',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -1051,27 +1087,33 @@
const YFGenerateTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- expand:true,
- defaultExpandAll:true,
- rowKey:'id',
- column:{
- dispatchNo:{
+ expand: true,
+ defaultExpandAll: true,
+ rowKey: 'id',
+ column: {
+ dispatchNo: {
label: '璋冨害鍗曞彿',
},
-
- transportLine:{
- label: '杩愯緭璺嚎',
+ serviceProviderType: {
+ label: '鏈嶅姟鍟嗙被鍨�',
+ type: 'radio', dicUrl: '/system/dict/data/type/provider_type', dataType: 'string',
},
- actualVehicleType:{
- label: '杞﹀瀷',
- display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
-
- },licensePlate:{
- label: '杞︾墝',
+ serviceProviderName: {
+ label: '鏈嶅姟鍟嗗悕绋�',
},
- receivableAmount:{
+ // transportLine:{
+ // label: '杩愯緭璺嚎',
+ // },
+ // actualVehicleType:{
+ // label: '杞﹀瀷',
+ // display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
+ //
+ // },licensePlate:{
+ // label: '杞︾墝',
+ // },
+ payableAmount: {
label: '搴斾粯璐圭敤',
}
}
@@ -1079,26 +1121,26 @@
const YFGenerateItemTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- rowKey:'rowKey',
+ rowKey: 'rowKey',
- column:{
- feeType:{
+ column: {
+ feeType: {
label: '璐圭敤绫诲瀷',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_fee_type',
},
- feeName:{
+ feeName: {
label: '璐圭敤鍚嶇О',
},
- registerTime:{
+ registerTime: {
label: '鐧昏鏃堕棿',
},
- registerAmount:{
+ registerAmount: {
label: '鐧昏閲戦',
},
- currency:{
+ currency: {
label: '甯佸埗',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -1106,6 +1148,28 @@
}
})
+
+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,
+ },
+ }
+})
@@ -1147,10 +1211,10 @@
},
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
- if (selection.length > 0){
+ if (selection.length > 0) {
isCustoms.value = selection[0].isCustoms;
- isLoad.value = selection[0].isLoad ;
- }else{
+ isLoad.value = selection[0].isLoad;
+ } else {
isCustoms.value = -1;
isLoad.value = -1;
}
@@ -1158,11 +1222,49 @@
isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
console.log(pageF.single)
},
- getBeginListFunc: () => {
- 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') || {};
+
+
+ getBeginListFunc: (params = {}) => {
+ // 1. 浣跨敤娴呮嫹璐濓紝涓嶅奖鍝嶅師濮嬫煡璇㈠璞�
+ // 鍏抽敭鐐癸細浠庡師濮� queryParams.value 鍙栧�硷紝纭繚鍒嗛〉鏃朵緷鐒惰兘鎷垮埌鏁扮粍
+ let newParams = { ...queryParams.value, ...params };
+
+ // 2. 瀹氫箟鏃ユ湡瀛楁鏄犲皠 (鏁扮粍鍚� : 鎺ュ彛闇�瑕佺殑鍓嶇紑)
+ const dateMap = {
+ createTimeRange: 'createTime',
+ updateTimeRange: 'updateTime',
+ confirmTimeRange: 'confirmTime',
+ okTimeRange: 'okTime',
+ };
+
+ // 3. 閬嶅巻澶勭悊鏃ユ湡
+ Object.keys(dateMap).forEach(arrayKey => {
+ const prefix = dateMap[arrayKey];
+ const range = newParams[arrayKey];
+
+ if (Array.isArray(range) && range.length === 2) {
+ // 璧嬪�兼帴鍙i渶瑕佺殑 Begin 鍜� End
+ newParams[`${prefix}Begin`] = range[0];
+ newParams[`${prefix}End`] = range[1];
+ }
+
+ // 鍙湪缁欐帴鍙g殑鍙傛暟涓垹闄ゆ暟缁勶紝涓嶅奖鍝嶉〉闈㈡樉绀虹殑 queryParams
+ delete newParams[arrayKey];
+ });
+
+ // 4. 娓呮礂鍙傛暟锛氳繃婊ょ┖鍊�
+ const finalParams = {};
+ Object.keys(newParams).forEach(key => {
+ const val = newParams[key];
+ if (val !== '' && val !== null && val !== undefined) {
+ finalParams[key] = val;
+ }
+ });
+
+ console.log('鍙戦�佺粰鎺ュ彛鐨勬渶缁堝弬鏁�:', finalParams);
+
+ // 銆愭牳蹇冧慨鏀广�戯細鐩存帴杩斿洖锛屼笉瑕佽祴鍊肩粰 queryParams.value
+ return finalParams;
},
})
@@ -1182,11 +1284,10 @@
const submitForm = () => {
if (active.value === 'tab1') {
- console.log()
pushTmsQuoteFee({
...form.value,
quoteFeeItems: selectionList2.value
- }).then(res=>{
+ }).then(res => {
ElMessage({
message: "鎿嶄綔鎴愬姛锛�",
type: 'success'
@@ -1195,10 +1296,11 @@
})
- }else{
+ } else {
if (Array.isArray(boxForm.value.feeVoucherUrl)) {
boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString();
}
+
boxForm.value.rowItems = boxTableData.value;
saveTmsFinanceDetail(boxForm.value).then(res => {
ElMessage({
@@ -1206,6 +1308,7 @@
type: 'success'
})
boxFormRef.value?.resetFields();
+ uploadRef.value?.clearFiles();
getTab2Data();
})
}
@@ -1220,9 +1323,9 @@
const handleLogItinerary = (row: any) => {
optionType.value = 'view';
boxTableOption.value = itineraryTableOption.value;
- listTmsTrip({dispatchOrderId: row.id, pageNum: 1, pageSize: 999}).then(res => {
+ listTmsTrip({ dispatchOrderId: row.id, pageNum: 1, pageSize: 999 }).then(res => {
boxTableData.value = res.rows || [];
- open.value = true;
+ open.value = true;
pageF.title = '鏌ョ湅琛岀▼';
boxFormOption.value.title = '';
})
@@ -1239,44 +1342,60 @@
boxTableOption.value = financeTableOption.value;
form.value = row;
handleChange2(tabsOption2.value.column[0]);
- nextTick(()=>{
+ nextTick(() => {
tabsOption2Ref.value.active = "0";
})
}
-const getTab1Data = async () =>{
- const quotePlanItemRes = await listTmsQuoteItem({quotePlanId: form.value.quotePlanId, pageNum: 1, pageSize: 999});
- let items = quotePlanItemRes.rows || [];
-
- let res = await listTmsQuoteFee({dispatchId: form.value.id, pageNum: 1, pageSize: 999});
- let rowsData = res.rows || [];
+const getTab1Data = async () => {
+ const quotePlanItemRes2 = await listTmsQuoteItem({ quotePlanId: form.value.quotePlanId, pageNum: 1, pageSize: 999 });
+ let list = quotePlanItemRes2.rows || [];
+ let quotePlanItemRes = await getDicts("sys_quotation_items");
+ 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
+ itemsTableData.value = items.map((item: any) => {
+ 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,
}
}
})
@@ -1291,7 +1410,7 @@
}
-const getTab2Data = async () =>{
+const getTab2Data = async () => {
let serviceProvider = await getServiceProvider(form.value.id);
serviceProviderList.value = serviceProvider.data || [];
listTmsFinanceDetail({
@@ -1315,7 +1434,7 @@
const getQuotationItems = async () => {
- let res = await getDicts("sys_quotation_items");
+ let res = await getDicts("sys_quotation_items");
quotationItems.value = res.data || [];
}
getQuotationItems();
@@ -1331,14 +1450,16 @@
-const handleChange = (column:any) => {
- let accountsReceivableStatus :number | undefined= undefined;
- let accountsPayableStatus :number | undefined= undefined;
- if (column.prop === 'tab1'){
+const handleChange = (column: any) => {
+ let accountsReceivableStatus: number | undefined = undefined;
+ let accountsPayableStatus: number | undefined = undefined;
+ if (column.prop === 'tab1') {
accountsReceivableStatus = 0
- }else if (column.prop === 'tab2'){
+ } else if (column.prop === 'tab2') {
accountsPayableStatus = 0;
+ } else if (column.prop === 'tab3') {
+ queryParams.value.inStatusList = [5];
}
page.value.currentPage = 1;
queryParams.value.accountsReceivableStatus = accountsReceivableStatus;
@@ -1346,58 +1467,57 @@
onLoad(page.value)
}
-const handleChange2 = (column:any)=>{
- active.value = column.prop;
- if (column.prop === 'tab1'){
- getTab1Data()
- }else if (column.prop === 'tab2'){
- getTab2Data()
- }
+const handleChange2 = (column: any) => {
+ active.value = column.prop;
+ if (column.prop === 'tab1') {
+ getTab1Data()
+ } else if (column.prop === 'tab2') {
+ getTab2Data()
+ }
}
-const isYFChange =async (value:number,row:any) => {
- if (value == 1){
- let find:any = quotationItems.value.find((item:any) => item.dictLabel === row.feeType);
- if (find){
- console.log(find,"find")
- let opt = find.remark;
+const isYFChange = async (value: number, row: any) => {
+ if (value == 1) {
+ let find: any = quotationItems.value.find((item: any) => item.dictLabel === row.feeType);
+ if (find) {
+ let opt = find.remark;
row.serviceProviderType = opt;
- if (opt == 0){
- let res = await listTmsServiceProvider({pageSize:999,pageNum:1})
- row.serviceProviderData = res.rows|| [];
+ if (opt == 0) {
+ let res = await listTmsServiceProvider({ pageSize: 999, pageNum: 1 })
+ row.serviceProviderData = res.rows || [];
// 杞﹁締杩愯惀鍟�
let serviceProviderId = form.value.vehicleProviderId || row.serviceProviderId;
- if (!serviceProviderId){
+ if (!serviceProviderId) {
ElMessage.warning("鎵句笉鍒拌璐圭敤鐨勮溅杈嗘湇鍔″晢");
- }else{
+ } else {
row.serviceProviderId = serviceProviderId;
}
- }else if (opt == 1){
- let res = await listTmsCustomsServiceProvider({pageSize:999,pageNum:1})
- row.serviceProviderData = res.rows|| [];
+ } else if (opt == 1) {
+ let res = await listTmsCustomsServiceProvider({ pageSize: 999, pageNum: 1 })
+ row.serviceProviderData = res.rows || [];
let serviceProviderId = form.value.customsServiceProviderId || row.serviceProviderId;
- if (!serviceProviderId){
+ if (!serviceProviderId) {
ElMessage.warning("鎵句笉鍒拌璐圭敤鐨勬姤鍏虫湇鍔″晢");
- }else{
+ } else {
row.serviceProviderId = serviceProviderId;
}
- }else if (opt == 2){
- let res = await listTmsLoadingServiceProvider({pageSize:999,pageNum:1})
- row.serviceProviderData = res.rows|| [];
+ } else if (opt == 2) {
+ let res = await listTmsLoadingServiceProvider({ pageSize: 999, pageNum: 1 })
+ row.serviceProviderData = res.rows || [];
let serviceProviderId = form.value.loadingServiceProviderId || row.serviceProviderId;
- if (!serviceProviderId){
+ if (!serviceProviderId) {
ElMessage.warning("鎵句笉鍒拌璐圭敤鐨勮璐ф湇鍔″晢");
- }else{
+ } else {
row.serviceProviderId = serviceProviderId;
}
}
- if (row.serviceProviderType){
+ if (row.serviceProviderType) {
serviceProviderChange(row);
}
@@ -1405,7 +1525,7 @@
}
}
- itemsTableRef.value?.toggleRowExpansion(row,value == 1)
+ itemsTableRef.value?.toggleRowExpansion(row, value == 1)
@@ -1414,23 +1534,23 @@
}
-const serviceProviderChange = (row:any) => {
- selectPaymentTmsQuotePlan({providerId:row.serviceProviderId,providerType:row.serviceProviderType,free:row.free}).then(res=>{
- let resData = res.data || {};
- if (Object.keys(resData).length > 0){
- row.yfCurrency =resData.currency ;
- row.yfId =resData.id ;
- row.yfPrice =resData.price ;
- row.yfCurrency =resData.currency ;
- row.yfCurrency =resData.currency ;
- row.isCZYF = 1 ;
- }else{
- row.isCZYF = 0 ;
+const serviceProviderChange = (row: any) => {
+ selectPaymentTmsQuotePlan({ providerId: row.serviceProviderId, providerType: row.serviceProviderType, free: row.free }).then(res => {
+ let resData = res.data || {};
+ if (Object.keys(resData).length > 0) {
+ row.yfCurrency = resData.currency;
+ row.yfId = resData.id;
+ row.yfPrice = resData.price;
+ row.yfCurrency = resData.currency;
+ row.yfCurrency = resData.currency;
+ row.isCZYF = 1;
+ } else {
+ row.isCZYF = 0;
}
})
}
-const yfPriceChange = (row:any)=>{
+const yfPriceChange = (row: any) => {
let yfCount = row.yfCount || 0;
let yfPrice = row.yfPrice || 0;
row.yfSum = Number(yfPrice) * Number(yfCount);
@@ -1442,15 +1562,14 @@
let ids = selectionList.value.map((item: any) => item.id);
initYSGenerate(ids).then(res => {
boxTableData.value = res.data || [];
- boxTableData.value.forEach((item:any) => {
+ boxTableData.value.forEach((item: any) => {
let items = item.tmsReceivableFeeItems || [];
- let receivableAmountRMB = items.filter( (cItem:any) => cItem.currency == 'RMB').reduce( (pre:any,cur:any) => {
+ let receivableAmountRMB = items.filter((cItem: any) => cItem.currency == 'RMB').reduce((pre: any, cur: any) => {
return pre + Number(cur.registerAmount)
- },0);
- let receivableAmountHKD = items.filter( (cItem:any) => cItem.currency == 'HKD').reduce( (pre:any,cur:any) => {
+ }, 0);
+ let receivableAmountHKD = items.filter((cItem: any) => cItem.currency == 'HKD').reduce((pre: any, cur: any) => {
return pre + Number(cur.registerAmount)
- },0);
- console.log(receivableAmountRMB,receivableAmountHKD)
+ }, 0);
item.receivableAmountRMB = receivableAmountRMB;
item.receivableAmountHKD = receivableAmountHKD;
@@ -1465,23 +1584,10 @@
/**
* 鐢熸垚搴斾粯璐圭敤
*/
-const handleYFGenerate = () =>{
+const handleYFGenerate = () => {
let ids = selectionList.value.map((item: any) => item.id);
initYFGenerate(ids).then(res => {
boxTableData.value = res.data || [];
- boxTableData.value.forEach((item:any) => {
- let items = item.tmsReceivableFeeItems || [];
- let receivableAmountRMB = items.filter( (cItem:any) => cItem.currency == 'RMB').reduce( (pre:any,cur:any) => {
- return pre + Number(cur.registerAmount)
- },0);
- let receivableAmountHKD = items.filter( (cItem:any) => cItem.currency == 'HKD').reduce( (pre:any,cur:any) => {
- return pre + Number(cur.registerAmount)
- },0);
- console.log(receivableAmountRMB,receivableAmountHKD)
- item.receivableAmountRMB = receivableAmountRMB;
- item.receivableAmountHKD = receivableAmountHKD;
-
- })
optionType.value = 'yfGenerate';
open.value = true;
pageF.title = '鐢熸垚搴斾粯璐圭敤';
@@ -1493,7 +1599,7 @@
const submitGenerate = () => {
pageF.isUploading = true;
let ids = selectionList.value.map((item: any) => item.id);
- if (optionType.value == 'ysGenerate'){
+ if (optionType.value == 'ysGenerate') {
ysGenerateTmsDispatchOrder(ids).then(res => {
pageF.isUploading = false;
ElMessage({
@@ -1505,7 +1611,7 @@
}).finally(() => {
pageF.isUploading = false;
})
- }else if (optionType.value == 'yfGenerate'){
+ } else if (optionType.value == 'yfGenerate') {
yfGenerateTmsDispatchOrder(ids).then(res => {
pageF.isUploading = false;
ElMessage({
@@ -1522,12 +1628,105 @@
}
-const ysServiceProviderChange = (e:any,row:any) => {
- let active = serviceProviderList.value.find((item:any) => item.serviceProviderId + '_'+ item.serviceProviderType == e)
+const ysServiceProviderChange = (e: any, row: any) => {
+ let active = serviceProviderList.value.find((item: any) => item.serviceProviderId + '_' + item.serviceProviderType == e)
row.yfServiceProviderId = active.serviceProviderId;
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) => {
+ 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();
+ })
+ }
+ })
+}
+const uploadRef = ref<any>()
+const urlApi = ref(import.meta.env.VITE_APP_BASE_API)
+// 鍦� script 閮ㄥ垎淇敼 handleUploadAfter 鍑芥暟
+const handleUploadAfter = (res: any, row: any) => {
+ if (res.code === 200) {
+ // 纭繚 res.data.url 瀛樺湪
+ const url = res.data?.url || res.url;
+ if (url) {
+ boxForm.value.feeVoucherUrl = url
+ } else {
+ ElMessage.error('鏈幏鍙栧埌涓婁紶鏂囦欢 URL');
+ }
+ } else {
+ ElMessage.error(res.msg || '涓婁紶澶辫触');
+ }
+};
+
+// 鍚屾椂淇敼 handleExceed 鍑芥暟
+const handleExceed = (files: any, row: any) => {
+ if (!row) {
+ ElMessage.error('琛屾暟鎹负绌�');
+ return;
+ }
+
+ uploadRef.value?.clearFiles();
+ const file = files[0];
+ uploadRef.value?.handleStart(file);
+ uploadRef.value?.submit();
+};
+
+const boxSelectionChange = (selection: any[]) => {
+ boxSelectionList.value = selection;
+}
+/**
+ * 鎵归噺浣滃簾璐圭敤鏄庣粏
+ */
+const handleBatchBoxDel = () => {
+ if (boxSelectionList.value.length === 0) {
+ ElMessage.warning('璇烽�夋嫨瑕佷綔搴熺殑璐圭敤鏄庣粏');
+ return;
+ }
+
+ ElMessageBox.confirm(`纭瑕佷綔搴熼�変腑鐨� ${boxSelectionList.value.length} 鏉¤垂鐢ㄦ槑缁嗗悧锛焋, '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ // 浠� boxTableData 涓Щ闄ら�変腑鐨勯」
+ // const ids = boxSelectionList.value.map((item: any) => item.id).join(',');
+ let data = {
+ id: boxSelectionList.value[0].id,
+ status: 1
+ }
+ tmsFinanceDetail(data).then(res => {
+ ElMessage.success('浣滃簾鎴愬姛');
+ getTab2Data(); // 鍒锋柊鏁版嵁
+ }).catch(err => {
+ ElMessage.error('浣滃簾澶辫触');
+ });
+ // ElMessage.success('浣滃簾鎴愬姛');
+ // boxSelectionList.value = []; // 娓呯┖閫夋嫨
+ }).catch(() => {
+ // 鍙栨秷鎿嶄綔
+ });
+}
</script>
\ No newline at end of file
--
Gitblit v1.8.0