From 74bc8c04dcd6e645bfb01102bff38c80a7ffd2ec Mon Sep 17 00:00:00 2001
From: qx <1084500556@qq.com>
Date: 星期五, 11 四月 2025 13:30:49 +0800
Subject: [PATCH] Merge branch 'master' of http://101.42.27.146:5001/r/ltkj_peisweb_region

---
 src/components/public/index.vue |  522 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 337 insertions(+), 185 deletions(-)

diff --git a/src/components/public/index.vue b/src/components/public/index.vue
index 1bd5508..4d4470b 100644
--- a/src/components/public/index.vue
+++ b/src/components/public/index.vue
@@ -1,197 +1,349 @@
 <template>
     <div>
-        <el-dialog :title="title" :visible.sync="open" width="600px" 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>
-            <el-table :data="dataList" ref="multipleTable" v-loading="loading" @selection-change="handleSelectionChange"
-                border height="320px
-        ">
-                <el-table-column type="selection" width="40" align="center" />
-                <el-table-column label="搴忓彿" type="index" width="80px" />
-                <el-table-column label="瑙勫垯" align="center" prop="ruleStr" />
-                <el-table-column label="鐥呯鍚嶇О" align="center" prop="bingzhong" />
+      <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>
-            <h3>宸查�夐」鐩�</h3>
-            <el-form :model="form" ref="queryForm" size="small" :inline="true" label-width="68px">
-                <el-form-item>
-                    <el-input type="textarea" v-model="form.desc" style="width: 560px"></el-input>
-                </el-form-item>
-            </el-form>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="open = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="handleOk">纭� 瀹�</el-button>
-            </span>
-        </el-dialog>
-
-    </div>
-</template>
+            <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>
   
-<script>
-import {
-    getlist, getlistByRuleStr
-} from "@/api/doctor/check";
-export default {
-    name: 'Public',
-
+          <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: {
-        row: {
-            type: Object,
-        }
-
+      checkStatus: {
+        type: String,
+        default: "0",
+        validator: (value) => ["0", "1"].includes(value),
+      },
+      proResult: {
+        type: String,
+        default: "",
+      },
+      conclusion: {
+        type: String,
+        default: "",
+      },
+      projectList: {
+        type: Array,
+        default: () => [],
+      },
     },
     data() {
-        return {
-            open: false,
-            // 寮瑰嚭灞傛爣棰�
-            title: "",
-            dataList: [],
-            // 閬僵灞�
-            loading: false,
-            form: {
-                desc: ""
-            },
-            queryParams: {
-                bingzhong: "",
-                bzPinyin: "",
-            },
-            list: [],
-            fList: {}
-        };
+      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,
+      };
     },
     watch: {
-        'row'(val, newVla) {
-            // console.log(val,newVla)
-            this.fList = val
-            // if (this.fList) {
-            //     this.getList()
-            // }
+      checkStatus(newValue) {
+        if (newValue === "1") {
+          this.updateData(this.proResult, this.conclusion);
         }
-    },
-    mounted() {
-
-    },
-
-    created() {
-
-    },
-    methods: {
-        getList(row,date) {
-            if (row.proId) {
-                let fList = row
-                // if (this.fList.proResult == "") {
-                let data = {
-                    proId: fList.proId,
-                    // ruleStr: fList.proResult,
-                }
-                getlist(data).then(res => {
-                    this.dataList = res.rows
-                    this.$nextTick(() => {
-                        this.dataList.forEach(item => {
-                            this.fList.rulesList.forEach(item1 => {
-                                if (item.aid == item1.aid) {
-                                    this.$refs.multipleTable.toggleRowSelection(item, true);
-                                }
-                            })
-                        })
-                    })
-
-                })
-                // }else{
-                //     let data = {
-                //         proId: this.fList.proId,
-                //         bingzhong: this.queryParams.bingzhong,
-                //         ruleStr: this.fList.proResult,
-                //     }
-                //     getlistByRuleStr(data).then(res => {
-                //         this.dataList = res.rows
-                //         this.$nextTick(() => {
-                //             this.dataList.forEach(item => {
-                //                 this.fList.rulesList.forEach(item1 => {
-                //                     if (item.aid == item1.aid) {
-                //                         this.$refs.multipleTable.toggleRowSelection(item, true);
-                //                     }
-                //                 })
-                //             })
-                //         })
-
-                //     })
-                // }
-            }else{
-                let data = {
-                    proId: row,
-                }
-                getlist(data).then(res => {
-                    this.dataList = res.rows
-                    // this.$nextTick(() => {
-                    //     this.dataList.forEach(item => {
-                    //         this.fList.rulesList.forEach(item1 => {
-                    //             if (item.aid == item1.aid) {
-                    //                 this.$refs.multipleTable.toggleRowSelection(item, true);
-                    //             }
-                    //         })
-                    //     })
-                    // })
-
-                })
-            }
-
-
+      },
+      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
+          }
         },
-        handleQuery() {
-            let data = {
-                proId: this.fList.proId,
-                bingzhong: this.queryParams.bingzhong,
-                bzPinyin: this.queryParams.bzPinyin,
-            }
-            getlist(data).then(res => {
-                this.dataList = res.rows
-                this.$nextTick(() => {
-                    this.dataList.forEach(item => {
-                        this.fList.rulesList.forEach(item1 => {
-                            if (item.aid == item1.aid) {
-                                this.$refs.multipleTable.toggleRowSelection(item, true);
-                            }
-                        })
-                    })
-                })
-
-            })
-        },
-        handleSelectionChange(selection) {
-            this.list = []
-            this.list = selection
-            this.form.desc = ""
-            this.list.forEach(element => {
-                if( element.bingzhong){
-this.form.desc += element.bingzhong + ","
-                }else{
-                    this.form.desc += element.ruleStr + ","
-                }
-            });
-        },
-        handleOk() {
-            this.open = false
-            if (this.form.desc) {
-                this.$emit('add', this.form.desc, this.list);
-            }
-            this.form.desc = ""
-        }
-    }
-}
-</script>
+      },
+    },
+    mounted() {},
   
-<style scoped></style>
-  
\ No newline at end of file
+    created() {},
+    methods: {
+      async getList() {
+        try {
+          this.loading = true; // 娣诲姞鍔犺浇鐘舵��
+  
+          const res = await getlist(this.queryParams);
+          this.dataList = res.rows;
+          this.total = res.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);
+        }
+      },
+  
+      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;
+        }
+  
+        // 閲嶇疆琛ㄥ崟鍐呭
+        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();
+        }
+      },
+    },
+    computed: {
+      isCheckMode() {
+        return this.checkStatus === "1";
+      },
+  
+      hasSelectedItems() {
+        return this.list.length > 0;
+      },
+    },
+  };
+  </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

--
Gitblit v1.8.0