WXL
2024-08-09 fe7f65e63714807890ab103fbc84cf5f634ae8d8
测试完成
已修改12个文件
794 ■■■■■ 文件已修改
src/api/patient/homepage.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/ruoyi.js 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 131 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/follow/index.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/PatientChart.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/subsequent/index.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/patient/homepage.js
@@ -136,3 +136,41 @@
    method: 'get',
  })
};
// 患者过滤列表
export function listfiltration(data) {
  return request({
    url: '/smartor/filterlist/list',
    method: 'get',
    params:data
  })
};
// 删除患者过滤
export function delfiltration(userId) {
  return request({
    url: '/smartor/filterlist/remove/'+userId,
    method: 'get',
  })
};
// 修改过滤患者
export function editfiltration(data) {
  return request({
    url: '/smartor/filterlist/edit',
    method: 'post',
    data:data
  })
};
// 修改过滤患者
export function addfiltration(data) {
  return request({
    url: '/smartor/filterlist/add',
    method: 'post',
    data:data
  })
};
// 查询过滤患者详情
export function infofiltration(userId) {
  return request({
    url: '/smartor/filterlist/getInfo/'+userId,
    method: 'get',
  })
};
src/components/Regular/index.vue
@@ -1,7 +1,7 @@
<template>
  <div>
    <div class="topicxq" v-for="item in TargetoptionList">
      <el-form :model="ruleForm" :rules="rules">
      <el-form  :rules="rules">
        <el-row :gutter="10">
          <el-col :span="12"
            ><el-form-item prop="targetvalue" label="选项名称">
src/store/modules/permission.js
@@ -46,6 +46,8 @@
          commit('SET_DEFAULT_ROUTES', sidebarRoutes)
          commit('SET_TOPBAR_ROUTES', sidebarRoutes)
          resolve(rewriteRoutes)
          console.log(res.data,'路由数据');
        })
      })
    }
src/utils/ruoyi.js
@@ -1,30 +1,31 @@
/**
 * 通用js方法封装处理
 * Copyright (c) 2019 ruoyi
 */
