From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期二, 29 四月 2025 13:25:29 +0800 Subject: [PATCH] Merge branch 'dev' into dev_tides --- src/views/structural/premises/index.vue | 416 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 408 insertions(+), 8 deletions(-) diff --git a/src/views/structural/premises/index.vue b/src/views/structural/premises/index.vue index 65bfbb8..2b9b750 100644 --- a/src/views/structural/premises/index.vue +++ b/src/views/structural/premises/index.vue @@ -1,13 +1,413 @@ -<script> -export default { - name: "index" -} -</script> - <template> - + <div class="capacity-scope"> + <div class="search"> + <div> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> + <el-form-item label="瀹為獙瀹ゅ悕绉�" prop="laboratoryName"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.laboratoryName" + @keyup.enter.native="refreshTable"></el-input> + </el-form-item> + <el-form-item label="瀹為獙瀹ょ紪鐮�" prop="laboratoryNumber"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.laboratoryNumber" + @keyup.enter.native="refreshTable"></el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button> + <el-button size="mini" @click="refresh">閲嶇疆</el-button> + </el-form-item> + </el-form> + </div> + <div> + <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> + <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"> + <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" :show-all-levels="false" :props="props" + placeholder="璇烽�夋嫨" size="small" style="width:100%" collapse-tags clearable></el-cascader> + </el-form-item> + <el-form-item label="鍗扮珷鍥剧墖" prop="address"> + <el-upload class="avatar-uploader" :action="action" :headers="uploadHeader" + accept='image/jpg,image/jpeg,image/png' :show-file-list="false" :on-success="handleSuccess" + :on-change="beforeUpload" ref="upload" :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> + </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> + </span> + </el-dialog> + </div> </template> -<style scoped lang="scss"> +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import { + addParameter, + addSeal, + delParameter, + selectItemParameter, + selectSeal, + upParameter +} from "@/api/structural/laboratoryScope"; +import { getCertificationDetail } from "@/api/structural/laboratory"; +export default { + components: { + limsTable + }, + computed: { + action() { + return this.javaApi + '/deviceScope/uploadFile' + } + }, + data() { + return { + queryParams: { + laboratoryName: '', + laboratoryNumber: '', + }, + tableData: [], + tableLoading: false, + column: [ + { label: '瀹為獙瀹ゅ悕绉�', prop: 'laboratoryName' }, + { label: '鍦烘墍缂栫爜', prop: 'laboratoryNumber' }, + { label: '瀹為獙瀹や唬鍙�', prop: 'laboratoryCode' }, + { label: '璐熻矗浜�', prop: 'head' }, + { label: '璐熻矗浜虹數璇�', prop: 'phoneNumber' }, + { label: '鍦板潃', prop: 'address' }, + { label: '鍒涘缓浜�', prop: 'createUserName' }, + { label: '鍒涘缓鏃堕棿', prop: 'createTime' }, + { + dataType: 'action', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openAdd('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.delete(row); + }, + }, + { + name: '鍗扮珷绠$悊', + type: 'text', + clickFun: (row) => { + this.fileManagement(row); + }, + }, + ] + } + ], + page: { + total: 0, + size: 10, + current: 1 + }, + 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, + loading: false, + dataForm: { + type: '', + address: '', + }, + dataFormRules: { + type: [{ required: true, message: '璇烽�夋嫨鍗扮珷绫诲瀷', trigger: 'change' }], + address: [{ required: false, message: '璇蜂笂浼犲浘鐗�', trigger: 'change' }], + }, + props: { multiple: false, emitPath: false, }, + options: [ + { + value: '瀹為獙瀹よ祫璐�', + label: '瀹為獙瀹よ祫璐�', + children: [] + }, + { + value: '濮旀墭鎶ュ憡', + label: '濮旀墭鎶ュ憡', + children: null + }, + { + value: '杩涘巶鎶ュ憡', + label: '杩涘巶鎶ュ憡', + children: null + }, + ], + } + }, + mounted() { + this.refreshTable() + }, + methods: { + refreshTable() { + this.tableLoading = true + selectItemParameter({ ...this.page, ...this.queryParams }).then(res => { + this.tableLoading = false + if (res.code === 200) { + this.tableData = res.data.records + this.page.total = res.data.total + } + }).catch(err => { + this.tableLoading = false + }) + }, + // 閲嶇疆 + refresh() { + this.resetForm('queryForm') + this.refreshTable() + }, + // 鍒嗛〉鍒囨崲 + pagination(page) { + this.page.size = page.limit + this.refreshTable() + }, + 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(() => { }) + }, + // 鎵撳紑鍗扮珷绠$悊寮规 + 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() + }, + // 鏌ヨ鍗扮珷绫诲瀷 + 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() { + 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; + }) + } + }) + }, + handleSuccess(response,) { + if (response.code === 200) { + this.dataForm.address = response.data.url + } + }, + beforeUpload(file, type) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + return true; + } + }, + onError(err, file, fileList, type) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + } +} +</script> +<style scoped> +.search { + height: 46px; + 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