From 4153ad698ed765a572c70e4315aefa6a4aead35c Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 17 二月 2025 17:33:56 +0800 Subject: [PATCH] 1.场所或设施联调 --- src/views/structural/premises/index.vue | 314 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 216 insertions(+), 98 deletions(-) diff --git a/src/views/structural/premises/index.vue b/src/views/structural/premises/index.vue index 9b45c72..0204f36 100644 --- a/src/views/structural/premises/index.vue +++ b/src/views/structural/premises/index.vue @@ -18,25 +18,55 @@ </el-form> </div> <div> - <el-button size="small" type="primary" @click="openAdd" icon="el-icon-plus">鏂板</el-button> + <el-button size="small" type="primary" @click="openAdd('add')" icon="el-icon-plus">鏂板</el-button> </div> </div> <div class="table"> <lims-table :tableData="tableData" :column="column" + :height="'calc(100vh - 250px)'" @pagination="pagination" :page="page" :tableLoading="tableLoading"></lims-table> </div> +<!-- 鏂板瀹為獙瀹�--> + <el-dialog :title="formTitle" :visible.sync="addDia" width="450px"> + <el-form ref="laboratoryForm" :model="laboratoryForm" :rules="userRules" + label-position="right" label-width="100px"> + <el-form-item label="瀹為獙瀹ゅ悕绉�" prop="laboratoryName"> + <el-input v-model="laboratoryForm.laboratoryName" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="鍦烘墍缂栫爜" prop="laboratoryNumber"> + <el-input v-model="laboratoryForm.laboratoryNumber" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="瀹為獙瀹や唬鍙�" prop="laboratoryCode"> + <el-input v-model="laboratoryForm.laboratoryCode" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="璐熻矗浜�" prop="head"> + <el-input v-model="laboratoryForm.head" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="璐熻矗浜虹數璇�" prop="phoneNumber"> + <el-input v-model="laboratoryForm.phoneNumber" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="鍦板潃" prop="address"> + <el-input v-model="laboratoryForm.address" size="small" clearable></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="reset">鍙� 娑�</el-button> + <el-button type="primary" @click="customAdd" :loading="loading">纭� 瀹�</el-button> + </span> + </el-dialog> <el-dialog title="鍗扮珷绠$悊" :visible.sync="fileVisible" width="60vw"> <div class="btns"> <el-button size="medium" type="primary" @click="openUpload">鏇存柊鍗扮珷</el-button> </div> -<!-- <ValueTable ref="ValueTable0" :url="$api.sealScope.selectSeal"--> -<!-- :componentData="fileComponentData" :key="upIndex" style="height: 400px;" />--> + <lims-table :tableData="fileComponentData" :column="fileComponentDataColumn" + @pagination="fileComponentPagination" height="500px" + :page="fileComponentPage" :tableLoading="fileComponentTableLoading"></lims-table> </el-dialog> <el-dialog title="鏇存柊鍗扮珷" :visible.sync="upFileVisible" width="400px"> - <div class="search_thing" style="margin-bottom: 16px;"> - <div class="search_label" style="width:90px">鍗扮珷绫诲瀷锛�</div> - <div class="search_input"> + <el-form ref="dataForm" :model="dataForm" :rules="dataFormRules" + label-position="right" label-width="80px"> + <el-form-item label="鍗扮珷绫诲瀷" prop="type"> <el-cascader v-model="dataForm.type" :options="options" @@ -46,12 +76,10 @@ style="width:100%" collapse-tags clearable></el-cascader> - </div> - </div> - <div class="search_thing"> - <div class="search_label" style="width:90px">鍗扮珷鍥剧墖锛�</div> - <div class="search_input"> + </el-form-item> + <el-form-item label="鍗扮珷鍥剧墖" prop="address"> <el-upload + class="avatar-uploader" :action="action" :headers="headers" accept='image/jpg,image/jpeg,image/png' @@ -59,13 +87,12 @@ :on-success="handleSuccess" :on-change="beforeUpload" ref="upload" - :on-error="onError" - > - <img v-if="dataForm.address" :src="javaApi+'/img/'+dataForm.address" style="width: 110px;height: 110px;" > + :on-error="onError"> + <img v-if="dataForm.address" :src="javaApi+'/img/'+dataForm.address" class="avatar" > <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> - </div> - </div> + </el-form-item> + </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="upFileVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="confirmConnect" :loading="loading">纭� 瀹�</el-button> @@ -76,7 +103,15 @@ <script> import limsTable from "@/components/Table/lims-table.vue"; -import {selectItemParameter} from "@/api/structural/laboratoryScope"; +import { + addParameter, + addSeal, + delParameter, + selectItemParameter, + selectSeal, + upParameter +} from "@/api/structural/laboratoryScope"; +import {getCertificationDetail} from "@/api/structural/laboratory"; export default { components: { @@ -120,7 +155,7 @@ name: '缂栬緫', type: 'text', clickFun: (row) => { - this.editForm(row); + this.openAdd('edit', row); }, }, { @@ -145,29 +180,31 @@ size:10, current:1 }, - fileComponentData: { - entity: { - labId:null, - orderBy: { - field: 'id', - order: 'asc' - } - }, - isPage:false, - init:false, - isIndex: true, - showSelect: false, - select: false, - do: [], - tagField: {}, - selectField: { - type:{ - select:[] - } - }, - requiredAdd: [], - requiredUp: [], - addUpload:['address'], + addDia: false, + formTitle: '', + laboratoryForm: { + + }, + operationType: '', + userRules: { + laboratoryName: [{ required: true, message: '璇疯緭鍏ュ疄楠屽鍚嶇О', trigger: 'blur' }], + laboratoryNumber: [{ required: true, message: '璇疯緭鍏ュ満鎵�缂栫爜', trigger: 'blur' }], + head: [{ required: true, message: '璇疯緭鍏ヨ礋璐d汉', trigger: 'blur' }], + phoneNumber: [{ required: true, message: '璇疯緭鍏ヨ礋璐d汉鐢佃瘽', trigger: 'blur' }], + }, + currentRow: {}, + fileComponentTableLoading: false, + fileComponentData: [], + fileComponentDataColumn: [ + {label: '瀹為獙瀹ゅ悕绉�', prop: 'laboratoryName'}, + {label: '鍗扮珷鍥剧墖', prop: 'address', dataType: 'image'}, + {label: '鍗扮珷绫诲瀷', prop: 'type'}, + ], + fileComponentPage: { + total:0, + size:10, + current:1, + layout: 'total, prev, pager, next' }, fileVisible:false, upFileVisible:false, @@ -175,6 +212,10 @@ dataForm:{ type:'', address:'', + }, + dataFormRules: { + type: [{ required: true, message: '璇烽�夋嫨鍗扮珷绫诲瀷', trigger: 'change' }], + address: [{ required: false, message: '璇蜂笂浼犲浘鐗�', trigger: 'change' }], }, props: { multiple: false,emitPath:false,}, options:[ @@ -212,83 +253,130 @@ this.tableLoading = false }) }, - getCertificationDetail(){ - this.$axios.post(this.$api.certification.getCertificationDetail, { - page: { - current: -1, - size: -1, - }, - entity: { - name: null, - } - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code === 201) { - return - } - let arr = res.data.body.records.map(m=>{ - m.value = m.name; - m.label = m.name; - return m - }) - this.options[0].children = arr; - this.fileComponentData.selectField.type.select = arr; - }) - }, + // 閲嶇疆 refresh() { this.resetForm('queryForm') this.refreshTable() }, + // 鍒嗛〉鍒囨崲 pagination (page) { - this.page.size = page.pageNum.limit + this.page.size = page.limit this.refreshTable() }, - openAdd() { - this.$refs.ValueTable.openAddDia(this.$api.laboratoryScope.addParameter); + openAdd(type, row) { + this.formTitle = type === 'add' ? '鏂板瀹為獙瀹�' : '缂栬緫瀹為獙瀹�' + this.operationType = type + if (type === 'edit') { + this.laboratoryForm = this.HaveJson(row) + } + this.addDia = true }, + // 鎻愪氦鏂板銆佺紪杈戝疄楠屽琛ㄥ崟 + customAdd() { + this.$refs['laboratoryForm'].validate((valid) => { + if (valid) { + this.loading = true + if (this.operationType === 'add') { + addParameter(this.laboratoryForm).then(res => { + this.loading = false + if (res.code !== 200) return + this.$message.success('鏂板鎴愬姛') + this.refreshTable() + this.reset() + }).catch(err => { + this.loading = false + }) + } else { + upParameter(this.laboratoryForm).then(res => { + this.loading = false + if (res.code !== 200) return + this.$message.success('淇敼鎴愬姛') + this.refreshTable() + this.reset() + }).catch(err => { + this.loading = false + }) + } + } + }) + }, + reset () { + this.resetForm('laboratoryForm') + this.addDia = false + }, + // 鍒犻櫎瀹為獙瀹� + delete (row) { + this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + delParameter({id: row.id}).then(res => { + this.$message.success('鍒犻櫎鎴愬姛') + this.refreshTable() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => {}) + }, + // 鎵撳紑鍗扮珷绠$悊寮规 + fileManagement(row){ + this.fileVisible = true; + this.fileComponentTableLoading = true + this.currentRow = row + this.getFileComponentList() + }, + getFileComponentList () { + selectSeal({id: this.currentRow.id, ...this.fileComponentPage}).then(res => { + this.fileComponentTableLoading = false + if (res.code === 200) { + this.fileComponentData = res.data.records + this.fileComponentPage.total = res.data.total + } + }).catch(err => { + this.fileComponentTableLoading = false + }) + }, + fileComponentPagination (page) { + this.fileComponentPage.size = page.limit + this.getFileComponentList() + }, + // 鎵撳紑鏇存柊鍗扮珷寮规 openUpload(){ this.dataForm.type = ''; this.dataForm.address = ''; this.upFileVisible = true; + this.getCertificationOperation() }, - fileManagement(row){ - this.fileVisible = true; - this.fileComponentData.entity.labId = row.id; - this.$nextTick(function () { - this.$refs['ValueTable0'].selectList('page') + // 鏌ヨ鍗扮珷绫诲瀷 + getCertificationOperation(){ + const params = { + current: -1, + size: -1, + } + getCertificationDetail(params).then(res => { + this.options[0].children = res.data.records.map(m => { + m.value = m.name; + m.label = m.name; + return m + }); }) }, + // 鎻愪氦鏇存柊鍗扮珷 confirmConnect(){ - if(!this.dataForm.type){ - this.$message.error('鏈笂閫夋嫨鍗扮珷绫诲瀷'); - return - } - if(!this.dataForm.address){ - this.$message.error('鏈笂浼犲嵃绔�'); - return - } - this.loading = true; - this.$axios.post(this.$api.sealScope.addSeal, { - labId:this.fileComponentData.entity.labId, - ...this.dataForm - }, { - headers: { - 'Content-Type': 'application/json' + this.$refs['dataForm'].validate((valid) => { + if (valid) { + this.loading = true; + addSeal({labId:this.currentRow.id, ...this.dataForm}).then(res => { + this.loading = false; + this.getFileComponentList() + this.upFileVisible = false; + }) } - }).then(res => { - this.loading = false; - if (res.code === 201) { - return - } - this.$refs['ValueTable0'].selectList('page') - this.upFileVisible = false; }) }, handleSuccess(response,){ - if (response.code == 200) { + if (response.code === 200) { this.dataForm.address = response.data.url } }, @@ -314,4 +402,34 @@ display: flex; justify-content: space-between; } +.btns{ + text-align: right; + margin-bottom: 10px; +} +::v-deep .el-dialog__body { + padding-top: 8px !important; +} +.avatar-uploader ::v-deep .el-upload { + border: 1px dashed #666666; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; +} +.avatar-uploader ::v-deep .el-upload:hover { + border-color: #409EFF; +} +.avatar-uploader-icon { + font-size: 20px; + color: #8c939d; + width: 90px; + height: 90px; + line-height: 90px; + text-align: center; +} +.avatar { + width: 90px; + height: 90px; + display: block; +} </style> -- Gitblit v1.9.3