import dayjs from 'dayjs';
import dayjs from "dayjs";
// 日期格式化
export function parseTime(time, pattern) {
  if (arguments.length === 0 || !time) {
    return null
    return null;
  }
  const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
  let date;
  if (typeof time === "object") {
    date = time;
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    } else if (typeof time === 'string') {
      time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
    if (typeof time === "string" && /^[0-9]+$/.test(time)) {
      time = parseInt(time);
    } else if (typeof time === "string") {
      time = time
        .replace(new RegExp(/-/gm), "/")
        .replace("T", " ")
        .replace(new RegExp(/\.[\d]{3}/gm), "");
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    if (typeof time === "number" && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time)
    date = new Date(time);
  }
  const formatObj = {
    y: date.getFullYear(),
@@ -33,23 +34,29 @@
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
    a: date.getDay(),
  };
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    let value = formatObj[key];
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    if (key === "a") {
      return ["日", "一", "二", "三", "四", "五", "六"][value];
    }
    return value || 0
  })
  return time_str
    if (result.length > 0 && value < 10) {
      value = "0" + value;
    }
    return value || 0;
  });
  return time_str;
}
// 过滤器
export function formatTime(val){
    return dayjs(val).format('YYYY-MM-DD')
export function formatTime(val) {
  if (val) {
    return dayjs(val).format("YYYY-MM-DD");
  } else {
    return "";
  }
}
// 表单重置
export function resetForm(refName) {
@@ -61,14 +68,19 @@
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
  let search = params;
  search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
  search.params =
    typeof search.params === "object" &&
    search.params !== null &&
    !Array.isArray(search.params)
      ? search.params
      : {};
  dateRange = Array.isArray(dateRange) ? dateRange : [];
  if (typeof (propName) === 'undefined') {
    search.params['beginTime'] = dateRange[0];
    search.params['endTime'] = dateRange[1];
  if (typeof propName === "undefined") {
    search.params["beginTime"] = dateRange[0];
    search.params["endTime"] = dateRange[1];
  } else {
    search.params['begin' + propName] = dateRange[0];
    search.params['end' + propName] = dateRange[1];
    search.params["begin" + propName] = dateRange[0];
    search.params["end" + propName] = dateRange[1];
  }
  return search;
}
@@ -80,20 +92,20 @@
  }
  var actions = [];
  Object.keys(datas).some((key) => {
    if (datas[key].value == ('' + value)) {
    if (datas[key].value == "" + value) {
      actions.push(datas[key].label);
      return true;
    }
  })
  });
  if (actions.length === 0) {
    actions.push(value);
  }
  return actions.join('');
  return actions.join("");
}
// 回显数据字典(字符串、数组)
export function selectDictLabels(datas, value, separator) {
  if (value === undefined || value.length ===0) {
  if (value === undefined || value.length === 0) {
    return "";
  }
  if (Array.isArray(value)) {
@@ -105,30 +117,32 @@
  Object.keys(value.split(currentSeparator)).some((val) => {
    var match = false;
    Object.keys(datas).some((key) => {
      if (datas[key].value == ('' + temp[val])) {
      if (datas[key].value == "" + temp[val]) {
        actions.push(datas[key].label + currentSeparator);
        match = true;
      }
    })
    });
    if (!match) {
      actions.push(temp[val] + currentSeparator);
    }
  })
  return actions.join('').substring(0, actions.join('').length - 1);
  });
  return actions.join("").substring(0, actions.join("").length - 1);
}
// 字符串格式化(%s )
export function sprintf(str) {
  var args = arguments, flag = true, i = 1;
  var args = arguments,
    flag = true,
    i = 1;
  str = str.replace(/%s/g, function () {
    var arg = args[i++];
    if (typeof arg === 'undefined') {
    if (typeof arg === "undefined") {
      flag = false;
      return '';
      return "";
    }
    return arg;
  });
  return flag ? str : '';
  return flag ? str : "";
}
// 转换字符串,undefined,null等转化为""
@@ -153,7 +167,7 @@
    }
  }
  return source;
};
}
/**
 * 构造树型结构数据
@@ -164,9 +178,9 @@
 */
export function handleTree(data, id, parentId, children) {
  let config = {
    id: id || 'id',
    parentId: parentId || 'parentId',
    childrenList: children || 'children'
    id: id || "id",
    parentId: parentId || "parentId",
    childrenList: children || "children",
  };
  var childrenListMap = {};
@@ -207,19 +221,23 @@
}
/**
* 参数处理
* @param {*} params  参数
*/
 * 参数处理
 * @param {*} params  参数
 */
