From 32337b3f584a5b95af114697178251b51ecc14fd Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 10 九月 2025 11:25:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yagwly_fa_master' into yagwly_fa_master

---
 ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue |  841 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 598 insertions(+), 243 deletions(-)

diff --git a/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue b/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
index 5951eda..8169e7b 100644
--- a/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
@@ -1,268 +1,623 @@
 <template>
-  <basicContainer >
-    <avue-crud
-        :option="option"
-        :table-loading="pageF.loading"
-        :data="tableData"
-        :page="page"
-        :permission="permissionList"
-        :before-open="beforeOpen"
-        v-model="form"
-        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"
-    >
+  <basicContainer>
+    <avue-crud :option="option" v-model:search="queryParams" :table-loading="pageF.loading" :data="tableData"
+      :page="page" :permission="permissionList" :before-open="beforeOpen" v-model="form" 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="success"
-            icon="Edit"
-            :disabled="pageF.single"
-            v-hasPermi="['cwgl:pendingSettlementBusiness:edit']"
-            @click="handleUpdate">淇敼
+        <el-button type="success" :disabled="generateDisabled" @click="handleGenerate"
+          v-hasPermi="['cwgl:pendingSettlementBusiness:add']">鐢熸垚璐﹀崟
         </el-button>
-        <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="pageF.multiple"
-            @click="handleDelete"
-            v-hasPermi="['cwgl:pendingSettlementBusiness:remove']"
-        >鍒犻櫎
+        <!-- <el-button type="success" icon="Edit" :disabled="pageF.single"
+          v-hasPermi="['cwgl:pendingSettlementBusiness:edit']" @click="handleUpdate">淇敼
+        </el-button> -->
+        <!-- <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+          v-hasPermi="['cwgl:pendingSettlementBusiness:remove']">鍒犻櫎
+        </el-button> -->
+        <el-button type="warning" plain icon="Download" @click="handleExport"
+          v-hasPermi="['cwgl:pendingSettlementBusiness:export']">瀵煎嚭
         </el-button>
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['cwgl:pendingSettlementBusiness:export']"
-        >瀵煎嚭
-        </el-button>
+
+      </template>
+      <template #menu="{ size, row, index }">
+        <el-link class="link-btn" type="primary" :underline="false" plain :size="size" @click="handleFy(row)"
+          v-hasPermi="['cwgl:pendingSettlementBusiness:query']"> 璐圭敤鏄庣粏
+        </el-link>
       </template>
     </avue-crud>
+
+    <el-dialog v-model="dialog.visible" :title="dialog.title" width="1000px">
+      <el-form ref="storagesTransferRef" :model="form" :rules="rules" label-width="120px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="璐﹀崟鍚嶇О" prop="billName">
+              <el-input v-model="form.billName" placeholder="璇疯緭鍏ヨ处鍗曞悕绉�" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
+              <el-input v-model="form.customerName" disabled placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="璋冨害鍗曟暟閲�" prop="count">
+              <el-input-number v-model="form.count" disabled :min="0" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="缁撶畻閲戦" prop="price">
+              <el-input-number v-model="form.price" disabled :min="0" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+          <el-button @click="cancel">鍙� 娑�</el-button>
+        </div>
+      </template>
+
+    </el-dialog>
+
+
+    <el-dialog v-model="dialog.detail" :title="dialog.title" width="1000px">
+      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+        <el-tab-pane label="鎴愭湰" name="first"></el-tab-pane>
+        <el-tab-pane label="鏀跺叆" name="second"></el-tab-pane>
+      </el-tabs>
+      <el-table :data="tableDataList" show-summary :summary-method="getSummaries" style="width: 100%">
+        <el-table-column prop="feeName" label="璐圭敤鍚嶇О" />
+        <el-table-column prop="estimatedAmount" label="璐圭敤閲戦" />
+        <el-table-column prop="currency" label="璐圭敤甯佸埗" />
+      </el-table>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="cancel">鍙� 娑�</el-button>
+        </div>
+      </template>
+
+    </el-dialog>
+
+
+
+
   </basicContainer>
 </template>
 
 <script setup name="pendingSettlementBusiness" lang="ts">
