From 8cdd746682b92b7aaabad790db5bafa3d57ccea7 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期六, 26 八月 2023 15:34:23 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/api/inspection/commisioninspection.js | 2 src/views/experiment/reportAuditing/index.vue | 26 src/api/laboratory/role.js | 25 src/views/basicData/index.vue | 2 src/views/experiment/inspectionApplication/index.vue | 154 ++ src/layout/components/Navbar.vue | 9 src/views/laboratory/role/index.vue | 226 ++++- src/router/index.js | 7 src/views/inspectionManagement/commissionInspection/addCommision.vue | 1017 +++++++++++------------ src/utils/request.js | 1 .env.development | 2 src/views/laboratory/role/menuPower.vue | 21 src/views/template_testReport/index.vue | 651 +++++++++++++++ src/views/experiment/inspectionApplication/Viewdetails/index.vue | 178 --- src/api/experiment/planAssignments.js | 26 src/views/inspectionManagement/commissionInspection/index.vue | 123 +- 16 files changed, 1,644 insertions(+), 826 deletions(-) diff --git a/.env.development b/.env.development index 6ec8b12..d00c942 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = 'http://192.168.110.87:1234/' +VUE_APP_BASE_API = 'http://192.168.110.107:1234/' diff --git a/src/api/experiment/planAssignments.js b/src/api/experiment/planAssignments.js index bd94754..e2bae08 100644 --- a/src/api/experiment/planAssignments.js +++ b/src/api/experiment/planAssignments.js @@ -30,4 +30,28 @@ method: 'post', data }) -} \ No newline at end of file +} +//妫�楠屽崟璇︽儏 +export function selectInspectsListById(params){ + return request({ + url: '/inspection/selectInspectsListById', + method: 'get', + params + }) +} +//閫夋嫨璐d换椤圭洰妫�楠屼汉 +export function selectUser(params){ + return request({ + url: '/inspection/selectUser', + method: 'get', + params + }) +} +// 濮旀墭妫�楠屽垪琛� +export function getCommisionList(params) { + return request({ + url: '/link-basic-table/page', + method: 'get', + params + }) +} diff --git a/src/api/inspection/commisioninspection.js b/src/api/inspection/commisioninspection.js index 982a2f0..275a65b 100644 --- a/src/api/inspection/commisioninspection.js +++ b/src/api/inspection/commisioninspection.js @@ -25,7 +25,7 @@ }) } - +//瑙勬牸鍨嬪彿 export function getModelSpecification(params){ return request({ url: '/link-basic/specification', diff --git a/src/api/laboratory/role.js b/src/api/laboratory/role.js index 64a2930..9744850 100644 --- a/src/api/laboratory/role.js +++ b/src/api/laboratory/role.js @@ -6,4 +6,29 @@ method: 'get', params }) + } + + export function addRoleInfo(data) { + return request({ + url: '/role-manager/addRoleInfo', + method: 'post', + data + }) + } + + export function assertRepeat(params) { + return request({ + url: '/role-manager/assertRepeat', + method: 'get', + params + }) + } + + //getAllRoleAndMenuInfo + export function getAllRoleAndMenuInfo(params) { + return request({ + url: '/role-manager/getAllRoleAndMenuInfo', + method: 'get', + params + }) } \ No newline at end of file diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 61b59bd..049b72d 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -82,7 +82,14 @@ 'avatar' ]) }, - + data() { + return { + user: { + id: null, + name: 'value' + } + } + }, mounted() { this.getUser() }, diff --git a/src/router/index.js b/src/router/index.js index 31ff874..6e2fc1e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -47,6 +47,11 @@ hidden:true }, { + path: '/testReport', + component: () => import('@/views/template_testReport/index'), + hidden:true + }, + { path: '/', component: Layout, redirect: '/home', @@ -477,7 +482,7 @@ ] const createRouter = () => new Router({ - // mode: 'history', // require service support + mode: 'history', scrollBehavior: () => ({ y: 0 }), routes: constantRoutes }) diff --git a/src/utils/request.js b/src/utils/request.js index 2b822e9..13d605c 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -48,7 +48,6 @@ // if the custom code is not 20000, it is judged as an error. if (res.code !== 200) { - console.log(res.message || 'Error') // Message({ // message: res.message || 'Error', // type: 'error', diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue index 4ee318a..952955e 100644 --- a/src/views/basicData/index.vue +++ b/src/views/basicData/index.vue @@ -136,7 +136,7 @@ <el-table :data="tableData" style="width: 100%; margin-bottom: 20px" - row-key="name" + row-key="id" border height="calc(100vh - 250px)" default-expand-all diff --git a/src/views/experiment/inspectionApplication/Viewdetails/index.vue b/src/views/experiment/inspectionApplication/Viewdetails/index.vue index dd8a167..a0919e6 100644 --- a/src/views/experiment/inspectionApplication/Viewdetails/index.vue +++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue @@ -12,7 +12,7 @@ <el-form ref="form" :model="searchData" label-width="80px"> <el-col :span="6"> <el-form-item label="鏉ユ枡鏃ユ湡:" > - <el-input :disabled="true" v-model="searchData.from_time"></el-input> + <el-input :disabled="true" v-model="searchData.formTime"></el-input> </el-form-item> </el-col> @@ -23,7 +23,7 @@ </el-col> <el-col :span="6"> <el-form-item label="浜у搧缂栧彿:"> - <el-input :disabled="true" v-model="searchData.mcode"></el-input> + <el-input :disabled="true" v-model="searchData.code"></el-input> </el-form-item> </el-col> </el-form> @@ -60,7 +60,7 @@ <el-col :span="6"> <el-form-item label="鐧昏鏃ユ湡:"> - <el-input :disabled="true" v-model="searchData.end_time"></el-input> + <el-input :disabled="true" v-model="searchData.endTime"></el-input> </el-form-item> </el-col> @@ -86,7 +86,7 @@ <div> <el-card style="margin: 10px;"> <el-table - :data="tableData" + :data="insProducts" border style="width: 100%"> <el-table-column @@ -95,52 +95,37 @@ width="50"> </el-table-column> <el-table-column - prop="date" + prop="name" label="椤圭洰" width="180"> </el-table-column> <el-table-column - prop="name" + prop="unit" label="鍗曚綅" width="180"> </el-table-column> <el-table-column - prop="kk" + prop="internal" label="鏍囧噯鍊�"> </el-table-column> <el-table-column - prop="zz" + prop="required" label="鍐呮帶鍊�"> </el-table-column> - <el-table-column - prop="oo" - wight="200" - label="缁忛獙浜�"> - <template> - <el-select v-model="value" placeholder="榛勬檽鏄�"> - <el-option - v-for="item in cities" - :key="item.value" - :label="item.label" - :value="item.value"> - <span style="float: left">{{ item.label }}</span> - <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span> - </el-option> + <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-select> </template> </el-table-column> <el-table-column - prop="pp" + prop="inspectionMaterialId" label="瀹為獙璁惧"> <template> - <el-select v-model="value" placeholder="鎷夊姏鏈�"> - <el-option - v-for="item in cities" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> + <!-- <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> @@ -151,126 +136,39 @@ </div> </template> <script> - import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' + import { selectInspectsListById,selectUser} from '@/api/experiment/planAssignments' export default { data(){ return { - searchData:{ - from_time:'', - supplier:'', - mcode:'', - name:'', - specifications:'', - unit:'', - num:'', - userName:'', - end_time:'', - - }, - value:{}, - cities:[{ - value: 'Beijing', - label: '榛勫皬鏄�' - }, { - value: 'Shanghai', - label: '榛勫皬鏄�' - }, { - }], - tableData:[{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - }], - currentPage:1, - pageSize:8, - id:'' + searchData:{ }, + insProducts:[], + uu:'', + value:'' } }, created(){ - console.log(this.$route.query.icode); - this.id = this.$route.query.icode; - this.selectInspectsList() + console.log(this.$route.query.id); + this.uu = this.$route.query.id; + this.selectInspectsListById() + this.selectUser() }, methods: { - async goback(){ - + //杩斿洖 + async goback(){ this.$router.push({name:'inspectionApplication'}) }, - async selectInspectsList() { - - // 鑾峰彇鍒嗛〉鍒楄〃 - const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage ,message:this.id}) - // this.inspectionTable = data - console.log(res) - - // res.data.forEach((item) => { - // var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - // var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] - // var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - // var checkdate = startTime + '~' + endTime - // var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] - // item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 - // item['checkdate'] = checkdate // 妫�楠屾棩鏈� - // item['createTime'] = createTime // 鐧昏鏃ユ湡 - // }) - this.searchData.mcode = res.data.row[0].mcode - this.searchData.supplier = res.data.row[0].supplier - this.searchData.from_time = res.data.row[0]["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - this.searchData.name = res.data.row[0].name - this.searchData.specifications = res.data.row[0].specifications - this.searchData.unit = res.data.row[0].unit - this.searchData.num = res.data.row[0].num - this.searchData.end_time = res.data.row[0]["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - this.searchData.userName = res.data.row[0].userName - - - - - const data = res.data.row - data.forEach((item) => { - var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] - var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - var checkdate = startTime + '~' + endTime - var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] - item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 - item['checkdate'] = checkdate // 妫�楠屾棩鏈� - item['createTime'] = createTime // 鐧昏鏃ユ湡 - }) - this.inspectionTable = data - this.total = res.data.total + //妫�楠屽崟璐d换浜� + async selectUser(){ + const res = await selectUser() + this.ZERENren = res.data + // console.log(this.ZERENren); }, + //妫�楠屽崟琛� + async selectInspectsListById() { + const res = await selectInspectsListById({id:this.uu}) + this.searchData = res.data + this.insProducts = res.data.insProducts + } } } </script> diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue index a378d03..72718de 100644 --- a/src/views/experiment/inspectionApplication/index.vue +++ b/src/views/experiment/inspectionApplication/index.vue @@ -82,7 +82,7 @@ label="妫�楠岀被鍨�" min-width="80px"> <template slot-scope="scope"> - <div v-if="scope.row.type === 0" ><span>鍘熸潗鏂欐楠�</span></div> + <div v-if="scope.row.type === 0" ><span >鍘熸潗鏂欐楠�</span></div> <div v-if="scope.row.type === 1" ><span>濮旀墭妫�楠�</span></div> <div v-if="scope.row.type === 2" ><span>鎴愬搧妫�楠�</span></div> </template> @@ -180,16 +180,17 @@ title="鏂板妫�楠屽崟" :visible.sync="checkTypeVisible" width="50%" + top="10vh" > <div class="check-box"> <el-radio-group v-model="type" @change="handleRadioChange"> - <el-radio :label="0" border >鍘熸潗鏂欐楠�</el-radio> - <el-radio :label="1" border>濮旀墭妫�楠�</el-radio> - <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio> + <el-radio :style="`background-color: ${type==0?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="0" border>鍘熸潗鏂欐楠�</el-radio> + <el-radio :style="`background-color: ${type==1?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="1" border>濮旀墭妫�楠�</el-radio> + <el-radio :style="`background-color: ${type==2?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="2" border>鎴愬搧妫�楠�</el-radio> </el-radio-group> </div> - <div v-if="type === 0 || type === ''"> - <el-form :model="infoForm" ref="infoForm" class="checkTypeForm" label-position="top" label-width="200px" size="mini"> + <div v-if="type === 0"> + <el-form :model="infoForm" ref="infoForm" class="checkTypeForm" label-position="top" label-width="200px" size="medium"> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏉ユ枡鏃ユ湡锛�"> @@ -367,11 +368,86 @@ </div> <span slot="footer" class="dialog-footer"> <el-button @click="checkTypeVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addInspection">纭� 瀹�</el-button> + <!-- <el-button type="primary" @click="addInspection">纭� 瀹�</el-button> --> + <el-button type="primary" @click="QUEding">纭� 瀹�</el-button> </span> </el-dialog> </div> </div> + + <!-- 纭畾璺宠浆鍩烘湰搴撳脊绐� --> + <el-dialog + title="鏍囧噯搴�" + :visible.sync="Standardframe" + width="48%" + + > + <!-- <el-form :model="form"> + <el-form-item label="璇烽�夋嫨瀹℃牳缁撴灉:" :label-width="formLabelWidth"> + </el-form-item> + </el-form> --> + + <!-- <div slot="footer" class="dialog-footer"> --> + <el-table + :data="tableData" + style="width: 100%; margin-bottom: 20px" + row-key="name" + border + height="calc(100vh - 250px)" + default-expand-all + ref="multipleTable" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" + > + <el-table-column type="selection" label="搴忓彿"> </el-table-column> + <el-table-column + type="index" + width="50px" + label="搴忓彿" + ></el-table-column> + <el-table-column label="椤圭洰鍚嶇О" sortable> + <template scope="scope"> + <el-tag + ><div + class="firstDiv" + :style="`color: ${ + scope.row.code == '[1]' ? '#16a7ff' : '#58c173' + }`" + > + {{ scope.row.code == "[1]" ? "01" : "02" }} + </div> + <span style="color: black">{{ scope.row.name }}</span></el-tag + > + </template> + </el-table-column> + <el-table-column + prop="unit" + label="鍗曚綅" + sortable + ></el-table-column> + <el-table-column label="鏍囧噯鍊�" sortable> + <template scope="scope"> + <el-input + v-if="scope.row.edit === true || scope.row.code === '[2]'" + @blur="requiredOnfocus(scope)" + v-model="scope.row.required" + placeholder="璇疯緭鍏ユ爣鍑嗗��" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="internal" label="鍐呮帶鍊�" sortable> + <template scope="scope"> + <el-input + v-if="scope.row.edit === true || scope.row.code === '[2]'" + @blur="requiredOnfocus(scope)" + v-model="scope.row.internal" + placeholder="璇疯緭鍏ュ唴鎺у��" + ></el-input> + </template> + </el-table-column> + </el-table> + <!-- </div> --> + </el-dialog> + <!-- 鍘熸潗鏂欐楠屾ā鎬佹 --> <el-dialog title="鍘熸潗鏂欐楠�" @@ -491,7 +567,7 @@ /> <el-table-column prop="formTime" - label="鏉ユ枡鏃ユ湡" + label="濮旀墭bian'ha" min-width="10%" /> <el-table-column @@ -534,13 +610,12 @@ </template> <template v-else> <router-view /> - </template> </div> </template> <script> - import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' + import { selectInspectsList, selectAll, addInspect,getCommisionList} from '@/api/experiment/planAssignments' export default { data() { return { @@ -588,7 +663,7 @@ amount: '', checkdate: [] }, - infoForm:'', + infoForm:{}, commisionSelection:{ entrust_coding: '', entrusted: '', @@ -629,10 +704,12 @@ pageSize: 8, // 姣忛〉鐨勬暟鎹潯鏁� radioValue: '鍏ㄩ儴', checkTypeVisible: false, - type: '', // 榛樿涓嶉�変腑鐨勭姸鎬� + type: 0, // 榛樿涓嶉�変腑鐨勭姸鎬� rawmaterialVisible: false, commisionVisible: false, - tmp: '' + tmp: '', + Standardframe: false, + tableData: [] } }, watch: { @@ -662,14 +739,20 @@ // console.log(res); this.inspectionTable = row; - console.log(row.icode); - this.icode = row.icode - this.$router.push({name:'Viewdetails',query: {icode:row.icode}}); + console.log(row.id); + this.id = row.id + this.$router.push({name:'Viewdetails',query: {id:row.id}}); this.selectInspectsList() + }, + //濮旀墭妫�楠� + async getCommisionList() { + const res = await getCommisionList({pageNo:1,pageSize:10 }) + this.commisionTable = res.data + console.log(this.commisionTable); }, async selectInspectsList() { // 鑾峰彇鍒嗛〉鍒楄〃 - const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.icode}) + const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.id}) // this.inspectionTable = data // console.log(res.data.row) const data = res.data.row @@ -745,19 +828,20 @@ async handleRadioChange(){ if(this.type === 0){ // 鍘熸潗鏂欐姤妫� - // this.rawmaterialVisible = true - // const res = await selectAll({type: this.type}) - // var data = res.data - // data.forEach((item)=>{ - // var checkdate = [] - // checkdate.push(item['createTime']) - // checkdate.push(item['updateTime']) - // item['checkdate'] = checkdate // 妫�楠屾棩鏈� - // }) - this.$router.push({ name: 'ReportForInspection' }); + this.rawmaterialVisible = true + const res = await selectAll({type: this.type}) + var data = res.data + data.forEach((item)=>{ + var checkdate = [] + checkdate.push(item['createTime']) + checkdate.push(item['updateTime']) + item['checkdate'] = checkdate // 妫�楠屾棩鏈� + }) + // this.infoForm = res.data + // this.$router.push({ name: 'ReportForInspection' }); }else if(this.type === 1){ - // this.commisionVisible = true - // const res = await selectAll({type: this.type}) + this.commisionVisible = true + const res = await getCommisionList({pageNo:1,pageSize:10}) // var data = res.data // data.forEach((item)=>{ // var checkdate = [] @@ -766,8 +850,8 @@ // item['checkdate_'] = item['startTime'] + '~' + item['endTime'] // item['checkdate'] = checkdate // 妫�楠屾棩鏈� // }) - // this.commisionTable = res.data - this.$router.push({ name: 'CommissionInspection' }); + this.commisionTable = res.data + // this.$router.push({ name: 'CommissionInspection' }); } }, // 鏂板妫�楠� @@ -811,7 +895,7 @@ type: this.type, unit: this.finishedTable.unit }) } - this.type = '' + this.type = 0 this.checkTypeVisible = false this.$message({ message: '娣诲姞鎴愬姛锛�', @@ -830,6 +914,10 @@ console.log(`褰撳墠椤�: ${val}`) this.currentPage = val this.selectInspectsList() + }, + //纭畾璺宠浆 + QUEding(){ + this.Standardframe = true } } } @@ -854,7 +942,7 @@ } height: auto; font-size: 22px !important; - padding: 20px 40px !important; + padding: 40px 50px !important; ::v-deep .el-radio__label{ font-size: 22px !important; padding-left: 0px !important; diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue index 6c699b2..4386859 100644 --- a/src/views/experiment/reportAuditing/index.vue +++ b/src/views/experiment/reportAuditing/index.vue @@ -78,7 +78,7 @@ </span> </template></el-table-column > - <el-table-column + <el-table-columne prop="materialName" label="鏍峰搧鍚嶇О" min-width="10%" @@ -86,7 +86,7 @@ <el-table-column prop="status" label="瀹℃壒鐘舵��" min-width="8%" v-model="Auditconclusion"> <template slot-scope="scope"> <span> - <el-tag type="warning">{{ + <el-tag :color="scope.row.status == 0 ? '' : 'rgb(187, 237, 221)'" type="warning">{{ scope.row.status == 0 ? "寰呴�氳繃" : "閫氳繃" }}</el-tag> </span> @@ -109,7 +109,7 @@ title="鍘熷璁板綍瀹℃牳" :visible.sync="checkskipvisible" width="30%" - + > <el-form :model="form"> <el-form-item label="璇烽�夋嫨瀹℃牳缁撴灉:" :label-width="formLabelWidth"> @@ -153,7 +153,7 @@ reportTable: [], page: 1, total: 0, - pageSize: 10, + pageSize: 8, checkskipvisible: false, form:{}, // handleClose:{}, @@ -163,7 +163,7 @@ Auditconclusion:{}, tableRow: {}, - + }; }, created() { @@ -201,9 +201,13 @@ //閫氳繃 async checkskip(row) { console.log(this.tableRow); - this.reportTable[this.tableRow.$index].status=2 + this.reportTable[this.tableRow.$index].status=1 this.transmitData(this.tableRow.row.id) this.checkskipvisible= false + this.$message({ + message: '閫氳繃鎴愬姛', + type: 'success' + }); }, //涓嶉�氳繃 @@ -212,12 +216,16 @@ this.reportTable[this.tableRow.$index].status=0 this.transmitData(this.tableRow.row.id) this.checkskipvisible= false + this.$message({ + message: '寰呴�氳繃', + type: 'warning' + }); }, //瀹℃牳 - async transmitData(id) { - let param={"id":id,"result":1} - let data = await checkApi(param) + async transmitData(id) { + let param={"id":id,"result":2} + let data = await checkApi(param) }, // 鏌ヨ鍒楄〃 async getData() { diff --git a/src/views/inspectionManagement/commissionInspection/addCommision.vue b/src/views/inspectionManagement/commissionInspection/addCommision.vue index bebe006..ce5d9d4 100644 --- a/src/views/inspectionManagement/commissionInspection/addCommision.vue +++ b/src/views/inspectionManagement/commissionInspection/addCommision.vue @@ -1,12 +1,13 @@ <template> - <div class="add_commision"> - <div class="content-main"> - <div class="firstBox"> - <div class="title">濮旀墭淇℃伅</div> - <div class="tableBox"> - <div class="tableBox-header"> - <el-button class="split" @click="dialogueFormVisible = true" type="primary" size="small" style="background-color: rgb(1, 102, 226);">娣诲姞鏍峰搧</el-button> -<!-- <el-input + <div class="add_commision"> + <div class="content-main"> + <div class="firstBox"> + <div class="title">濮旀墭淇℃伅</div> + <div class="tableBox"> + <div class="tableBox-header"> + <el-button class="split" @click="dialogueFormVisible = true" type="primary" size="small" + style="background-color: rgb(1, 102, 226);">娣诲姞鏍峰搧</el-button> + <!-- <el-input v-model="searchData" class="input-form split" placeholder="鎵弿浜岀淮鐮佸綍鍏ユ牱鍝�..." @@ -14,537 +15,493 @@ style="width: 200px;" > </el-input>--> - <el-button type="primary" size="small" style="background-color: rgb(1, 102, 226);">閲嶇疆</el-button> - </div> - <el-table - ref="detectionInfo" - :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="detectionInfo" - style="width: 100%" - > - <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%"> - <template slot-scope="scope"> - <div v-if="scope.row.addway === 0"> - <el-tag :type= 'success' disable-transitions>鎵弿</el-tag> - </div> - <div v-if="scope.row.addway === 1"> - <el-tag :type= 'primary' disable-transitions>褰曞叆</el-tag> - </div> - <div v-else></div> - </template> - </el-table-column> - <el-table-column - prop="experiment" - label="璇曢獙" - min-width="8%" - /> - <el-table-column - prop="remarks" - label="澶囨敞" - min-width="8%" - /> - <el-table-column - label="鎿嶄綔" - min-width="8%" - > - <template slot-scope="scope"> - <el-button type="text" size="small">淇敼</el-button> - <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉鍣� --> - <div> - <el-pagination - class="pagination" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="currentPage" - :page-sizes="[100, 200, 300, 400]" - :page-size="100" - layout="total, sizes, prev, pager, next, jumper" - :total="400"> - </el-pagination> - </div> - </div> - <div class="secondBox"> - <el-row class="header"> - <el-col :span="12">鍩烘湰淇℃伅</el-col> - <el-col :span="12" style="text-align: right;"> - <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <!-- <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> --> - </el-col> - </el-row> - <el-form :model="infoForm" ref="infoForm" class="infoForm" label-position="right" label-width="100px" size="mini" > - <div class="formwrapper"> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="濮旀墭缂栧彿锛�"> - <el-input style="width: 160px" type="text" :value="infoForm.commisioncode" readonly disabled="true" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="濮旀墭鍗曚綅锛�"> - <el-input style="width: 160px" v-model="infoForm.department" placeholder="璇疯緭鍏ュ鎵樺崟浣�" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鑱旂郴浜猴細"> - <el-input style="width: 160px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ュ鎵樺崟浣�" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鑱旂郴鐢佃瘽锛�"> - <el-input style="width: 160px" v-model="infoForm.tel" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="鑱旂郴鍦板潃锛�" > - <el-input style="width: 160px;" v-model="infoForm.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="瀹屾垚鏈熼檺锛�"> - <el-date-picker - v-model="infoForm.deadline" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="width: 160px;"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱鏃堕棿锛�"> - <el-date-picker - v-model="infoForm.time" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="width: 160px;"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱鏂瑰紡锛�"> - <el-select style="width: 160px;" 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-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="閫佹牱浜猴細" > - <el-input style="width: 160px;" v-model="infoForm.sender" placeholder="璇疯緭鍏ラ�佹牱浜�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱浜虹數璇濓細" > - <el-input style="width: 160px;" v-model="infoForm.sendertel" placeholder="璇疯緭鍏ラ�佹牱浜虹數璇�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鎶ュ憡鏁帮細"> - <el-input style="width: 160px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="濮旀墭澶囨敞锛�"> - <el-input style="width: 160px;" v-model="infoForm.other" placeholder="澶囨敞" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - </div> - <div class="submitBtn"> - <el-button type="primary" size="small" @click="submitInspection" style="background-color: rgb(1, 102, 226);">鎻愪氦</el-button> - <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> - </div> - </el-form> - </div> - </div> - <div class="checkType"> - <el-dialog - title="娣诲姞鎸囨爣" - :visible.sync="dialogueFormVisible" - width="40%" - > - <el-form :model="addPointerForm" ref="addPointerForm" class="addPointerForm" label-position="right" label-width="100px" size="mini"> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="鏍峰搧缂栧彿锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.sampleNumber" size="small" placeholder="璇烽�夋嫨鏍峰搧缂栧彿"> - <el-option v-for="options in samplecodeoptions" :value="options.value" :key="options.key" >{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="鏍峰搧鍚嶇О锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.sampleName" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"> - <el-option v-for="options in sampleoptions" :value="options.value" :key="options.key">{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.specificationsModels" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"> - <el-option v-for="options in model_spe_options" :value="options.value" :key="options.key">{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="鏍峰搧鍗曚綅锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="鏍峰搧鏁伴噺锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.samplesNumber" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="澶囨敞锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.remarks" placeholder="璇疯緭鍏ュ娉�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="娣诲姞瀹為獙锛�"> - <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;"> - <el-checkbox v-for="expers in experList" :label="expers.label" :key="expers.key">{{ expers.label }}</el-checkbox> - </el-checkbox-group> - </el-form-item> - </el-col> - </el-row> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="addInspection">娣诲姞</el-button> - <el-button @click="dialogueFormVisible = false">鍙� 娑�</el-button> - </span> - </el-dialog> - </div> - </div> -</div> + <el-button type="primary" size="small" style="background-color: rgb(1, 102, 226);">閲嶇疆</el-button> + </div> + <el-table ref="detectionInfo" :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="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%"> + <template slot-scope="scope"> + <div v-if="scope.row.addway === 0"> + <el-tag type="success" disable-transitions>鎵弿</el-tag> + </div> + <div v-if="scope.row.addway === 1"> + <el-tag type="primary" disable-transitions>褰曞叆</el-tag> + </div> + <div v-else></div> + </template> + </el-table-column> + <el-table-column prop="remarks" label="澶囨敞" min-width="8%" /> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button type="text" size="small">淇敼</el-button> + <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + </div> + <div class="secondBox"> + <el-row class="header"> + <el-col :span="12" style="font-size: 16px;margin-bottom: 5px;">鍩烘湰淇℃伅</el-col> + <el-col :span="12" style="text-align: right;"> + </el-col> + </el-row> + <el-form :model="infoForm" ref="infoForm" class="infoForm" label-position="right" label-width="100px" + size="mini"> + <div class="formwrapper"> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="濮旀墭缂栧彿锛�"> + <el-input style="width: 200px" type="text" :value="infoForm.commisioncode" readonly disabled + autocomplete="off" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="濮旀墭鍗曚綅锛�"> + <el-input style="width: 200px" v-model="infoForm.department" placeholder="璇疯緭鍏ュ鎵樺崟浣�" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鑱旂郴浜猴細"> + <el-input style="width: 200px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ュ鎵樺崟浣�" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鑱旂郴鐢佃瘽锛�"> + <el-input style="width: 200px" v-model="infoForm.tel" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" size="small" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="鑱旂郴鍦板潃锛�"> + <el-input style="width: 200px;" v-model="infoForm.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="瀹屾垚鏈熼檺锛�"> + <el-date-picker v-model="infoForm.deadline" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;" + size="small"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="閫佹牱鏃堕棿锛�"> + <el-date-picker v-model="infoForm.time" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;"> + </el-date-picker> + </el-form-item> + </el-col> + <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-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="閫佹牱浜猴細"> + <el-input style="width: 200px;" v-model="infoForm.sender" placeholder="璇疯緭鍏ラ�佹牱浜�" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="閫佹牱浜虹數璇濓細"> + <el-input style="width: 200px;" v-model="infoForm.sendertel" placeholder="璇疯緭鍏ラ�佹牱浜虹數璇�" + autocomplete="off" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鎶ュ憡鏁帮細"> + <el-input style="width: 200px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="濮旀墭澶囨敞锛�"> + <el-input style="width: 200px;" v-model="infoForm.other" placeholder="澶囨敞" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + </el-row> + </div> + <div class="submitBtn"> + <el-button type="primary" size="small" @click="submitInspection" + style="background-color: rgb(1, 102, 226);">鎻愪氦</el-button> + <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> + <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> + </div> + </el-form> + </div> + </div> + <div class="checkType"> + <el-dialog title="娣诲姞鏍峰搧" :visible.sync="dialogueFormVisible" width="40%" top="30vh"> + <el-form :model="addPointerForm" ref="addPointerForm" class="addPointerForm" label-position="right" + label-width="100px" size="mini"> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="鏍峰搧缂栧彿锛�"> + <el-input v-model="addPointerForm.sampleNumber" size="small" disabled> + </el-input> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="鏍峰搧鍚嶇О锛�"> + <el-select v-model="addPointerForm.sampleName" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О" + @change="upMaterialName"> + <el-option v-for="options in sampleoptions" :value="options.key" :label="options.value"></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="璇勫畾鏍囧噯锛�"> + <el-select v-model="addPointerForm.addway" size="small" placeholder="璇烽�夋嫨璇勫畾鏍囧噯"> + <el-option v-for="options in model_spe_options" :value="options.value" + :key="options.key">{{ options.value }}</el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="瑙勬牸鍨嬪彿锛�"> + <el-select v-model="addPointerForm.specificationsModels" size="small" placeholder="璇峰厛閫夋嫨鏍峰搧鍚嶇О"> + <el-option v-for="options in model_spe_options" :value="options.value" + :key="options.key">{{ options.value }}</el-option> + </el-select> + </el-form-item> + </el-col> + + </el-row> + <el-row :gutter="50"> + + <el-col :span="11"> + <el-form-item label="鏍峰搧鍗曚綅锛�"> + <el-input type="text" v-model="addPointerForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + </el-form-item> + </el-col> + + <el-col :span="11"> + <el-form-item label="鏍峰搧鏁伴噺锛�"> + <el-input type="text" v-model="addPointerForm.samplesNumber" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + </el-form-item> + </el-col> + + </el-row> + <el-row :gutter="50"> + <el-col :span="9"> + <el-form-item label="娣诲姞椤圭洰锛�"> + <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;"> + <el-checkbox v-for="expers in experList" :label="expers.label" + :key="expers.key">{{ expers.label }}</el-checkbox> + </el-checkbox-group> + </el-form-item> + </el-col> + <el-col :span="41"> + <el-form-item label="澶囨敞锛�"> + <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 20}" style="width: 200px;" v-model="addPointerForm.remarks" placeholder="璇疯緭鍏ュ娉�" autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="addInspection">娣诲姞</el-button> + <el-button @click="dialogueFormVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> + </div> + </div> + </div> </template> <script> -import {getSampleName, getModelSpecification, getlink, addInspection} from '@/api/inspection/commisioninspection' -export default { - data() { - return { - currentPage: 0, - searchData: '', - infoForm: { - commisioncode: '', - department: '', - contacter: '', - tel: '', - address: '', - deadline: '', - time: '', - way: '', - sender: '', - sendertel: '', - num: '', - other: '' - }, - detectionInfo: [], - addPointerForm:{ - sampleNumber: '', - sampleName: '', - specificationsModels: '', - unit: '', - samplesNumber: '', - remarks: '', - experiment: [], - addway: '' - }, - experList:[{ - key: '1', - label: '澶栬妫�鏌�' - },{ - key: '2', - label: '鍔ㄤ綔鐢靛帇璇曢獙' - },{ - key: '3', - label: '鐢甸樆绠℃硠婕忕數娴佽瘯楠�' - },{ - key: '4', - label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' - }], - sampleoptions:[{ - key:'1', - value: '閫夐」1' - },{ - key:'2', - value: '閫夐」2' - }], - samplecodeoptions:[{ - key:'1', - value: '' - }], - model_spe_options:[{ - key:'1', - value: '閫夐」1' - },{ - key: '2', - value: '閫夐」2' - }], - sampleDeliveryMode:[{ - key: '1', - value: '閫佹牱' - },{ - key: '2', - value: '涓婇棬' - }], - dialogueFormVisible: false, - showDetail: false - } - }, - created(){ - this.getlink() - }, - mounted(){ - this.getSampleName() - this.getModelSpecification() - }, - methods: { - // 鑾峰彇閾炬帴link - getlink(){ - getlink().then((result)=>{ - this.$store.commit('settings/SAVE_LINK',result.data) - console.log(this.$store.state.settings.link) - }) - }, - async getSampleName(){ - const res = await getSampleName() - // console.log('res',res.data) - this.sampleoptions = res.data.map((item)=>{ - return{ - key:item.id.toString(), - value:item.name - } - }) - this.samplecodeoptions = res.data.map((item)=>{ - return{ - key:item.id.toString(), - value:item.code - } - }) - }, - async getModelSpecification(){ - const res = await getModelSpecification({materialId: '1'}) - // console.log(res) - this.model_spe_options = res.data.map((item)=>{ - return{ - key:item.specificationsId, - value:item.specificationsName - } - }) - }, - addInspection(){ - let exper = this.addPointerForm.experiment[0] - this.addPointerForm.addway = 1 - 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) - this.dialogueFormVisible = false - this.addPointerForm ={ - sampleNumber: '', - sampleName: '', - specificationsModels: '', - unit: '', - samplesNumber: '', - remarks: '', - experiment: [], - addway: '' - } - }, - async submitInspection(){ - let sampledeliveryway - if(this.infoForm.way === '閫佹牱'){ - sampledeliveryway = 1 - }else{ - sampledeliveryway = 2 - } - const res = await addInspection({completionDeadline: this.infoForm.deadline, - contactAddress: this.infoForm.address, - contactNumber: this.infoForm.tel, - contacts: this.infoForm.contacter, - entrustRemarks: this.infoForm.other, - entrusted: this.infoForm.department, - inspectionTime: this.infoForm.time, - linkDetectionList: this.detectionInfo, - reportNumber: parseInt(this.infoForm.num), - sampleDeliveryMode: sampledeliveryway, - sampleDeliveryPhone: this.infoForm.sendertel, - sampleSender: this.infoForm.sender}) -// const res = await addInspection({ -// completionDeadline: "2023-08-03", -// contactAddress: "姹熻嫃鍗楅��", -// contactNumber: "12321423432", -// contacts: "灏忛粦", -// entrustRemarks: "濮旀墭澶囨敞YPBH123456789YPBH123456789YPBH123456789", -// entrusted: "闃块噷宸村反", -// inspectionTime: "2023-08-03", -// linkDetectionList: [ -// { -// "experiment": "鍋氭ⅵ", -// "remarks": "閫氳繃浜�", -// "sampleName": "鍙戝姩鏈�", -// "sampleNumber": "YPBH123456789", -// "samplesNumber": 20, -// "specificationsModels": "GGXH-AAAAA", -// "unit": "鐧惧害" -// } -// ], -// reportNumber: 23, -// sampleDeliveryMode: 1, -// sampleDeliveryPhone: "123456789676", -// sampleSender: "灏忕櫧" -// }) - // console.log(res) - this.infoForm.commisioncode = res.data - if(res.data){ - this.$message({ - message: '鎭枩浣�!', - type: 'success' - }) - // 璺宠浆椤甸潰 - this.$router.push('/inspectionManagement/commissionInspection') - this.showDetail = true - }else{ - this.$message.error(res.message) - } - }, - handleSizeChange(pageSize) { - this.pageParams.pageSize = pageSize - }, - handleCurrentChange(pageNo) { - this.pageParams.pageNo = pageNo - }, - deleteRow(row){ - console.log(row) - row = null - } - } -} + import { + getSampleName, + getModelSpecification, + getlink, + addInspection, + isIfViewUUID + } from '@/api/inspection/commisioninspection' + export default { + data() { + return { + currentPage: 0, + searchData: '', + infoForm: { + commisioncode: '', + department: '', + contacter: '', + tel: '', + address: '', + deadline: '', + time: '', + way: '', + sender: '', + sendertel: '', + num: '', + other: '' + }, + detectionInfo: [], + addPointerForm: { + sampleNumber: '', + sampleName: '', + specificationsModels: '', + unit: '', + samplesNumber: '', + remarks: '', + experiment: [], + addway: '' + }, + experList: [{ + key: '1', + label: '澶栬妫�鏌�' + }, { + key: '2', + label: '鍔ㄤ綔鐢靛帇璇曢獙' + }, { + key: '3', + label: '鐢甸樆绠℃硠婕忕數娴佽瘯楠�' + }, { + key: '4', + label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' + }], + sampleoptions: [{ + key: '1', + value: '閫夐」1' + }, { + key: '2', + value: '閫夐」2' + }], + samplecodeoptions: [{ + key: '1', + value: '' + }], + model_spe_options: [], + sampleDeliveryMode: [{ + key: '1', + value: '閫佹牱' + }, { + key: '2', + value: '涓婇棬' + }], + dialogueFormVisible: false, + showDetail: false, + viewId: null + } + }, + created() { + this.viewId = this.$route.params.viewId + this.$store.commit('settings/SAVE_LINK', this.viewId) + this.getlink(this.$route.params.viewId) + }, + mounted() { + this.getSampleName() + }, + methods: { + getlink(viewId) { + if (viewId == null) { + this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') + this.$router.push('/404') + return + } + isIfViewUUID({ + viewId + }).then(res => { + if (!res.data) { + this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') + this.$router.push('/404') + } + }) + }, + async getSampleName() { + const res = await getSampleName() + this.sampleoptions = res.data.map((item) => { + return { + key: item.id.toString(), + value: item.name, + code: item.code + } + }) + }, + async getModelSpecification(val) { + const res = await getModelSpecification({ + materialId: val + }) + this.model_spe_options = res.data.map((item) => { + return { + key: item.specificationsId, + value: item.specificationsName + } + }) + }, + addInspection() { + let exper = this.addPointerForm.experiment[0] + this.addPointerForm.addway = 1 + 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) + this.dialogueFormVisible = false + this.addPointerForm = { + sampleNumber: '', + sampleName: '', + specificationsModels: '', + unit: '', + samplesNumber: '', + remarks: '', + experiment: [], + addway: '' + } + }, + async submitInspection() { + let sampledeliveryway + if (this.infoForm.way === '閫佹牱') { + sampledeliveryway = 1 + } else { + sampledeliveryway = 2 + } + const res = await addInspection({ + completionDeadline: this.infoForm.deadline, + contactAddress: this.infoForm.address, + contactNumber: this.infoForm.tel, + contacts: this.infoForm.contacter, + entrustRemarks: this.infoForm.other, + entrusted: this.infoForm.department, + inspectionTime: this.infoForm.time, + linkDetectionList: this.detectionInfo, + reportNumber: parseInt(this.infoForm.num), + sampleDeliveryMode: sampledeliveryway, + sampleDeliveryPhone: this.infoForm.sendertel, + sampleSender: this.infoForm.sender + }) + this.infoForm.commisioncode = res.data + if (res.data) { + this.$message({ + message: '鎭枩浣�!', + type: 'success' + }) + // 璺宠浆椤甸潰 + this.$router.push('/inspectionManagement/commissionInspection') + this.showDetail = true + } else { + this.$message.error(res.message) + } + }, + handleSizeChange(pageSize) { + this.pageParams.pageSize = pageSize + }, + handleCurrentChange(pageNo) { + this.pageParams.pageNo = pageNo + }, + deleteRow(row) { + + }, + upMaterialName(val) { + this.sampleoptions.forEach(a => { + if (a.key == val) { + this.addPointerForm.sampleNumber = a.code + } + }) + this.getModelSpecification(val) + } + } + } </script> <style lang="scss" scoped> -.add_commision{ - padding: 20px; -} - .content-main{ padding: 20px 40px; background-color: #f0f2f5; width: 100%; height: 100vh; + display: flex; + flex-direction: column; + justify-content: space-between; + // align-items: center; -.firstBox{ - .title { - padding: 15px 10px; - font-size: 18px; - background-color: #0166e2; - color: #fff; - border-radius: 4px; - } - .tableBox{ - background-color: #fff; - padding: 0px 20px; - margin: 0px -15px; - flex: 1; - background: #fff; - /* padding: 20px 20px 10px 20px; */ - display: flex; - flex-direction: column; - .tableBox-header{ - padding: 20px 0px; - .split{ - margin-right: 15px; - } - } - .el-table { - flex: 1; - } - >div:nth-child(3){ - display: flex; - justify-content: end; - margin: 10px 0; - } - } -} -.secondBox{ - margin: 0px -15px; - .header{ - display: flex; - justify-content: space-between; - padding: 10px 20px; - margin-top: 10px; - } - .submitBtn{ - display: flex; - justify-content: end; - margin-right: 40px; - margin-top: 20px; - } -} -.infoForm{ - background-color: #fff; - padding: 20px 50px; - .formwrapper{ - margin: 20px 0px; - padding-left: 30px; - .el-row{ - margin: 10px 0px; - } - } -} -} -</style> + .firstBox { + .title { + padding: 15px 10px; + font-size: 18px; + background-color: #0166e2; + color: #fff; + border-radius: 4px; + margin-bottom: 20px; + } + + .tableBox { + background-color: #fff; + padding: 0px 20px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + + .tableBox-header { + padding: 20px 0px; + + .split { + margin-right: 15px; + } + } + + .el-table { + flex: 1; + } + + >div:nth-child(3) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } + + .secondBox { + + .header { + display: flex; + justify-content: space-between; + padding: 10px 20px; + margin-top: 10px; + } + + .submitBtn { + display: flex; + justify-content: end; + margin-right: 40px; + margin-top: 20px; + } + } + + .infoForm { + background-color: #fff; + padding: 20px 50px; + + .formwrapper { + margin: 20px 0px; + padding-left: 30px; + + .el-row { + margin: 10px 0px; + } + } + } + } +</style> \ No newline at end of file diff --git a/src/views/inspectionManagement/commissionInspection/index.vue b/src/views/inspectionManagement/commissionInspection/index.vue index a07fdda..b113ca8 100644 --- a/src/views/inspectionManagement/commissionInspection/index.vue +++ b/src/views/inspectionManagement/commissionInspection/index.vue @@ -339,70 +339,71 @@ display: flex; justify-content: space-between; padding: 5px 24px 0px 24px; - } -.top-bar{ - margin: -25px -15px; - background: #fff; - display: flex; - justify-content: space-between; - padding: 5px 24px 0px 24px; - .sermargin{ - margin-right: 60px; - } - .rightForm{ - display: flex; - justify-content: space-between; - /* background-color: #bfa; */ - height: 40px; - line-height: 40px; - >div{ - padding: 0px 10px; - padding-bottom: 10px; - border:1px solid rgb(8, 156, 230); - margin-right: 10px; - /* height: 40px; + .sermargin { + margin-right: 60px; + } + + .rightForm { + display: flex; + justify-content: space-between; + /* background-color: #bfa; */ + height: 40px; + line-height: 40px; + + >div { + padding: 0px 10px; + padding-bottom: 10px; + border: 1px solid rgb(8, 156, 230); + margin-right: 10px; + /* height: 40px; line-height: 40px; */ - } - .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; - } - } - } + .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; + } + } + } .rightBtn { background-color: rgb(1, 102, 226); diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue index 494b9da..a56cda7 100644 --- a/src/views/laboratory/role/index.vue +++ b/src/views/laboratory/role/index.vue @@ -7,10 +7,6 @@ <el-input v-model="searchData.roleName" class="input-form" placeholder="璇疯緭鍏ヨ鑹插悕绉�" style="width:250px"> </el-input> </el-form-item> - <el-form-item label="鏉冮檺锛�" class="sermargin"> - <el-input v-model="searchData.permission" class="input-form" placeholder="璇疯緭鍏ユ潈闄�" style="width:250px"> - </el-input> - </el-form-item> <el-form-item class="rightBtn"> <el-button type="primary">鏌ヨ</el-button> <el-button type="primary" plain>閲嶇疆</el-button> @@ -28,11 +24,10 @@ <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="roleTable" style="width: 100%"> - <el-table-column type="selection" min-width="8%" /> - <el-table-column prop="rolename" label="瑙掕壊鍚嶇О" min-width="20%" /> - <el-table-column prop="permission" label="鏉冮檺" min-width="20%" /> - <el-table-column prop="create_time" label="鍒涘缓鏃堕棿" min-width="20%" /> - <el-table-column prop="update_time" label="鏇存柊鏃堕棿" min-width="20%" /> + <el-table-column type="index" min-width="8%" /> + <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" min-width="20%" /> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="20%" /> + <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="20%" /> <el-table-column label="鎿嶄綔" min-width="12%"> <template slot-scope="scope"> <el-button type="text" size="small">缂栬緫</el-button> @@ -50,23 +45,61 @@ </div> </div> </div> - <el-dialog title="鏂板瑙掕壊" :visible.sync="dialogTableVisible" width="60%"> + <el-dialog title="鏂板瑙掕壊" :visible.sync="dialogTableVisible" width="50%"> <el-form :model="roleAdd" ref="roleAdd" label-position="right" label-width="100px"> - <el-form-item label="瑙掕壊鍚�:"> - <el-input style="width: 300px" v-model="roleAdd.roleName" placeholder="璇疯緭鍏ヨ鑹插悕"> - </el-input> - </el-form-item> - <el-form-item label="鍔熻兘閫夋嫨:"> - <el-cascader size="medium " v-model="roleAdd.menuData" :options="menuInfo"> - <template slot-scope="{ node, data }"> - <span>{{ data.label }}</span> - <span v-if="!node.isLeaf"> ({{ }}) </span> - </template> - </el-cascader> - </el-form-item> + <el-col :span="24" style="display: flex;justify-content: space-between;"> + <el-form-item :rules="nameaRules" label="瑙掕壊鍚�:"> + <el-input @blur="assertName" style="width: 300px" v-model="roleAdd.roleName" placeholder="璇疯緭鍏ヨ鑹插悕"> + </el-input> + </el-form-item> + <!-- <el-form-item label="鑿滃崟閫夋嫨:"> + <el-cascader style="width: 300px" collapse-tags size="medium " filterable :props="props" + v-model="roleAdd.menuData" :options="menuInfo"> + <template slot-scope="{ data }"> + <span>{{ data.label }}</span> + </template> + </el-cascader> + </el-form-item> --> + </el-col> </el-form> + <el-col :span="24"> + <el-table height="300" :data="menuInfo" style="width: 100%;margin-bottom: 20px;" row-key="id" + :default-expand-all="false" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column highlight-current-row prop="parentId" label="鑿滃崟绫诲瀷" sortable width="180"> + <template slot-scope="scope"> + <span v-if="scope.row.parentId == 0 && scope.row.children != undefined" style="color: #409eff;">涓昏彍鍗�</span> + <span v-if="scope.row.parentId == 0 && scope.row.children === undefined" style="color: #409eff;"> + 涓昏彍鍗� + </span> + </template> + </el-table-column> + <el-table-column prop="name" label="鑿滃崟鍚�" sortable width="180"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0"> + <span style="color: #409eff;">{{ scope.row.name }}</span> + </el-col> + <el-col v-else> + <span style="color: #40b815;">{{ scope.row.name }}</span> + </el-col> + </template> + </el-table-column> + <el-table-column prop="id" label="鎿嶄綔鏉冮檺"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0 && scope.row.children != undefined"> + <!-- <el-checkbox v-model="scope.row.select">鏌ヨ</el-checkbox> --> + </el-col> + <el-col v-else> + <el-checkbox size="medium" v-model="scope.row.selected" @change="chekSelect(scope)">鏌ヨ</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.added" @change="chekAdd(scope)">娣诲姞</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.updated" @change="chekUpdate(scope)">淇敼</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.deleted" @change="chekDelet(scope)">鍒犻櫎</el-checkbox> + </el-col> + </template> + </el-table-column> + </el-table> + </el-col> <span slot="footer" class="dialog-footer"> - <el-button @click="dialogTableVisible = false">鍙� 娑�</el-button> + <el-button @click="clearAll">鍙� 娑�</el-button> <el-button type="primary" @click="addRole">纭� 瀹�</el-button> </span> </el-dialog> @@ -74,8 +107,12 @@ </template> <script> -import { getMenusTree } from '@/api/laboratory/role' +import { getMenusTree, addRoleInfo, assertRepeat, getAllRoleAndMenuInfo } from '@/api/laboratory/role' +import { default as menuPower } from './menuPower.vue' export default { + components: { + menuPower: () => import('./menuPower.vue') + }, data() { return { props: { multiple: true }, @@ -83,22 +120,15 @@ roleName: null, menuData: null }, + nameaRules: [{ required: true, message: '璇疯緭鍏ヨ鑹插悕' }], + menuTableTree: null, searchData: { roleName: '', permission: '' }, + assertRepeatName: true, menuInfo: [], - roleTable: [{ - rolename: '閮ㄩ暱', - permission: 'ROOT', - create_time: '2023-07-04 12:12:12', - update_time: '2023-07-04 12:12:12' - }, { - rolename: '缁勯暱', - permission: '--', - create_time: '2023-07-04 12:12:12', - update_time: '2023-07-04 12:12:12' - }], + roleTable: [], updateData: { oldPassWord: '', newPassWord: '', @@ -113,23 +143,62 @@ created() { }, + mounted() { + this.start() + }, methods: { + chekSelect(scope) { + + }, + async start() { + let res = await getAllRoleAndMenuInfo() + this.roleTable = res.data + console.log(res); + }, + async assertName() { + if (this.roleAdd.roleName == null || this.roleAdd.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕', + type: 'warning' + }); + return + } + let res = await assertRepeat({ roleName: this.roleAdd.roleName }) + if (!res.data) { + this.assertRepeatName = false + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏ワ紒', + type: 'warning' + }); + } else { + this.assertRepeatName = true + } + }, + chekAdd(scope) { + scope.row.selected = true + }, + chekUpdate(scope) { + scope.row.selected = true + }, + chekDelet(scope) { + scope.row.selected = true + }, async addClickRole() { let res = await getMenusTree(); this.menuInfo = res.data this.menuInfo.forEach(item => { - item.select = false - item.add = false - item.update = false - item.delete = false + this.$set(item, 'selected', false); + this.$set(item, 'added', false); + this.$set(item, 'updated', false); + this.$set(item, 'deleted', false); if (item.children.length == 0) { delete item['children'] } else { item.children.forEach(c => { - c.select = false - c.add = false - c.update = false - c.delete = false + this.$set(c, 'selected', false); + this.$set(c, 'added', false); + this.$set(c, 'updated', false); + this.$set(c, 'deleted', false); if (c.children.length == 0) { delete c['children'] } @@ -137,10 +206,68 @@ } }) this.dialogTableVisible = true - // console.log(this.dialogTableVisible) }, - addRole() { - console.log(this.roleAdd); + async addRole() { + if (this.roleAdd.roleName == null || this.roleAdd.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕', + type: 'warning' + }); + return + } + if (!this.assertRepeatName) { + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏�', + type: 'warning' + }); + return + } + this.menuInfo.forEach(item => { + if (item.children != undefined) { + item.children.forEach(c => { + if (c.added) { + item.selected = true + } + if (c.selected) { + item.selected = true + } + if (c.updated) { + item.selected = true + } + if (c.deleted) { + item.selected = true + } + }) + } + }) + console.log(this.menuInfo); + this.roleAdd.menuData = JSON.parse(JSON.stringify(this.menuInfo)); + this.roleAdd.menuData.forEach(item => { + if (item.children != undefined) { + let child = item.children.filter(c => { + return c.added == true || c.selected == true || c.deleted == true || c.updated === true + }) + item.children = child + } + }) + this.roleAdd.menuData = this.roleAdd.menuData.filter(item => { + return item.selected == true + }) + let res = await addRoleInfo(this.roleAdd); + if (res.data) { + this.$message({ + message: '娣诲姞瑙掕壊鎴愬姛', + type: 'success' + }); + this.dialogTableVisible = false + } else { + this.$message.error('娣诲姞澶辫触锛佽閲嶆柊鎿嶄綔'); + } + }, + assertDml(a, b) { + a = b ? true : false + console.log(a); + return a }, // search(){}, // reset(){}, @@ -153,6 +280,13 @@ handleCurrentChange(val) { console.log(`褰撳墠鏄${val}椤礰) this.currentPage = val + }, + clearAll() { + this.roleAdd.roleName = null + this.roleAdd.menuData = null + this.menuInfo = [] + this.assertRepeatName = true + this.dialogTableVisible = false } } } diff --git a/src/views/laboratory/role/menuPower.vue b/src/views/laboratory/role/menuPower.vue new file mode 100644 index 0000000..b994a9e --- /dev/null +++ b/src/views/laboratory/role/menuPower.vue @@ -0,0 +1,21 @@ +<template> + <div> + + </div> +</template> +<script> +export default { + data() { + return { + + } + }, + created() { + + }, + methods: { + + } +} +</script> +<style scoped></style> \ No newline at end of file diff --git a/src/views/template_testReport/index.vue b/src/views/template_testReport/index.vue new file mode 100644 index 0000000..575e579 --- /dev/null +++ b/src/views/template_testReport/index.vue @@ -0,0 +1,651 @@ +<template> + <div class="content-wrapper"> + <div class="content-main"> + <div class="cover"> + <div class="cover-top"> + <div> + <div style="height: 30px; line-height: 30px;">鎶ュ憡缂栧彿:</div> + <div style="height: 30px; line-height: 30px;">Reference No:</div> + </div> + </div> + <div class="title"> + <h1 style="text-align-last:justify ;">妫�楠屾姤鍛�</h1> + <h1>Test Report</h1> + </div> + <div class="cover-body"> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>璇曟牱鍚嶇О</div> + <span style="font-size: 14px;">Name of Product</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div style="text-align-last: justify;">鍨嬪彿</div> + <span style="font-size: 14px;">Type and Size</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>濮旀墭鍗曚綅</div> + <span style="font-size: 14px;display: block;margin: 10px 50px 0px;">Client</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>妫�楠岀被鍒�</div> + <span style="font-size: 14px;">Kind of Test</span></div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + </div> + <div class="cover-footer"> + <span>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</span><br> + <span style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</span> + </div> + </div> + <div class="pageOne"> + <div class="statement"> + <div><h2>澹版槑</h2></div> + <div style="text-align-last: center;"><h2 style="font-size: 14px;">Statement</h2></div> + </div> + <div class="statement-body"> + <div> + <span>1. 鏈楠屾姤鍛婏紙鍖呮嫭澶嶅嵃浠讹級鏈姞妫�娴嬩笓鐢ㄧ珷涓�寰嬫棤鏁堛��</span><br> + <span>This test report (including any duplicates) shall become effective only with pecial chapter for testing on.</span> + </div> + <div> + <span>2. 鏈楠屾姤鍛婃棤缂栧啓銆佸鏍搞�佹壒鍑嗕汉绛剧珷鏃犳晥銆�</span><br> + <span>This test report shall become effective only with the signatures of compiler checker and approver.</span> + </div> + <div> + <span>3. 鏈楠屾姤鍛婃秱鏀规棤鏁堛��</span><br> + <span>This test report will be invalid if altered.</span> + </div> + <div> + <span>4. 鏈楠屾姤鍛婁笉寰楅儴鍒嗗鍗般��</span><br> + <span>This test report mustn鈥檛 copy partly.</span> + </div> + <div> + <span>5. 閫佹牱濮旀墭妫�楠岋紝浠呭鏉ユ牱璐熻矗銆�</span><br> + <span>For the sample submitted by clients, the test result is valid only for these samples.</span> + </div> + <div> + <span>6. 鏍峰搧鍙婂鎵樺崟浣嶄负濮旀墭鏂硅嚜鍛藉悕銆�</span><br> + <span>Samples and consignor name for the principal.</span> + </div> + <div> + <span>7. 鏈楠屾姤鍛婁腑鑻辨枃鎻忚堪鏈夊啿绐佹椂锛屼互涓枃瑙i噴涓哄噯銆�</span><br> + <span>If the Chinese and English version of the test report have any conflict, the Chinese version should be the standard for arbitrament.</span> + </div> + <div> + <span>8. 濮旀墭鏂瑰鏈楠屾姤鍛婅嫢鏈夊紓璁紝搴斾簬鏍峰搧淇濆瓨鏈熷唴鍚戞湰涓績鎻愬嚭锛岃仈绯荤數璇濓細0513-84885657</span><br> + <span>Clients who have any different ideas about this test report, may contract with Test Central within the sample reservation time. Tel: 0513-84885657</span> + </div> + <div> + <span>9. 鏈腑蹇冩牱鍝佽嚜鎶ュ憡鍙戦�佹棩璧凤紝涓�鑸繚瀛樹竴涓湀锛屼互澶囧楠屻��</span><br> + <span>The sample shall be reserved for one month beginning from the data when this test report is submitted for examine or review.</span> + </div> + </div> + <div class="statement-footer"> + <div class="depart"> + <span>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</span><br> + <span>Test Center of Jiangsu Zhongtian Technology Co., LTD</span> + </div> + <div class="address"> + <span>鍦� 鍧�锛氭睙鑻忕渷鍗楅�氬競缁忔祹鎶�鏈紑鍙戝尯鏂板紑鍗楄矾19鍙�</span><br> + <span>Address: No.19 Xinkai South Road, Nantong Economic and Technological Development Zone, Jiangsu Province</span> + </div> + <div class="zipcode">閭斂缂栫爜Zip Code锛�226010</div> + <div class="tel">鐢� 璇漈el锛�0513-89059043</div> + <div class="email">閭� 绠盓-mail:锛歾tttc@chinaztt.com </div> + </div> + </div> + <div class="pageTwo"> + <div class="header" style="line-height: 10px;"> + <div style="width: 350px;margin: 0 auto; text-align-last: justify;"> + <h2 style="font-size: 18px;">姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</h2> + </div> + <div style="width: 500px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</h2> + </div> + <div style="width: 120px;margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 18px;">妫�娴嬫姤鍛�</h2> + </div> + <div style="width: 100px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">Test Report</h2> + </div> + </div> + <div class="table"> + <div class="table-header"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>绗�1椤靛叡2椤�</span><br> + <span>Page 1 of 2</span> + </div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <tr> + <td><span>璇曟牱鍚嶇О</span><br> + <span>Name of product</span></td> + <td colspan="2"></td> + <td> + <span>瑙勬牸鍨嬪彿</span><br> + <span>Type and size</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏍峰搧鏁伴噺</span><br> + <span>Test item</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠岄」鐩�</span><br> + <span>Test item</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏉ユ牱鏂瑰紡</span><br> + <span>Delivering method</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠岀被鍨�</span><br> + <span>Type of test</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏍峰搧鐘舵��</span><br> + <span>Sample discription</span> + </td> + <td colspan="2"></td> + <td> + <span>鐢熶骇鍗曚綅</span><br> + <span>Producer</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏀舵牱鏃堕棿</span><br> + <span>Received date</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠屾棩鏈�</span><br> + <span>Test date</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>濮旀墭浜�</span><br> + <span>Consignor</span> + </td> + <td colspan="2"></td> + <td> + <span>鐢佃瘽</span><br> + <span>Tel</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>濮旀墭鍗曚綅</span><br> + <span>Client</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>濮旀墭鍗曚綅鍦板潃</span><br> + <span>Address</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>妫�楠岀幆澧�</span><br> + <span>Test environment</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>妫�楠屼緷鎹�</span><br> + <span>Test standard</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td style="height: 180px;"> + <span>缁撹</span><br> + <span>Conclusion </span> + </td> + <td colspan="5"> + <div style="height: 120px;"></div> + <div style="height: 60px;margin-left: 250px;"> + <span>锛堟娴嬫姤鍛婁笓鐢ㄧ珷锛�</span><br> + <span>( SPECIFIC STAMP FOR TEST RTORT) </span><br> + <span>绛惧彂鏃ユ湡锛� 骞� 鏈� 鏃�</span><br> + <span>Date of issue: August 23, 2023</span> + </div> + </td> + </tr> + <tr> + <td> + <span>澶囨敞</span><br> + <span>Remark </span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>缂栧埗</span><br> + <span>Preparer</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠�</span><br> + <span>Tester</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>瀹℃牳</span><br> + <span>Checker </span> + </td> + <td colspan="2"></td> + <td> + <span>鎵瑰噯</span><br> + <span>Approver</span> + </td> + <td colspan="2"></td> + </tr> + </table> + </div> + </div> + </div> + <div class="pageThree"> + <div class="header" style="line-height: 10px;"> + <div style="width: 350px;margin: 0 auto; text-align-last: justify;"> + <h2 style="font-size: 18px;">姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</h2> + </div> + <div style="width: 500px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</h2> + </div> + <div style="width: 120px;margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 18px;">妫�娴嬫姤鍛�</h2> + </div> + <div style="width: 100px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">Test Report</h2> + </div> + </div> + <div class="table"> + <div class="table-header"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>绗�2椤靛叡2椤�</span><br> + <span>Page 2 of 2</span> + </div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <tr> + <td colspan="4"> + <span>鏍峰搧缂栧彿</span><br> + <span>Sample No</span></td> + <td colspan="3"></td> + <td colspan="4"> + <span>瑙勬牸鍨嬪彿</span><br> + <span>Type</span> + </td> + <td colspan="3"></td> + </tr> + <tr> + <td> + <span>搴忓彿</span><br> + <span>No</span> + </td> + <td colspan="3"> + <span>妫�楠岄」鐩�</span><br> + <span>Test item</span> + </td> + <td> + <span>鍗曚綅</span><br> + <span>Unit</span> + </td> + <td colspan="3"> + <span>鏍囧噯瑕佹眰</span><br> + <span>Requirement</span> + </td> + <td colspan="3"> + <span>妫�楠岀粨鏋�</span><br> + <span>Test result</span> + </td> + <td> + <span>缁撹</span><br> + <span>Conclusion</span> + </td> + </tr> + <tr> + <td> + <span></span><br> + <span></span> + </td> + <td colspan="3"> + <span>鏍峰搧鏍囪瘑</span><br> + <span>Sample labeling</span> + </td> + <td> + <span></span><br> + <span>I</span> + </td> + <td colspan="3"> + <span></span><br> + <span></span> + </td> + <td colspan="3"> + <span></span><br> + <span></span> + </td> + <td> + <span></span><br> + <span></span> + </td> + </tr> + <tr v-for="item in resultTable" :key="index"> + <td> + <span>{{ item.id }}</span><br> + </td> + <td colspan="3"> + <span>{{ item.testitem }}</span><br> + <span>{{ item.testitem_engName }}</span> + </td> + <td> + <span>{{ item.unit }}</span> + </td> + <td colspan="3"> + <span>{{ item.requirement }}</span><br> + <span>{{ item.requirement_eng }}</span> + </td> + <td colspan="3"> + <span>{{ item.testresult }}</span><br> + <span>{{ item.testresult_engName }}</span> + </td> + <td> + <span>{{ item.conclusion }}</span> + </td> + </tr> + + </table> + </div> + </div> + </div> + <div class="pageFour"> + <div class="page-header" style="display: flex;justify-content: space-between;font-size: 12px;"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>闄勯〉</span><br> + <span>Appenfix</span> + </div> + </div> + <hr> + <div class="table"> + <div class="table-header"> + <div style="width: 200px; margin: 0 auto;text-align-last: justify;"><h2>妫�楠岃澶囦竴瑙堣〃</h2></div> + <div style="text-align-last: center;"><h2 style="font-size: 14px;">Equipment List</h2></div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <thead> + <tr> + <td> + <span>搴忓彿</span><br> + <span>No</span> + </td> + <td colspan="2"> + <span>璁惧鍚嶇О</span><br> + <span>Equipment name</span> + </td> + <td> + <span>璁惧鍨嬪彿</span><br> + <span>type</span> + </td> + <td colspan="2"> + <span>缂栧彿</span><br> + <span>Factory number</span> + </td> + <td colspan="2"> + <span>鏍″噯鏈夋晥鏈�</span><br> + <span>Date of validity</span> + </td> + </tr> + </thead> + <tr v-for="item in table" :key="index"> + <td> + <span>{{ item.id }}</span> + </td> + <td colspan="2"> + <span>{{ item.equipment_name }}</span> + </td> + <td> + <span>{{ item.type }}</span><br> + </td> + <td colspan="2"> + <span>{{ item.factory_number }}</span> + </td> + <td colspan="2"> + <span>{{ item.validity }}</span> + </td> + </tr> + + </table> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + props:{ + + }, + data(){ + return { + resultTable:[ + { + id: '1', + testitem: '鍘熷鎷変几', + testitem_engName: 'Primitive strength', + unit: 'MPa', + requirement: '鏈�灏�10.0', + requirement_eng: 'Minimun 10.0', + testresult: '', + testitem_engName: '' + } + ], + table:[{ + id: 1, + equipment_name: '鎷栨媺鏈�', + type: 1, + factory_number: 'Akjgfewof', + validity:'2023.8.25~2023.8.27' + }] + } + } +} +</script> + +<style lang="scss" scoped> +.content-wrapper{ + background-color: #f0f2f5; + width: 100%; + height: 100vh; + overflow-y: auto; + .content-main{ + margin: -50px auto; + width: 50%; + // background-color: #fff; + // background-color: #bfa; + .cover{ + margin: 80px 0px; + padding:0px 50px; + height: 1200px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + .cover-top{ + display: flex; + justify-content: end; + font-size: 20px; + margin-right: 50px; + padding-top: 50px; + // font-weight: bold; + } + .title{ + margin-top: 100px; + padding: 0px 220px; + text-align: center; + font-size: 25px; + } + .cover-body{ + font-size: 25px; + margin: 100px 80px; + .name{ + // background-color: #bfa; + display: flex; + justify-content: space-between; + margin-bottom: 20px; + .line{ + width: 500px; + border-bottom: solid 1px black; + text-align: center; + // height: 60px; + line-height: 60px; + } + } + } + .cover-footer{ + text-align: center; + margin-top: 200px; + span{ + font-size: 23px; + height: 40px; + line-height: 40px; + } + } + } + .pageOne{ + margin-top: -50px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 100px; + height: 1200px; + .statement{ + margin: 0 auto; + width: 100px; + text-align-last: justify; + } + .statement-body{ + line-height: 32px; + text-align: justify; + margin: 30px 0px; + font-size: 12px; + } + .statement-footer{ + line-height: 30px; + font-size: 12px; + } + } + .pageTwo{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 20px; + .table-header{ + display: flex; + justify-content: space-between; + font-size: 14px; + line-height: 20px; + } + .table-body{ + font-size: 12px; + table td{ + width: 150px; + height: 52px; + } + } + } + } + .pageThree{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 20px; + .table-header{ + display: flex; + justify-content: space-between; + font-size: 14px; + line-height: 20px; + } + .table-body{ + font-size: 12px; + table td{ + width: 8%; + height: 52px; + } + } + } + } + .pageFour{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 50px; + .table-header{ + line-height: 20px; + } + .table-body{ + margin-top: 20px; + font-size: 12px; + table td{ + width: 80px; + height: 52px; + } + } + } + } + + } +} +</style> \ No newline at end of file -- Gitblit v1.9.3