export function tansParams(params) {
  let result = ''
  let result = "";
  for (const propName of Object.keys(params)) {
    const value = params[propName];
    var part = encodeURIComponent(propName) + "=";
    if (value !== null && value !== "" && typeof (value) !== "undefined") {
      if (typeof value === 'object') {
    if (value !== null && value !== "" && typeof value !== "undefined") {
      if (typeof value === "object") {
        for (const key of Object.keys(value)) {
          if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
            let params = propName + '[' + key + ']';
          if (
            value[key] !== null &&
            value[key] !== "" &&
            typeof value[key] !== "undefined"
          ) {
            let params = propName + "[" + key + "]";
            var subPart = encodeURIComponent(params) + "=";
            result += subPart + encodeURIComponent(value[key]) + "&";
          }
@@ -229,7 +247,7 @@
      }
    }
  }
  return result
  return result;
}
// 验证是否为blob格式
src/views/followvisit/discharge/index.vue
@@ -300,33 +300,49 @@
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              size="medium"
              type="text"
              @click="followupvisit(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-bb"
                ><i class="el-icon-s-promotion"></i>重新随访</span
              ></el-button
            <el-tooltip
              class="item"
              effect="dark"
              content="重新随访"
              placement="top"
            >
            <el-button
              size="medium"
              type="text"
              @click="handlestop(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-sc"
                ><i class="el-icon-delete"></i>停止</span
              ></el-button
              <el-button
                size="medium"
                type="text"
                @click="followupvisit(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-bb"
                  ><i class="el-icon-s-promotion"></i></span
              ></el-button>
            </el-tooltip>
            <el-tooltip
              class="item"
              effect="dark"
              content="停止"
              placement="top"
            >
            <el-button
              size="medium"
              type="text"
              @click="Seedetails(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-zx"
                ><i class="el-icon-s-order"></i>查看详情</span
              ></el-button
              <el-button
                size="medium"
                type="text"
                @click="handlestop(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-sc"><i class="el-icon-delete"></i></span
              ></el-button>
            </el-tooltip>
            <el-tooltip
              class="item"
              effect="dark"
              content="查看任务详情"
              placement="top"
            >
              <el-button
                size="medium"
                type="text"
                @click="Seedetails(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-zx"><i class="el-icon-s-order"></i></span
              ></el-button>
            </el-tooltip>
          </template>
        </el-table-column>
      </el-table>
src/views/followvisit/tasklist/index.vue
@@ -205,18 +205,10 @@
                ><i class="el-icon-s-promotion"></i>任务发起</span
              ></el-button
            >
            <el-button
              v-if="scope.row.sendState == 1 || scope.row.sendState == 3"
              size="medium"
              type="text"
              @click="immediateExecution(scope.row)"
              ><span class="button-lj"
                ><i class="el-icon-s-promotion"></i>立即执行</span
              ></el-button
            >
            <el-button size="medium" type="text" @click="newAdd(scope.row)"
              ><span class="button-xj"
                ><i class="el-icon-circle-plus-outline"></i>依照新增</span
                ><i class="el-icon-circle-plus-outline"></i>任务终止</span
              ></el-button
            >
            <el-button
@@ -271,49 +263,59 @@
      width="50%"
      :before-close="handleClose"
    >
      <div style="font-size: 20px; color: red; margin-bottom: 20px">
        请确认任务"{{ taskform.taskName }}"的执行时间
      </div>
      <div
        style="font-size: 18px; margin-bottom: 20px"
        v-if="taskform.showDate"
      >
        执行日期:<span
          style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
          >{{ taskform.showDate[0] }} 至 {{ taskform.showDate[1] }}</span
        >
      </div>
      <div
        style="font-size: 18px; margin-bottom: 20px"
        v-if="taskform.showTimeMorn[0]"
      >
        第一时间段:<span
          style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
          >{{ taskform.showTimeMorn[0] }} 至
          {{ taskform.showTimeMorn[1] }}</span
        >
      </div>
      <div
        style="font-size: 18px; margin-bottom: 20px"
        v-if="taskform.showTimeNight[0]"
      >
        第二时间段:<span
          style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
          >{{ taskform.showTimeNight[0] }} 至
          {{ taskform.showTimeNight[1] }}</span
        >
      </div>
      <div
        style="font-size: 18px; margin-bottom: 20px"
        v-if="taskform.showTimeNoon[0]"
      >
        第三时间段:<span
          style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
          >{{ taskform.showTimeNoon[0] }} 至
          {{ taskform.showTimeNoon[1] }}</span
        >
      </div>
      <div style="text-align: right">
      <el-tabs type="border-card" v-model="activname">
        <el-tab-pane>
          <span slot="label"><i class="el-icon-date"></i> 正常发起</span>
          <div style="font-size: 20px; color: red; margin-bottom: 20px">
            请确认任务"{{ taskform.taskName }}"的执行时间
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showDate"
          >
            执行日期:<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showDate[0] }} 至 {{ taskform.showDate[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeMorn[0]"
          >
            第一时间段:<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeMorn[0] }} 至
              {{ taskform.showTimeMorn[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeNight[0]"
          >
            第二时间段:<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeNight[0] }} 至
              {{ taskform.showTimeNight[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeNoon[0]"
          >
            第三时间段:<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeNoon[0] }} 至
              {{ taskform.showTimeNoon[1] }}</span
            >
          </div>
        </el-tab-pane>
        <el-tab-pane label="立即执行">
          <div style="font-size: 20px; color: red; margin-bottom: 20px">
            此操作将立即发起并执行任务:{{ taskform.taskName }},请谨慎操作!
          </div>
        </el-tab-pane>
      </el-tabs>
      <div style="text-align: right; margin: 20px 0">
        <el-button style="margin-right: 20px" @click="taskformVisible = false"
          >取 消</el-button
        >
@@ -436,6 +438,7 @@
        },
      ],
      tasktopic: "2", //新增类型
      activname: "",
      value: [],
      list: [],
      loading: false,
@@ -841,15 +844,19 @@
    },
    // 确认发起
    confirmSponsor(row) {
      this.TaskOperation.taskId = row.taskid;
      this.TaskOperation.sendState = 2;
      TaskTemplateSendExecution(this.TaskOperation).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("任务已成功加入执行队列");
          this.taskformVisible = false;
          this.getList();
        }
      });
      if (this.activname == 0) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.sendState = 2;
        TaskTemplateSendExecution(this.TaskOperation).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("任务已成功加入执行队列");
            this.taskformVisible = false;
            this.getList();
          }
        });
      } else if (this.activname == 1) {
        this.immediateExecution(row);
      }
    },
    // 立即执行
