WXL (wul)
4 天以前 8dfc9189443d7baf2e73d99a73e1b20eefba366e
src/views/sfstatistics/percentage/satisfaction.vue
@@ -61,7 +61,7 @@
                </el-select>
              </el-form-item>
              <el-form-item label="统计题目" prop="userName">
              <el-form-item label="服务类型" prop="userName">
                <el-select
                  v-model="queryParams.serviceType"
                  multiple
@@ -131,8 +131,6 @@
              :data="userList"
              :border="true"
              @selection-change="handleSelectionChange"
              @row-click="handleRowClick"
              @expand-change="handleRowClick"
              :row-key="getRowKey"
              :expand-row-keys="expands"
            >
@@ -207,59 +205,56 @@
              <el-table-column
                label="满意度题目总量"
                align="center"
                key="manual"
                prop="manual"
                key="joyAllCount"
                prop="joyAllCount"
              >
              </el-table-column>
              <el-table-column
                label="满意度填报量"
                align="center"
                key="sms"
                prop="sms"
                key="joyCount"
                prop="joyCount"
              >
              </el-table-column>
              <el-table-column
                label="完成比率"
                align="center"
                  key="rate"
                prop="rate"
                key="joyTotal"
                prop="joyTotal"
              >
                <template slot-scope="scope">
                  <span class="button-zx"
                    >{{ (Number(scope.row.joyTotal) * 100).toFixed(2) }}%</span
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                align="center"
                fixed="right"
                width="300"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="Seedetails(scope.row)"
                    @click="getinfo(scope.row)"
                    ><span class="button-zx"
                      >{{ (Number(scope.row.rate) * 100).toFixed(2) }}%</span
                      ><i class="el-icon-s-order"></i>查看详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
          label="操作"
          align="center"
          fixed="right"
          width="300"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
             <el-button size="medium" type="text" @click="Seedetails(scope.row)"
              ><span class="button-zx"
                ><i class="el-icon-s-order"></i>查看详情</span
              ></el-button
            >
          </template>
        </el-table-column>
            </el-table>
            <!-- <pagination
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            /> -->
            />
          </el-col>
        </el-row>
      </div>
@@ -512,6 +507,45 @@
        </div>
      </div>
    </el-dialog>
    <!-- 单科室统计详情 -->
    <el-dialog :visible.sync="topicVisible" width="45%">
      <div class="topicdia">
        <div class="top-text">
          {{ topicvalue.name }}<span>满意度指标详情</span>
        </div>
        <div style="overflow-x: hidden; overflow-y: auto; max-height: 65vh">
          <div
            class="ttaabbcc"
            v-for="(item, index) in topiclist"
            :key="item.name"
          >
            <div class="describe">
              第{{ index }}题: {{ item.scriptContent }}?<span
                >[{{ item.scriptType == 1 ? "单选题" : "多选题" }}]</span
              >
            </div>
            <div>
              <el-table :data="item.details" style="width: 100%">
                <el-table-column prop="optionText" label="问题选项">
                </el-table-column>
                <el-table-column prop="completedQuantity" label="选择人数">
                </el-table-column>
                <el-table-column prop="chosenPercentage" label="比例">
                   <template slot-scope="scope">
                  <span class="button-zx"
                    >{{ (Number(scope.row.chosenPercentage) * 100).toFixed(2) }}%</span
                  >
                </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="topicVisible = false">关 闭</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -523,7 +557,11 @@
  changetagcategory,
} from "@/api/system/label";
import store from "@/store";
import { getSfStatistics, selectTimelyRate } from "@/api/system/user";
import {
  getSfStatisticsJoy,
  getSfStatisticsJoyInfo,
  selectTimelyRate,
} from "@/api/system/user";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -595,6 +633,40 @@
        pn: 1,
        ps: 10,
      },
      topiclist: [
        {
          name: "您的身体康复情况如何",
          number: 1,
          type: 1,
        },
        {
          name: "您的饮食情况如何",
          number: 2,
          type: 2,
        },
        {
          name: "您的恢复情况如何",
          number: 3,
          type: 1,
        },
      ],
      tableData: [
        {
          date: "好",
          name: 12,
          address: "50%",
        },
        {
          date: "一般",
          name: 2,
          address: "6.2%",
        },
        {
          date: "差",
          name: 0,
          address: "0%",
        },
      ],
      amendtag: false, //是否修改类别
      lstamendtag: false, //是否修改标签
      scavisible: false, //删除弹框
@@ -635,6 +707,11 @@
      dialogFormVisible: false, //添加、修改类别弹框
      lstamendtagVisible: false, //添加、修改标签弹框
      goQRCodeVisible: false, //二维码弹框
      topicVisible: false, //控制单题弹框
      topicvalue: {
        name: "骨科随访模板",
        number: 222,
      },
      sidecolumnval: "", //类别搜索
      propss: { multiple: true },
      SeedetailsVisible: false,
