From 312b055ee75a14d90201e9de9024927de49d7d8b Mon Sep 17 00:00:00 2001 From: “zhuo” <“zhuo@itcast.cn”> Date: 星期四, 10 八月 2023 18:00:38 +0800 Subject: [PATCH] 8.10 --- .env.staging | 2 .env.development | 2 src/views/experiment/reportAuditing/index.vue | 2 src/api/CNAS/reviewAnnualPlan.js | 19 ++ .env.production | 2 src/views/experiment/checkTheReport/index.vue | 3 src/views/CNAS/reviewAnnualPlan/index.vue | 277 +++++++++++++++++++++++++++++++++++++++ src/views/experiment/planAssignments/index.vue | 87 +++++++++--- 8 files changed, 364 insertions(+), 30 deletions(-) diff --git a/.env.development b/.env.development index e363056..e5e7b7a 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = 'http://192.168.110.254:1234/' +VUE_APP_BASE_API = 'http://localhost:1234/' diff --git a/.env.production b/.env.production index 64b7d95..dd72fa5 100644 --- a/.env.production +++ b/.env.production @@ -3,5 +3,5 @@ # base api # VUE_APP_BASE_API = '/prod-api' -VUE_APP_BASE_API = 'http://192.168.110.254:1234/' +VUE_APP_BASE_API = 'http://localhost:1234/' diff --git a/.env.staging b/.env.staging index 4b2b496..92fbe73 100644 --- a/.env.staging +++ b/.env.staging @@ -5,6 +5,6 @@ # base api # VUE_APP_BASE_API = '/stage-api' -VUE_APP_BASE_API = 'http://192.168.110.254:1234/' +VUE_APP_BASE_API = 'http://localhost:1234/' diff --git a/src/api/CNAS/reviewAnnualPlan.js b/src/api/CNAS/reviewAnnualPlan.js new file mode 100644 index 0000000..b483e1e --- /dev/null +++ b/src/api/CNAS/reviewAnnualPlan.js @@ -0,0 +1,19 @@ +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 + }) + } diff --git a/src/views/CNAS/reviewAnnualPlan/index.vue b/src/views/CNAS/reviewAnnualPlan/index.vue index 183ba06..9b26139 100644 --- a/src/views/CNAS/reviewAnnualPlan/index.vue +++ b/src/views/CNAS/reviewAnnualPlan/index.vue @@ -1,5 +1,278 @@ <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" + type="date" + 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> + <!-- 涓婁紶闄勪欢 --> + <el-button + class="rightBtn" + type="primary" + icon="el-icon-upload2" + @click="dialogFormVisible1 = true" + >涓婁紶闄勪欢</el-button + > + + <el-dialog title="鏂板璁″垝" :visible.sync="dialogFormVisible1"> + <el-form :model="uploadingForm"> + <el-form-item label="瀹℃牳鏃ユ湡:" :label-width="formLabelWidth"> + <el-date-picker + v-model="uploadingForm.auditTime" + type="date" + placeholder="璇烽�夋嫨鏃ユ湡" + autocomplete="off" + > + </el-date-picker> + </el-form-item> + <el-form-item label="褰曞叆浜�:" :label-width="formLabelWidth"> + <el-input + v-model="uploadingForm.keyboarder" + autocomplete="off" + placeholder="璇疯緭鍏ュ綍鍏ヤ汉" + ></el-input> + </el-form-item> + <el-form-item label="涓婁紶闄勪欢:" :label-width="formLabelWidth"> + <el-input + v-model="uploadingForm.attachment" + autocomplete="off" + ></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="dialogFormVisible1 = false" + >纭� 瀹�</el-button + > + </div> + </el-dialog> + + <!-- 涓婁紶璁″垝 --> + <el-button + class="rightBtn" + type="primary" + icon="el-icon-document-add" + @click="addPlan" + >鏂板璁″垝</el-button + > + <el-button + class="rightBtn" + type="primary" + icon="el-icon-document-checked" + >瀵煎嚭骞村害璁″垝</el-button + > + <el-button + class="rightBtn" + type="primary" + icon="el-icon-document-checked" + >瀵煎嚭鍐呴儴瀹炴柦璁″垝</el-button + > + </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" + @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 { selectAllList, addCnasAnnualPlan } from "@/api/CNAS/reviewAnnualPlan"; +export default { + data() { + return { + input: [], + auditTable: [], + page: 1, + total: 0, + pageSize: 10, + dialogFormVisible1: false, + uploadingForm: { + auditTime: "", + keyboarder: "", + keyboarder: "", + }, + formLabelWidth: "80px", + }; + }, + created() { + this.getData(); + }, + methods: { + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + 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, + }; + const { data } = await selectAllList(params); + this.auditTable = 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; +} +.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; + } + } +} +</style> diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue index 4a58f59..5183a0c 100644 --- a/src/views/experiment/checkTheReport/index.vue +++ b/src/views/experiment/checkTheReport/index.vue @@ -216,7 +216,7 @@ } .el-dropdown-link { cursor: pointer; - color: #409EFF; + color: #409eff; } .el-icon-arrow-down { font-size: 12px; @@ -250,6 +250,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..3bd0410 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" -- Gitblit v1.9.3