From 0ce559e6195a189ccc777b0fa439906bffb12b55 Mon Sep 17 00:00:00 2001 From: zhang_12370 <z2864490065@outlook.com> Date: 星期三, 25 六月 2025 17:58:31 +0800 Subject: [PATCH] 多页面添加查看功能 --- src/views/basicInformation/index.vue | 38 +++++++ src/views/procureMent/index.vue | 17 ++ src/views/production/components/ProductionDetailsTable.vue | 16 ++ src/views/production/components/useDialog.js | 14 ++ src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue | 6 + src/views/procureMent/components/ProductionDialog.vue | 14 ++ src/views/basicInformation/mould/coal.vue | 2 src/views/production/index.vue | 126 +++++++++++++----------- src/views/basicInformation/mould/coalQualityMaintenance.vue | 7 src/views/basicInformation/mould/customer.vue | 23 ++-- src/views/production/components/ProductionDialog.vue | 27 +++-- 11 files changed, 189 insertions(+), 101 deletions(-) diff --git a/src/views/basicInformation/index.vue b/src/views/basicInformation/index.vue index 4f47266..7e36228 100644 --- a/src/views/basicInformation/index.vue +++ b/src/views/basicInformation/index.vue @@ -56,11 +56,9 @@ @edit="handleEdit" @viewRow="handleView" @selection-change="handleSelectionChange" - :showOperations="true" - :showIndex="true" - :showPagination="false" :operations="['edit', 'viewRow']" :operationsWidth="200" + :show-overflow-tooltip="false" > <!-- 瀛楁鍚嶇О鍒楃殑鑷畾涔夋彃妲� - 鏄剧ず涓烘爣绛� --> <template @@ -865,6 +863,40 @@ } }; +const handleView = (row) => { + form.value = JSON.parse(JSON.stringify(row)); + // 鏋勫缓渚涘簲鍟嗕笟鍔″湴鍧�鏁扮粍 + 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); +}; + + // ===== 鐢熷懡鍛ㄦ湡閽╁瓙 ===== /** diff --git a/src/views/basicInformation/mould/coal.vue b/src/views/basicInformation/mould/coal.vue index 36e599e..a8197c2 100644 --- a/src/views/basicInformation/mould/coal.vue +++ b/src/views/basicInformation/mould/coal.vue @@ -18,6 +18,7 @@ <el-input v-model="formData.coal" placeholder="璇疯緭鍏ョ叅绉嶅悕绉�" + :disabled="isViewMode" /> </el-form-item> <el-form-item label="缁存姢浜哄鍚�" prop="maintainerId"> @@ -73,6 +74,7 @@ default: '' }, }) +const isViewMode = computed(() => props.addOrEdit.includes("viewRow")); const copyForm = defineModel("copyForm", { required: true, type: Object, diff --git a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue index 8dddf2b..6a43441 100644 --- a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue +++ b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue @@ -18,10 +18,11 @@ <el-input v-model="formData.fieldName" placeholder="璇疯緭鍏ュ瓧娈靛悕绉�" + :disabled="isViewMode" /> </el-form-item> <el-form-item label="瀛楁鎻忚堪" prop="fieldDescription"> - <el-input v-model="formData.fieldDescription" type="textarea" placeholder="璇疯緭鍏ュ瓧娈垫弿杩�"/> + <el-input v-model="formData.fieldDescription" type="textarea" placeholder="璇疯緭鍏ュ瓧娈垫弿杩�" :disabled="isViewMode"/> </el-form-item> <el-form-item class="dialog-footer"> <el-button v-if="addOrEdit === 'edit'" @click="resetForm" @@ -57,6 +58,9 @@ default: "", }, }); +const isViewMode = computed(() => { + return props.addOrEdit.includes("view"); +}); const copyForm = defineModel("copyForm", { required: true, type: Object, diff --git a/src/views/basicInformation/mould/coalQualityMaintenance.vue b/src/views/basicInformation/mould/coalQualityMaintenance.vue index 1b3d911..cb66226 100644 --- a/src/views/basicInformation/mould/coalQualityMaintenance.vue +++ b/src/views/basicInformation/mould/coalQualityMaintenance.vue @@ -7,20 +7,20 @@ style="max-width: 400px; margin: 0 auto"> <!-- 鏂规鍚嶇О杈撳叆妗� --> <el-form-item label="鐓よ川鏂规鍚嶇О" prop="plan"> - <el-input v-model="formData.plan" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堝悕绉�" clearable/> + <el-input v-model="formData.plan" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堝悕绉�" clearable :disabled="isViewMode"/> </el-form-item> <!-- 鐓よ川瀛楁澶氶�変笅鎷夋 --> <el-form-item label="鐓よ川鏂规绫诲瀷" prop="coalFieldList"> <el-select v-model="formData.coalFieldList" placeholder="璇烽�夋嫨鐓よ川鏂规绫诲瀷" style="width: 100%" clearable - multiple> + multiple :disabled="isViewMode"> <el-option v-for="item in fieldOptions" :key="item.id" :label="item.label" :value="item"/> </el-select> </el-form-item> <!-- 鏂规鎻忚堪鏂囨湰鍩� --> <el-form-item label="鐓よ川鏂规鎻忚堪" prop="schemeDesc"> - <el-input v-model="formData.schemeDesc" type="textarea" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堟弿杩�" :rows="3"/> + <el-input v-model="formData.schemeDesc" type="textarea" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堟弿杩�" :rows="3" :disabled="isViewMode"/> </el-form-item> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> @@ -60,6 +60,7 @@ default: "", }, }); +const isViewMode = computed(() => props.addOrEdit.includes("view")); const copyForm = defineModel("copyForm", { required: true, type: Object, diff --git a/src/views/basicInformation/mould/customer.vue b/src/views/basicInformation/mould/customer.vue index db4d96b..7202287 100644 --- a/src/views/basicInformation/mould/customer.vue +++ b/src/views/basicInformation/mould/customer.vue @@ -5,41 +5,41 @@ <el-form ref="formRef" style="max-width: 400px; margin: 0 auto" :model="formData" :rules="rules" label-width="auto"> <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName"> - <el-input v-model="formData.customerName" placeholder="璇疯緭鍏ュ鎴峰悕绉�"/> + <el-input v-model="formData.customerName" placeholder="璇疯緭鍏ュ鎴峰悕绉�" :disabled="isViewMode"/> </el-form-item> <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="taxpayerId"> - <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"/> + <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�" :disabled="isViewMode"/> </el-form-item> <el-form-item label="缁忚惀鍦板潃" prop="bids"> <el-cascader placeholder="璇烽�夋嫨缁忚惀鍦板潃" size="default" :options="addressSelectOptions" v-model="formData.bids" - :props="cascaderProps" @change="handleChange"> + :props="cascaderProps" @change="handleChange" :disabled="isViewMode"> </el-cascader> </el-form-item> <el-form-item label="缁忚惀璇︾粏鍦板潃" prop="businessAddress"> - <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ョ粡钀ヨ缁嗗湴鍧�"/> + <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ョ粡钀ヨ缁嗗湴鍧�" :disabled="isViewMode"/> </el-form-item> <el-form-item label="寮�鎴疯" prop="bankName"> - <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ュ紑鎴疯"/> + <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ュ紑鎴疯" :disabled="isViewMode"/> </el-form-item> <el-form-item label="閾惰璐︽埛" prop="bankAccount"> - <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�"/> + <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" :disabled="isViewMode"/> </el-form-item> <el-form-item label="鑱旂郴浜�" prop="contactPerson"> - <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉"/> + <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" :disabled="isViewMode"/> </el-form-item> <el-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone"> - <el-input v-model="formData.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/> + <el-input v-model="formData.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" :disabled="isViewMode"/> </el-form-item> <el-form-item label="鑱旂郴浜哄湴鍧�" prop="cids"> <el-cascader placeholder="璇烽�夋嫨鑱旂郴浜哄湴鍧�" size="default" :options="addressSelectOptions" v-model="formData.cids" - :props="cascaderProps" @change="handleChange"> + :props="cascaderProps" @change="handleChange" :disabled="isViewMode"> </el-cascader> </el-form-item> <el-form-item label="鑱旂郴浜鸿缁�" prop="contactAddress"> - <el-input v-model="formData.contactAddress" placeholder="璇疯緭鍏ヨ仈绯讳汉璇︾粏鍦板潃"/> + <el-input v-model="formData.contactAddress" placeholder="璇疯緭鍏ヨ仈绯讳汉璇︾粏鍦板潃" :disabled="isViewMode"/> </el-form-item> <el-form-item class="dialog-footer"> <el-button v-if="addOrEdit === 'edit'" @click="resetForm">閲嶇疆</el-button> @@ -56,7 +56,6 @@ <script setup> import {ref, watch, onMounted} from "vue"; import {getAreaOptions} from "@/api/system/area.js"; -import addressList from "@/api/jsonApi/areaList.json"; import {addOrEditCustomer} from "@/api/basicInformation/customer"; const props = defineProps({ @@ -78,7 +77,7 @@ default: "", }, }); - +const isViewMode = computed(() => props.addOrEdit.includes("viewRow")); const handleChange = (value) => { console.log(value); }; diff --git a/src/views/procureMent/components/ProductionDialog.vue b/src/views/procureMent/components/ProductionDialog.vue index 3c03cbb..677eba9 100644 --- a/src/views/procureMent/components/ProductionDialog.vue +++ b/src/views/procureMent/components/ProductionDialog.vue @@ -17,12 +17,12 @@ style="max-width: 400px; margin: 0 auto" > <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierId"> - <el-select v-model="form.supplierId" placeholder="璇烽�夋嫨渚涘簲鍟�"> + <el-select v-model="form.supplierId" placeholder="璇烽�夋嫨渚涘簲鍟�" :disabled="isViewMode"> <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value"/> </el-select> </el-form-item> <el-form-item label="鐓ょ" prop="coalId"> - <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ"> + <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ" :disabled="isViewMode"> <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value"/> </el-select> </el-form-item> @@ -31,18 +31,19 @@ v-model.number="form.purchaseQuantity" placeholder="璇疯緭鍏�" @blur="handleQuantityBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍚�</i> </template> </el-input> - </el-form-item - > + </el-form-item> <el-form-item label="绋庣巼" prop="taxRate"> <el-input v-model.number="form.taxRate" placeholder="璇疯緭鍏ョ◣鐜�" @blur="handleTaxRateBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">%</i> @@ -54,6 +55,7 @@ v-model.number="form.priceExcludingTax" placeholder="璇疯緭鍏�" @blur="handlePriceBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -64,6 +66,7 @@ <el-input v-model.number="form.priceIncludingTax" placeholder="鑷姩璁$畻" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -74,6 +77,7 @@ <el-input v-model.number="form.totalPriceExcludingTax" placeholder="鑷姩璁$畻" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -84,6 +88,7 @@ <el-input v-model.number="form.totalPriceIncludingTax" placeholder="鑷姩璁$畻" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -149,6 +154,7 @@ }); const supplyList = ref([]); const coalList = ref([]); +const isViewMode = computed(() => props.title.includes("鏌ョ湅")); // 鑾峰彇渚涘簲鍟嗕笅鎷夊拰鐓ょ涓嬫媺 const getDropdownData = async () => { try { diff --git a/src/views/procureMent/index.vue b/src/views/procureMent/index.vue index 2949e2b..f692780 100644 --- a/src/views/procureMent/index.vue +++ b/src/views/procureMent/index.vue @@ -35,7 +35,11 @@ @delete="handleDeleteSuccess" :show-selection="true" :border="true" - style="width: 100%;height: calc(100vh - 26em)" + style="width: 100%; height: calc(100vh - 26em)" + @viewRow="handleView" + :operations="['edit', 'viewRow']" + :operationsWidth="200" + :show-overflow-tooltip="false" /> <pagination v-if="total > 0" @@ -150,7 +154,7 @@ const MatchQuery = (data, name) => { const list = name === "supplyRes" ? supplyRes.value.data : coalRes.value.data; const item = list.find((items) => items.id == data); - return item ? item.coal || item.supplierName : ""; + return item ? item.coal || item.supplierName : ""; }; // 鑾峰彇渚涘簲鍟嗗垪琛� const supplyRes = ref([]); @@ -177,13 +181,13 @@ const productionDialogs = ref(null); // 娣诲姞ref澹版槑 const handleAddEdit = () => { - addOrEdit.value == "add" ? (title.value = "鏂板") : (title.value = "缂栬緫"); + addOrEdit.value == "add" ? (title.value = "鏂板") : addOrEdit.value == "viewRow" ? (title.value = "鏌ョ湅") : (title.value = "缂栬緫"); title.value = title.value + "閲囪喘淇℃伅"; openDialog(); }; // 鎵撳紑寮圭獥 const openDialog = () => { - if (addOrEdit.value === "edit") { + if (addOrEdit.value === "edit" || addOrEdit.value === "viewRow") { // 纭繚澶嶅埗涓�浠芥暟鎹紝閬垮厤鐩存帴寮曠敤 copyForm.value = JSON.parse(JSON.stringify(form.value)); dialogFormVisible.value = true; @@ -229,6 +233,11 @@ addOrEdit.value = "edit"; handleAddEdit(); }; +const handleView = (row) => { + form.value = JSON.parse(JSON.stringify(row)); + addOrEdit.value = "viewRow"; + handleAddEdit(); +}; const handleDelete = () => { if (selectedRows.value.length === 0) { ElMessage.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁"); diff --git a/src/views/production/components/ProductionDetailsTable.vue b/src/views/production/components/ProductionDetailsTable.vue index 8331deb..dd89b4b 100644 --- a/src/views/production/components/ProductionDetailsTable.vue +++ b/src/views/production/components/ProductionDetailsTable.vue @@ -9,6 +9,7 @@ @change="(value) => handleCoalSelectChange(row, value)" filterable :key="`coalId-select-${$index}-${weekList.length}`" + :disabled="isViewMode" > <el-option v-for="(item, index) of weekList" @@ -26,6 +27,7 @@ placeholder="璇疯緭鍏ョ敓浜ф暟閲�" type="number" @input="handleInput('productionQuantity', $index, $event)" + :disabled="isViewMode" /> </template> </el-table-column> @@ -37,6 +39,7 @@ placeholder="璇疯緭鍏ヤ汉宸ユ垚鏈�" type="number" @input="handleInput('laborCost', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -52,6 +55,7 @@ placeholder="璇疯緭鍏ヨ兘鑰楁垚鏈�" type="number" @input="handleInput('energyConsumptionCost', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -67,6 +71,7 @@ placeholder="璇疯緭鍏ヨ澶囨姌鏃�" type="number" @input="handleInput('equipmentDepreciation', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -82,6 +87,7 @@ placeholder="璇疯緭鍏ラ噰璐崟浠�" type="number" @input="handleInput('purchasePrice', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -99,6 +105,7 @@ type="number" :readonly="autoCalculate" @input="handleInput('totalCost', $index, $event)" + > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -115,6 +122,7 @@ @change="(value) => handleUserSelectChange(row, value)" filterable :key="`producer-select-${$index}-${userList.length}`" + :disabled="isViewMode" > <el-option v-for="(item, index) of userList" @@ -126,10 +134,10 @@ </template> </el-table-column> <el-table-column - v-if="showOperations" label="鎿嶄綔" width="120" fixed="right" + v-if="dialogType !== 'viewRow'" > <template #default="{ $index }"> <el-button @@ -169,8 +177,12 @@ type: Boolean, default: true, }, + dialogType:{ + type: String, + default:'add' + } }); - +const isViewMode = computed(() => props.dialogType === "viewRow"); const emit = defineEmits(["update:modelValue", "input-change", "delete-row"]); // 浣跨敤 v-model 杩涜鍙屽悜缁戝畾 diff --git a/src/views/production/components/ProductionDialog.vue b/src/views/production/components/ProductionDialog.vue index 8c16696..955a1aa 100644 --- a/src/views/production/components/ProductionDialog.vue +++ b/src/views/production/components/ProductionDialog.vue @@ -1,12 +1,12 @@ <template> <el-dialog v-model="dialogVisible" - :title="dialogType === 'add' ? '鏂板鐢熶骇鍔犲伐' : '缂栬緫鐢熶骇鍔犲伐'" + :title="dialogType === 'add' ? '鏂板鐢熶骇鍔犲伐' : dialogType === 'viewRow' ? '鏌ョ湅鐢熶骇鍔犲伐' : '缂栬緫鐢熶骇鍔犲伐'" width="1200px" :close-on-click-modal="false" @close="handleClose" > - <el-row :gutter="10" style="margin-bottom: 10px"> + <el-row :gutter="10" style="margin-bottom: 10px" v-if="dialogType !== 'viewRow'"> <el-col :span="3"> <el-button type="primary" @click="handlData" > @@ -40,20 +40,21 @@ </el-row> <ETableModify :columns="columns" - :showOperations="false" + :showOperations="dialogType !== 'viewRow'" height="200" @cell-edit="handleCellEdit" :tableData="tableData" :showOverflowTooltip="false" @row-click="handleRowClick" - :editableColumns="['usedQuantity']" + :editableColumns="dialogType === 'viewRow' ? [] : ['usedQuantity']" + :editableCells="dialogType !== 'viewRow'" @delete="handleRemoveItem" /> <div class="empty-table"> <h1>鐢熶骇鏄庣粏</h1> <el-row :gutter="10"> <el-col :span="2"> - <el-button type="primary" @click="addNewRow"> + <el-button type="primary" @click="addNewRow" v-if="dialogType !== 'viewRow'"> <el-icon> <Plus/> </el-icon> @@ -72,10 +73,11 @@ <ProductionDetailsTable v-model="detailsTableData" :border="false" - :show-operations="true" + :show-operations="dialogType !== 'viewRow'" :auto-calculate="true" @input-change="handleDetailsChange" @delete-row="handleDeleteRow" + :dialogType="dialogType" /> </div> @@ -83,14 +85,17 @@ <div class="dialog-footer"> <el-button @click="handleClose" - v-if="dialogType === 'add' || dialogType === 'edit'" - >鍙� 娑� + >{{ dialogType === 'viewRow' ? '鍏� 闂�' : '鍙� 娑�' }} </el-button > <!-- <el-button @click="handleReset" v-if="dialogType === 'edit'" >閲� 缃�</el-button > --> - <el-button type="primary" :loading="loading" @click="handleSubmit" + <el-button + v-if="dialogType !== 'viewRow'" + type="primary" + :loading="loading" + @click="handleSubmit" >纭� 瀹� </el-button > @@ -298,11 +303,11 @@ dialogType.value = "add"; }; -const editInitialization = (data) => { +const editInitialization = (type,data) => { copyForm.value = deepClone(data); tableData.value = data.productionInventoryList || []; detailsTableData.value = data.productionList || []; - dialogType.value = "edit"; + dialogType.value = type; const existingOfficialIds = tableData.value .map((item) => item.officialId) .filter((id) => id); diff --git a/src/views/production/components/useDialog.js b/src/views/production/components/useDialog.js index 23eb8ad..42e4546 100644 --- a/src/views/production/components/useDialog.js +++ b/src/views/production/components/useDialog.js @@ -20,12 +20,17 @@ if (dialogRef.value) { if (type === 'add') { dialogRef.value.Initialization?.(); - } else if (type === 'edit' && rowData) { - dialogRef.value.editInitialization?.(rowData); + } else if ((type === 'edit' || type === 'viewRow') && rowData) { + dialogRef.value.editInitialization?.(type,rowData); } } }; - + const viewRow = (type,rowData) => { + dialogType.value = type; + currentRowData.value = rowData; + dialogVisible.value = true; + openDialog('viewRow', rowData); + }; // 鍏抽棴瀵硅瘽妗� const closeDialog = () => { dialogVisible.value = false; @@ -51,6 +56,7 @@ // 鏂规硶 openDialog, closeDialog, - handleDialogSuccess + handleDialogSuccess, + viewRow }; } diff --git a/src/views/production/index.vue b/src/views/production/index.vue index 1003361..79c305b 100644 --- a/src/views/production/index.vue +++ b/src/views/production/index.vue @@ -4,9 +4,9 @@ <el-form :inline="true" :model="queryParams" class="search-form"> <el-form-item label="鎼滅储"> <el-input - v-model="queryParams.searchAll" - placeholder="璇疯緭鍏ュ叧閿瘝" - clearable + v-model="queryParams.searchAll" + placeholder="璇疯緭鍏ュ叧閿瘝" + clearable /> </el-form-item> <el-form-item> @@ -22,29 +22,39 @@ <el-button type="success" :icon="Plus" @click="openDialog('add')"> 鏂板鍔犲伐 </el-button> - <el-button type="danger" :icon="Delete" :disabled="!selectedRows.length" @click="() => deleteSelected(delPM)"> + <el-button + type="danger" + :icon="Delete" + :disabled="!selectedRows.length" + @click="() => deleteSelected(delPM)" + > 鍒犻櫎 </el-button> - </div> <!-- 鏁版嵁琛ㄦ牸 --> + </div> + <!-- 鏁版嵁琛ㄦ牸 --> <ETable - :showOverflowTooltip="false" - :loading="loading" - :table-data="tableData" - :columns="columns" - :current-page="queryParams.current" - :page-size="queryParams.size" - @selection-change="handleSelectionChange" - @edit="row => openDialog('edit', row)" - :show-selection="true" - :border="true" - style="width: 100%;height: calc(100vh - 26em)" + :showOverflowTooltip="false" + :loading="loading" + :table-data="tableData" + :columns="columns" + :current-page="queryParams.current" + :page-size="queryParams.size" + @selection-change="handleSelectionChange" + @edit="(row) => openDialog('edit', row)" + :show-selection="true" + :border="true" + @viewRow="(row) => (viewRow('viewRow', row))" + :operations="['edit', 'viewRow']" + :operationsWidth="200" + :show-overflow-tooltip="false" + style="width: 100%; height: calc(100vh - 26em)" > <template #coalId="{ row }"> <div class="coal-tags"> <template v-if="row.coalId"> - <el-tag - v-for="coal in parseCoalArray(row.coalId)" - :key="coal" + <el-tag + v-for="coal in parseCoalArray(row.coalId)" + :key="coal" size="small" type="primary" class="coal-tag" @@ -55,53 +65,54 @@ <span v-else class="no-data">--</span> </div> </template> - </ETable> <!-- 鍒嗛〉缁勪欢 --> + </ETable> + <!-- 鍒嗛〉缁勪欢 --> <Pagination - :layout="'total, prev, pager, next, jumper'" - :total="total" - v-model:page="queryParams.current" - :limit="queryParams.size" - @pagination="handlePageChange" + :layout="'total, prev, pager, next, jumper'" + :total="total" + v-model:page="queryParams.current" + :limit="queryParams.size" + @pagination="handlePageChange" /> </el-card> <!-- 鐢熶骇瀵硅瘽妗� --> <!-- handleProductionAndProcessing --> <ProductionDialog - v-model:visible="dialogVisible" - ref="dialogRef" - :type="dialogType" - @update:productionAndProcessing="handleProductionAndProcessing" - @success="handleDialogSuccess" + v-model:visible="dialogVisible" + ref="dialogRef" + :type="dialogType" + @update:productionAndProcessing="handleProductionAndProcessing" + @success="handleDialogSuccess" /> </div> </template> <script setup> -import {onMounted, ref} from "vue"; -import {ElMessage} from "element-plus"; -import {Plus, Delete} from "@element-plus/icons-vue"; +import { onMounted, ref } from "vue"; +import { ElMessage } from "element-plus"; +import { Plus, Delete } from "@element-plus/icons-vue"; import ProductionDialog from "./components/ProductionDialog.vue"; import ETable from "@/components/Table/ETable.vue"; import Pagination from "@/components/Pagination/index.vue"; -import {getProductionMasterList, delPM} from "@/api/production"; -import {parseCoalArray} from "@/utils/production"; -import {useTableData} from "./components/useTableData.js"; -import {useDialog} from "./components/useDialog.js"; -import {useCoalData} from "./components/useCoalData.js"; -import {getCoalInfoList} from "@/api/production"; +import { getProductionMasterList, delPM } from "@/api/production"; +import { parseCoalArray } from "@/utils/production"; +import { useTableData } from "./components/useTableData.js"; +import { useDialog } from "./components/useDialog.js"; +import { useCoalData } from "./components/useCoalData.js"; +import { getCoalInfoList } from "@/api/production"; // 鐓ょ淇℃伅鍒楄〃 const coalInfoList = ref([]); // 琛ㄦ牸鍒楅厤缃� const columns = [ - {prop: "coalId", label: "鐓ょ", minWidth: 150, slot: true}, - {prop: "productionQuantity", label: "鐢熶骇鏁伴噺", minWidth: 120}, - {prop: "laborCost", label: "浜哄伐鎴愭湰", minWidth: 150}, - {prop: "energyConsumptionCost", label: "鑳借�楁垚鏈�", minWidth: 120}, - {prop: "equipmentDepreciation", label: "璁惧鎶樻棫", minWidth: 143}, - {prop: "totalCost", label: "鎬绘垚鏈�", minWidth: 150}, + { prop: "coalId", label: "鐓ょ", minWidth: 150, slot: true }, + { prop: "productionQuantity", label: "鐢熶骇鏁伴噺", minWidth: 120 }, + { prop: "laborCost", label: "浜哄伐鎴愭湰", minWidth: 150 }, + { prop: "energyConsumptionCost", label: "鑳借�楁垚鏈�", minWidth: 120 }, + { prop: "equipmentDepreciation", label: "璁惧鎶樻棫", minWidth: 143 }, + { prop: "totalCost", label: "鎬绘垚鏈�", minWidth: 150 }, ]; // 浣跨敤琛ㄦ牸鏁版嵁缁勫悎寮忓嚱鏁� @@ -116,8 +127,8 @@ handleReset, handlePageChange, handleSelectionChange, - deleteSelected -} = useTableData(getProductionMasterList, {pageSize: 10}); + deleteSelected, +} = useTableData(getProductionMasterList, { pageSize: 10 }); // 浣跨敤瀵硅瘽妗嗙粍鍚堝紡鍑芥暟 const { @@ -125,31 +136,32 @@ dialogType, dialogRef, openDialog, - handleDialogSuccess: onDialogSuccess + viewRow, + handleDialogSuccess: onDialogSuccess, } = useDialog(); // 浣跨敤鐓ょ鏁版嵁缁勫悎寮忓嚱鏁� -const {getCoalNameById, getCoalData} = useCoalData(); +const { getCoalNameById, getCoalData } = useCoalData(); // 鑾峰彇鐓ょ鏄剧ず鍚嶇О锛堝甫澶囩敤閫昏緫锛� const getDisplayCoalName = (coalId) => { // 浼樺厛浣跨敤 useCoalData 鐨勬柟娉� let name = getCoalNameById(coalId); - + // 濡傛灉娌℃湁鎵惧埌锛屽皾璇曚粠 coalInfoList 涓煡鎵� if (name === coalId && coalInfoList.value.length > 0) { - const found = coalInfoList.value.find(item => item.id == coalId); + const found = coalInfoList.value.find((item) => item.id == coalId); name = found ? found.coal : coalId; } - + return name || coalId; }; // 澶勭悊鐢熶骇鏁版嵁鏇存柊 const handleProductionAndProcessing = (row, rows) => { - const index = tableData.value.findIndex(item => item.id === rows.id); + const index = tableData.value.findIndex((item) => item.id === rows.id); if (index !== -1) { - tableData.value[index] = {...tableData.value[index], ...row}; + tableData.value[index] = { ...tableData.value[index], ...row }; } }; @@ -172,13 +184,13 @@ if (res.code === 200) { coalInfoList.value = res.data; } - })() + })(), ]); - + // 鍔犺浇琛ㄦ牸鏁版嵁 getList(); } catch (error) { - ElMessage.error('鏁版嵁鍔犺浇澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯'); + ElMessage.error("鏁版嵁鍔犺浇澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯"); } }); </script> -- Gitblit v1.9.3