sen
2025-08-18 d8c563d7ce8e4541d614d5d6a889aa7b0c136adc
ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
@@ -8,7 +8,7 @@
      <template #dispatchNo-form="{ row, size, }">
        <div style="cursor: pointer;">
          <el-input v-model="form.dispatchNo" @click="handleFormSearch" readonly placeholder="请输入调度单号">
          <el-input v-model="form.dispatchNo" @click="handleFormSearch" readonly placeholder="请输入 调度单号">
            <template #append>
              <el-button icon="Search" style="cursor: pointer;" @click="handleFormSearch"></el-button>
            </template>
@@ -19,10 +19,10 @@
      <template #menu-left>
        <el-button type="success" icon="Edit" :disabled="pageF.single" v-hasPermi="['cwgl:estimatedReceivable:edit']"
        <el-button type="success" icon="Edit" :disabled="editIshow" v-hasPermi="['cwgl:estimatedReceivable:edit']"
          @click="handleUpdate">修改
        </el-button>
        <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
        <el-button type="danger" icon="Delete" :disabled="removeIshow" @click="handleDelete"
          v-hasPermi="['cwgl:estimatedReceivable:remove']">删除
        </el-button>
        <el-button type="warning" plain icon="Download" @click="handleExport"
@@ -31,15 +31,23 @@
      </template>
      <template #menu="{ size, row, index }">
        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 1" :underline="false" plain :size="size"
          @click="handleCancel(row)" v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 取消确认
        <el-link class="link-btn" type="primary" :underline="false" plain :size="size"
          @click="handleEditBtn(row, index)" v-if="[0, 1].includes(row.relatedBillStatus) && row.isConfirmed != 2"
          v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 编辑
        </el-link>
        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 0" :underline="false" plain
          @click="handleAffirm(row)" v-hasPermi="['cwgl:estimatedReceivable:confirm']"> 确认
        <el-link class="link-btn" type="primary"
          v-if="row.isConfirmed == 1 && row.relatedBillStatus != 2 && row.relatedBillStatus != 3" :underline="false"
          plain :size="size" @click="handleCancel(row)" v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 取消确认
        </el-link>
        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 1" :underline="false" plain
          @click="handleInvalid(row)" v-hasPermi="['cwgl:estimatedReceivable:invalid']"> 作废
        <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 0 && ![2, 3].includes(row.relatedBillStatus)"
          :underline="false" plain @click="handleAffirm(row)" v-hasPermi="['cwgl:estimatedReceivable:confirm']"> 确认
        </el-link>
        <el-link class="link-btn" type="primary"
          v-if="row.isConfirmed == 1 && row.relatedBillStatus != 2 && row.relatedBillStatus != 3" :underline="false"
          plain @click="handleInvalid(row)" v-hasPermi="['cwgl:estimatedReceivable:invalid']"> 作废
        </el-link>
        <el-link class="link-btn" type="primary" :underline="false" plain @click="handleFlow(row)"
          v-hasPermi="['cwgl:estimatedReceivable:flog']"> 日志
@@ -107,7 +115,7 @@
  </el-dialog>
  <flowLog ref="flowLogIshow" :flowParams="flowParams" ></flowLog>
  <flowLog ref="flowLogIshow" :flowParams="flowParams"></flowLog>
</template>
<script setup name="estimatedReceivable" lang="ts">
@@ -115,8 +123,11 @@
  EstimatedReceivableI, addEstimatedReceivable, delEstimatedReceivable, exportEstimatedReceivable, getEstimatedReceivable, listEstimatedReceivable, updateEstimatedReceivable,
  getEstimatedReceivableConfirm, getCwglEstimatedReceivableCancel, getEstimatedReceivableInvalid
} from "@/api/cwgl/estimatedReceivable";
  import { listEstimatedReceivableLog} from "@/api/cwgl/estimatedReceivableLog";
  import {listEstimatedReceivableBillLog} from "@/api/cwgl/estimatedReceivableBillLog";
