From 8f5eca214f1544ae0979de2a0bd09535a48a6297 Mon Sep 17 00:00:00 2001 From: qx <1084500556@qq.com> Date: 星期三, 16 四月 2025 16:23:14 +0800 Subject: [PATCH] qx --- src/components/public/index.vue | 637 +++++++++++++++++++++++++++------------------------------ 1 files changed, 304 insertions(+), 333 deletions(-) diff --git a/src/components/public/index.vue b/src/components/public/index.vue index 12ba45e..19a6ccc 100644 --- a/src/components/public/index.vue +++ b/src/components/public/index.vue @@ -1,349 +1,320 @@ <template> - <div> - <el-dialog - :title="title" - :visible.sync="open" - width="1080px" - append-to-body - > - <h3 v-if="fList.proResult">妫�娴嬮」鐩� :{{ fList.project.proName }}</h3> - <h3 v-if="fList.proResult"> - 妫�娴嬬粨鏋� :{{ fList.proResult }}{{ fList.project.proMetering }} - </h3> - <!-- <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - label-width="68px" - > --> - <!-- <el-form-item label="鐥呯鍚嶇О" prop="bingzhong"> - <el-input - v-model="queryParams.bingzhong" - placeholder="璇疯緭鍏ョ畝绉�" - clearable - @keyup.enter.native="handleQuery" - style="width: 120px" - /> - </el-form-item> - <el-form-item label="鎷奸煶鐮�" prop="bzPinyin"> - <el-input - v-model="queryParams.bzPinyin" - placeholder="璇疯緭鍏ユ嫾闊崇爜" - clearable - @keyup.enter.native="handleQuery" - style="width: 130px" - /> - </el-form-item> - <el-form-item> - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >鎼滅储</el-button - > - </el-form-item> --> - <!-- <el-form-item> - <h3 >{{ queryParams.proName || '鏆傛棤椤圭洰鍚嶇О' }}</h3> - </el-form-item> --> - <!-- <el-form-item> - <h3 style="margin-left: 160px">宸查�夐」鐩�</h3> - </el-form-item> --> - <!-- </el-form> --> - <h2 style="text-align: center;margin-top: -30px;">{{ queryParams.proName || '鏆傛棤椤圭洰鍚嶇О' }}</h2> - <div style="display: flex; width: 100%"> - <div style="width: 50%; margin-right: 40px"> - <el-table - :data="dataList" - ref="multipleTable" - v-loading="loading" - row-key="aid" - @selection-change="handleSelectionChange" - :reserve-selection="false" - border - height="420px" - > - <el-table-column type="selection" width="40" align="center" /> - <el-table-column - label="搴忓彿" - type="index" - align="center" - width="50px" - /> - <!-- <el-table-column label="瑙勫垯" align="center" prop="ruleStr" /> --> - <el-table-column label="妫�鏌ユ墍瑙�" align="center" prop="yxbx" /> - <el-table-column label="妫�鏌ョ粨璁�" align="center" prop="ruleStr" /> - </el-table> - <div class="pag"> - <div class="pag1" style="margin-left: 630px"> - <pagination - small - v-show="total > 0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - </div> + <div> + <el-dialog :title="title" :visible.sync="open" width="1080px" append-to-body> + <h3 v-if="fList.proResult">妫�娴嬮」鐩� :{{ fList.project.proName }}</h3> + <h3 v-if="fList.proResult"> + 妫�娴嬬粨鏋� :{{ fList.proResult }}{{ fList.project.proMetering }} + </h3> + + <h2 style="text-align: center;">{{ queryParams.proName || '鏆傛棤椤圭洰鍚嶇О' }}</h2> + <div style="display: flex; width: 100%"> + <div style="width: 50%; margin-right: 40px"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> + <!-- <el-form-item label="鐥呯鍚嶇О" prop="bingzhong"> + <el-input + v-model="queryParams.bingzhong" + placeholder="璇疯緭鍏ョ畝绉�" + clearable + @keyup.enter.native="handleQuery" + style="width: 120px" + /> + </el-form-item>--> + <el-form-item label="妫�鏌ョ粨璁�" prop="ruleStr"> + <el-input v-model="queryParams.ruleStr" placeholder="璇疯緭鍏ユ鏌ョ粨璁�" clearable @keyup.enter.native="getList" + style="width: 130px" /> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="getList">鎼滅储</el-button> + </el-form-item> + <!-- <el-form-item> + <h3 >{{ queryParams.proName || '鏆傛棤椤圭洰鍚嶇О' }}</h3> + </el-form-item> --> + <!-- <el-form-item> + <h3 style="margin-left: 160px">宸查�夐」鐩�</h3> + </el-form-item> --> + </el-form> + <el-table :data="dataList" ref="multipleTable" v-loading="loading" @selection-change="handleSelectionChange" + border height="480px"> + <el-table-column type="selection" width="40" align="center" /> + <el-table-column label="搴忓彿" type="index" align="center" width="50px" /> + <!-- <el-table-column label="瑙勫垯" align="center" prop="ruleStr" /> --> + <el-table-column label="妫�鏌ユ墍瑙�" align="center" prop="yxbx" /> + <el-table-column label="妫�鏌ョ粨璁�" align="center" prop="ruleStr" /> + </el-table> + <div class="pag"> + <div class="pag1" style="margin-left: 630px"> + <pagination small v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </div> - - <div style="width: 100%; height: 600px"> - <!-- <h3 style="margin-top: -30px;">宸查�夐」鐩�</h3> --> - <el-form - :model="form" - ref="queryForm" - size="small" - label-width="68px" - :inline="true" - > - <!-- :inline="true" --> - <!-- <el-form-item> - <el-input - type="textarea" - v-model="form.desc" - style="width: 560px" - ></el-input> - </el-form-item> --> - <el-form-item label="妫�鏌ユ墍瑙�" prop="jcsj"> - <el-input - v-model="form.jcsj" - clearable - type="textarea" - :autosize="{ minRows: 8 }" - style="width: 380px" - /> - </el-form-item> - <el-form-item label="妫�鏌ョ粨璁�" prop="conclusion"> - <el-input - v-model="form.desc" - clearable - type="textarea" - :autosize="{ minRows: 8 }" - style="width: 380px" - /> - </el-form-item> - </el-form> - </div> </div> - - <span slot="footer" class="dialog-footer" style="margin-top: -120px"> - <el-button @click="open = false">鍙� 娑�</el-button> - <el-button type="primary" @click="handleOk">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> - </template> - - <script> - import { getlist, getlistByRuleStr } from "@/api/doctor/check"; - import { getYxJcXxJg } from "@/api/picture/picture"; - export default { - name: "Public", - props: { - checkStatus: { - type: String, - default: "0", - validator: (value) => ["0", "1"].includes(value), - }, - proResult: { - type: String, - default: "", - }, - conclusion: { - type: String, - default: "", - }, - projectList: { - type: Array, - default: () => [], - }, + + <div class="jianc"> + <!-- <h3 style="margin-top: -30px;">宸查�夐」鐩�</h3> --> + <el-form :model="form" ref="queryForm" size="small" label-width="68px" :label-position="labelPosition"> + <!-- :inline="true" --> + <!-- <el-form-item> + <el-input + type="textarea" + v-model="form.desc" + style="width: 560px" + ></el-input> + </el-form-item> --> + <el-form-item label="妫�鏌ユ墍瑙�" prop="jcsj"> + <el-input v-model="form.jcsj" clearable type="textarea" :autosize="{ minRows: 7 }" style="width: 380px" /> + </el-form-item> + <el-form-item label="妫�鏌ョ粨璁�" prop="desc"> + <el-input v-model="form.desc" clearable type="textarea" :autosize="{ minRows: 7 }" style="width: 380px" /> + </el-form-item> + </el-form> + </div> + </div> + + <span slot="footer" class="dialog-footer" style="margin-top: -20px"> + <el-button @click="callcolos">鍙� 娑�</el-button> + <el-button type="primary" @click="handleOk">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import { getlist, getlistByRuleStr } from "@/api/doctor/check"; +import { getYxJcXxJg } from "@/api/picture/picture"; +export default { + name: "Public", + props: { + checkStatus: { + type: String, + default: "0", + validator: (value) => ["0", "1"].includes(value), }, - data() { - return { - open: false, - // 寮瑰嚭灞傛爣棰� - title: "", - yxbx: "", - proName:'', - // lastDesc: "", - total: 0, - dataList: [], - // 閬僵灞� - loading: false, - form: { - desc: "", - jcsj: "", - }, - queryParams: { - bingzhong: "", - bzPinyin: "", - proId:"", - // proName:"", - pageNum: 1, - pageSize: 10, - }, - list: [], - fList: {}, - selectedItems: [], - searchDebounce: null, - }; + proResult: { + type: String, + default: "", }, - watch: { - checkStatus(newValue) { - if (newValue === "1") { - this.updateData(this.proResult, this.conclusion); + conclusion: { + type: String, + default: "", + }, + projectList: { + type: Array, + default: () => [], + }, + }, + data() { + return { + open: false, + labelPosition: "top", + // 寮瑰嚭灞傛爣棰� + title: "", + yxbx: "", + proName: '', + // lastDesc: "", + total: 0, + dataList: [], + // 閬僵灞� + loading: false, + form: { + desc: "", + jcsj: "", + }, + queryParams: { + ruleStr: "", + pageNum: 1, + pageSize: 10, + }, + list: [], + fList: {}, + selectedItems: [], + searchDebounce: null, + }; + }, + watch: { + checkStatus(newValue) { + console.log(565658) + if (newValue === "1") { + this.updateData(this.proResult, this.conclusion); + } + }, + projectList: { + immediate: true, + deep: true, + handler(newVal) { + console.log("鏀跺埌鐨勯」鐩暟鎹�:", newVal); + // 浣犲彲浠ュ湪杩欓噷澶勭悊鏁版嵁锛屾瘮濡備繚瀛樺埌 data 鎴栧仛閫昏緫鍒ゆ柇 + if (newVal && newVal.length > 0) { + const firstProject = newVal[0]; // 浣犱篃鍙互閬嶅巻鎵�鏈夐」鐩紝鐪嬩綘涓氬姟闇�姹� + this.queryParams.proId = firstProject.proId; // 鍋囪椤圭洰涓彨 id + this.queryParams.proName = firstProject.proName; // 鍋囪鍙� proName + this.proName = firstProject.proName } }, - projectList: { - immediate: true, - deep: true, - handler(newVal) { - console.log("鏀跺埌鐨勯」鐩暟鎹�:", newVal); - // 浣犲彲浠ュ湪杩欓噷澶勭悊鏁版嵁锛屾瘮濡備繚瀛樺埌 data 鎴栧仛閫昏緫鍒ゆ柇 - if (newVal && newVal.length > 0) { - const firstProject = newVal[0]; // 浣犱篃鍙互閬嶅巻鎵�鏈夐」鐩紝鐪嬩綘涓氬姟闇�姹� - this.queryParams.proId = firstProject.proId; // 鍋囪椤圭洰涓彨 id - // this.queryParams.proName = firstProject.proName; - this.proName = firstProject.proName - } - }, - }, }, - mounted() {}, - - created() {}, - methods: { - async getList() { - try { - this.loading = true; // 娣诲姞鍔犺浇鐘舵�� - - const res = await getlist(this.queryParams); - this.dataList = res.data.rows; + }, + mounted() { }, + + created() { }, + methods: { + async getList() { + try { + this.loading = true; // 娣诲姞鍔犺浇鐘舵�� + const res = await getlist(this.queryParams); + this.dataList = res.data.rows; + if (res.data.total) { this.total = res.data.total; - - // 濡傛灉闇�瑕侀�変腑鎿嶄綔锛屽皢鍏跺皝瑁呬负鐙珛鏂规硶 - await this.handleAutoSelection(); - } catch (error) { - console.error("鑾峰彇鏁版嵁澶辫触:", error); - this.$message.error("鑾峰彇鏁版嵁澶辫触"); - } finally { - this.loading = false; } - }, - - // 灏佽閫変腑閫昏緫 - async handleAutoSelection() { - if (!this.fList?.rulesList?.length) return; - - await this.$nextTick(); - // 鍏堟竻闄ゆ墍鏈夐�夋嫨 - this.$refs.multipleTable?.clearSelection(); - // 鍐嶈繘琛岄�夋嫨 - this.dataList.forEach((item) => { - const shouldSelect = this.fList.rulesList.some( - (rule) => rule.aid === item.aid - ); - if (shouldSelect) { - this.$refs.multipleTable?.toggleRowSelection(item, true); - } - }); - }, - - handleQuery() { - if (this.searchDebounce) clearTimeout(this.searchDebounce); - - this.searchDebounce = setTimeout(() => { - this.queryParams.pageNum = 1; // 閲嶇疆椤电爜 - this.getList(); - }, 300); - }, - - updateData(proResult, conclusion) { - if (this.checkStatus === "1") { - this.form.jcsj = proResult; // 鏇存柊妫�鏌ユ墍瑙� - this.form.desc = conclusion; // 鏇存柊妫�鏌ョ粨璁� - // console.log(proResult, conclusion); + this.updateData(this.proResult, this.conclusion); + + // 濡傛灉闇�瑕侀�変腑鎿嶄綔锛屽皢鍏跺皝瑁呬负鐙珛鏂规硶 + await this.handleAutoSelection(); + } catch (error) { + console.error("鑾峰彇鏁版嵁澶辫触:", error); + this.$message.error("鑾峰彇鏁版嵁澶辫触"); + } finally { + this.loading = false; + } + }, + + // 灏佽閫変腑閫昏緫 + async handleAutoSelection() { + if (!this.fList?.rulesList?.length) return; + + await this.$nextTick(); + this.dataList.forEach((item) => { + const shouldSelect = this.fList.rulesList.some( + (rule) => rule.aid === item.aid + ); + if (shouldSelect) { + this.$refs.multipleTable?.toggleRowSelection(item, true); } - }, - - handleSelectionChange(selection) { - console.log('Selection changed:', selection); - this.list = [...selection]; // 浣跨敤灞曞紑杩愮畻绗﹀垱寤烘柊鏁扮粍 - this.updateFormContent(selection); - }, - - updateFormContent(selection) { - // 濡傛灉澶勪簬妫�鏌ョ姸鎬侊紝浣跨敤浼犲叆鐨勫�� - if (this.checkStatus === "1") { - this.updateData(this.proResult, this.conclusion); - return; - } - - // 閲嶇疆琛ㄥ崟鍐呭 + }); + }, + + handleQuery() { + if (this.searchDebounce) clearTimeout(this.searchDebounce); + + this.searchDebounce = setTimeout(() => { + this.queryParams.pageNum = 1; // 閲嶇疆椤电爜 + this.getList(); + }, 300); + }, + + updateData(proResult, conclusion) { + console.log(proResult, conclusion, 5658) + if (this.checkStatus == 1) { + + this.form.jcsj = proResult; // 鏇存柊妫�鏌ユ墍瑙� + this.form.desc = conclusion; // 鏇存柊妫�鏌ョ粨璁� + } else { this.form.desc = ""; this.form.jcsj = ""; - - // 鍙湁鍦ㄦ湁閫変腑椤规椂鎵嶈繘琛屾嫾鎺� - if (selection.length > 0) { - // 浣跨敤map鍜宩oin鏇夸唬forEach鍜屽瓧绗︿覆鎷兼帴 - this.form.desc = selection - .map((item) => item.bingzhong || item.ruleStr) - .filter(Boolean) - .join(","); - - this.form.jcsj = selection - .map((item) => item.yxbx) - .filter(Boolean) - .join(","); - } - }, - - handleOk() { - if (!this.form.desc && !this.form.jcsj) { - this.$message.warning("璇烽�夋嫨鏁版嵁"); - return; - } - - try { - this.$emit("add", this.form.desc, this.form.jcsj); - this.resetForm(); - this.open = false; - } catch (error) { - console.error("澶勭悊鏁版嵁澶辫触:", error); - this.$message.error("鎿嶄綔澶辫触"); - } - }, - - resetForm() { - this.form.desc = ""; - this.form.jcsj = ""; - this.list = []; - if (this.$refs.multipleTable) { - this.$refs.multipleTable.clearSelection(); - } - }, + } + + if (this.list.length != 0) { + let desc = "" + desc += this.list + .map((item) => item.bingzhong || item.ruleStr) + .filter(Boolean) + .join(","); + let jcsj = "" + jcsj += this.list + .map((item) => item.yxbx) + .filter(Boolean) + .join(","); + this.form.jcsj = this.form.jcsj + jcsj; // 鏇存柊妫�鏌ユ墍瑙� + this.form.desc = this.form.desc + desc; + } }, - computed: { - isCheckMode() { - return this.checkStatus === "1"; - }, - - hasSelectedItems() { - return this.list.length > 0; - }, + + handleSelectionChange(selection) { + this.list = selection; + this.updateFormContent(selection); }, - }; - </script> - - <style scoped> - .el-dialog__body { - padding: 10px 20px; - } - ::v-deep .el-dialog__footer { - padding: 0 !important; - padding-bottom: 40px !important; - } - </style> - \ No newline at end of file + + updateFormContent(selection) { + // if (!selection.length) return; + this.updateData(this.proResult, this.conclusion); + // 濡傛灉澶勪簬妫�鏌ョ姸鎬侊紝浣跨敤浼犲叆鐨勫�� + // if (this.checkStatus === "1") { + // this.updateData(this.proResult, this.conclusion); + // return; + // } + + // 閲嶇疆琛ㄥ崟鍐呭 + // this.form.desc = ""; + // this.form.jcsj = ""; + // console.log(22222); + // // 浣跨敤map鍜宩oin鏇夸唬forEach鍜屽瓧绗︿覆鎷兼帴 + // this.form.desc = selection + // .map((item) => item.bingzhong || item.ruleStr) + // .filter(Boolean) + // .join(","); + + // this.form.jcsj = selection + // .map((item) => item.yxbx) + // .filter(Boolean) + // .join(","); + }, + + handleOk() { + if (!this.form.desc && !this.form.jcsj) { + this.$message.warning("璇烽�夋嫨鏁版嵁"); + return; + } + + try { + this.$emit("add", this.form.desc, this.form.jcsj); + this.resetForm(); + this.open = false; + } catch (error) { + console.error("澶勭悊鏁版嵁澶辫触:", error); + this.$message.error("鎿嶄綔澶辫触"); + } + }, + + resetForm() { + this.form.desc = ""; + this.form.jcsj = ""; + this.list = []; + if (this.$refs.multipleTable) { + this.$refs.multipleTable.clearSelection(); + } + }, + callcolos() { + this.open = false; + } + }, + computed: { + isCheckMode() { + return this.checkStatus === "1"; + }, + + hasSelectedItems() { + return this.list.length > 0; + }, + }, +}; +</script> + +<style scoped> +.el-dialog__body { + padding: 0px 20px; +} + +::v-deep .el-dialog__header { + padding: 0px !important; + padding-bottom: 0px !important; +} + +::v-deep .el-dialog__footer { + padding: 0 !important; + padding-bottom: 40px !important; +} + +.jianc { + width: 100%; + height: 600px; + padding-top: 40px +} +</style> \ No newline at end of file -- Gitblit v1.8.0