15815213711
2025-07-29 3df57d04d239dc40c20cd2b43e1cb09ee005e943
ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
@@ -21,21 +21,7 @@
        @on-load="onLoad"
    >
      <template #menu-left>
        <el-button
            type="success"
            icon="Edit"
            :disabled="pageF.single"
            v-hasPermi="['cwgl:dispatchOrder:edit']"
            @click="handleUpdate">修改
        </el-button>
        <el-button
            type="danger"
            icon="Delete"
            :disabled="pageF.multiple"
            @click="handleDelete"
            v-hasPermi="['cwgl:dispatchOrder:remove']"
        >删除
        </el-button>
        <el-button
            type="warning"
            plain
@@ -44,8 +30,51 @@
            v-hasPermi="['cwgl:dispatchOrder:export']"
        >导出
        </el-button>
        <el-button
            type="success"
            plain
            icon="Download"
            @click="handleExport"
            v-hasPermi="['cwgl:dispatchOrder:export']"
        >生成台账报表
        </el-button>
      </template>
      <template #menu="{ size, row, index }">
        <el-link class="link-btn"
            type="primary" :underline="false"
            plain  :size="size"
            icon="View"
            @click="handleFy(row)"
            v-hasPermi="['cwgl:dispatchOrder:query']"
        > 查看费用
        </el-link>
        <el-link class="link-btn"
            type="primary" :underline="false"
            plain
            icon="View"
            @click="handleFj(row)"
            v-hasPermi="['cwgl:dispatchOrder:query']"
        > 查看附件
        </el-link>
      </template>
    </avue-crud>
    <el-dialog title="查看费用" v-model="open1"  class="avue-dialog avue-dialog--top"  width="60%">
      <avue-crud
          :option="itemTableOption1"
          :data="itemTableData1"
          :table-loading="itemTableLoading1"
      >
      </avue-crud>
    </el-dialog>
    <el-dialog title="查看附件" v-model="open2"  class="avue-dialog avue-dialog--top"  width="60%">
      <avue-crud
          :option="itemTableOption2"
          :data="itemTableData2"
          :table-loading="itemTableLoading2"
      >
      </avue-crud>
    </el-dialog>
  </basicContainer>