@@ -684,6 +761,7 @@
    getList() {
      // 处理查询参数
      const params = {
        configKey: "joyCount",
        ...this.queryParams,
        // 如果选择了"全部",则传所有病区/科室代码
        leavehospitaldistrictcodes:
@@ -698,9 +776,9 @@
      // 移除可能存在的"all"值
      delete params.leavehospitaldistrictcodes.all;
      delete params.deptcodes.all;
      getSfStatistics(params).then((response) => {
      getSfStatisticsJoy(params).then((response) => {
        console.log(response);
        // this.total = response.total;
        this.total = response.total;
        this.userList = response.data;
      });
    },
@@ -708,35 +786,6 @@
      return row.statisticaltype === 1
        ? row.leavehospitaldistrictcode
        : row.deptcode;
    },
    // 处理行点击展开
    handleRowClick(row) {
      console.log(row, "row");
      // 如果已经展开则收起
      if (this.expands.includes(this.getRowKey(row))) {
        this.expands = [];
        return;
      }
      // 处理查询参数
      const params = {
        ...this.queryParams,
        // 如果选择了"全部",则传所有病区/科室代码
        leavehospitaldistrictcodes: [row.leavehospitaldistrictcode],
        drcode: "1",
      };
      // 如果该行还没有加载医生数据,则加载
      if (!row.doctorStats) {
        this.loading = true;
        getSfStatistics(params).then((res) => {
          this.$set(row, "doctorStats", res.data);
          this.expands = [this.getRowKey(row)];
          this.loading = false;
        });
      } else {
        this.expands = [this.getRowKey(row)];
      }
    },
    /** 修改标签 */
    handleUpdate(row) {
@@ -844,6 +893,32 @@
          },
        });
      }, 300);
    },
    // 调起详情
    getinfo(row) {
      this.topicVisible = true;
      // 处理查询参数
      const params = {
        configKey: "joyCount",
        ...this.queryParams,
      };
      if (this.queryParams.statisticaltype == 1) {
        this.topicvalue.name = row.leavehospitaldistrictname;
        params.leavehospitaldistrictcodes = [row.leavehospitaldistrictcode];
      } else {
        this.topicvalue.name = row.deptname;
        params.deptcodes = [row.deptcode];
      }
      // 移除可能存在的"all"值
      delete params.leavehospitaldistrictcodes.all;
      delete params.deptcodes.all;
      getSfStatisticsJoyInfo(params).then((response) => {
        console.log(response);
        this.topiclist = response.data;
      });
    },
    // 添加/修改标签
    Maintenancetag() {
@@ -1385,6 +1460,75 @@
    height: 400px;
  }
}
.topicdia {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  color: #333; /* 主文字色 */
}
/* 头部标题样式 */
.top-text {
  font-size: 18px;
  font-weight: 600;
  padding-bottom: 16px;
  margin-bottom: 20px;
  border-bottom: 1px solid #e8e8e8; /* 纤细的分隔线 */
  color: #1f2d3d; /* 深色标题 */
}
.top-text span {
  font-size: 14px;
  font-weight: normal;
  color: #666; /* 副标题颜色稍浅 */
  margin-left: 10px;
}
/* 题目容器样式 */
.ttaabbcc {
  background: #fafafa; /* 非常浅的灰色背景 */
  border-radius: 6px;
  padding: 16px;
  margin-bottom: 20px;
  border-left: 4px solid #4794c5; /* 左侧装饰色条,增加层次感 */
}
/* 题目描述样式 */
.describe {
  font-size: 15px;
  line-height: 1.6;
  margin-bottom: 12px;
  color: #1f2d3d;
}
.describe span {
  font-size: 13px;
  color: #999; /* 题型提示信息颜色更浅 */
  font-style: italic;
  margin-left: 8px;
}
/* 表格整体样式调整 */
.ttaabbcc .el-table {
  border-radius: 4px;
  overflow: hidden;
  font-size: 14px;
}
/* 表头样式 */
.ttaabbcc .el-table th {
  background-color: #f1f5f9; /* 浅蓝色表头背景 */
  color: #333;
  font-weight: 600;
}
/* 单元格样式 */
.ttaabbcc .el-table td {
  border-bottom: 1px solid #f0f0f0; /* 纤细的行分隔线 */
  padding: 12px 0;
}
/* 比例数据样式 */
.button-zx {
  color: #4794c5; /* 使用与主题呼应的蓝色 */
  font-weight: 500;
}
::v-deep.el-tabs--left,
.el-tabs--right {
  overflow: hidden;