From af3ff155b9e82a4b21697b8cd0560bb169147573 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期三, 02 七月 2025 14:47:11 +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