From 22a0512510da46df94afd7f7733cdf6c6bc38518 Mon Sep 17 00:00:00 2001 From: yuyu <1981343953@qq.com> Date: 星期三, 30 八月 2023 11:34:03 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- .env.development | 2 src/api/inspection/commisioninspection.js | 19 src/views/experiment/inspectionApplication/index.vue | 2 src/views/inspectionManagement/reportForInspection/index.vue | 1016 +++++++++++++++--------------- src/views/laboratory/organizational/index.vue | 1 src/views/CNAS/satisfactionSurveys/index.vue | 4 src/views/laboratory/personnel/index.vue | 801 ++++++++++------------- src/api/inspection/rawmaterial.js | 16 src/layout/components/Sidebar/SidebarItem.vue | 1 src/views/experiment/inspectionApplication/Viewdetails/index.vue | 20 src/views/inspectionManagement/commissionInspection/addCommision.vue | 62 + src/views/inspectionManagement/commissionInspection/index.vue | 23 12 files changed, 964 insertions(+), 1,003 deletions(-) diff --git a/.env.development b/.env.development index d00c942..ab9be2d 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = 'http://192.168.110.107:1234/' +VUE_APP_BASE_API = 'http://localhost:1234/' diff --git a/src/api/inspection/commisioninspection.js b/src/api/inspection/commisioninspection.js index 4deddd4..d986bb3 100644 --- a/src/api/inspection/commisioninspection.js +++ b/src/api/inspection/commisioninspection.js @@ -25,6 +25,14 @@ }) } +// +export function getContractsSampleInfo(params){ + return request({ + url: 'link-basic/getContractsSampleInfo', + method: 'get', + params + }) +} //瑙勬牸鍨嬪彿 export function getModelSpecification(params){ return request({ @@ -57,7 +65,6 @@ }) } - export function isIfViewUUID(params){ return request({ url: '/link-basic/isIfViewUUID', @@ -72,4 +79,12 @@ method: 'get', params }) -} \ No newline at end of file +} + +export function delLink(params){ + return request({ + url: '/link-basic-table/delLink', + method: 'post', + params + }) +} diff --git a/src/api/inspection/rawmaterial.js b/src/api/inspection/rawmaterial.js index f32b4c3..9b975ce 100644 --- a/src/api/inspection/rawmaterial.js +++ b/src/api/inspection/rawmaterial.js @@ -8,3 +8,19 @@ params }) } + +export function addInspect(data){ + return request({ + url: '/inspection/addInspect', + method: 'post', + data + }) +} + +export function selectInspectsListById(params){ + return request({ + url: '/inspection/selectInspectsListById', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue index 3e5922c..cf9ad14 100644 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -2,7 +2,6 @@ <div v-if="!item.hidden"> <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)"> - <el-menu-item v-if="onlyOneChild.meta.show==false ?onlyOneChild.meta.show: true" :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}"> <item :show="onlyOneChild.meta.show" :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" /> <span v-if="onlyOneChild.meta.title==='涓婚〉'">涓婚〉</span> diff --git a/src/views/CNAS/satisfactionSurveys/index.vue b/src/views/CNAS/satisfactionSurveys/index.vue index 05f49fe..c89b437 100644 --- a/src/views/CNAS/satisfactionSurveys/index.vue +++ b/src/views/CNAS/satisfactionSurveys/index.vue @@ -224,7 +224,7 @@ otherSupplements: "鏃�", improvementRequirements: "鏃�", dialogVisible2: false, - path: 'http://192.168.110.254:1234/cnasSatisfactionSurvey/uploadFile', + path: 'http://localhost:1234/cnasSatisfactionSurvey/uploadFile', ruleForm: { surveyDate: '', userUnit: '', @@ -263,7 +263,7 @@ } }, created() { - + // this.path=process.env.VUE_APP_BASE_API+"cnasSatisfactionSurvey/uploadFile" }, mounted() { this.getData() diff --git a/src/views/experiment/inspectionApplication/Viewdetails/index.vue b/src/views/experiment/inspectionApplication/Viewdetails/index.vue index 8e0fb3c..244a2d7 100644 --- a/src/views/experiment/inspectionApplication/Viewdetails/index.vue +++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue @@ -1,7 +1,7 @@ <template> <div> <div style="overflow: hidden;"> - <el-card style="margin: 10px;" v-model="searchData" > + <el-card style="margin: 10px;" > <div slot="header" class="clearfix"> <span> <i slot="prefix" class="el-icon-s-home" /> @@ -116,7 +116,7 @@ <el-table-column prop="userName" label="缁忛獙浜�"> <template slot-scope="scope"> <el-select v-model="value" size="small" slot="append" style="width: 220px;"> - <el-option v-for="item in ZERENren" :key="item.id" :label="item.name" :value="item.name"></el-option> + <el-option v-for="(item,indxe) in ZERENren" :key="indxe" :label="item.name" :value="item.name"></el-option> </el-select> </template> </el-table-column> @@ -125,7 +125,7 @@ label="瀹為獙璁惧"> <template slot-scope="scope"> <el-select v-model="SHEbei" size="small" slot="append" style="width: 220px;"> - <el-option v-for="item in getDevices" :key="item.id" :label="item.name"></el-option> + <el-option v-for="(item,index) in getDevices" :key="index" :label="item.name"></el-option> </el-select> </template> </el-table-column> @@ -141,10 +141,20 @@ export default { data(){ return { - searchData:{ }, + searchData:{ + formTime: '', + supplier: '', + code: '', + name: '', + specifications: '', + unit: '', + num: '', + endTime: '', + userName: '', + }, insProducts:[], value:'', - SHEbei:'', + SHEbei:[], aaa:{}, ZERENren:[], // getDevices:[] diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue index 78e28ef..94664a1 100644 --- a/src/views/experiment/inspectionApplication/index.vue +++ b/src/views/experiment/inspectionApplication/index.vue @@ -517,8 +517,6 @@ watch: { $route: { handler(val, oldval) { - console.log(val) // 鏂拌矾鐢变俊鎭� - console.log(oldval) // 鑰佽矾鐢变俊鎭� }, // 娣卞害瑙傚療鐩戝惉 deep: true diff --git a/src/views/inspectionManagement/commissionInspection/addCommision.vue b/src/views/inspectionManagement/commissionInspection/addCommision.vue index 5874594..cbb7408 100644 --- a/src/views/inspectionManagement/commissionInspection/addCommision.vue +++ b/src/views/inspectionManagement/commissionInspection/addCommision.vue @@ -21,13 +21,11 @@ :data="detectionInfo" style="width: 100%;margin-bottom: 20px;"> <el-table-column type="index" label="搴忓彿" min-width="10%" /> <el-table-column prop="sampleNumber" label="鏍峰搧缂栧彿" min-width="8%" /> - <el-table-column prop="sampleName" label="鏍峰搧鍚嶇О" min-width="10%" /> - <el-table-column prop="specificationsModels" label="瑙勬牸鍨嬪彿" min-width="10%" /> <el-table-column prop="unit" label="鍗曚綅" min-width="8%" /> <el-table-column prop="samplesNumber" label="鏁伴噺" min-width="8%" /> - <el-table-column prop="addway" label="娣诲姞鏂瑰紡" min-width="8%"> + <!-- <el-table-column prop="addway" label="娣诲姞鏂瑰紡" min-width="8%"> <template slot-scope="scope"> <div v-if="scope.row.addway === 0"> <el-tag type="success" disable-transitions>鎵弿</el-tag> @@ -37,7 +35,7 @@ </div> <div v-else></div> </template> - </el-table-column> + </el-table-column> --> <el-table-column prop="remarks" label="澶囨敞" min-width="8%" /> <el-table-column label="鎿嶄綔" min-width="8%"> <template slot-scope="scope"> @@ -102,8 +100,8 @@ <el-col :span="5"> <el-form-item label="閫佹牱鏂瑰紡锛�"> <el-select style="width: 200px;" v-model="infoForm.way" size="small" placeholder="閫佹牱"> - <el-option v-for="options in sampleDeliveryMode" :key="options.key" - :value="options.value">{{ options.value }}</el-option> + <el-option v-for="options in sampleDeliveryMode" :key="options.key" :value="options.key" + :label="options.value">{{ options.value }}</el-option> </el-select> </el-form-item> </el-col> @@ -229,7 +227,8 @@ getlink, addInspection, isIfViewUUID, - getProductList + getProductList, + getContractsSampleInfo } from '@/api/inspection/commisioninspection' export default { data() { @@ -274,17 +273,8 @@ key: '4', label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' }], - sampleoptions: [{ - key: '1', - value: '閫夐」1' - }, { - key: '2', - value: '閫夐」2' - }], - samplecodeoptions: [{ - key: '1', - value: '' - }], + sampleoptions: [], + samplecodeoptions: [], model_spe_options: [], model_sta_options: [], model_options: [], @@ -325,6 +315,7 @@ this.viewId = this.$route.params.viewId this.$store.commit('settings/SAVE_LINK', this.viewId) this.getlink(this.$route.params.viewId) + this.getContractsSampleInfo(this.$route.params.viewId) }, mounted() { this.getSampleName() @@ -342,8 +333,16 @@ if (!res.data) { this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') this.$router.push('/404') + } else { + this.getContractsSampleInfo() } }) + }, + async getContractsSampleInfo(viewId) { + let res = await getContractsSampleInfo({ + viewId + }) + console.log(res.data); }, async getSampleName() { const res = await getSampleName() @@ -373,8 +372,6 @@ for (let i = 1; i < this.addPointerForm.experiment.length; i++) { exper += ',' + this.addPointerForm.experiment[i] } - - // console.log(exper) this.addPointerForm.experiment = exper let tmp = this.addPointerForm this.detectionInfo.push(tmp) @@ -414,7 +411,7 @@ this.infoForm.commisioncode = res.data if (res.data) { this.$message({ - message: '鎭枩浣�!', + message: '娣诲姞鎴愬姛!', type: 'success' }) this.showDetail = true @@ -447,6 +444,29 @@ return item.name }) }) + }, + getContractsSampleInfo() { + getContractsSampleInfo({ + viewId: this.viewId + }).then(res => { + if (res.data == null) return + this.infoForm = { + commisioncode: res.data.entrustCoding, + deadline: res.data.completionDeadline, + address: res.data.contactAddress, + tel: res.data.contactNumber, + contacter: res.data.contacts, + other: res.data.entrustRemarks, + department: res.data.entrusted, + time: res.data.inspectionTime, + detectionInfo: res.data.linkDetectionList, + num: res.data.reportNumber, + way: '' + res.data.sampleDeliveryMode, + sendertel: res.data.sampleDeliveryPhone, + sender: res.data.sampleSender + } + this.detectionInfo = res.data.linkDetectionList + }) } } } diff --git a/src/views/inspectionManagement/commissionInspection/index.vue b/src/views/inspectionManagement/commissionInspection/index.vue index 3a9c084..51c08b0 100644 --- a/src/views/inspectionManagement/commissionInspection/index.vue +++ b/src/views/inspectionManagement/commissionInspection/index.vue @@ -68,10 +68,10 @@ <el-table-column prop="samples_number" label="鏍峰搧鏁伴噺" min-width="8%" /> <el-table-column prop="sample_name" label="鏍峰搧鍚嶇О" min-width="8%" /> <el-table-column prop="specifications_models" label="瑙勬牸鍨嬪彿" min-width="12%" /> - <el-table-column prop="dateSurvey" label="閫佹牱鏃堕棿" min-width="8%" /> + <el-table-column prop="inspectionTime" label="閫佹牱鏃堕棿" min-width="8%" /> <el-table-column prop="completionDeadline" label="瀹屾垚鏈熼檺" min-width="8%" /> <el-table-column prop="contacts" label="濮旀墭缂栧埗浜�" min-width="8%" /> - <el-table-column prop="inspectionTime" label="妫�楠屾棩鏈�" min-width="8%" /> + <el-table-column prop="insTime" label="妫�楠屾棩鏈�" min-width="8%" /> <el-table-column prop="inspection_status" label="鐘舵��" min-width="8%"> <template slot-scope="scope"> <div v-if="scope.row.inspection_status === 0"> @@ -133,7 +133,8 @@ import { getCommisionList, getViewUUID, - selectViewUUID + selectViewUUID, + delLink } from '@/api/inspection/commisioninspection' export default { data() { @@ -191,7 +192,6 @@ }, updated() { if (this.$router.currentRoute.name === 'AddCommision') { - // console.log(this.$router.currentRoute.name) this.showDetail = true } }, @@ -203,7 +203,6 @@ }) this.commisionTable = res.data.row this.total = res.data.total - // console.log(res) // 鑾峰彇鎵�鏈夌殑濮旀墭鍗曚綅鍚嶇О const allDepartmentNames = [...new Set(this.commisionTable.map(item => item.entrusted))] // 灏哸llDepartmentNames杞崲涓簅ptions闇�瑕佺殑鏍煎紡 @@ -235,7 +234,6 @@ inspectionStatus: this.radioValue }) } - // console.log(res) this.commisionTable = res.data.row this.total = res.data.total }, @@ -252,7 +250,6 @@ }, async radioclick() { // 澶勭悊鐐瑰嚮radio鐨勬椂闂� - console.log('radioValue', this.radioValue) if (this.radioValue === 0) { this.getCommisionList() } else { @@ -261,7 +258,6 @@ pageSize: this.pageSize, inspectionStatus: this.radioValue }) - // console.log(res) this.commisionTable = res.data.row this.total = res.data.total } @@ -269,7 +265,6 @@ }, // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 async handleSizeChange(val) { - // console.log(`姣忛〉 ${val} 鏉) this.currentPage = 1 this.pageSize = val if (this.radioValue === 0) { @@ -286,7 +281,6 @@ }, // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� async handleCurrentChange(val) { - // console.log(`褰撳墠椤�: ${val}`) this.currentPage = val if (this.radioValue === 0) { this.getCommisionList() @@ -329,13 +323,18 @@ } }, handleClick(row){ - console.log(row); + delLink({ + id: row.id + }).then(res=>{ + this.$message.success('鍒犻櫎鎴愬姛') + this.getCommisionList() + }) } } } </script> -<style scoped> +<style scoped lang="scss"> .top-bar { margin: -25px -15px; background: #fff; diff --git a/src/views/inspectionManagement/reportForInspection/index.vue b/src/views/inspectionManagement/reportForInspection/index.vue index 2526f59..b6a1fdb 100644 --- a/src/views/inspectionManagement/reportForInspection/index.vue +++ b/src/views/inspectionManagement/reportForInspection/index.vue @@ -1,525 +1,513 @@ <template> - <div class="content-main"> - <div class="rawPage" v-if="!showNewPage"> - <div class="top-bar"> - <el-form ref="form" :inline="true" :model="searchData"> - <el-form-item label="鏉愭枡缂栫爜:" position="left" class="sermargin"> - <el-input - v-model="searchData.code" - class="input-form" - placeholder="璇疯緭鍏�" - > - </el-input> - </el-form-item> - <el-form-item label="鏉愭枡鍚嶇О:" class="sermargin"> - <el-input - v-model="searchData.name" - class="input-form" - placeholder="璇疯緭鍏�" - > - </el-input> - </el-form-item> - <el-form-item label="鐘舵��:" class="sermargin"> - <el-select v-model="searchData.state" placeholder="鍏ㄩ儴"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鏉ユ枡鏃ユ湡:" style="margin-right: 20px;"> - <el-input - v-model="searchData.date" - class="input-form" - placeholder="璇疯緭鍏�" - > - </el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="search">鏌ヨ</el-button> - <el-button type="primary" plain @click="reset">閲嶇疆</el-button> - </el-form-item> - </el-form> - </div> - <div class="library-table"> - <div class="table-header"> - <div class="search-bar"> - <el-radio-group v-model="radioValue" @change="radioclick"> - <el-radio-button v-for="option in radioOptions" :key="option.value" :label="option.value">{{ option.label }}</el-radio-button> - </el-radio-group> - </div> - <div class="generateInsp"> - <el-button @click="showNewPage = true" type="primary" size="mini" icon="el-icon-document" style="background-color: rgb(1, 102, 226);">鐢熸垚鎶ユ鍗�</el-button> - </div> - </div> - <div class="table-box"> - <el-table - ref="inspectionTable" - :max-height="800" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="inspectionTable" - style="width: 100%" - > - <el-table-column - type="selection" - min-width="10%" - /> - <el-table-column - type="index" - label="搴忓彿" - min-width="8%" - /> - <el-table-column - prop="createTime" - label="鏉ユ枡鏃ユ湡" - min-width="8%" - /> - <el-table-column - prop="supplierName" - label="渚涘簲鍟嗗悕绉�" - min-width="12%" - /> - <el-table-column - prop="materialCoding" - label="鏉愭枡缂栫爜" - min-width="8%" - /> - <el-table-column - prop="materialName" - label="鏉愭枡鍚嶇О" - min-width="8%" - /> - <el-table-column - prop="specificationsModels" - label="瑙勬牸鍨嬪彿" - min-width="12%" - /> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="5%" - /> - <el-table-column - prop="quantity" - label="鏁伴噺" - min-width="5%" - /> - <el-table-column - prop="inspectionDate" - label="鎶ユ鏃ユ湡" - min-width="8%" - /> - <el-table-column - prop="surveyor" - label="妫�楠屼汉" - min-width="8%" - /> - <el-table-column - prop="dateSurvey" - label="妫�楠屾棩鏈�" - min-width="8%" - /> - <el-table-column - prop="type" - label="鐘舵��" - min-width="8%" - > - <template slot-scope="scope"> - <span :style="{ color: scope.row.type === 1 ? 'green' : 'red' }"> - {{ scope.row.type === 1 ? '宸叉娴�':'鏈娴�' }} - </span> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉鍣� --> - <div> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="currentPage" - :page-sizes="[5, 10, 15, 20]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </div> - </div> - </div> - </div> + <div class="content-main"> + <div class="rawPage" v-if="!showNewPage"> + <div class="top-bar"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item label="鏉愭枡缂栫爜:" position="left" class="sermargin"> + <el-input v-model="searchData.code" class="input-form" placeholder="璇疯緭鍏�"> + </el-input> + </el-form-item> + <el-form-item label="鏉愭枡鍚嶇О:" class="sermargin"> + <el-input v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏�"> + </el-input> + </el-form-item> + <el-form-item label="鐘舵��:" class="sermargin"> + <el-select v-model="searchData.state" placeholder="鍏ㄩ儴"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鏉ユ枡鏃ユ湡:" style="margin-right: 20px;"> + <el-input v-model="searchData.date" class="input-form" placeholder="璇疯緭鍏�"> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="search">鏌ヨ</el-button> + <el-button type="primary" plain @click="reset">閲嶇疆</el-button> + <el-button type="primary" icon="el-icon-plus" @click="addReportVisible = true">鏂板</el-button> + </el-form-item> + </el-form> + </div> + <el-dialog title="鏂板鍘熸潗鏂欐姤妫�" :visible.sync="addReportVisible" width="40%"> + <el-form v-model="insertData" label-position="left" label-width="80px"> + <el-form-item label="鏍囧噯绫诲瀷"> + <el-input v-model="insertData.materialName" /> + </el-form-item> + <el-form-item label="鐗╂枡鍚嶇О"> + <el-input v-model="insertData.materialName" /> + </el-form-item> + <el-form-item label="鎵ц鏍囧噯"> + <el-input v-model="insertData.standardName" /> + </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿"> + <el-input v-model="insertData.specificationsName" /> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="addReportVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="insert()">纭� 瀹�</el-button> + </span> + </el-dialog> + <div class="library-table"> + <div class="table-header"> + <div class="search-bar"> + <el-radio-group v-model="radioValue" @change="radioclick"> + <el-radio-button v-for="option in radioOptions" :key="option.value" + :label="option.value">{{ option.label }}</el-radio-button> + </el-radio-group> + </div> + <div class="generateInsp"> + <el-button @click="addReportBtn" type="primary" size="mini" icon="el-icon-document" + style="background-color: rgb(1, 102, 226);">鐢熸垚鎶ユ鍗�</el-button> + </div> - <!-- 鐢熸垚鎶ユ鍗� --> - <div class="newPage" v-if="showNewPage"> - <!-- 鏂板椤甸潰 --> - <div class="inspectionForm"> - <el-form :model="inspectionForm" ref="inspectionForm" label-position="right" label-width="100px" size="mini" > - <div class="formwrapper"> - <el-row> - <el-col :span="8"> - <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 180px;" :value="inspectionForm.createTime" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 180px;" :value="inspectionForm.supplier_name" disabled autocomplete="off" /> </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鏍峰搧缂栧彿锛�"> - <el-input style="width: 180px;" :value="inspectionForm.materialCoding" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row > - <el-col :span="8"> - <el-form-item label="鏍峰搧鍚嶇О锛�" > - <el-input style="width: 180px;" :value="inspectionForm.materialName" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 180px;" :value="inspectionForm.specificationsModels" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 180px;" :value="inspectionForm.unit" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row > - <el-col :span="8"> - <el-form-item label="鏁伴噺锛�" > - <el-input style="width: 180px;" :value="inspectionForm.quantity" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鎶ユ鏃ユ湡锛�" > - <el-input style="width: 180px;" :value="inspectionForm.dateSurvey" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鎶ユ浜猴細"> - <el-input style="width: 180px;" :value="inspectionForm.surveyor" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - </div> - <div class="inspectionProject"> - <div class="header"> - <span style="font-size: 14px">妫�楠岄」鐩�</span> - <div> - <el-button type="primary" plain size="mini">淇濆瓨</el-button> - <el-button @click="showNewPage = false" type="primary" plain size="mini" icon="el-icon-back">杩斿洖</el-button> - </div> - </div> - <el-table - :max-height="800" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="inspectionItems"> - <el-table-column type="index" label="搴忓彿" width="60"></el-table-column> - <el-table-column prop="project" label="椤圭洰" width="250"></el-table-column> - <el-table-column prop="unit" label="鍗曚綅" width="125"></el-table-column> - <el-table-column prop="standardVal" label="鏍囧噯鍊�" width="125"></el-table-column> - <el-table-column prop="controlVal" label="鍐呮祴鍊�" width="125"></el-table-column> - <el-table-column prop="detectionVal" label="妫�楠屽��" width="125"></el-table-column> - <el-table-column prop="checker" label="妫�楠屼汉"> - <template slot-scope="scope"> - <el-select v-model="scope.row.checker" size="small" slot="append" style="width: 260px;"> - <el-option v-for="item in checkeroptions" :key="item.value" :label="item.label">{{ item.label }}</el-option> - </el-select> - </template> - </el-table-column> - <el-table-column prop="device" label="璇曢獙璁惧"> - <template slot-scope="scope"> - <el-select v-model="scope.row.device" size="small" slot="append" style="width: 260px;"> - <el-option v-for="item in deviceoptions" :key="item.value" :label="item.label">{{ item.label }}</el-option> - </el-select> - </template> - </el-table-column> - </el-table> - </div> - </div> - </div> + </div> + <div class="table-box"> + <el-table ref="inspectionTable" :max-height="800" :cell-style="{textAlign: 'center'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :data="inspectionTable" style="width: 100%" @selection-change="handleSelectionChange"> + <el-table-column type="selection" :selectable="checkSelect" min-width="5%"> + </el-table-column> + <el-table-column type="index" label="搴忓彿" min-width="8%" /> + <el-table-column prop="createTime" label="鏉ユ枡鏃ユ湡" min-width="8%" /> + <el-table-column prop="supplierName" label="渚涘簲鍟嗗悕绉�" min-width="12%" /> + <el-table-column prop="materialCoding" label="鏉愭枡缂栫爜" min-width="8%" /> + <el-table-column prop="materialName" label="鏉愭枡鍚嶇О" min-width="8%" /> + <el-table-column prop="specificationsModels" label="瑙勬牸鍨嬪彿" min-width="12%" /> + <el-table-column prop="unit" label="鍗曚綅" min-width="5%" /> + <el-table-column prop="quantity" label="鏁伴噺" min-width="5%" /> + <el-table-column prop="inspectionDate" label="鎶ユ鏃ユ湡" min-width="8%" /> + <el-table-column prop="surveyor" label="妫�楠屼汉" min-width="8%" /> + <el-table-column prop="dateSurvey" label="妫�楠屾棩鏈�" min-width="8%" /> + <el-table-column prop="type" label="鐘舵��" min-width="8%"> + <template slot-scope="scope"> + <span :style="{ color: scope.row.type === 1 ? 'green' : 'red' }"> + {{ scope.row.type === 1 ? '宸叉姤妫�':'鏈姤妫�' }} + </span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button type="text" size="small" @click="removeFun(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" + :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="total"> + </el-pagination> + </div> + </div> + </div> + </div> + + <!-- 鐢熸垚鎶ユ鍗� --> + <div class="newPage" v-if="showNewPage"> + <!-- 鏂板椤甸潰 --> + <div class="inspectionForm"> + <el-form :model="inspectionForm" ref="inspectionForm" label-position="right" label-width="100px" size="mini"> + <div class="formwrapper"> + <el-row> + <el-col :span="8"> + <el-form-item label="鏉ユ枡鏃ユ湡锛�"> + <el-input style="width: 180px;" :value="inspectionForm.formTime" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="渚涘簲鍟嗗悕绉帮細"> + <el-input style="width: 180px;" :value="inspectionForm.supplier" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鏍峰搧缂栧彿锛�"> + <el-input style="width: 180px;" :value="inspectionForm.code" disabled autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="鏍峰搧鍚嶇О锛�"> + <el-input style="width: 180px;" :value="inspectionForm.name" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="瑙勬牸鍨嬪彿锛�"> + <el-input style="width: 180px;" :value="inspectionForm.specifications" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鍗曚綅锛�"> + <el-input style="width: 180px;" :value="inspectionForm.unit" disabled autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="鏁伴噺锛�"> + <el-input style="width: 180px;" :value="inspectionForm.num" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鎶ユ鏃ユ湡锛�"> + <el-input style="width: 180px;" :value="inspectionForm.endTime" disabled autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鎶ユ浜猴細"> + <el-input style="width: 180px;" :value="inspectionForm.userName" disabled autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + </div> + </el-form> + </div> + <div class="inspectionProject"> + <div class="header"> + <span style="font-size: 14px">妫�楠岄」鐩�</span> + <div> + <!-- <el-button type="primary" plain size="mini">淇濆瓨</el-button> --> + <el-button @click="showNewPage = false" type="primary" plain size="mini" icon="el-icon-back">杩斿洖</el-button> + </div> + </div> + <el-table :max-height="800" :cell-style="{textAlign: 'center'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :data="inspectionItems"> + <el-table-column type="index" label="搴忓彿" width="60"></el-table-column> + <el-table-column prop="name" label="椤圭洰" width="250"></el-table-column> + <el-table-column prop="unit" label="鍗曚綅" width="125"></el-table-column> + <el-table-column prop="required" label="鏍囧噯鍊�" width="125"></el-table-column> + <el-table-column prop="internal" label="鍐呮祴鍊�" width="125"></el-table-column> + <el-table-column prop="testValue" label="妫�楠屽��" width="125"></el-table-column> + <el-table-column prop="userName" label="妫�楠屼汉"> + <template slot-scope="scope"> + <el-select v-model="scope.row.checker" size="small" slot="append" style="width: 260px;"> + <el-option v-for="(item,index) in checkeroptions" :key="index" :value="item.value" + :label="item.label">{{ item.label }}</el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="device" label="璇曢獙璁惧"> + <template slot-scope="scope"> + <el-select v-model="scope.row.device" size="small" slot="append" style="width: 260px;"> + <el-option v-for="(item,index) in deviceoptions" :key="index" :value="item.value" + :label="item.label">{{ item.label }}</el-option> + </el-select> + </template> + </el-table-column> + </el-table> + </div> + </div> + </div> </template> <script> -import { getRawMaterialList } from '@/api/inspection/rawmaterial' -export default { - data() { - return { - form: [], - searchData: { - code: '', - name: '', - state: '', - date: '' - }, - options: [{ - value: 0, - label: '鍏ㄩ儴' - }, { - value: 1, - label: '宸叉楠�' - }, { - value: 2, - label: '寰呮楠�' - }], - deviceoptions:[{ - value: 0, - label: '鎷夊姏鏈�' - },{ - value: 1, - label: '鎷栨媺鏈�' - }], - checkeroptions:[{ - value: 0, - label: '榛勫皬鏄�' - },{ - value: 1, - label: '寮犱笁' - }], - radioOptions:[{ - label: '鍏ㄩ儴', - value: 0 - },{ - value: 1, - label: '宸叉楠�' - },{ - value: 2, - label: '寰呮楠�' - }], - radioValue: 0, - inspectionTable: [{ - createTime: '2023-07-28', - supplier_name: '鍥界綉灞变笢鐪佺數鍔涙湁闄愬叕鍙�', - materialCoding: 'BP214274', - materialName: '閾濆寘閽㈢粸绾�', - specificationsModels: 'JLHA/G1A-185/30-26/7', - unit: '鍚�', - quantity: 21, - dateSurvey: '2023-08-02', - surveyor: '榛勫皬鏄�', - inspectionDate: '2023-12-09', - condition: 1 - }], - currentPage: 1, - pageSize: 5, - total:20, - data: '', - showNewPage: false, - inspectionForm:{ - createTime: '2023-07-28', - supplier_name: '鍥界綉灞变笢鐪佺數鍔涙湁闄愬叕鍙�', - materialCoding: 'BP214274', - materialName: '閾濆寘閽㈢粸绾�', - specificationsModels: 'JLHA/G1A-185/30-26/7', - unit: '鍚�', - quantity: 21, - dateSurvey: '2023-08-02', - surveyor: '榛勫皬鏄�', - inspectionDate: '2023-12-09', - }, - inspectionItems:[{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '', - },{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '' - },{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '' - },{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '' - },{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '' - },{ - project:'瀵肩嚎澶栧緞', - unit: 'mm', - standardVal: '30.0', - controlVal: '30.0', - detectionVal: '30.0', - device:'', - checker: '' - }] - } - }, - created(){ - this.getRawMaterialList() - }, - methods: { - // 鑾峰彇鍒嗛〉鍒楄〃鏁版嵁 - async getRawMaterialList(){ - const res = await getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize}) - // console.log(res) - this.inspectionTable = res.data.row - this.data = res.data.row - console.log(res.data.row); - this.total = res.data.total - }, - async search(){ - this.radioValue = this.searchData.state - const res = await getRawMaterialList({condition: this.searchData.state, - createTime:this.searchData.date, - materialCoding:this.searchData.code, - materialName: this.searchData.name, - pageNo: this.currentPage, - pageSize: this.pageSize - }) - // console.log(res) - this.inspectionTable = res.data.row - this.data = res.data.row - this.total = res.data.total - }, - reset(){ - this.searchData = { - code: '', - name: '', - state: '', - date: '' - } - this.getRawMaterialList() - }, - radioclick(){ - this.searchData.state = this.radioValue - // console.log(this.radioValue) - this.inspectionTable = this.data.filter((item)=>{ - return item.condition === this.radioValue - }) - if(this.radioValue === 0){ - this.inspectionTable = this.data - } - this.total = this.inspectionTable.length - }, - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.pageSize = val - this.getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize}) - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.currentPage = val - this.getRawMaterialList({pageNo: this.currentPage,pageSize:this.pageSize}) - } - } -} + import { + getRawMaterialList, + addInspect, + selectInspectsListById + } from '@/api/inspection/rawmaterial' + export default { + data() { + return { + insertData: { + + }, + addReportVisible: false, + checked: false, + resultData: {}, + checkData: [], + form: [], + searchData: { + code: '', + name: '', + state: '', + date: '' + }, + options: [{ + value: 0, + label: '鍏ㄩ儴' + }, { + value: 1, + label: '宸叉楠�' + }, { + value: 2, + label: '寰呮楠�' + }], + deviceoptions: [{ + value: 0, + label: '鎷夊姏鏈�' + }, { + value: 1, + label: '鎷栨媺鏈�' + }], + checkeroptions: [{ + value: 0, + label: '榛勫皬鏄�' + }, { + value: 1, + label: '寮犱笁' + }], + radioOptions: [{ + label: '鍏ㄩ儴', + value: 0 + }, { + value: 1, + label: '宸叉楠�' + }, { + value: 2, + label: '寰呮楠�' + }], + radioValue: 0, + inspectionTable: [{ + createTime: '2023-07-28', + supplier_name: '鍥界綉灞变笢鐪佺數鍔涙湁闄愬叕鍙�', + materialCoding: 'BP214274', + materialName: '閾濆寘閽㈢粸绾�', + specificationsModels: 'JLHA/G1A-185/30-26/7', + unit: '鍚�', + quantity: 21, + dateSurvey: '2023-08-02', + surveyor: '榛勫皬鏄�', + inspectionDate: '2023-12-09', + condition: 1 + }], + currentPage: 1, + pageSize: 5, + total: 20, + data: '', + showNewPage: false, + inspectionForm: {}, + inspectionItems: [] + } + }, + created() { + this.getRawMaterialList() + }, + methods: { + removeFun(row) { + this.$confirm('纭鍒犻櫎璇ユ暟鎹悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + }).catch(() => {}); + }, + checkSelect(row, index) { + if (row.type === 1) { + return false; + } else { + return true; + } + }, + handleSelectionChange(val) { + this.checkData = val; + }, + //鐢熸垚鎶ユ鍗曟寜閽� + addReportBtn() { + let arr = this.checkData; + if (arr.length < 1) { + this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�!"); + } else { + if (arr.length > 1) { + this.$message.error("鏈�澶氶�夋嫨涓�鏉℃暟鎹�!"); + } else { + //娣诲姞鎶ユ鍗� + let val = arr[0]; + let obj = { + "endTime": val.dateSurvey, + "experiment": "", + "formTime": val.createTime, + "id": val.id, + "mcode": val.materialCoding, + "name": val.materialName, + "num": val.quantity, + "specifications": val.specificationsModels, + "startTime": val.inspectionDate, + "supplier": val.supplierName, + "type": val.type, + "unit": val.unit, + "version": val.version + } + this.createReport(obj); + this.showNewPage = true; + } + } + }, + //鐢熸垚鎶ヤ环鍗� + async createReport(param) { + await addInspect(param); + const res2 = await selectInspectsListById({ + id: 59 + }); + this.resultData = res2.data; + this.inspectionForm = res2.data; + this.inspectionItems = res2.data.insProducts; + + }, + // 鑾峰彇鍒嗛〉鍒楄〃鏁版嵁 + async getRawMaterialList() { + const res = await getRawMaterialList({ + pageNo: this.currentPage, + pageSize: this.pageSize + }) + this.inspectionTable = res.data.row + this.data = res.data.row + this.total = res.data.total + }, + async search() { + this.radioValue = this.searchData.state + const res = await getRawMaterialList({ + condition: this.searchData.state, + createTime: this.searchData.date, + materialCoding: this.searchData.code, + materialName: this.searchData.name, + pageNo: this.currentPage, + pageSize: this.pageSize + }) + this.inspectionTable = res.data.row + this.data = res.data.row + this.total = res.data.total + }, + reset() { + this.searchData = { + code: '', + name: '', + state: '', + date: '' + } + this.getRawMaterialList() + }, + radioclick() { + this.searchData.state = this.radioValue + this.inspectionTable = this.data.filter((item) => { + return item.condition === this.radioValue + }) + if (this.radioValue === 0) { + this.inspectionTable = this.data + } + this.total = this.inspectionTable.length + }, + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + handleSizeChange(val) { + this.pageSize = val + this.getRawMaterialList({ + pageNo: this.currentPage, + pageSize: this.pageSize + }) + }, + // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� + handleCurrentChange(val) { + this.currentPage = val + this.getRawMaterialList({ + pageNo: this.currentPage, + pageSize: this.pageSize + }) + } + } + } </script> -<style scoped> -.content-main{ - height: 100%; - .top-bar{ - margin: -25px -15px; - background: #fff; - display: flex; - justify-content: space-between; - padding: 24px 24px 0px 24px; - .sermargin{ - margin-right: 60px; - } -} -.rightBtn{ - background-color: rgb(1, 102, 226); -} -.library-table{ - background-color: #fff; - flex: 1; - margin: 0px -15px; - margin-top: 40px; - display: flex; - flex-direction: column; - .table-header{ - padding: 20px; - display: flex; - justify-content: space-between; - .el-form-item{ - margin-bottom: 30px !important; - } - } - .table-box{ - padding: 0px 20px; - margin-top: 0px; - flex: 1; - background: #fff; - /* padding: 20px 20px 10px 20px; */ - display: flex; - flex-direction: column; - .el-table { - flex: 1; - } - >div:nth-child(2){ - display: flex; - justify-content: end; - margin: 10px 0; - } - } - } -.checked { - color: green; -} +<style scoped lang="scss"> + .content-main { + height: 100%; -.unchecked { - color: red; -} + .top-bar { + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 24px 24px 0px 24px; -.newPage{ - margin: -25px -15px; - .inspectionForm{ - background-color:#fff; - .formwrapper{ - margin-left: 80px; - padding:10px 0px; - } - } - .inspectionProject{ - margin:10px 0px; - .header{ - display:flex; - justify-content: space-between; - padding-top: -3px; - padding-bottom: 3px; - } - .el-table{ - padding: 10px 10px; - height: 65vh; - overflow-y: auto; - } - } -} -} + .sermargin { + margin-right: 60px; + } + } + .rightBtn { + background-color: rgb(1, 102, 226); + } + + .library-table { + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + display: flex; + flex-direction: column; + + .table-header { + padding: 20px; + display: flex; + justify-content: space-between; + + .el-form-item { + margin-bottom: 30px !important; + } + } + + .table-box { + padding: 0px 20px; + margin-top: 0px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + + .el-table { + flex: 1; + } + + >div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } + + .checked { + color: green; + } + + .unchecked { + color: red; + } + + .newPage { + margin: -25px -15px; + + .inspectionForm { + background-color: #fff; + + .formwrapper { + margin-left: 80px; + padding: 10px 0px; + } + } + + .inspectionProject { + margin: 10px 0px; + + .header { + display: flex; + justify-content: space-between; + padding-top: -3px; + padding-bottom: 3px; + } + + .el-table { + padding: 10px 10px; + height: 65vh; + overflow-y: auto; + } + } + } + } </style> diff --git a/src/views/laboratory/organizational/index.vue b/src/views/laboratory/organizational/index.vue index b44012b..3561611 100644 --- a/src/views/laboratory/organizational/index.vue +++ b/src/views/laboratory/organizational/index.vue @@ -12,6 +12,7 @@ :filter-node-method="filterNode" ref="tree" @node-click="handleNodeClick" + :expand-on-click-node="false" > </el-tree> </div> diff --git a/src/views/laboratory/personnel/index.vue b/src/views/laboratory/personnel/index.vue index f4f4ee2..f469fa9 100644 --- a/src/views/laboratory/personnel/index.vue +++ b/src/views/laboratory/personnel/index.vue @@ -1,478 +1,393 @@ <template> - <div class="personnel-main"> - <div class="page-header-search"> - <div class="search-bar"> - <el-form ref="form" :inline="true"> - <el-form-item> - <el-input v-model="keyword" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�"> - <i slot="prefix" class="el-input__icon el-icon-search" /> - </el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="getData()">鏌ヨ</el-button> - <el-button type="primary" plain @click="resetData()" - >閲嶇疆</el-button - > - <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> --> - </el-form-item> - </el-form> - </div> - <div class="serve-btn"> - <el-button - type="primary" - icon="el-icon-plus" - @click="dialogFormVisible = true" - >鏂板浜哄憳</el-button - > - - <el-dialog - :title="isUpdate == true ? '鏇存柊浜哄憳淇℃伅' : '鏂板浜哄憳'" - :visible.sync="dialogFormVisible" - width="30%" - > - <el-form :model="form" ref="form" :rules="rules"> - <el-form-item - label="璐﹀彿" - :label-width="formLabelWidth" - prop="account" - > - <el-input v-model="form.account" /> - </el-form-item> - <el-form-item label="骞撮緞" :label-width="formLabelWidth"> - <el-input v-model="form.age" /> - </el-form-item> - <el-form-item - label="閭" - :label-width="formLabelWidth" - prop="email" - > - <el-input v-model="form.email" /> - </el-form-item> - <el-form-item - label="鍚嶅瓧" - :label-width="formLabelWidth" - prop="name" - > - <el-input v-model="form.name" /> - </el-form-item> - <el-form-item - label="鐢佃瘽" - :label-width="formLabelWidth" - prop="phone" - > - <el-input v-model="form.phone" /> - </el-form-item> - - <el-form-item - label="閮ㄩ棬" - :label-width="formLabelWidth" - required - prop="organizationId" - > - <el-cascader - style="width: 100%" - :options="options" - :props="myProp" - v-model="form.organizationId" - clearable - ></el-cascader> - </el-form-item> - - <el-form-item - label="鏉冮檺" - :label-width="formLabelWidth" - prop="roleId" - > - <el-select - v-model="form.roleId" - clearable - style="width: 100%" - placeholder="璇烽�夋嫨鏉冮檺" - > - <el-option - v-for="item in roleList" - :key="item.id" - :label="item.name" - :value="item.id" - > - </el-option> - </el-select> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitForm()">{{ + <div class="personnel-main"> + <div class="page-header-search"> + <div class="search-bar"> + <el-form ref="form" :inline="true"> + <el-form-item> + <el-input v-model="keyword" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�"> + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getData()">鏌ヨ</el-button> + <el-button type="primary" plain @click="resetData()">閲嶇疆</el-button> + <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> --> + </el-form-item> + </el-form> + </div> + <div class="serve-btn"> + <el-button type="primary" icon="el-icon-plus" @click="dialogFormVisible = true">鏂板浜哄憳</el-button> + <el-dialog :title="isUpdate == true ? '鏇存柊浜哄憳淇℃伅' : '鏂板浜哄憳'" :visible.sync="dialogFormVisible" width="30%"> + <el-form :model="form" ref="form" :rules="rules" style="padding-right: 50px;"> + <el-form-item label="璐﹀彿" :label-width="formLabelWidth" prop="account"> + <el-input v-model="form.account" /> + </el-form-item> + <el-form-item label="骞撮緞" :label-width="formLabelWidth"> + <el-input v-model="form.age" /> + </el-form-item> + <el-form-item label="閭" :label-width="formLabelWidth" prop="email"> + <el-input v-model="form.email" /> + </el-form-item> + <el-form-item label="鍚嶅瓧" :label-width="formLabelWidth" prop="name"> + <el-input v-model="form.name" /> + </el-form-item> + <el-form-item label="鐢佃瘽" :label-width="formLabelWidth" prop="phone"> + <el-input v-model="form.phone" /> + </el-form-item> + <el-form-item label="閮ㄩ棬" :label-width="formLabelWidth" required prop="organizationId"> + <el-cascader style="width: 100%" :options="options" :props="myProp" v-model="form.organizationId" + clearable></el-cascader> + </el-form-item> + <el-form-item label="鏉冮檺" :label-width="formLabelWidth" prop="roleId"> + <el-select v-model="form.roleId" clearable style="width: 100%" placeholder="璇烽�夋嫨鏉冮檺"> + <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm()">{{ isUpdate == true ? "鏇� 鏂�" : "纭� 瀹�" }}</el-button> - </div> - </el-dialog> - </div> - </div> - <div class="content-main"> - <div class="personner-table"> - <el-table - ref="personnerlTable" - height="calc(100vh - 240px)" - border - :cell-style="{ textAlign: 'center' }" - :header-cell-style="{ + </div> + </el-dialog> + </div> + </div> + <div class="content-main"> + <div class="personner-table"> + <el-table ref="personnerlTable" height="calc(100vh - 240px)" border :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center', - }" - @filter-change="fnFilterChangeInit" - :data="personnerlTable" - style="width: 100%" - > - <el-table-column prop="username" label="瑙掕壊鍚嶇О" min-width="120" /> - <el-table-column prop="roleName" label="瑙掕壊鏉冮檺" min-width="120" /> - <el-table-column prop="age" label="骞撮緞" min-width="150"> - <template scope="scope"> - {{ + }" @filter-change="fnFilterChangeInit" :data="personnerlTable" style="width: 100%"> + <el-table-column prop="username" label="瑙掕壊鍚嶇О" min-width="120" /> + <el-table-column prop="roleName" label="瑙掕壊鏉冮檺" min-width="120" /> + <el-table-column prop="age" label="骞撮緞" min-width="150"> + <template scope="scope"> + {{ scope.row.age === "" || scope.row.age === null || scope.row.age == undefined ? "---" : scope.row.age }} - </template> - </el-table-column> - <el-table-column prop="department" label="閮ㄩ棬" min-width="150" /> - <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180" /> - <el-table-column prop="phone" label="鐢佃瘽" min-width="200"> - <template scope="scope"> - {{ + </template> + </el-table-column> + <el-table-column prop="department" label="閮ㄩ棬" min-width="150" /> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180" /> + <el-table-column prop="phone" label="鐢佃瘽" min-width="200"> + <template scope="scope"> + {{ scope.row.phone === "" || scope.row.phone === undefined ? "---" : scope.row.phone }} - </template> - </el-table-column> - <el-table-column prop="email" label="閭" min-width="200"> - <template scope="scope"> - {{ + </template> + </el-table-column> + <el-table-column prop="email" label="閭" min-width="200"> + <template scope="scope"> + {{ scope.row.email === "" || scope.row.email === undefined ? "---" : scope.row.email }} - </template> - </el-table-column> - <el-table-column - prop="jobState" - label="鍦ㄨ亴鐘舵��" - min-width="120" - :filters="[ + </template> + </el-table-column> + <el-table-column prop="jobState" label="鍦ㄨ亴鐘舵��" min-width="120" :filters="[ { text: '鍦ㄨ亴', value: 1 }, { text: '绂诲矖', value: 0 }, - ]" - column-key="status" - :filter-method="filterTag" - filter-placement="bottom-end" - > - <template slot-scope="scope"> - <el-tag - :type="scope.row.jobState === 0 ? 'danger' : 'success'" - disable-transitions - >{{ scope.row.jobState === 0 ? "绂诲矖" : "鍦ㄨ亴" }}</el-tag - > - </template> - </el-table-column> - <el-table-column label="鎿嶄綔" min-width="120"> - <template slot-scope="scope"> - <el-button - type="text" - size="small" - @click="handleClick(scope.row)" - >缂栬緫</el-button - > - </template> - </el-table-column> - </el-table> - <div> - <!-- 鍒嗛〉鍣� --> - <el-pagination - :current-page="currentPage" - :page-sizes="[10, 15, 20, 25]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> + ]" column-key="status" :filter-method="filterTag" filter-placement="bottom-end"> + <template slot-scope="scope"> + <el-tag :type="scope.row.jobState === 0 ? 'danger' : 'success'" + disable-transitions>{{ scope.row.jobState === 0 ? "绂诲矖" : "鍦ㄨ亴" }}</el-tag> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="120"> + <template slot-scope="scope"> + <el-button type="text" size="small" @click="handleClick(scope.row)">缂栬緫</el-button> + </template> + </el-table-column> + </el-table> + <div> + <!-- 鍒嗛〉鍣� --> + <el-pagination :current-page="currentPage" :page-sizes="[10, 15, 20, 25]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" + @current-change="handleCurrentChange" /> + </div> + </div> + </div> + </div> </template> <script> -import { get, post, put } from "@/api/util/requestUtil"; -import urlInfo from "../../../api/urlEnum/personnel.js"; -import { getOrganizationalApi } from "@/api/laboratory/organizational"; -export default { - data() { - return { - keyword: "", - roleList: "", - personnerlTable: [], - filteredpersonnerlTable: [], - currentindex: 1, - currentPage: 1, // 褰撳墠椤电爜 - total: 0, // 鎬绘潯鏁� - pageSize: 100, // 姣忛〉鐨勬暟鎹潯鏁� - personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 - dialogFormVisible: false, - form: { - account: "", - age: "", - email: "", - name: "", - phone: "", - organizationId: "", - roleId: "", - }, - myProp: { - value: "id", - label: "department", - checkStrictly: true, //鍏佽閫夋嫨浠绘剰涓�鑺� - }, - formLabelWidth: "100px", - rules: { - account: [ - { - required: true, - message: "璇疯緭鍏ヨ处鍙�", - trigger: "blur", - }, - ], - name: [ - { - required: true, - message: "璇疯緭鍏ュ悕瀛�", - trigger: "blur", - }, - ], - phone: [ - // { required: true, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�', trigger: 'blur' }, - { - pattern: /^1[3456789]\d{9}$/, - message: "闈炴硶鎵嬫満鍙风爜", - trigger: ["blur", "change"], - }, - ], - email: [ - // { required: true, message: '璇疯緭鍏ラ偖绠卞湴鍧�', trigger: 'blur' }, - { - type: "email", - message: "闈炴硶閭鍦板潃", - trigger: ["blur", "change"], - }, - ], - organizationId: [ - { - required: true, - type: "array", - message: "璇烽�夋嫨閮ㄩ棬", - trigger: "change", - }, - ], - roleId: [ - { required: true, message: "璇疯緭鍏ユ潈闄�(0鎴�1)", trigger: "blur" }, - ], - }, - options: [], - status: "", - isUpdate: false, - }; - }, - mounted() { - this.getData(); - this.getTreeData(); - }, - methods: { - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); - this.currentPage = 1; - this.pageSize = val; - }, - filterTag(value) { - this.status = ""; - this.status = value; - return true; - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`); - this.currentPage = val; - }, - async getData() { - let data = { - pageNo: 0, - pageSize: 10, - name: this.keyword, - status: this.status, - }; - let res = await get(urlInfo.url.list_new_personnel, data); - this.personnerlTable = res.data.row; - this.total = res.data.total; - }, - searchData() { - this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { - return item.username === this.keyword; - }); - this.personnerlTable = this.filteredpersonnerlTable; - }, - resetData() { - this.personnerlTable = this.personData; - this.keyword = ""; - this.status = ""; - this.getData(); - }, - // 鎻愪氦鏂板浜哄憳琛ㄥ崟 - submitForm() { - this.$refs.form.validate((valid) => { - if (valid) { - let departmentId = this.form.organizationId; - this.form.organizationId = departmentId[departmentId.length - 1]; - if (!this.isUpdate) { - post("/user/add_new_personnel", this.form).then((response) => { - this.$message({ - message: response.message, - type: "success", - }); - this.dialogFormVisible = false; - this.getData(); - }); - } else { - put("/user/update_new_personnel", this.form).then((res) => { - this.$message({ - message: res.message, - type: "success", - }); - this.dialogFormVisible = false; - this.getData(); - }); - } - } else { - console.log("error submit!!"); - return false; - } - }); - }, - // 娓呯┖Cascader绌虹櫧 - clearCascaderBlank(list) { - list.forEach((i) => { - if (i.children.length === 0) { - i.children = undefined; - } else { - this.clearCascaderBlank(i.children); - } - }); - }, - fnFilterChangeInit() { - this.personData = []; - this.getData(); - }, - /* - * @param list 鏁版嵁鍒楄〃 - * @param id 鍚庣杩斿洖鐨刬d - **/ - getParentsById(list, id) { - for (let i in list) { - if (list[i].id == id) { - return [list[i].id]; - } - if (list[i].children) { - let node = this.getParentsById(list[i].children, id); - if (node !== undefined) { - //鏌ヨ鍒版妸鐖惰妭鎶婄埗鑺傜偣鍔犲埌鏁扮粍鍓嶉潰 - node.unshift(list[i].id); - return node; - } - } - } - }, + import { + get, + post, + put + } from "@/api/util/requestUtil"; + import urlInfo from "../../../api/urlEnum/personnel.js"; + import { + getOrganizationalApi + } from "@/api/laboratory/organizational"; + export default { + data() { + return { + keyword: "", + roleList: "", + personnerlTable: [], + filteredpersonnerlTable: [], + currentindex: 1, + currentPage: 1, // 褰撳墠椤电爜 + total: 0, // 鎬绘潯鏁� + pageSize: 100, // 姣忛〉鐨勬暟鎹潯鏁� + personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 + dialogFormVisible: false, + form: { + account: "", + age: "", + email: "", + name: "", + phone: "", + organizationId: "", + roleId: "", + }, + myProp: { + value: "id", + label: "department", + checkStrictly: true, //鍏佽閫夋嫨浠绘剰涓�鑺� + }, + formLabelWidth: "100px", + rules: { + account: [{ + required: true, + message: "璇疯緭鍏ヨ处鍙�", + trigger: "blur", + }, ], + name: [{ + required: true, + message: "璇疯緭鍏ュ悕瀛�", + trigger: "blur", + }, ], + phone: [ + // { required: true, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�', trigger: 'blur' }, + { + pattern: /^1[3456789]\d{9}$/, + message: "闈炴硶鎵嬫満鍙风爜", + trigger: ["blur", "change"], + }, + ], + email: [ + // { required: true, message: '璇疯緭鍏ラ偖绠卞湴鍧�', trigger: 'blur' }, + { + type: "email", + message: "闈炴硶閭鍦板潃", + trigger: ["blur", "change"], + }, + ], + organizationId: [{ + required: true, + type: "array", + message: "璇烽�夋嫨閮ㄩ棬", + trigger: "change", + }, ], + roleId: [{ + required: true, + message: "璇疯緭鍏ユ潈闄�(0鎴�1)", + trigger: "blur" + }, ], + }, + options: [], + status: "", + isUpdate: false, + }; + }, + mounted() { + this.getData(); + this.getTreeData(); + }, + methods: { + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + handleSizeChange(val) { + this.currentPage = 1; + this.pageSize = val; + }, + filterTag(value) { + this.status = ""; + this.status = value; + return true; + }, + // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� + handleCurrentChange(val) { + this.currentPage = val; + }, + async getData() { + let data = { + pageNo: 0, + pageSize: 10, + name: this.keyword, + status: this.status, + }; + let res = await get(urlInfo.url.list_new_personnel, data); + this.personnerlTable = res.data.row; + this.total = res.data.total; + }, + searchData() { + this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { + return item.username === this.keyword; + }); + this.personnerlTable = this.filteredpersonnerlTable; + }, + resetData() { + this.personnerlTable = this.personData; + this.keyword = ""; + this.status = ""; + this.getData(); + }, + // 鎻愪氦鏂板浜哄憳琛ㄥ崟 + submitForm() { + this.$refs.form.validate((valid) => { + if (valid) { + let departmentId = this.form.organizationId; + this.form.organizationId = departmentId[departmentId.length - 1]; + if (!this.isUpdate) { + post("/user/add_new_personnel", this.form).then((response) => { + this.$message({ + message: response.message, + type: "success", + }); + this.dialogFormVisible = false; + this.getData(); + }); + } else { + put("/user/update_new_personnel", this.form).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.dialogFormVisible = false; + this.getData(); + }); + } + } else { + return false; + } + }); + }, + // 娓呯┖Cascader绌虹櫧 + clearCascaderBlank(list) { + list.forEach((i) => { + if (i.children.length === 0) { + i.children = undefined; + } else { + this.clearCascaderBlank(i.children); + } + }); + }, + fnFilterChangeInit() { + this.personData = []; + this.getData(); + }, + /* + * @param list 鏁版嵁鍒楄〃 + * @param id 鍚庣杩斿洖鐨刬d + **/ + getParentsById(list, id) { + for (let i in list) { + if (list[i].id == id) { + return [list[i].id]; + } + if (list[i].children) { + let node = this.getParentsById(list[i].children, id); + if (node !== undefined) { + //鏌ヨ鍒版妸鐖惰妭鎶婄埗鑺傜偣鍔犲埌鏁扮粍鍓嶉潰 + node.unshift(list[i].id); + return node; + } + } + } + }, - handleClick(row) { - this.isUpdate = true; - this.dialogFormVisible = true; - this.form.name = row.username; - this.form.roleName = row.roleName; - this.form.phone = row.phone; - this.form.id = row.id; - this.form.email = row.email; - this.form.organizationId = this.getParentsById( - this.options, - row.departmentId - ); - this.form.roleId = row.roleName; - this.form.age = row.age; - this.form.account = row.account; - }, - getTreeData() { - getOrganizationalApi().then((res) => { - this.options = res.data[0].children; - this.clearCascaderBlank(this.options); - }); - }, - getRoleList() { - get("/user/list").then((res) => { - console.log(`output->res`, res); - this.roleList = res.data; - }); - }, - }, - watch: { - dialogFormVisible: { - handler(newVal, oldVal) { - if (newVal == false) { - this.isUpdate = false; - this.form = {}; - this.$refs.form.resetFields(); - } else { - this.getRoleList(); - } - }, - }, - }, -}; + handleClick(row) { + this.isUpdate = true; + this.dialogFormVisible = true; + this.form.name = row.username; + this.form.roleName = row.roleName; + this.form.phone = row.phone; + this.form.id = row.id; + this.form.email = row.email; + this.form.organizationId = this.getParentsById( + this.options, + row.departmentId + ); + this.form.roleId = row.roleName; + this.form.age = row.age; + this.form.account = row.account; + }, + getTreeData() { + getOrganizationalApi().then((res) => { + this.options = res.data[0].children; + this.clearCascaderBlank(this.options); + }); + }, + getRoleList() { + get("/user/list").then((res) => { + this.roleList = res.data; + }); + }, + }, + watch: { + dialogFormVisible: { + handler(newVal, oldVal) { + if (newVal == false) { + this.isUpdate = false; + this.form = {}; + this.$refs.form.resetFields(); + } else { + this.getRoleList(); + } + }, + }, + }, + }; </script> <style lang="scss" scoped> -.personnel-main { - // width: 100%; - // height: 100%; - .page-header-search { - background: #fff; - display: flex; - justify-content: space-between; - padding: 0 24px 12px 24px; + .personnel-main { - .search-bar { - .el-form { - .el-form-item { - margin-bottom: 0px !important; + // width: 100%; + // height: 100%; + .page-header-search { + background: #fff; + display: flex; + justify-content: space-between; + padding: 20px 24px 12px 24px; - .el-input { - width: 360px; - } - } - } - } - } + .search-bar { + .el-form { + .el-form-item { + margin-bottom: 0px !important; - .personner-table { - background: #fff; - padding: 20px 20px 10px 20px; + .el-input { + width: 360px; + } + } + } + } + } - > div:nth-child(2) { - display: flex; - justify-content: end; - margin: 10px 0; - } - } -} -</style> + .personner-table { + background: #fff; + padding: 20px 20px 10px 20px; + + >div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3