From 137bf2c0666b60cfc0d98b1a9ca7ead860ee4e7c Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期三, 28 十月 2026 17:57:29 +0800
Subject: [PATCH] feat(device,supply,satisfaction): 设备计划改造、耗材采购调整与满意度照片上传
---
src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue | 294 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 159 insertions(+), 135 deletions(-)
diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue
index c569e8b..e83fb8c 100644
--- a/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue
+++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue
@@ -1,127 +1,125 @@
<template>
<el-dialog
v-model="dialogVisible"
- title="娣诲姞鑰楁潗椤圭洰淇℃伅"
- width="70%"
+ :title="model.id ? '缂栬緫鑰楁潗' : '鏂板鑰楁潗'"
+ width="1100px"
>
<el-form ref="modelForm" :model="model" :rules="rules" label-width="100px">
- <el-col :span="12">
- <el-form-item label="鑰楁潗绫诲瀷" prop="consumablesType">
- <el-select v-model="model.consumablesType" placeholder="璇烽�夋嫨鑰楁潗绫诲瀷" size="small" style="width: 100%">
- <el-option v-for="(v, i) in dict.type.consumables_type" :key="i" :label="v.label" :value="v.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="璐у彿">
- <el-input v-model="model.itemNumber" placeholder="璇疯緭鍏ヨ揣鍙�" size="small"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鑰楁潗鍚嶇О">
- <el-input v-model="model.consumablesName" placeholder="璇疯緭鍏ヨ�楁潗鍚嶇О" size="small"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="瑙勬牸">
- <el-input v-model="model.specifications" placeholder="璇疯緭鍏ヨ鏍�" size="small"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="璁¢噺鍗曚綅">
- <el-input v-model="model.unit" placeholder="璇疯緭鍏ヨ閲忓崟浣�" size="small"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍙傝�冧环鏍�">
- <el-input-number v-model="model.referencePrice" :min="0" :precision="2" :step="0.01" placeholder="璇疯緭鍏ュ弬鑰冧环鏍�"
- size="small"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="瀛樻斁浣嶇疆">
- <el-select v-model="model.contentId" placeholder="璇烽�夋嫨瀛樻斁浣嶇疆" size="small" style="width: 100%">
- <el-option v-for="(v, i) in procurementSuppliesContentOptions" :key="i" :label="v.nodeName"
- :value="v.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="璐熻矗浜�">
- <el-select v-model="model.personInCharge" placeholder="璇烽�夋嫨璐熻矗浜�" size="small" style="width: 100%">
- <el-option v-for="(v, i) in userOptions" :key="i" :label="v.name" :value="v.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="搴撳瓨涓婇檺">
- <el-input-number v-model="model.upperLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笂闄�" size="small"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="搴撳瓨涓嬮檺">
- <el-input-number v-model="model.lowerLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笅闄�" size="small"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="渚涘簲鍟�">
- <el-select v-model="model.supplier" placeholder="璇烽�夋嫨渚涘簲鍟�" size="small" style="width: 100%">
- <el-option v-for="(v, i) in supplierOptions" :key="i" :label="v.supplierName"
- :value="v.supplierManagementId"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="鑰楁潗鍥炬爣">
- <div class="rows">
- <el-input v-model="model.consumablesIcon" placeholder="璇疯緭鍏ヨ�楁潗鍥炬爣" size="small" style="width: 90%;"/>
- <el-upload
- ref="upload"
- :action="action"
- :headers="uploadHeader"
- :on-success="onSuccessIcon"
- :show-file-list="false"
- style="float: left; margin: 0 12px 0 20px;"
- >
- <template #trigger><el-button class="uploadFile" size="small" type="primary">娴忚</el-button></template>
- </el-upload>
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="鑰楁潗闄勪欢">
- <div class="rows">
- <el-input v-model="model.attachment" placeholder="璇疯緭鍏ヨ�楁潗闄勪欢" size="small" style="width: 90%;"/>
- <el-upload
- ref="upload"
- :action="action"
- :on-success="onSuccessFile"
- :show-file-list="false"
- :headers="uploadHeader"
- style="float: left; margin: 0 12px 0 20px;"
- >
- <template #trigger><el-button class="uploadFile" size="small" type="primary">娴忚</el-button></template>
- </el-upload>
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="澶囨敞">
- <el-input
- v-model="model.remark"
- :rows="2"
- placeholder="璇疯緭鍏ュ娉�"
- size="small"
- type="textarea"
- >
- </el-input>
- </el-form-item>
- </el-col>
+ <div class="section-title">鍩烘湰淇℃伅</div>
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="鑰楁潗绫诲瀷" prop="consumablesType">
+ <el-select v-model="model.consumablesType" placeholder="璇烽�夋嫨鑰楁潗绫诲瀷" style="width: 100%">
+ <el-option v-for="(v, i) in dict.type.consumables_type" :key="i" :label="v.label" :value="v.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鑰楁潗鍚嶇О">
+ <el-input v-model="model.consumablesName" clearable placeholder="璇疯緭鍏ヨ�楁潗鍚嶇О"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璐у彿">
+ <el-input v-model="model.itemNumber" clearable placeholder="璇疯緭鍏ヨ揣鍙�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑙勬牸">
+ <el-input v-model="model.specifications" clearable placeholder="璇疯緭鍏ヨ鏍�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁¢噺鍗曚綅">
+ <el-input v-model="model.unit" clearable placeholder="璇疯緭鍏ヨ閲忓崟浣�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍙傝�冧环鏍�">
+ <el-input-number v-model="model.referencePrice" :min="0" :precision="2" :step="0.01" placeholder="璇疯緭鍏ュ弬鑰冧环鏍�"
+ controls-position="right" style="width: 100%"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀛樻斁浣嶇疆">
+ <el-input v-model="model.storageLocation" clearable placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璐熻矗浜�">
+ <el-select v-model="model.personInCharge" placeholder="璇烽�夋嫨璐熻矗浜�" style="width: 100%">
+ <el-option v-for="(v, i) in userOptions" :key="i" :label="v.name" :value="v.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <div class="section-title">搴撳瓨涓庝緵搴斿晢</div>
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="搴撳瓨涓婇檺">
+ <el-input-number v-model="model.upperLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笂闄�"
+ controls-position="right" style="width: 100%"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="搴撳瓨涓嬮檺">
+ <el-input-number v-model="model.lowerLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笅闄�"
+ controls-position="right" style="width: 100%"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="渚涘簲鍟�">
+ <el-select v-model="model.supplier" placeholder="璇烽�夋嫨渚涘簲鍟�" style="width: 100%">
+ <el-option v-for="(v, i) in supplierOptions" :key="i" :label="v.supplierName"
+ :value="v.supplierManagementId"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <div class="section-title">鍥炬爣涓庨檮浠�</div>
+ <el-row :gutter="24">
+ <el-col :span="24">
+ <el-form-item label="鑰楁潗鍥炬爣">
+ <div class="upload-row">
+ <el-input v-model="model.consumablesIcon" clearable placeholder="涓婁紶鍚庤嚜鍔ㄥ~鍏咃紝涔熷彲鎵嬪姩濉啓"></el-input>
+ <el-upload
+ :action="action"
+ :headers="uploadHeader"
+ :on-success="onSuccessIcon"
+ :show-file-list="false"
+ >
+ <el-button :icon="$icon('el-icon-upload2')" type="primary" plain>涓婁紶</el-button>
+ </el-upload>
+ </div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鑰楁潗闄勪欢">
+ <div class="upload-row">
+ <el-input v-model="model.attachment" clearable placeholder="涓婁紶鍚庤嚜鍔ㄥ~鍏咃紝涔熷彲鎵嬪姩濉啓"></el-input>
+ <el-upload
+ :action="action"
+ :headers="uploadHeader"
+ :on-success="onSuccessFile"
+ :show-file-list="false"
+ >
+ <el-button :icon="$icon('el-icon-upload2')" type="primary" plain>涓婁紶</el-button>
+ </el-upload>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item class="remark-item" label-width="0">
+ <el-input v-model="model.remark" :rows="4" placeholder="璇疯緭鍏ュ娉�" type="textarea"></el-input>
+ </el-form-item>
</el-form>
- <template #footer><span class="dialog-footer">
- <el-button @click="resetForm">鍙� 娑�</el-button>
- <el-button type="primary" @click="submit">淇� 瀛�</el-button>
- </span></template>
+ <template #footer><span class="dialog-footer">
+ <el-button @click="resetForm">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submit">淇� 瀛�</el-button>
+ </span></template>
</el-dialog>
</template>
@@ -130,7 +128,6 @@
addProcurementSuppliesList,
updateProcurementSuppliesList,
selectSupplierManagementAll,
- getProcurementSuppliesContentsNodeNames,
selectUserCondition
} from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro'
export default {
@@ -142,7 +139,6 @@
consumablesIcon: undefined,
attachment: undefined,
},
- procurementSuppliesContentOptions: [],
userOptions: [],
supplierOptions: [],
rules: {
@@ -163,7 +159,6 @@
}
},
mounted() {
- this.findProcurementSuppliesContentOptions()
this.findUserOptions()
this.findSupplierOptions()
},
@@ -178,16 +173,10 @@
console.log("row", row)
this.model = row
} else {
- this.model = {}
+ // 鏂板鏃舵寕鍦ㄥ綋鍓嶅乏鏍戦�変腑鐨勭洰褰曡妭鐐逛笅锛屽瓨鏀句綅缃敼涓烘墜鍔ㄥ~鍐�
+ this.model = { contentId: this.contentsId }
}
this.dialogVisible = true
- },
- findProcurementSuppliesContentOptions() {
- getProcurementSuppliesContentsNodeNames().then(res => {
- if (res.code === 200) {
- this.procurementSuppliesContentOptions = res.data
- }
- })
},
findUserOptions() {
selectUserCondition().then(res => {
@@ -212,6 +201,11 @@
submit() {
this.$refs.modelForm.validate((valid) => {
if (valid) {
+ // 鏂板鐨勮�楁潗鎸傚湪宸︿晶閫変腑鐨勭洰褰曡妭鐐逛笅锛屾湭閫夎妭鐐逛細淇濆瓨鎴愬垪琛ㄩ噷鐪嬩笉鍒扮殑鏁版嵁
+ if (!this.model.id && !this.contentsId) {
+ this.$message.warning('璇峰厛鍦ㄥ乏渚ч�夋嫨鑰楁潗鐩綍鑺傜偣')
+ return
+ }
if (this.model.id) {
updateProcurementSuppliesList(this.model).then(res => {
if (res.code === 200) {
@@ -238,15 +232,45 @@
margin: 6vh auto 50px !important;
}
:deep(.el-dialog__body) {
- max-height: 42em;
+ max-height: 70vh;
overflow-y: auto;
+ padding: 24px 32px;
}
-.rows {
- width: 100%;
+.section-title {
display: flex;
- justify-content: space-between;
+ align-items: center;
+ font-size: 15px;
+ font-weight: 600;
+ color: var(--lims-text);
+ padding-bottom: 10px;
+ border-bottom: 1px solid var(--lims-divider);
+ margin: 8px 0 20px;
}
-:deep(.el-form-item__content) {
- line-height: 39px;
+.section-title:not(:first-child) {
+ margin-top: 28px;
+}
+.section-title::before {
+ content: '';
+ display: inline-block;
+ width: 3px;
+ height: 15px;
+ border-radius: 2px;
+ background: var(--el-color-primary);
+ margin-right: 8px;
+}
+.upload-row {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ width: 100%;
+}
+.upload-row .el-input {
+ flex: 1;
+}
+:deep(.el-form-item) {
+ margin-bottom: 20px;
+}
+.remark-item {
+ margin-top: 28px;
}
</style>
--
Gitblit v1.9.3