src/views/knowledge/questionbank/particulars/index.vue
@@ -174,6 +174,44 @@
                placeholder="请输入题目内容"
              ></el-input>
            </el-form-item>
            <el-form-item
              label=""
              prop="scriptContent"
              v-if="topicobj.scriptType == 3"
            >
              <div style="display: flex; margin-bottom: 10px">
                <div class="tsgnames" @click="tsgnametos">插入填空</div>
              </div>
            </el-form-item>
            <el-row>
              <el-col :span="20">
                <el-form-item label="收集信息" v-if="topicobj.scriptType == 3">
                  <el-card class="box-card" style="width: 200%">
                    <div
                      v-for="item in topicobj.svyLibScriptOptions"
                      style="margin-bottom: 10px"
                    >
                      <el-input
                        type="text"
                        placeholder="填入内容信息"
                        v-model="item.aaa"
                      >
                        <el-button
                          slot="append"
                          @click="deletexuanx(item)"
                          type="danger"
                          icon="el-icon-delete"
                          circle
                        ></el-button>
                        <span slot="prepend">{{
                          "(" + item.orderno + ")"
                        }}</span>
                      </el-input>
                    </div>
                  </el-card>
                </el-form-item>
              </el-col>
            </el-row>
            <el-form-item label="题目说明">
              <el-input
                style="width: 40vw"
@@ -705,6 +743,7 @@
        this.dynamicTags = this.topicobj.svyLibScriptTagList.map(
          this.processElement
        );
        this.scriptTypels = this.topicobj.scriptType;
        this.variablelist = JSON.parse(this.topicobj.otherdata)
          ? JSON.parse(this.topicobj.otherdata)
          : this.variablelist;
