| | |
| | | <div class="app-container"> |
| | | <el-form :inline="true" :model="queryParams" class="search-form"> |
| | | <el-form-item v-if="shouldShowSearch" label="æç´¢"> |
| | | <el-input v-model="queryParams.searchAll" :placeholder="searchPlaceholder" clearable/> |
| | | <el-input |
| | | v-model="queryParams.searchAll" |
| | | :placeholder="searchPlaceholder" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="search">æ¥è¯¢</el-button> |
| | |
| | | </el-form> |
| | | <el-card> |
| | | <!-- æ ç¾é¡µ --> |
| | | <el-tabs v-model="activeTab" class="info-tabs" @tab-click="handleTabClick"> |
| | | <el-tab-pane v-for="tab in tabs" :key="tab.name" :label="tab.label" :name="tab.name"/> |
| | | <el-tabs |
| | | v-model="activeTab" |
| | | class="info-tabs" |
| | | @tab-click="handleTabClick" |
| | | > |
| | | <el-tab-pane |
| | | v-for="tab in tabs" |
| | | :key="tab.name" |
| | | :label="tab.label" |
| | | :name="tab.name" |
| | | /> |
| | | </el-tabs> |
| | | |
| | | <!-- æä½æé®åº --> |
| | | <el-row :gutter="24" class="table-toolbar"> |
| | | <el-button :icon="Plus" type="primary" @click="handleAdd">æ°å»º</el-button> |
| | | <el-button :icon="Delete" type="danger" @click="handleDelete">å é¤</el-button> |
| | | <el-button @click="jump">admins</el-button> |
| | | <el-button v-show="canExport" :icon="Download" type="info" @click="handleExport">导åº</el-button> |
| | | </el-row> <!-- è¡¨æ ¼ç»ä»¶ --> |
| | | <el-button :icon="Plus" type="primary" @click="handleAdd" |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button :icon="Delete" type="danger" @click="handleDelete" |
| | | >å é¤</el-button |
| | | > |
| | | <el-button |
| | | v-show="canExport" |
| | | :icon="Download" |
| | | type="info" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </el-row> |
| | | <!-- è¡¨æ ¼ç»ä»¶ --> |
| | | <div> |
| | | <data-table :border="true" :columns="columns" :loading="loading" style="width: 100%;height: calc(100vh - 29em)" |
| | | :show-selection="true" :table-data="tableData" @edit="handleEdit" @selection-change="handleSelectionChange"> |
| | | <data-table |
| | | :border="true" |
| | | :columns="columns" |
| | | :loading="loading" |
| | | style="width: 100%; height: calc(100vh - 29em)" |
| | | :show-selection="true" |
| | | :table-data="tableData" |
| | | @edit="handleEdit" |
| | | @viewRow="handleView" |
| | | @selection-change="handleSelectionChange" |
| | | :showOperations="true" |
| | | :showIndex="true" |
| | | :showPagination="false" |
| | | :operations="['edit', 'viewRow']" |
| | | :operationsWidth="200" |
| | | > |
| | | <!-- åæ®µåç§°åçèªå®ä¹ææ§½ - æ¾ç¤ºä¸ºæ ç¾ --> |
| | | <template v-if="tabName === 'coalQualityMaintenance'" #fieldIds="{ row }"> |
| | | <template v-if="typeof row.fieldIds === 'string' && row.fieldIds.includes(',')"> |
| | | <el-tag v-for="(field, index) in row.fieldIds.split(',')" :key="index" size="small" style="margin-right: 4px; margin-bottom: 2px;" |
| | | type="primary"> |
| | | <template |
| | | v-if="tabName === 'coalQualityMaintenance'" |
| | | #fieldIds="{ row }" |
| | | > |
| | | <template |
| | | v-if=" |
| | | typeof row.fieldIds === 'string' && row.fieldIds.includes(',') |
| | | " |
| | | > |
| | | <el-tag |
| | | v-for="(field, index) in row.fieldIds.split(',')" |
| | | :key="index" |
| | | size="small" |
| | | style="margin-right: 4px; margin-bottom: 2px" |
| | | type="primary" |
| | | > |
| | | {{ getFieldDisplayName(field.trim()) }} |
| | | </el-tag> |
| | | </template> |
| | | <template v-else> |
| | | <el-tag size="small" type="primary"> |
| | | {{ getFieldDisplayName(row.fieldIds) || '--' }} |
| | | {{ getFieldDisplayName(row.fieldIds) || "--" }} |
| | | </el-tag> |
| | | </template> |
| | | </template> |
| | | </data-table> |
| | | </div> |
| | | <pagination v-if="total > 0" :layout="'total, prev, pager, next, jumper'" :limit="pageSizes" :page="pageNum" :total="total" |
| | | @pagination="handPagination"/> |
| | | <Supplier v-if="tabName === 'supplier'" v-model:copyForm="copyForm" |
| | | v-model:supplierDialogFormVisible="dialogFormVisible" :addOrEdit="addOrEdit" :form="form" :title="title" |
| | | @beforeClose="handleBeforeClose" @submit="handleSubmit" |
| | | @update:dialogFormVisible="handleDialogFormVisible"/> |
| | | <Customer v-if="tabName === 'customer'" v-model:copyForm="copyForm" |
| | | v-model:customerDialogFormVisible="dialogFormVisible" :addOrEdit="addOrEdit" :form="form" :title="title" |
| | | @beforeClose="handleBeforeClose" @submit="handleSubmit"/> |
| | | <Coal v-if="tabName === 'coal'" v-model:coalDialogFormVisible="dialogFormVisible" v-model:copyForm="copyForm" |
| | | :addOrEdit="addOrEdit" :form="form" :title="title" @submit="handleSubmit"/> |
| | | <coalQualityMaintenance v-if="tabName === 'coalQualityMaintenance'" v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" |
| | | v-model:copyForm="copyForm" :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" @submit="handleSubmit"/> |
| | | <coalMeiZhiZiDuanWeiHu v-if="tabName === 'coalMeiZhiZiDuanWeiHu'" v-model:coalMaintenanceFieldDialogVisible="dialogFormVisible" |
| | | v-model:copyForm="copyForm" :addOrEdit="addOrEdit" :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit"/> |
| | | <pagination |
| | | v-if="total > 0" |
| | | :layout="'total, prev, pager, next, jumper'" |
| | | :limit="pageSizes" |
| | | :page="pageNum" |
| | | :total="total" |
| | | @pagination="handPagination" |
| | | /> |
| | | <Supplier |
| | | v-if="tabName === 'supplier'" |
| | | v-model:copyForm="copyForm" |
| | | v-model:supplierDialogFormVisible="dialogFormVisible" |
| | | :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" |
| | | @beforeClose="handleBeforeClose" |
| | | @submit="handleSubmit" |
| | | @update:dialogFormVisible="handleDialogFormVisible" |
| | | /> |
| | | <Customer |
| | | v-if="tabName === 'customer'" |
| | | v-model:copyForm="copyForm" |
| | | v-model:customerDialogFormVisible="dialogFormVisible" |
| | | :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" |
| | | @beforeClose="handleBeforeClose" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <Coal |
| | | v-if="tabName === 'coal'" |
| | | v-model:coalDialogFormVisible="dialogFormVisible" |
| | | v-model:copyForm="copyForm" |
| | | :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <coalQualityMaintenance |
| | | v-if="tabName === 'coalQualityMaintenance'" |
| | | v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" |
| | | v-model:copyForm="copyForm" |
| | | :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <coalMeiZhiZiDuanWeiHu |
| | | v-if="tabName === 'coalMeiZhiZiDuanWeiHu'" |
| | | v-model:coalMaintenanceFieldDialogVisible="dialogFormVisible" |
| | | v-model:copyForm="copyForm" |
| | | :addOrEdit="addOrEdit" |
| | | :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <Descriptions |
| | | v-model:descriptionsVisible="showDialog" |
| | | title="ä¾åºå详æ
" |
| | | :formData="supplierData" |
| | | :fieldLabels="supplierFieldLabels" |
| | | :column="2" |
| | | :isViewOnly="false" |
| | | :border="true" |
| | | :showOperations="true" |
| | | descriptionsTitle="åºæ¬ä¿¡æ¯" |
| | | :fieldConfig="fieldConfig" |
| | | :excludeFields="excludeFields" |
| | | @edit="descriptionsHandleEdit" |
| | | @close="handleClose" |
| | | /> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {computed, getCurrentInstance, onMounted, reactive, ref, nextTick} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {Delete, Download, Plus} from "@element-plus/icons-vue"; |
| | | import { |
| | | computed, |
| | | getCurrentInstance, |
| | | onMounted, |
| | | reactive, |
| | | ref, |
| | | nextTick, |
| | | } from "vue"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { Delete, Download, Plus } from "@element-plus/icons-vue"; |
| | | |
| | | // ===== ç»ä»¶å¯¼å
¥ ===== |
| | | import DataTable from "@/components/Table/ETable.vue"; |
| | |
| | | import Coal from "./mould/coal.vue"; |
| | | import coalQualityMaintenance from "./mould/coalQualityMaintenance.vue"; |
| | | import coalMeiZhiZiDuanWeiHu from "./mould/coalMeiZhiZiDuanWeiHu.vue"; |
| | | import Descriptions from "@/components/dialog/Descriptions.vue"; |
| | | |
| | | // ===== API æå¡å¯¼å
¥ ===== |
| | | import {delSupply, getSupply} from "@/api/basicInformation/supplier.js"; |
| | | import {delCoalInfo, getCoalInfo} from "@/api/basicInformation/coal.js"; |
| | | import {testUserList} from "@/api/tool/publicInterface.js"; |
| | | import {getAreaOptions} from "@/api/system/area.js"; |
| | | import {delCustomer, getCustomerList} from "@/api/basicInformation/customer.js"; |
| | | import {coalField, deleteCoalField} from "@/api/basicInformation/coalFieldMaintenance.js"; |
| | | import {getCoalFieldList, getCoalPlanList} from "@/api/basicInformation/coalQualityMaintenance"; |
| | | import { delSupply, getSupply } from "@/api/basicInformation/supplier.js"; |
| | | import { delCoalInfo, getCoalInfo } from "@/api/basicInformation/coal.js"; |
| | | import { testUserList } from "@/api/tool/publicInterface.js"; |
| | | import { getAreaOptions } from "@/api/system/area.js"; |
| | | import { |
| | | delCustomer, |
| | | getCustomerList, |
| | | } from "@/api/basicInformation/customer.js"; |
| | | import { |
| | | coalField, |
| | | deleteCoalField, |
| | | } from "@/api/basicInformation/coalFieldMaintenance.js"; |
| | | import { |
| | | getCoalFieldList, |
| | | getCoalPlanList, |
| | | } from "@/api/basicInformation/coalQualityMaintenance"; |
| | | |
| | | const {proxy} = getCurrentInstance(); |
| | | const { proxy } = getCurrentInstance(); |
| | | import router from "@/router"; |
| | | |
| | | // ===== ååºå¼ç¶æç®¡ç ===== |
| | | const jump = () => { |
| | | }; |
| | | // å¼¹çªæ§å¶ç¶æ |
| | | const showDialog = ref(false) |
| | | const supplierFieldLabels = { |
| | | supplierName: 'ä¾åºååç§°', |
| | | taxpayerId: 'ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ', |
| | | } |
| | | // æ°æ®å¯¹è±¡ |
| | | const supplierData = ref({ |
| | | supplierName: "æµè¯ä¾åºå", |
| | | taxpayerId: "91320000MA1N2P3Q4R", |
| | | contactPerson: "å¼ ä¸", |
| | | contactPhone: "13800138000", |
| | | bankAccount: "6222024200019999999", |
| | | bankName: "ä¸å½å·¥åé¶è¡", |
| | | businessAddress: "æ±èçèå·å¸å·¥ä¸ååºææ¹è¡328å·", |
| | | contactAddress: "æ±èçèå·å¸å§èåºè§åè¡100å·", |
| | | createTime: "2024-01-15T10:30:00", |
| | | updateTime: "2024-06-25T14:20:00", |
| | | id: 123, |
| | | }) |
| | | // åæ®µé
ç½® |
| | | const fieldConfig = ref({ |
| | | supplierName: { |
| | | label: 'ä¾åºååç§°', |
| | | span: 2 // è·¨2åæ¾ç¤º |
| | | }, |
| | | taxpayerId: { |
| | | label: 'ç»ä¸ç¤¾ä¼ä¿¡ç¨ä»£ç ' |
| | | }, |
| | | contactPhone: { |
| | | label: 'èç³»çµè¯', |
| | | formatter: (value) => value || 'ææ èç³»æ¹å¼' |
| | | }, |
| | | createTime: { |
| | | label: 'å建æ¶é´', |
| | | formatter: (value) => new Date(value).toLocaleDateString('zh-CN') |
| | | }, |
| | | businessAddress: { |
| | | label: '详ç»ç»è¥å°å', |
| | | span: 2 |
| | | }, |
| | | contactAddress: { |
| | | label: '详ç»èç³»å°å', |
| | | span: 2 |
| | | } |
| | | }) |
| | | // æé¤ä¸æ¾ç¤ºçåæ®µ |
| | | const excludeFields = ref(["id", "updateTime", "deleted"]); |
| | | |
| | | // äºä»¶å¤ç |
| | | const descriptionsHandleEdit = (data) => { |
| | | console.log("ç¼è¾æ°æ®:", data); |
| | | // 跳转å°ç¼è¾é¡µé¢ææå¼ç¼è¾å¼¹çª |
| | | }; |
| | | |
| | | const handleClose = () => { |
| | | console.log("å¼¹çªå
³é"); |
| | | }; |
| | | |
| | | const dialogFormVisible = ref(false); |
| | | const form = ref({}); |
| | | const title = ref(""); |
| | | const copyForm = ref({}); |
| | | const addOrEdit = ref("add"); |
| | | const descriptionsVisible = ref(false); |
| | | |
| | | // æ°æ®ç¼åæ å° |
| | | const userList = ref([]); |
| | |
| | | |
| | | // æ ç¾é¡µé
ç½® |
| | | const tabs = reactive([ |
| | | {name: "supplier", label: "ä¾åºåä¿¡æ¯"}, |
| | | {name: "customer", label: "客æ·ä¿¡æ¯"}, |
| | | {name: "coal", label: "ç
¤ç§ä¿¡æ¯"}, |
| | | {name: "coalQualityMaintenance", label: "ç
¤è´¨æ¹æ¡"}, |
| | | {name: "coalMeiZhiZiDuanWeiHu", label: "ç
¤è´¨å段"} |
| | | { name: "supplier", label: "ä¾åºåä¿¡æ¯" }, |
| | | { name: "customer", label: "客æ·ä¿¡æ¯" }, |
| | | { name: "coal", label: "ç
¤ç§ä¿¡æ¯" }, |
| | | { name: "coalQualityMaintenance", label: "ç
¤è´¨æ¹æ¡" }, |
| | | { name: "coalMeiZhiZiDuanWeiHu", label: "ç
¤è´¨å段" }, |
| | | ]); |
| | | |
| | | // ===== å·¥å
·å½æ° ===== |
| | |
| | | buildAddressMap(res.data); |
| | | } |
| | | } catch (error) { |
| | | console.error('è·åå°åé项失败:', error); |
| | | console.error("è·åå°åé项失败:", error); |
| | | } |
| | | }; |
| | | |
| | |
| | | */ |
| | | const buildAddressMap = (areaData) => { |
| | | const buildMap = (list, pathList = []) => { |
| | | list.forEach(item => { |
| | | list.forEach((item) => { |
| | | const currentPath = [...pathList, item.label]; |
| | | addressMap.value[item.id] = { |
| | | name: item.label, |
| | | fullPath: currentPath.join(' / ') |
| | | fullPath: currentPath.join(" / "), |
| | | }; |
| | | if (item.children && item.children.length > 0) { |
| | | buildMap(item.children, currentPath); |
| | |
| | | * @description å°å°åIDæ°ç»è½¬æ¢ä¸ºå¯è¯»çå°åå符串 |
| | | */ |
| | | const formatAddressArray = (addressIds) => { |
| | | if (!addressMap.value || Object.keys(addressMap.value).length === 0 || |
| | | !addressIds || !Array.isArray(addressIds) || addressIds.length === 0 || |
| | | addressIds.every(id => !id)) { |
| | | return '--'; |
| | | if ( |
| | | !addressMap.value || |
| | | Object.keys(addressMap.value).length === 0 || |
| | | !addressIds || |
| | | !Array.isArray(addressIds) || |
| | | addressIds.length === 0 || |
| | | addressIds.every((id) => !id) |
| | | ) { |
| | | return "--"; |
| | | } |
| | | |
| | | const addressNames = addressIds.map(id => addressMap.value[id]?.name || '--'); |
| | | const addressNames = addressIds.map( |
| | | (id) => addressMap.value[id]?.name || "--" |
| | | ); |
| | | |
| | | if (addressNames.every(name => name === '--')) { |
| | | return '--'; |
| | | if (addressNames.every((name) => name === "--")) { |
| | | return "--"; |
| | | } |
| | | |
| | | return addressNames.filter(name => name !== '--').join(' / '); |
| | | return addressNames.filter((name) => name !== "--").join(" / "); |
| | | }; |
| | | |
| | | /** |
| | |
| | | const res = await testUserList(); |
| | | if (res && res.data) { |
| | | userList.value = res.data; |
| | | userList.value.forEach(user => { |
| | | userList.value.forEach((user) => { |
| | | userMap.value[user.userId] = user.username; |
| | | }); |
| | | } |
| | | } catch (error) { |
| | | console.error('è·åç¨æ·å表失败:', error); |
| | | console.error("è·åç¨æ·å表失败:", error); |
| | | } |
| | | }; |
| | | |
| | |
| | | */ |
| | | const coalFieldData = async () => { |
| | | try { |
| | | const {data, code} = await getCoalFieldList(); |
| | | const { data, code } = await getCoalFieldList(); |
| | | if (code === 200) { |
| | | coalFieldList.value = data; |
| | | } |
| | | } catch (error) { |
| | | console.error('è·åç
¤è´¨åæ®µæ°æ®å¤±è´¥:', error); |
| | | console.error("è·åç
¤è´¨åæ®µæ°æ®å¤±è´¥:", error); |
| | | } |
| | | }; |
| | | |
| | |
| | | * @description éè¿å段IDå¹é
对åºçåæ®µåç§° |
| | | */ |
| | | const getFieldDisplayName = (fieldId) => { |
| | | if (!fieldId) return '--'; |
| | | if (!fieldId) return "--"; |
| | | |
| | | const numId = parseInt(fieldId); |
| | | const matchedField = coalFieldList.value.find(item => item.id === numId); |
| | | const matchedField = coalFieldList.value.find((item) => item.id === numId); |
| | | |
| | | return matchedField ? matchedField.fieldName : numId; |
| | | }; |
| | |
| | | * å½åæ ç¾é¡µæ¯å¦æ¯æå¯¼åºåè½ |
| | | */ |
| | | const canExport = computed(() => { |
| | | return ['supplier', 'customer'].includes(tabName.value); |
| | | return ["supplier", "customer"].includes(tabName.value); |
| | | }); |
| | | |
| | | /** |
| | |
| | | customer: "ä¾åºå/è¯å«ç /详ç»å°å", |
| | | coal: "请è¾å
¥æç´¢ä¿¡æ¯", |
| | | coalQualityMaintenance: "请è¾å
¥æç´¢ä¿¡æ¯", |
| | | coalMeiZhiZiDuanWeiHu: "请è¾å
¥æç´¢ä¿¡æ¯" |
| | | coalMeiZhiZiDuanWeiHu: "请è¾å
¥æç´¢ä¿¡æ¯", |
| | | }; |
| | | return placeholderMap[tabName.value] || "请è¾å
¥æç´¢ä¿¡æ¯"; |
| | | }); |
| | |
| | | * æ¯å¦æ¾ç¤ºæç´¢æ¡ |
| | | */ |
| | | const shouldShowSearch = computed(() => { |
| | | return ['supplier', 'customer', 'coal', 'coalQualityMaintenance', 'coalMeiZhiZiDuanWeiHu'].includes(tabName.value); |
| | | return [ |
| | | "supplier", |
| | | "customer", |
| | | "coal", |
| | | "coalQualityMaintenance", |
| | | "coalMeiZhiZiDuanWeiHu", |
| | | ].includes(tabName.value); |
| | | }); |
| | | |
| | | /** |
| | |
| | | * ä¾åºåè¡¨æ ¼åé
ç½® |
| | | */ |
| | | const supplierColumns = ref([ |
| | | {prop: "supplierName", label: "ä¾åºååç§°", minWidth: 100}, |
| | | {prop: "taxpayerId", label: "ç»ä¸äººè¯å«å·", minWidth: 170}, |
| | | { prop: "supplierName", label: "ä¾åºååç§°", minWidth: 100 }, |
| | | { prop: "taxpayerId", label: "ç»ä¸äººè¯å«å·", minWidth: 170 }, |
| | | { |
| | | prop: "bids", |
| | | label: "ç»è¥å°å", |
| | |
| | | formatter: (row) => { |
| | | const addressIds = [row.bprovinceId, row.bcityId, row.bdistrictId]; |
| | | return formatAddressArray(addressIds); |
| | | } |
| | | }, |
| | | }, |
| | | {prop: "businessAddress", label: "ç»è¥è¯¦ç»å°å", minWidth: 150}, |
| | | {prop: "bankAccount", label: "弿·è¡", minWidth: 120}, |
| | | {prop: "bankName", label: "é¶è¡è´¦å·", minWidth: 150}, |
| | | {prop: "contactPerson", label: "è系人", minWidth: 100}, |
| | | { prop: "businessAddress", label: "ç»è¥è¯¦ç»å°å", minWidth: 150 }, |
| | | { prop: "bankAccount", label: "弿·è¡", minWidth: 120 }, |
| | | { prop: "contactPerson", label: "è系人", minWidth: 100 }, |
| | | { |
| | | prop: "cids", |
| | | label: "è系人å°å", |
| | |
| | | formatter: (row) => { |
| | | const addressIds = [row.cprovinceId, row.ccityId, row.cdistrictId]; |
| | | return formatAddressArray(addressIds); |
| | | } |
| | | }, |
| | | }, |
| | | {prop: "contactAddress", label: "è系人详ç»å°å", minWidth: 120}, |
| | | {prop: "updateTime", label: "ç»´æ¤æ¥æ", minWidth: 120}, |
| | | { prop: "contactAddress", label: "è系人详ç»å°å", minWidth: 120 }, |
| | | ]); |
| | | |
| | | /** |
| | | * 客æ·è¡¨æ ¼åé
ç½® |
| | | */ |
| | | const customerColumns = ref([ |
| | | {prop: "customerName", label: "客æ·åç§°", minWidth: 100}, |
| | | {prop: "taxpayerId", label: "ç»ä¸äººè¯å«å·", minWidth: 120}, |
| | | { prop: "customerName", label: "客æ·åç§°", minWidth: 100 }, |
| | | { prop: "taxpayerId", label: "ç»ä¸äººè¯å«å·", minWidth: 120 }, |
| | | { |
| | | prop: "bids", |
| | | label: "ç»è¥å°å", |
| | | minWidth: 150, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => { |
| | | const addressIds = [row.businessProvinceId, row.businessCityId, row.businessDistrictId]; |
| | | const addressIds = [ |
| | | row.businessProvinceId, |
| | | row.businessCityId, |
| | | row.businessDistrictId, |
| | | ]; |
| | | return formatAddressArray(addressIds); |
| | | } |
| | | }, |
| | | }, |
| | | {prop: "businessAddress", label: "详ç»å°å", minWidth: 150}, |
| | | {prop: "bankName", label: "弿·è¡", minWidth: 120}, |
| | | {prop: "bankAccount", label: "é¶è¡è´¦å·", minWidth: 150}, |
| | | {prop: "contactPerson", label: "è系人", minWidth: 100}, |
| | | {prop: "contactPhone", label: "è系人çµè¯", minWidth: 100}, |
| | | { prop: "businessAddress", label: "详ç»å°å", minWidth: 150 }, |
| | | { prop: "bankName", label: "弿·è¡", minWidth: 120 }, |
| | | { prop: "bankAccount", label: "é¶è¡è´¦å·", minWidth: 150 }, |
| | | { prop: "contactPerson", label: "è系人", minWidth: 100 }, |
| | | { prop: "contactPhone", label: "è系人çµè¯", minWidth: 100 }, |
| | | { |
| | | prop: "cids", |
| | | label: "è系人å°å", |
| | |
| | | formatter: (row) => { |
| | | const addressIds = [row.provinceId, row.cityId, row.districtId]; |
| | | return formatAddressArray(addressIds); |
| | | } |
| | | }, |
| | | }, |
| | | {prop: "contactAddress", label: "è系人详ç»å°å", minWidth: 150}, |
| | | {prop: "updateTime", label: "ç»´æ¤æ¥æ", minWidth: 100}, |
| | | { prop: "contactAddress", label: "è系人详ç»å°å", minWidth: 150 }, |
| | | { prop: "updateTime", label: "ç»´æ¤æ¥æ", minWidth: 100 }, |
| | | ]); |
| | | |
| | | /** |
| | | * ç
¤ç§è¡¨æ ¼åé
ç½® |
| | | */ |
| | | const coalColumns = ref([ |
| | | {prop: "coal", label: "ç
¤ç§åç§°", minWidth: 200}, |
| | | { prop: "coal", label: "ç
¤ç§åç§°", minWidth: 200 }, |
| | | { |
| | | prop: "maintainerId", |
| | | label: "ç»´æ¤äºº", |
| | | minWidth: 120, |
| | | formatter: (row, column, cellValue) => { |
| | | if (!userMap.value || Object.keys(userMap.value).length === 0) { |
| | | return '--'; |
| | | return "--"; |
| | | } |
| | | if (cellValue === null || cellValue === undefined || cellValue === '') { |
| | | return '--'; |
| | | if (cellValue === null || cellValue === undefined || cellValue === "") { |
| | | return "--"; |
| | | } |
| | | return userMap.value[cellValue] || '--'; |
| | | } |
| | | return userMap.value[cellValue] || "--"; |
| | | }, |
| | | }, |
| | | {prop: "maintenanceDate", label: "ç»´æ¤æ¥æ", minWidth: 150}, |
| | | { prop: "maintenanceDate", label: "ç»´æ¤æ¥æ", minWidth: 150 }, |
| | | ]); |
| | | |
| | | /** |
| | | * ç
¤è´¨æ¹æ¡è¡¨æ ¼åé
ç½® |
| | | */ |
| | | const coalQualityMaintenanceColumns = ref([ |
| | | {prop: "plan", label: "æ¹æ¡åç§°", minWidth: 100}, |
| | | { prop: "plan", label: "æ¹æ¡åç§°", minWidth: 100 }, |
| | | { |
| | | prop: "fieldIds", |
| | | label: "åæ®µåç§°", |
| | |
| | | slot: true, |
| | | formatter: (row, column, cellValue) => { |
| | | if (Array.isArray(cellValue)) { |
| | | return cellValue.map(item => item); |
| | | return cellValue.map((item) => item); |
| | | } |
| | | return cellValue || '--'; |
| | | } |
| | | return cellValue || "--"; |
| | | }, |
| | | }, |
| | | {prop: "schemeDesc", label: "åæ®µæè¿°", minWidth: 100}, |
| | | { prop: "schemeDesc", label: "åæ®µæè¿°", minWidth: 100 }, |
| | | ]); |
| | | |
| | | /** |
| | | * ç
¤è´¨åæ®µè¡¨æ ¼åé
ç½® |
| | | */ |
| | | const coalMeiZhiZiDuanWeiHuColumns = ref([ |
| | | {prop: "fieldName", label: "åæ®µåç§°", minWidth: 200}, |
| | | {prop: "fieldDescription", label: "åæ®µæè¿°", minWidth: 200}, |
| | | { prop: "fieldName", label: "åæ®µåç§°", minWidth: 200 }, |
| | | { prop: "fieldDescription", label: "åæ®µæè¿°", minWidth: 200 }, |
| | | ]); |
| | | // ===== äºä»¶å¤ç彿° ===== |
| | | |
| | |
| | | coalMeiZhiZiDuanWeiHu: () => { |
| | | columns.value = coalMeiZhiZiDuanWeiHuColumns.value; |
| | | getList(); |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | // æ§è¡å¯¹åºçé
ç½®å½æ° |
| | |
| | | * @description æ ¹æ®æ ç¾é¡µç±»åè®¾ç½®å¼¹çªæ é¢å¹¶æå¼å¼¹çª |
| | | */ |
| | | const handleAddEdit = (currentTabName) => { |
| | | const actionText = addOrEdit.value === "add" ? "æ°å¢" : "ç¼è¾"; |
| | | const actionText = |
| | | addOrEdit.value === "add" |
| | | ? "æ°å¢" |
| | | : addOrEdit.value === "edit" |
| | | ? "ç¼è¾" |
| | | : "æ¥ç"; |
| | | |
| | | const tabTitleMap = { |
| | | supplier: "ä¾åºåä¿¡æ¯", |
| | | customer: "客æ·ä¿¡æ¯", |
| | | coal: "ç
¤ç§ä¿¡æ¯", |
| | | coalQualityMaintenance: "ç
¤è´¨æ¹æ¡ç»´æ¤", |
| | | coalMeiZhiZiDuanWeiHu: "ç
¤è´¨å段维æ¤" |
| | | coalMeiZhiZiDuanWeiHu: "ç
¤è´¨å段维æ¤", |
| | | }; |
| | | |
| | | title.value = `${actionText}${tabTitleMap[currentTabName] || ''}`; |
| | | title.value = `${actionText}${tabTitleMap[currentTabName] || ""}`; |
| | | openDialog(); |
| | | }; |
| | | |
| | |
| | | * @description æ ¹æ®ç¼è¾ç¶æå³å®æ¯å¦å¤å¶è¡¨åæ°æ® |
| | | */ |
| | | const openDialog = () => { |
| | | if (addOrEdit.value === "edit") { |
| | | if (addOrEdit.value === "edit" || addOrEdit.value === "viewRow") { |
| | | copyForm.value = JSON.parse(JSON.stringify(form.value)); |
| | | } else { |
| | | form.value = {}; |
| | |
| | | } |
| | | |
| | | // æå»ºå®¢æ·ä¸å¡å°åæ°ç» |
| | | if (form.value.businessCityId && form.value.businessDistrictId && form.value.businessProvinceId) { |
| | | form.value.bids = [row.businessProvinceId, row.businessCityId, row.businessDistrictId]; |
| | | if ( |
| | | form.value.businessCityId && |
| | | form.value.businessDistrictId && |
| | | form.value.businessProvinceId |
| | | ) { |
| | | form.value.bids = [ |
| | | row.businessProvinceId, |
| | | row.businessCityId, |
| | | row.businessDistrictId, |
| | | ]; |
| | | } |
| | | |
| | | // æå»ºå®¢æ·èç³»å°åæ°ç» |
| | |
| | | }; |
| | | |
| | | /** |
| | | * æ¥çæé®ç¹å»å¤ç |
| | | * @param {Object} row - è¡æ°æ® |
| | | * @description å¤çæ¥çæä½ï¼æå»ºå°åæ°ç»å¹¶æå¼æ¥çå¼¹çª |
| | | */ |
| | | const handleView = (row) => { |
| | | console.log("æ¥çè¡æ°æ®:", row); |
| | | // æ¿å°ææçkeys |
| | | const keys = Object.keys(row); |
| | | console.log("æækeys:", keys); |
| | | showDialog.value = true; |
| | | // form.value = JSON.parse(JSON.stringify(row)); |
| | | // console.log("æ¥çè¡æ°æ®:", form.value); |
| | | // // æå»ºä¾åºåä¸å¡å°åæ°ç» |
| | | // if (form.value.bprovinceId && form.value.bdistrictId && form.value.bcityId) { |
| | | // form.value.bids = [row.bprovinceId, row.bcityId, row.bdistrictId]; |
| | | // } |
| | | // // æå»ºä¾åºåèç³»å°åæ°ç» |
| | | // if (form.value.cprovinceId && form.value.cdistrictId && form.value.ccityId) { |
| | | // form.value.cids = [row.cprovinceId, row.ccityId, row.cdistrictId]; |
| | | // } |
| | | // // æå»ºå®¢æ·ä¸å¡å°åæ°ç» |
| | | // if ( |
| | | // form.value.businessCityId && |
| | | // form.value.businessDistrictId && |
| | | // form.value.businessProvinceId |
| | | // ) { |
| | | // form.value.bids = [ |
| | | // row.businessProvinceId, |
| | | // row.businessCityId, |
| | | // row.businessDistrictId, |
| | | // ]; |
| | | // } |
| | | |
| | | // // æå»ºå®¢æ·èç³»å°åæ°ç» |
| | | // if (form.value.cityId && form.value.districtId && form.value.provinceId) { |
| | | // form.value.cids = [row.provinceId, row.cityId, row.districtId]; |
| | | // } |
| | | |
| | | // addOrEdit.value = "viewRow"; |
| | | // handleAddEdit(tabName.value); |
| | | }; |
| | | |
| | | /** |
| | | * æ¹éå é¤å¤ç |
| | | * @description æ¹éå é¤éä¸çè®°å½ |
| | | */ |
| | |
| | | return; |
| | | } |
| | | |
| | | const deleteIds = selectedRows.value.map(item => item.id); |
| | | const deleteIds = selectedRows.value.map((item) => item.id); |
| | | |
| | | try { |
| | | await ElMessageBox.confirm("ç¡®å®å é¤éä¸çæ°æ®åï¼", "æç¤º", { |
| | |
| | | supplier: delSupply, |
| | | coal: delCoalInfo, |
| | | coalQualityMaintenance: () => { |
| | | throw new Error('delCoalQuality API not imported'); |
| | | throw new Error("delCoalQuality API not imported"); |
| | | }, |
| | | customer: delCustomer, |
| | | coalMeiZhiZiDuanWeiHu: deleteCoalField |
| | | coalMeiZhiZiDuanWeiHu: deleteCoalField, |
| | | }; |
| | | |
| | | const deleteApi = deleteApiMap[tabName.value]; |
| | |
| | | ElMessage.error("å 餿¥å£æªé
ç½®"); |
| | | return; |
| | | } |
| | | console.log(deleteIds) |
| | | console.log(deleteIds); |
| | | const res = await deleteApi(deleteIds); |
| | | |
| | | if (res.code !== 200 && res.msg !== "æä½æå") { |
| | |
| | | ElMessage.success("å 餿å"); |
| | | await getList(); |
| | | } catch (error) { |
| | | if (error.message !== 'cancel') { |
| | | console.error('å 餿ä½å¤±è´¥:', error); |
| | | if (error.message !== "cancel") { |
| | | console.error("å 餿ä½å¤±è´¥:", error); |
| | | ElMessage.error("å é¤å¤±è´¥ï¼è¯·ç¨ååè¯"); |
| | | } else { |
| | | ElMessage.info("已忶å 餿ä½"); |
| | |
| | | */ |
| | | const handleExport = () => { |
| | | const exportConfig = { |
| | | supplier: {api: "/supply/export", name: "ä¾åºåä¿¡æ¯"}, |
| | | customer: {api: "/customer/export", name: "客æ·ä¿¡æ¯"}, |
| | | coal: {api: "/supply/export", name: "ç
¤ç§ä¿¡æ¯"}, |
| | | coalQualityMaintenance: {api: "/supply/export", name: "ç
¤è´¨ç»´æ¤ä¿¡æ¯"} |
| | | supplier: { api: "/supply/export", name: "ä¾åºåä¿¡æ¯" }, |
| | | customer: { api: "/customer/export", name: "客æ·ä¿¡æ¯" }, |
| | | coal: { api: "/supply/export", name: "ç
¤ç§ä¿¡æ¯" }, |
| | | coalQualityMaintenance: { api: "/supply/export", name: "ç
¤è´¨ç»´æ¤ä¿¡æ¯" }, |
| | | }; |
| | | |
| | | const config = exportConfig[tabName.value]; |
| | |
| | | * @param {string} name - å¯¼åºæä»¶ååç¼ |
| | | */ |
| | | const exportData = (api, name) => { |
| | | proxy.download(api, {...queryParams}, `${name}${new Date().getTime()}.xlsx`); |
| | | proxy.download( |
| | | api, |
| | | { ...queryParams }, |
| | | `${name}${new Date().getTime()}.xlsx` |
| | | ); |
| | | ElMessage.success("å¯¼åºæ°æ®ï¼" + name); |
| | | }; |
| | | // ===== æ°æ®è·å彿° ===== |
| | |
| | | customer: () => getCustomerList(apiParams), |
| | | coal: () => getCoalInfo(apiParams), |
| | | coalQualityMaintenance: () => getCoalPlanList(apiParams), |
| | | coalMeiZhiZiDuanWeiHu: () => coalField(apiParams) |
| | | coalMeiZhiZiDuanWeiHu: () => coalField(apiParams), |
| | | }; |
| | | |
| | | const apiFunction = apiMap[tabName.value]; |
| | | return apiFunction ? apiFunction() : Promise.reject(new Error('æªæ¾å°å¯¹åºçAPIæ¥å£')); |
| | | return apiFunction |
| | | ? apiFunction() |
| | | : Promise.reject(new Error("æªæ¾å°å¯¹åºçAPIæ¥å£")); |
| | | }; |
| | | |
| | | /** |
| | |
| | | const getList = async () => { |
| | | try { |
| | | loading.value = true; |
| | | const {data, code} = await selectInterface(); |
| | | const { data, code } = await selectInterface(); |
| | | |
| | | if (code !== 200) { |
| | | ElMessage.error("è·åæ°æ®å¤±è´¥ï¼" + (data?.msg || 'æªç¥é误')); |
| | | ElMessage.error("è·åæ°æ®å¤±è´¥ï¼" + (data?.msg || "æªç¥é误")); |
| | | return; |
| | | } |
| | | |
| | | tableData.value = data.records || []; |
| | | total.value = data.total || 0; |
| | | } catch (error) { |
| | | console.error('è·ååè¡¨æ°æ®å¤±è´¥:', error); |
| | | console.error("è·ååè¡¨æ°æ®å¤±è´¥:", error); |
| | | ElMessage.error("è·åæ°æ®å¤±è´¥ï¼è¯·ç¨ååè¯"); |
| | | } finally { |
| | | loading.value = false; |
| | |
| | | try { |
| | | // å¹¶è¡æ§è¡åå§åæä½ |
| | | await Promise.all([ |
| | | handleTabClick({props: {name: "supplier"}}), |
| | | handleTabClick({ props: { name: "supplier" } }), |
| | | fetchAreaOptions(), |
| | | getUserList() |
| | | getUserList(), |
| | | ]); |
| | | } catch (error) { |
| | | console.error('ç»ä»¶åå§å失败:', error); |
| | | console.error("ç»ä»¶åå§å失败:", error); |
| | | ElMessage.error("页é¢åå§å失败ï¼è¯·å·æ°éè¯"); |
| | | } |
| | | }); |
| | |
| | | .main-container { |
| | | background: red !important; |
| | | } |
| | | </style> |
| | | </style> |