From 6f30bbf4f118d3357d1e6e503aa986227e2cc6ea Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期二, 20 八月 2024 09:33:40 +0800
Subject: [PATCH] 更新代码

---
 src/components/do/a6-device/files.vue |  350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 346 insertions(+), 4 deletions(-)

diff --git a/src/components/do/a6-device/files.vue b/src/components/do/a6-device/files.vue
index bdb6021..247d503 100644
--- a/src/components/do/a6-device/files.vue
+++ b/src/components/do/a6-device/files.vue
@@ -3,8 +3,20 @@
     <div class="page-header">
       <h4><span class="line"></span><span>璁惧妗f</span></h4>
       <div class="btns">
-        <el-button type="primary" size="small">淇妗f</el-button>
-        <el-button type="primary" size="small">娣诲姞闄勪欢</el-button>
+        <el-button type="primary" size="small" @click="dialogVisible=true" style="margin-right: 16px;">淇妗f</el-button>
+        <!-- <el-button type="primary" size="small">娣诲姞闄勪欢</el-button> -->
+        <el-upload
+            class="upload-demo"
+            :action="action"
+            :headers="headers"
+            :show-file-list="false"
+            :limit="1"
+            :before-upload="beforeUpload"
+            :on-success="handleSuccess"
+            ref="upload"
+            :on-error="onError">
+            <el-button size="small" type="primary" :loading="inLoading">娣诲姞闄勪欢</el-button>
+          </el-upload>
       </div>
     </div>
     <el-divider></el-divider>
@@ -136,6 +148,152 @@
 				:url="$api.auxiliaryWorkingHoursDay.selectAuxiliaryWorkingHoursDay"
 				:delUrl="$api.auxiliaryWorkingHoursDay.deleteAuxiliaryWorkingHoursDay" :componentData="componentData" :key="upIndex" style="min-height: 400px;"/>
     </div>
