¶Ô±ÈÐÂÎļþ |
| | |
| | | // ç
¤è´¨ç»´æ¤ |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥è¯¢ç
¤è´¨ç»´æ¤å表 |
| | | export function getCoalInfo(query) { |
| | | return request({ |
| | | url: '/coalInfo/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // æ°å¢æç¼è¾ç
¤è´¨ç»´æ¤ |
| | | export function addOrEditCoalInfo(query) { |
| | | return request({ |
| | | url: '/coalInfo/addOrEditCoalInfo', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // ç
¤è´¨ç»´æ¤ |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥è¯¢ç
¤è´¨ç»´æ¤æ°æ®å表 |
| | | export function getCoalQuality(query) { |
| | | return request({ |
| | | url: '/coalQuality/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ°å¢æç¼è¾ç
¤è´¨ç»´æ¤ |
| | | export function addOrEditCoalQuality(query){ |
| | | return request({ |
| | | url: '/coalQuality/addOrEditCoalQuality', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // ä¾åºåæ°æ® |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥è¯¢ä¾åºåæ°æ®å表 |
| | | export function getSupply(query) { |
| | | return request({ |
| | | url: '/supply/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // 墿¹ä¾åºåæ°æ® |
| | | export function addOrEditSupply(query){ |
| | | return request({ |
| | | url: '/supply/addOrEditSupply', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // å é¤ä¾åºåæ°æ® |
| | | export function delSupply(query){ |
| | | return request({ |
| | | url: '/supply/delSupply', |
| | | method: 'delete', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="tableData" |
| | | style="width: 100%" |
| | | :border="border" |
| | | :show-selection="showSelection" |
| | | :max-height="maxHeight" |
| | |
| | | v-bind="col" |
| | | :show-overflow-tooltip="shouldShowTooltip(col, tableData)" |
| | | :formatter="(row, column, cellValue) => cellValue == null || cellValue === '' ? '--' : cellValue" |
| | | align="center" |
| | | > |
| | | <template v-if="col.slot" #default> |
| | | <slot></slot> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-table v-loading="loading" :data="tableData" :border="border" :show-selection="showSelection" :height="height" :max-height="maxHeight" |
| | | :header-cell-style="{ background: '#EBEEF5', color: '#3D3D3D' }" @selection-change="handleSelectionChange" |
| | | @row-click="handleRowClick" @row-dblclick="handleRowDblClick" :row-class-name="tableRowClassName" @cell-click="handleCellClick" :max-width="maxWidth" |
| | | @export="handleExport"> |
| | | <el-table-column v-if="showSelection" type="selection" width="55" align="center" /> |
| | | <el-table-column v-if="showIndex" label="åºå·" type="index" width="60" align="center" /> <template |
| | | v-for="col in columns" :key="col.prop"> |
| | | <el-table-column v-bind="col" :show-overflow-tooltip="shouldShowTooltip(col, tableData)" align="center"> <template |
| | | #default="scope"> |
| | | <template v-if="col.slot"> |
| | | <slot></slot> |
| | | </template> |
| | | <template v-else> |
| | | <div class="cell-edit" @dblclick="handleCellEdit(scope.row, col.prop)" |
| | | :class="{'editable': isColumnEditable(col.prop)}"> <span |
| | | v-if="!scope.row.editing || !scope.row.editing[col.prop]" class="cell-text"> |
| | | {{ scope.row[col.prop] == null || scope.row[col.prop] === '' ? '--' : scope.row[col.prop] }} |
| | | </span> |
| | | <el-input v-else v-model="scope.row[col.prop]" size="small" |
| | | @focus="handleCellFocus(scope.row, col.prop, $event)" @blur="handleCellSave(scope.row, col.prop)" |
| | | @keyup.enter="handleCellSave(scope.row, col.prop)" class="cell-input" /> |
| | | </div> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | <!-- æä½å --> |
| | | <el-table-column v-if="showOperations" :label="operationsLabel" :width="operationsWidth" fixed="right" align="center"> |
| | | <template #default="scope"> |
| | | <slot name="operations" :row="scope.row"> |
| | | <el-button v-if="operations.includes('edit')" link type="primary" size="small" |
| | | @click="handleEdit(scope.row)">ç¼è¾</el-button> |
| | | <!-- <el-button--> |
| | | <!-- v-if="operations.includes('delete')"--> |
| | | <!-- link--> |
| | | <!-- type="danger"--> |
| | | <!-- size="small"--> |
| | | <!-- @click="handleDelete(scope.row)"--> |
| | | <!-- >å é¤</el-button>--> |
| | | </slot> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { defineEmits, nextTick } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | const props = defineProps({ |
| | | // è·åè¡æ ·å¼ |
| | | tableRowClassName: { |
| | | type: Function, |
| | | default: () => '' |
| | | }, |
| | | // è·åé«åº¦ |
| | | height: { |
| | | type: [String, Number], |
| | | default: 'auto' |
| | | }, |
| | | // æ¯å¦å
许ç¼è¾åå
æ ¼ |
| | | editableCells: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // æå®å¯ç¼è¾çåï¼å¦æä¸ºç©ºæ°ç»å表示ææåé½ä¸å¯ç¼è¾ |
| | | editableColumns: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | // æå¤§å®½åº¦ |
| | | maxWidth: { |
| | | type: [String, Number], |
| | | default: 'auto' |
| | | }, |
| | | handleCellClick: { |
| | | type: Function, |
| | | default: () => { } |
| | | }, |
| | | handleRowClick: { |
| | | type: Function, |
| | | default: () => { } |
| | | }, |
| | | handleExport: { |
| | | type: Function, |
| | | default: () => { } |
| | | }, |
| | | handleRowDblClick: { |
| | | type: Function, |
| | | default: () => { } |
| | | }, |
| | | // é«åº¦ |
| | | maxHeight: { |
| | | type: [String, Number], |
| | | default: 'auto' |
| | | }, |
| | | // å è½½ç¶æ |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // border |
| | | border: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // è¡¨æ ¼æ°æ® |
| | | tableData: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºéæ©å |
| | | showSelection: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºåºå·å |
| | | showIndex: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // åé
ç½® |
| | | columns: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºæä½å |
| | | showOperations: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // æä½åæ ç¾ |
| | | operationsLabel: { |
| | | type: String, |
| | | default: 'æä½' |
| | | }, |
| | | // æä½å宽度 |
| | | operationsWidth: { |
| | | type: [String, Number], |
| | | default: 100 |
| | | }, |
| | | // æ¾ç¤ºåªäºæä½æé® |
| | | operations: { |
| | | type: Array, |
| | | default: () => ['edit', 'delete', 'export'] |
| | | }, |
| | | // å é¤ç¡®è®¤ä¿¡æ¯ |
| | | deleteConfirmText: { |
| | | type: String, |
| | | default: '确认å é¤è¯¥è®°å½ï¼' |
| | | } |
| | | }) |
| | | // æ£æ¥åæ¯å¦éè¦æ¾ç¤ºtooltip |
| | | const shouldShowTooltip = (col, data) => { |
| | | // å¦ææ²¡æpropï¼ç´æ¥è¿åfalse |
| | | if (!col.prop) return false; |
| | | // æ£æ¥è¯¥åå¨æææ°æ®ä¸æ¯å¦æéç©ºå¼ |
| | | return data.some(row => row[col.prop] != null && row[col.prop] !== ''); |
| | | }; |
| | | |
| | | // å¤çåå
æ ¼ç¼è¾ |
| | | const handleCellEdit = (row, prop) => { |
| | | // 妿ä¸å
许ç¼è¾åå
æ ¼ï¼ç´æ¥è¿å |
| | | if (!props.editableCells) return; |
| | | |
| | | // 妿æå®äºå¯ç¼è¾åï¼ä¸å½ååä¸å¨å¯ç¼è¾åä¸ï¼åä¸å
许ç¼è¾ |
| | | if (props.editableColumns.length > 0 && !props.editableColumns.includes(prop)) return; |
| | | |
| | | // åå§åediting对象 |
| | | if (!row.editing) { |
| | | row.editing = {}; |
| | | } |
| | | // 设置å½ååå
æ ¼ä¸ºç¼è¾ç¶æ |
| | | row.editing[prop] = true; |
| | | |
| | | // å¨ä¸ä¸ä¸ªDOMæ´æ°å¨æï¼è®©è¾å
¥æ¡è·å¾ç¦ç¹å¹¶éä¸å
容 |
| | | setTimeout(() => { |
| | | const inputElement = document.querySelector('.cell-edit .el-input__inner'); |
| | | if (inputElement) { |
| | | inputElement.focus(); |
| | | inputElement.select(); |
| | | } |
| | | }, 10); |
| | | } |
| | | |
| | | // å¤çåå
æ ¼ä¿å |
| | | const handleCellSave = (row, prop) => { |
| | | // å
³éç¼è¾ç¶æ |
| | | row.editing[prop] = false; |
| | | // 触ååå
æ ¼ç¼è¾å®æäºä»¶ |
| | | emit('cell-edit', row, prop, row[prop]); |
| | | } |
| | | // å¤çåå
æ ¼èç¦äºä»¶ |
| | | const handleCellFocus = (row, prop, event) => { |
| | | // 妿ä¸å
许ç¼è¾åå
æ ¼ï¼ç´æ¥è¿å |
| | | if (!props.editableCells) return; |
| | | |
| | | // 妿æå®äºå¯ç¼è¾åï¼ä¸å½ååä¸å¨å¯ç¼è¾åä¸ï¼åä¸å
许ç¼è¾ |
| | | if (props.editableColumns.length > 0 && !props.editableColumns.includes(prop)) return; |
| | | |
| | | // åå§åediting对象 |
| | | if (!row.editing) { |
| | | row.editing = {}; |
| | | } |
| | | // 设置å½ååå
æ ¼ä¸ºç¼è¾ç¶æ |
| | | row.editing[prop] = true; |
| | | |
| | | // èªå¨å
¨éè¾å
¥æ¡å
容 |
| | | if (event && event.target) { |
| | | event.target.select(); |
| | | } |
| | | } |
| | | // 夿忝å¦å¯ç¼è¾ |
| | | const isColumnEditable = (prop) => { |
| | | if (props.editableColumns.length === 0) { |
| | | return props.editableCells; |
| | | } |
| | | return props.editableColumns.includes(prop); |
| | | } |
| | | |
| | | // å¤çéæ©ååãç¼è¾ãå é¤åå¯¼åºæä½ |
| | | const emit = defineEmits(['selection-change', 'edit', 'delete', 'export', 'cell-edit']) |
| | | const handleSelectionChange = (selection) => { |
| | | emit('selection-change', selection) |
| | | } |
| | | const handleEdit = (row) => { |
| | | emit('edit', row) |
| | | } |
| | | const handleExport = (row) => { |
| | | emit('export', row) |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .el-table { |
| | | margin: 20px 0 !important; |
| | | } |
| | | |
| | | :deep(.el-table th) { |
| | | background-color: #f5f7fa; |
| | | } |
| | | |
| | | :deep(.cell-edit) { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | | } |
| | | |
| | | :deep(.cell-edit .cell-text) { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | |
| | | :deep(.cell-edit.editable:hover .cell-text) { |
| | | color: #409EFF; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | :deep(.cell-input) { |
| | | width: 80%; |
| | | max-width: 120px; |
| | | min-width: 60px; |
| | | } |
| | | |
| | | :deep(.cell-input .el-input__inner) { |
| | | border-radius: 4px; |
| | | text-align: center; |
| | | transition: all 0.2s; |
| | | } |
| | | |
| | | |
| | | /* ååºå¼æ ·å¼ */ |
| | | @media screen and (max-width: 768px) { |
| | | :deep(.el-table) { |
| | | width: 100%; |
| | | overflow-x: auto; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :inline="true" :model="queryParams" class="search-form"> |
| | | <el-form-item label="æç´¢"> |
| | | <el-input |
| | | v-model="queryParams.searchText" |
| | | placeholder="请è¾å
¥å
³é®è¯" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾åºååç§°"> |
| | | <el-input |
| | | v-model="queryParams.supplierName" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ä¸äººè¯å«å·"> |
| | | <el-input |
| | | v-model="queryParams.identifyNumber" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è¥å°å"> |
| | | <el-input |
| | | v-model="queryParams.address" |
| | | placeholder="请è¾å
¥" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="handleQuery">æ¥è¯¢</el-button> |
| | | <el-button @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-form :inline="true" :model="queryParams" class="search-form"> |
| | | <el-form-item label="ä¾åºååç§°"> |
| | | <el-input v-model="queryParams.searchAll" placeholder="请è¾å
¥å
³é®è¯" clearable /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="getList">æ¥è¯¢</el-button> |
| | | <el-button @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | </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 type="primary" :icon="Plus" @click="handleAdd" |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button type="primary" :icon="Plus" @click="handleAdd">æ°å»º</el-button> |
| | | <el-button type="danger" :icon="Delete" @click="handleDelete">å é¤</el-button> |
| | | <el-button type="info" :icon="Download" @click="handleExport">导åº</el-button> |
| | | </el-row> |
| | | </el-row> |
| | | <!-- è¡¨æ ¼ç»ä»¶ --> |
| | | <div> |
| | | <data-table |
| | | :loading="loading" |
| | | :table-data="tableData" |
| | | :columns="columns" |
| | | @selection-change="handleSelectionChange" |
| | | @edit="handleEdit" |
| | | @delete="handleDeleteSuccess" |
| | | :show-selection="true" |
| | | :border="true" |
| | | :maxHeight="480" |
| | | /> |
| | | </div> |
| | | <pagination |
| | | v-if="total>0" |
| | | :page-num="pageNum" |
| | | :page-size="pageSize" |
| | | :total="total" |
| | | @pagination="handleQuery" |
| | | :layout="'total, prev, pager, next, jumper'" |
| | | /> |
| | | <Supplier |
| | | v-if="tabName === 'supplier'" |
| | | v-model:supplierDialogFormVisible="dialogFormVisible" |
| | | :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit" |
| | | @beforeClose="handleBeforeClose" |
| | | @update:dialogFormVisible="handleDialogFormVisible" |
| | | :addOrEdit="addOrEdit" |
| | | /> |
| | | <Customer |
| | | v-if="tabName === 'customer'" |
| | | v-model:customerDialogFormVisible="dialogFormVisible" |
| | | :form="form" |
| | | :title="title" |
| | | @submit="handleSubmit" |
| | | :addOrEdit="addOrEdit" |
| | | @beforeClose="handleBeforeClose" |
| | | /> |
| | | <Coal |
| | | v-if="tabName === 'coal'" |
| | | v-model:coalDialogFormVisible="dialogFormVisible" |
| | | :form="form" |
| | | :title="title" |
| | | :addOrEdit="addOrEdit" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <coalQualityMaintenance |
| | | v-if="tabName === 'coalQualityMaintenance'" |
| | | v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" |
| | | :form="form" |
| | | :title="title" |
| | | :addOrEdit="addOrEdit" |
| | | @submit="handleSubmit" |
| | | /> |
| | | <data-table :loading="loading" :table-data="tableData" :columns="columns" |
| | | @selection-change="handleSelectionChange" @edit="handleEdit" :show-selection="true" :border="true" /> |
| | | </div> <pagination v-if="total>0" :page="pageNum" :limit="pageSizes" :total="total" @pagination="handPagination" |
| | | :layout="'total, prev, pager, next, jumper'" /> |
| | | <Supplier v-if="tabName === 'supplier'" v-model:supplierDialogFormVisible="dialogFormVisible" :form="form" |
| | | :title="title" @submit="handleSubmit" @beforeClose="handleBeforeClose" |
| | | @update:dialogFormVisible="handleDialogFormVisible" :addOrEdit="addOrEdit" /> |
| | | <Customer v-if="tabName === 'customer'" v-model:customerDialogFormVisible="dialogFormVisible" :form="form" |
| | | :title="title" @submit="handleSubmit" :addOrEdit="addOrEdit" @beforeClose="handleBeforeClose" /> |
| | | <Coal v-if="tabName === 'coal'" v-model:coalDialogFormVisible="dialogFormVisible" :form="form" :title="title" |
| | | :addOrEdit="addOrEdit" @submit="handleSubmit" /> |
| | | <coalQualityMaintenance v-if="tabName === 'coalQualityMaintenance'" |
| | | v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" :form="form" :title="title" |
| | | :addOrEdit="addOrEdit" @submit="handleSubmit" /> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | |
| | | import Coal from "./mould/coal.vue"; |
| | | import coalQualityMaintenance from "./mould/coalQualityMaintenance.vue"; |
| | | const { proxy } = getCurrentInstance() |
| | | import { getSupply, addOrEditSupply, delSupply } from "@/api/basicInformation/supplier.js"; |
| | | import { getCoalInfo, addOrEditCoalInfo } from "@/api/basicInformation/coal.js"; |
| | | import { getCoalQuality, addOrEditCoalQuality } from "@/api/basicInformation/coalQualityMaintenance.js"; |
| | | // å¼¹çª |
| | | const coalQualityMaintenanceDialogFormVisible = ref(false); |
| | | const customerDialogFormVisible = ref(false); |
| | |
| | | const loading = ref(false); |
| | | const total = ref(0); |
| | | const pageNum = ref(1); |
| | | const pageSize = ref(10); |
| | | const pageSizes = ref(10); |
| | | const activeTab = ref("supplier"); |
| | | const selectedRows = ref([]); |
| | | // æ¥è¯¢åæ° |
| | |
| | | const addOrEdit = ref("add"); |
| | | // è¡¨æ ¼æ°æ® |
| | | const tableData = ref([]); |
| | | // æ¹æ³å®ä¹ |
| | | // æ¥è¯¢æ¹æ³ |
| | | const handleQuery = () => { |
| | | loading.value = true; |
| | | setTimeout(() => { |
| | | loading.value = false; |
| | | }, 500); |
| | | |
| | | }; |
| | | // supplier ä¾åºåæ°æ® |
| | | const supplierColumns = ref([ |
| | | { prop: "supplierName", label: "ä¾åºååç§°", minWidth: 200 }, |
| | | { prop: "identifyNumber", label: "ç»ä¸äººè¯å«å·", minWidth: 120 }, |
| | | { prop: "address", label: "ç»è¥å°å", minWidth: 150 }, |
| | | { prop: "detailedaddress", label: "详ç»å°å", minWidth: 150 }, |
| | | { prop: "bank", label: "弿·è¡", minWidth: 120 }, |
| | | { prop: "bankAccount", label: "é¶è¡è´¦å·", minWidth: 150 }, |
| | | { prop: "contacts", label: "è系人", minWidth: 100 }, |
| | | { prop: "taxpayerId", label: "ç»ä¸äººè¯å«å·", minWidth: 120 }, |
| | | { prop: "businessAddress", label: "ç»è¥å°å", minWidth: 150 }, |
| | | { prop: "bids", label: "详ç»å°å", minWidth: 150 }, |
| | | { prop: "bankAccount", label: "弿·è¡", minWidth: 120 }, |
| | | { prop: "bankName", label: "é¶è¡è´¦å·", minWidth: 150 }, |
| | | { prop: "contactPerson", label: "è系人", minWidth: 100 }, |
| | | { prop: "contactAddress", label: "èç³»å°å", minWidth: 150 }, |
| | | { prop: "maintainer", label: "ç»´æ¤äºº", minWidth: 100 }, |
| | | { prop: "maintainDate", label: "ç»´æ¤æ¥æ", minWidth: 100 }, |
| | | { prop: "createTime", label: "ç»´æ¤æ¥æ", minWidth: 100 }, |
| | | ]); |
| | | // customer å®¢æ·æ°æ® |
| | | const customerColumns = ref([ |
| | |
| | | // coal ç
¤ç§æ°æ® |
| | | const coalColumns = ref([ |
| | | { prop: "coalName", label: "ç
¤ç§åç§°", minWidth: 200 }, |
| | | { prop: "maintainer", label: "ç»´æ¤äºº", minWidth: 120 }, |
| | | { prop: "maintainerId", label: "ç»´æ¤äºº", minWidth: 120 }, |
| | | { prop: "maintenanceDate", label: "ç»´æ¤æ¥æ", minWidth: 150 }, |
| | | ]); |
| | | // coalQualityMaintenance ç
¤è´¨ç»´æ¤æ°æ® |
| | |
| | | // æ ç¾é¡µç¹å» |
| | | const handleTabClick = (tab) => { |
| | | form.value = {}; |
| | | getList(); |
| | | addOrEdit.value = "add"; |
| | | loading.value = true; |
| | | tabName.value = tab.props.name; |
| | | tableData.value = []; |
| | | getList(); |
| | | switch (tabName.value) { |
| | | case "supplier": |
| | | columns.value = supplierColumns.value; |
| | | dialogFormVisible.value = supplierDialogFormVisible.value; |
| | | getList("supplier"); |
| | | break; |
| | | case "customer": |
| | | columns.value = customerColumns.value; |
| | | dialogFormVisible.value = customerDialogFormVisible.value; |
| | | getList("customer"); |
| | | |
| | | break; |
| | | case "coal": |
| | | columns.value = coalColumns.value; |
| | | dialogFormVisible.value = coalDialogFormVisible.value; |
| | | getList("coal"); |
| | | break; |
| | | case "coalQualityMaintenance": |
| | | columns.value = coalQualityMaintenanceColumns.value; |
| | | dialogFormVisible.value = coalQualityMaintenanceDialogFormVisible.value; |
| | | getList("coalQualityMaintenance"); |
| | | break; |
| | | } |
| | | setTimeout(() => { |
| | | loading.value = false; |
| | | }, 500); |
| | | }; |
| | | // éç½®æ¥è¯¢ |
| | | const resetQuery = () => { |
| | | Object.keys(queryParams).forEach((key) => { |
| | | if (key !== "pageNum" && key !== "pageSize") { |
| | | if (key !== "pageNum" && key !== "pageSizes") { |
| | | queryParams[key] = ""; |
| | | } |
| | | }); |
| | | handleQuery(); |
| | | }; |
| | | // æ°å¢ |
| | | const handleAdd = () => { |
| | |
| | | form.value = {}; |
| | | dialogFormVisible.value = true; |
| | | }; |
| | | // æäº¤è¡¨å |
| | | const handleSubmit = () => { |
| | | // æ¿å°æäº¤æ°æ® |
| | | dialogFormVisible.value = false; |
| | | if (addOrEdit.value === "add") { |
| | | ElMessage.success("æ°å¢æåï¼" + copyForm.value.supplierName); |
| | | } else { |
| | | ElMessage.success("ç¼è¾æåï¼" + copyForm.value.supplierName); |
| | | } |
| | | // å页 |
| | | const handPagination = (val) => { |
| | | console.log("å页忰ï¼", val); |
| | | pageNum.value = val.page; |
| | | pageSizes.value = val.limit; |
| | | getList(); |
| | | }; |
| | | // æäº¤è¡¨å |
| | | const handleSubmit = async (val) => { |
| | | console.log(val) |
| | | if (val.code !== 200) { |
| | | ElMessage.error("æä½å¤±è´¥ï¼" + result.msg); |
| | | return; |
| | | } |
| | | ElMessage.success("æ°å¢æåï¼" + result.msg); |
| | | dialogFormVisible.value = false; |
| | | }; |
| | | const handleDialogFormVisible = (value) => { |
| | | dialogFormVisible.value = value; |
| | |
| | | }; |
| | | // ç¼è¾ |
| | | const handleEdit = (row) => { |
| | | form.value = JSON.parse(JSON.stringify(row)); |
| | | addOrEdit.value = "edit"; |
| | | handleAddEdit(tabName.value); |
| | | form.value = JSON.parse(JSON.stringify(row)); |
| | | addOrEdit.value = "edit"; |
| | | handleAddEdit(tabName.value); |
| | | }; |
| | | // æ¹éå é¤ |
| | | const handleDelete = () => { |
| | |
| | | ElMessage.warning("è¯·éæ©è¦å é¤çæ°æ®"); |
| | | return; |
| | | } |
| | | let arr = reactive([]); |
| | | selectedRows.value.forEach(element => { |
| | | return arr.push(element.id); |
| | | }); |
| | | console.log("éä¸çæ°æ®IDï¼", arr); |
| | | ElMessageBox.confirm("ç¡®å®å é¤éä¸çæ°æ®åï¼", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | ElMessage.success("å 餿åï¼å
±å é¤" + selectedRows.value.length + "æ¡æ°æ®"); |
| | | selectedRows.value.forEach((row) => { |
| | | tableData.value = tableData.value.filter( |
| | | (item) => item !== row |
| | | ); |
| | | }); |
| | | total.value = tableData.value.length; |
| | | // æ¸
空éä¸è¡ |
| | | selectedRows.value = []; |
| | | }).catch(() => { |
| | | ElMessage.info("已忶å 餿ä½"); |
| | | }); |
| | | .then(async () => { |
| | | try { |
| | | let res = await delSupply(arr) |
| | | console.log(res) |
| | | selectedRows.value = []; |
| | | getlist() |
| | | } catch { |
| | | ElMessage.error("å é¤å¤±è´¥ï¼è¯·ç¨ååè¯"); |
| | | return; |
| | | } |
| | | }).catch(() => { |
| | | ElMessage.info("已忶å 餿ä½"); |
| | | }); |
| | | } |
| | | // è¡¨æ ¼å é¤ |
| | | const handleDeleteSuccess = (row) => { |
| | | ElMessage.success("å 餿åï¼" + row.supplierName); |
| | | }; |
| | | // å
³éå¼¹çª |
| | | const handleBeforeClose = () => { |
| | | dialogFormVisible.value = false; |
| | |
| | | }, `post_${new Date().getTime()}.xlsx`) |
| | | ElMessage.success("å¯¼åºæ°æ®ï¼" + row.supplierName); |
| | | }; |
| | | const getList = () => { |
| | | // éæ©æ¥å£ |
| | | const selectInterface = () => { |
| | | if (tabName.value === "supplier") { |
| | | return getSupply({ |
| | | current: pageNum.value, |
| | | pageSize: pageSizes.value, |
| | | searchAll: queryParams.searchAll, |
| | | }); |
| | | } else if (tabName.value === "customer") { |
| | | return getSupply({ |
| | | current: pageNum.value, |
| | | pageSize: pageSizes.value, |
| | | ...queryParams |
| | | }); |
| | | } else if (tabName.value === "coal") { |
| | | console.log(addOrEdit.value) |
| | | return getCoalInfo(); |
| | | } else if (tabName.value === "coalQualityMaintenance") { |
| | | return getCoalQuality({ |
| | | current: pageNum.value, |
| | | pageSize: pageSizes.value, |
| | | ...queryParams |
| | | }); |
| | | } |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | |
| | | setTimeout(() => { |
| | | // ææ¶å¼å
¥æµè¯æ°æ® |
| | | tableData.value = [ |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "123412123123123111", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | contactsPhone: "19345678901", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "123412123123123111", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | contactsPhone: "19345678901", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "123412123123123111", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | contactsPhone: "19345678901", |
| | | }, |
| | | { |
| | | supplierName: "交éé¶è¡è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "042-26881314", |
| | | address: "æ±è¥¿ç", |
| | | bank: "å¹³å®é¶è¡", |
| | | bankAccount: "123456789012345678", |
| | | contacts: "å¨ç½ç", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "å¨ç½ç", |
| | | maintainDate: "2022-08-29", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "019-65851198", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | }, |
| | | { |
| | | supplierName: "交éé¶è¡è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "042-26881314", |
| | | address: "æ±è¥¿ç", |
| | | bank: "å¹³å®é¶è¡", |
| | | bankAccount: "123456789012345678", |
| | | contacts: "å¨ç½ç", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "å¨ç½ç", |
| | | maintainDate: "2022-08-29", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "019-65851198", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | }, |
| | | { |
| | | supplierName: "交éé¶è¡è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "042-26881314", |
| | | address: "æ±è¥¿ç", |
| | | bank: "å¹³å®é¶è¡", |
| | | bankAccount: "123456789012345678", |
| | | contacts: "å¨ç½ç", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "å¨ç½ç", |
| | | maintainDate: "2022-08-29", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "019-65851198", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | }, |
| | | { |
| | | supplierName: "交éé¶è¡è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "042-26881314", |
| | | address: "æ±è¥¿ç", |
| | | bank: "å¹³å®é¶è¡", |
| | | bankAccount: "123456789012345678", |
| | | contacts: "å¨ç½ç", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "å¨ç½ç", |
| | | maintainDate: "2022-08-29", |
| | | }, |
| | | { |
| | | supplierName: "ä¸å½å¶éç§å·¥è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "019-65851198", |
| | | address: "山西ç", |
| | | bank: "交éé¶è¡", |
| | | bankAccount: "901234567890123456", |
| | | contacts: "æéªè¹", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "æéªè¹", |
| | | maintainDate: "2022-09-26", |
| | | }, |
| | | { |
| | | supplierName: "交éé¶è¡è¡ä»½æéå
¬å¸", |
| | | identifyNumber: "042-26881314", |
| | | address: "æ±è¥¿ç", |
| | | bank: "å¹³å®é¶è¡", |
| | | bankAccount: "123456789012345678", |
| | | contacts: "å¨ç½ç", |
| | | contactAddress: "XXçXXå¸XXåºXXè·¯", |
| | | maintainer: "å¨ç½ç", |
| | | maintainDate: "2022-08-29", |
| | | }, |
| | | ]; |
| | | total.value = tableData.value.length; |
| | | loading.value = false; |
| | | }, 500); |
| | | let { data, code } = await selectInterface() |
| | | console.log(data) |
| | | tableData.value = data.records; |
| | | total.value = data.total; |
| | | loading.value = false; |
| | | }; |
| | | getList(); |
| | | </script> |
| | | |
| | | <style scoped> |
| | |
| | | width: 50%; |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1200px) { |
| | | .search-form :deep(.el-form-item) { |
| | | width: 16%; |
| | | } |
| | | } |
| | | |
| | | .table-toolbar { |
| | | margin-bottom: 20px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | } |
| | | |
| | | /* ååºå¼è¡¨æ ¼ */ |
| | | @media screen and (max-width: 768px) { |
| | | .table-toolbar { |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .table-toolbar .el-button { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | /* è¡¨æ ¼å·¥å
·æ */ |
| | | .table-toolbar, .table-toolbar > * { |
| | | .table-toolbar, |
| | | .table-toolbar>* { |
| | | margin: 0 0 0 0 !important; |
| | | } |
| | | .table-toolbar{ |
| | | |
| | | .table-toolbar { |
| | | margin-bottom: 20px !important; |
| | | } |
| | | |
| | | .el-form--inline .el-form-item { |
| | | margin-right: 25px; |
| | | } |
| | | .main-container{ |
| | | |
| | | .main-container { |
| | | background: red !important; |
| | | } |
| | | </style> |
| | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="800" |
| | | width="500" |
| | | :close-on-click-modal="false" |
| | | :before-close="handleClose" |
| | | > |
| | |
| | | :rules="rules" |
| | | label-width="auto" |
| | | > |
| | | <el-form-item label="å¡è¡" prop="supplierName"> |
| | | <el-form-item label="ç
¤ç§åç§°" prop="coal"> |
| | | <el-input |
| | | v-model="formData.supplierName" |
| | | placeholder="请è¾å
¥ä¾è´§ååç§°" |
| | | v-model="formData.coal" |
| | | placeholder="请è¾å
¥ç
¤ç§åç§°" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="纳ç¨äººè¯å«å·" prop="identifyNumber"> |
| | | <el-form-item label="ç»´æ¤äººå§å" prop="maintainerId"> |
| | | <el-input |
| | | v-model="formData.identifyNumber" |
| | | placeholder="请è¾å
¥çº³ç¨äººè¯å«å·" |
| | | v-model="formData.maintainerId" |
| | | placeholder="请è¾å
¥ç»´æ¤äººå§å" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è¥å°å" prop="address"> |
| | | <el-select v-model="formData.address" placeholder="è¯·éæ©ç»è¥å°å"> |
| | | <el-option label="Zone one" value="shanghai" /> |
| | | <el-option label="Zone two" value="beijing" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="é¶è¡è´¦æ·" prop="bankAccount"> |
| | | <el-input v-model="formData.bankAccount" placeholder="请è¾å
¥é¶è¡è´¦æ·" /> |
| | | <el-form-item label="ç»´æ¤æ¥æ" prop="maintenanceDate"> |
| | | <el-input v-model="formData.maintenanceDate" placeholder="请è¾å
¥é¶è¡è´¦æ·" /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitForm"> |
| | |
| | | |
| | | <script setup> |
| | | import { ref, watch ,defineProps } from 'vue' |
| | | import { addOrEditCoalInfo } from '@/api/basicInformation/coal' |
| | | |
| | | const props = defineProps({ |
| | | beforeClose: { |
| | |
| | | // æäº¤è¡¨å |
| | | const submitForm = async () => { |
| | | if (!formRef.value) return |
| | | await formRef.value.validate((valid, fields) => { |
| | | await formRef.value.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | emit('submit', formData.value) |
| | | formData.value.maintenanceDate = "2023-10-01" // ç¤ºä¾æ¥æ |
| | | let result = await addOrEditCoalInfo({ |
| | | ...formData.value, |
| | | }) |
| | | let obj = { |
| | | title: props.title, |
| | | result, |
| | | } |
| | | emit('submit', obj) |
| | | } |
| | | }) |
| | | } |
| | |
| | | :rules="rules" |
| | | label-width="auto" |
| | | > |
| | | <el-form-item label="客æ·åç§°" prop="supplierName"> |
| | | <el-form-item label="ç
¤ç§ç±»å" prop="coal"> |
| | | <el-input |
| | | v-model="formData.supplierName" |
| | | v-model="formData.coal" |
| | | placeholder="请è¾å
¥ä¾è´§ååç§°" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="纳ç¨äººè¯å«å·" prop="identifyNumber"> |
| | | <el-form-item label="å
¨æ°´å«éç¾åæ¯ (%)" prop="totalMoisture"> |
| | | <el-input |
| | | v-model="formData.identifyNumber" |
| | | placeholder="请è¾å
¥çº³ç¨äººè¯å«å·" |
| | | v-model="formData.totalMoisture" |
| | | placeholder="请è¾å
¥å
¨æ°´å«éç¾åæ¯" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è¥å°å" prop="address"> |
| | | <el-cascader |
| | | placeholder="è¯·éæ©ç»è¥å°å" |
| | | size="default" |
| | | :options="addressSelectOptions" |
| | | v-model="formData.address" |
| | | @change="handleChange" |
| | | > |
| | | </el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="详ç»å°å" prop="addressDetail"> |
| | | <el-form-item label="å
¨æ°´å«éç¾åæ¯ (%)" prop="analysisMoisture"> |
| | | <el-input |
| | | v-model="formData.addressDetail" |
| | | v-model="formData.analysisMoisture" |
| | | placeholder="请è¾å
¥å
¨æ°´å«éç¾åæ¯" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="å
¨æ°´å«éç¾åæ¯ (%)" prop="volatileMatter"> |
| | | <el-input |
| | | v-model="formData.volatileMatter" |
| | | placeholder="请è¾å
¥å
¨æ°´å«éç¾åæ¯" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="åºå®ç¢³ç¾åæ¯ (%)" prop="fixedCarbon"> |
| | | <el-input |
| | | v-model="formData.fixedCarbon" |
| | | placeholder="请è¾å
¥å®¢æ·è¯¦ç»å°å" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="é¶è¡è´¦æ·" prop="bankAccount"> |
| | | <el-form-item label="ä½ä½åçéï¼åä½ï¼åå¡/åå
ï¼" prop="lowerHeatValue"> |
| | | <el-input |
| | | v-model="formData.bankAccount" |
| | | v-model="formData.lowerHeatValue" |
| | | placeholder="请è¾å
¥é¶è¡è´¦æ·" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="弿·è¡" prop="bank"> |
| | | <el-input v-model="formData.bank" placeholder="请è¾å
¥å¼æ·è¡" /> |
| | | <el-form-item label="é«ä½åçéï¼åä½ï¼åå¡/åå
ï¼" prop="higherHeatValue"> |
| | | <el-input v-model="formData.higherHeatValue" placeholder="请è¾å
¥å¼æ·è¡" /> |
| | | </el-form-item> |
| | | <el-form-item label="è系人" prop="contacts"> |
| | | <el-input v-model="formData.contacts" placeholder="请è¾å
¥è系人" /> |
| | | <el-form-item label="ç°åç¾åæ¯ (%)" prop="ashContent"> |
| | | <el-input v-model="formData.ashContent" placeholder="请è¾å
¥è系人" /> |
| | | </el-form-item> |
| | | <el-form-item label="è系人çµè¯" prop="contactsPhone"> |
| | | <el-form-item label="ç¡«å«éç¾åæ¯ (%)" prop="sulfurContent"> |
| | | <el-input |
| | | v-model="formData.contactsPhone" |
| | | v-model="formData.sulfurContent" |
| | | placeholder="请è¾å
¥è系人çµè¯" |
| | | /> |
| | | </el-form-item> |
| | |
| | | <script setup> |
| | | import { ref, watch, defineProps, onMounted } from "vue"; |
| | | import addressList from "@/api/jsonApi/areaList.json"; |
| | | import { addOrEditCoalQuality } from "@/api/basicInformation/coalQualityMaintenance.js"; |
| | | const props = defineProps({ |
| | | beforeClose: { |
| | | type: Function, |
| | |
| | | // æäº¤è¡¨å |
| | | const submitForm = async () => { |
| | | if (!formRef.value) return; |
| | | await formRef.value.validate((valid, fields) => { |
| | | await formRef.value.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | emit("submit", formData.value); |
| | | |
| | | let result = await addOrEditCoalQuality({...formData.value}); |
| | | console.log(result); |
| | | // emit("submit", formData.value); |
| | | } |
| | | }); |
| | | }; |
| | |
| | | emit("update:coalQualityMaintenanceDialogFormVisible", false); |
| | | }; |
| | | const rules = reactive({ |
| | | supplierName: [ |
| | | { required: true, message: "请è¾å
¥ä¾è´§ååç§°", trigger: "blur" }, |
| | | ], |
| | | identifyNumber: [ |
| | | { required: true, message: "请æ£ç¡®è¾å
¥çº³ç¨äººè¯å«å·", trigger: "blur" }, |
| | | { min: 17, max: 20, message: "请è¾å
¥17-20ä½çº³ç¨äººè¯å«å·", trigger: "blur" }, |
| | | ], |
| | | address: [ |
| | | { |
| | | required: true, |
| | | message: "è¯·éæ©ç»è¥å°å", |
| | | trigger: "change", |
| | | }, |
| | | ], |
| | | bankAccount: [{ required: true, message: "请è¾å
¥é¶è¡è´¦æ·", trigger: "blur" }], |
| | | bank: [{ required: true, message: "请è¾å
¥å¼æ·è¡", trigger: "blur" }], |
| | | contacts: [{ required: true, message: "请è¾å
¥å¼æ·è¡", trigger: "blur" }], |
| | | contactsPhone: [ |
| | | { required: true, message: "请è¾å
¥è系人", trigger: "blur" }, |
| | | { min: 11, max: 11, message: "请è¾å
¥11ä½è系人çµè¯", trigger: "blur" }, |
| | | coal: [ |
| | | { required: true, message: "请è¾å
¥ç
¤ç§åç§°", trigger: "blur" }, |
| | | ], |
| | | }); |
| | | </script> |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="600" |
| | | :close-on-click-modal="false" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="formRef" |
| | | style="max-width: 400px; margin: 0 auto" |
| | | :model="formData" |
| | | :rules="rules" |
| | | label-width="auto" |
| | | > |
| | | <el-dialog v-model="dialogVisible" :title="title" width="600" :close-on-click-modal="false" |
| | | :before-close="handleClose"> |
| | | <el-form ref="formRef" style="max-width: 400px; margin: 0 auto" :model="formData" :rules="rules" label-width="auto"> |
| | | <el-form-item label="客æ·åç§°" prop="supplierName"> |
| | | <el-input |
| | | v-model="formData.supplierName" |
| | | placeholder="请è¾å
¥ä¾è´§ååç§°" |
| | | /> |
| | | <el-input v-model="formData.supplierName" placeholder="请è¾å
¥ä¾è´§ååç§°" /> |
| | | </el-form-item> |
| | | <el-form-item label="纳ç¨äººè¯å«å·" prop="identifyNumber"> |
| | | <el-input |
| | | v-model="formData.identifyNumber" |
| | | placeholder="请è¾å
¥çº³ç¨äººè¯å«å·" |
| | | /> |
| | | <el-form-item label="纳ç¨äººè¯å«å·" prop="taxpayerId"> |
| | | <el-input v-model="formData.taxpayerId" placeholder="请è¾å
¥çº³ç¨äººè¯å«å·" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è¥å°å" prop="address"> |
| | | <el-cascader |
| | | placeholder="è¯·éæ©ç»è¥å°å" |
| | | size="default" |
| | | :options="addressSelectOptions" |
| | | v-model="formData.address" |
| | | @change="handleChange" |
| | | > |
| | | <el-form-item label="ç»è¥å°å" prop="bids"> |
| | | <el-cascader placeholder="è¯·éæ©ç»è¥å°å" size="default" :options="addressSelectOptions" v-model="formData.bids" |
| | | @change="handleChange"> |
| | | </el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="详ç»å°å" prop="addressDetail"> |
| | | <el-input |
| | | v-model="formData.addressDetail" |
| | | placeholder="请è¾å
¥å®¢æ·è¯¦ç»å°å" |
| | | /> |
| | | <el-form-item label="详ç»å°å" prop="businessAddress"> |
| | | <el-input v-model="formData.businessAddress" placeholder="请è¾å
¥å®¢æ·è¯¦ç»å°å" /> |
| | | </el-form-item> |
| | | <el-form-item label="é¶è¡è´¦æ·" prop="bankAccount"> |
| | | <el-input |
| | | v-model="formData.bankAccount" |
| | | placeholder="请è¾å
¥é¶è¡è´¦æ·" |
| | | /> |
| | | <el-form-item label="弿·è¡" prop="bankAccount"> |
| | | <el-input v-model="formData.bankAccount" placeholder="请è¾å
¥å¼æ·è¡" /> |
| | | </el-form-item> |
| | | <el-form-item label="弿·è¡" prop="bank"> |
| | | <el-input v-model="formData.bank" placeholder="请è¾å
¥å¼æ·è¡" /> |
| | | <el-form-item label="é¶è¡è´¦æ·" prop="bankName"> |
| | | <el-input v-model="formData.bankName" placeholder="请è¾å
¥é¶è¡è´¦æ·" /> |
| | | </el-form-item> |
| | | <el-form-item label="è系人" prop="contacts"> |
| | | <el-input v-model="formData.contacts" placeholder="请è¾å
¥è系人" /> |
| | | <el-form-item label="è系人" prop="contactPerson"> |
| | | <el-input v-model="formData.contactPerson" placeholder="请è¾å
¥è系人" /> |
| | | </el-form-item> |
| | | <el-form-item label="è系人çµè¯" prop="contactsPhone"> |
| | | <el-input |
| | | v-model="formData.contactsPhone" |
| | | placeholder="请è¾å
¥è系人çµè¯" |
| | | /> |
| | | <el-form-item label="è系人çµè¯" prop="contactPhone"> |
| | | <el-input v-model="formData.contactPhone" placeholder="请è¾å
¥è系人çµè¯" /> |
| | | </el-form-item> |
| | | <el-form-item label="è系人å°å" prop="contactAddress"> |
| | | <el-input v-model="formData.contactAddress" placeholder="请è¾å
¥è系人å°å" /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitForm"> ç¡®å® </el-button> |
| | | <el-button v-if="addOrEdit === 'edit'" @click="resetForm" |
| | | >éç½®</el-button |
| | | > |
| | | <el-button v-if="addOrEdit === 'add'" @click="cancelForm" |
| | | >åæ¶</el-button |
| | | > |
| | | <el-button v-if="addOrEdit === 'edit'" @click="resetForm">éç½®</el-button> |
| | | <el-button v-if="addOrEdit === 'add'" @click="cancelForm">åæ¶</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-dialog> |
| | |
| | | <script setup> |
| | | import { ref, watch, defineProps, onMounted } from "vue"; |
| | | import addressList from "@/api/jsonApi/areaList.json"; |
| | | import imageUpload from "@/components/ImageUpload/index.vue"; |
| | | import { addOrEditSupply } from "@/api/basicInformation/supplier"; |
| | | const props = defineProps({ |
| | | beforeClose: { |
| | | type: Function, |
| | | default: () => {}, |
| | | default: () => { }, |
| | | }, |
| | | form: { |
| | | type: Object, |
| | |
| | | |
| | | const emit = defineEmits(["submit", "handleBeforeClose"]); |
| | | |
| | | onMounted(()=>{ |
| | | onMounted(() => { |
| | | addressSelectOptions.value = mapAddress(addressList); |
| | | }) |
| | | // å°åéæ©æ°æ® |
| | |
| | | // æäº¤è¡¨å |
| | | const submitForm = async () => { |
| | | if (!formRef.value) return; |
| | | await formRef.value.validate((valid, fields) => { |
| | | await formRef.value.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | emit("submit", formData.value); |
| | | if(props.title.includes('æ°å¢')){ |
| | | let result = await addOrEditSupply({ |
| | | ...formData.value, |
| | | }) |
| | | let obj = { |
| | | ...formData.value, |
| | | result |
| | | }; |
| | | }else{ |
| | | delete formData.value.createTime |
| | | delete formData.value.updateTime |
| | | let result = await addOrEditSupply({ |
| | | ...formData.value, |
| | | }) |
| | | console.log(result) |
| | | } |
| | | emit("submit", obj); |
| | | } |
| | | }); |
| | | }; |
| | |
| | | supplierName: [ |
| | | { required: true, message: "请è¾å
¥ä¾è´§ååç§°", trigger: "blur" }, |
| | | ], |
| | | identifyNumber: [ |
| | | taxpayerId: [ |
| | | { required: true, message: "请æ£ç¡®è¾å
¥çº³ç¨äººè¯å«å·", trigger: "blur" }, |
| | | { min: 17, max: 20, message: "请è¾å
¥17-20ä½çº³ç¨äººè¯å«å·", trigger: "blur" }, |
| | | ], |
| | | address: [ |
| | | bids: [ |
| | | { |
| | | required: true, |
| | | message: "è¯·éæ©ç»è¥å°å", |
| | | trigger: "change", |
| | | }, |
| | | ], |
| | | bankAccount: [{ required: true, message: "请è¾å
¥é¶è¡è´¦æ·", trigger: "blur" }], |
| | | bank: [{ required: true, message: "请è¾å
¥å¼æ·è¡", trigger: "blur" }], |
| | | contacts: [{ required: true, message: "请è¾å
¥å¼æ·è¡", trigger: "blur" }], |
| | | contactsPhone: [ |
| | | bankName: [{ required: true, message: "请è¾å
¥é¶è¡è´¦æ·", trigger: "blur" }], |
| | | bankAccount: [{ required: true, message: "请è¾å
¥å¼æ·è¡", trigger: "blur" }], |
| | | contactPerson: [{ required: true, message: "è系人", trigger: "blur" }], |
| | | contactPhone: [ |
| | | { required: true, message: "请è¾å
¥è系人", trigger: "blur" }, |
| | | { min: 11, max: 11, message: "请è¾å
¥11ä½è系人çµè¯", trigger: "blur" }, |
| | | ], |