当service_type=6时,需要根据传入的入院还是离院病区(病区)去后端查询
| | |
| | | <el-radio-button label="month">按月</el-radio-button> |
| | | <el-radio-button label="year">按年</el-radio-button> |
| | | </el-radio-group> |
| | | <span class="filter-label">满意度类型:</span> |
| | | <el-select |
| | | v-model="satisfactionScope" |
| | | size="small" |
| | | clearable |
| | | placeholder="默认离院" |
| | | class="filter-scope" |
| | | @change="refreshAll" |
| | | > |
| | | <el-option label="离院满意度" value="leave" /> |
| | | <el-option label="在院满意度" value="hospital" /> |
| | | </el-select> |
| | | <span class="filter-label">统计维度:</span> |
| | | <el-radio-group v-model="queryParams.dimension" size="small" @change="onDimensionChange"> |
| | | <el-radio-button label="ward">按病区统计</el-radio-button> |
| | |
| | | dicts: ['dimensionality_type'], |
| | | data() { |
| | | return { |
| | | // 满意度类型:leave=离院满意度(离院科室/病区),hospital=在院满意度(在院科室/病区) |
| | | satisfactionScope: 'leave', |
| | | queryParams: { |
| | | dateRange: [], |
| | | interval: 'month', |
| | |
| | | }, |
| | | defaultWardCodes() { |
| | | return Array.from(new Set(this.wardCodeList.map((w) => w.districtCode))); |
| | | }, |
| | | // 是否按「在院满意度」口径查询(清空下拉时按默认的离院口径) |
| | | isInHospitalSatisfaction() { |
| | | return this.satisfactionScope === 'hospital'; |
| | | }, |
| | | intervalLabel() { |
| | | return { day: '按天', week: '按周', month: '按月', year: '按年' }[this.queryParams.interval] || '按月'; |
| | |
| | | questionContent: this.singleQuestionContent, |
| | | }; |
| | | const sel = this.singleDeptWards || []; |
| | | // 科室/病区条件随「满意度类型」切换:在院 => deptcodes/hospitaldistrictcodes,离院 => leaveldeptcodes/leavehospitaldistrictcodes |
| | | if (this.queryParams.dimension === 'dept') { |
| | | const names = sel.map((s) => String(s).replace(/^dept:/, '')); |
| | | payload.leaveldeptcodes = names.length ? this.mapDeptNames(names) : this.defaultDeptCodes; |
| | | const codes = names.length ? this.mapDeptNames(names) : this.defaultDeptCodes; |
| | | if (this.isInHospitalSatisfaction) payload.deptcodes = codes; |
| | | else payload.leaveldeptcodes = codes; |
| | | } else { |
| | | const names = sel.map((s) => String(s).replace(/^ward:/, '')); |
| | | payload.leavehospitaldistrictcodes = names.length ? this.mapWardNames(names) : this.defaultWardCodes; |
| | | const codes = names.length ? this.mapWardNames(names) : this.defaultWardCodes; |
| | | if (this.isInHospitalSatisfaction) payload.hospitaldistrictcodes = codes; |
| | | else payload.leavehospitaldistrictcodes = codes; |
| | | } |
| | | const res = await sltdMydTotalByScore(payload); |
| | | console.log('[sltdMydTotalByScore 单题] code=', res && res.code, 'data=', JSON.stringify(res && res.data).slice(0, 1500)); |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | .export-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } |
| | | .filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; .filter-label { font-size: 13px; color: #606266; } .filter-date { width: 260px; } } |
| | | .filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; .filter-label { font-size: 13px; color: #606266; } .filter-date { width: 260px; } .filter-scope { width: 140px; } } |
| | | .chart-card { margin-bottom: 0; } |
| | | .chart-box { width: 100%; height: 360px; } |
| | | .chart-wrap { position: relative; width: 100%; } |
| | |
| | | <!-- 顶部筛选:时间范围 + 科室/病区,控制本页所有数据 --> |
| | | <el-card shadow="never" class="overview-card filter-card"> |
| | | <el-form inline class="filter-form"> |
| | | <el-form-item label="满意度类型"> |
| | | <el-select |
| | | v-model="satisfactionScope" |
| | | size="small" |
| | | style="width: 140px" |
| | | clearable |
| | | placeholder="默认离院" |
| | | @change="fetchData" |
| | | > |
| | | <el-option label="离院满意度" value="leave" /> |
| | | <el-option label="在院满意度" value="hospital" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="出院日期"> |
| | | <el-date-picker |
| | | v-model="queryParams.dateRange" |
| | |
| | | name: "DataOverview", |
| | | data() { |
| | | return { |
| | | // 满意度类型:leave=离院满意度(离院科室/病区),hospital=在院满意度(在院科室/病区) |
| | | satisfactionScope: "leave", |
| | | // 顶部全局筛选 |
| | | queryParams: { |
| | | dateRange: [], |
| | | deptCodes: [], // 科室编码集合 => leaveldeptcodes |
| | | wardCodes: [], // 出院病区编码集合 => leavehospitaldistrictcodes(接口必填) |
| | | // 病区编码集合:住院满意度按在院病区(hospitaldistrictcodes),其余按出院病区(leavehospitaldistrictcodes) |
| | | wardCodes: [], |
| | | serviceTypeList: [], // 服务类型多选,提交时用逗号拼接 |
| | | deptOrDistrict: "1", // 科室/病区组合方式,默认 1:离院病区 and 离院科室 |
| | | statMode: "ward", // 统计维度:ward=按病区统计 dept=按科室统计 |
| | |
| | | // 未选病区时的默认查询范围:全部病区编码 |
| | | defaultWardCodes() { |
| | | return Array.from(new Set(this.wardOptions.map((w) => w.value))); |
| | | }, |
| | | // 是否按「在院满意度」口径查询:在院满意度用 deptcodes/hospitaldistrictcodes, |
| | | // 离院满意度(以及清空下拉时的默认口径)用 leaveldeptcodes/leavehospitaldistrictcodes |
| | | isInHospitalSatisfaction() { |
| | | return this.satisfactionScope === "hospital"; |
| | | }, |
| | | // 未选科室时的默认查询范围:全部科室编码 |
| | | defaultDeptCodes() { |
| | |
| | | return; |
| | | } |
| | | |
| | | // 病区 => leavehospitaldistrictcodes,科室 => leaveldeptcodes |
| | | // 科室/病区互斥:按病区只传 leavehospitaldistrictcodes,按科室只传 leaveldeptcodes |
| | | // 科室/病区条件随「满意度类型」切换: |
| | | // 在院满意度 => deptcodes / hospitaldistrictcodes(在院科室、在院病区) |
| | | // 离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes(离院科室、离院病区) |
| | | // 科室/病区互斥:按病区只传病区编码,按科室只传科室编码 |
| | | const wards = this.queryParams.wardCodes || []; |
| | | const depts = this.queryParams.deptCodes || []; |
| | | |
| | |
| | | endFinishTime: range[1], |
| | | }; |
| | | if (this.queryParams.statMode === "dept") { |
| | | payload.leaveldeptcodes = depts.length |
| | | const deptCodes = depts.length |
| | | ? Array.from(new Set(depts)) |
| | | : this.defaultDeptCodes; |
| | | if (this.isInHospitalSatisfaction) { |
| | | payload.deptcodes = deptCodes; |
| | | } else { |
| | | payload.leaveldeptcodes = deptCodes; |
| | | } |
| | | } else { |
| | | payload.leavehospitaldistrictcodes = wards.length |
| | | const wardCodes = wards.length |
| | | ? Array.from(new Set(wards)) |
| | | : this.defaultWardCodes; |
| | | if (this.isInHospitalSatisfaction) { |
| | | payload.hospitaldistrictcodes = wardCodes; |
| | | } else { |
| | | payload.leavehospitaldistrictcodes = wardCodes; |
| | | } |
| | | } |
| | | // 服务类型多选:逗号分隔(接口字段为 serviceType 字符串) |
| | | const serviceTypes = this.queryParams.serviceTypeList || []; |
| | |
| | | endFinishTime: range[1], |
| | | }; |
| | | try { |
| | | // 按科室统计(leaveldeptcodes 优先)与按病区统计(leavehospitaldistrictcodes)各查一次 |
| | | // 按科室统计、按病区统计各查一次,条件随「满意度类型」切换: |
| | | // 在院满意度 => deptcodes / hospitaldistrictcodes;离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes |
| | | const deptParam = this.isInHospitalSatisfaction |
| | | ? { deptcodes: this.defaultDeptCodes } |
| | | : { leaveldeptcodes: this.defaultDeptCodes }; |
| | | const wardParam = this.isInHospitalSatisfaction |
| | | ? { hospitaldistrictcodes: this.defaultWardCodes } |
| | | : { leavehospitaldistrictcodes: this.defaultWardCodes }; |
| | | const [deptRes, wardRes] = await Promise.all([ |
| | | statQuestionOptionByKsOrBq({ ...base, leaveldeptcodes: this.defaultDeptCodes }), |
| | | statQuestionOptionByKsOrBq({ ...base, leavehospitaldistrictcodes: this.defaultWardCodes }), |
| | | statQuestionOptionByKsOrBq({ ...base, ...deptParam }), |
| | | statQuestionOptionByKsOrBq({ ...base, ...wardParam }), |
| | | ]); |
| | | // 排查用:打印接口原始返回,便于核对两级嵌套 Map 结构(确认无误后可删除) |
| | | console.log( |
| | |
| | | label-width="100px" |
| | | class="query-form" |
| | | > |
| | | <el-form-item label="满意度类型" prop="satisfactionScope"> |
| | | <el-select |
| | | v-model="satisfactionScope" |
| | | placeholder="默认离院" |
| | | clearable |
| | | style="width: 150px" |
| | | @change="handleSatisfactionScopeChange" |
| | | > |
| | | <el-option label="离院满意度" value="leave" /> |
| | | <el-option label="在院满意度" value="hospital" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="统计类型" prop="statisticaltype"> |
| | | <el-select |
| | | v-model="queryParams.statisticaltype" |
| | |
| | | @selection-change="handleSelectionChange" |
| | | :row-key="getRowKey" |
| | | > |
| | | <!-- 病区列 --> |
| | | <!-- 病区列:住院满意度统计在院病区,其余统计出院病区 --> |
| | | <el-table-column |
| | | v-if="queryParams.statisticaltype == 1" |
| | | label="出院病区" |
| | | :label="wardColumnLabel" |
| | | align="center" |
| | | sortable |
| | | key="leavehospitaldistrictname" |
| | |
| | | :show-overflow-tooltip="true" |
| | | :sort-method="sortChineseNumber" |
| | | min-width="120" |
| | | /> |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ getWardName(scope.row) || "-" }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!-- 科室列 --> |
| | | <el-table-column |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | // 满意度类型:leave=离院满意度(按出院病区统计),hospital=在院满意度(按在院病区统计) |
| | | satisfactionScope: "leave", |
| | | |
| | | // 查询参数 |
| | | queryParams: { |
| | | statisticaltype: 1, |
| | |
| | | }; |
| | | }, |
| | | |
| | | computed: { |
| | | // 是否按「在院满意度」口径统计:在院患者按在院病区(hospitaldistrictcodes)统计, |
| | | // 离院满意度仍按出院病区(leavehospitaldistrictcodes)统计 |
| | | isInHospitalSatisfaction() { |
| | | return this.satisfactionScope === "hospital"; |
| | | }, |
| | | |
| | | // 病区列标题 |
| | | wardColumnLabel() { |
| | | return this.isInHospitalSatisfaction ? "在院病区" : "出院病区"; |
| | | }, |
| | | }, |
| | | |
| | | created() { |
| | | this.orgname = localStorage.getItem("orgname"); |
| | | |
| | |
| | | // 处理病区/科室选择 |
| | | if (params.statisticaltype == 1) { |
| | | // 病区统计 |
| | | if (params.leavehospitaldistrictcodes.includes("all")) { |
| | | // 如果选择了"全部",则移除"all"值 |
| | | params.leavehospitaldistrictcodes = |
| | | params.leavehospitaldistrictcodes.filter( |
| | | (item) => item !== "all" |
| | | ); |
| | | // 如果需要传所有病区代码,可以从store中获取 |
| | | params.leavehospitaldistrictcodes = ( |
| | | this.$store.getters.belongWards || [] |
| | | ).map((ward) => ward.districtCode); |
| | | let wardCodes = params.leavehospitaldistrictcodes || []; |
| | | if (wardCodes.includes("all")) { |
| | | // 如果选择了"全部",则使用当前用户所属的全部病区 |
| | | wardCodes = (this.$store.getters.belongWards || []).map( |
| | | (ward) => ward.districtCode |
| | | ); |
| | | } |
| | | // 住院满意度针对在院患者,按在院病区(hospitaldistrictcodes)统计; |
| | | // 出院随访等其他服务类型仍按出院病区(leavehospitaldistrictcodes)统计 |
| | | delete params.leavehospitaldistrictcodes; |
| | | if (this.isInHospitalSatisfaction) { |
| | | params.hospitaldistrictcodes = wardCodes; |
| | | } else { |
| | | params.leavehospitaldistrictcodes = wardCodes; |
| | | } |
| | | } else if (params.statisticaltype == 2) { |
| | | // 科室统计 |
| | |
| | | } |
| | | }, |
| | | sortChineseNumber(aRow, bRow) { |
| | | const a = aRow.leavehospitaldistrictname; |
| | | const b = bRow.leavehospitaldistrictname; |
| | | const a = this.getWardName(aRow); |
| | | const b = this.getWardName(bRow); |
| | | |
| | | // 中文数字到阿拉伯数字的映射(扩展到45) |
| | | const chineseNumMap = { |
| | |
| | | return -1; |
| | | }; |
| | | |
| | | const indexA = getIndex(a.leavehospitaldistrictname); |
| | | const indexB = getIndex(b.leavehospitaldistrictname); |
| | | const indexA = getIndex(this.getWardName(a)); |
| | | const indexB = getIndex(this.getWardName(b)); |
| | | |
| | | // 排序逻辑 |
| | | if (indexA === -1 && indexB === -1) { |
| | | return (a.leavehospitaldistrictname || "").localeCompare( |
| | | b.leavehospitaldistrictname || "" |
| | | ); |
| | | return this.getWardName(a).localeCompare(this.getWardName(b)); |
| | | } |
| | | if (indexA === -1) return 1; |
| | | if (indexB === -1) return -1; |
| | |
| | | |
| | | // 处理查询 |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | |
| | | // 切换满意度类型(离院/在院)后重新查询 |
| | | handleSatisfactionScopeChange() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | |
| | | // 获取行key |
| | | getRowKey(row) { |
| | | return row.statisticaltype === 1 |
| | | ? row.leavehospitaldistrictcode |
| | | ? row.hospitaldistrictcode || row.leavehospitaldistrictcode |
| | | : row.deptcode; |
| | | }, |
| | | |
| | | // 病区名称:住院满意度接口返回在院病区字段,其余返回出院病区字段 |
| | | getWardName(row) { |
| | | if (!row) return ""; |
| | | return row.hospitaldistrictname || row.leavehospitaldistrictname || ""; |
| | | }, |
| | | |
| | | // 格式化百分比 |
| | |
| | | } |
| | | |
| | | if (this.queryParams.statisticaltype == 1) { |
| | | this.topicvalue.name = row.leavehospitaldistrictname; |
| | | params.leavehospitaldistrictcodes = [row.leavehospitaldistrictcode]; |
| | | this.topicvalue.name = this.getWardName(row); |
| | | // 住院满意度按在院病区统计,其余按出院病区统计 |
| | | if (this.isInHospitalSatisfaction) { |
| | | delete params.leavehospitaldistrictcodes; |
| | | params.hospitaldistrictcodes = [ |
| | | row.hospitaldistrictcode || row.leavehospitaldistrictcode, |
| | | ]; |
| | | } else { |
| | | params.leavehospitaldistrictcodes = [ |
| | | row.leavehospitaldistrictcode, |
| | | ]; |
| | | } |
| | | } else { |
| | | this.topicvalue.name = row.deptname; |
| | | params.deptcodes = [row.deptcode]; |
| | |
| | | |
| | | // 添加表头 |
| | | const headers = [ |
| | | this.queryParams.statisticaltype == 1 ? "出院病区" : "科室", |
| | | this.queryParams.statisticaltype == 1 ? this.wardColumnLabel : "科室", |
| | | "出院人次", |
| | | "无需随访人次", |
| | | "应随访人次", |
| | |
| | | this.userList.forEach((item) => { |
| | | const dataRow = worksheet.addRow([ |
| | | this.queryParams.statisticaltype == 1 |
| | | ? item.leavehospitaldistrictname |
| | | ? this.getWardName(item) |
| | | : item.deptname, |
| | | item.dischargeCount || 0, |
| | | item.nonFollowUp || 0, |
| | |
| | | label-width="100px" |
| | | class="query-form" |
| | | > |
| | | <el-form-item label="满意度类型" prop="satisfactionScope"> |
| | | <el-select |
| | | v-model="satisfactionScope" |
| | | placeholder="默认在院" |
| | | clearable |
| | | style="width: 140px" |
| | | @change="handleSearch" |
| | | > |
| | | <el-option label="离院满意度" value="leave" /> |
| | | <el-option label="在院满意度" value="hospital" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="统计类型" prop="patientSource"> |
| | | <el-select |
| | | v-model="queryParams.type" |
| | |
| | | dicts: ["dimensionality_type"], |
| | | data() { |
| | | return { |
| | | // 满意度类型:leave=离院满意度(leaveldeptcodes/leavehospitaldistrictcodes), |
| | | // hospital=在院满意度(deptcodes/hospitaldistrictcodes) |
| | | // 默认在院:保持该页原有请求参数不变 |
| | | satisfactionScope: "hospital", |
| | | // 查询参数 |
| | | queryParams: { |
| | | type: 2, |
| | |
| | | const dict = this.dict && this.dict.type && this.dict.type.dimensionality_type; |
| | | return dict ? dict.map((d) => String(d.value)) : []; |
| | | }, |
| | | |
| | | // 是否按「在院满意度」口径查询(本页默认在院,所以清空下拉时仍按在院处理) |
| | | isInHospitalSatisfaction() { |
| | | return this.satisfactionScope !== "leave"; |
| | | }, |
| | | }, |
| | | |
| | | mounted() { |
| | |
| | | async initData() { |
| | | await this.getDeptList(); |
| | | await this.getWardList(); |
| | | // 接口默认按「全部科室 + 全部病区 + 最近7天」查询,这里把实际使用的条件回显到筛选框 |
| | | this.echoQueryParams(); |
| | | this.initChart(); |
| | | await this.loadData(); |
| | | }, |
| | |
| | | }); |
| | | resolve(); |
| | | }); |
| | | }, |
| | | |
| | | // 科室/病区条件: |
| | | // 在院满意度 => deptcodes / hospitaldistrictcodes;离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes |
| | | buildScopeParams() { |
| | | const deptCodes = this.deptCodes; |
| | | const wardCodes = this.hospitalDistrictCodes; |
| | | return this.isInHospitalSatisfaction |
| | | ? { deptcodes: deptCodes, hospitaldistrictcodes: wardCodes } |
| | | : { leaveldeptcodes: deptCodes, leavehospitaldistrictcodes: wardCodes }; |
| | | }, |
| | | |
| | | // 把接口实际使用的查询条件回显到筛选框: |
| | | // 科室/病区未选时接口按「全部」查,时间未选时接口按「最近7天」查,这里把同样的值写回筛选框 |
| | | echoQueryParams() { |
| | | if ( |
| | | !this.queryParams.dateRange || |
| | | this.queryParams.dateRange.length !== 2 |
| | | ) { |
| | | this.queryParams.dateRange = [this.startTime, this.endTime]; |
| | | } |
| | | if (!(this.queryParams.deptCodes || []).length) { |
| | | this.queryParams.deptCodes = this.deptList.map((dept) => dept.value); |
| | | } |
| | | if (!(this.queryParams.wardCodes || []).length) { |
| | | this.queryParams.wardCodes = this.wardList.map((ward) => ward.value); |
| | | } |
| | | }, |
| | | |
| | | // 获取图表标题 |
| | |
| | | type: this.queryParams.type, |
| | | startTime: this.startTime, |
| | | endTime: this.endTime, |
| | | deptcodes: this.deptCodes, // 使用计算属性 |
| | | hospitaldistrictcodes: this.hospitalDistrictCodes, // 使用计算属性 |
| | | ...this.buildScopeParams(), |
| | | templateid: this.templateId, |
| | | }; |
| | | |
| | |
| | | type: this.queryParams.type, |
| | | startTime: this.startTime, |
| | | endTime: this.endTime, |
| | | deptcodes: this.deptCodes, // 使用计算属性 |
| | | hospitaldistrictcodes: this.hospitalDistrictCodes, // 使用计算属性 |
| | | ...this.buildScopeParams(), |
| | | templateid: this.templateId, |
| | | questionType: this.queryParams.type || null, |
| | | serviceTypes: this.defaultServiceTypes, |
| | |
| | | handleReset() { |
| | | this.$refs.queryForm.resetFields(); |
| | | this.queryParams.dateRange = []; |
| | | this.queryParams.deptCodes = []; // 重置为数组 |
| | | this.queryParams.wardCodes = []; // 重置为数组 |
| | | this.queryParams.deptCodes = []; // 重置为数组 |
| | | this.queryParams.wardCodes = []; // 重置为数组 |
| | | // 重置后接口仍按「全部科室/全部病区 + 最近7天」查询,筛选框同步回显,避免框里空空、请求里有值 |
| | | this.echoQueryParams(); |
| | | this.detailQueryParams.pageNum = 1; |
| | | this.dimensionQueryParams.pageNum = 1; |
| | | this.loadData(); |
| | |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="满意度类型" prop="satisfactionScope"> |
| | | <el-select |
| | | v-model="satisfactionScope" |
| | | placeholder="默认离院" |
| | | clearable |
| | | style="width: 150px" |
| | | @change="handleSatisfactionScopeChange" |
| | | > |
| | | <el-option label="离院满意度" value="leave" /> |
| | | <el-option label="在院满意度" value="hospital" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="出院时间"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <!-- 处理状态:保留级联联动(一级大类 → 二级具体状态), |
| | | 面板挂在本组件内(popper-append-to-body=false),避免下拉跑到别处 --> |
| | | <el-form-item label="处理状态" prop="status"> |
| | | <el-cascader |
| | | v-model="serviceStatusValue" |
| | | placeholder="请选择" |
| | | :options="serviceStatusOptions" |
| | | :props="cascaderProps" |
| | | :popper-append-to-body="false" |
| | | style="width: 180px" |
| | | @change="handleServiceStatusChange" |
| | | clearable |
| | | ></el-cascader> |
| | |
| | | label="科室" |
| | | align="center" |
| | | key="leaveldeptname" |
| | | prop="leaveldeptname" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ deptNameOf(scope.row) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="病区" |
| | | align="center" |
| | | key="leavehospitaldistrictname" |
| | | prop="leavehospitaldistrictname" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ wardNameOf(scope.row) }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | |
| | | label: "应随访日期(倒序)", |
| | | }, |
| | | ], |
| | | // 满意度类型:leave=离院满意度(按离院科室/病区查),hospital=在院满意度(按在院科室/病区查) |
| | | satisfactionScope: "leave", |
| | | // 查询参数 |
| | | topqueryParams: { |
| | | pageNum: 1, |
| | |
| | | this.$message.warning("未配置科室/病区相关权限不可查询"); |
| | | return Promise.reject(new Error("无权限查询")); |
| | | } |
| | | getTaskservelist(this.topqueryParams).then((response) => { |
| | | getTaskservelist(this.buildScopePayload(this.topqueryParams)).then((response) => { |
| | | this.userList = response.rows[0].serviceSubtaskList; |
| | | this.total = response.total; |
| | | if (refresh) { |
| | |
| | | this.total = response.total; |
| | | }); |
| | | }, |
| | | |
| | | // 切换满意度类型(离院/在院)后重新查询 |
| | | handleSatisfactionScopeChange() { |
| | | this.topqueryParams.pageNum = 1; |
| | | this.getList(1); |
| | | }, |
| | | |
| | | // 按满意度类型组装科室/病区条件: |
| | | // 离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes; |
| | | // 在院满意度 => deptcodes / hospitaldistrictcodes(在院科室、在院病区) |
| | | buildScopePayload(params) { |
| | | const payload = { ...params }; |
| | | if (this.satisfactionScope === "hospital") { |
| | | payload.deptcodes = params.leaveldeptcodes || []; |
| | | payload.hospitaldistrictcodes = params.leavehospitaldistrictcodes || []; |
| | | delete payload.leaveldeptcodes; |
| | | delete payload.leavehospitaldistrictcodes; |
| | | } |
| | | return payload; |
| | | }, |
| | | |
| | | // 科室名称:在院满意度优先取在院科室,其余取出院科室 |
| | | deptNameOf(row) { |
| | | if (!row) return "-"; |
| | | return ( |
| | | (this.satisfactionScope === "hospital" |
| | | ? row.deptname || row.leaveldeptname |
| | | : row.leaveldeptname || row.deptname) || "-" |
| | | ); |
| | | }, |
| | | |
| | | // 病区名称:在院满意度优先取在院病区,其余取出院病区 |
| | | wardNameOf(row) { |
| | | if (!row) return "-"; |
| | | return ( |
| | | (this.satisfactionScope === "hospital" |
| | | ? row.hospitaldistrictname || row.leavehospitaldistrictname |
| | | : row.leavehospitaldistrictname || row.hospitaldistrictname) || "-" |
| | | ); |
| | | }, |
| | | |
| | | // 服务状态变更处理 |
| | | handleServiceStatusChange(value) { |
| | | // 清空选择 |
| | |
| | | this.download( |
| | | "smartor/serviceSubtask/patItemExport", |
| | | { |
| | | ...this.topqueryParams, |
| | | ...this.buildScopePayload(this.topqueryParams), |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | |
| | | box-shadow: 0 2px 12px rgba(31, 45, 61, 0.05); |
| | | } |
| | | |
| | | /* 级联下拉挂在本组件内时,以所在表单项为定位基准,避免面板跑到页面别处 */ |
| | | ::v-deep .el-form--inline .el-form-item { |
| | | position: relative; |
| | | } |
| | | |
| | | /* 隐藏分割线 */ |
| | | ::v-deep .el-divider { |
| | | display: none; |
| | |
| | | // target: `http://192.168.100.10:8094`,//省立同德 |
| | | // target: `http://192.168.100.10:8095`,//新华 |
| | | // target: `http://192.168.100.10:8098`,//市一 |
| | | // target:`http://localhost:8095`, |
| | | target:`http://localhost:8095`, |
| | | // target:`http://35z1t16164.qicp.vip`, |
| | | // target: `http://192.168.100.172:8095`, |
| | | target: `http://192.168.100.10:8089`,//南华 |
| | | // target: `http://192.168.100.10:8089`,//南华 |
| | | // target: `https://9.208.38.93:8092/`, |
| | | changeOrigin: true, |
| | | pathRewrite: { |