From 880e036a0d85cd542034794c1dac2a4e433c5553 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期四, 03 七月 2025 10:51:04 +0800
Subject: [PATCH] 测试完成

---
 src/views/followvisit/satisfaction/index.vue |  388 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 234 insertions(+), 154 deletions(-)

diff --git a/src/views/followvisit/satisfaction/index.vue b/src/views/followvisit/satisfaction/index.vue
index 0e1ea1f..1de1266 100644
--- a/src/views/followvisit/satisfaction/index.vue
+++ b/src/views/followvisit/satisfaction/index.vue
@@ -11,44 +11,14 @@
         v-show="showSearch"
         label-width="98px"
       >
-        <el-form-item label="浠诲姟鍚嶇О">
-          <el-input v-model="topqueryParams.name"></el-input>
+        <el-form-item label="鐥呭尯鍚嶇О">
+          <el-input placeholder="璇疯緭鍏ユ偅鑰呯梾鍖�" v-model="topqueryParams.hospitaldistrictname"></el-input>
         </el-form-item>
-        <el-form-item label="鍙戣捣浜�">
-          <el-input v-model="topqueryParams.name"></el-input>
+        <el-form-item label="绉戝鍚嶇О">
+          <el-input placeholder="璇疯緭鍏ユ偅鑰呯瀹�" v-model="topqueryParams.deptname"></el-input>
         </el-form-item>
-        <el-form-item label="鍙戣捣鏃堕棿">
-          <el-date-picker
-            v-model="dateRange"
-            style="width: 240px"
-            value-format="yyyy-MM-dd"
-            type="daterange"
-            range-separator="-"
-            start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡"
-          ></el-date-picker>
-        </el-form-item>
-        <el-form-item label="璋冩煡绫诲瀷" prop="status">
-          <el-select v-model="topqueryParams.topic" placeholder="璇烽�夋嫨">
-            <el-option
-              v-for="item in topicoptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="璋冩煡鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.topic" placeholder="璇烽�夋嫨">
-            <el-option
-              v-for="item in topicoptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-            </el-option>
-          </el-select>
+        <el-form-item label="鎮h�呭悕绉�">
+          <el-input placeholder="璇疯緭鍏ユ偅鑰呭鍚�" v-model="topqueryParams.patName"></el-input>
         </el-form-item>
         <el-form-item>
           <el-button
@@ -75,28 +45,6 @@
             >
             </el-option>
           </el-select>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="primary"
-            icon="el-icon-plus"
-            size="medium"
-            :disabled="!tasktopic"
-            @click="handleAdd"
-            >鏂板</el-button
-          >
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="success"
-            plain
-            icon="el-icon-edit"
-            size="medium"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['system:user:edit']"
-            >淇敼</el-button
-          >
         </el-col>
         <el-col :span="1.5">
           <el-button
@@ -138,26 +86,20 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="50" align="center" />
-        <el-table-column
-          label="搴忓彿"
-          align="center"
-          key="id"
-          prop="id"
-        />
+        <el-table-column label="缂栧彿" align="center" key="id" prop="id" />
 
         <el-table-column
           label="鐥呭尯"
           align="center"
-          sortable
+          width="120"
           key="hospitaldistrictname"
           prop="hospitaldistrictname"
           :show-overflow-tooltip="true"
         />
         <el-table-column
           label="绉戝"
-          width="100"
+          width="120"
           align="center"
-          sortable
           key="deptname"
           prop="deptname"
           :show-overflow-tooltip="true"
@@ -165,8 +107,8 @@
         <el-table-column
           label="濮撳悕"
           align="center"
-          key="age"
-          prop="age"
+          key="patName"
+          prop="patName"
           width="120"
         />
         <el-table-column
@@ -174,66 +116,217 @@
           align="center"
           key="phone"
           prop="phone"
+          width="150"
+          show-overflow-tooltip
         />
         <el-table-column
           label="鐪熷疄鎬�(20)"
           align="center"
           key="authenticity"
           prop="authenticity"
