From 248d9f8b01d9a395af66f2336cb0b1eeeff2bd0a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 19 二月 2025 10:10:03 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev
---
src/views/structural/premises/index.vue | 438 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 430 insertions(+), 8 deletions(-)
diff --git a/src/views/structural/premises/index.vue b/src/views/structural/premises/index.vue
index 65bfbb8..0204f36 100644
--- a/src/views/structural/premises/index.vue
+++ b/src/views/structural/premises/index.vue
@@ -1,13 +1,435 @@
-<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" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button>
+ <el-button icon="el-icon-refresh" 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="headers"
+ 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: {
+ headers() {
+ return {
+ 'token': sessionStorage.getItem('token')
+ }
+ },
+ action() {
+ return this.javaApi
+ }
+ },
+ 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',
+ fixed: 'right',
+ label: '鎿嶄綔',
+ width: '180px',
+ 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(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()
+ },
+ // 鏌ヨ鍗扮珷绫诲瀷
+ 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