From 36a30a262c16b6c37be7d1817c46d6693a324cc4 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期四, 19 十二月 2024 13:15:57 +0800
Subject: [PATCH] 完成管理评审搬迁

---
 src/components/do/a6-device/files.vue |  657 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 649 insertions(+), 8 deletions(-)

diff --git a/src/components/do/a6-device/files.vue b/src/components/do/a6-device/files.vue
index 96e1efa..247d503 100644
--- a/src/components/do/a6-device/files.vue
+++ b/src/components/do/a6-device/files.vue
@@ -1,8 +1,649 @@
-<!--
- * @Author: licp lichunping@guanfang.com.cn
- * @Date: 2024-07-29 15:43:42
- * @LastEditors: licp lichunping@guanfang.com.cn
- * @LastEditTime: 2024-07-29 15:43:48
- * @FilePath: \center-lims-before\src\components\do\a6-device\files.vue
- * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--->
+<template>
+  <div class="page">
+    <div class="page-header">
+      <h4><span class="line"></span><span>璁惧妗f</span></h4>
+      <div class="btns">
+        <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>
+    <el-row :gutter="20">
+      <el-col :span="6">
+        <el-image src="" fit="fill" style="width: 200px;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 30px;margin-top: 20px;">
+          <div slot="error" class="image-slot">
+            <i class="el-icon-picture-outline" style="font-size: 40px;"></i>
+          </div>
+        </el-image>
+      </el-col>
+      <el-col :span="8">
+        <div class="form-item">
+          <label>璁惧鍚嶇О</label>
+          <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p>
+        </div>
+        <div class="form-item">
+          <label>澶х被</label>
+          <p>{{ handleData('鍒嗘瀽浠櫒') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鍐呴儴缂栧彿</label>
+          <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鐢熶骇鍘傚</label>
+          <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p>
+        </div>
+        <div class="form-item">
+          <label>璧勪骇缂栫爜</label>
+          <p>{{ handleData('鎵弿鐢甸暅(甯﹁兘璋�)') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鍑哄巶鏃ユ湡</label>
+          <p>{{ handleData('2024-7-20') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鍚敤鏃ユ湡</label>
+          <p>{{ handleData('2024-7-20') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鏍稿噯鍛ㄦ湡(鏈�)</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+        <div class="form-item">
+          <label>妫�娴嬬被鍨�</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鎶ュ簾鏃堕棿</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+        <div class="form-item">
+          <label>鍑嗙‘搴﹂噺鍊�</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+        <div class="form-item">
+          <label>琚巿鏉冧汉</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+        <div class="form-item">
+          <label>缁翠慨璁板綍</label>
+          <p>{{ handleData('12') }}</p>
+        </div>
+      </el-col>
+      <el-col :span="10">
+        <div class="form-item">
+          <label>瑙勬牸鍨嬪彿</label>
+          <p>{{ handleData('JSM-6010LA') }}</p>
+        </div>
+        <div class="form-item">
+          <label>缁嗙被</label>
+          <p>{{ handleData('鍒嗘瀽浠櫒') }}</p>
+        </div>
+        <div class="form-item">
+          <label>璁惧鐘舵��</label>
+          <el-radio-group v-model="form.value1" disabled>
+            <el-radio :label="0" style="width: 40px;">鍚堟牸</el-radio>
+            <el-radio :label="1" style="width: 40px;">缁翠慨</el-radio>
+            <el-radio :label="2" style="width: 40px;">鍋滅敤</el-radio>
+            <el-radio :label="3" style="width: 40px;">鎶ュ簾</el-radio>
+          </el-radio-group>
+        </div>
+        <div class="form-item">
+          <label>鍑哄巶缂栧彿</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>瀛樻斁鐐�</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>璐疆鏃ユ湡</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>浜у湴</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>鏈�杩戞函婧愭棩鏈�</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>閲囪喘璐圭敤(鍏�)</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>鍋滅敤鏃堕棿</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>璁惧璐熻矗浜�</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>楠屾敹璁板綍</label>
+          <p>{{ handleData() }}</p>
+        </div>
+        <div class="form-item">
+          <label>鏍稿噯璇佷功</label>
+          <p>{{ handleData() }}</p>
+        </div>
+      </el-col>
+    </el-row>
+    <h4 style="margin-bottom: 10px;margin-top: 10px;"><span class="line"></span><span>闄勪欢鍜岀浉鍏虫枃妗�</span></h4>
+    <div class="tables">
+      <ValueTable ref="ValueTable"
+				: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>
+
+<script>
+import ValueTable from '../../tool/value-table.vue'
+export default {
+  components: {
+    ValueTable
+  },
+  data(){
+    return{
+      componentData: {
+        entity: {
+          week: null,
+          weekDay: null,
+          dateTime: null,
+          name:null,
+          orderBy: {
+            field: 'id',
+            order: 'desc'
+          }
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        isPage:false,
+        do: [{
+          id: 'getFile',
+          font: '闄勪欢',
+          type: 'text',
+          method: 'getFile'
+        }, {
+          id: 'handleLook',
+          font: '鏌ョ湅',
+          type: 'text',
+          method: 'handleLook'
+        },{
+          id: 'delete',
+          font: '鍒犻櫎',
+          type: 'text',
+          method: 'doDiy',
+          disabFun: (row, index) => {
+            return row.state === '宸插鏍�' || row.state === '宸叉壒鍑�'
+          }
+        }],
+        tagField: {
+          shift:{
+            select:[]
+          },
+          state:{
+            select:[
+              {
+                label:'宸叉彁浜�',
+                value:'宸叉彁浜�',
+                type:'primary'
+              },
+              {
+                label:'宸插鏍�',
+                value:'宸插鏍�',
+                type:'warning'
+              },
+              {
+                label:'宸叉壒鍑�',
+                value:'宸叉壒鍑�',
+                type:'success'
+              },
+            ]
+          },
+          weekDay:{
+            select:[]
+          }
+        },
+        linkEvent: {},
+        selectField: {
+          shift:{
+            select:[]
+          },
+          state:{
+            select:[
+              {
+                label:'宸叉彁浜�',
+                value:'宸叉彁浜�',
+                type:'primary'
+              },
+              {
+                label:'宸插鏍�',
+                value:'宸插鏍�',
+                type:'warning'
+              },
+              {
+                label:'宸叉壒鍑�',
+                value:'宸叉壒鍑�',
+                type:'success'
+              },
+            ]
+          },
+          weekDay:{
+            select:[]
+          }
+        },
+        requiredAdd: [],
+        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){
+      if(m){
+        return m
+      }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>
+
+<style scoped>
+.page{
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+.page-header{
+  display: flex;
+  justify-content: space-between;
+}
+h4{
+  display: flex;
+  align-items: center;
+}
+h4 .line{
+  display: inline-block;
+  width: 3px;
+  height: 16px;
+  background: #3A7BFA;
+  margin-right: 4px;
+}
+.tables{
+  width: calc(100vw - 390px);
+}
+.el-image {
+  position: relative;
+}
+.el-icon-picture-outline{
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%,-50%);
+}
+.form-item{
+  line-height: 34px;
+  display: flex;
+  align-items: center;
+  font-size: 14px;
+}
+.form-item label{
+  width: 110px;
+  display: inline-block;
+  text-align: right;
+  margin-right: 20px;
+  color: #999;
+}
+.btns {
+  display: flex;
+  align-items: center;
+}
+</style>

--
Gitblit v1.9.3