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 | 628 +++++++++++++++++++++++++------------------------------- 1 files changed, 279 insertions(+), 349 deletions(-) diff --git a/src/views/followvisit/satisfaction/index.vue b/src/views/followvisit/satisfaction/index.vue index b1cdb60..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,145 +86,244 @@ @selection-change="handleSelectionChange" > <el-table-column type="selection" width="50" align="center" /> - <el-table-column - label="搴忓彿" - align="center" - key="userId" - prop="userId" - /> + <el-table-column label="缂栧彿" align="center" key="id" prop="id" /> <el-table-column - label="浣忛櫌缂栧彿" + label="鐥呭尯" align="center" - sortable - key="userName" - prop="userName" + width="120" + key="hospitaldistrictname" + prop="hospitaldistrictname" + :show-overflow-tooltip="true" + /> + <el-table-column + label="绉戝" + width="120" + align="center" + key="deptname" + prop="deptname" :show-overflow-tooltip="true" /> <el-table-column label="濮撳悕" align="center" + key="patName" + prop="patName" + width="120" + /> + <el-table-column + label="鑱旂郴鐢佃瘽" + align="center" + key="phone" + prop="phone" + width="150" + show-overflow-tooltip + /> + <el-table-column + label="鐪熷疄鎬�(20)" + align="center" + key="authenticity" + prop="authenticity" sortable - key="userName" - prop="userName" - :show-overflow-tooltip="true" - /> - <el-table-column - label="骞撮緞" - align="center" - key="age" - prop="age" width="120" - /> - <el-table-column - label="璋冩煡妯℃澘" - align="center" - key="types" - prop="types" - /> - <el-table-column - label="璋冩煡绫诲瀷" - align="center" - key="types" - prop="types" - /> - <el-table-column - label="璋冩煡鍐呭" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="浣忛櫌鐥呭尯" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="搴婂彿" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="涓绘不鍖荤敓" - align="center" - key="nickName" - prop="nickName" - /> - <el-table-column - label="绠″簥鎶ゅ+" - align="center" - key="nickName" - prop="nickName" - /> - - <el-table-column - label="鎵ц鐘舵��" - align="center" - key="topicnumber" - prop="topicnumber" - width="120" - :show-overflow-tooltip="true" > <template slot-scope="scope"> - <div>鎵ц瀹屾垚/鎵ц澶辫触</div> + <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="璇婃柇" + label="涓�鍛ㄥ唴瀹屾垚(20)" align="center" - key="topicnumberaa" - prop="topicnumberaa" + key="weekFinish" + prop="weekFinish" sortable - width="120" - :show-overflow-tooltip="true" - /> - - <el-table-column - label="鍏ラ櫌鏃堕棿" - sortable - align="center" - prop="createTime" - width="160" + width="150" > <template slot-scope="scope"> - <span>{{ formatTime(scope.row.createTime) }}</span> + <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="浠诲姟璇︽儏" + 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="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-xq" - ><i class="el-icon-s-data"></i>璇︽儏</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-bb" - ><i class="el-icon-s-order"></i>鎶ヨ〃</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-sc" + @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> @@ -290,73 +337,16 @@ @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> <script> import { - listUser, - getUser, - delUser, - addUser, - updateUser, - resetUserPwd, + listsatisfaction, + delsatisfaction, + updatesatisfaction, changeUserStatus, -} from "@/api/system/user"; +} from "@/api/AiCentre/index"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; @@ -425,58 +415,7 @@ value: [], list: [], loading: false, - states: [ - "Alabama", - "Alaska", - "Arizona", - "Arkansas", - "California", - "Colorado", - "Connecticut", - "Delaware", - "Florida", - "Georgia", - "Hawaii", - "Idaho", - "Illinois", - "Indiana", - "Iowa", - "Kansas", - "Kentucky", - "Louisiana", - "Maine", - "Maryland", - "Massachusetts", - "Michigan", - "Minnesota", - "Mississippi", - "Missouri", - "Montana", - "Nebraska", - "Nevada", - "New Hampshire", - "New Jersey", - "New Mexico", - "New York", - "North Carolina", - "North Dakota", - "Ohio", - "Oklahoma", - "Oregon", - "Pennsylvania", - "Rhode Island", - "South Carolina", - "South Dakota", - "Tennessee", - "Texas", - "Utah", - "Vermont", - "Virginia", - "Washington", - "West Virginia", - "Wisconsin", - "Wyoming", - ], + states: [], pickerOptions: { disabledDate(time) { return time.getTime() > Date.now(); @@ -609,13 +548,11 @@ /** 鏌ヨ褰卞儚闅忚鍒楄〃 */ getList() { this.loading = true; - listUser(this.addDateRange(this.topqueryParams, this.dateRange)).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) { @@ -634,21 +571,6 @@ } else { this.options = []; } - }, - // 褰卞儚闅忚鐘舵�佷慨鏀� - handleStatusChange(row) { - let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; - this.$modal - .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵') - .then(function () { - return changeUserStatus(row.userId, row.status); - }) - .then(() => { - this.$modal.msgSuccess(text + "鎴愬姛"); - }) - .catch(function () { - row.status = row.status === "0" ? "1" : "0"; - }); }, // 鍙栨秷鎸夐挳 cancel() { @@ -720,43 +642,46 @@ path: "/Intelligentcenter/satisfaction/particulars", query: { type: this.tasktopic }, }); - // getUser().then((response) => { - // this.postOptions = response.posts; - // this.roleOptions = response.roles; - // this.title = "鏂板褰卞儚闅忚"; - // this.form.password = this.initPassword; - // }); }, /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.reset(); - const userId = row.userId || this.ids; - getUser(userId).then((response) => { - this.form = response.data; - this.postOptions = response.posts; - this.roleOptions = response.roles; - this.$set(this.form, "postIds", response.postIds); - this.$set(this.form, "roleIds", response.roleIds); - this.addalteropen = true; - this.title = "淇敼鐢ㄦ埛"; - this.form.password = ""; - }); - }, - /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */ - handleResetPwd(row) { - this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - closeOnClickModal: false, - inputPattern: /^.{5,20}$/, - inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", - }) - .then(({ value }) => { - resetUserPwd(row.userId, value).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value); + 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), }); - }) - .catch(() => {}); + }); + + // 杩欓噷鍙互娣诲姞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) + ); }, /** 鎻愪氦鎸夐挳 */ @@ -764,14 +689,8 @@ this.$refs["form"].validate((valid) => { if (valid) { if (this.form.userId != undefined) { - updateUser(this.form).then((response) => { + updatesatisfaction(this.form).then((response) => { this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addUser(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); this.open = false; this.getList(); }); @@ -781,11 +700,11 @@ }, /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { - const userIds = row.userId || this.ids; + const userIds = row.id || this.ids; this.$modal - .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + row.patName + '"鐨勬暟鎹」锛�') .then(function () { - return delUser(userIds); + return delsatisfaction(userIds); }) .then(() => { this.getList(); @@ -796,7 +715,7 @@ /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { this.download( - "system/user/export", + "smartor/satisfaction/export", { ...this.topqueryParams, }, @@ -908,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