-  import {PendingSettlementBusinessI,addPendingSettlementBusiness, delPendingSettlementBusiness, exportPendingSettlementBusiness, getPendingSettlementBusiness, listPendingSettlementBusiness, updatePendingSettlementBusiness} from "@/api/cwgl/pendingSettlementBusiness";
-  import useCurrentInstance from "@/utils/useCurrentInstance";
-  import {computed,reactive, ref, toRefs} from "vue";
-  import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-  import {usePagePlus} from "@/hooks/usePagePlus";
-  import {hasPermission} from "@/utils/permissionUtils";
+import {
+  PendingSettlementBusinessI, addPendingSettlementBusiness, delPendingSettlementBusiness, exportPendingSettlementBusiness, getPendingSettlementBusiness, listPendingSettlementBusiness, updatePendingSettlementBusiness,
+  getPendingSettlementBusinessBill, getCwglPendingSettlementBusinessBillList, getSelectCustomNam, cwglPendingSettlementBusinessCreateBill, pendingSettlementBusinessCreateBillList
+} from "@/api/cwgl/pendingSettlementBusiness";
+import { listEstimatedReceivable } from "@/api/cwgl/estimatedReceivable";
 
-  const { proxy } = useCurrentInstance();
-  const crudRef = ref();
 
-  const permissionList = computed(()=>{
-    return {
-      addBtn: hasPermission(["cwgl:pendingSettlementBusiness:add"]),
-      delBtn: hasPermission(["cwgl:pendingSettlementBusiness:remove"]),
-      editBtn: hasPermission(["cwgl:pendingSettlementBusiness:edit"]),
-      viewBtn: hasPermission(["cwgl:pendingSettlementBusiness:query"]),
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
+
+const permissionList = computed(() => {
+  return {
+    addBtn: hasPermission(["cwgl:pendingSettlementBusiness:add"]),
+    delBtn: hasPermission(["cwgl:pendingSettlementBusiness:remove"]),
+    editBtn: hasPermission(["cwgl:pendingSettlementBusiness:edit"]),
+    viewBtn: hasPermission(["cwgl:pendingSettlementBusiness:query"]),
+    generate: hasPermission(["cwgl:pendingSettlementBusiness:generate"]),
+
+  }
+})
+
+const data = reactive({
+  form: <PendingSettlementBusinessI & any>{
+    billName: '',
+    customerNa: '',
+    count: 0,
+    price: 0
+  },
+  selectCustomName: [],
+  queryParams: <PendingSettlementBusinessI & PageQueryInterface>{},
+  page: <PagesInterface>{
+    pageSize: 10,
+    total: 0,
+    currentPage: 1,
+  },
+  selectionList: [],
+  tableDataList: [],
+  rules: {
+    billName: [
+      { required: true, message: '璐﹀崟鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }
+    ],
+  },
+  generateDisabled: false, // 鎺у埗鐢熸垚璐﹀崟鎸夐挳鐨勭鐢ㄧ姸鎬�
+})
+const { queryParams, form, page, selectionList, generateDisabled, rules, tableDataList,
+  selectCustomName
+} = toRefs(data);
+const getSelectCustomName = () => {
+  getSelectCustomNam().then((res) => {
+    if (res.code === 200) {
+      // selectCustomName.value = res.data;
+      selectCustomName.value = res.data.map(item => ({
+        dictLabel: item,
+        dictValue: item
+      }));
+      option.value.column.customerName.dicData = selectCustomName.value || [];
     }
   })
+}
+getSelectCustomName()
+const option = ref({
+  pageKey: 'PendingSettlementBusiness',
+  rowKey: 'id',
+  addBtn: false,
+  generateDisabled: true,
+  editBtn: false,
+  delBtn: false,
+  viewBtn: false,
+  selection: true,
+  generate: false,
+  searchSpan: 5,
+  searchLabelWidth: 100,
+  column: {
+    // id: {
+    //   label: 'ID',
+    // },
+    projectName: {
+      fixed: 'left',
+      label: '椤圭洰鍚嶇О', search: true,
+      minWidth: 150,
 
-  const data = reactive({
-    form:<PendingSettlementBusinessI>{},
-    queryParams:<PendingSettlementBusinessI&PageQueryInterface>{},
-    page: <PagesInterface>{
-      pageSize: 10,
-      total: 0,
-      currentPage: 1,
     },
-    selectionList:[],
-  })
-  const {queryParams,form,page,selectionList} = toRefs(data);
-  const option = ref({
-    pageKey: 'PendingSettlementBusiness',
-    rowKey: 'id',
-    column: {
-                                id: {
-          label: 'ID',
-                            },
-                                bookingNo: {
-          label: '瀹㈡埛璁㈠崟鍙�',
-                            },
-                                customerId: {
-          label: '瀹㈡埛id',
-                            },
-                                carrierId: {
-          label: '鎵胯繍鍟唅d',
-                            },
-                                projectName: {
-          label: '椤圭洰鍚嶇О',
-                            },
-                                dispatchNo: {
-          label: '璋冨害鍗曞彿',
-                                rules: [
-              {
-                required: true,
-                message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                createdTime: {
-          label: '涓嬪崟鏃堕棿',
-                            },
-                                transportMode: {
-          label: '杩愯緭鏂瑰紡',
-                            },
-                                productId: {
-          label: '鏈嶅姟浜у搧',
-                            },
-                                customerName: {
-          label: '瀹㈡埛鍚嶇О',
-                            },
-                                operationMode: {
-          label: '杩愯惀妯″紡',
-                            },
-                                carrierName: {
-          label: '鎵胯繍鍟�',
-                            },
-                                departureLocation: {
-          label: '鍑哄彂鍦�',
-                            },
-                                arrivalLocation: {
-          label: '鐩殑鍦�',
-                            },
-                                vehicleId: {
-          label: '杩愯緭宸ュ叿ID',
-                            },
-                                licensePlateNumber: {
-          label: '杞︾墝',
-                            },
-                                vehicleType: {
-          label: '杞﹀瀷',
-                            },
-                                mainDriver: {
-          label: '涓婚┚椹跺憳',
-                            },
-                                assistantDriver: {
-          label: '鍓┚椹跺憳',
-                            },
-                                pointNum: {
-          label: '鎻愰�佽揣鐐规暟',
-                            },
-                                businessContact: {
-          label: '涓氬姟鑱旂郴浜�',
-                            },
-                                estimatedTotalIncome: {
-          label: '棰勪及鎬绘敹鍏�',
-                            },
-                                estimatedTotalCost: {
-          label: '棰勪及鎬绘垚鏈�',
-                            },
-                                estimatedProfit: {
-          label: '棰勪及鍒╂鼎',
-                            },
-                                electronicLock: {
-          label: '鐢靛瓙閿�',
-                            },
-                                reWeighingWeight: {
-          label: '澶嶇閲嶉噺',
-                            },
-                                quantity: {
-          label: '浠舵暟',
-                            },
-                                actualDepartureTime: {
-          label: '瀹為檯鍑哄彂鏃堕棿',
-                            },
-                                requiredArrivalTime: {
-          label: '瑕佹眰鍒拌揪鏃堕棿',
-                            },
-                                actualArrivalTime: {
-          label: '瀹為檯鍒拌揪鏃堕棿',
-                            },
-                                beReturn: {
-          label: '鏄惁鍥炵▼',
-                            },
-                                dispatchQuantity: {
-          label: '瀹炲彂浠舵暟',
-                            },
-                                dispatchWeight: {
-          label: '瀹炲彂閲嶉噺',
-                            },
-                                dispatchVolume: {
-          label: '瀹炲彂浣撶Н(绔嬫柟锛�',
-                            },
-                                emptyMileage: {
-          label: '绌鸿浇閲岀▼',
-                            },
-                                emptyFuel: {
-          label: '绌鸿浇娌硅��',
-                            },
-                                heavyMileage: {
-          label: '閲嶈浇閲岀▼',
-                            },
-                                heavyFuel: {
-          label: '閲嶈浇娌硅��',
-                            },
-                                beScheduled: {
-          label: '鏄惁鎸夌彮娆�',
-                            },
-                                trackingNo: {
-          label: '蹇�掑崟鍙�',
-                            },
-                                sealNo: {
-          label: '閾呭皝鍙�',
-                            },
-                                scheduleNo: {
-          label: '鐝鍙�',
-                            },
-                                transportStatus: {
-          label: '杩愯緭鐘舵��',
-                            },
-                                estimatedBillId: {
-          label: '棰勪及璐﹀崟ID',
-                            },
-                                settlementBillId: {
-          label: '缁撶畻璐﹀崟ID',
-                            },
-                                settlementStatus: {
-          label: '缁撶畻鐘舵��',
-                            },
-                                createTime: {
-          label: '鍒涘缓鏃堕棿',
-                                rules: [
-              {
-                required: true,
-                message: "鍒涘缓鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                updateTime: {
-          label: '鏇存柊鏃堕棿',
-                                rules: [
-              {
-                required: true,
-                message: "鏇存柊鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
-            ]                  },
-          }
-  })
+    dispatchNo: {
+      label: '璋冨害鍗曞彿',
+      minWidth: 150,
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    customerName: {
+      label: '瀹㈡埛鍚嶇О',
+      search: true,
+      minWidth: 220,
+      showOverflowTooltip: true,
+      type: 'select',           // 璁剧疆涓轰笅鎷夋绫诲瀷
+      dicData: [], // 浣跨敤 selectCustomName 浣滀负鏁版嵁婧�
+      disabled: false  // 鏍规嵁闇�瑕佽缃槸鍚︾鐢�
+    },
+    licensePlateNumber: {
+      label: '杞︾墝', search: true,
+      minWidth: 120,
 
-  const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
-    searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
-    form:form,
-    option:option,
-    queryParams:queryParams,
-    idKey:'id',
-    page:page.value,
-    getListApi:listPendingSettlementBusiness,
-    getDetailApi:getPendingSettlementBusiness,
-    exportApi:exportPendingSettlementBusiness,
-    deleteApi:delPendingSettlementBusiness,
-    addApi:addPendingSettlementBusiness,
-    updateApi:updatePendingSettlementBusiness,
-    handleUpdateFunc:()=>{
+    },
+    vehicleType: {
+      label: '杞﹀瀷', search: true,
+    },
+    createdTime: {
+      label: '涓嬪崟鏃堕棿',
+      display: false,
+      search: true,
+      type: 'date',
+      format: 'YYYY-MM-DD',
+      searchSpan: 5, minWidth: 120,
+      valueFormat: 'YYYY-MM-DD',
+    },
+    operationMode: {
+      label: '杩愯惀妯″紡',
+    },
+    createTime: {
+      label: '鍒涘缓鏃堕棿', display: false, hide: true, type: 'date',
+      format: 'YYYY-MM-DD', searchSpan: 5, minWidth: 100, searchLabelWidth: 110,
+      valueFormat: 'YYYY-MM-DD',
+    },
+    // bookingNo: {
+    //   label: '瀹㈡埛璁㈠崟鍙�', showOverflowTooltip: true,
+    // },
+
+    // customerId: {
+    //   label: '瀹㈡埛id',
+    // },
+    // carrierId: {
+    //   label: '鎵胯繍鍟唅d',
+    // },
+
+
+    // createdTime: {
+    //   label: '涓嬪崟鏃堕棿',
+    // },
+    transportMode: {
+      label: '杩愯緭鏂瑰紡', hide: true,
+    },
+    productId: {
+      label: '鏈嶅姟浜у搧', hide: true,
+    },
+
+
+    carrierName: {
+      label: '鎵胯繍鍟�',
+      minWidth: 220,
+      showOverflowTooltip: true,
+    },
+    departureLocation: {
+      label: '鍑哄彂鍦�',
+      minWidth: 220,
+      showOverflowTooltip: true,
+    },
+    arrivalLocation: {
+      label: '鐩殑鍦�',
+      minWidth:  220,
+      showOverflowTooltip: true,
+
+    },
+
+    // vehicleId: {
+    //   label: '杩愯緭宸ュ叿ID',hide: true,
+    // },
+
+
+    mainDriver: {
+      label: '涓婚┚椹跺憳',
+      minWidth: 120,
+
+    },
+    assistantDriver: {
+      label: '鍓┚椹跺憳',
+      minWidth: 120,
+
+    },
+    pointNum: {
+      label: '鎻愰�佽揣鐐规暟',
+      minWidth: 100,
+
+    },
+    businessContact: {
+      label: '涓氬姟鑱旂郴浜�',
+      minWidth: 120,
+    },
+    estimatedTotalIncome: {
+      label: '棰勪及鎬绘敹鍏�',
+      minWidth: 120,
+
+    },
+    estimatedTotalCost: {
+      label: '棰勪及鎬绘垚鏈�',
+      minWidth: 120,
+
+    },
+    estimatedProfit: {
+      label: '棰勪及鍒╂鼎',
+      minWidth: 120,
+
+    },
+
+    confirmedTotalIncome: {
+      label: '纭鎬绘敹鍏�',
+      minWidth: 120,
+
+    },
+    confirmedTotalCost: {
+      label: '纭鎬绘垚鏈�',
+      minWidth: 120,
+
+    },
+        isCreate: {
+      label: '鏄惁宸插叆璐�', dataType: 'string',
+      type: 'select',
+      fixed: 'right',
+      minWidth: 120,
+      search: true,
+      dicUrl: '/system/dict/data/type/sys_whether_type',
+    },
+    billName: {
+      label: '鍏宠仈璐﹀崟鍚嶇О',
+      fixed: 'right',
+      minWidth: 120,
+      search: true,
+    },
+    isIncomeMatched: {
+      label: '鏄惁鍖归厤鏀跺叆',
+      type: 'select',
+      dataType: 'string',
+      minWidth: 120,
+      
+      dicUrl: '/system/dict/data/type/sys_matching_status',
+    },
+    isCostMatched: {
+      label: '鏄惁鍖归厤鎴愭湰',
+      type: 'select',
+      dataType: 'string',
+      minWidth: 120,
+      dicUrl: '/system/dict/data/type/sys_matching_status',
+    },
+
+
+    relatedBillStatus: {
+      minWidth: 120,
+      label: '鍏宠仈璐﹀崟鐘舵��',
+      dataType: 'string',
+      type: 'select',
+      dicUrl: '/system/dict/data/type/sys_related_status',
+      //    formatter: (row, value) => {
+      // // 鑷畾涔夋牸寮忓寲閫昏緫锛堝鏋滈渶瑕侊級
+      //   return value;
+      //  }
+    },
+    // electronicLock: {
+    //   label: '鐢靛瓙閿�',
+    // },
+    // reWeighingWeight: {
+    //   label: '澶嶇閲嶉噺',
+    // },
+    // quantity: {
+    //   label: '浠舵暟',
+    // },
+    // actualDepartureTime: {
+    //   label: '瀹為檯鍑哄彂鏃堕棿',
+    // },
+    // requiredArrivalTime: {
+    //   label: '瑕佹眰鍒拌揪鏃堕棿',
+    // },
+    // actualArrivalTime: {
+    //   label: '瀹為檯鍒拌揪鏃堕棿',
+    // },
+    // beReturn: {
+    //   label: '鏄惁鍥炵▼',
+    // },
+    // dispatchQuantity: {
+    //   label: '瀹炲彂浠舵暟',
+    // },
+    // dispatchWeight: {
+    //   label: '瀹炲彂閲嶉噺',
+    // },
+    // dispatchVolume: {
+    //   label: '瀹炲彂浣撶Н(绔嬫柟锛�',
+    // },
+    // emptyMileage: {
+    //   label: '绌鸿浇閲岀▼',
+    // },
+    // emptyFuel: {
+    //   label: '绌鸿浇娌硅��',
+    // },
+    // heavyMileage: {
+    //   label: '閲嶈浇閲岀▼',
+    // },
+    // heavyFuel: {
+    //   label: '閲嶈浇娌硅��',
+    // },
+    // beScheduled: {
+    //   label: '鏄惁鎸夌彮娆�',
+    // },
+    // trackingNo: {
+    //   label: '蹇�掑崟鍙�',
+    // },
+    // sealNo: {
+    //   label: '閾呭皝鍙�',
+    // },
+    // scheduleNo: {
+    //   label: '鐝鍙�',
+    // },
+    // transportStatus: {
+    //   label: '杩愯緭鐘舵��',
+    // },
+    // estimatedBillId: {
+    //   label: '棰勪及璐﹀崟ID',
+    // },
+    // settlementBillId: {
+    //   label: '缁撶畻璐﹀崟ID',
+    // },
+    // settlementStatus: {
+    //   label: '缁撶畻鐘舵��',
+    // },
+    // updateTime: {
+    //   label: '鏇存柊鏃堕棿',
+    //   rules: [
+    //     {
+    //       required: true,
+    //       message: "鏇存柊鏃堕棿涓嶈兘涓虹┖", trigger: "blur"
+    //     }
+    //   ]
+    // },
+  }
+})
+
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+  searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+    form: form,
+    option: option,
+    queryParams: queryParams,
+    idKey: 'id',
+    page: page.value,
+    getListApi: listPendingSettlementBusiness,
+    getDetailApi: getPendingSettlementBusiness,
+    exportApi: exportPendingSettlementBusiness,
+    deleteApi: delPendingSettlementBusiness,
+    addApi: addPendingSettlementBusiness,
+    updateApi: updatePendingSettlementBusiness,
+    handleUpdateFunc: () => {
       crudRef.value.rowEdit(selectionList.value[0]);
     },
-    handleSelectionChangeFunc:(selection:any)=>{
+    handleSelectionChangeFunc: (selection: any) => {
+      if (selection.length > 0) {
+        // 妫�鏌ユ槸鍚︽墍鏈夎褰曢兘鏄湭鍏ヨ处鐘舵��(isCreate == '0')
+        const allNotCreated = selection.every((item: any) => item.isCreate == '0');
+        // 妫�鏌ユ槸鍚︽墍鏈夎褰曠殑瀹㈡埛鍚嶇О閮界浉鍚�
+        const sameCustomer = selection.every((item: any) => item.customerName === selection[0].customerName);
+
+        if (allNotCreated && sameCustomer) {
+          generateDisabled.value = false;
+        } else {
+          generateDisabled.value = true;
+          if (!allNotCreated) {
+            proxy.$message.warning('璇烽�夋嫨鏈叆璐︾殑璁板綍');
+          } else if (!sameCustomer) {
+            proxy.$message.warning('璇烽�夋嫨鐩稿悓瀹㈡埛鍚嶇О鐨勮褰�');
+          }
+        }
+      } else {
+        generateDisabled.value = false;
+      }
       selectionList.value = selection;
     }
   })
+const dialog = reactive({
+  visible: false,
+  detail: false,
+  title: '',
+})
+const selectedIds = ref<string>('');
+const handleGenerate = () => {
+  form.value = {};
+  dialog.title = '鐢熸垚璐﹀崟';
+  if (selectionList.value.length > 0) {
+    selectedIds.value = selectionList.value.map(item => item.id).join(',');
+  }
+  if (selectionList.value.length === 0) {
+    if (queryParams.value.customerName == '') {
+      proxy.$message.warning('璇烽�夋嫨瀹㈡埛鍚嶇О');
+      return;
+    }
+    getCwglPendingSettlementBusinessBillList({ customerName: queryParams.value.customerName }).then((res) => {
+      if (res.code === 200) {
+        form.value = res.data;
+        // option.value.generate = true;
+        dialog.visible = true;
+      }
+    })
+  } else {
+    getPendingSettlementBusinessBill(selectedIds.value).then((res) => {
+      if (res.code === 200) {
+        form.value = res.data;
+        // option.value.generate = true;
+        dialog.visible = true;
+      }
+    })
+  }
 
 
+}
+
+const storagesTransferRef = ref<FormInstance>()
+const submitForm = () => {
+  storagesTransferRef.value!.validate(valid => {
+    if (valid) {
+      if (selectionList.value.length == 0) {
+        pendingSettlementBusinessCreateBillList(form.value).then((res) => {
+          if (res.code === 200) {
+            proxy.$message.success(res.msg);
+            dialog.visible = false;
+            onLoad(page.value)
+          }
+
+        });
+      } else {
+
+        cwglPendingSettlementBusinessCreateBill(form.value, selectedIds.value).then((res) => {
+          if (res.code === 200) {
+            proxy.$message.success(res.msg);
+            dialog.visible = false;
+            onLoad(page.value)
+
+
+          }
+        });
+      }
+    }
+  })
+}
+const cancel = () => {
+  form.value = {};
+  dialog.visible = false;
+  dialog.detail = false;
+  proxy.resetForm(storagesTransferRef.value)
+  option.value.generate = false;
+}
+const activeName = ref('first')
+const dispatchNo = ref('');
+const handleClick = (tab: TabsPaneContext, event: Event) => {
+  if (tab.props.name == 'first') {
+    getListVable(dispatchNo.value, 1);
+  } else if (tab.props.name == 'second') {
+    getListVable(dispatchNo.value, 0);
+  }
+}
+
+const handleFy = (row: any) => {
+  dispatchNo.value = row.dispatchNo;
+  dialog.title = '璐圭敤鏄庣粏';
+  if (activeName.value == 'first') {
+    listEstimatedReceivable({ dispatchNo: row.dispatchNo, feeType: 1,isConfirmed:1 }).then((res) => {
+      if (res.code === 200) {
+        dialog.detail = true;
+        tableDataList.value = res.rows || [];
+      }
+    })
+  } else if (activeName.value == 'second') {
+    // 杩欓噷鍙互娣诲姞鏌ヨ鏀跺叆鐩稿叧鐨勯�昏緫
+    listEstimatedReceivable({ dispatchNo: row.dispatchNo, feeType: 0,isConfirmed:1 }).then((res) => {
+      if (res.code === 200) {
+        dialog.detail = true;
+        tableDataList.value = res.rows || [];
+      }
+    })
+  }
+}
+const getListVable = (dispatchNo, feeType) => {
+  listEstimatedReceivable({ dispatchNo: dispatchNo, feeType: feeType,isConfirmed:1 }).then((res) => {
+    if (res.code === 200) {
+      tableDataList.value = res.rows || [];
+    }
+  })
+}
+// 娣诲姞鍚堣鏂规硶
+const getSummaries = (param) => {
+  const { columns, data } = param;
+  const sums = [];
+  columns.forEach((column, index) => {
+    if (index === 0) {
+      sums[index] = '鍚堣';
+      return;
+    }
+    if (column.property === 'estimatedAmount') {
+      const values = data.map(item => Number(item.estimatedAmount));
+      if (!values.every(value => Number.isNaN(value))) {
+        sums[index] = values.reduce((prev, curr) => {
+          const value = Number(curr);
+          if (!Number.isNaN(value)) {
+            return prev + curr;
+          } else {
+            return prev;
+          }
+        }, 0);
+        sums[index] = sums[index].toFixed(2);
+      } else {
+        sums[index] = 'N/A';
+      }
+    } else {
+      sums[index] = '';
+    }
+  });
+
+  return sums;
+}
 </script>
+
+<style>
+:deep(.avue-crud__table) {
+  overflow-y: auto;
+}
+
+:deep(.el-scrollbar__bar.is-horizontal) {
+  pointer-events: auto;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0