-        />
+          sortable
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.authenticity"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.authenticity }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="涓�鍛ㄥ唴瀹屾垚(20)"
           align="center"
           key="weekFinish"
           prop="weekFinish"
-        />
+          sortable
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.weekFinish"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.weekFinish }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="瑙勮寖鎬�(10)"
           align="center"
           key="standard"
           prop="standard"
-        />
+          width="120"
+          sortable
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.standard"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.standard }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="鍙婃椂鎬�(10)"
           align="center"
           key="timeliness"
           prop="timeliness"
-        />
+          sortable
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.timeliness"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.timeliness }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="瀹f暀鎯呭喌(10)"
           align="center"
           key="library"
           prop="library"
-        />
+          sortable
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.library"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.library }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="鐜婊℃剰搴�(10)"
           align="center"
           key="environment"
           prop="environment"
-        />
+          sortable
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.environment"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.environment }}</span>
+          </template>
+        </el-table-column>
 
         <el-table-column
           label="鍖荤敓婊℃剰搴�(10)"
           align="center"
           key="doctorSatisfaction"
           prop="doctorSatisfaction"
-
-        />
+          width="150"
+          sortable
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.doctorSatisfaction"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.doctorSatisfaction }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="鎶ゅ+婊℃剰搴�(10)"
           align="center"
           key="nurseSatisfaction"
           prop="nurseSatisfaction"
+          width="150"
           sortable
-
-        />
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-if="scope.row.editing"
+              v-model="scope.row.nurseSatisfaction"
+              :min="0"
+              :max="20"
+              size="small"
+              controls-position="right"
+            />
+            <span v-else>{{ scope.row.nurseSatisfaction }}</span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="鎬诲垎"
+          fixed="right"
           align="center"
           key="total"
           prop="total"
           sortable
-        />
+        >
+        </el-table-column>
+        <el-table-column
+          label="鎿嶄綔"
+          align="center"
+          fixed="right"
+          width="200"
+          class-name="small-padding fixed-width"
+        >
+          <template slot-scope="scope">
+            <el-button
+              v-if="!scope.row.editing"
+              size="medium"
+              type="text"
+              @click="handleDelete(scope.row)"
+              ><span class="button-zx"
+                ><i class="el-icon-delete"></i>鍒犻櫎</span
+              ></el-button
+            >
+            <el-button
+              size="medium"
+              type="text"
+              @click="toggleEdit(scope.row, scope.$index)"
+            >
+              <span class="button-textxga">
+                <i
+                  :class="scope.row.editing ? 'el-icon-check' : 'el-icon-edit'"
+                ></i>
+                {{ scope.row.editing ? "淇濆瓨" : "缂栬緫" }}
+              </span>
+            </el-button>
+            <el-button
+              v-if="scope.row.editing"
+              size="medium"
+              type="text"
+              @click="handleCancel(scope.row, scope.$index)"
+              >鍙栨秷</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
 
       <pagination
@@ -244,60 +337,6 @@
         @pagination="getList"
       />
     </el-row>
-    <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
-    <el-dialog
-      :title="title"
-      :visible.sync="addalteropen"
-      width="700px"
-      append-to-body
-    >
-      <el-form ref="form" :model="form" label-width="100px">
-        <el-row :gutter="20">
-          <el-col :span="12"
-            ><el-form-item label="浠诲姟鍚嶇О">
-              <el-input v-model="form.name"></el-input> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24"
-            ><el-form-item label="鎵�灞炵瀹�">
-              <el-select v-model="form.region" placeholder="璇烽�夋嫨绉戝">
-                <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                <el-option label="鍖哄煙浜�" value="beijing"></el-option>
-              </el-select> </el-form-item></el-col
-        ></el-row>
-        <el-row :gutter="20">
-          <el-col :span="24"
-            ><el-form-item label="闅忚绫诲瀷">
-              <el-select v-model="form.region" placeholder="璇烽�夋嫨闅忚绫诲瀷">
-                <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                <el-option label="鍖哄煙浜�" value="beijing"></el-option>
-              </el-select> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="鏈嶅姟妯″潡">
-              <el-select v-model="form.region" placeholder="璇烽�夋嫨妯″潡">
-                <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                <el-option label="鍖哄煙浜�" value="beijing"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="褰卞儚闅忚瑕佹眰">
-              <el-input type="textarea" v-model="form.desc"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">鎻� 浜�</el-button>
-        <el-button @click="cancel">杩� 鍥�</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
@@ -376,8 +415,7 @@
       value: [],
       list: [],
       loading: false,