+    <el-dialog title="妗f淇" :visible.sync="dialogVisible" width="70%" :before-close="handleClose">
+			<el-row style="display:flex;justify-content: space-around;">
+				<!-- 宸﹁竟甯冨眬 -->
+				<el-col :span="7">
+					<el-col>
+						<!-- 鍥剧墖 -->
+						<el-image class="img" style="width:100%;height: 320px;marginBottom:16px"
+							:src="javaApi+'/img/'+formData.imageUpload">
+							<div slot="error" class="image-error" style="width: calc(100% -2px);
+            height: 318px;
+            border-radius: 16px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border: 1px solid #EEEEEE;">
+								<i class="el-icon-picture-outline" style="font-size:60px;color:#666666;"></i>
+							</div>
+						</el-image>
+						<!-- 琛ㄥ崟 -->
+						<el-form :model="formData" label-width="120px">
+							<el-form-item label="浠櫒鍚嶇О:" required>
+							<el-input v-model="formData.deviceName" size="small"></el-input>
+										</el-form-item>
+							<el-form-item label="浠櫒鍚嶇ОEN:" required>
+								<el-input v-model="formData.enDeviceName" size="small"></el-input>
+											</el-form-item>
+							<el-form-item label="瑙勬牸鍨嬪彿:" required>
+								<el-input v-model="formData.specificationModel" size="small"></el-input>
+											</el-form-item>
+							<el-form-item label="鐢熶骇鍘傚:">
+								<el-input v-model="formData.manufacturer" size="small"></el-input>
+											</el-form-item>
+										</el-form>
+									</el-col>
+								</el-col>
+								<!-- 涓棿甯冨眬 -->
+								<el-col :span="7">
+									<el-form :model="formData" label-width="116px">
+										<el-form-item label="鏍″噯鏈嶅姟鏈烘瀯:">
+							<el-input v-model="formData.calibrationServices" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="鍑哄巶缂栧彿:">
+							<el-input v-model="formData.factoryNo" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="绠$悊缂栧彿:" required>
+							<el-input v-model="formData.managementNumber" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="璐疆鏃ユ湡:">
+											<el-date-picker style="width:100%" v-model="formData.acquisitionDate" type="date"
+												format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+											</el-date-picker>
+										</el-form-item>
+							<el-form-item label="鍚敤鏃ユ湡:" required>
+											<el-date-picker style="width:100%" v-model="formData.activationDate" type="date"
+												format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
+											</el-date-picker>
+										</el-form-item>
+							<el-form-item label="绠$悊浜�:">
+							<el-select v-model="formData.equipmentManager" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+								<el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label"
+								:value="item.value">
+								</el-option>
+							</el-select>
+							</el-form-item>
+							<el-form-item label="瀛樻斁鐐�:">
+							<el-input v-model="formData.storagePoint" size="small"></el-input>
+							</el-form-item>
+							<el-form-item label="鎶�鏈寚鏍�:">
+							<el-input v-model="formData.technicalIndicators" :rows="7" type="textarea" size="small"></el-input>
+							</el-form-item>
+					</el-form>
+				</el-col>
+				<!-- 鍙宠竟甯冨眬 -->
+				<el-col :span="7">
+					<el-form :model="formData" label-width="140px" ref="ruleForm">
+            <!-- 瀹為獙瀹ゅ垪琛� -->
+            <el-form-item label="鎵�灞為儴闂�:">
+              <el-select v-model="formData.subordinateDepartmentsId" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+                <el-option v-for="item in subordinateDepartmentsList" :key="item.value" :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="妫�娴嬮」鐩�:">
+              <el-cascader
+              v-model="formData.insProductIds"
+              :options="options"
+              :show-all-levels="false"
+              :props="props"
+              placeholder="璇烽�夋嫨" size="small"
+              style="width:100%;"
+              :collapse-tags="true"
+              separator=","
+			  filterable
+              clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="鏈�杩戞牎鍑嗘棩鏈�:">
+							<el-date-picker style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd"
+								value-format="yyyy-MM-dd" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+							</el-date-picker>
+						</el-form-item>
+            <el-form-item label="涓嬫鏍″噯鏃ユ湡:">
+							<el-date-picker style="width:100%" v-model="formData.latestTraceability" format="yyyy-MM-dd"
+								value-format="yyyy-MM-dd" type="date" size="small" placeholder="閫夋嫨鏃ユ湡">
+							</el-date-picker>
+						</el-form-item>
+            <el-form-item label="璁惧绫诲瀷:">
+              <el-select v-model="formData.largeCategory" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+                <el-option v-for="item in equipmentList" :key="item.value" :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鍗曚环(涓囧厓):">
+              <el-input v-model="formData.unitPrice" size="small"></el-input>
+            </el-form-item>
+            <el-form-item label="褰撳墠鐘舵��:" required>
+							<el-select v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%">
+								<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
+								</el-option>
+							</el-select>
+						</el-form-item>
+            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
+              <el-input v-model="formData.calibrationDate" size="small"></el-input>
+            </el-form-item>
+						<el-form-item label="鍥剧墖:">
+							<div
+								style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;">
+								<div v-show="formData.imageName" class="picName">{{formData.imageName}}</div>
+								<el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
+									accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload"
+									:on-error="onError" ref='upload'>
+									<el-button type="text" style="height:30px;padding-top:8px">涓婁紶</el-button>
+								</el-upload>
+							</div>
+						</el-form-item>
+					</el-form>
+				</el-col>
+			</el-row>
+			<span slot="footer" class="dialog-footer">
+				<el-row>
+					<el-button @click="handleClose">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submitForm" :loading="upLoad">纭� 瀹�</el-button>
+				</el-row>
+			</span>
+		</el-dialog>
   </div>
 </template>
 
@@ -240,10 +398,36 @@
         requiredUp: []
 			},
       upIndex:0,
+      dialogVisible:false,
+      inLoading:false,
       form: {
         value1:''
-      }
+      },
+      upLoad:false,
+      formData:{},
+      responsiblePersonList:[],
+      subordinateDepartmentsList:[],
+      options:[],
+      equipmentList:[],
+      deviceStatusList:[],
+      props: { multiple: true,emitPath:false,value:'id',label:'name' },
     }