import { listEstimatedReceivableLog } from "@/api/cwgl/estimatedReceivableLog";
import { listEstimatedReceivableBillLog } from "@/api/cwgl/estimatedReceivableBillLog";
import {
  getSelectCustomNam,
} from "@/api/cwgl/pendingSettlementBusiness";
import {
  listPendingSettlementBusiness,
} from "@/api/cwgl/pendingSettlementBusiness";
@@ -142,11 +153,15 @@
const data = reactive({
  form: <EstimatedReceivableI>{},
  newTableData: [],
  removeIshow: true,
  editIshow: true,
  newForm: <EstimatedReceivableI>{
    pageNum: 1,
    pageSize: 10
  },
  queryParams: <EstimatedReceivableI & PageQueryInterface>{},
  queryParams: <EstimatedReceivableI & PageQueryInterface>{
    feeType: 0
  },
  page: <PagesInterface>{
    pageSize: 10,
    total: 0,
@@ -157,7 +172,7 @@
  itemTableLoading1: false,
  itemTableLoading2: false,
})
const { queryParams, form, page, selectionList, newForm, newTableData, newSelectionList, itemTableLoading1, itemTableLoading2 } = toRefs(data);
const { queryParams, form, page, selectionList, newForm, newTableData, newSelectionList, itemTableLoading1, itemTableLoading2, removeIshow, editIshow } = toRefs(data);
const option = ref({
  pageKey: 'EstimatedReceivable',
  rowKey: 'id',
@@ -165,7 +180,9 @@
  editDisplay: false,
  addBtn: true,
  editBtn: true,
  editBtn: false,
  editBtnIcon: ' ',
  delBtn: false,
  viewBtn: false,
@@ -183,12 +200,14 @@
          message: "费用系统编号不能为空", trigger: "blur"
        }
      ],
      minWidth: 140,
      search: true,
      addDisplay: false,
      editDisplay: false,
    },
    dispatchNo: {
      label: '调度单号',
      minWidth: 120,
      rules: [
        {
          required: true,
@@ -197,31 +216,43 @@
      ],
      search: true,
    },
    // customerName: {
    //   label: '客户名称',
    //   rules: [
    //     {
    //       required: true,
    //       message: "客户名称不能为空", trigger: "blur"
    //     }
    //   ],
    //   search: true,
    //   disabled: true,
    // },
    customerName: {
      label: '客户名称',
      rules: [
        {
          required: true,
          message: "客户名称不能为空", trigger: "blur"
        }
      ],
      search: true,
      disabled: true,
      minWidth: 220,
      type: 'select',           // 设置为下拉框类型
      dicData: [], // 使用 selectCustomName 作为数据源
      disabled: false  // 根据需要设置是否禁用
    },
    projectName: {
      label: '项目名称',
      search: true,
      disabled: true,
      minWidth: 150,
    },
    orderDate: {
      label: '下单日期',
      search: true,
      minWidth: 180,
      type: 'datetime',  // 改为 datetime 类型
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
    },
    feeName: {
      label: '费用名称',
      minWidth: 120,
      rules: [
        {
          required: true,
@@ -246,13 +277,18 @@
    },
    relatedBillName: {
      label: '关联账单名称',
      minWidth: 120,
      addDisplay: false,  // 新增时不显示
      editDisplay: false, // 修改时不显示
    },
    relatedBillStatus: {
      label: '关联账单状态',
      search: true,
      minWidth: 120,
      dataType: 'string',
      type: 'select',
      addDisplay: false,  // 新增时不显示
      editDisplay: false, // 修改时不显示
      dicUrl: '/system/dict/data/type/sys_related_status',
      //    formatter: (row, value) => {
      // // 自定义格式化逻辑(如果需要)
@@ -262,13 +298,15 @@
    isConfirmed: {
      label: '是否确认',
      dataType: 'string',
      addDisplay: false,  // 新增时不显示
      editDisplay: false, // 修改时不显示
      search: true,
      type: 'select',
      dicUrl: '/system/dict/data/type/sys_affirm_status',
    },
    remark: {
      label: '备注',
      minWidth: 120,
      type: 'textarea', minRows: 3, maxRows: 5,
    },
@@ -354,7 +392,28 @@
    },
    handleSelectionChangeFunc: (selection: any) => {
      selectionList.value = selection;
      console.log(selection);
      // 根据选中项数量和状态设置编辑按钮是否可用
      if (selection.length === 1 && [0, 1].includes(selection[0].relatedBillStatus)) {
        editIshow.value = false;
      } else {
        editIshow.value = true;
      }
      if (selection.length === 1 && [0].includes(selection[0].isConfirmed)) {
        removeIshow.value = false;
      } else {
        removeIshow.value = true;
      }
    },
    getBeginListFunc: (params = {}) => {
      params.feeType = 0;
      return params
    }
  })
const dialog = reactive({
  visible: false,
@@ -444,8 +503,8 @@
  newForm.value.pageSize = pageSize;
  getEstimatedReceivableCancel();
}
const newOnLoad = () => {
  getEstimatedReceivableCancel()
const newOnLoad = (newPageF) => {
  getEstimatedReceivableCancel(newPageF)
}
// 加载附件数据的函数
const loadAttachmentData = () => {
@@ -548,4 +607,24 @@
  })
}
const handleEditBtn = (row, index) => {
  crudRef.value.rowEdit(row, index)
  // option.value.editBtn = true;
}
/*  */
const selectCustomName = ref([]);
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()
</script>