@@ -837,7 +876,12 @@
    },
    // 判断指标
    changefn(item) {
      if (this.topicobj.targetname) {
      console.log(item);
      if (
        this.topicobj.targetname ||
        this.topicobj.svyLibScriptOptions[0].optioncontent
      ) {
        this.$modal
          .confirm("更改类型后选项将清空是否继续?")
          .then(() => {
@@ -1022,21 +1066,16 @@
      };
      this.gettargetInfo();
    },
    // 便捷标签
    tsgnameto(row) {
    // 便捷标签插入填空
    tsgnametos(row) {
      let inputValueArr = "";
      let value = this.testuserList.length + 1;
      let el = document.querySelector("#" + this.currentInputId);
      //el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index)
      if (this.currentInputId == "scriptContent") {
        inputValueArr = this.topicobj.scriptContent.split("");
      } else if (this.currentInputId == "nomatchtext") {
        inputValueArr = this.topicobj.nomatchtext.split("");
      } else if (this.currentInputId == "sliencetext") {
        inputValueArr = this.topicobj.sliencetext.split("");
      } else if (this.currentInputId == "noclearlytext") {
        inputValueArr = this.topicobj.noclearlytext.split("");
      } else if (this.currentInputId == "submoduletext") {
        inputValueArr = this.topicobj.submoduletext.split("");
      if (this.currentInputId == "targetdesc") {
        inputValueArr = this.indexform.targetdesc.split("");
      } else {
        return;
      }
@@ -1045,20 +1084,22 @@
      // 拿到选中文字的长度(后续可以用来替换选中的文字)
      let selectLength = el.selectionEnd - el.selectionStart;
      // 将要插入/替换的文字插入/替换(value.name是要插入/替换的字符串)
      inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`);
      inputValueArr.splice(
        el.selectionStart,
        selectLength,
        "__" + value + "__"
      );
      this.testuserList.push({
        orderno: value,
        optiondesc: "",
        isoperation: 1,
      });
      // 把数组重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
      console.log(inputValueArr);
      if (this.currentInputId == "scriptContent") {
        this.topicobj.scriptContent = inputValueArr;
      } else if (this.currentInputId == "nomatchtext") {
        this.topicobj.nomatchtext = inputValueArr;
      } else if (this.currentInputId == "sliencetext") {
        this.topicobj.sliencetext = inputValueArr;
      } else if (this.currentInputId == "noclearlytext") {
        this.topicobj.noclearlytext = inputValueArr;
      } else if (this.currentInputId == "submoduletext") {
        this.topicobj.submoduletext = inputValueArr;
      if (this.currentInputId == "targetdesc") {
        this.indexform.targetdesc = inputValueArr;
      } else {
        return;
      }
@@ -1220,6 +1261,21 @@
.tsgname:hover {
  background: #3366f5;
}
.tsgnames {
  width: 90px;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #66c18c;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgnames:hover {
  background: #20894d;
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
src/views/patient/follow/index.vue
@@ -107,18 +107,7 @@
              >新增</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
              type="danger"
@@ -142,60 +131,43 @@
          <el-table-column
            label="序号"
            align="center"
            key="patid"
            prop="patid"
            key="id"
            prop="id"
          />
          <el-table-column label="姓名" align="center" key="name" prop="name" />
          <el-table-column label="姓名(缺)" align="center" key="name" prop="name" />
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="年龄"
            label="审核人"
            align="center"
            key="age"
            prop="age"
            key="checkBy"
            prop="checkBy"
            width="120"
          />
          <el-table-column
            label="审核状态"
            align="center"
            key="checkFlag"
            prop="checkFlag"
            width="120"
          />
          <el-table-column
            label="证件编号"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="过滤类型"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="过滤原因"
            align="center"
            key="tagList"
            prop="tagList"
            width="160"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <span v-for="item in scope.row.tagList">{{ item }} </span>
            </template>
          </el-table-column>
          <el-table-column
            label="证件类型"
            align="center"
            key="idcardtype"
            prop="idcardtype"
            key="filterdesc"
            prop="filterdesc"
            width="120"
          /><el-table-column
            label="证件编号"
            label="过滤申请说明"
            align="center"
            key="idcardno"
            prop="idcardno"
            key="filternotes"
            prop="filternotes"
            width="190"
          />
          <el-table-column
@@ -213,19 +185,31 @@
            width="190"
          />
          <el-table-column
            label="操作日期"
            label="申请日期"
            align="center"
            key="archivetime"
            prop="archivetime"
            key="applyTime"
            prop="applyTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.applyTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="审核日期"
            align="center"
            key="checkTime"
            prop="checkTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.checkTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="操作"
            align="center"
            fixed="right"
            width="190"
            class-name="small-padding fixed-width"
          >
@@ -247,7 +231,7 @@
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
                @click="handleDelete(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-textxga"
                  ><i class="el-icon-edit"></i>取消过滤</span
@@ -392,11 +376,11 @@
import { delUser } from "@/api/system/user";
import {
  messagelistpatient,
  alterpatient,
  addpatient,
  listfiltration,
  editfiltration,
  addfiltration,
  particularpatient,
  deletepatient,
  delfiltration,
  Exporterrorpatient,
  toleadpatient,
} from "@/api/patient/homepage";
@@ -538,7 +522,7 @@
    /** 查询患者列表 */
    getList() {
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
      listfiltration(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
        this.total = response.total;
@@ -624,22 +608,12 @@
      this.Labelchange = true;
      this.amendtag = false;
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      console.log(row);
      const userIds = row.patid || this.ids;
      particularpatient(userIds).then((response) => {
        console.log(response);
        this.form = response.data;
      });
      this.amendtag = true;
      this.Labelchange = true;
    },
    //修改/新增患者
    submitForm() {
      if (this.amendtag) {
        alterpatient(this.form)
        editfiltration(this.form)
          .then((response) => {
            console.log(response);
          })
@@ -648,7 +622,7 @@
            this.$modal.msgSuccess("修改成功");
          });
      } else {
        addpatient(this.form)
        addfiltration(this.form)
          .then((response) => {
            console.log(response);
          })
@@ -664,11 +638,11 @@
    /** 删除按钮操作 */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      const userIds = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return deletepatient(userIds);
          return delfiltration(userIds);
        })
        .then(() => {
          this.getList();
src/views/patient/patient/PatientChart.vue
@@ -674,28 +674,7 @@
        },
      ],
      cardlist: [
        {
          name: "患者总数",
          value: 123,
        },
        {
          name: "在院患者",
          value: 23,
        },
        {
          name: "离院患者",
          value: 41,
        },
        {
          name: "诊疗患者",
          value: 56,
        },
        {
          name: "离世患者",
          value: 0,
        },
      ],
      // 表单参数
      form: {
        name: "",
src/views/patient/patient/index.vue
@@ -25,8 +25,11 @@
      <div>
        <el-row :gutter="10">
          <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
            <el-card shadow="hover">
              <div style="padding: 8px">
            <el-card
              shadow="hover"
              :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
            >
              <div style="padding: 8px" @click="$router.push(item.router)">
                <span>{{ item.name }}</span>
                <div
                  style="
@@ -315,10 +318,10 @@
                    "
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textsc"
                      ><i class="el-icon-zoom-in"></i>查看</span
                      ><i class="el-icon-zoom-in"></i>详情编辑</span
                    ></el-button
                  >
                  <el-button
                  <!-- <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
@@ -326,7 +329,7 @@
                    ><span class="button-textxga"
                      ><i class="el-icon-edit"></i>修改</span
                    ></el-button
                  >
                  > -->
                  <el-button
                    size="medium"
                    type="text"
@@ -627,14 +630,16 @@
    </el-dialog>
    <!-- 跳转服务对话框 -->
    <el-dialog title="选择服务类型" :visible.sync="serviceVisible">
      <el-radio-group v-model="serviceradio">
        <el-radio :label="1">宣教随访</el-radio>
        <el-radio :label="2">门诊服务</el-radio>
        <el-radio :label="3">出院服务</el-radio>
        <el-radio :label="4">复诊服务</el-radio>
        <el-radio :label="5">体检通知</el-radio>
        <el-radio :label="6">问卷服务</el-radio>
      </el-radio-group>
      <el-card class="box-card">
        <el-radio-group v-model="serviceradio">
          <el-radio :label="1">宣教随访</el-radio>
          <el-radio :label="2">门诊服务</el-radio>
          <el-radio :label="3">出院服务</el-radio>
          <el-radio :label="4">复诊服务</el-radio>
          <el-radio :label="5">体检通知</el-radio>
          <el-radio :label="6">问卷服务</el-radio>
        </el-radio-group>
      </el-card>
      <div slot="footer" class="dialog-footer">
        <el-button @click="serviceVisible = false">取 消</el-button>
        <el-button type="primary" @click="CreateService">创建服务</el-button>
@@ -734,14 +739,17 @@
        {
          name: "在院患者",
          value: 23,
          router: "/patient/inpatient",
        },
        {
          name: "离院患者",
          name: "出院患者",
          value: 41,
          router: "/patient/hospital",
        },
        {
          name: "诊疗患者",
          name: "门诊患者",
          value: 56,
          router: "/patient/outpatient",
        },
        {
          name: "离世患者",
@@ -1125,6 +1133,7 @@
}
::v-deep.leftvlue .el-card__body:hover {
  background: #8dc8f8;
  cursor: pointer; /* 鼠标悬浮时变为手形 */
}
.leftvlue {
  width: 80%;
src/views/patient/subsequent/index.vue
@@ -167,13 +167,7 @@
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="50" align="center" />
        <el-table-column
          label="序号"
          fixed
          align="center"
          key="id"
          prop="id"
        />
        <el-table-column label="序号" fixed align="center" key="id" prop="id" />
        <el-table-column
          label="姓名"
          fixed
@@ -293,33 +287,50 @@
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              size="medium"
              type="text"
              @click="followupvisit(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-bb"
                ><i class="el-icon-s-promotion"></i>重新通知</span
              ></el-button
            <el-tooltip
              class="item"
              effect="dark"
              content="重新通知"
              placement="top"
            >
            <el-button
              size="medium"
              type="text"
              @click="handlestop(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-sc"
                ><i class="el-icon-delete"></i>停止</span
              ></el-button
              <el-button
                size="medium"
                type="text"
                @click="followupvisit(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-bb"
                  ><i class="el-icon-s-promotion"></i></span
                ></el-button
              >
            </el-tooltip>
            <el-tooltip
              class="item"
              effect="dark"
              content="停止"
              placement="top"
            >
            <el-button
              size="medium"
              type="text"
              @click="Seedetails(scope.row)"
              v-hasPermi="['system:user:edit']"
              ><span class="button-zx"
                ><i class="el-icon-s-order"></i>查看详情</span
              ></el-button
              <el-button
                size="medium"
                type="text"
                @click="handlestop(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-sc"><i class="el-icon-delete"></i></span
              ></el-button>
            </el-tooltip>
            <el-tooltip
              class="item"
              effect="dark"
              content="查看任务详情"
              placement="top"
            >
              <el-button
                size="medium"
                type="text"
                @click="Seedetails(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-zx"><i class="el-icon-s-order"></i></span
              ></el-button>
            </el-tooltip>
          </template>
        </el-table-column>
      </el-table>
@@ -636,7 +647,6 @@
            message: "用户名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
@@ -692,13 +702,11 @@
    /** 查询门诊随访列表 */
    getList() {
      this.loading = true;
      getTaskservelist(this.topqueryParams).then(
        (response) => {
          this.userList = response.rows;
          this.total = response.total;
          this.loading = false;
        }
      );
      getTaskservelist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // 查看门诊随访详情
    Referencequestion(row) {
src/views/repositoryai/intention/index.vue
@@ -536,13 +536,20 @@
            <div v-if="indexform.scriptType == 3">
              <el-form-item label="收集信息">
                <el-card class="box-card">
                  <div v-for="item in indexform.targetoptionList">
                    <span>{{ "(" + item.orderno + ")" }}</span>
                  <div v-for="item in testuserList" style="margin-bottom: 10px">
                    <el-input
                      type="text"
                      placeholder="填入收集信息"
                      v-model="indexform.optiondesc"
                    >
                      <el-button
                        slot="append"
                        @click="deloption(item)"
                        type="danger"
                        icon="el-icon-delete"
                        circle
                      ></el-button>
                      <span slot="prepend">{{ "(" + item.orderno + ")" }}</span>
                    </el-input>
                  </div>
                </el-card>
@@ -722,7 +729,7 @@
      radio: "主分类",
      testvalue: "",
      testgovalue: "",
      creatype:'',//指标临时类型
      creatype: "", //指标临时类型
      hasValue: true,
      classifyform: {
        categoryname: "",
@@ -765,6 +772,7 @@
      mode: [],
      optionstag: [],
      targetoptionList: [],
      Temporarytype: "",
      // 查询参数
      queryParams: {
@@ -806,7 +814,7 @@
    this.valuetypelb = store.getters.askvaluetype;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.askvaluetype;
    this.usable = store.getters.usable;
    this.usable = store.getters.usable;
  },
  methods: {
    /** 查询指标列表 */
@@ -848,10 +856,10 @@
        this.deletefenl = row.title;
      }
    },
    // 便捷标签
    // 便捷标签插入填空
    tsgnameto(row) {
      let inputValueArr = "";
      let value = indexform.targetoptionList.length + 1;
      let value = this.testuserList.length + 1;
      let el = document.querySelector("#" + this.currentInputId);
      //el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index)
@@ -870,9 +878,10 @@
        selectLength,
        "__" + value + "__"
      );
      this.indexform.targetoptionList.push({
      this.testuserList.push({
        orderno: value,
        optiondesc: "",
        isoperation: 1,
      });
      // 把数组重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
@@ -885,16 +894,25 @@
      }
    },
    Changtype(item) {
      console.log(this.testuserList);
      console.log(item, "选项变更的处理");
      if (item==3) {
        this.$modal
          .confirm('更改类型为填空后选项将清空是否继续?')
          .then(() => {
      if (item == 3 && this.testuserList[0].targetvalue) {
        this.$modal
          .confirm("更改类型为填空后选项将清空是否继续?")
          .then(() => {
            this.testuserList = [];
            this.Temporarytype = this.indexform.scriptType;
          })
          .catch(() => {
            this.indexform.scriptType = this.Temporarytype;
          });
      } else if (item == 3) {
        this.testuserList = [];
        this.Temporarytype = this.indexform.scriptType;
      }
      {
        this.Temporarytype = this.indexform.scriptType;
      }
    },
    // 疾病-----------------------
@@ -1047,10 +1065,17 @@
        console.log(this.targetoptionList, "aaaa.targetoptionList");
        this.testuserList.splice(index, 1); // 从索引位置删除一个元素
        this.sortFn();
        if (this.indexform.scriptType == 3) {
          this.$modal.msgWarning(
            "填空项已删除请手动删除题目内容中对应的填空项"
          );
        }
      } else {
        console.log("未找到该对象");
      }
    },
    syioption(row) {
      const index = this.getIndexInArray(this.testuserList, row);
      const item = this.testuserList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
@@ -1254,6 +1279,7 @@
      this.indexform = {};
      this.indexform = row;
      this.indexform.scriptType = Number(row.scriptType);
      this.Temporarytype = this.indexform.scriptType;
      if (!row.targetoptionList[0]) {
        row.targetoptionList = [
          {
@@ -1262,6 +1288,7 @@
            targetregex: "",
            targetregex2: "",
            isoperation: 1,
            orderno: 1,
            dynamiccruxs: [],
            nodynamiccruxs: [],
            dynamiccruxsJson: "",