-      states: [
-      ],
+      states: [],
       pickerOptions: {
         disabledDate(time) {
           return time.getTime() > Date.now();
@@ -510,13 +548,11 @@
     /** 鏌ヨ褰卞儚闅忚鍒楄〃 */
     getList() {
       this.loading = true;
-      listsatisfaction(this.topqueryParams).then(
-        (response) => {
-          this.userList = response.rows;
-          this.total = response.total;
-          this.loading = false;
-        }
-      );
+      listsatisfaction(this.topqueryParams).then((response) => {
+        this.userList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
     },
     // 鏌ョ湅褰卞儚闅忚璇︽儏
     Referencequestion(row) {
@@ -606,13 +642,46 @@
         path: "/Intelligentcenter/satisfaction/particulars",
         query: { type: this.tasktopic },
       });
-
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
-    handleUpdate(row) {
-      this.reset();
-      const userId = row.userId || this.ids;
+    toggleEdit(row, index) {
+      if (row.editing) {
+        // 淇濆瓨閫昏緫
+        updatesatisfaction(row).then((response) => {
+          this.$modal.msgSuccess("淇敼鎴愬姛");
+          this.$set(this.userList, index, {
+            ...row,
+            editing: false,
+            // 璁$畻鎬诲垎
+            total: this.calculateTotal(row),
+          });
+        });
 
+        // 杩欓噷鍙互娣诲姞API璋冪敤淇濆瓨鏁版嵁
+      } else {
+        // 杩涘叆缂栬緫妯″紡
+        this.$set(this.userList, index, {
+          ...row,
+          editing: true,
+          // 淇濆瓨鍘熷鏁版嵁鐢ㄤ簬鍙兘鐨勫彇娑堟搷浣�
+          originalData: { ...row },
+        });
+      }
+    },
+    handleCancel(row, index) {
+      this.$set(this.userList, index, row.originalData);
+    },
+    calculateTotal(row) {
+      return (
+        (row.authenticity || 0) +
+        (row.weekFinish || 0) +
+        (row.standard || 0) +
+        (row.timeliness || 0) +
+        (row.library || 0) +
+        (row.environment || 0) +
+        (row.doctorSatisfaction || 0) +
+        (row.nurseSatisfaction || 0)
+      );
     },
 
     /** 鎻愪氦鎸夐挳 */
@@ -631,9 +700,9 @@
     },
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
-      const userIds = row.userId || this.ids;
+      const userIds = row.id || this.ids;
       this.$modal
-        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + row.patName + '"鐨勬暟鎹」锛�')
         .then(function () {
           return delsatisfaction(userIds);
         })
@@ -646,7 +715,7 @@
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download(
-        "system/user/export",
+        "smartor/satisfaction/export",
         {
           ...this.topqueryParams,
         },
@@ -758,11 +827,22 @@
   font-weight: 500;
   color: #dd302a;
 }
+// .button-zx {
+//   background: #e94f4f;
+//   padding: 5px;
+//   border-radius: 1px;
+//   color: #ffffff;
+// }
+.el-table .cell .el-input-number {
+  width: 100%;
+}
+
+/* 鎸夐挳鏍峰紡 */
 .button-zx {
-  background: #4fabe9;
-  padding: 5px;
-  border-radius: 1px;
-  color: #ffffff;
+  color: #f56c6c;
+}
+.button-textxga {
+  color: #409eff;
 }
 
 ::v-deep.el-radio-group {

--
Gitblit v1.9.3