+  },
+  computed: {
+    headers() {
+      return {
+        'token': sessionStorage.getItem('token')
+      }
+    },
+    action() {
+      return this.javaApi + this.$api.deviceScope.uploadFile
+    }
+  },
+  mounted(){
+    this.selectDevicePrincipal()
+    this.obtainItemParameterList()
+    this.getInsProductIds()
+    this.selectEnumByCategory()
   },
   methods: {
     handleData(m){
@@ -252,7 +436,161 @@
       }else{
         return '-'
       }
-    }
+    },
+    handleClose(){
+      this.dialogVisible = false
+    },
+    handleSuccess(response,){
+      this.inLoading = false;
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛')
+        // 鏇存柊椤甸潰
+      }else{
+        this.$message.error(response.message)
+      }
+    },
+    submitForm(){
+      if(!this.formData.deviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+          return
+        }
+        if(!this.formData.enDeviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
+          return
+        }
+        if(!this.formData.specificationModel){
+          this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
+          return
+        }
+        if(!this.formData.managementNumber){
+          this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
+          return
+        }
+        if(!this.formData.activationDate){
+          this.$message.error('鏈緭鍏ュ惎鐢ㄦ棩鏈�')
+          return
+        }
+        if(this.formData.deviceStatus==='' || this.formData.deviceStatus===null){
+          this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
+          return
+        }
+        if(!this.formData.calibrationDate){
+          this.$message.error('鏈緭鍏ユ牎鍑嗗懆鏈燂紙鏈堬級')
+          return
+        }
+				delete this.formData.createTime
+				delete this.formData.updateTime
+				delete this.formData.createUser
+				delete this.formData.updateUser
+        this.formData.insProductIds = this.formData.insProductIds?this.formData.insProductIds.join():''
+        this.upLoad = true;
+				this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, {
+					headers: {
+						'Content-Type': 'application/json'
+					}
+				}).then(res => {
+					if (res.code === 201) {
+						this.upLoad = false
+						return
+					}
+					this.$message.success('淇敼鎴愬姛')
+					this.upLoad = false
+					this.dialogVisible = false
+				}).catch(e => {
+					this.$message.error('淇敼澶辫触')
+					this.dialogVisible = false
+					this.upLoad = false
+				})
+    },
+    handleSuccessUpImg2(response) {
+      if (response.code == 200) {
+        this.$nextTick(() => {
+          this.formData.imageUpload = response.data.url;
+          this.formData.imageName = response.data.name;
+        })
+      }
+    },
+    beforeUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        return false;
+      } else {
+        return true;
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    // 鑾峰彇璐熻矗浜哄垪琛�
+    selectDevicePrincipal() {
+      this.$axios.get(this.$api.deviceScope.selectDevicePrincipal).then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.name,
+            value: a.id
+          })
+        })
+        this.responsiblePersonList = data
+      })
+    },
+    obtainItemParameterList() {
+      this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
+        let data = []
+        res.data.forEach(a=>{
+          data.push({
+            label: a.laboratoryName,
+            value: a.id
+          })
+        })
+        this.subordinateDepartmentsList = data
+      })
+    },
+    getInsProductIds(){
+      this.$axios.post(this.$api.capacityScope.getInsProduction).then(res => {
+        this.options = res.data.map((m,i)=>{
+          m.id = m.name;
+          return m
+        })
+        this.options.forEach(item=>{
+          if(item.children.length==0){
+            item.children = null;
+          }else{
+            item.children.forEach(m=>{
+              if(m.children.length==0){
+                m.children = null;
+              }else{
+                m.children.forEach(n=>{
+                  if(n.children&&n.children.length==0){
+                    n.children = null;
+                  }
+                })
+              }
+            })
+          }
+        })
+      })
+    },
+    // 鑾峰彇瀛楀吀
+    selectEnumByCategory() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "璁惧鐘舵��"
+      }).then(res => {
+        this.deviceStatusList = res.data
+        this.deviceStatusList.forEach(a=>{
+          if(!isNaN(a.value)){
+            a.value = parseInt(a.value)
+          }
+        })
+      })
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "璁惧鍒嗙被"
+      }).then(res => {
+        this.equipmentList = res.data
+      })
+    },
   }
 }
 </script>
@@ -304,4 +642,8 @@
   margin-right: 20px;
   color: #999;
 }
+.btns {
+  display: flex;
+  align-items: center;
+}
 </style>

--
Gitblit v1.9.3