From 253b9c48b02d995540b84c1831e54e6baf8a1000 Mon Sep 17 00:00:00 2001 From: XiaoRuby <3114200645@qq.com> Date: 星期五, 08 九月 2023 10:21:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/view/rawInsDetail.vue | 662 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 425 insertions(+), 237 deletions(-) diff --git a/src/components/view/rawInsDetail.vue b/src/components/view/rawInsDetail.vue index 716cab0..cd05798 100644 --- a/src/components/view/rawInsDetail.vue +++ b/src/components/view/rawInsDetail.vue @@ -1,181 +1,220 @@ -<style scoped> - .rawInsBox{ - height: 100%; - width: 100%; - overflow-y: scroll; - display: flex; - flex-direction: column; - } - .rawInsBox .title .el-button { - height: 32px; - border: 1px solid rgba(190, 190, 190, 0.44); - box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); - padding: 0 12px; - } - .rawInsBox .title { - margin-bottom: 10px; - padding: 0 20px; - } - /* 妫�楠岃鎯� */ - .raw-detail-info{ - background: #fff; - padding: 26px 0px 11px 80px; - } - .raw-detail-info >>>.el-form-item__label{ - - color: rgb(51, 51, 51); - font-family: 寰蒋闆呴粦; - font-size: 16px; - font-weight: 400; - letter-spacing: 0px; - } - .raw-detail-info .el-input{ - width: auto; - } - .raw-detail-info >>>.el-input__inner{ - width: 224px; - height: 32px; - box-sizing: border-box; - background: rgb(238, 238, 238); - border: 1px solid rgb(221, 221, 221); - border-radius:4px; - } - .raw-detail-info .el-form-item{ - margin-bottom: 24px; - } - - /* 妫�楠岄」鐩� */ - .raw-project-table{ - padding: 24px 14px; - background: #fff; - flex: 1; - /* max-height: 360px; */ - /* overflow-y: hidden; */ - } - /* 妫�楠岀粨璁� */ - .raw-conclusion-table{ - padding: 9px 14px; - background: #fff; - } -</style> - - <template> <div class="rawInsBox"> <div class="title"> <el-row> <el-col :span="12" style="line-height: 32px;">鍘熸潗鏂欐楠�</el-col> <el-col :span="12" style="text-align: right;"> - <el-button icon="el-icon-download" @click="()=>{goBack()}">杩� 鍥�</el-button> + <el-button + icon="el-icon-circle-plus-outline" + v-show="detailId === null" + @click="addNewRawInspect" + style="background-color: #004ea2; color: #ffffff;" + >鎻� 浜�</el-button + > + <el-button + icon="el-icon-download" + @click=" + () => { + goBack(); + } + " + >杩� 鍥�</el-button + > </el-col> </el-row> </div> - <div class="raw-detail-info"> - <el-form v-model="detail" label-position="right" label-width="120px" > - <el-row> - <el-col :span="7"> - <el-form-item label="鏉ユ枡鏃ユ湡:"> - <el-input></el-input> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="瑙勬牸鍨嬪彿:"> - <el-input></el-input> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鍘熸潗鏂欑紪鐮�:"> - <el-input></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="7"> - <el-form-item label="鍘熸潗鏂欏悕绉�:"> - <el-input></el-input> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鎶ユ鏃ユ湡:"> - <el-input></el-input> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鍗曚綅:"> - <el-input></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="7"> - <el-form-item label="鏁伴噺:"> - <el-input></el-input> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鎶ユ浜�:"> - <el-input></el-input> - </el-form-item> - </el-col> - - </el-row> - </el-form> + <div + class="raw-detail-info" + :class="detailId === null ? 'raw-detail-info-edit' : ''" + > + <el-form v-model="detailInfo" label-position="right" label-width="120px"> + <el-row> + <el-col :span="7"> + <el-form-item label="鏉ユ枡鏃ユ湡:"> + <el-input + v-if="detailId !== null" + :disabled="detailId !== null" + v-model="detailInfo.formTime" + ></el-input> + <el-date-picker + v-else + type="date" + value-format="yyyy-MM-dd" + v-model="detailInfo.formTime" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鍘熸潗鏂欏悕绉�:"> + <el-input + v-if="detailId !== null" + :disabled="detailId !== null" + v-model="detailInfo.name" + ></el-input> + <el-input + v-else + v-model="detailInfo.name" + placeholder="璇疯緭鍏�" + ></el-input> </el-form-item + ></el-col> + <el-col :span="7"> + <el-form-item label="鍘熸潗鏂欑紪鐮�:"> + <el-input + :disabled="detailId !== null" + v-model="detailInfo.code" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="7"> + <el-form-item label="瑙勬牸鍨嬪彿:"> + <el-input + v-if="detailId !== null" + :disabled="detailId !== null" + v-model="detailInfo.specifications" + ></el-input> + <el-input + v-else + v-model="detailInfo.specificationsArr" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鍗曚綅:"> + <el-input + placeholder="璇疯緭鍏ユ楠屽崟浣�" + :disabled="detailId !== null" + v-model="detailInfo.unit" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鏁伴噺:"> + <el-input + placeholder="璇疯緭鍏ユ楠屾暟閲�" + :disabled="detailId !== null" + v-model="detailInfo.number" + ></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="7"> + <el-form-item label="渚涘簲鍟嗗悕绉�:"> + <el-input + placeholder="璇疯緭鍏ユ楠屾暟閲�" + :disabled="detailId !== null" + v-model="detailInfo.number" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item v-show="detailId !== null" label="鎶ユ鏃ユ湡:"> + <el-input + :disabled="detailId !== null" + v-model="detailInfo.createTime" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item v-show="detailId !== null" label="鎶ユ浜�:"> + <el-input + :disabled="detailId !== null" + v-model="detailInfo.userName" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> </div> <div class="title"> <el-row> <el-col :span="12" style="line-height: 32px;">妫�楠岄」鐩�</el-col> + <el-col :span="12" style="line-height: 32px; padding-top: 6px;"> + <el-button v-if="detailId == null" style="float: right;" + >娣诲姞妫�楠屽�煎垪</el-button + > + <el-button + v-if="detailId == null" + style="float: right;margin-right: 30px;" + @click="clickAddLine()" + >娣诲姞妫�楠岃</el-button + > + </el-col> </el-row> </div> <div class="raw-project-table"> - <el-table - :data="projectTable" - style="width: 100%" - max-height="320" + <el-table :data="projectTable" style="width: 100%" height="320"> + <el-table-column type="index" label="搴忓彿" width="100"> + </el-table-column> + <el-table-column prop="name" label="椤圭洰" width="212"> + <template scope="scope"> + <el-input + v-model="scope.row.name" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅" width="148"> + <template scope="scope"> + <el-input + v-model="scope.row.unit" + placeholder="璇疯緭鍏ュ崟浣�" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="required" label="鏍囧噯" width="254"> + <template scope="scope"> + <el-input + v-model="scope.row.required" + placeholder="璇疯緭鍏ユ爣鍑嗗��" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="internal" label="鍐呮帶鍊�" width="254"> + <template scope="scope"> + <el-input + v-model="scope.row.internal" + placeholder="璇疯緭鍏ュ唴鎺у��" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="testValue" label="妫�鏌ュ��" width="254"> + <template slot-scope="scope"> + <el-input + v-model="scope.row.testValue" + @blur="changeState(scope.row)" + placeholder="璇疯緭鍏ユ娴嬪��" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="deviceName" label="璇曢獙璁惧"> + <el-button type="text">閫夋嫨</el-button> + </el-table-column> + <el-table-column prop="testState" label="缁撹"> + <template slot-scope="scope"> + <span + v-show="scope.row.testState != null" + :style="{ + color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C' + }" + >{{ scope.row.testState === 1 ? "鍚堟牸" : "涓嶅悎鏍�" }}</span > - <el-table-column - type="index" - label="搴忓彿" - width="100" - > - </el-table-column> - <el-table-column - prop="name" - label="椤圭洰" - width="212"> - </el-table-column> - <el-table-column - prop="address" - label="鍗曚綅" - width="148"> - </el-table-column> - <el-table-column - prop="address" - label="鏍囧噯" - width="254"> - </el-table-column> - <el-table-column - prop="address" - label="鍐呮帶鍊�" - width="291"> - </el-table-column> - <el-table-column - prop="address" - label="妫�鏌ュ��" - width="371"> - </el-table-column> - <el-table-column - prop="address" - label="璇曢獙璁惧" - width="248" - > - </el-table-column> - <el-table-column - prop="address" - label="缁撹" - width="98" - > - </el-table-column> - </el-table> + <span v-show="scope.row.testState == null">鏆傛湭缁撹</span> + </template> + </el-table-column> + <el-table-column v-if="detailId == null" label="鎿嶄綔" fixed="right"> + <template scope="scope"> + <el-button type="text" @click="clickDeleteline(scope)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> </div> <div class="title"> <el-row> @@ -183,89 +222,238 @@ </el-row> </div> <div class="raw-conclusion-table"> - <el-table :data="conclusionTable"> - <el-table-column - prop="number" - label="鐗╂枡缂栧彿" - width="353"> - </el-table-column> - <el-table-column - prop="number" - label="鐗╂枡鍚嶇О" - width="353"> - </el-table-column> - <el-table-column - prop="number" - label="妫�楠屽憳" - width="542"> - </el-table-column> - <el-table-column - prop="number" - label="妫�楠岀粨璁�" - width="362"> - </el-table-column> - <el-table-column - fixed="right" - label="鎿嶄綔" - width="120"> - <template slot-scope="scope"> - <el-button type="text" size="small">涓婃姤</el-button> - </template> - </el-table-column> - </el-table> + <el-table :data="conclusionTable" style="100%"> + <el-table-column prop="code" label="鐗╂枡缂栧彿"> </el-table-column> + <el-table-column prop="name" label="鐗╂枡鍚嶇О"> </el-table-column> + <el-table-column prop="names" label="妫�楠屽憳"> + <template slot-scope="scope"> + <span + v-for="item in scope.row.names" + :key="item && item.userName" + :style="{ marginRight: '8px' }" + >{{ item }}</span + > + </template> + </el-table-column> + <el-table-column prop="testState" label="妫�楠岀粨璁�"> + <template slot-scope="scope"> + <span + v-show="scope.row.testState != null" + :style="{ + color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C' + }" + >{{ scope.row.testState === 1 ? "鍚堟牸" : "涓嶅悎鏍�" }}</span + > + <span v-show="scope.row.testState == null">鏆傛湭缁撹</span> + </template> + </el-table-column> + <el-table-column v-if="detailId !== null" label="鎿嶄綔" width="120"> + <template> + <el-button type="text" size="small" @click.once="submitSave" + >涓婃姤</el-button + > + </template> + </el-table-column> + </el-table> </div> </div> </template> <script> -import RawIns from './raw-ins.vue' +import RawIns from "./raw-ins.vue"; export default { - components:{RawIns}, - props:['goBack','detail'], - created(){ - console.log(this.detail) + components: { RawIns }, + props: ["goBack", "detailId"], + created() { + // 娓呯┖ + this.detailInfo = {}; + if (this.detailId) { + this.getDetailInfo(); + } else { + this.getOptions(); + } + }, + mounted() {}, + computed: { + conclusionTable() { + const conclusion = {}; + conclusion.name = this.detailInfo.name; + conclusion.code = this.detailInfo.code; + conclusion.names = [ + ...new Set(this.projectTable.map(item => item.userName)) + ]; + if ( + this.projectTable.filter(item => item.testState === null).length === + this.projectTable.length + ) { + conclusion.testState = null; + return [conclusion]; + } + if (this.projectTable.filter(item => item.testState === 0).length > 0) { + conclusion.testState = 0; + } else { + conclusion.testState = 1; + } + return [conclusion]; + } + }, + data() { + return { + // 璇︽儏椤靛氨鏄鎯呬俊鎭� + detailInfo: {}, + projectTable: [], + // 鏂板缓妫�楠屽崟鍙傛暟瀵硅薄 + rawInsParams: {}, + // 椤圭洰鍚嶇Оoptions + materialOptions: [], + specificationOptions: [] + }; + }, + methods: { + // 鑾峰彇鎶ユ鍗曡鎯呬俊鎭� + async getDetailInfo() { + const { data } = await this.$axios.get( + this.$api.url.selectRawInspectsListById + `${this.detailId}`, + { params: { id: this.detailId } } + ); + this.detailInfo = data; + this.projectTable = data.rawInsProducts; }, - data() { - return { - conclusionTable:[ - {number:'鐗╂枡鍚嶇О'} - ], - projectTable:[ - { - date: '2016-05-02', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯�' - } - ] + // 鏂板妫�楠屽崟 + async addNewRawInspect() { + this.detailInfo.specifications = this.detailInfo.specificationsArr.join( + "-" + ); + // const time = this.detailInfo.formTime + // this.detailInfo.formTime = `${time.getFullYear()}-${time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1}-${time.getDate() < 10 ? '0' + time.getDate() : time.getDate()}` + const res = await this.$axios.post( + this.$api.url.addRawInspects, + { ...this.detailInfo }, + { headers: { "Content-Type": "application/json" } } + ); + this.detailId = res.data; + this.getDetailInfo(); + + this.$message.success("鎻愪氦鎴愬姛"); + }, + // 淇敼椤圭洰鐨勬娴嬪�兼敼鍙樼粨璁� + async changeState(row) { + const res = await this.$axios.post( + this.$api.url.updaterawInsProduct, + { ...row }, + { headers: { "Content-Type": "application/json" } } + ); + this.$message.success("鎻愪氦鎴愬姛"); + this.getDetailInfo(); //閲嶆柊鍒锋柊淇℃伅鏁版嵁 + }, + async submitSave() { + const res = await this.$axios.post( + this.$api.url.updateRawInspectsById + `${this.detailId}` + ); + this.$message.success("鎻愪氦鎴愬姛"); + this.getDetailInfo(); + }, + async getOptions() { + const { data } = await this.$axios.get(this.$api.url.selectDevice); + this.materialOptions = data; + }, + checkRawName(data) { + this.materialOptions.forEach(item => { + if (item.name === data) { + this.detailInfo.code = item.code; + this.$axios + .get(this.$api.url.selectSpBySt, { params: { id: item.id } }) + .then(res => { + this.specificationOptions = res.data; + }); } + }); }, -} + // 娣诲姞琛� + clickAddLine() { + let obj = { + deviceId: 0, + internal: "", + name: "", + required: "", + testValue: "", + unit: "" + }; + this.projectTable.push(obj); + }, + // 鍒犻櫎琛� + clickDeleteline(scope) { + this.projectTable.splice(scope.$index, 1); + } + } +}; </script> + +<style scoped> +.rawInsBox { + height: 100%; + width: 100%; + overflow-y: scroll; + display: flex; + flex-direction: column; +} +.rawInsBox .title .el-button { + height: 32px; + border: 1px solid rgba(190, 190, 190, 0.44); + box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); + padding: 0 12px; +} +.rawInsBox .title { + margin-bottom: 10px; + padding: 0 20px; +} +/* 妫�楠岃鎯� */ +.raw-detail-info { + background: #fff; + padding: 26px 0px 11px 80px; +} +.raw-detail-info >>> .el-form-item__label { + color: rgb(51, 51, 51); + font-family: 寰蒋闆呴粦; + font-size: 16px; + font-weight: 400; + letter-spacing: 0px; +} +.raw-detail-info .el-input { + width: auto; +} +.raw-detail-info.raw-detail-info-edit >>> .el-input__inner { + background: #fff; +} +.raw-detail-info >>> .el-input__inner { + width: 224px; + height: 32px; + box-sizing: border-box; + background: rgb(238, 238, 238); + border: 1px solid rgb(221, 221, 221); + border-radius: 4px; +} +.raw-detail-info .el-form-item { + margin-bottom: 24px; +} +.raw-detail-info .el-form-item .el-button { + height: 32px; + border: 1px solid rgba(190, 190, 190, 0.44); + box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); + padding: 0 12px; +} + +/* 妫�楠岄」鐩� */ +.raw-project-table { + padding: 24px 14px; + background: #fff; + flex: 1; + /* max-height: 360px; */ + /* overflow-y: hidden; */ +} +/* 妫�楠岀粨璁� */ +.raw-conclusion-table { + padding: 9px 14px; + background: #fff; +} +</style> -- Gitblit v1.9.3