From 85f689b65f4fb915ffe6bb2e5e65d7a88dc22865 Mon Sep 17 00:00:00 2001 From: yuyu <1981343953@qq.com> Date: 星期四, 10 八月 2023 16:59:25 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/views/experiment/reportAuditing/index.vue | 212 ++++++++ src/api/experiment/reportAuditing.js | 9 src/api/urlEnum/nonConformingFeedback.js | 8 src/views/experiment/nonConformanceReview/index.vue | 196 ++++++++ src/views/experiment/nonConformingFeedback/index.vue | 196 ++++++++ src/views/experiment/planAssignments/index.vue | 307 +++++------- README.md | 4 src/api/urlEnum/nonConformanceReview.js | 8 src/api/util/requestUtil.js | 18 src/api/experiment/checkTheReport.js | 9 src/views/CNAS/satisfactionSurveys/index.vue | 192 +++++++ src/views/experiment/checkTheReport/index.vue | 250 ++++++++++ src/api/experiment/planAssignments.js | 9 src/api/rawMaterials/reportForInspection.js | 2 14 files changed, 1,238 insertions(+), 182 deletions(-) diff --git a/README.md b/README.md new file mode 100644 index 0000000..2485b1d --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +## lims-before + +lims鍓嶆 + diff --git a/src/api/experiment/checkTheReport.js b/src/api/experiment/checkTheReport.js new file mode 100644 index 0000000..940fb8a --- /dev/null +++ b/src/api/experiment/checkTheReport.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function selectAllReport(params) { + return request({ + url: '/report/selectAllReport', + method: 'get', + params + }) +} diff --git a/src/api/experiment/planAssignments.js b/src/api/experiment/planAssignments.js new file mode 100644 index 0000000..b373041 --- /dev/null +++ b/src/api/experiment/planAssignments.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function selectAllPlan(params) { + return request({ + url: '/plan/selectAllPlan', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/api/experiment/reportAuditing.js b/src/api/experiment/reportAuditing.js new file mode 100644 index 0000000..f6a7bae --- /dev/null +++ b/src/api/experiment/reportAuditing.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function selectAllReportCheck(params) { + return request({ + url: '/reportAuditing/selectAllReportAuditing', + method: 'get', + params + }) +} diff --git a/src/api/rawMaterials/reportForInspection.js b/src/api/rawMaterials/reportForInspection.js index e110f2d..7b62c9e 100644 --- a/src/api/rawMaterials/reportForInspection.js +++ b/src/api/rawMaterials/reportForInspection.js @@ -3,7 +3,7 @@ // 鏌ヨ鎵�鏈夌敵璇峰崟鍒楄〃 export function getInspectionList(params) { return request({ - url: '/inspection/selectAllInspection', + url: '/inspection/selectInspectsList', method: 'get', params }) diff --git a/src/api/urlEnum/nonConformanceReview.js b/src/api/urlEnum/nonConformanceReview.js new file mode 100644 index 0000000..1b61727 --- /dev/null +++ b/src/api/urlEnum/nonConformanceReview.js @@ -0,0 +1,8 @@ +const baseurl='/nonConformanceReview' + +const url={ + "getNonConformanceReview": baseurl+"/getNonConformanceReview",//鑾峰彇涓嶅悎鏍煎搧璇勫 +} +export default{ + url +} \ No newline at end of file diff --git a/src/api/urlEnum/nonConformingFeedback.js b/src/api/urlEnum/nonConformingFeedback.js new file mode 100644 index 0000000..736e5d4 --- /dev/null +++ b/src/api/urlEnum/nonConformingFeedback.js @@ -0,0 +1,8 @@ +const baseurl='/non-conforming-feedback' + +const url={ + "getNonConformingFeedback": baseurl+"/getNonConformingFeedback",//鑾峰彇涓嶅悎鏍煎搧鍙嶉 +} +export default{ + url +} \ No newline at end of file diff --git a/src/api/util/requestUtil.js b/src/api/util/requestUtil.js new file mode 100644 index 0000000..263da29 --- /dev/null +++ b/src/api/util/requestUtil.js @@ -0,0 +1,18 @@ + import request from '@/utils/request' + +export function get(path, params) { + return request({ + url: path, + method: 'get', + params + }) +} + +export function post(path, data) { + return request({ + url: path, + method: 'post', + data + }) +} + diff --git a/src/views/CNAS/satisfactionSurveys/index.vue b/src/views/CNAS/satisfactionSurveys/index.vue index 0888772..571dd96 100644 --- a/src/views/CNAS/satisfactionSurveys/index.vue +++ b/src/views/CNAS/satisfactionSurveys/index.vue @@ -1,5 +1,191 @@ <template> - <div> - 婊℃剰搴﹁皟鏌� + <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> + </div> + </div> </div> -</template> + </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 + } + }, + created() { + + }, + mounted() { + 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 + } + } + } + </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: 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; + + .el-form-item { + margin-bottom: 30px !important; + } + } + + .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; + } + } + </style> diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue index d08ff60..4a58f59 100644 --- a/src/views/experiment/checkTheReport/index.vue +++ b/src/views/experiment/checkTheReport/index.vue @@ -1,13 +1,255 @@ <template> - <div>妫�娴嬫姤鍛�</div> + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true"> + <el-form-item class="sermargin"> + <el-input + v-model="input" + class="input-form" + placeholder="璇风洿鎺ヨ緭鍏ユ牱寮忕紪鍙�/鎶ュ憡鍗曞彿/鏍峰搧缂栧彿/杩涜鎼滅储鎴栦笅鎷夐�夋嫨杩涜缁勫悎鏌ヨ" + @keyup.enter.native="getData" + /> + </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-dropdown> + <span class="el-dropdown-link"> + 楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right"></i> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item>楂樼骇鎼滅储</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </el-form> + <el-form> + <el-button + class="rightBtn" + type="primary" + icon="el-icon-document" + @click="exportData" + >瀵煎嚭鎶ュ憡</el-button + > + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <div class="search-bar"> + <el-radio-group v-model="checkStatus" @change="handleRadioChange"> + <el-radio-button>鍏ㄩ儴</el-radio-button> + <el-radio-button label="0">寰呮彁浜�</el-radio-button> + <el-radio-button label="1">寰呭鏍�</el-radio-button> + <el-radio-button label="2">宸插鏍�</el-radio-button> + </el-radio-group> + + <el-checkbox v-model="checked" style="margin-left: 20px" + >浠呯湅鎴戠殑</el-checkbox + > + </div> + </div> + <div class="table-box"> + <el-table + ref="reportTable" + :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="reportTable" + style="width: 100%" + > + <el-table-column type="selection" label="" min-width="5%" /> + + <el-table-column + prop="materialCode" + label="鏍峰搧缂栧彿" + sortable + min-width="10%" + /> + <el-table-column + prop="reportCode" + label="鎶ュ憡鍗曞彿" + sortable + min-width="10%" + /> + <el-table-column + prop="inspectionCode" + label="鐢宠鍗曞彿" + sortable + min-width="10%" + /> + <el-table-column prop="approver" label="瀹℃壒浜�" min-width="8%"> + <template slot-scope="scope"> + <span> + <el-tag type="info" icon="el-icon-user"> + <i class="el-icon-user">{{ scope.row.approver }}</i> + </el-tag> + </span> + </template> + </el-table-column> + <el-table-column prop="status" label="瀹℃壒鐘舵��" min-width="8%"> + <template slot-scope="scope"> + <span> + <el-tag type="info">{{ + scope.row.status == 0 + ? "寰呮彁浜�" + : scope.row.status == 1 + ? "寰呭鏍�" + : scope.row.status == 2 + ? "浠g瀛�" + : "宸插畬鎴�" + }}</el-tag> + </span> + </template></el-table-column + > + <el-table-column prop="conclusion" label="妫�楠岀粨璁�" min-width="8%" /> + <el-table-column prop="name" label="缂栧埗浜�" min-width="8%"> + <template slot-scope="scope"> + <span> + <el-tag type="info" icon="el-icon-user"> + <i class="el-icon-user">{{ scope.row.name }}</i> + </el-tag> + </span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button + type="text" + size="small" + @click="handleClick(scope.row)" + >棰勮</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> + </div> + </div> + </div> </template> <script> +import { selectAllReport } from "@/api/experiment/checkTheReport"; export default { - -} + data() { + return { + input: "", + checkStatus: undefined, + reportTable: [], + page: 1, + total: 0, + pageSize: 10, + checked: true, + }; + }, + created() { + this.getData(); + }, + methods: { + // 鐘舵�佹寜閽� + handleRadioChange() { + this.getData(); + }, + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + 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.checkStatus = undefined; + this.getData(); + }, + // 鏌ヨ鍒楄〃 + async getData() { + const params = { + page: this.page, + pageSize: this.pageSize, + name: this.input ? this.input : undefined, + status: this.checkStatus ? this.checkStatus : undefined, + }; + const { data } = await selectAllReport(params); + this.reportTable = data.row; + this.total = data.total; + }, + }, +}; </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: 700px; + } + .el-dropdown-link { + cursor: pointer; + color: #409EFF; + } + .el-icon-arrow-down { + font-size: 12px; + } +} +.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; + display: flex; + flex-direction: column; + > div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + +} </style> diff --git a/src/views/experiment/nonConformanceReview/index.vue b/src/views/experiment/nonConformanceReview/index.vue index 23f8a41..5eab166 100644 --- a/src/views/experiment/nonConformanceReview/index.vue +++ b/src/views/experiment/nonConformanceReview/index.vue @@ -1,13 +1,207 @@ <template> - <div>涓嶅悎鏍艰瘎瀹�</div> + <div class="content-main"> + <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 size="small" 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 size="small" v-model="materialName" 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 size="small" v-model="inspectionCode" 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-dropdown style="margin-left: 7px;"> + <span class="el-dropdown-link"> + 楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right"></i> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item>榛勯噾绯�</el-dropdown-item> + <el-dropdown-item>鐙瓙澶�</el-dropdown-item> + <el-dropdown-item>铻鸿洺绮�</el-dropdown-item> + <el-dropdown-item disabled>鍙岀毊濂�</el-dropdown-item> + <el-dropdown-item divided>铓典粩鐓�</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </el-form-item> + </el-form> + <el-form> + <el-button size="40" 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> + </div> + </div> + </div> </template> <script> +import { get, post } from '@/api/util/requestUtil'; +import urlInfo from '../../../api/urlEnum/nonConformingFeedback.js' export default { + data() { + return { + input: '', + tableData: [], + page: 1, + total: 0, + pageSize: 10, + materialCode: null, + materialName: null, + inspectionCode: null + } + }, + created() { + }, + mounted() { + 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.getNonConformingFeedback, param) + this.tableData = res.data.nonConformingFeedbackList + this.total = res.data.total + } + } } </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: 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; + + .el-form-item { + margin-bottom: 30px !important; + } + } + + .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; + } +} </style> diff --git a/src/views/experiment/nonConformingFeedback/index.vue b/src/views/experiment/nonConformingFeedback/index.vue index 6733e19..2c58565 100644 --- a/src/views/experiment/nonConformingFeedback/index.vue +++ b/src/views/experiment/nonConformingFeedback/index.vue @@ -1,13 +1,207 @@ <template> - <div>涓嶅悎鏍煎弽棣�</div> + <div class="content-main"> + <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 size="small" 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 size="small" v-model="materialName" 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 size="small" v-model="inspectionCode" 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-dropdown style="margin-left: 7px;"> + <span class="el-dropdown-link"> + 楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right"></i> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item>榛勯噾绯�</el-dropdown-item> + <el-dropdown-item>鐙瓙澶�</el-dropdown-item> + <el-dropdown-item>铻鸿洺绮�</el-dropdown-item> + <el-dropdown-item disabled>鍙岀毊濂�</el-dropdown-item> + <el-dropdown-item divided>铓典粩鐓�</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </el-form-item> + </el-form> + <el-form> + <el-button size="40" 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> + </div> + </div> + </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 + } + }, + created() { + }, + mounted() { + 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 + } + } } </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: 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; + + .el-form-item { + margin-bottom: 30px !important; + } + } + + .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; + } +} </style> diff --git a/src/views/experiment/planAssignments/index.vue b/src/views/experiment/planAssignments/index.vue index cffcc61..f5bdf13 100644 --- a/src/views/experiment/planAssignments/index.vue +++ b/src/views/experiment/planAssignments/index.vue @@ -3,12 +3,17 @@ <div class="top-bar"> <el-form ref="form" :inline="true" :model="searchData"> <el-form-item label="璁惧鍚嶇О:" class="sermargin"> - <el-select v-model="searchData.devicename" placeholder="鍏ㄩ儴" style="width: 100px;"> + <el-select + v-model="searchData.devicename" + placeholder="鍏ㄩ儴" + style="width: 100px" + > <el-option - v-for="item in options" + v-for="item in options1" :key="item.value" :label="item.label" - :value="item.value"> + :value="item.value" + > </el-option> </el-select> </el-form-item> @@ -18,131 +23,132 @@ type="daterange" range-separator="~" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> + end-placeholder="缁撴潫鏃ユ湡" + > </el-date-picker> </el-form-item> - <el-form-item label="妫�楠屼汉:" style="margin-right: 20px;"> - <el-select v-model="searchData.person" placeholder="鍏ㄩ儴" style="width: 80px;margin-right: 100px;"> + <el-form-item label="妫�楠屼汉:" style="margin-right: 20px"> + <el-select + v-model="searchData.person" + placeholder="鍏ㄩ儴" + style="width: 80px; margin-right: 100px" + > <el-option - v-for="item in options" + v-for="item in options2" :key="item.value" :label="item.label" - :value="item.value"> + :value="item.value" + > </el-option> </el-select> </el-form-item> <el-form-item> - <el-button type="primary" plain style="margin-right: 10px;">閲嶇疆</el-button> + <el-button type="primary" plain style="margin-right: 10px" + >閲嶇疆</el-button + > <el-button type="primary">鏌ヨ</el-button> </el-form-item> - </el-form> + </el-form> </div> <div class="table-box"> <div class="formwrapper"> <el-table ref="planTable" :max-height="800" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ + border: '0px', + background: '#f5f7fa', + color: '#606266', + boxShadow: 'inset 0 1px 0 #ebeef5', + textAlign: 'center', + }" :data="planTable" style="width: 100%" > - <el-table-column - type="index" - label="搴忓彿" - min-width="10%" - /> - <el-table-column - prop="device" - label="妫�楠岃澶�" - min-width="8%" - /> - <el-table-column - prop="samplename" - label="鏍峰搧鍚嶇О" - min-width="8%" - /> - <el-table-column - prop="sampleid" - label="鏍峰搧缂栧彿" - min-width="10%" - /> - <el-table-column - prop="modelandspecification" - label="瑙勬牸鍨嬪彿" - min-width="12%" - /> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="5%" - /> - <el-table-column - prop="amount" - label="鏁伴噺" - min-width="5%" - /> - <el-table-column - prop="checkproject" - label="妫�楠岄」鐩�" - min-width="12%" - /> - <el-table-column - prop="checker" - label="妫�楠屼汉" - min-width="6%" - /> - <el-table-column - prop="duration" - label="璁″垝宸ユ湡/h" - min-width="8%" - /> - <el-table-column - prop="progress" - label="妫�楠岃繘搴�" - min-width="12%"> - <template slot-scope="scope"> - <div v-if="scope.row.progress === 100" style="display: flex;"> - <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" status="success" style="width: 70%;"></el-progress> - <span style="color: rgb(103, 194, 58);">宸插畬鎴�</span> - </div> - <div v-if="scope.row.progress <100 && scope.row.progress >0" style="display: flex;"> - <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" status="warning" style="width: 70%;"></el-progress> - <span style="color: rgb(230, 162, 60);">妫�楠屼腑</span> - </div> - <div v-if="scope.row.progress === 0" style="display: flex;"> - <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" style="width: 70%;"></el-progress> - <span style="color: gray">鏈垎閰�</span> - </div> - <div v-else> - </div> - </template> - </el-table-column> - <el-table-column - prop="starttime" - label="璁″垝寮�濮嬫椂闂�" - min-width="10%" - /> - <el-table-column - prop="finishtime" - label="璁″垝缁撴潫鏃堕棿" - min-width="10%" - /> - <el-table-column - label="鎿嶄綔" - min-width="8%" - > - <template slot-scope="scope"> - <el-button type="text" size="small" @click="handleClick(scope.row)">鏌ョ湅</el-button> - </template> - </el-table-column> + <el-table-column type="index" label="搴忓彿" min-width="10%" /> + <el-table-column prop="device" label="妫�楠岃澶�" min-width="8%" /> + <el-table-column prop="samplename" label="鏍峰搧鍚嶇О" min-width="8%" /> + <el-table-column prop="sampleid" label="鏍峰搧缂栧彿" min-width="10%" /> + <el-table-column + prop="modelandspecification" + label="瑙勬牸鍨嬪彿" + min-width="12%" + /> + <el-table-column prop="unit" label="鍗曚綅" min-width="5%" /> + <el-table-column prop="amount" label="鏁伴噺" min-width="5%" /> + <el-table-column + prop="checkproject" + label="妫�楠岄」鐩�" + min-width="12%" + /> + <el-table-column prop="checker" label="妫�楠屼汉" min-width="6%" /> + <el-table-column prop="duration" label="璁″垝宸ユ湡/h" min-width="8%" /> + <el-table-column prop="progress" label="妫�楠岃繘搴�" min-width="12%"> + <template slot-scope="scope"> + <div v-if="scope.row.progress === 100" style="display: flex"> + <el-progress + :text-inside="true" + :stroke-width="15" + :percentage="scope.row.progress" + status="success" + style="width: 70%" + ></el-progress> + <span style="color: rgb(103, 194, 58)">宸插畬鎴�</span> + </div> + <div + v-if="scope.row.progress < 100 && scope.row.progress > 0" + style="display: flex" + > + <el-progress + :text-inside="true" + :stroke-width="15" + :percentage="scope.row.progress" + status="warning" + style="width: 70%" + ></el-progress> + <span style="color: rgb(230, 162, 60)">妫�楠屼腑</span> + </div> + <div v-if="scope.row.progress === 0" style="display: flex"> + <el-progress + :text-inside="true" + :stroke-width="15" + :percentage="scope.row.progress" + style="width: 70%" + ></el-progress> + <span style="color: gray">鏈垎閰�</span> + </div> + <div v-else></div> + </template> + </el-table-column> + <el-table-column + prop="starttime" + label="璁″垝寮�濮嬫椂闂�" + min-width="10%" + /> + <el-table-column + prop="finishtime" + label="璁″垝缁撴潫鏃堕棿" + min-width="10%" + /> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button + type="text" + size="small" + @click="handleClick(scope.row)" + >鏌ョ湅</el-button + > + </template> + </el-table-column> </el-table> </div> - </div> + </div> </div> </template> <script> +import { selectAllPlan } from "@/api/experiment/planAssignments"; export default { data() { return { @@ -151,71 +157,36 @@ time: "", person: "", }, - options: [ - { - value: "閫夐」1", - label: "閫夐」1", - }, - { - value: "閫夐」2", - label: "閫夐」2", - disabled: true, - }, - ], - planTable: [{ - device: '鎷夊姏鏈�', - samplename: '闀�閿岄挗缁炵嚎', - sampleid: 'SN1027401-12937', - modelandspecification: 'JLHA/G1A-185/30-14/7', - unit: 'm', - amount: '200', - checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級', - checker: '榛勫皬鏄�', - duration: '2', - progress: 100, - starttime: '2023-08-04 8:00', - finishtime: '2023-08-04 10:00', - },{ - device: '鎷夊姏鏈�', - samplename: '闀�閿岄挗缁炵嚎', - sampleid: 'SN1027401-12937', - modelandspecification: 'JLHA/G1A-185/30-14/7', - unit: 'm', - amount: '200', - checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級', - checker: '榛勫皬鏄�', - duration: '2', - progress: 60, - starttime: '2023-08-04 8:00', - finishtime: '2023-08-04 10:00', - },{ - device: '鎷夊姏鏈�', - samplename: '闀�閿岄挗缁炵嚎', - sampleid: 'SN1027401-12937', - modelandspecification: 'JLHA/G1A-185/30-14/7', - unit: 'm', - amount: '200', - checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級', - checker: '榛勫皬鏄�', - duration: '2', - progress: 30, - starttime: '2023-08-04 8:00', - finishtime: '2023-08-04 10:00', - },{ - device: '鎷夊姏鏈�', - samplename: '闀�閿岄挗缁炵嚎', - sampleid: 'SN1027401-12937', - modelandspecification: 'JLHA/G1A-185/30-14/7', - unit: 'm', - amount: '200', - checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級', - checker: '榛勫皬鏄�', - duration: '2', - progress: 0, - starttime: '2023-08-04 8:00', - finishtime: '2023-08-04 10:00', - }] + options1: [], + options2: [], + planTable: [], }; + }, + created() { + this.getData(); + }, + methods: { + // 鏌ヨ鍒楄〃 + async getData() { + const params = {}; + 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); + }, }, }; </script> @@ -236,14 +207,14 @@ margin-right: 60px; } } -.table-box{ +.table-box { background-color: #fff; margin: 0px -15px; margin-top: 35px; display: flex; flex-direction: column; height: 78vh; - .formwrapper{ + .formwrapper { padding: 0px 20px; margin-top: 0px; flex: 1; diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue index f409c24..0e8bf65 100644 --- a/src/views/experiment/reportAuditing/index.vue +++ b/src/views/experiment/reportAuditing/index.vue @@ -1,13 +1,217 @@ <template> - <div>鎶ュ憡瀹℃牳</div> + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true"> + <el-form-item class="sermargin"> + <el-input + v-model="input" + class="input-form" + placeholder="璇风洿鎺ヨ緭鍏ユ牱寮忕紪鍙�/鎶ュ憡缂栧彿/鏍峰搧鍚嶇О/杩涜鎼滅储鎴栦笅鎷夐�夋嫨杩涜缁勫悎鏌ヨ" + @keyup.enter.native="getData" + /> + </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-dropdown> + <span class="el-dropdown-link"> + 楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right"></i> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item>楂樼骇鎼滅储</el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </el-form> + <el-form> + <el-button class="rightBtn" type="primary" @click="exportData" + >瀹℃牳</el-button + > + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <div class="search-bar"> + <el-radio-group v-model="checkStatus" @change="handleRadioChange"> + <el-radio-button>鍏ㄩ儴</el-radio-button> + <el-radio-button label="0">寰呮彁浜�</el-radio-button> + <el-radio-button label="2">寰呴�氳繃</el-radio-button> + </el-radio-group> + <el-checkbox v-model="checked" style="margin-left: 20px" + >浠呯湅鎴戠殑</el-checkbox + > + </div> + </div> + <div class="table-box"> + <el-table + ref="reportTable" + :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="reportTable" + 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="materialName" + label="鏍峰搧鍚嶇О" + min-width="10%" + /> + <el-table-column prop="status" label="瀹℃壒鐘舵��" min-width="8%"> + <template slot-scope="scope"> + <span> + <el-tag type="warning">{{ + scope.row.status == 0 ? "寰呮彁浜�" : "寰呴�氳繃" + }}</el-tag> + </span> + </template></el-table-column + > + <el-table-column prop="approver" label="瀹℃壒浜�" min-width="8%" /> + <el-table-column prop="submitTime" label="鎻愪氦鏃ユ湡" min-width="8%" /> + <el-table-column prop="checkTime" label="瀹℃牳鏃ユ湡" min-width="8%" /> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button + type="text" + size="small" + @click="handleClick(scope.row)" + >鏌ョ湅璇︾粏</el-button + > + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + :current-page="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 { selectAllReportCheck } from "@/api/experiment/reportAuditing"; export default { - -} + data() { + return { + input: "", + checkStatus: undefined, + reportTable: [], + page: 1, + total: 0, + pageSize: 10, + checked: true, + }; + }, + created() { + this.getData(); + }, + methods: { + // 鐘舵�佹寜閽� + handleRadioChange() { + this.getData(); + }, + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + 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.checkStatus = undefined; + this.getData(); + }, + // 鏌ヨ鍒楄〃 + async getData() { + const params = { + page: this.page, + pageSize: this.pageSize, + name: this.input ? this.input : undefined, + status: this.checkStatus ? this.checkStatus : undefined, + }; + const { data } = await selectAllReportCheck(params); + this.reportTable = data.row; + this.total = data.total; + }, + }, +}; </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: 700px; + } + .el-dropdown-link { + cursor: pointer; + color: #409eff; + } + .el-icon-arrow-down { + font-size: 12px; + } +} +.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; + display: flex; + flex-direction: column; + > div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } +} </style> -- Gitblit v1.9.3