From 80740c17e5c742d8de2d7b2c7493ebc7704ead4e Mon Sep 17 00:00:00 2001 From: yuyu <1981343953@qq.com> Date: 星期二, 15 八月 2023 17:15:26 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/views/experiment/reportAuditing/index.vue | 26 src/api/CNAS/reviewAnnualPlan.js | 38 src/api/urlEnum/satisfactionSurveys.js | 11 src/views/laboratory/ledger/index.vue | 614 +++++---------- src/views/CNAS/satisfactionSurveys/index.vue | 696 +++++++++++++---- src/views/experiment/checkTheReport/index.vue | 35 src/views/laboratory/personnel/index.vue | 151 +-- src/views/CNAS/reviewAnnualPlan/index.vue | 632 ++++++++++++++++ src/views/experiment/planAssignments/index.vue | 87 + src/api/urlEnum/personnel.js | 8 10 files changed, 1,596 insertions(+), 702 deletions(-) diff --git a/src/api/CNAS/reviewAnnualPlan.js b/src/api/CNAS/reviewAnnualPlan.js new file mode 100644 index 0000000..020809b --- /dev/null +++ b/src/api/CNAS/reviewAnnualPlan.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +//鏌ヨ瀹℃煡璁″垝 +export function selectAllList(params) { + return request({ + url: '/cnasAnnualPlan/selectAllList', + method: 'get', + params + }) +} + +//鏂板瀹℃煡璁″垝 +export function addCnasAnnualPlan(data) { + return request({ + url: '/cnasAnnualPlan/addCnasAnnualPlan', + method: 'post', + data + }) + } + + + //涓婁紶闄勪欢 +export function addAccessory(data) { + return request({ + url: '/cnasAnnualPlan/addAccessory', + method: 'post', + data + }) +} + +//鍒犻櫎瀹℃牳骞村害璁″垝 +export function deleteCnasAnnualPlan(params) { + return request({ + url: '/cnasAnnualPlan/deleteCnasAnnualPlan', + method: 'get', + params + }) +} diff --git a/src/api/urlEnum/personnel.js b/src/api/urlEnum/personnel.js new file mode 100644 index 0000000..acade93 --- /dev/null +++ b/src/api/urlEnum/personnel.js @@ -0,0 +1,8 @@ +const baseurl='/user' + +const url={ + "list_new_personnel": baseurl+"/list_new_personnel",//鑾峰彇浜哄憳淇℃伅 +} +export default{ + url +} \ No newline at end of file diff --git a/src/api/urlEnum/satisfactionSurveys.js b/src/api/urlEnum/satisfactionSurveys.js new file mode 100644 index 0000000..8a4bcba --- /dev/null +++ b/src/api/urlEnum/satisfactionSurveys.js @@ -0,0 +1,11 @@ +const baseurl='/cnasSatisfactionSurvey' + +const url={ + "getCnasSatisfactionSurvey": baseurl+"/getCnasSatisfactionSurvey",//鑾峰彇涓嶅悎鏍煎搧鍙嶉 + "getFillNameAndId": baseurl+"/getFillNameAndId",//褰撳墠褰曞叆浜� + "uploadFile": baseurl+"/uploadFile",//鏂囦欢涓婁紶 + "addSurvey": baseurl+"/addSurvey",//婊℃剰搴︽柊澧� +} +export default{ + url +} \ No newline at end of file diff --git a/src/views/CNAS/reviewAnnualPlan/index.vue b/src/views/CNAS/reviewAnnualPlan/index.vue index 183ba06..e99d7f6 100644 --- a/src/views/CNAS/reviewAnnualPlan/index.vue +++ b/src/views/CNAS/reviewAnnualPlan/index.vue @@ -1,5 +1,633 @@ <template> - <div> - 瀹℃牳骞村害璁″垝 + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true"> + <el-form-item> + <el-date-picker + v-model="input" + class="input-form" + type="month" + placeholder="璇烽�夋嫨鏌ヨ鏃ユ湡" + > + </el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getData()">鏌ヨ</el-button> + <el-button type="primary" plain @click="resetData()">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-form class="rightBtn"> + <!-- 涓婁紶闄勪欢 --> + <el-form-item class="createBtn"> + <el-button + type="primary" + icon="el-icon-upload2" + @click=" + dialogFormVisible1 = true; + uploading = {}; + resetForm('uploading'); + " + >涓婁紶闄勪欢</el-button + > + <el-dialog + title="涓婁紶闄勪欢" + :visible.sync="dialogFormVisible1" + width="30%" + > + <el-form :model="uploading" :rules="rules1" ref="uploading"> + <el-form-item + label="瀹℃牳鏃ユ湡:" + :label-width="formLabelWidth1" + prop="auditTime" + style="margin-bottom: 20px" + > + <el-date-picker + class="uploading-form" + v-model="uploading.auditTime" + type="date" + placeholder="璇烽�夋嫨鏃ユ湡" + autocomplete="off" + > + </el-date-picker> + </el-form-item> + <el-form-item + prop="accessoryFile" + label="涓婁紶闄勪欢:" + :label-width="formLabelWidth1" + > + <el-input + class="uploading-form" + v-model="uploading.accessoryFile" + autocomplete="off" + placeholder="璇烽�夋嫨鏂囦欢" + ></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible1 = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitUp('uploading')" + >纭� 瀹�</el-button + > + </div> + </el-dialog> + </el-form-item> + <!-- 鏂板璁″垝 --> + <el-form-item class="createBtn"> + <el-button + type="primary" + icon="el-icon-document-add" + @click=" + dialogFormVisible2 = true; + newly = {}; + resetForm('newly'); + " + >鏂板璁″垝</el-button + > + + <el-dialog + title="鏂板璁″垝" + :visible.sync="dialogFormVisible2" + width="55%" + > + <el-form :model="newly" :rules="rules2" ref="newly"> + <!-- 绗竴琛� --> + <el-row class="newly-margin-bottom"> + <el-col :span="12"> + <el-form-item + label="璁″垝鏃堕棿:" + :label-width="formLabelWidth2" + prop="planTime" + > + <el-date-picker + class="newly-form" + v-model="newly.planTime" + type="date" + placeholder="璇烽�夋嫨璁″垝鏃ユ湡" + autocomplete="off" + > + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="閮ㄩ棬:" + :label-width="formLabelWidth2" + prop="department" + > + <el-input + class="newly-form" + v-model="newly.department" + placeholder="璇烽�夋嫨閮ㄩ棬" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 绗簩琛� --> + <el-row class="newly-margin-bottom"> + <el-col :span="12"> + <el-form-item + label="鎬ц川:" + :label-width="formLabelWidth2" + prop="auditType" + > + <el-select + class="newly-form" + v-model="newly.auditType" + placeholder="璇烽�夋嫨鎬ц川" + autocomplete="off" + > + <el-option label="鍐呭" value="0"></el-option> + <el-option label="绠$悊璇勫" value="1"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="瀹℃牳鐩殑:" + :label-width="formLabelWidth2" + prop="auditPurpose" + > + <el-input + class="newly-form" + v-model="newly.auditPurpose" + placeholder="璇疯緭鍏ュ鏍哥洰鐨�" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 绗笁琛� --> + <el-row class="newly-margin-bottom"> + <el-col :span="12"> + <el-form-item + label="瀹℃牳缁勯暱:" + :label-width="formLabelWidth2" + prop="auditLeader" + > + <el-input + class="newly-form" + v-model="newly.auditLeader" + placeholder="璇疯緭鍏ュ鏍哥粍闀�" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="瀹℃牳鑼冨洿:" + :label-width="formLabelWidth2" + prop="auditScope" + > + <el-input + class="newly-form" + v-model="newly.auditScope" + placeholder="璇疯緭鍏ュ鏍歌寖鍥�" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 绗洓琛� --> + <el-row class="newly-margin-bottom"> + <el-col :span="12"> + <el-form-item + label="缁勫憳:" + :label-width="formLabelWidth2" + prop="auditEmp" + > + <el-input + class="newly-form" + v-model="newly.auditEmp" + placeholder="璇疯緭鍏ョ粍鍛�" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="瀹℃牳渚濇嵁:" + :label-width="formLabelWidth2" + prop="auditPursuant" + > + <el-input + class="newly-form" + v-model="newly.auditPursuant" + placeholder="璇疯緭鍏ュ鏍镐緷鎹�" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 绗簲琛� --> + <el-row class="newly-margin-bottom"> + <el-col :span="12"> + <el-form-item + label="缂栧埗浜�:" + :label-width="formLabelWidth2" + prop="writeUser" + > + <el-input + class="newly-form" + v-model="newly.writeUser" + placeholder="璇疯緭鍏ョ紪鍒朵汉" + autocomplete="off" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="瀹℃牳鏃ユ湡:" + :label-width="formLabelWidth2" + > + <el-date-picker + class="newly-form" + v-model="newly.auditTime" + type="date" + placeholder="璇烽�夋嫨瀹℃牳鏃ユ湡" + autocomplete="off" + > + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible2 = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitAddData('newly')" + >纭� 瀹�</el-button + > + </div> + </el-dialog> + </el-form-item> + <!-- 瀵煎嚭骞村害璁″垝 --> + <el-form-item class="createBtn"> + <el-button type="primary" icon="el-icon-document-checked" + >瀵煎嚭骞村害璁″垝</el-button + > + </el-form-item> + <el-form-item class="createBtn"> + <el-button type="primary" icon="el-icon-document-checked" + >瀵煎嚭鍐呴儴瀹炴柦璁″垝</el-button + > + </el-form-item> + </el-form> </div> + <div class="library-table"> + <div class="table-box"> + <el-table + ref="auditTable" + border + :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="auditTable" + style="width: 100%" + > + <el-table-column type="index" label="搴忓彿" min-width="30px"> + <template> + <el-checkbox type="checkbox" /> + </template> + </el-table-column> + <el-table-column prop="year" label="骞村害" min-width="60px" /> + <el-table-column prop="month" label="鏈堝害" min-width="60px" /> + <el-table-column prop="planTime" label="璁″垝鏃堕棿" min-width="100px" /> + <el-table-column prop="auditType" label="鎬ц川" min-width="80px"> + <template slot-scope="scope"> + <span> + {{ scope.row.auditType == 0 ? "鍐呭" : "绠$悊璇勫" }} + </span> + </template> + </el-table-column> + <el-table-column prop="department" label="閮ㄩ棬" min-width="80px" /> + <el-table-column + prop="auditLeader" + label="瀹℃牳缁勯暱" + min-width="80px" + /> + <el-table-column prop="auditEmp" label="缁勫憳" min-width="80px" /> + <el-table-column + prop="auditPurpose" + label="瀹℃牳鐩殑" + min-width="100px" + /> + <el-table-column + prop="auditScope" + label="瀹℃牳鑼冨洿" + min-width="100px" + /> + <el-table-column + prop="auditPursuant" + label="瀹℃牳渚濇嵁" + min-width="100px" + /> + <el-table-column prop="writeUser" label="缂栧埗浜�" min-width="80px" /> + <el-table-column prop="createTime" label="缂栧埗鏃ユ湡" min-width="100px"> + </el-table-column> + <el-table-column prop="keyboarder" label="褰曞叆浜�" min-width="80px" /> + <el-table-column prop="checker" label="妫�楠屼汉" min-width="80px" /> + <el-table-column + prop="auditTime" + label="瀹℃牳鏃ユ湡" + min-width="100px" + /> + <el-table-column prop="count" label="涓嶇鍚堥」鐩暟" min-width="60px" /> + <el-table-column prop="auditState" label="鐘舵��" min-width="100px"> + <template slot-scope="scope"> + <div v-if="scope.row.auditState === 0"> + <el-tag class="tag-item" type="warning">鍗冲皢寮�濮�</el-tag> + </div> + <div v-else-if="scope.row.auditState === 1"> + <el-tag class="tag-item" type="success">瀹屾垚</el-tag> + </div> + <div v-else> + <el-tag class="tag-item" type="danger">閫炬湡</el-tag> + </div> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="100" fixed="right"> + <template slot-scope="scope"> + <el-button type="text" size="small">鏌ョ湅</el-button> + <el-button + type="text" + size="small" + @click="deleteClick(scope.row.id)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + :current-page="page" + :page-sizes="[10, 20, 30, 40]" + :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 { + selectAllList, + addCnasAnnualPlan, + addAccessory, + deleteCnasAnnualPlan, +} from "@/api/CNAS/reviewAnnualPlan"; +import { P } from "af-table-column"; +export default { + data() { + return { + input: "", + auditTable: [], + page: 1, + total: 0, + pageSize: 10, + dialogFormVisible1: false, + dialogFormVisible2: false, + formLabelWidth1: "80px", + formLabelWidth2: "80px", + //涓婁紶闄勪欢鍙傛暟 + uploading: { + auditTime: "", + //====================鏂囦欢涓婁紶杩樻病鍋�,姝ゅ鏄簲鏄枃浠跺弬鏁�,鏆傛椂杩樻槸鏂囨湰 + accessoryFile: "", + }, + rules1: { + auditTime: [ + { + type: "date", + required: true, + message: "璇烽�夋嫨鏃ユ湡", + trigger: "blur", + }, + ], + accessoryFile: [ + { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" }, + { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" }, + ], + }, + //鏂板璁″垝瀵硅薄 + newly: { + planTime: "", + auditType: "", + department: "", + auditPurpose: "", + auditLeader: "", + auditEmp: "", + auditPursuant: "", + auditScope: "", + writeUser: "", + auditTime: "", + }, + rules2: { + planTime: [ + { + type: "date", + required: true, + message: "璇烽�夋嫨鏃ユ湡", + trigger: "blur", + }, + ], + auditType: [ + { required: true, message: "璇烽�夋嫨鎬ц川", trigger: "change" }, + ], + department: [ + { required: true, message: "璇疯緭鍏ラ儴闂�", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + auditPurpose: [ + { required: true, message: "璇疯緭鍏ュ鏍哥洰鐨�", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + auditLeader: [ + { required: true, message: "璇疯緭鍏ュ鏍哥粍闀�", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + auditEmp: [ + { required: true, message: "璇疯緭鍏ョ粍鍛�", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + auditPursuant: [ + { required: true, message: "璇疯緭鍏ュ鏍镐緷鎹�", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + auditScope: [ + { required: true, message: "璇疯緭鍏ュ鏍歌寖鍥�", trigger: "blur" }, + { min: 1, max: 5, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + writeUser: [ + { required: true, message: "璇疯緭鍏ョ紪鍒朵汉", trigger: "blur" }, + { min: 1, max: 25, message: "瀛楁暟杩囬暱", trigger: "blur" }, + ], + }, + }; + }, + created() { + this.getData(); + }, + methods: { + //====================================================涓婁紶闄勪欢 + //涓婁紶闄勪欢瀛楁纭 + submitUp(uploading) { + this.$refs[uploading].validate((valid) => { + if (!valid) { + return false; + } else { + // this.upData(); + } + }); + }, + // //涓婁紶闄勪欢 + // async upData() { + // try { + // const res = await addAccessory(this.uploading); + // console.log(res); + // } catch (error) { + // this.$message.error("娣诲姞澶辫触"); + // } + // this.resetData(); + // this.dialogFormVisible1 = false; + // }, + + //鏂板璁″垝瀛楁纭 + submitAddData(newly) { + this.$refs[newly].validate((valid) => { + if (!valid) { + return false; + } else { + this.addData(); + } + }); + }, + //鏂板璁″垝 + async addData() { + try { + const res = await deleteCnasAnnualPlan(this.newly); + } catch (error) { + this.$message.error("娣诲姞澶辫触"); + } + this.getData(); + this.dialogFormVisible2 = false; + }, + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + handleSizeChange(val) { + console.log(`姣忛〉 ${val} 鏉); + this.pageSize = val; + this.getData(); + }, + // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� + handleCurrentChange(val) { + console.log(`褰撳墠椤�: ${val}`); + this.page = val; + this.getData(); + }, + // 閲嶇疆鎸夐挳 + resetData() { + this.input = undefined; + this.page = 1; + this.pageSize = 10; + this.getData(); + }, + // 鏌ヨ鍒楄〃 + async getData() { + const params = { + page: this.page, + pageSize: this.pageSize, + planTime: this.input ? this.input : undefined, + }; + const { data } = await selectAllList(params); + this.auditTable = data.row; + this.total = data.total; + }, + async deleteOneData(planId) { + await deleteCnasAnnualPlan({ planId: planId }); + this.getData(); + console.log(planId); + }, + + deleteClick(planId) { + this.$confirm("纭鍒犻櫎?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + }).then(() => { + this.deleteOneData(planId); + }); + }, + //閲嶇疆琛ㄥ崟 + resetForm(formName) { + this.$refs[formName].resetFields(); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.top-bar { + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; + .input-form { + width: 400px; + } + .uploading-form { + // margin-bottom: 20px; + width: 400px; + } + .newly-form { + // margin-bottom: 20px; + width: 400px; + } + .newly-margin-bottom { + margin-bottom: 23px; + } +} + +.library-table { + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + display: flex; + flex-direction: column; + + .table-box { + padding: 0px 20px; + margin-top: 20px; + flex: 1; + background: #fff; + display: flex; + flex-direction: column; + > div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + .tag-item { + width: 80px; + } + } +} +.rightBtn { + display: flex; + justify-content: flex-end; +} +.createBtn { + margin-left: 10px; +} +</style> diff --git a/src/views/CNAS/satisfactionSurveys/index.vue b/src/views/CNAS/satisfactionSurveys/index.vue index 571dd96..f1e2efb 100644 --- a/src/views/CNAS/satisfactionSurveys/index.vue +++ b/src/views/CNAS/satisfactionSurveys/index.vue @@ -1,191 +1,555 @@ <template> - <div class="content-main survey"> - <div class="top-bar"> - <el-form ref="form" style="width: 1000px;" :inline="true"> - <!-- <el-input v-model="input" class="input-form" placeholder="璇风洿鎺ヨ緭鍏ユ牱寮忕紪鍙�/鏍峰搧鍚嶇О/鍨嬪彿瑙勬牸/杩涜鎼滅储鎴栦笅鎷夐�夋嫨杩涜缁勫悎鏌ヨ" + <div class="content-main survey"> + <div class="top-bar"> + <el-form ref="form" style="width: 1000px;" :inline="true"> + <!-- <el-input v-model="input" class="input-form" placeholder="璇风洿鎺ヨ緭鍏ユ牱寮忕紪鍙�/鏍峰搧鍚嶇О/鍨嬪彿瑙勬牸/杩涜鎼滅储鎴栦笅鎷夐�夋嫨杩涜缁勫悎鏌ヨ" @keyup.enter.native="getData" /> --> - <el-form-item style="width: 800px;"> - <el-col style="display: flex; justify-content: space-around;" :span="8"> - <el-row>璋冩煡鏃ユ湡:</el-row> - <el-row><el-input type="date" style="width: 130px;" v-model="materialCode" placeholder="璇烽�夋嫨璋冩煡鏃ユ湡"></el-input></el-row> - </el-col> - <el-col style="display: flex; justify-content: space-around;" :span="8"> - <el-row>褰曞叆鏃ユ湡:</el-row> - <el-row><el-input style="width: 130px;" v-model="materialName" placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"></el-input></el-row> - </el-col> - </el-form-item> - <el-form-item> - <el-button type="primary" size="small" @click="getData()">鏌ヨ</el-button> - <el-button type="primary" size="small" plain @click="resetData()">娓呯┖</el-button> - </el-form-item> - </el-form> - <el-form> - <el-button size="40" icon="el-icon-document-add" type="primary">鏂板璁板綍</el-button> - </el-form> - </div> - <div class="library-table"> - <div class="table-box"> - <el-table ref="tableData" :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="tableData" style="width: 100%"> - <el-table-column type="selection" label="" min-width="5%" /> - <el-table-column label="鏍峰搧缂栧彿" min-width="10%"> - <template slot-scope="scope"> - <a style="color: #3894d1;">{{ scope.row.materialCode }}</a> - </template> - </el-table-column> - <el-table-column prop="materialName" label="鏍峰搧鍚嶇О" min-width="10%" /> - <el-table-column label="鐢宠鍗曞彿" min-width="10%" > - <template slot-scope="scope"> - <a style="color: #3894d1;">{{ scope.row.inspectionCode }}</a> - </template> - </el-table-column> - <el-table-column prop="createTime" label="鐧昏鏃ユ湡" min-width="10%" /> - <el-table-column prop="testManager" label="妫�楠岃礋璐d汉" min-width="10%" /> - <el-table-column prop="specifications" label="瑙勬牸鍨嬪彿" min-width="10%" /> - <el-table-column prop="inspectionStatus" label="缁撹" min-width="10%"> - <template slot-scope="scope"> - <el-tag type="danger">涓嶅悎鏍�</el-tag> - </template> - </el-table-column> - <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">浣滃簾</el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉鍣� --> - <div> - <el-pagination :current-page="page" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" - @current-change="handleCurrentChange" /> - </div> + <el-form-item style="width: 800px;"> + <el-col style="display: flex; justify-content: space-around;" :span="12"> + <el-row>璋冩煡鏃ユ湡:</el-row> + <el-row style="width: 300px;"> + <el-date-picker style="width: 270px;" class="newly-form" v-model="surveyDate" type="date" + placeholder="璇烽�夋嫨璋冩煡鏃ユ湡" autocomplete="off"> + </el-date-picker> + </el-row> + </el-col> + <el-col style="display: flex; justify-content: space-around;" :span="12"> + <el-row>褰曞叆鏃ユ湡:</el-row> + <el-row style="width: 300px;"> + <el-date-picker style="width: 270px;" class="newly-form" v-model="entryDate" type="date" + placeholder="璇烽�夋嫨褰曞叆鏃ユ湡" autocomplete="off"> + </el-date-picker> + </el-row> + </el-col> + </el-form-item> + <el-form-item> + <el-button type="primary" size="small" @click="getData()">鏌ヨ</el-button> + <el-button type="primary" size="small" plain @click="resetData()">娓呯┖</el-button> + </el-form-item> + </el-form> + <el-form> + <el-button size="40" @click="getFillName()" icon="el-icon-document-add" type="primary">鏂板璁板綍</el-button> + </el-form> + </div> + <div class="library-table"> + <div class="table-box"> + <el-table ref="tableData" :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="tableData" style="width: 100%"> + <el-table-column prop="id" type="index" label="搴忓彿" min-width="20%"/> + <el-table-column prop="surveyDate" label="璋冩煡鏃ユ湡" min-width="10%" /> + <el-table-column prop="userUnit" label="瀹㈡埛鍗曚綅鍚嶇О" min-width="10%" /> + <el-table-column prop="projectName" label="椤圭洰鍚嶇О" min-width="10%" /> + <el-table-column prop="fillName" label="濉〃浜哄鍚�" min-width="10%" /> + <el-table-column prop="post" label="鑱屼綅" min-width="10%" /> + <el-table-column prop="telephone" label="鑱旂郴鐢佃瘽" min-width="10%" /> + <el-table-column prop="userName" label="褰曞叆浜�" min-width="10%" /> + <el-table-column label="闄勪欢" min-width="10%"> + <template slot-scope="scope"> + <a style="color: #3894d1;" @click="look(scope.row.id)">鏌ョ湅闄勪欢</a> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination :current-page="page" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" + @current-change="handleCurrentChange" /> </div> </div> </div> - </template> + <el-dialog title="婊℃剰搴﹁皟鏌�" :visible.sync="dialogVisible" width="50%"> + <table class="table" style="width: 100%;"> + <tr> + <td> </td> + <td>婊℃剰</td> + <td>涓�鑸�</td> + <td>涓嶆弧鎰�</td> + <td>寤鸿</td> + </tr> + <tr> + <td>鏈嶅姟鎬佸害</td> + <td><el-radio v-model="serviceAttitude" label="0"><span hidden>婊℃剰</span></el-radio></td> + <td><el-radio v-model="serviceAttitude" label="1"><span hidden>涓�鑸�</span> </el-radio></td> + <td><el-radio v-model="serviceAttitude" label="2"><span hidden>涓嶆弧鎰�</span></el-radio></td> + <td><el-input v-model="serviceAttitudeInput" placeholder="璇疯緭鍏ュ唴瀹�"></el-input></td> + </tr> + <tr> + <td>鎶�鏈兘鍔�</td> + <td><el-radio v-model="technicalPower" label="0"><span hidden>婊℃剰</span></el-radio></td> + <td><el-radio v-model="technicalPower" label="1"><span hidden>涓�鑸�</span> </el-radio></td> + <td><el-radio v-model="technicalPower" label="2"><span hidden>涓嶆弧鎰�</span></el-radio></td> + <td><el-input v-model="technicalPowerInput" placeholder="璇疯緭鍏ュ唴瀹�"></el-input></td> + </tr> + <tr> + <td>妫�娴嬪伐浣�</td> + <td><el-radio v-model="testJob" label="0"><span hidden>婊℃剰</span></el-radio></td> + <td><el-radio v-model="testJob" label="1"><span hidden>涓�鑸�</span> </el-radio></td> + <td><el-radio v-model="testJob" label="2"><span hidden>涓嶆弧鎰�</span></el-radio></td> + <td><el-input v-model="testJobInput" placeholder="璇疯緭鍏ュ唴瀹�"></el-input></td> + </tr> + <tr> + <td>鏀惰垂鍚堢悊鎬�</td> + <td><el-radio v-model="reasonableCharge" label="0"><span hidden>婊℃剰</span></el-radio></td> + <td><el-radio v-model="reasonableCharge" label="1"><span hidden>涓�鑸�</span> </el-radio></td> + <td><el-radio v-model="reasonableCharge" label="2"><span hidden>涓嶆弧鎰�</span></el-radio></td> + <td><el-input v-model="reasonableChargeInput" placeholder="璇疯緭鍏ュ唴瀹�"></el-input></td> + </tr> + <tr> + <td>鏀硅繘瑕佹眰</td> + <td colspan="4"> + <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="璇疯緭鍏ュ唴瀹�" + v-model="improvementRequirements"> + </el-input> + </td> + </tr> + <tr> + <td>鍏朵粬琛ュ厖</td> + <td colspan="4"> + <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="璇疯緭鍏ュ唴瀹�" + v-model="otherSupplements"> + </el-input> + </td> + </tr> + </table> + <!-- <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="dialogVisible = false">纭� 瀹�</el-button> + </span> --> + </el-dialog> + <el-dialog title="鏂板婊℃剰搴﹁皟鏌ヨ褰�" :visible.sync="dialogVisible2" width="50%"> + <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> + <el-row> + <el-col :span="12"> + <el-form-item label="璋冩煡鏃ユ湡锛�" prop="surveyDate"> + <el-date-picker style="width: 200px;" class="newly-form" v-model="ruleForm.surveyDate" type="date" + placeholder="璇烽�夋嫨璋冩煡鏃ユ湡" autocomplete="off"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瀹㈡埛鍗曚綅锛�" prop="userUnit"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ュ鎴峰崟浣嶅悕绉�" v-model="ruleForm.userUnit"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="椤圭洰鍚嶇О锛�" prop="projectName"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ラ」鐩悕绉�" v-model="ruleForm.projectName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑱旂郴鐢佃瘽锛�" prop="telephone"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-model="ruleForm.telephone"></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 濉〃浜哄鍚� --> + <el-row> + <el-col :span="12"> + <el-form-item label="濉〃浜哄鍚嶏細" prop="fillName"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ュ~琛ㄤ汉濮撳悕" v-model="ruleForm.fillName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑱屼綅锛�" prop="post"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ヨ亴浣�" v-model="ruleForm.post"></el-input> + </el-form-item> + </el-col> + </el-row> + <!-- 鑱旂郴鐢佃瘽/褰曞叆鏃ユ湡 --> + <el-row> + <el-col :span="12"> + <el-form-item label="褰曞叆浜猴細" prop="userName"> + <el-input style="width: 200px;" type="text" placeholder="璇疯緭鍏ュ綍鍏ヤ汉濮撳悕" v-model="ruleForm.userName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="褰曞叆鏃ユ湡锛�" prop="entryDate"> + <el-date-picker style="width: 200px;" class="newly-form" v-model="ruleForm.entryDate" type="date" + placeholder="璇烽�夋嫨褰曞叆鏃ユ湡" autocomplete="off"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢涓婁紶锛�"> + <el-upload class="upload-demo" :action="path" :on-preview="handlePreview" :on-remove="handleRemove" multiple + :limit="1" :on-exceed="handleExceed" :file-list="fileList" :on-success="handleSuccess" + :before-upload="beforeAvatarUpload"> + <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </el-col> + </el-row> + <!-- 鎻愪氦 --> + <el-row> + <el-col :span="24" style="display: flex;justify-content: center;"> + <el-form-item> + <el-button @click="resetForm('ruleForm')">鍙栨秷</el-button> + <el-button type="primary" @click="submitForm('ruleForm')">淇濆瓨</el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + </el-dialog> + </div> +</template> - <script> - import { get, post } from '@/api/util/requestUtil'; - import urlInfo from '../../../api/urlEnum/nonConformanceReview.js' - export default { - data() { - return { - input: '', - tableData: [], - page: 1, - total: 0, - pageSize: 10, - materialCode: null, - materialName: null, - inspectionCode: null - } +<script> +import { get, post } from '@/api/util/requestUtil'; +import urlInfo from '../../../api/urlEnum/satisfactionSurveys.js' +export default { + data() { + return { + input: '', + tableData: [], + page: 1, + total: 0, + pageSize: 10, + entryDate: null, + surveyDate: null, + id: 0, + dialogVisible: false, + serviceAttitude: 3, + serviceAttitudeInput: "鏃�", + technicalPower: 3, + technicalPowerInput: "鏃�", + testJob: 3, + testJobInput: "鏃�", + reasonableCharge: 3, + reasonableChargeInput: "鏃�", + otherSupplements: "鏃�", + improvementRequirements: "鏃�", + dialogVisible2: false, + path: 'http://192.168.110.254:1234/cnasSatisfactionSurvey/uploadFile', + ruleForm: { + surveyDate: '', + userUnit: '', + projectName: '', + fillName: '', + post: '', + userId: '', + telephone: '', + entryDate: '', + userName: '', + serviceAttitude: '', + technicalPower: '', + testJob: '', + reasonableCharge: '', + improvementRequirements: '', + otherSupplements: '' + }, + rules: { + surveyDate: [ + { type: 'date', required: true, message: '璇烽�夋嫨璋冩煡鏃ユ湡', trigger: 'change' } + ], + userUnit: [ + { required: true, message: '璇疯緭鍏ュ鎴峰崟浣嶅悕绉�', trigger: 'blur' }, + ], + projectName: [ + { required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' } + ], + entryDate: [ + { type: 'date', required: true, message: '璇烽�夋嫨褰曞叆鏃ユ湡', trigger: 'change' } + ], + telephone: [ + { required: true, message: '璇疯緭鍏ヨ仈绯荤數璇�', trigger: 'blur' } + ] + }, + fileList: [], + } + }, + created() { + + }, + mounted() { + this.getData() + }, + methods: { + handleCurrentChange() { + this.getData(); }, - created() { - + look(id) { + console.log(id); + let str = "/$"; + this.dialogVisible = true + let data = this.tableData.filter(res => { + return res.id == id + })[0] + let serviceAttitudeInfo = data.serviceAttitude.split(str); + this.serviceAttitude = serviceAttitudeInfo[0] + this.serviceAttitudeInput = serviceAttitudeInfo[1] + let technicalPowerInfo = data.technicalPower.split(str) + this.technicalPower = technicalPowerInfo[0] + this.technicalPowerInput = technicalPowerInfo[1] + let testJobInfo = data.testJob.split(str) + this.testJob = testJobInfo[0] + this.testJobInput = testJobInfo[1] + let reasonableChargeInfo = data.reasonableCharge.split(str) + this.reasonableCharge = reasonableChargeInfo[0] + this.reasonableChargeInput = reasonableChargeInfo[1] + this.otherSupplements = data.otherSupplements + this.improvementRequirements = data.improvementRequirements }, - mounted() { + handleSizeChange() { + + }, + exportData() { + + }, + // 閲嶇疆鎸夐挳 + resetData() { + this.page = 1 + this.pageSize = 10 + this.surveyDate = null + this.entryDate = null this.getData() }, - methods: { - handleCurrentChange() { - this.getData(); - }, - handleSizeChange() { - - }, - exportData() { - - }, - // 閲嶇疆鎸夐挳 - resetData() { - this.page = 1 - this.pageSize = 10 - this.materialCode=null - this.materialName=null - this.inspectionCode=null - this.getData() - }, - async getData() { - let param = { - "currentPage": this.page, - 'pageNum': this.pageSize, - "inspectionCode": this.inspectionCode, - "materialCode": this.materialCode, - "materialName": this.materialName - } - let res = await get(urlInfo.url.getNonConformanceReview, param) - this.tableData = res.data.nonConformanceReviewList - this.total = res.data.total + async getData() { + let param = { + "currentPage": this.page, + 'pageNum': this.pageSize, + "surveyDate": this.surveyDate, + "entryDate": this.entryDate } + if (this.surveyDate != null) { + param.surveyDate = this.dateFormat(this.surveyDate); + } + if (this.entryDate !== null) { + param.entryDate = this.dateFormat(this.entryDate); + } + let res = await get(urlInfo.url.getCnasSatisfactionSurvey, param) + this.tableData = res.data.cnasSatisfactionSurveyList + this.total = res.data.total + }, + async getFillName() { + this.dialogVisible2 = true + let res = await get(urlInfo.url.getFillNameAndId) + this.ruleForm.userName = res.data.name + this.ruleForm.userId = res.data.id + var now = new Date(); + this.ruleForm.entryDate = now + }, + async submitForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + this.add(); + } else { + console.log('error submit!!'); + return false; + } + }); + }, + async add() { + let data = JSON.parse(JSON.stringify(this.ruleForm)) + let entryDate = this.format(this.ruleForm.entryDate); + let surveyDate = this.format(this.ruleForm.surveyDate); + data.entryDate = entryDate + data.surveyDate = surveyDate + // data.dateInfo = dateInfo + let add = await post(urlInfo.url.addSurvey, data); + if (add) { + this.$message({ + message: '娣诲姞鎴愬姛', + type: 'success' + }); + this.fileList = [] + this.$refs["ruleForm"].resetFields(); + let res = await get(urlInfo.url.getFillNameAndId) + this.ruleForm.userName = res.data.name + this.ruleForm.id = res.data.id + var now = new Date(); + this.ruleForm.entryDate = now + this.getData() + } else { + this.$message.error('娣诲姞澶辫触锛佽妫�鏌ュ唴瀹�'); + } + }, + resetForm(formName) { + this.dialogVisible2 = false + this.fileList = [] + this.$refs[formName].resetFields(); + }, + handleRemove(file, fileList) { + console.log(file, fileList); + }, + handlePreview(file) { + console.log(file); + }, + handleExceed(files, fileList) { + this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶); + }, + // beforeRemove(file, fileList) { + // return this.$confirm(`纭畾绉婚櫎 ${file.name}锛焋); + // }, + handleSuccess(response, file, fileList) { + let data = response.data; + if (this.ruleForm.userUnit == '') { + this.ruleForm.userUnit = data.unitName + } + if (this.ruleForm.projectName == '') { + this.ruleForm.projectName = data.projectName + } + if (this.ruleForm.post === '') { + this.ruleForm.post = data.post + } + if (this.ruleForm.fillName == '') { + this.ruleForm.fillName = data.fillName.split("/")[0] + } + if (this.ruleForm.telephone == '') { + this.ruleForm.telephone = data.telephone + } + if(this.ruleForm.surveyDate==null||this.ruleForm.surveyDate==''){ + let dates = new Date(data.fillName.split("/")[1]); + console.log(dates); + if(dates!=''&&dates!=''){ + this.ruleForm.surveyDate=dates + } + } + this.ruleForm.serviceAttitude = data.serviceAttitude + this.ruleForm.technicalPower = data.technicalPower + this.ruleForm.testJob = data.testJob + this.ruleForm.improvementRequirements = data.improvementRequirements + this.ruleForm.otherSupplements = data.otherSupplements + this.ruleForm.reasonableCharge=data.reasonableCharge + }, + beforeAvatarUpload(file) { + let split = file.name.split("."); + let fileName = split[split.length - 1]; + const isWord = fileName == 'doc' || fileName == 'docx'; + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isWord) { + this.$message.error('涓婁紶word鏂囦欢鍙兘鏄� doc/docx 鏍煎紡!'); + } + if (!isLt2M) { + this.$message.error('涓婁紶word鏂囦欢澶у皬涓嶈兘瓒呰繃 2MB!'); + } + return isWord && isLt2M; + }, + dateFormat(longTypeDate) { + var dateTypeDate = ""; + var date = new Date(); + date.setTime(longTypeDate); + dateTypeDate += date.getFullYear(); //骞� + dateTypeDate += "-" + this.getMonth(date); //鏈� + dateTypeDate += "-" + this.getDay(date); //鏃� + return dateTypeDate; + }, + //杩斿洖 01-12 鐨勬湀浠藉�� + getMonth(date) { + var month = ""; + month = date.getMonth() + 1; //getMonth()寰楀埌鐨勬湀浠芥槸0-11 + if (month < 10) { + month = "0" + month; + } + return month; + }, + //杩斿洖01-30鐨勬棩鏈� + getDay(date) { + var day = ""; + day = date.getDate(); + if (day < 10) { + day = "0" + day; + } + return day; + }, + datetimeFormat(longTypeDate) { + var dateTypeDate = ""; + var date = new Date(); + date.setTime(longTypeDate); + dateTypeDate += date.getFullYear(); //骞� + dateTypeDate += "-" + this.getMonth(date); //鏈� + dateTypeDate += "-" + this.getDay(date); //鏃� + return dateTypeDate; + }, + format(d) { + var y = d.getFullYear(); + var m = d.getMonth() + 1; + if (m < 10) { + m = "0" + m; + } + var day = d.getDate(); + if (day < 10) { + day = "0" + day; + } + return y + "-" + m + "-" + day; } } - </script> +} +</script> - <style lang="scss" scoped> - .top-bar { - margin: -25px -15px; - background: #fff; +<style lang="scss" scoped> +.top-bar { + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; + + .input-form { + width: 800px; + } + + .el-dropdown-link { + cursor: pointer; + color: #409EFF !important; + } + + .el-icon-arrow-down { + font-size: 12px !important; + } + + +} + +.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; - padding: 5px 24px 0px 24px; - - .input-form { - width: 800px; + + .el-form-item { + margin-bottom: 30px !important; } - - .el-dropdown-link { - cursor: pointer; - color: #409EFF !important; - } - - .el-icon-arrow-down { - font-size: 12px !important; - } - - } - - .library-table { - background-color: #fff; + + .table-box { + padding: 0px 20px; + margin-top: 20px; flex: 1; - margin: 0px -15px; - margin-top: 40px; + background: #fff; display: flex; flex-direction: column; - - .table-header { - padding: 20px; + + >div:nth-child(2) { display: flex; - justify-content: space-between; - - .el-form-item { - margin-bottom: 30px !important; - } + justify-content: end; + margin: 10px 0; } - - .table-box { - padding: 0px 20px; - margin-top: 20px; - flex: 1; - background: #fff; - display: flex; - flex-direction: column; - - >div:nth-child(2) { - display: flex; - justify-content: end; - margin: 10px 0; - } - - } + } - </style> - <style > - .content-main { - .el-form .el-form-item .el-form-item__content { - width: 100% !important; - } +} + +.table, +tr, +td { + padding: 10px; +} +</style> +<style > +.content-main { + .el-form .el-form-item .el-form-item__content { + width: 100% !important; } - </style> +} +</style> diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue index 4a58f59..a5057c4 100644 --- a/src/views/experiment/checkTheReport/index.vue +++ b/src/views/experiment/checkTheReport/index.vue @@ -24,11 +24,7 @@ </el-dropdown> </el-form> <el-form> - <el-button - class="rightBtn" - type="primary" - icon="el-icon-document" - @click="exportData" + <el-button class="rightBtn" type="primary" icon="el-icon-document" >瀵煎嚭鎶ュ憡</el-button > </el-form> @@ -70,19 +66,37 @@ label="鏍峰搧缂栧彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.materialCode }} + </span> + </template></el-table-column + > <el-table-column - prop="reportCode" + prop="materialCode" label="鎶ュ憡鍗曞彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.materialCode }} + </span> + </template></el-table-column + > <el-table-column prop="inspectionCode" label="鐢宠鍗曞彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.inspectionCode }} + </span> + </template></el-table-column + > <el-table-column prop="approver" label="瀹℃壒浜�" min-width="8%"> <template slot-scope="scope"> <span> @@ -216,7 +230,7 @@ } .el-dropdown-link { cursor: pointer; - color: #409EFF; + color: #409eff; } .el-icon-arrow-down { font-size: 12px; @@ -250,6 +264,5 @@ margin: 10px 0; } } - } </style> diff --git a/src/views/experiment/planAssignments/index.vue b/src/views/experiment/planAssignments/index.vue index f5bdf13..ad051ce 100644 --- a/src/views/experiment/planAssignments/index.vue +++ b/src/views/experiment/planAssignments/index.vue @@ -6,7 +6,7 @@ <el-select v-model="searchData.devicename" placeholder="鍏ㄩ儴" - style="width: 100px" + style="width: 120px" > <el-option v-for="item in options1" @@ -21,6 +21,7 @@ <el-date-picker v-model="searchData.time" type="daterange" + value-format="yyyy-MM-dd" range-separator="~" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @@ -31,7 +32,7 @@ <el-select v-model="searchData.person" placeholder="鍏ㄩ儴" - style="width: 80px; margin-right: 100px" + style="width: 100px; margin-right: 100px" > <el-option v-for="item in options2" @@ -43,10 +44,14 @@ </el-select> </el-form-item> <el-form-item> - <el-button type="primary" plain style="margin-right: 10px" + <el-button + type="primary" + plain + style="margin-right: 10px" + @click="resetData()" >閲嶇疆</el-button > - <el-button type="primary">鏌ヨ</el-button> + <el-button type="primary" @click="getData()">鏌ヨ</el-button> </el-form-item> </el-form> </div> @@ -154,38 +159,76 @@ return { searchData: { devicename: "", - time: "", + time: [], person: "", }, options1: [], options2: [], planTable: [], + planTableView: [], }; }, created() { this.getData(); }, + methods: { // 鏌ヨ鍒楄〃 async getData() { - const params = {}; + const params = { + device: this.searchData.devicename + ? this.searchData.devicename + : undefined, + user: this.searchData.person ? this.searchData.person : undefined, + beginTime: + this.searchData.time && this.searchData.time.length > 0 + ? this.searchData.time[0] + : undefined, + endTime: + this.searchData.time && this.searchData.time.length > 0 + ? this.searchData.time[1] + : undefined, + }; const { data } = await selectAllPlan(params); this.planTable = data; - this.planTable.forEach((res) => { - let o1 = { - value: res.device, - label: res.device, - }; - this.options1.push(o1); - - if(res.userId == undefined) { - - } - }); - let d=this.options1.filter((val,index,self)=>{ - return self.indexOf(val)==index; - }) - console.log(d); + if (this.options1.length === 0) { + //娣诲姞璁惧鍚嶇О + const deviceData = []; + this.planTable.forEach((res) => { + if (!deviceData.includes(res.device)) { + deviceData.push(res.device); + } + }); + deviceData.forEach((item) => { + this.options1.push({ + value: item, + label: item, + }); + }); + //娣诲姞鐢ㄦ埛 + const userData = []; + this.planTable.forEach((res) => { + if (res.checker != undefined && !userData.includes(res.checker)) { + userData.push(res.checker); + } + }); + userData.forEach((item) => { + this.options2.push({ + value: item, + label: item, + }); + }); + console.log(this.options2); + } + }, + // 閲嶇疆鎸夐挳 + resetData() { + (this.searchData = { + devicename: "", + time: [], + person: "", + }), + this.getData(); }, }, }; @@ -216,7 +259,7 @@ height: 78vh; .formwrapper { padding: 0px 20px; - margin-top: 0px; + margin-top: 20px; flex: 1; background: #fff; /* padding: 20px 20px 10px 20px; */ diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue index 0e8bf65..ad3c04e 100644 --- a/src/views/experiment/reportAuditing/index.vue +++ b/src/views/experiment/reportAuditing/index.vue @@ -2,7 +2,7 @@ <div class="content-main"> <div class="top-bar"> <el-form ref="form" :inline="true"> - <el-form-item class="sermargin"> + <el-form-item> <el-input v-model="input" class="input-form" @@ -24,9 +24,7 @@ </el-dropdown> </el-form> <el-form> - <el-button class="rightBtn" type="primary" @click="exportData" - >瀹℃牳</el-button - > + <el-button class="rightBtn" type="primary">瀹℃牳</el-button> </el-form> </div> <div class="library-table"> @@ -58,12 +56,20 @@ style="width: 100%" > <el-table-column type="selection" label="" min-width="5%" /> - <el-table-column - prop="materialCode" - label="鏍峰搧缂栧彿" - min-width="10%" - /> - <el-table-column prop="reportCode" label="鎶ュ憡鍗曞彿" min-width="10%" /> + <el-table-column prop="materialCode" label="鏍峰搧缂栧彿" min-width="10%"> + <template slot-scope="scope"> + <span style="color: #409eff"> + {{ scope.row.materialCode }} + </span> + </template></el-table-column + > + <el-table-column prop="reportCode" label="鎶ュ憡鍗曞彿" min-width="10%"> + <template slot-scope="scope"> + <span style="color: #409eff"> + {{ scope.row.reportCode }} + </span> + </template></el-table-column + > <el-table-column prop="materialName" label="鏍峰搧鍚嶇О" diff --git a/src/views/laboratory/ledger/index.vue b/src/views/laboratory/ledger/index.vue index f092459..555d0b6 100644 --- a/src/views/laboratory/ledger/index.vue +++ b/src/views/laboratory/ledger/index.vue @@ -4,10 +4,7 @@ <div class="search-bar"> <el-form ref="form" :inline="true" :model="searchData"> <el-form-item> - <el-input - v-model="searchData.keyword" - placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸" - > + <el-input v-model="searchData.keyword" placeholder="璇疯緭鍏ョ紪鍙�/璁惧鍚嶇О/鍨嬪彿瑙勬牸"> <i slot="prefix" class="el-input__icon el-icon-search" /> </el-input> </el-form-item> @@ -27,24 +24,16 @@ <div class="bom-item-search"> <el-row> <el-col :span="19"> - <el-input - v-model="filterText" - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - /> + <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> </el-col> <el-col :span="5"> - <el-button type="primary" size="small" @click="addClassVisible = true"><i class="el-icon-plus" /></el-button> + <el-button type="primary" size="small" @click="addClassVisible = true"><i + class="el-icon-plus" /></el-button> </el-col> </el-row> </div> - <el-tree - ref="classTree" - :data="classTree" - :props="defaultProps" - :default-expand-all="true" - :filter-node-method="filterNode" - @node-click="nodeClickHandler" - /> + <el-tree ref="classTree" :data="classTree" :props="defaultProps" :default-expand-all="true" + :filter-node-method="filterNode" @node-click="nodeClickHandler" /> </div> <div class="library-table"> <div class="table-header"> @@ -55,74 +44,31 @@ {{ item.label }} </el-radio-button> </el-radio-group> - <el-checkbox v-model="isOut" @change="getExpireTable" :style="{'marginLeft':'12px'}">宸茶繃鏈�</el-checkbox> + <el-checkbox v-model="isOut" @change="getExpireTable" :style="{ 'marginLeft': '12px' }">宸茶繃鏈�</el-checkbox> </div> <div class="serve-btn"> <!-- <el-button type="primary" icon="el-icon-plus">鏂板浜哄憳</el-button> --> </div> </div> <div class="table-box"> - <el-table - ref="equipmentTable" - node-key="father_name" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="equipmentTable" - style="width: 100%" - > - <el-table-column - type="index" - label="搴忓彿" - min-width="90" - /> - <el-table-column - prop="equipment_code" - label="浠櫒璁惧缂栧彿" - min-width="200" - /> - <el-table-column - prop="equipment_name" - label="浠櫒璁惧鍚嶇О" - min-width="150" - /> - <el-table-column - prop="specifications_models" - label="瑙勬牸鍨嬪彿" - min-width="150" - /> - <el-table-column - prop="name" - label="淇濈浜�" - min-width="200" - /> - <el-table-column - prop="termValidity" - label="璁¢噺鎴鏈夋晥鏈�" - min-width="200" - /> - <el-table-column - prop="conditions" - label="璁惧鐘舵��" - min-width="120" - > + <el-table ref="equipmentTable" node-key="father_name" :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + :data="equipmentTable" style="width: 100%"> + <el-table-column type="index" label="搴忓彿" min-width="90" /> + <el-table-column prop="equipment_code" label="浠櫒璁惧缂栧彿" min-width="200" /> + <el-table-column prop="equipment_name" label="浠櫒璁惧鍚嶇О" min-width="150" /> + <el-table-column prop="specifications_models" label="瑙勬牸鍨嬪彿" min-width="150" /> + <el-table-column prop="name" label="淇濈浜�" min-width="200" /> + <el-table-column prop="termValidity" label="璁¢噺鎴鏈夋晥鏈�" min-width="200" /> + <el-table-column prop="conditions" label="璁惧鐘舵��" min-width="120"> <template slot-scope="scope"> - <el-tag - :type="scope.row.conditions === 0 ? 'primary' : 'success'" - disable-transitions - >{{ scope.row.conditions | conditionsFilter }}</el-tag> + <el-tag :type="scope.row.conditions === 0 ? 'primary' : 'success'" disable-transitions>{{ + scope.row.conditions | conditionsFilter }}</el-tag> </template> </el-table-column> - <el-table-column - prop="storage_place" - label="瀛樻斁鍦�" - min-width="200" - /> + <el-table-column prop="storage_place" label="瀛樻斁鍦�" min-width="200" /> - <el-table-column - label="鎿嶄綔" - min-width="120" - fixed="right" - > + <el-table-column label="鎿嶄綔" min-width="120" fixed="right"> <template slot-scope="scope"> <el-button type="text" size="small" @click="openDetail(scope.row)">缂栬緫</el-button> <el-button type="text" size="small" @click="clickDelete(scope.row)">鍒犻櫎</el-button> @@ -133,45 +79,36 @@ <div> <!-- 娣诲姞鍒嗙被 --> <el-dialog title="娣诲姞鍒嗙被" :visible.sync="addClassVisible" width="33%"> - <el-form :model="addTreeForm"> - <el-form-item label="鍒嗙被鍚嶇О" label-width="100px"> - <el-input v-model="addTreeForm.name" autocomplete="off" /> + <el-form :model="addTreeForm" ref="addTreeForm"> + <el-form-item prop="name" label="鍒嗙被鍚嶇О" label-width="100px" :rules="[ + { required: true, message: '鍒嗙被鍚嶇О涓嶈兘涓虹┖' } + ]"> + <el-input v-model="addTreeForm.name" + /> </el-form-item> <el-form-item label="鐖剁骇鍒嗙被" label-width="100px"> - <el-select v-model="addTreeForm.type" placeholder="璇烽�夋嫨"> + <el-select style="width: 100%;" v-model="addTreeForm.type" placeholder="璇烽�夋嫨"> <el-option label="鍘熸潗鏂�" value="0" /> <el-option label="鐢电嚎鐢电紗" value="1" /> </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button @click="addClassVisible = false">鍙� 娑�</el-button> - <el-button type="primary">纭� 瀹�</el-button> + <el-button @click="resetTreeForm('addTreeForm')">鍙� 娑�</el-button> + <el-button type="primary" @click="submitTreeForm('addTreeForm')">纭� 瀹�</el-button> </div> </el-dialog> </div> <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" - /> + <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> <!-- 浠櫒璇︽儏--> - <el-drawer - title="浠櫒璁惧璇︽儏" - :visible.sync="detailDrawer" - size="80%" - class="detailDrawer" - @close="closeDetailDrawer" - > + <el-drawer title="浠櫒璁惧璇︽儏" :visible.sync="detailDrawer" size="80%" class="detailDrawer" @close="closeDetailDrawer"> <div> <div class="detail-info"> <div class="tips-main"> @@ -187,7 +124,7 @@ <div class="message-item"><span><i class="el-icon-edit" />鎵�灞炲垎绫伙細{{ equipmentDetail.classifyId }}</span></div> <div class="message-item"> <span><i class="el-icon-edit" />鍒涘缓浜猴細{{ equipmentDetail.createUserId }}</span> - <el-tag type="primary"><i class="el-icon-info" :style="{marginRight:'4px', color:'#409EFF'}" /></el-tag> + <el-tag type="primary"><i class="el-icon-info" :style="{ marginRight: '4px', color: '#409EFF' }" /></el-tag> </div> <div class="message-item"> <span><i class="el-icon-edit" />寤烘。鏃ユ湡锛歿{ equipmentDetail.acceptanceDate }}</span> @@ -220,10 +157,11 @@ <span><i class="el-icon-edit" />淇濈浜猴細{{ equipmentDetail.userId }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition==1 ? '鏀寔': '涓嶆敮鎸�' }}</span> + <span><i class="el-icon-edit" />鏄惁鏀寔鏁伴噰锛歿{ equipmentDetail.whetherDataAcquisition == 1 ? '鏀寔' : '涓嶆敮鎸�' + }}</span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛歿{ equipmentDetail.equipmentMeasurement==1 ? '闇�瑕�': '涓嶉渶瑕�' }}</span> + <span><i class="el-icon-edit" />浠櫒璁惧璁¢噺锛歿{ equipmentDetail.equipmentMeasurement == 1 ? '闇�瑕�' : '涓嶉渶瑕�' }}</span> </div> <div class="message-item"> <span><i class="el-icon-edit" />璁¢噺鍛ㄦ湡锛歿{ equipmentDetail.termValidity }}</span> @@ -235,71 +173,40 @@ </div> <el-tabs v-model="activeTabsName"> <el-tab-pane label="璁惧鐮佺偣" name="codePoints"> - <el-button v-show="!codePointesTableStatus" :style="{marginBottom: '18px'}" @click="addCodePoints">鏂板璁惧鐮佺偣</el-button> - <div v-show="codePointesTableStatus" :style="{marginBottom: '18px'}" class="btns"> + <el-button v-show="!codePointesTableStatus" :style="{ marginBottom: '18px' }" + @click="addCodePoints">鏂板璁惧鐮佺偣</el-button> + <div v-show="codePointesTableStatus" :style="{ marginBottom: '18px' }" class="btns"> <el-button @click="addNewCodePoints">娣诲姞</el-button> <el-button @click="saveCodePoins">淇濆瓨</el-button> <el-button @click="closeCodePoins">鍙栨秷</el-button> </div> - <el-table - ref="codePointsTable" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="codePointsTable" - style="width: 100%" - > - <el-table-column - type="index" - label="搴忓彿" - min-width="90" - /> - <el-table-column - prop="equipmentPoint" - label="鐮佺偣缂栫爜" - min-width="150" - > + <el-table ref="codePointsTable" :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + :data="codePointsTable" style="width: 100%"> + <el-table-column type="index" label="搴忓彿" min-width="90" /> + <el-table-column prop="equipmentPoint" label="鐮佺偣缂栫爜" min-width="150"> <template slot-scope="scope"> <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPoint }}</span> <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPoint" /> </template> </el-table-column> - <el-table-column - prop="equipmentPointName" - label="鐮佺偣鍚嶇О" - min-width="150" - > + <el-table-column prop="equipmentPointName" label="鐮佺偣鍚嶇О" min-width="150"> <template slot-scope="scope"> <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPointName }}</span> <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPointName" /> </template> </el-table-column> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="150" - > + <el-table-column prop="unit" label="鍗曚綅" min-width="150"> <template slot-scope="scope"> <span v-show="!codePointesTableStatus">{{ scope.row.unit }}</span> <el-input v-show="codePointesTableStatus" v-model="scope.row.unit" /> </template> </el-table-column> - <el-table-column - prop="name" - label="鏇存柊浜�" - min-width="100" - /> - <el-table-column - prop="updateTime" - label="鏇存柊鏃ユ湡" - min-width="120" - /> - <el-table-column - prop="descriptiveness" - label="鎻忚堪" - min-width="200" - > + <el-table-column prop="name" label="鏇存柊浜�" min-width="100" /> + <el-table-column prop="updateTime" label="鏇存柊鏃ユ湡" min-width="120" /> + <el-table-column prop="descriptiveness" label="鎻忚堪" min-width="200"> <template slot-scope="scope"> <span v-show="!codePointesTableStatus">{{ scope.row.descriptiveness }}</span> <el-input v-show="codePointesTableStatus" v-model="scope.row.descriptiveness" /> @@ -309,54 +216,18 @@ </el-table> </el-tab-pane> <el-tab-pane label="璁¢噺淇℃伅" name="measure"> - <el-button :style="{marginBottom: '18px'}" @click="measureFormVisible = true">鏂板璁¢噺淇℃伅</el-button> - <el-table - ref="measureTable" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="measureTable" - style="width: 100%" - > - <el-table-column - type="index" - label="搴忓彿" - min-width="90" - /> - <el-table-column - prop="name" - label="璐熻矗浜�" - min-width="200" - /> - <el-table-column - prop="measurement_unit" - label="璁¢噺鍗曚綅" - min-width="150" - /> - <el-table-column - prop="beginDate" - label="寮�濮嬫棩鏈�" - min-width="150" - /> - <el-table-column - prop="endDate" - label="缁撴潫鏃ユ湡" - min-width="150" - /> - <el-table-column - prop="performance_index" - label="鎬ц兘鎸囨爣" - min-width="200" - /> - <el-table-column - prop="uncertainty" - label="涓嶇‘瀹氬害" - min-width="200" - /> - <el-table-column - prop="conditions" - label="缁撴灉" - min-width="120" - > + <el-button :style="{ marginBottom: '18px' }" @click="measureFormVisible = true">鏂板璁¢噺淇℃伅</el-button> + <el-table ref="measureTable" :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + :data="measureTable" style="width: 100%"> + <el-table-column type="index" label="搴忓彿" min-width="90" /> + <el-table-column prop="name" label="璐熻矗浜�" min-width="200" /> + <el-table-column prop="measurement_unit" label="璁¢噺鍗曚綅" min-width="150" /> + <el-table-column prop="beginDate" label="寮�濮嬫棩鏈�" min-width="150" /> + <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="150" /> + <el-table-column prop="performance_index" label="鎬ц兘鎸囨爣" min-width="200" /> + <el-table-column prop="uncertainty" label="涓嶇‘瀹氬害" min-width="200" /> + <el-table-column prop="conditions" label="缁撴灉" min-width="120"> <template slot-scope="scope"> {{ scope.row.result }} <!-- <el-tag @@ -365,26 +236,15 @@ >{{ scope.row.result === 0 ? '鏈悓鎰�' : '宸插悓鎰�' }}</el-tag> --> </template> </el-table-column> - <el-table-column - prop="remarks" - label="澶囨敞" - min-width="200" - /> + <el-table-column prop="remarks" label="澶囨敞" min-width="200" /> </el-table> </el-tab-pane> </el-tabs> </div> </el-drawer> <!-- 娣诲姞浠櫒/淇敼浠櫒淇℃伅 --> - <el-drawer - ref="addDrawer" - :title="equipmentDetail.id?'淇敼浠櫒璁惧淇℃伅':'鏂板浠櫒璁惧'" - :append-to-body="true" - :visible.sync="addDrawerVisible" - class="addDrawer" - size="40%" - @close="closeAddOrChangeDrawer" - > + <el-drawer ref="addDrawer" :title="equipmentDetail.id ? '淇敼浠櫒璁惧淇℃伅' : '鏂板浠櫒璁惧'" :append-to-body="true" + :visible.sync="addDrawerVisible" class="addDrawer" size="40%" @close="closeAddOrChangeDrawer"> <div class="demo-drawer__content"> <el-form label-position="top" :model="equipmentform"> <el-row :gutter="50"> @@ -407,20 +267,10 @@ </el-col> <el-col :span="11"> <el-form-item label="鐘舵�侊細" label-width="80"> - <el-select - v-model="equipmentform.conditions" - clearable - filterable - :allow-create="true" - placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" - style="width:100%" - > - <el-option - v-for="item in conditionsOptions" - :key="item.value" - :label="item.label" - :value="item.value" - /> + <el-select v-model="equipmentform.conditions" clearable filterable :allow-create="true" + placeholder="璇烽�夋嫨浠櫒璁惧鐘舵��" style="width:100%"> + <el-option v-for="item in conditionsOptions" :key="item.value" :label="item.label" + :value="item.value" /> </el-select> </el-form-item> </el-col> @@ -457,42 +307,23 @@ </el-col> <el-col :span="11"> <el-form-item label="鍒拌揣鏃ユ湡锛�" label-width="80"> - <el-date-picker - v-model="equipmentform.arrivalDate" - type="date" - placeholder="璇烽�夋嫨鍒拌揣鏃ユ湡" - style="width:100%" - /> + <el-date-picker v-model="equipmentform.arrivalDate" type="date" placeholder="璇烽�夋嫨鍒拌揣鏃ユ湡" + style="width:100%" /> </el-form-item> </el-col> </el-row> <el-row :gutter="50"> <el-col :span="11"> <el-form-item label="楠屾敹鏃ユ湡锛�" label-width="80"> - <el-date-picker - v-model="equipmentform.acceptanceDate" - type="date" - placeholder="璇烽�夋嫨楠屾敹鏃ユ湡" - style="width:100%" - /> + <el-date-picker v-model="equipmentform.acceptanceDate" type="date" placeholder="璇烽�夋嫨楠屾敹鏃ユ湡" + style="width:100%" /> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="淇濈浜猴細" label-width="80"> - <el-select - v-model="equipmentform.userId" - clearable - filterable - :allow-create="true" - placeholder="璇烽�夋嫨淇濈浜�" - style="width:100%" - > - <el-option - v-for="item in userOpetions" - :key="item.id" - :label="item.label" - :value="item.value" - /> + <el-select v-model="equipmentform.userId" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨淇濈浜�" + style="width:100%"> + <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> @@ -511,7 +342,7 @@ </el-form-item> </el-col> </el-row> - <el-row v-show="equipmentform.equipmentMeasurement===1" :gutter="50"> + <el-row v-show="equipmentform.equipmentMeasurement === 1" :gutter="50"> <el-col :span="12"> <el-form-item label="璁¢噺鎴鏈夋晥鏈燂細" label-width="80"> <el-input v-model="equipmentform.termValidity" type="number" /> @@ -521,13 +352,8 @@ <el-row :gutter="50"> <el-col :span="11"> <el-form-item label="鎻忚堪锛�" label-width="80"> - <el-input - v-model="equipmentform.descriptiveness" - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - style="width:217%" - /> + <el-input v-model="equipmentform.descriptiveness" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" + style="width:217%" /> </el-form-item> </el-col> </el-row> @@ -544,20 +370,9 @@ <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="璐熻矗浜�"> - <el-select - v-model="measureForm.userId" - clearable - filterable - :allow-create="true" - placeholder="璐熻矗浜�" - style="width:100%" - > - <el-option - v-for="item in userOpetions" - :key="item.id" - :label="item.label" - :value="item.value" - /> + <el-select v-model="measureForm.userId" clearable filterable :allow-create="true" placeholder="璐熻矗浜�" + style="width:100%"> + <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> @@ -570,13 +385,8 @@ <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="妫�瀹氭湁鏁堟湡"> - <el-date-picker - v-model="measureForm.date" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - /> + <el-date-picker v-model="measureForm.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" /> </el-form-item> </el-col> </el-row> @@ -588,20 +398,9 @@ </el-col> <el-col :span="12"> <el-form-item label="缁撴灉"> - <el-select - v-model="measureForm.result" - clearable - filterable - :allow-create="true" - placeholder="璐熻矗浜�" - style="width:100%" - > - <el-option - v-for="item in resultOptions" - :key="item.id" - :label="item.label" - :value="item.value" - /> + <el-select v-model="measureForm.result" clearable filterable :allow-create="true" placeholder="璐熻矗浜�" + style="width:100%"> + <el-option v-for="item in resultOptions" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> @@ -609,36 +408,21 @@ <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="鎬ц兘鎸囨爣"> - <el-input - v-model="measureForm.performanceIndex" - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - /> + <el-input v-model="measureForm.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="澶囨敞"> - <el-input - v-model="measureForm.remarks" - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - /> + <el-input v-model="measureForm.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <el-form-item label=""> - <el-upload - class="upload-demo" - action="#" - :on-change="handleUpload" - :auto-upload="false" - > + <el-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> </el-upload> </el-form-item> @@ -652,11 +436,7 @@ </span> </el-dialog> <!-- 鍒犻櫎浠櫒寮瑰嚭妗� --> - <el-dialog - title="鎻愮ず" - :visible.sync="deletedialogVisible" - width="30%" - :before-close="handleClose"> + <el-dialog title="鎻愮ず" :visible.sync="deletedialogVisible" width="30%"> <span>纭畾鍒犻櫎璇ヤ华鍣ㄥ悧锛�</span> <span slot="footer" class="dialog-footer"> <el-button @click="deletedialogVisible = false">鍙� 娑�</el-button> @@ -667,10 +447,12 @@ </template> <script> -import { getClassifyList, getInstrumentList, +import { + getClassifyList, getInstrumentList, addInstrumentUser, addInstrument, getInstrumentDetail, getEquipmentPointList, addEquipmentPoint, - getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument } from '@/api/laboratory/ledger' + getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument +} from '@/api/laboratory/ledger' import { parseTime } from '@/utils/index' export default { filters: { @@ -1115,15 +897,30 @@ // console.log(row.id) await deleteInstrument({ instrumentId: this.instrumentId }) this.deletedialogVisible = false + }, + submitTreeForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + alert('submit!'); + } else { + console.log('error submit!!'); + return false; + } + }); + }, + resetTreeForm(formName) { + this.$refs[formName].resetFields(); + this.addClassVisible=false } } } </script> <style lang="scss" scoped> -.demo-drawer__content{ +.demo-drawer__content { margin-left: 50px; } + .demo-drawer__footer { display: flex; justify-content: space-between; @@ -1143,148 +940,174 @@ margin-right: 60px; margin-bottom: 24px; } -.ledger-main{ + +.ledger-main { width: 100%; height: 100%; - // 椤甸潰澶撮儴鏉′欢鎼滅储 - .page-header-search{ + + // 椤甸潰澶撮儴鏉′欢鎼滅储 + .page-header-search { background: #fff; display: flex; justify-content: space-between; padding: 0 24px 12px 24px; - .search-bar{ - .el-radio-button.is-active{ + + .search-bar { + .el-radio-button.is-active { color: #409EFF !important; background: #ecf5ff !important; border-color: #b3d8ff !important; } - .el-form{ - .el-form-item{ - margin-bottom: 0px !important; - .el-input{ - width: 360px; - } + + .el-form { + .el-form-item { + margin-bottom: 0px !important; + + .el-input { + width: 360px; + } } } } } -// 椤甸潰涓績鍐呭鍖哄煙 - .content-main{ + // 椤甸潰涓績鍐呭鍖哄煙 + .content-main { display: flex; height: 100%; min-height: calc(100vh - 88px); padding: 15px; - >div{ + + >div { padding: 20px; background: #fff; } - .library-bom{ + + .library-bom { flex: 2; margin-right: 12px; - .bom-item-search{ + + .bom-item-search { margin-bottom: 12px; - ::v-deep .el-input{ - input{ + + ::v-deep .el-input { + input { height: 33px; line-height: 33px; } } } - .bom-item-search .el-row{ - // display: flex; - .el-col{ - text-align: right; - } - } + + .bom-item-search .el-row { + + // display: flex; + .el-col { + text-align: right; + } + } + .el-tree { margin-top: 12px; } } - .library-table{ + + .library-table { flex: 8; max-width: 80%; margin-left: 12px; display: flex; flex-direction: column; - .table-box{ - margin-top: 30px; + + .table-box { + margin-top: 30px; + flex: 1; + background: #fff; + display: flex; + flex-direction: column; + + .el-table { flex: 1; - background: #fff; + } + + >div:nth-child(2) { display: flex; - flex-direction: column; - .el-table { - flex: 1; - } - >div:nth-child(2){ - display: flex; - justify-content: end; - margin: 10px 0; - } + justify-content: end; + margin: 10px 0; + } } } } } -.addDrawer{ - ::v-deep .el-drawer__body{ - // padding: 24px !important; - overflow-y: scroll; - overflow-x: hidden; - } + +.addDrawer { + ::v-deep .el-drawer__body { + // padding: 24px !important; + overflow-y: scroll; + overflow-x: hidden; + } } -.detailDrawer{ - ::v-deep .el-drawer__body{ - padding: 24px !important; - overflow-y: scroll; - } - .detail-info{ + +.detailDrawer { + ::v-deep .el-drawer__body { + padding: 24px !important; + overflow-y: scroll; + } + + .detail-info { background: #fff; box-shadow: rgba(100, 100, 111, 0.2) 0px 5px 15px; margin: 0; margin-bottom: 12px; border-radius: 6px; overflow: hidden; - .tips-main{ + + .tips-main { padding: 10px 20px 0 20px; display: flex; justify-content: space-between; align-items: center; height: 50px; - .tips-btn{ + + .tips-btn { margin-bottom: 10px; } - .tips{ - height: 100%; - display: flex; - height: 24px; - align-items: center; - font-size: 16px; - >span{ - display: inline-block; - margin-right: 10px; - width: 4px; - height: 16px; - background: #0077DB; - } - >div{ + + .tips { height: 100%; - line-height: 26px; - } - .el-button{ - padding: 0; - } + display: flex; + height: 24px; + align-items: center; + font-size: 16px; + + >span { + display: inline-block; + margin-right: 10px; + width: 4px; + height: 16px; + background: #0077DB; + } + + >div { + height: 100%; + line-height: 26px; + } + + .el-button { + padding: 0; + } } } // 鍩烘湰淇℃伅鍜屼紒涓氫俊鎭殑姣忎竴涓俊鎭」鏍峰紡 - .message{ + .message { padding: 0px 20px 8px 20px; display: flex; flex-wrap: wrap; border-top: 1px solid #F2F6FC; - >div{ + + >div { flex: 30%; max-width: 30%; padding: 8px; @@ -1294,22 +1117,27 @@ height: 40px; display: flex; align-items: center; - >span{ + + >span { color: #303133; font-size: 14px; - >i{ + + >i { margin-right: 8px; } } } } } - } -.measureForm{ +} + +.measureForm { + // - .el-form-item{ + .el-form-item { + // - .el-date-editor{ + .el-date-editor { width: 100%; } } diff --git a/src/views/laboratory/personnel/index.vue b/src/views/laboratory/personnel/index.vue index 3312928..26998b3 100644 --- a/src/views/laboratory/personnel/index.vue +++ b/src/views/laboratory/personnel/index.vue @@ -2,17 +2,14 @@ <div class="personnel-main "> <div class="page-header-search"> <div class="search-bar"> - <el-form ref="form" inline="true" :model="searchData"> + <el-form ref="form" :inline="true"> <el-form-item> - <el-input - v-model="keyword" - placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�" - > + <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="searchData()">鏌ヨ</el-button> + <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> @@ -52,64 +49,24 @@ </div> <div class="content-main"> <div class="personner-table"> - <el-table - ref="personnerlTable" - :height="700" - :max-height="700" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :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" - /> - <el-table-column - prop="createTime" - label="鍒涘缓鏃堕棿" - min-width="180" - /> - <el-table-column - prop="phone" - label="鐢佃瘽" - min-width="200" - /> - <el-table-column - prop="email" - label="閭" - min-width="200" - /> - <el-table-column - prop="jobState" - label="鍦ㄨ亴鐘舵��" - min-width="120" - :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" - :filter-method="filterTag" - filter-placement="bottom-end" - > + <el-table ref="personnerlTable" :max-height="700" :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + :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" /> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180" /> + <el-table-column prop="phone" label="鐢佃瘽" min-width="200" /> + <el-table-column prop="email" label="閭" min-width="200" /> + <el-table-column prop="jobState" label="鍦ㄨ亴鐘舵��" min-width="120" + :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" :filter-method="filterTag" + filter-placement="bottom-end"> <template slot-scope="scope"> - <el-tag - :type="scope.row.businessStatus === 0 ? 'primary' : 'success'" - disable-transitions - >{{ scope.row.businessStatus === 0 ? '鏈悓鎰�' : '宸插悓鎰�' }}</el-tag> + <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" - > + <el-table-column label="鎿嶄綔" min-width="120"> <template slot-scope="scope"> <el-button type="text" size="small" @click="handleClick(scope.row)">缂栬緫</el-button> <!-- <el-button type="text" size="small">缂栬緫</el-button> --> @@ -118,15 +75,9 @@ </el-table> <div> <!-- 鍒嗛〉鍣� --> - <el-pagination - :current-page="currentPage" - :page-sizes="[100, 200, 300, 400]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="this.personnerlTable.length" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> + <el-pagination :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="this.personnerlTable.length" + @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </div> </div> @@ -134,8 +85,8 @@ </template> <script> -import axios from 'axios' -axios.defaults.baseURL = 'http://192.168.110.167:1234' +import { get, post } from '@/api/util/requestUtil'; +import urlInfo from '../../../api/urlEnum/personnel.js' export default { data() { return { @@ -146,7 +97,7 @@ filteredpersonnerlTable: [], currentindex: 1, currentPage: 1, // 褰撳墠椤电爜 - total: 20, // 鎬绘潯鏁� + total: 0, // 鎬绘潯鏁� pageSize: 100, // 姣忛〉鐨勬暟鎹潯鏁� personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 dialogFormVisible: false, @@ -193,24 +144,23 @@ this.currentPage = 1 this.pageSize = val }, + filterTag() { + console.log(11); + }, // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� handleCurrentChange(val) { console.log(`褰撳墠椤�: ${val}`) this.currentPage = val }, - getData() { - axios.get('/user/list_new_personnel', { - params: { - pageNo: 0, - pageSize: 20 - } - }).then(res => { - // console.log(res) - this.personData = res.data.data.row - this.personnerlTable = this.personData - }).catch(res => { - console.log('error') - }) + async getData() { + let data = { + pageNo: 0, + pageSize: 20, + name: this.keyword + } + 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) => { @@ -245,36 +195,41 @@ return false } }) - } + }, } } </script> <style lang="scss" scoped> -.personnel-main{ +.personnel-main { + // width: 100%; // height: 100%; - .page-header-search{ + .page-header-search { background: #fff; display: flex; justify-content: space-between; padding: 0 24px 12px 24px; - .search-bar{ - .el-form{ - .el-form-item{ - margin-bottom: 0px !important; - .el-input{ - width: 360px; - } + + .search-bar { + .el-form { + .el-form-item { + margin-bottom: 0px !important; + + .el-input { + width: 360px; + } } } } } - .personner-table{ + + .personner-table { background: #fff; padding: 20px 20px 10px 20px; - >div:nth-child(2){ + + >div:nth-child(2) { display: flex; justify-content: end; margin: 10px 0; -- Gitblit v1.9.3