From 760d1a1f815d349832a36fac25b28abb51ff53d4 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期三, 25 九月 2024 17:20:35 +0800
Subject: [PATCH] 1.检验任务提交之后的弹框,填写 试验信息只有在电路试验的站点才会进行填写,其余站点不需要
---
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