</template>
@@ -64,7 +93,6 @@
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import {useTableColumnWidth} from "@/hooks/useAvueTableWidths";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -87,14 +115,26 @@
    currentPage: 1,
  },
  selectionList: [],
  itemTableData1: [],
  itemTableData2: [],
  open1:false,
  open2:false,
  itemTableLoading1:false,
  itemTableLoading2:false,
})
const {queryParams, form, page, selectionList} = toRefs(data);
const {queryParams, form, page, selectionList, itemTableData1, itemTableData2, open1, open2, itemTableLoading1, itemTableLoading2} = toRefs(data);
const option = ref({
  pageKey: 'DispatchOrder',
  rowKey: 'id',
  addBtn:false,
  editBtn:false,
  delBtn:false,
  viewBtn:false,
  selection:false,
  column: {
    dispatchNo: {
      label: '调度单号',search:true,
      fixed:'left',
      label: '调度单号',search:true,minWidth: 180,
      rules: [
        {
          required: true,
@@ -103,81 +143,98 @@
      ],
    },
    transportMode: {
      label: '运输方式',
      label: '运输方式',width: 120,
    },
    productName: {
      label: '服务产品名称',
      label: '服务产品名称',width: 120,showOverflowTooltip: true
    },
    carrierName: {
      label: '承运商',search:true,
      label: '承运商',search:true,width: 200,showOverflowTooltip: true
    },
    departureLocationName: {
      label: '出发地名称',
      label: '出发地名称',width: 210,showOverflowTooltip: true
    },
    arrivalLocationName: {
      label: '目的地名称',
      label: '目的地名称',width: 200,showOverflowTooltip: true
    },
    licensePlateNumber: {
      label: '车牌',search:true,
      label: '车牌',search:true,width: 120,
    },
    vehiclePlateId: {
      label: '车板号',
      label: '车板号',width: 120,
    },
    mainDriverName: {
      label: '主驾驶员',
      label: '主驾驶员',width: 120,
    },
    assistantDriverName: {
      label: '副驾驶员',
      label: '副驾驶员',width: 120,
    },
    pointNum: {
      label: '提送货点数',
      label: '提送货点数',width: 120,
    },
    quantity: {
      label: '件数',
      label: '件数',width: 120,
    },
    actualDepartureTime: {
      label: '实际出发时间',
      label: '实际出发时间',width: 180,
    },
    actualDepartureTimeRange: {
      label: '实际出发时间',display: false,search: true, searchRange: true, type: 'date',
      format: 'YYYY-MM-DD',hide: true,searchSpan: 6,searchLabelWidth: 110,
      valueFormat: 'YYYY-MM-DD',
    },
    requiredArrivalTime: {
      label: '要求到达时间',
      label: '要求到达时间',width: 180,
    },
    requiredArrivalTimeRange: {
      label: '要求到达时间',display: false,search: true, searchRange: true, type: 'date',
      format: 'YYYY-MM-DD',hide: true,searchSpan: 6,searchLabelWidth: 110,
      valueFormat: 'YYYY-MM-DD',
    },
    actualArrivalTime: {
      label: '实际到达时间',
      label: '实际到达时间',width: 180,
    },
    actualArrivalTimeRange: {
      label: '要求到达时间',display: false,search: true, searchRange: true, type: 'date',
      format: 'YYYY-MM-DD',hide: true,searchSpan: 6,searchLabelWidth: 110,
      valueFormat: 'YYYY-MM-DD',
    },
    beReturn: {
      label: '是否回程(N,Y)',
      label: '是否回程',dataType:'string',width: 100,
      type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
    },
    dispatchQuantity: {
      label: '实发件数',
      label: '实发件数',width: 100,
    },
    dispatchWeight: {
      label: '实发重量',
      label: '实发重量',width: 100,
    },
    dispatchVolume: {
      label: '实发体积(立方)',
      label: '实发体积(立方)',width: 160,
    },
    status: {
      label: '状态',
      label: '状态',search: true,dataType:'string',width: 100,
      type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
    },
    remark: {
      label: '备注',
      label: '备注',width: 120,
      type: 'textarea', minRows: 3, maxRows: 5,
    },
    createBy: {
      label: '创建人',
    },
    createTime: {
      label: '创建时间',
    },
    updateBy: {
      label: '修改人',
    },
    updateTime: {
      label: '修改时间',
    },
    isDeleted: {
      label: '是否删除(0-否,1-是)',
    },
    // createBy: {
    //   label: '创建人',
    // },
    // createTime: {
    //   label: '创建时间',
    // },
    // updateBy: {
    //   label: '修改人',
    // },
    // updateTime: {
    //   label: '修改时间',
    // },
    // isDeleted: {
    //   label: '是否删除(0-否,1-是)',
    // },
  }
})
@@ -213,11 +270,74 @@
  handleUpdateFunc: () => {
    crudRef.value.rowEdit(selectionList.value[0]);
  },
  getBeginListFunc(params:any = {}){
    params = proxy.addDateRangeNew(params, params?.actualDepartureTimeRange, 'actualDepartureTime') || {};
    params = proxy.addDateRangeNew(params, params?.requiredArrivalTimeRange, 'requiredArrivalTime') || {};
    params = proxy.addDateRangeNew(params, params?.actualArrivalTimeRange, 'actualArrivalTime') || {};
    return params;
  },
  handleSelectionChangeFunc: (selection: any) => {
    selectionList.value = selection;
  }
})
useTableColumnWidth(option.value, crudRef); // 使用 Hook 管理列宽
const itemTableOption1 = ref({
  addBtn: false,
  selection: false,
  menu: false,
  header: false,
  column: {
    packageTrackingNo: {
      label: '费用类型',minWidth: 180,fixed: 'left'
    },
    ys: {
      label: '应收费用',minWidth: 180,
    },
    yf: {
      label: '应付费用',minWidth: 180,
    },
    isFY: {
      label: '是否可付款',minWidth: 180,
    },
  }
})
const itemTableOption2 = ref({
  addBtn: false,
  selection: false,
  menu: false,
  header: false,
  column: {
    packageTrackingNo: {
      label: '费用类型',minWidth: 180,fixed: 'left'
    },
    ys: {
      label: '金额',minWidth: 180,
    },
    yf: {
      label: '币值',minWidth: 180,
    },
    isFY: {
      label: '图片',minWidth: 180,
    },
  }
})
const handleFy = (row:DispatchOrderI) => {
  open1.value = true;
}
const handleFj = (row:DispatchOrderI) => {
  open2.value = true;
}
</script>
<style lang="scss" scoped>
.avue-dialog .el-dialog__body {
  padding: 20px 20px;
  flex: 1;
  overflow: scroll;
}
</style>