WXL
2024-09-24 83898e6b7ff3996fcef889042442a25753b07dea
测试完成
已修改35个文件
已添加1个文件
4203 ■■■■■ 文件已修改
dist.zip 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Qtemplate.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/SingleTask.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/AskRegular/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Assistant/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/SFtable/index.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/ruoyi.js 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 335 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/compilequer/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/index.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 449 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/index.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainwt.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainxj.vue 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/follow/index.vue 336 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/behospitalized.vue 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/hospital.vue 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/profile/index.vue 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/Missioncreation.vue 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 875 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dist.zip
Binary files differ
src/App.vue
@@ -2,7 +2,7 @@
  <div id="app">
    <router-view />
    <theme-picker />
    <Assistant v-if="routertf" />
    <!-- <Assistant v-if="routertf" /> -->
  </div>
</template>
src/api/AiCentre/Qtemplate.js
@@ -128,3 +128,56 @@
      data: data,
    });
  }
    // 删除问卷模板分类
export function deleteTaskQuestioncomit(svyid) {
  return request({
    url: "/smartor/svytemplateTask/remove/" + svyid,
    method: "get",
  });
}
    export function getTaskQuestioncomit(svyid) {
      return request({
        url: "/smartor/svytemplateTask/" + svyid,
        method: "get",
      });
    }
 //科室病区模板关联新增
 export function depthospgetson(data) {
  return request({
    url: "/smartor/td/add",
    method: "post",
    data: data,
  });
}
 //科室病区模板关联查询
 export function depthospgetsonlist(data) {
  return request({
    url: "/smartor/td/list",
    method: "get",
    params: data,
  });
}
    // 删除科室病区模板分类
    export function depthospgetsondel(id) {
      return request({
        url: "/smartor/td/remove/" + id,
        method: "get",
      });
    }
// 医护保存数据
export function serviceSubtaskDetailedit(data) {
  return request({
    url: "/smartor/serviceSubtaskDetail/editByCondition",
    method: "post",
    data: data,
  });
}
export function serviceSubtaskDetailadd(data) {
  return request({
    url: "/smartor/serviceSubtaskDetail/add",
    method: "post",
    data: data,
  });
}
src/api/AiCentre/SingleTask.js
@@ -55,6 +55,14 @@
      data: data,
    });
  }
    // 新增或修改单个服务
    export function Editsingletaskson(data) {
      return request({
        url: "/smartor/serviceSubtask/update",
        method: "post",
        data: data,
      });
    }
  // 删除任务并删除关联的患者服务
  export function delTaskInfo(taskid) {
    return request({
src/api/system/user.js
@@ -1,143 +1,150 @@
import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/ruoyi";//处理字符串
import request from "@/utils/request";
import { parseStrEmpty } from "@/utils/ruoyi"; //处理字符串
// 查询用户列表
export function listUser(query) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
    url: "/system/user/list",
    method: "get",
    params: query,
  });
}
// 查询用户详细
export function getUser(userId) {
  return request({
    url: '/system/user/getInfo/' + parseStrEmpty(userId),
    method: 'get'
  })
    url: "/system/user/getInfo/" + parseStrEmpty(userId),
    method: "get",
  });
}
// 新增用户
export function addUser(data) {
  return request({
    url: '/system/user/add',
    method: 'post',
    data: data
  })
    url: "/system/user/add",
    method: "post",
    data: data,
  });
}
// 修改用户
export function updateUser(data) {
  return request({
    url: '/system/user/edit',
    method: 'post',
    data: data
  })
    url: "/system/user/edit",
    method: "post",
    data: data,
  });
}
// 删除用户
export function delUser(userId) {
  return request({
    url: '/system/user/remove/' + userId,
    method: 'get'
  })
    url: "/system/user/remove/" + userId,
    method: "get",
  });
}
// 用户密码重置
export function resetUserPwd(userId, password) {
  const data = {
    userId,
    password
  }
    password,
  };
  return request({
    url: '/system/user/resetPwd',
    method: 'post',
    data: data
  })
    url: "/system/user/resetPwd",
    method: "post",
    data: data,
  });
}
// 用户状态修改
export function changeUserStatus(userId, status) {
  const data = {
    userId,
    status
  }
    status,
  };
  return request({
    url: '/system/user/changeStatus/edit',
    method: 'post',
    data: data
  })
    url: "/system/user/changeStatus/edit",
    method: "post",
    data: data,
  });
}
// 查询用户个人信息
export function getUserProfile() {
  return request({
    url: '/system/user/profile',
    method: 'get'
  })
    url: "/system/user/profile",
    method: "get",
  });
}
// 修改用户个人信息
export function updateUserProfile(data) {
  return request({
    url: '/system/user/profile/edit',
    method: 'post',
    data: data
  })
    url: "/system/user/profile/edit",
    method: "post",
    data: data,
  });
}
// 用户密码重置
export function updateUserPwd(oldPassword, newPassword) {
  const data = {
    oldPassword,
    newPassword
  }
    newPassword,
  };
  return request({
    url: '/system/user/profile/updatePwd',
    method: 'post',
    params: data
  })
    url: "/system/user/profile/updatePwd",
    method: "post",
    params: data,
  });
}
// 用户头像上传
export function uploadAvatar(data) {
  return request({
    url: '/system/user/profile/avatar',
    method: 'post',
    data: data
  })
    url: "/system/user/profile/avatar",
    method: "post",
    data: data,
  });
}
// 查询授权角色
export function getAuthRole(userId) {
  return request({
    url: '/system/user/authRole/' + userId,
    method: 'get'
  })
    url: "/system/user/authRole/" + userId,
    method: "get",
  });
}
// 保存授权角色
export function updateAuthRole(data) {
  return request({
    url: '/system/user/authRole',
    method: 'post',
    params: data
  })
    url: "/system/user/authRole",
    method: "post",
    data: data,
  });
}
// 保存授权角色
export function removeusertd(userid,deptcode) {
  return request({
    url: "/smartor/userdept/removeByCode/" + userid + "/" + deptcode,
    method: "get",
  });
}
// 查询部门下拉树结构
export function deptTreeSelect() {
  return request({
    url: '/system/user/deptTree',
    method: 'get'
  })
    url: "/system/user/deptTree",
    method: "get",
  });
}
// 新增科室/病区
export function adduserdept(data) {
  return request({
    url: '/smartor/userdept/add',
    method: 'post',
    params: data
  })
    url: "/smartor/userdept/add",
    method: "post",
    data: data,
  });
}
src/components/AskRegular/index.vue
@@ -13,7 +13,7 @@
            </el-input> </el-form-item
        ></el-col>
        <el-col :span="12"
          ><el-form-item label="预警提醒">
          ><el-form-item label="异常提醒">
            <el-radio-group v-model="radio">
              <el-radio :label="3">是</el-radio>
              <el-radio :label="6">否</el-radio>
src/components/Assistant/index.vue
@@ -42,7 +42,7 @@
        <div
          v-for="(item, index) in powerList"
          :key="index"
          @click.stop="activeHandle(index)"
          @click.stop="activeHandle(index,item.url)"
        >
          <div
            :class="activeIndex == index ? 'active power-item' : 'power-item'"
@@ -105,22 +105,27 @@
      powerList: [
        {
          path: require("@/assets/images/huanzheliebiao.png"),
          url:'/patient/patient/',
          label: "患者",
        },
        {
          path: require("@/assets/images/fwwu.png"),
          label: "服务",
          url:'/followvisit/tasklist/',
          label: "任务",
        },
        {
          path: require("@/assets/images/duanxinjilu.png"),
          url:'',
          label: "短信",
        },
        {
          path: require("@/assets/images/dianhua.png"),
          url:'',
          label: "电话",
        },
        {
          path: require("@/assets/images/zxlt.png"),
          url:'',
          label: "在线聊天",
        },
      ],
@@ -137,8 +142,8 @@
        // 获取元素位置属性
        this.floatDragDom = this.floatDrag.getBoundingClientRect();
        // 设置初始位置
        // this.left = this.clientWidth - this.floatDragDom.width - this.distanceRight;
        this.right = 0;
        this.left = this.clientWidth - this.floatDragDom.width - this.distanceRight;
        // this.right = 0;
        this.top =
          this.clientHeight - this.floatDragDom.height - this.distanceBottom;
        this.initDraggable();
@@ -164,9 +169,12 @@
      console.log("是否展开", this.flag);
    },
    // 点击哪个power
    activeHandle(index) {
    activeHandle(index,url) {
      //把我们自定义的下标赋值
      this.activeIndex = index;
      this.$router.push({
        path: url,
      })
      console.log("HHHH", index);
    },
    // 获取要改变得样式属性
src/components/Regular/index.vue
@@ -14,7 +14,7 @@
              </el-input> </el-form-item
          ></el-col>
          <el-col :span="12"
            ><el-form-item label="预警提醒">
            ><el-form-item label="异常提醒">
              <el-radio-group v-model="item.isabnormal">
                <el-radio :label="1">是</el-radio>
                <el-radio :label="0">否</el-radio>
src/components/SFtable/index.vue
@@ -20,6 +20,7 @@
  >
    <el-table-column
      v-if="multiplechoice"
      fixed="left"
      type="selection"
      width="50"
      align="center"
@@ -31,7 +32,43 @@
      key="id"
      prop="id"
    />
    <el-table-column
    <div v-for="(item, index) in tableLabel">
      <el-table-column
        v-if="item.label == '出院日期'"
        :key="index"
        :prop="item.prop"
        :width="item.width"
        :label="item.label"
        :formatter="formatData"
      >
        <template slot-scope="scope">
          <span>{{ formatTime(scope.row.endtime) }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="item.label == '性别'"
        :key="index"
        :prop="item.prop"
        :width="item.width"
        :label="item.label"
        :formatter="formatData"
      >
        <template slot-scope="scope">
          <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="item.label != '性别' && item.label != '出院日期'"
        :key="index"
        :prop="item.prop"
        :width="item.width"
        :label="item.label"
        :formatter="formatData"
      >
      </el-table-column>
    </div>
    <!-- <el-table-column
      v-for="(item, index) in tableLabel"
      :key="index"
      :prop="item.prop"
@@ -39,7 +76,7 @@
      :label="item.label"
      :formatter="formatData"
    >
    </el-table-column>
    </el-table-column> -->
    <!-- <el-table-column
      label="是否可用"
      align="center"
@@ -209,7 +246,6 @@
    clearSelection() {
      // 在这里编写清除选择的逻辑
      this.$refs.multipleTableson.clearSelection();
    },
  },
};
src/main.js
@@ -51,6 +51,7 @@
  selectDictLabel,
  selectDictLabels,
  handleTree,
  daysBetween,
} from "@/utils/ruoyi";
import LemonMessageVoice from './websocket/lemon-message-voice';
Vue.component(LemonMessageVoice.name,LemonMessageVoice);
@@ -93,6 +94,7 @@
Vue.prototype.getConfigKey = getConfigKey;
Vue.prototype.parseTime = parseTime;
Vue.prototype.formatTime = formatTime;
Vue.prototype.daysBetween = daysBetween;
Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel;
src/store/getters.js
@@ -11,8 +11,8 @@
  introduction: (state) => state.user.introduction,
  roles: (state) => state.user.roles,
  permissions: (state) => state.user.permissions,
  leavehospitaldistrictcodes: (state) => state.user.leavehospitaldistrictcodes,
  leaveldeptcodes: (state) => state.user.leaveldeptcodes,
  belongWards: (state) => state.user.belongWards,
  belongDepts: (state) => state.user.belongDepts,
  permission_routes: (state) => state.permission.routes,
  topbarRouters: (state) => state.permission.topbarRouters,
  defaultRoutes: (state) => state.permission.defaultRoutes,
src/store/modules/user.js
@@ -6,8 +6,8 @@
    token: getToken(),
    name: '',
    avatar: '',
    leavehospitaldistrictcodes:[],
    leaveldeptcodes:[],
    belongWards:[],
    belongDepts:[],
    roles: [],
    permissions: [],
    // 服务类型
@@ -97,11 +97,11 @@
    SET_Serviceauthority: (state, Serviceauthority) => {
      state.Serviceauthority = Serviceauthority
    },
    SET_leavehospitaldistrictcodes: (state, leavehospitaldistrictcodes) => {
      state.leavehospitaldistrictcodes = leavehospitaldistrictcodes
    SET_leavehospitaldistrictcodes: (state, belongWards) => {
      state.belongWards = belongWards
    },
    SET_leaveldeptcodes: (state, leaveldeptcodes) => {
      state.leaveldeptcodes = leaveldeptcodes
    SET_leaveldeptcodes: (state, belongDepts) => {
      state.belongDepts = belongDepts
    }
  },
@@ -136,8 +136,8 @@
            commit('SET_ROLES', ['ROLE_DEFAULT'])
          }
          commit('SET_NAME', user.userName)
          commit('SET_leavehospitaldistrictcodes', user.leavehospitaldistrictcodes)
          commit('SET_leaveldeptcodes', user.leaveldeptcodes)
          commit('SET_leavehospitaldistrictcodes', user.belongWards)
          commit('SET_leaveldeptcodes', user.belongDepts)
          commit('SET_AVATAR', avatar)
          resolve(res)
        }).catch(error => {
src/utils/request.js
@@ -49,7 +49,7 @@
      const s_url = sessionObj.url;                  // 请求地址
      const s_data = sessionObj.data;                // 请求数据
      const s_time = sessionObj.time;                // 请求时间
      const interval = 10;                         // 间隔时间(ms),小于此时间视为重复提交
      const interval = 4;                         // 间隔时间(ms),小于此时间视为重复提交
      if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
        const message = '数据正在处理,请勿重复提交';
        console.warn(`[${s_url}]: ` + message)
src/utils/ruoyi.js
@@ -50,18 +50,17 @@
  return time_str;
}
// 出院/入院天数计算
export function Daycount(dateString1, dateString2){
// 将日期字符串转换为日期对象
var date1 = new Date(dateString1);
var date2 = new Date(dateString2);
// 计算时间差(毫秒)
var timeDifference = date2 - date1;
// 将时间差转换为天数
var daysDifference = Math.ceil(timeDifference / (1000 * 3600 * 24));
return daysDifference;
export function daysBetween(dateString) {
  // 将输入的日期字符串转换为Date对象
  var startDate = new Date(dateString);
  // 获取当前日期
  var currentDate = new Date();
  // 计算两个日期之间的时间差(毫秒)
  var differenceInTime = currentDate - startDate;
  // 将时间差转换为天数
  var differenceInDays = differenceInTime / (1000 * 3600 * 24);
  // 返回天数,四舍五入到最接近的整数
  return Math.round(differenceInDays);
}
// 过滤器
export function formatTime(val) {
src/views/followvisit/discharge/index.vue
@@ -38,13 +38,39 @@
            </el-option>
          </el-select>
        </el-form-item> -->
        <el-form-item label="模板名称" prop="status">
          <el-input v-model="topqueryParams.templatename"></el-input>
        <el-form-item label="患者姓名" prop="sendname">
          <el-input v-model="topqueryParams.sendname" placeholder="请输入患者姓名"></el-input>
        </el-form-item>
        <el-form-item label="患者来源" prop="status">
          <el-select
                v-model="topqueryParams.searchscope"
                placeholder="请选择患者来源"
              >
                <el-option
                  v-for="item in source"
                  :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.sendstate" 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.excep" placeholder="请选择">
            <el-option
              v-for="item in topicoptionsyj"
              :key="item.value"
              :label="item.label"
              :value="item.value"
@@ -74,7 +100,6 @@
            icon="el-icon-plus"
            size="medium"
            @click="handleAdd"
            v-hasPermi="['system:user:add']"
            >新增</el-button
          >
        </el-col>
@@ -178,24 +203,139 @@
          align="center"
          key="taskName"
          prop="taskName"
          width="120"
          width="180"
        />
        <!-- <el-table-column label="序号" fixed align="center" key="id" prop="id" /> -->
        <el-table-column
          label="姓名"
          align="center"
          key="sendname"
          prop="sendname"
        />
        <el-table-column
          label="身份证号码"
          width="200"
          align="center"
          key="sfzh"
          prop="sfzh"
        />
        <el-table-column
          label="随访状态"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
        >
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 1">
              <el-tag type="primary"
              :disable-transitions="false">被领取</el-tag></div>
            <div v-if="scope.row.sendstate == 2">
              <el-tag type="primary"
              :disable-transitions="false">待发送</el-tag>
              </div>
            <div v-if="scope.row.sendstate == 3"> <el-tag type="success"
              :disable-transitions="false">已发送</el-tag></div>
            <div v-if="scope.row.sendstate == 4"> <el-tag type="info"
              :disable-transitions="false">不执行</el-tag></div>
            <div v-if="scope.row.sendstate == 5"> <el-tag type="danger"
              :disable-transitions="false">发送失败</el-tag></div>
              <div v-if="scope.row.sendstate == 6"> <el-tag type="danger"
                :disable-transitions="false">已完成</el-tag></div>
          </template>
        </el-table-column>
        <el-table-column
          label="结果状态"
          align="center"
          key="excep"
          prop="excep"
          width="120"
        >
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 6">
              <dict-tag
                :options="dict.type.sys_yujing"
                :value="scope.row.excep"
              />
            </div>
            <div v-else>
              <span></span>
            </div>
          </template>
        </el-table-column>
        <el-table-column
          label="处理意见"
          align="center"
          key="suggest"
          prop="suggest"
          width="120"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_suggest"
              :value="scope.row.suggest"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="出院日期"
          width="200"
          align="center"
          key="endtime"
          prop="endtime"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.endtime) }}</span>
          </template></el-table-column
        >
        <el-table-column
          label="应随访日期"
          width="200"
          align="center"
          key="longSendTime"
          prop="longSendTime"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.longSendTime) }}</span>
          </template></el-table-column
        >
        <el-table-column
          label="出院天数"
          width="120"
          align="center"
          key="endDay"
          prop="endDay"
        >
          <template slot-scope="scope">
            <span>{{
              scope.row.endDay ? scope.row.endDay + "天" : "日期缺失"
            }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="责任护士"
          width="120"
          align="center"
          key="nurseName"
          prop="nurseName"
        />
        <el-table-column
          label="主治医生"
          width="120"
          align="center"
          key="drname"
          prop="drname"
        />
        <el-table-column
          label="随访异常记录"
          width="120"
          align="center"
          key="remark"
          prop="remark"
        />
        <!-- <el-table-column
          label="病历号"
          align="center"
@@ -208,14 +348,14 @@
        <!-- <el-table-column label="年龄" align="center" key="age" prop="age" /> -->
        <!-- <el-table-column label="性别" align="center" key="sex" prop="sex" /> -->
        <!-- <el-table-column label="床号" align="center" key="badNo" prop="badNo" /> -->
        <!-- <el-table-column
        <el-table-column
          label="科室"
          align="center"
          key="deptname"
          prop="deptname"
          width="120"
        >
        </el-table-column> -->
        </el-table-column>
        <el-table-column
          label="病区"
          align="center"
@@ -250,6 +390,13 @@
          prop="createBy"
          width="120"
        />
        <!-- <el-table-column
          label="责任医师"
          align="center"
          key="drname"
          prop="drname"
          width="120"
        /> -->
        <!-- <el-table-column
          label="出院时间"
@@ -284,7 +431,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.finishtime) }}</span>
            <span>{{ parseTime(scope.row.finishtime) }}</span>
          </template>
        </el-table-column>
        <!-- <el-table-column
@@ -352,11 +499,7 @@
                ><span class="button-zx"><i class="el-icon-s-order"></i></span
              ></el-button>
            </el-tooltip> -->
            <el-button
              size="medium"
              type="text"
              @click="Seedetails(scope.row)"
              v-hasPermi="['system:user:edit']"
            <el-button size="medium" type="text" @click="Seedetails(scope.row)"
              ><span class="button-zx"
                ><i class="el-icon-s-order"></i>查看详情</span
              ></el-button
@@ -521,8 +664,8 @@
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "User",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  name: "Discharge",
  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
  components: { Treeselect },
  data() {
    return {
@@ -572,6 +715,20 @@
      },
      value: [],
      list: [],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      loading: false,
      states: [
        "Alabama",
@@ -667,7 +824,7 @@
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        serviceType:2,
        serviceType: 2,
      },
      propss: { multiple: true },
      options: [],
@@ -684,6 +841,28 @@
        {
          value: 3,
          label: "已发送",
        },
        {
          value: 4,
          label: "不执行",
        },
        {
          value: 5,
          label: "发送失败",
        },
        {
          value: 6,
          label: "已完成",
        },
      ],
      topicoptionsyj: [
        {
          value: 1,
          label: "异常",
        },
        {
          value: 0,
          label: "正常",
        },
      ],
      serviceState: [],
@@ -708,9 +887,30 @@
  methods: {
    /** 查询门诊随访服务列表 */
    getList() {
      if (this.topqueryParams.searchscope == 1) {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes=null;
      } else if (this.topqueryParams.searchscope == 2) {
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.topqueryParams.leaveldeptcodes=null;
      } else {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.loading = true;
      getTaskservelist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.userList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        this.total = response.total;
        this.loading = false;
      });
@@ -773,15 +973,29 @@
    },
    /** 搜索按钮操作 */
    handleQuery() {
      if (this.topqueryParams.searchscope == 1) {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes=null;
      } else if (this.topqueryParams.searchscope == 2) {
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.topqueryParams.leaveldeptcodes=null;
      } else {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.topqueryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.topqueryParams.deptId = undefined;
      this.$refs.tree.setCurrentKey(null);
      this.topqueryParams = {};
      this.handleQuery();
    },
    // 多选框选中数据
@@ -919,7 +1133,7 @@
    Seedetails(row) {
      this.$router.push({
        path: "/followvisit/record/detailpage/",
        query: { taskid: row.taskid, patid: row.patid },
        query: { taskid: row.taskid, patid: row.patid,id: row.id},
      });
    },
    // 导入按钮
src/views/followvisit/record/detailpage/index.vue
@@ -6,20 +6,19 @@
        <div class="userinfo-text">
          <!-- <span>患者服务详情</span> -->
          <div class="headline">
              <div>患者服务详情</div>
              <div style="margin-left: 20px">
                    <el-button
                    v-if="!Whetherall"
                      type="primary"
                      @click="getTaskservelist()"
                    >查看患者全部服务</el-button>
                    <el-button
                    v-else
                      type="success"
                      @click="getTaskservelist(taskid)"
                    >查看患者本次服务信息</el-button>
              </div>
            <div>患者服务详情</div>
            <div style="margin-left: 20px">
              <el-button
                v-if="!Whetherall"
                type="primary"
                @click="getTaskservelist()"
                >查看患者全部服务</el-button
              >
              <el-button v-else type="success" @click="getTaskservelist(taskid)"
                >查看患者本次服务信息</el-button
              >
            </div>
          </div>
          <!-- <el-button type="success">随访后短信</el-button> -->
        </div>
      </div>
@@ -28,6 +27,21 @@
          <el-table-column prop="sendname" align="center" label="姓名">
          </el-table-column>
          <el-table-column prop="sendstate" align="center" label="服务状态">
            <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 1">
              <el-tag type="primary"
              :disable-transitions="false">被领取</el-tag></div>
            <div v-if="scope.row.sendstate == 2">
              <el-tag type="primary"
              :disable-transitions="false">待发送</el-tag>
              </div>
            <div v-if="scope.row.sendstate == 3"> <el-tag type="success"
              :disable-transitions="false">已发送</el-tag></div>
            <div v-if="scope.row.sendstate == 4"> <el-tag type="info"
              :disable-transitions="false">不执行</el-tag></div>
            <div v-if="scope.row.sendstate == 5"> <el-tag type="danger"
              :disable-transitions="false">发送失败</el-tag></div>
          </template>
          </el-table-column>
          <el-table-column
            prop="finishtime"
@@ -38,6 +52,60 @@
          >
          </el-table-column>
          <el-table-column
            label="出院日期"
            width="200"
            align="center"
            key="endtime"
            prop="endtime"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.endtime) }}</span>
            </template></el-table-column
          >
          <el-table-column
            label="责任护士"
            width="120"
            align="center"
            key="nurseName"
            prop="nurseName"
          />
          <el-table-column
            label="主治医生"
            width="120"
            align="center"
            key="drname"
            prop="drname"
          />
          <el-table-column
            label="结果状态"
            align="center"
            key="excep"
            prop="excep"
            width="120"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.sys_yujing"
                :value="scope.row.excep"
              />
            </template>
          </el-table-column>
          <el-table-column
            label="处理意见"
            align="center"
            key="suggest"
            prop="suggest"
            width="120"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.sys_suggest"
                :value="scope.row.suggest"
              />
            </template>
          </el-table-column>
          <el-table-column
            prop="taskName"
            align="center"
            width="200"
@@ -45,6 +113,7 @@
            label="任务名称"
          >
          </el-table-column>
          <el-table-column
            prop="templatename"
            align="center"
@@ -83,6 +152,30 @@
        </el-table>
      </div>
    </div>
    <div class="Followuserinfo">
      <div>
        <div class="headline">
          <div>人工处理意见</div>
        </div>
        <div style="margin-left: 30px">
          <el-button type="warning" @click="Editsingletaskson('1')"
            >暂不处理</el-button
          >
          <el-button type="success" @click="Editsingletaskson('2')"
            >病情稳定</el-button
          >
          <el-button type="primary" @click="Editsingletaskson('3')"
            >通知就诊</el-button
          >
          <el-button type="danger" @click="Editsingletaskson('4')"
            >失访</el-button
          >
          <el-button type="info" @click="Editsingletaskson('5')"
            >人工随访</el-button
          >
        </div>
      </div>
    </div>
    <div>
      <el-tabs type="border-card">
        <el-tab-pane>
@@ -99,7 +192,11 @@
                :key="item.aaa"
              >
                <div
                  class="scriptTopic-dev"
                  :class="
                    item.isabnormal
                      ? 'scriptTopic-isabnormal'
                      : 'scriptTopic-dev'
                  "
                  :key="index"
                  v-if="item.scriptType == 1"
                >
@@ -115,6 +212,7 @@
                        v-for="(
                          items, index
                        ) in item.svyLibTemplateTargetoptions"
                        :class="items.isabnormal ? 'red-star' : ''"
                        :key="index"
                        :label="items.optioncontent"
                        >{{ items.optioncontent }}</el-radio
@@ -127,7 +225,11 @@
                </div>
                <!-- 多选 -->
                <div
                  class="scriptTopic-dev"
                  :class="
                    item.isabnormal
                      ? 'scriptTopic-isabnormal'
                      : 'scriptTopic-dev'
                  "
                  :key="index"
                  v-if="item.scriptType == 2"
                >
@@ -140,6 +242,7 @@
                      @change="updateScore($event, index, item)"
                    >
                      <el-checkbox
                        :class="items.isabnormal ? 'red-star' : ''"
                        @change="$forceUpdate()"
                        v-for="(
                          items, indexs
@@ -177,6 +280,7 @@
                </div>
              </div>
            </div>
            <el-button type="primary" @click="getdetail">保存问卷</el-button>
          </div>
        </el-tab-pane>
        <el-tab-pane>
@@ -208,8 +312,15 @@
</template>
<script>
import { getsearchrResults, getTaskservelist } from "@/api/AiCentre/index";
import {
  getsearchrResults,
  getTaskservelist,
  Editsingletaskson,
  serviceSubtaskDetailedit,
  serviceSubtaskDetailadd,
} from "@/api/AiCentre/index";
export default {
  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
  data() {
    return {
      radio: "1",
@@ -218,10 +329,11 @@
      radio: "2",
      taskname: "",
      tableDatatop: [], //题目表
      Whetherall:false, //是否全部记录展示
      Whetherall: false, //是否全部记录展示
      logsheetlist: [],
      sendname: null,
      serviceType: null,
      id: null,
      taskid: null,
      patid: null,
    };
@@ -229,6 +341,7 @@
  created() {
    this.taskid = this.$route.query.taskid;
    this.id = this.$route.query.id;
    this.sendname = this.$route.query.sendname;
    this.patid = this.$route.query.patid;
    this.serviceType = this.$route.query.serviceType;
@@ -242,26 +355,77 @@
      getsearchrResults({
        taskid: this.taskid,
        patid: this.patid,
        subId: this.id,
        isFinish:false,
      }).then((res) => {
        if (res.code === 200) {
          this.tableDatatop = res.data.scriptResult.script;
          this.tableDatatop.forEach((item) => {
            if (item.scriptResult && item.scriptType != 2) {
              item.isoption = 3;
              item.scriptResult = JSON.parse(item.scriptResult);
            } else if (item.scriptResult && item.scriptType == 2) {
              item.scriptResult = item.scriptResult.split("&");
              item.isoption = 3;
            }
          });
          this.taskname = res.data.taskName;
          this.overdata();
        }
      });
    },
    // 医护人员存储数据
    getdetail() {
      let excep = "";
      this.tableDatatop.forEach((item) => {
        var objs = item.svyLibTemplateTargetoptions.find(
          (items) => items.optioncontent == item.scriptResult
        );
        if (objs.isabnormal) {
          excep = 1;
        }
        let obj = {
          asrtext: null,
          patid: this.patid,
          subId: this.id,
          taskid: this.taskid,
          scriptid: item.id,
          questiontext: item.scriptContent,
        };
        if (item.scriptType == 2 && item.scriptResult[0]) {
          obj.asrtext = item.scriptResult.join("&");
        } else if (item.scriptType != 2 && item.scriptResult) {
          obj.asrtext = JSON.stringify(item.scriptResult);
        }
        if (item.isoption == 3) {
          serviceSubtaskDetailedit(obj).then((res) => {
            if (res.code == 200) {
            } else {
              this.$modal.error("修改失败");
            }
          });
        } else {
          serviceSubtaskDetailadd(obj).then((res) => {
            if (res.code == 200) {
              console.log(res);
            } else {
              this.$modal.error("修改失败");
            }
          });
        }
      });
      this.Editsingletasksonyic(excep);
    },
    // 获取患者记录
    getTaskservelist(taskid) {
      this.taskid = taskid;
      if (taskid) {
        this.Whetherall=false;
      }else{
        this.Whetherall=true;
        this.Whetherall = false;
      } else {
        this.Whetherall = true;
      }
      getTaskservelist({
        patid: this.patid,
@@ -272,11 +436,85 @@
        }
      });
    },
    Editsingletaskson(son) {
      let objson = {};
      getTaskservelist({
        patid: this.patid,
        taskid: this.taskid,
      }).then((res) => {
        if (res.code == 200) {
          objson = res.rows[0];
          objson.suggest = son;
          Editsingletaskson(objson).then((res) => {
            if (res.code) {
              this.$modal.msgSuccess("记录成功");
              this.getTaskservelist(this.taskid);
            }
          });
        }
      });
    },
    Editsingletasksonyic(excep) {
      let objson = {};
      getTaskservelist({
        patid: this.patid,
        taskid: this.taskid,
      }).then((res) => {
        if (res.code == 200) {
          objson = res.rows[0];
          objson.excep = excep;
          Editsingletaskson(objson).then((res) => {
            if (res.code) {
              this.$modal.msgSuccess("服务修改成功");
              this.getTaskservelist(this.taskid);
            }
          });
        }
      });
    },
    // 更改异常状态
    Seedetails(row) {
      this.$modal.confirm('是否查看任务为"' + optionids + '"的服务项?').then(function () {
        }).then(() => {
      this.$modal
        .confirm('是否查看任务为"' + optionids + '"的服务项?')
        .then(function () {})
        .then(() => {
          this.getList();
        }).catch(() => { });
        })
        .catch(() => {});
    },
    handleOptionChange(a, b, c) {
      var obj = this.tableDatatop[b].svyLibTemplateTargetoptions.find(
        (item) => item.optioncontent == a
      );
      if (obj.isabnormal) {
        this.tableDatatop[b].isabnormal = true;
      } else {
        this.tableDatatop[b].isabnormal = false;
      }
      this.$forceUpdate();
    },
    overdata() {
      this.tableDatatop.forEach((item, index) => {
        console.log(item.svyLibTemplateTargetoptions);
        var obj = item.svyLibTemplateTargetoptions.find(
          (items) => items.optioncontent == item.scriptResult
        );
        if (obj) {
          if (obj.isabnormal) {
            this.tableDatatop[index].isabnormal = true;
          } else {
            this.tableDatatop[index].isabnormal = false;
          }
          this.$forceUpdate();
        }
      });
    },
    updateScore(a, b, c) {
      console.log(a);
      console.log(b);
      console.log(c);
    },
  },
};
@@ -358,20 +596,47 @@
    }
  }
}
.scriptTopic-isabnormal {
  color: red;
}
.headline {
    font-size: 24px;
    height: 40px;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin-bottom: 10px;
    display: flex;
    // justify-content: space-between;
    .Add-details {
      font-size: 18px;
      color: #02a7f0;
      cursor: pointer;
    }
  font-size: 24px;
  height: 40px;
  border-left: 5px solid #41a1be;
  padding-left: 5px;
  margin-bottom: 10px;
  display: flex;
  // justify-content: space-between;
  .Add-details {
    font-size: 18px;
    color: #02a7f0;
    cursor: pointer;
  }
}
.red-star {
  ::v-deep.el-radio__label {
    position: relative;
    padding-right: 10px; /* 根据需要调整 */
  }
  ::v-deep.el-radio__label::after {
    content: "*";
    color: red;
    position: absolute;
    right: -5px; /* 根据需要调整 */
    top: 0;
  }
  ::v-deep.el-checkbox__label {
    position: relative;
    padding-right: 10px; /* 根据需要调整 */
  }
  ::v-deep.el-checkbox__label::after {
    content: "*";
    color: red;
    position: absolute;
    right: -5px; /* 根据需要调整 */
    top: 0;
  }
}
::v-deep.offside-value .el-radio__label {
  color: #fff;
}
src/views/followvisit/tasklist/index.vue
@@ -35,7 +35,7 @@
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="服务项目" prop="status">
        <el-form-item label="任务模板" prop="status">
          <el-input
            v-model="topqueryParams.templatename"
            @keyup.enter.native="handleQuery"
@@ -82,6 +82,20 @@
            </el-option>
          </el-select>
        </el-col>
        <!-- <el-col :span="1.5">
          <el-select
            v-model="longTask"
            placeholder="请选择任务类型"
          >
            <el-option
              v-for="item in longtermlist"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-col> -->
        <el-col :span="1.5">
          <el-button
            type="primary"
@@ -89,11 +103,11 @@
            size="medium"
            @click="handleAdd"
            :disabled="!tasktopic"
            >新增</el-button
            >新建任务</el-button
          >
        </el-col>
        <el-col :span="19">
        <!-- <el-col :span="19">
          <div class="documentf">
            <div class="document">
              <el-button
@@ -107,7 +121,7 @@
              >
            </div>
          </div>
        </el-col>
        </el-col> -->
        <!-- <el-col :span="1.5"> </el-col> -->
      </el-row>
      <!-- <right-toolbar
@@ -127,6 +141,7 @@
        <el-table-column
          label="任务名称"
          fixed
          width="120"
          align="center"
          key="taskName"
          prop="taskName"
@@ -134,15 +149,19 @@
        />
        <el-table-column
          label="任务描述"
          width="280"
          align="center"
          key="taskDesc"
          prop="taskDesc"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="服务项目"
          width="120"
          align="center"
          key="templatename"
          prop="templatename"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="待执行/总任务"
@@ -152,6 +171,17 @@
        >
          <template slot-scope="scope">
            <span>{{ scope.row.wfs }}/{{ scope.row.yfs }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="是否长期任务"
          align="center"
          key="longTask"
          prop="longTask"
          width="120"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.longTask?'长期任务':'非长期' }}</span>
          </template>
        </el-table-column>
@@ -199,7 +229,7 @@
        >
          <template slot-scope="scope">
            <el-button
              v-if="scope.row.sendState == 1 || scope.row.sendState == 3"
              v-if="(scope.row.sendState == 1 || scope.row.sendState == 3)&&!scope.row.longTask"
              size="medium"
              type="text"
              @click="sponsor(scope.row)"
@@ -207,10 +237,14 @@
                ><i class="el-icon-s-promotion"></i>发起</span
              ></el-button
            >
            <el-button size="medium" type="text" @click="newAdd(scope.row)"
            <!-- <el-button size="medium" type="text" @click="newAdd(scope.row)"
              ><span class="button-xj"
                ><i class="el-icon-circle-plus-outline"></i>终止</span
              ></el-button
            > -->
            <el-button size="medium" type="text" @click="handleUpdate(scope.row,1)"
              ><span class="button-xj"
                ><i class="el-icon-circle-plus-outline"></i>依照新增</span
              ></el-button
            >
            <el-button
@@ -393,6 +427,7 @@
      postOptions: [],
      // 角色选项
      roleOptions: [],
      longTask:0,
      taskform: {
        showDate: [],
        showTimeMorn: [],
@@ -414,6 +449,16 @@
      previewvalue: {
        username: "这个医生对你怎么样",
      },
      longtermlist:[
      {
          value: '1',
          label: "长期任务",
        },
        {
          value: '0',
          label: "普通任务",
        },
      ],
      taskoptions: [
        {
          value: "1",
@@ -556,24 +601,6 @@
      propss: { multiple: true },
      options: [],
      topicoptions: [
        {
          value: 1,
          label: "待审核",
        },
        {
          value: 2,
          label: "执行中",
        },
        {
          value: 3,
          label: "执行完成",
        },
        {
          value: 4,
          label: "已停止",
        },
      ],
      // 表单校验
      rules: {
        userName: [
@@ -624,6 +651,8 @@
  },
  watch: {},
  created() {
    this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(obj=>obj.deptCode);
    this.topqueryParams.leavehospitaldistrictcodes = store.getters.belongWards.map(obj=>obj.districtCode);
    this.tasktopic = this.$route.query.tasktopic
      ? this.$route.query.tasktopic
      : this.tasktopic;
@@ -781,7 +810,7 @@
      }
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
    handleUpdate(row,newadd) {
      if (this.topqueryParams.type == 1) {
        this.$router.push({
          path: "/followvisit/particty",
@@ -789,6 +818,7 @@
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
            newadd:newadd,//是否依照新建
          },
        });
      } else if (this.topqueryParams.type == 2) {
@@ -798,6 +828,7 @@
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
            newadd:newadd,
          },
        });
      } else if (this.topqueryParams.type == 3) {
@@ -807,6 +838,7 @@
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
            newadd:newadd,
          },
        });
      }
@@ -919,34 +951,7 @@
      }
    },
    // 依照新增
    newAdd(row) {
      this.$modal
        .confirm("是否依照当前任务创建新任务?")
        .then(() => {
          if (this.tasktopic == 5) {
            this.$router.push({
              path: "/followvisit/particty",
              query: { type: 1, id: row.taskid, nhh: 1 },
            });
          } else if (
            this.tasktopic == 2 ||
            this.tasktopic == 3 ||
            this.tasktopic == 6
          ) {
            this.$router.push({
              path: "/followvisit/QuestionnaireTask",
              query: { type: 2, id: row.taskid, nhh: 1 },
            });
          } else if (this.tasktopic == 8 || this.tasktopic == 4) {
            this.$router.push({
              path: "/followvisit/Missioncreation",
              query: { type: 3, id: row.taskid, nhh: 1 },
            });
          }
        })
        .catch(() => {});
    },
    // 暂停
    stop(row) {
      console.log(row);
src/views/knowledge/education/compilequer/index.vue
@@ -680,7 +680,7 @@
        console.log(this.ruleForm.richText, "this.ruleForm.richText");
        // 处理内网html
        addrichText({
          // content: this.content,
          content: this.content,
          fileName: this.generateRandomHtmlFilename(),
        }).then((resf) => {
          this.ruleForm.htmlRichText = resf.msg.replace(
src/views/knowledge/education/index.vue
@@ -447,7 +447,7 @@
    <el-dialog title="模板预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div v-html="richText"></div>
        <div v-html="htmlRichText"></div>
      </div>
      <!-- <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模板详情修改</el-button>
@@ -501,7 +501,7 @@
      haoeducation: "",
      indexid: null,
      inputValue: "",
      richText: "",
      htmlRichText: "",
      radio: "主分类",
      inputVisible: false,
      previewtf: false,
@@ -652,14 +652,14 @@
    },
    // 查看宣教
    Vieweducation(row) {
      this.richText = null;
      this.htmlRichText = null;
      this.previewtf = true;
      axios
        .get(row.richText)
        .get(row.htmlRichText)
        .then((response) => {
          console.log(response.data, "数据"); // 输出获取到的文件内容
          this.richText = response.data;
          this.richText = this.addStyleToImages(this.richText);
          this.htmlRichText = response.data;
          this.htmlRichText = this.addStyleToImages(this.htmlRichText);
        })
        .catch((error) => {
          this.$modal.msgError("获取富文本失败");
src/views/knowledge/questionbank/index.vue
@@ -3,7 +3,7 @@
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">问题类型</div>
        <div class="top-wj">问题分类</div>
        <div class="top-tj" @click="Newcategory">+添加</div>
      </div>
      <div class="center-ss">
@@ -68,7 +68,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="问题标题" prop="userName">
              <el-form-item label="问题主题" prop="userName">
                <el-input
                  v-model="queryParams.scriptTopic"
                  placeholder="请输入"
@@ -135,7 +135,6 @@
                  icon="el-icon-plus"
                  size="medium"
                  @click="compileUpdate"
                  v-hasPermi="['system:user:add']"
                  >新增</el-button
                >
              </el-col>
@@ -148,7 +147,6 @@
                  size="medium"
                  :disabled="multiple"
                  @click="handleDelete"
                  v-hasPermi="['system:user:remove']"
                  >删除</el-button
                >
              </el-col>
@@ -173,11 +171,19 @@
                prop="id"
              /> -->
              <el-table-column
                label="题目标题"
                label="问题主题"
                fixed
                align="center"
                key="scriptTopic"
                prop="scriptTopic"
                width="200"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="问题内容"
                align="center"
                key="scriptContent"
                prop="scriptContent"
                width="200"
                :show-overflow-tooltip="true"
              />
@@ -197,21 +203,13 @@
              </el-table-column>
              <el-table-column
                label="指标名称"
                fixed
                align="center"
                key="targetname"
                prop="targetname"
                width="200"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="题目内容"
                align="center"
                key="scriptContent"
                prop="scriptContent"
                width="200"
                :show-overflow-tooltip="true"
              />
              /><el-table-column
                label="适用方式"
@@ -236,7 +234,6 @@
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
@@ -408,7 +405,7 @@
        <el-button type="primary" @click="confirmillness">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="题目预览" :visible.sync="topicVisible" width="50%">
    <el-dialog title="问题预览" :visible.sync="topicVisible" width="50%">
      <div class="preview-left">
        <div class="dev-text">
          <span>{{ topicform.scriptContent }}</span>
src/views/knowledge/questionbank/particulars/index.vue
@@ -40,6 +40,24 @@
            <el-divider></el-divider>
            <div style="margin-left: 8%">
              <el-form-item label="问题内容" prop="scriptContent">
                <el-input
                  style="width: 40vw"
                  type="textarea"
                  id="scriptContent"
                  v-model="topicobj.scriptContent"
                  @focus="handleInput('scriptContent')"
                  placeholder="请输入问题内容"
                ></el-input>
              </el-form-item>
              <el-form-item label="问题说明" prop="targetname">
                <el-input
                  style="width: 40vw"
                  type="textarea"
                  v-model="topicobj.scriptDesc"
                  placeholder="请输入说明"
                ></el-input>
              </el-form-item>
              <el-row :gutter="10">
                <el-col :span="8">
                  <el-form-item label="问题分类" prop="categoryid">
@@ -82,7 +100,7 @@
                  </el-form-item>
                </el-col>
                <el-col :span="8" v-if="topicobj.scoretype == 1">
                  <el-form-item label="题目得分" prop="score">
                  <el-form-item label="问题得分" prop="score">
                    <el-input
                      v-model="topicobj.score"
                      placeholder="请输入分数"
@@ -93,7 +111,7 @@
              <el-row :gutter="10">
                <el-col :span="8"
                  ><el-form-item label="题目标题" prop="scriptTopic">
                  ><el-form-item label="问题标题" prop="scriptTopic">
                    <el-input
                      v-model="topicobj.scriptTopic"
                      placeholder="请输入标题"
@@ -125,27 +143,9 @@
                </el-col> -->
              </el-row>
              <el-row :gutter="10">
                <el-col :span="8">
                  <el-form-item label="语言" prop="language">
                    <el-select
                      v-model="topicobj.language"
                      size="medium"
                      filterable
                      placeholder="请选择分类"
                    >
                      <el-option
                        class="topicobjaa"
                        v-for="item in languagelist"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="8"
                  ><el-form-item label="题目类型" prop="scriptType">
                  ><el-form-item label="问题类型" prop="scriptType">
                    <el-select
                      v-model="topicobj.scriptType"
                      @change="changefn"
@@ -179,17 +179,27 @@
                      >
                      </el-option> </el-select></el-form-item
                ></el-col>
                <el-col :span="8">
                  <el-form-item label="语言" prop="language">
                    <el-select
                      v-model="topicobj.language"
                      size="medium"
                      filterable
                      placeholder="请选择分类"
                    >
                      <el-option
                        class="topicobjaa"
                        v-for="item in languagelist"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-form-item label="题目内容" prop="scriptContent">
                <el-input
                  style="width: 40vw"
                  type="textarea"
                  id="scriptContent"
                  v-model="topicobj.scriptContent"
                  @focus="handleInput('scriptContent')"
                  placeholder="请输入题目内容"
                ></el-input>
              </el-form-item>
              <!-- <el-form-item
              label=""
              prop="scriptContent"
@@ -235,14 +245,7 @@
                </el-form-item>
              </el-col>
            </el-row> -->
              <el-form-item label="题目说明" prop="targetname">
                <el-input
                  style="width: 40vw"
                  type="textarea"
                  v-model="topicobj.scriptDesc"
                  placeholder="请输入说明"
                ></el-input>
              </el-form-item>
              <!-- <el-form-item label="选中指标:">
                <span style="margin-left: 30px"
@@ -383,7 +386,7 @@
              <el-row>
                <el-col :span="10">
                  <el-form-item label="值类型">
                  <el-form-item label="结果类型">
                    <el-radio-group
                      :disabled="true"
                      v-model="topicobj.valueType"
@@ -395,7 +398,7 @@
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="题目类型">
                  <el-form-item label="问题题型">
                    <el-radio-group
                      :disabled="true"
                      v-model="topicobj.scriptType"
@@ -479,7 +482,7 @@
                    </el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-form-item label="预警提醒">
                    <el-form-item label="异常提醒">
                      <el-radio-group v-model="item.isabnormal">
                        <el-radio :label="1">是</el-radio>
                        <el-radio :label="0">否</el-radio>
@@ -666,7 +669,7 @@
        />
      </div>
    </el-drawer>
    <el-dialog title="题目预览" :visible.sync="topicVisible" width="50%">
    <el-dialog title="问题预览" :visible.sync="topicVisible" width="50%">
      <div class="preview-left">
        <div class="dev-text">
          <span>{{ topicobj.scriptContent }}</span>
@@ -808,19 +811,19 @@
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        scriptTopic: [
          { required: true, message: "题目标题不能为空", trigger: "blur" },
          { required: true, message: "问题标题不能为空", trigger: "blur" },
        ],
        ismandatory: [
          { required: true, message: "是否必填不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
          { required: true, message: "问题类型不能为空", trigger: "blur" },
        ],
        suitway: [
          { required: true, message: "适用方式不能为空", trigger: "blur" },
        ],
        scriptContent: [
          { required: true, message: "题目内容不能为空", trigger: "blur" },
          { required: true, message: "问题内容不能为空", trigger: "blur" },
        ],
      },
    };
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -14,7 +14,7 @@
          <el-step>
            <template slot="title">
              <span style="cursor: pointer" @click="Editprogress = 2"
                >问卷题目</span
                >问卷问题</span
              >
            </template>
          </el-step>
@@ -36,10 +36,25 @@
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          label-width="180px"
          class="demo-ruleForm"
        >
          <el-row :gutter="10">
          <el-form-item label="问卷名称" prop="svyname">
            <div style="width: 55vw">
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述" prop="description">
            <el-input
              style="width: 55vw"
              type="textarea"
              :rows="2"
              placeholder="请输入内容"
              v-model="ruleForm.description"
            >
            </el-input
          ></el-form-item>
          <el-row :gutter="20">
            <el-col :span="10">
              <el-form-item label="问卷分类" prop="categoryid">
                <el-select
@@ -64,7 +79,7 @@
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="10">
            <el-col :span="8">
              <el-form-item label="评价类型" prop="scoreType">
                <el-select
                  v-model="ruleForm.scoreType"
@@ -83,8 +98,8 @@
          </el-row>
          <el-row :gutter="20">
            <el-col :span="10">
              <el-form-item label="可用状态" prop="isAvailable">
                <el-radio-group v-model="ruleForm.isAvailable">
              <el-form-item label="可用状态" prop="isenable">
                <el-radio-group v-model="ruleForm.isenable">
                  <el-radio
                    v-for="(item, index) in usable"
                    :label="item.value"
@@ -102,22 +117,27 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问卷标题" prop="svyname">
            <div style="width: 55vw">
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述" prop="description">
            <el-input
              style="width: 55vw"
              type="textarea"
              :rows="5"
              autosize
              placeholder="请输入内容"
              v-model="ruleForm.description"
            >
            </el-input
          ></el-form-item>
          <!-- <el-row :gutter="20">
            <el-col :span="10">
              <el-form-item label="长期任务" prop="longTemp">
                <el-radio-group v-model="ruleForm.longTemp">
                  <el-radio
                    v-for="(item, index) in longtype"
                    :label="item.value"
                    >{{ item.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="8" v-if="ruleForm.longTemp">
              <el-form-item label="任务周期(几天后)" prop="name">
                <el-input
                  v-model="ruleForm.sendDay"
                  placeholder="默认5天后"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row> -->
          <el-row>
            <el-form-item prop="dynamicTags">
@@ -230,25 +250,50 @@
          <el-row>
            <el-col :span="20"
              ><el-form-item label="适用科室" prop="region">
                <el-cascader
                  style="width: 55vw"
                <el-select
                  v-model="tempDetpRelevanceslist"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                  @remove-tag="removetag"
                  style="width: 55vw"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择科室"
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item></el-col
            >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in belongDepts"
                    :key="item.deptCode"
                    :label="item.deptName"
                    :value="item.deptCode"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="问卷结束语" prop="conclusion">
          <el-row>
            <el-col :span="20"
              ><el-form-item label="适用病区" prop="region">
                <el-select
                  v-model="tempbelongWards"
                  @remove-tag="removehpsp"
                  style="width: 55vw"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择科室"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in belongWards"
                    :key="item.districtCode"
                    :label="item.districtName"
                    :value="item.districtCode"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="结束语" prop="conclusion">
            <el-input
              style="width: 55vw; line-height: 80px"
              type="textarea"
@@ -274,14 +319,14 @@
      <!-- 问卷设置 -->
      <div v-if="Editprogress == 2">
        <div class="leftvlue-jbxx">
          问卷题目设置
          问卷问题设置
          <span style=""
            ><el-button
              type="warning"
              icon="el-icon-finished"
              round
              @click="test"
              >题目规则效验</el-button
              >问题规则效验</el-button
            ></span
          >
        </div>
@@ -293,17 +338,17 @@
              icon="el-icon-plus"
              round
              @click="getaddtopiclist"
              >添加题目</el-button
              >添加问题</el-button
            >
            <el-button
              type="success"
              icon="el-icon-edit-outline"
              round
              @click="Operateit = !Operateit"
              >{{ !Operateit ? "编辑题目" : "完整信息展示" }}</el-button
              >{{ !Operateit ? "编辑问题" : "完整信息展示" }}</el-button
            >
          </div>
          <div style="display: flex" v-if="ruleForm.scoreType==1">
          <div style="display: flex" v-if="ruleForm.scoreType == 1">
            <span
              style="
                width: 180px;
@@ -334,7 +379,7 @@
                  width="50"
                />
                <el-table-column
                  label="题目标题"
                  label="问题主题"
                  align="center"
                  key="scriptTopic"
                  prop="scriptTopic"
@@ -356,7 +401,7 @@
                </el-table-column>
                <el-table-column
                  v-if="!Operateit"
                  label="题目内容"
                  label="问题内容"
                  align="center"
                  key="scriptContent"
                  prop="scriptContent"
@@ -445,10 +490,10 @@
                :model="topicobj"
                class="demo-form-inline"
              >
                <div class="headline">题目设置详情</div>
                <div class="headline">问题设置详情</div>
                <el-row :gutter="10">
                  <el-col :span="12">
                    <el-form-item label="题目标题">
                    <el-form-item label="问题主题">
                      <el-input
                        v-model="topicobj.scriptTopic"
                        placeholder="请输入标题"
@@ -463,9 +508,23 @@
                    </el-form-item>
                  </el-col>
                </el-row>
                <el-row :gutter="10">
                  <el-form-item label="问题内容">
                    <el-input
                      style="width: 600px"
                      type="textarea"
                      :rows="2"
                      autosize
                      placeholder="请输入问题内容"
                      v-model="topicobj.scriptContent"
                    >
                    </el-input
                  ></el-form-item>
                </el-row>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="题目类型">
                    ><el-form-item label="问题类型">
                      <el-select
                        v-model="topicobj.scriptType"
                        disabled
@@ -484,7 +543,7 @@
                  ></el-col>
                  <el-col :span="12">
                    <el-form-item
                      label="题目分值"
                      label="问题分值"
                      v-if="topicobj.scoretype == 1"
                    >
                      <el-input
@@ -509,7 +568,7 @@
                  >
                  <el-col :span="12"
                    ><el-form-item label="是否可用">
                      <el-radio-group v-model="topicobj.isavailable">
                      <el-radio-group v-model="topicobj.isenable">
                        <el-radio
                          v-for="(item, index) in usable"
                          :label="item.value"
@@ -548,7 +607,7 @@
                  >
                    <el-row :gutter="5">
                      <el-col :span="16"
                        ><el-form-item label="选项">
                        ><el-form-item label="选项名称">
                          <el-input
                            type="text"
                            placeholder="请输入选项"
@@ -592,6 +651,14 @@
                          </el-radio-group>
                        </el-form-item>
                      </el-col>
                    </el-row>
                    <el-row :gutter="10">
                      <el-form-item label="异常提醒">
                        <el-radio-group v-model="item.isabnormal">
                          <el-radio :label="1">是</el-radio>
                          <el-radio :label="0">否</el-radio>
                        </el-radio-group>
                      </el-form-item>
                    </el-row>
                    <el-row :gutter="10" v-if="topicobj.branchFlag == 1">
                      <el-col :span="20"
@@ -682,7 +749,7 @@
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Departmenttreatment('ruleForm')"
          >保存题目数据</el-button
          >保存问题数据</el-button
        >
      </div>
      <!-- 问卷预览 -->
@@ -753,9 +820,9 @@
        <el-button type="primary" @click="laststep()">上一步</el-button>
      </div>
    </div>
    <!-- 添加题目弹窗 -->
    <!-- 添加问题弹窗 -->
    <el-drawer
      title="添加题目"
      title="添加问题"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      size="50%"
@@ -780,7 +847,7 @@
                    @keyup.enter.native="getaddtopiclist"
                  />
                </el-form-item>
                <el-form-item label="题目类型" prop="scriptTopic">
                <el-form-item label="问题类型" prop="scriptTopic">
                  <el-select
                    v-model="queryParams.scriptType"
                    size="medium"
@@ -873,7 +940,7 @@
                class="demo-form-inline"
              >
                <div class="headline">
                  题目设置详情
                  问题设置详情
                  <span style="margin-left: 30px"
                    ><el-button type="primary" @click="Submittopicobj"
                      >保存新增</el-button
@@ -883,16 +950,27 @@
                <el-divider></el-divider>
                <div>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="问题内容">
                        <el-input
                          style="width: 400px"
                          type="textarea"
                          v-model="indexform.scriptContent"
                          placeholder="请输入问题内容"
                        ></el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="12">
                      <el-form-item label="题目标题">
                      <el-form-item label="问题主题">
                        <el-input
                          v-model="indexform.scriptTopic"
                          placeholder="请输入题目标题"
                          placeholder="请输入问题主题"
                        ></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="题目得分">
                      <el-form-item label="问题得分">
                        <el-input
                          v-model="indexform.score"
                          placeholder="请输入分数"
@@ -940,7 +1018,7 @@
                  <el-row :gutter="10">
                    <el-col :span="12">
                      <el-form-item label="是否可用">
                        <el-radio-group v-model="indexform.isAvailable">
                        <el-radio-group v-model="indexform.isenable">
                          <el-radio
                            v-for="(item, index) in usable"
                            :label="item.value"
@@ -961,21 +1039,13 @@
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="题目内容">
                        <el-input
                          style="width: 400px"
                          type="textarea"
                          v-model="indexform.scriptContent"
                          placeholder="请从左侧列表选择"
                        ></el-input> </el-form-item
                    ></el-col>
                  </el-row>
                </div>
                <div>
                  <el-form-item label="指标名称" prop="deptId">
                    <el-input
                      style="width: 250px"
                      type="textarea"
                      :rows="2"
                      v-model="indexform.targetname"
                      placeholder="请输入指标名称"
                      maxlength="20"
@@ -983,6 +1053,9 @@
                  </el-form-item>
                  <el-form-item label="指标描述" prop="deptId">
                    <el-input
                      style="width: 250px"
                      type="textarea"
                      :rows="2"
                      v-model="indexform.targetdesc"
                      placeholder="请输入指标描述"
                      maxlength="60"
@@ -991,7 +1064,7 @@
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="值类型">
                      <el-form-item label="结果类型">
                        <el-radio-group v-model="indexform.valueType">
                          <el-radio :label="1">选项</el-radio>
                          <el-radio :label="2">文本</el-radio>
@@ -1002,7 +1075,7 @@
                  </el-row>
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="题目类型">
                      <el-form-item label="问题类型">
                        <el-radio-group v-model="indexform.scriptType">
                          <el-radio :label="1">单选</el-radio>
                          <el-radio :label="2">多选</el-radio>
@@ -1048,6 +1121,7 @@
                      <el-col :span="11"
                        ><el-form-item label="选项名称">
                          <el-input
                            style="width: 400px"
                            type="text"
                            placeholder="请输入选项分值"
                            v-model="item.optioncontent"
@@ -1103,7 +1177,7 @@
                      </el-col>
                    </el-row>
                    <el-row :gutter="10">
                      <el-form-item label="预警提醒">
                      <el-form-item label="异常提醒">
                        <el-radio-group v-model="item.isabnormal">
                          <el-radio :label="1">是</el-radio>
                          <el-radio :label="0">否</el-radio>
@@ -1170,8 +1244,8 @@
import store from "@/store";
import {
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  depthospgetson,
  depthospgetsonlist,
  getQtemplateobj,
  compileQtemplate,
  Qtemplateinfo,
@@ -1180,6 +1254,7 @@
  Followupinfo,
  issueinfo,
  getissuelist,
  depthospgetsondel,
  deltargetillness,
  addtargetillness,
  getillnesslist,
@@ -1221,7 +1296,9 @@
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
        scoreType: "4",
        isAvailable: "0",
        isenable: "0",
        longTemp: "0",
        sendDay: "5",
      },
      indexform: {
        svyLibTemplateTargetoptions: [],
@@ -1235,19 +1312,19 @@
          { required: true, message: "评价类型不能为空", trigger: "blur" },
        ],
        svyname: [
          { required: true, message: "问卷标题不能为空", trigger: "blur" },
          { required: true, message: "问卷名称不能为空", trigger: "blur" },
        ],
        isAvailable: [
        isenable: [
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        scriptTopic: [
          { required: true, message: "题目标题不能为空", trigger: "blur" },
          { required: true, message: "问题主题不能为空", trigger: "blur" },
        ],
        ismandatory: [
          { required: true, message: "是否必填不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
          { required: true, message: "问题类型不能为空", trigger: "blur" },
        ],
        suitway: [
          { required: true, message: "问卷方式不能为空", trigger: "blur" },
@@ -1290,8 +1367,8 @@
          sdadd: ["sss", "ssccss", "ssaas", "ss"],
        },
      ],
      addvalue: "添加题目",
      // 题目表格数据
      addvalue: "添加问题",
      // 问题表格数据
      userList: [],
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
@@ -1310,13 +1387,22 @@
      delScriptVOList: [],
      illnesslistapi: [],
      illnesslist: [],
      tempDetpRelevanceslist: [],
      tempDetpRelevanceslist: [], //科室数据
      tempDetpRelevanceslistform: [], //科室数据
      tempbelongWards: [], //病区数据
      tempbelongWardsform: [], //病区数据
      optionstag: [],
      valuetype: [],
      qremark: [],
      hosplist: [],
      deptlist: [],
      usable: [
        { value: "0", label: "可用" },
        { value: "1", label: "停用" },
      ],
      longtype: [
        { value: "0", label: "普通任务" },
        { value: "1", label: "长期任务" },
      ],
      required: [
        { value: "1", label: "必填" },
@@ -1328,29 +1414,15 @@
        pageNum: 1,
        pageSize: 10,
      },
      arr: [
        [
          { id: 1, grade: "5" },
          { id: 2, grade: "5" },
          { id: 3, grade: "5" },
          { id: 4, grade: "5" },
        ],
        [
          { id: 1, grade: "5" },
          { id: 3, grade: "5" },
          { id: 4, grade: "5" },
        ],
        [
          { id: 1, grade: "5" },
          { id: 2, grade: "5" },
          { id: 4, grade: "5" },
        ],
      ],
      belongWards: [],
      belongDepts: [],
      queryParamsdept: {
        tempid: "",
        type: 1,
      },
    };
  },
  activated() {
    console.log(this.id);
    if (this.id != this.$route.query.id) {
      this.getissueinfo();
      this.gettabList();
@@ -1363,9 +1435,11 @@
        this.ruleForm.svyLibTemplateTagList.filter(
          (item) => item.isoperation != 3
        );
        this.ruleForm.suitway = this.ruleForm.suitway.split(",");
      this.delScriptVOList = [];
      this.tempDetpRelevanceslistform = [];
      this.tempbelongWardsform = [];
      this.$forceUpdate();
      console.log(this.ruleForm.svyTemplateLibScripts);
    }
  },
  created() {
@@ -1379,6 +1453,10 @@
    this.courtyardlist = store.getters.courtyardlist;
    this.askvaluetype = store.getters.askvaluetype;
    this.appraiselist = store.getters.appraiselist;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    console.log(this.belongWards, "belongWards");
    console.log(this.belongDepts, "belongDepts");
    // this.test();
  },
@@ -1396,7 +1474,6 @@
      return this.illnesslist.length - 10;
    },
  },
  methods: {
    // 公共方法---------------
    getIndexInArray(arr, obj) {
@@ -1423,14 +1500,17 @@
    // 获取数据
    getissueinfo() {
      this.id = this.$route.query.id;
      (this.ruleForm = {
      this.queryParamsdept.tempid = this.id;
      this.ruleForm = {
        svyTemplateLibScripts: [],
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
        scoreType: "4",
        isAvailable: "0",
      }),
        (this.topicobj = {});
        isenable: "0",
        longTemp: "0",
        sendDay: "5",
      };
      this.topicobj = {};
      if (this.id) {
        getQtemplateobj({ svyid: this.id }).then((res) => {
@@ -1438,7 +1518,6 @@
          this.dynamicTags = this.ruleForm.svyLibTemplateTagList.map(
            this.processElement
          );
          this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
          this.ruleForm.suitway = this.ruleForm.suitway.split(",");
        });
        getillness({ outid: this.id, type: 5 }).then((res) => {
@@ -1451,12 +1530,26 @@
        this.ruleForm.isenable = "1";
      }
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      // 分类
      getQtemplateclassify({}).then((res) => {
        this.optionsclass = res.rows;
      });
      this.tempDetpRelevanceslist = [];
      this.tempbelongWards = [];
      depthospgetsonlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          arr.forEach((item) => {
            if (item.deptType == 1) {
              this.deptlist.push(item);
              this.tempDetpRelevanceslist.push(item.deptCode);
            } else if (item.deptType == 2) {
              this.hosplist.push(item);
              this.tempbelongWards.push(item.deptCode);
            }
          });
        }
      });
    },
    submitForm(formName) {
@@ -1469,9 +1562,11 @@
      }
      if (this.id) {
        this.ruleForm.isoperation = 2;
        this.ruleForm.tempDetpRelevances = null;
        compileQtemplate(this.ruleForm).then((res) => {
          this.$modal.msgSuccess("修改成功");
          this.confirmillness();
          this.putbelongDepts();
          this.$modal.closeLoading();
          this.$router.go(-1);
        });
@@ -1480,46 +1575,86 @@
        this.ruleForm.version = this.ruleForm.version
          ? this.ruleForm.version
          : "1.0";
        this.ruleForm.tempDetpRelevances = null;
        compileQtemplate(this.ruleForm).then((res) => {
          this.$modal.msgSuccess("新增成功");
          this.confirmillness(res.data);
          this.putbelongDepts(res.data);
          this.$modal.closeLoading();
          this.$router.go(-1);
        });
      }
    },
    // 科室处理
    // 科室/院区处理
    Departmenttreatment() {
      this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
      this.ruleForm.svyTemplateLibScripts =
        this.ruleForm.svyTemplateLibScripts.concat(this.delScriptVOList);
      const result = this.tempDetpRelevanceslist.map(
        (subArr) => subArr[subArr.length - 1]
      );
      // id数组查数组对象
      result.forEach((item) => {
        const condition = this.ruleForm.tempDetpRelevances.some(
          (obj) => obj.deptId === item
        );
        if (!condition) {
          listDept({ deptId: item }).then((res) => {
            console.log(res.data[0]);
            res.data[0].type = 2;
            this.ruleForm.tempDetpRelevances.push(res.data[0]);
      console.log(this.tempDetpRelevanceslist, "tempDetpRelevanceslist");
      console.log(this.deptlist, "deptlist");
      console.log(this.hosplist, "deptlist");
      this.tempDetpRelevanceslist.forEach((item) => {
        console.log(item);
        let result = this.deptlist.some((obj) => obj.deptCode == item);
        console.log(this.result, "result");
        if (!result) {
          this.tempDetpRelevanceslistform.push({
            deptType: 1,
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 1,
          });
        }
      });
      // 数组对象查id数组
      this.ruleForm.tempDetpRelevances.forEach((item) => {
        const condition = result.some((obj) => obj === item.deptId);
        if (!condition) {
          const index = this.ruleForm.tempDetpRelevances.indexOf(item);
          this.ruleForm.tempDetpRelevances[index].delFlag = 1;
      this.tempbelongWards.forEach((item) => {
        let result = this.hosplist.some((obj) => obj.deptCode == item);
        console.log(this.result, "resulthhh");
        if (!result) {
          this.tempbelongWardsform.push({
            deptType: 2,
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 1,
          });
        }
      });
      console.log(this.tempbelongWardsform, "tempbelongWardsform");
      console.log(
        this.tempDetpRelevanceslistform,
        "tempDetpRelevanceslistform"
      );
      // return
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      }, 500);
    },
    // 科室删除触发
    removetag(row) {
      let result = this.deptlist
        .filter((item) => item.deptCode == row)
        .map((item) => item.id);
      console.log(result.length);
      if (result.length) {
        depthospgetsondel(result).then((res) => {
          if (res.code) {
          }
        });
      }
    },
    // 删除删除触发
    removehpsp(row) {
      let result = this.hosplist
        .filter((item) => item.deptCode == row)
        .map((item) => item.id);
        if (result.length) {
          depthospgetsondel(result).then((res) => {
            if (res.code) {
            }
          });
        }
    },
    // 下一步
    nextstep() {
@@ -1548,7 +1683,7 @@
          });
        });
    },
    // 获取题目列表
    // 获取问题列表
    getaddtopiclist() {
      this.drawer = true;
      this.queryParams.scoretype = this.ruleForm.scoreType;
@@ -1559,7 +1694,7 @@
        console.log(this.userList);
      });
    },
    // 新增题目
    // 新增问题
    addtopic(row) {
      row.isoperation = 1;
      row.svyLibScriptOptions.forEach((item) => {
@@ -1618,7 +1753,7 @@
      console.log(this.ruleForm.svyTemplateLibScripts);
    },
    // 修改题目信息
    // 修改问题信息
    Submittopicobj() {
      this.$modal
        .confirm(
@@ -1634,7 +1769,7 @@
          this.drawer = false;
          this.sortFn();
          this.$modal.msgSuccess("题目新增成功,保存模板失效");
          this.$modal.msgSuccess("问题新增成功,保存模板失效");
        });
    },
    // 新增变量
@@ -1738,6 +1873,24 @@
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    // 保存科室/病区
    putbelongDepts(id) {
      if (this.tempDetpRelevanceslistform.length > 0) {
        depthospgetson(this.tempDetpRelevanceslistform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("科室新增成功");
          }
        });
      }
      if (this.tempbelongWardsform.length > 0) {
        depthospgetson(this.tempbelongWardsform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("院区新增成功");
          }
        });
      }
    },
    resetQuery() {
      this.queryParams = { pageNum: 1, pageSize: 10 };
      this.getaddtopiclist();
@@ -1888,7 +2041,7 @@
    sumArray(arr) {
      // const arrsum = arr;
      // arrsum.forEach((item) => {
      //   // 判断题目和模板层级
      //   // 判断问题和模板层级
      //   console.log(item, "一条链路");
      //   const totalScore = item.reduce((accumulator, current) => {
@@ -1915,7 +2068,7 @@
      if (allGreaterThanTen) {
        this.$modal.msgSuccess("分值校验成功");
      } else {
        this.$modal.msgError("题目分值累加和模板分值不符");
        this.$modal.msgError("问题分值累加和模板分值不符");
      }
    },
@@ -1929,9 +2082,9 @@
        );
        if (notInB.length) {
          this.$modal.msgError("题目未全部使用");
          this.$modal.msgError("问题未全部使用");
        } else {
          this.$modal.msgSuccess("题目全部使用");
          this.$modal.msgSuccess("问题全部使用");
        }
      });
      arr.forEach((item) => {
@@ -1940,10 +2093,10 @@
          return acc;
        }, {});
        const whether = item.values(idCount).some((count) => count > 1); // 如果有任何 id 的计数大于 1 就返回 true
        if (!whether) this.$modal.msgError("配置项有题目重复");
        if (!whether) this.$modal.msgError("配置项有问题重复");
      });
    },
    // 题目和选项间的分值判断
    // 问题和选项间的分值判断
    Scorejudgment() {
      let scorearr = this.topicobj.svyLibScriptOptions;
      let isValid = scorearr.every((score, index) => {
src/views/knowledge/questionnaire/index.vue
@@ -3,7 +3,7 @@
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">问卷类型</div>
        <div class="top-wj">问卷分类</div>
        <div class="top-tj" @click="Newcategory">+添加</div>
      </div>
      <div class="center-ss">
@@ -94,7 +94,7 @@
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="主要内容" prop="userName">
              <el-form-item label="问卷描述" prop="userName">
                <el-input
                  v-model="queryParams.description"
                  placeholder="请输入"
@@ -141,7 +141,7 @@
                  icon="el-icon-plus"
                  size="medium"
                  @click="handleAdd"
                  v-hasPermi="['system:user:add']"
                  >新增</el-button
                >
              </el-col>
@@ -154,7 +154,6 @@
                  size="medium"
                  :disabled="multiple"
                  @click="handleDelete"
                  v-hasPermi="['system:user:remove']"
                  >删除</el-button
                >
              </el-col>
@@ -182,16 +181,9 @@
                width="160"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="版本"
                align="center"
                key="version"
                prop="version"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="主要内容"
                label="问卷描述"
                align="center"
                key="description"
                prop="description"
@@ -207,7 +199,6 @@
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
@@ -261,7 +252,6 @@
                    size="medium"
                    type="text"
                    @click="goQRCode(scope.row)"
                    v-hasPermi="['system:user:edit']"
                  >
                    <span class="button-text"
                      ><i class="el-icon-edit"></i>预览</span
@@ -271,7 +261,6 @@
                    size="medium"
                    type="text"
                    @click="ViewQuestionnaire(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textck"
                      ><i class="el-icon-edit"></i>查看</span
                    ></el-button
@@ -280,7 +269,6 @@
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-edit"></i>修改</span
                    ></el-button
@@ -289,7 +277,6 @@
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-textsc"
                      ><i class="el-icon-edit"></i>删除</span
                    ></el-button
src/views/login.vue
@@ -95,8 +95,8 @@
    return {
      codeUrl: "",
      loginForm: {
        username: "admin",
        password: "admin123",
        username: "",
        password: "",
        rememberMe: false,
        code: "",
        uuid: "",
src/views/outsideChainwt.vue
@@ -159,6 +159,7 @@
      taskid: 355,
      patid: 265823,
      kcb: "",
      excep:'',
      questionList: [
        // {
        //   scriptType: 1,
@@ -347,6 +348,7 @@
      let form = {
        param1: this.taskid,
        param2: this.patid,
        excep:this.excep,
        serviceSubtaskDetailList: [],
      };
      const arr = structuredClone(this.questionList);
@@ -376,6 +378,18 @@
        svyLibTemplateScriptVOS: [],
      };
      const arr = structuredClone(this.questionList);
      console.log(arr,'srr')
      arr.forEach((item, index) => {
        var obj = item.svyLibTemplateTargetoptions.find(
          (items) => items.optioncontent == item.scriptResult
        );
        if (obj.isabnormal) {
          console.log(obj.isabnormal);
          form.excep = 1;
          this.excep=1;
        }
      });
      arr.forEach((item) => {
        if (item.scriptType == 2 && item.scriptResult[0]) {
          item.scriptResult = item.scriptResult.join("&");
@@ -482,10 +496,7 @@
    }
  }
}
.red-star {
  position: relative;
  padding-right: 15px;
}
.red-star {
  ::v-deep.el-radio__label {
    position: relative;
src/views/outsideChainxj.vue
@@ -1,16 +1,47 @@
<template>
  <div class="questionnaire">
    <div class="CONTENT">
    <!-- <div class="CONTENT">
      <div class="title">新华医院医护知识宣教</div>
      <div class="preview-left">
        <!-- 单选 -->
        <div v-html="richText"></div>
      </div>
      <!-- <el-form :model="formData" label-width="80px">
        <el-form-item>
          <el-button type="primary" @click="submitForm">确认查看</el-button>
        </el-form-item>
      </el-form> -->
    </div> -->
    <div class="CONTENT" >
      <div class="preview-left">
        <div class="toptitle">
          <div class="title">{{ taskname ? taskname : "新华医院医护知识宣教" }}</div>
          <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。"
            }}
            <!-- 亲爱的患者/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
        </div>
        <el-divider></el-divider>
        <div v-html="richText"></div>
        <div
          style="
            text-align: center;
            padding-top: 50px;
            font-size: 24px;
            color: #175997;
            font-weight: 600;
            margin-bottom: 10px;
          "
        >
          感谢您的阅览!
        </div>
        <div style="font-size: 20px">
          {{
            jsy
              ? jsy
              : "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!"
          }}
        </div>
      </div>
    </div>
  </div>
</template>
@@ -42,6 +73,9 @@
      },
      richText: "<p>Hello, <strong>world</strong>!</p>",
      url:'',
      taskname:'',
      kcb:'',
      jsy:'',
    };
  },
@@ -53,6 +87,7 @@
    getQuestionnaire() {
      this.taskid = this.$route.query.param1;
      this.patid = this.$route.query.param2;
      this.taskname = this.$route.query.param3;
      // // let taskid =
      // //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw==";
      // // let patid =
@@ -67,6 +102,8 @@
      getExternalfollowup({ param1: this.taskid, param2: this.patid }).then((res) => {
        if (res.code == 200) {
          this.url = res.data.script[0].richText;
          this.jsy = res.data.jsy;
          this.kcb = res.data.kcb;
          // 临时获取数据
      axios
        .get(this.url)
@@ -137,13 +174,10 @@
</script>
<style lang="scss" scoped>
.questionnaire {
  // background-image: url("../assets/images/chainbackground.jpg");
  // background-repeat: no-repeat;
  // background-position: center center;
  // background-size: cover;
  // height: 100vh;
  background-image: url("../assets/images/chainbackground1.jpg");
  background-color: #f9f9fb;
  background-size: cover;
  background-attachment: fixed; /* 保持背景固定 */
  background-position: center;
@@ -152,8 +186,10 @@
  margin: 0;
  padding: 0;
  .CONTENT {
    padding: 10px;
    padding-top: 15px;
    padding-bottom: 15px;
    .title {
      color: #3769f3;
      font-size: 22px;
      font-weight: bold;
      margin-bottom: 20px;
@@ -162,9 +198,14 @@
  }
}
.preview-left {
  margin: 20px;
  margin: 10px;
  margin-bottom: 60px;
  background-color: #fff;
  border-radius: 5px;
  //   margin: 20px;
  padding: 30px;
  padding: 10px;
  padding-bottom: 100px;
  height: 100%;
  // background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
@@ -175,10 +216,6 @@
    .dev-text {
      margin-bottom: 10px;
    }
  }
  img {
    width: 80vw !important;
    height: 20vh !important;
  }
}
</style>
src/views/patient/follow/index.vue
@@ -36,47 +36,10 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="是否会员" prop="tagId">
            <el-select
              v-model="queryParams.whether"
              multiple
              placeholder="请选择"
            >
              <el-option
                v-for="item in whether"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="过滤时间" prop="tagId">
            <el-date-picker
              v-model="queryParams.value1"
              type="daterange"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
            >
            </el-date-picker>
          </el-form-item>
          <el-row>
            <el-form-item label="过滤类型" prop="tagId">
              <el-select
                v-model="queryParams.tagIds"
                multiple
                placeholder="请选择"
              >
                <el-option
                  v-for="item in Filterreason"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item>
              <el-button
                type="primary"
@@ -95,81 +58,96 @@
          </el-row>
        </el-form>
        <el-row :gutter="10" class="mb8">
          <el-col :span="1.5">
            <el-button
              type="primary"
              plain
              icon="el-icon-plus"
              size="medium"
              @click="handleAdd"
              v-hasPermi="['system:user:add']"
              >新增</el-button
            >
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="danger"
              plain
              icon="el-icon-delete"
              size="medium"
              :disabled="multiple"
              @click="handleDelete"
              v-hasPermi="['system:user:remove']"
              >删除</el-button
            >
          </el-col>
          <!-- <el-col :span="1.5"> </el-col> -->
        </el-row>
        <el-table
          v-loading="loading"
          :data="userList"
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="50" align="center" />
          <el-table-column
          <!-- <el-table-column
            label="序号"
            align="center"
            key="id"
            prop="id"
          /> -->
          <el-table-column
            fixed
            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="checkBy"
            prop="checkBy"
            width="120"
            key="age"
            prop="age"
            width="60"
          />
          <el-table-column
            label="审核状态"
            label="出生年月"
            align="center"
            key="checkFlag"
            prop="checkFlag"
            width="120"
          />
            key="birthdate"
            prop="birthdate"
            width="160"
          >
          </el-table-column>
          <el-table-column
          <!-- <el-table-column
            label="过滤类型"
            align="center"
            key="filterdesc"
            prop="filterdesc"
            key="notrequiredreason"
            prop="notrequiredreason"
            width="120"
          /><el-table-column
            label="过滤申请说明"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.futter_patient"
                :value="scope.row.notrequiredreason"
              />
            </template>
          </el-table-column> -->
          <el-table-column
            label="过滤原因"
            align="center"
            key="filternotes"
            prop="filternotes"
            key="notrequiredreason"
            prop="notrequiredreason"
            width="190"
          />
          <el-table-column
            label="居住地"
            align="center"
            key="placeOfResidence"
            prop="placeOfResidence"
            width="180"
            :show-overflow-tooltip="true"
          />
          <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.tagname }} </span>
            </template>
          </el-table-column>
          <el-table-column
            label="证件号码"
            align="center"
            key="idcardno"
            prop="idcardno"
            width="190"
          />
          <el-table-column
            label="联系方式"
            align="center"
@@ -178,34 +156,17 @@
            width="120"
          />
          <el-table-column
            label="家庭住址"
            label="建档日期"
            align="center"
            key="idcardno"
            prop="idcardno"
            width="190"
          />
          <el-table-column
            label="申请日期"
            align="center"
            key="applyTime"
            prop="applyTime"
            key="createTime"
            prop="createTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.applyTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</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"
@@ -251,124 +212,7 @@
      </el-col>
    </el-row>
    <!-- 添加或修改用户配置对话框 -->
    <el-dialog
      :title="amendtag ? '修改患者信息' : '新增患者'"
      :visible.sync="Labelchange"
      width="900px"
    >
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
        <el-row>
          <el-col :span="12">
            <el-form-item label="姓名" prop="name">
              <el-input
                v-model="form.name"
                placeholder="请输入姓名"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="性别" prop="sex">
              <el-select v-model="form.sex" placeholder="请选择性别">
                <el-option
                  v-for="dict in dict.type.sys_user_sex"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="证件类型" prop="idcardtype">
              <el-select v-model="form.idcardtype" placeholder="请选择性别">
                <el-option
                  v-for="item in paperstypes"
                  :key="item.papersname"
                  :label="item.papersname"
                  :value="item.papersname"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="证件号" prop="idcardno">
              <el-input
                v-model="form.idcardno"
                placeholder="请输入证件号"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="本人手机号" prop="telcode">
              <el-input
                v-model="form.telcode"
                placeholder="请输入手机号"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="亲属手机号" prop="relativetelcode">
              <el-input
                v-model="form.relativetelcode"
                placeholder="请输入亲属手机号"
                type="password"
                maxlength="20"
                show-password
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="年龄" prop="age">
              <el-input
                v-model="form.age"
                placeholder="请输入年龄"
                maxlength="30"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="患者标签">
              <!-- <el-select v-model="form.sex" placeholder="请选择"> -->
              <el-select v-model="form.tagList" multiple placeholder="请选择">
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagid"
                >
                </el-option>
              </el-select>
              <!-- </el-select> -->
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="备注">
              <el-input
                v-model="form.remark"
                type="textarea"
                placeholder="请输入内容"
              ></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 +220,8 @@
import { delUser } from "@/api/system/user";
import {
  listfiltration,
  editfiltration,
  messagelistpatient,
  alterpatient,
  addfiltration,
  particularpatient,
  delfiltration,
@@ -392,7 +236,7 @@
export default {
  name: "Userhuanze",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  dicts: ["sys_normal_disable", "sys_user_sex", "futter_patient"],
  components: { Treeselect },
  data() {
    return {
@@ -450,10 +294,10 @@
      propss: { multiple: true },
      optionstag: [], //标签列表
      Patientrange: [
        {
          name: "门诊",
          id: 1,
        },
        // {
        //   name: "门诊",
        //   id: 1,
        // },
        {
          name: "住院",
          id: 2,
@@ -497,6 +341,8 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        allhosp: "1",
        notrequiredFlag: 1,
        idcardno: undefined,
        name: undefined,
        status: undefined,
@@ -522,7 +368,7 @@
    /** 查询患者列表 */
    getList() {
      this.loading = true;
      listfiltration(this.queryParams).then((response) => {
      messagelistpatient(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
        this.total = response.total;
@@ -609,11 +455,10 @@
      this.amendtag = false;
    },
    //修改/新增患者
    submitForm() {
      if (this.amendtag) {
        editfiltration(this.form)
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
@@ -640,14 +485,19 @@
    handleDelete(row) {
      const userIds = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return delfiltration(userIds);
        .confirm('是否确认取消用户编号为"' + userIds + '"的数据项过滤?')
        .then( ()=> {
          row.notrequiredFlag=0
          alterpatient(row)
          .then((response) => {
            console.log(response);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("修改成功");
          });
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
    /** 导出按钮操作 */
src/views/patient/patient/behospitalized.vue
@@ -16,51 +16,42 @@
              v-model="queryParams.patname"
              placeholder="请输入姓名"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="患者编号" prop="patid">
          <el-form-item label="患者住院号" prop="patid">
            <el-input
              v-model="queryParams.patid"
              placeholder="请输入患者编号"
              clearable
              style="width: 250px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="护理等级" prop="tagId">
            <el-select v-model="queryParams.Patientid" placeholder="请选择">
              <el-option
                v-for="dict in dict.type.nursinggrade"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
          <el-form-item label="患者来源" prop="tagId">
            <el-select
                v-model="queryParams.searchscope"
                placeholder="请选择患者来源"
              >
              </el-option>
            </el-select>
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
          </el-form-item>
          <el-form-item label="患者范围" prop="tagId">
            <el-select v-model="queryParams.Patientid" placeholder="请选择">
              <el-option
                v-for="item in Patientrange"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label=" 入院日期 " prop="createTime">
          <el-form-item label=" 入院日期范围 " prop="createTime">
            <el-date-picker
              clearable
              v-model="queryParams.createTime"
              type="date"
              value-format="yyyy-MM-dd"
              placeholder="请选择 就诊日期 "
            >
            </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-row>
@@ -118,32 +109,7 @@
              >删除</el-button
            >
          </el-col>
          <el-col :span="19">
            <div class="documentf">
              <div class="document">
                <el-button
                  type="info"
                  plain
                  icon="el-icon-upload2"
                  size="medium"
                  @click="handleImport"
                  v-hasPermi="['system:user:import']"
                  >导入</el-button
                >
              </div>
              <div class="document">
                <el-button
                  type="warning"
                  plain
                  icon="el-icon-download"
                  size="medium"
                  @click="handleExport"
                  v-hasPermi="['system:user:export']"
                  >导出</el-button
                >
              </div>
            </div>
          </el-col>
          <!-- <el-col :span="1.5"> </el-col> -->
        </el-row>
        <el-table
@@ -160,22 +126,23 @@
            prop="id"
          /> -->
          <el-table-column
            label="入院时间"
            label="入院日期"
            align="center"
            key="createTime"
            prop="createTime"
            key="starttime"
            prop="starttime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.starttime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="住院号"
            align="center"
            key="patid"
            prop="patid"
            key="patno"
            prop="patno"
          width="120"
          />
          <el-table-column
            label="姓名"
@@ -214,10 +181,17 @@
          <el-table-column
            label="病区"
            label="科室"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="病区"
            align="center"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
            width="120"
          />
          <el-table-column
@@ -237,8 +211,8 @@
          <el-table-column
            label="责任护士"
            align="center"
            key="Sister"
            prop="Sister"
            key="nurseName"
            prop="nurseName"
            width="120"
          />
@@ -259,7 +233,6 @@
                    query: { id: scope.row.patid },
                  })
                "
                v-hasPermi="['system:user:edit']"
                ><span class="button-textsc"
                  ><i class="el-icon-zoom-in"></i>查看</span
                ></el-button
@@ -386,6 +359,7 @@
import Treeselect from "@riophae/vue-treeselect";
import { listDept } from "@/api/system/dept";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import store from "@/store";
export default {
  name: "behospitalized",
@@ -425,6 +399,20 @@
        { papersname: "护照" },
        { papersname: "中国港澳居民身份证" },
        { papersname: "中国台湾居民身份证" },
      ],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      // 表单参数
      form: {
@@ -479,6 +467,7 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        cry: 0,
        idcardno: undefined,
        name: undefined,
        status: undefined,
@@ -540,6 +529,7 @@
    },
  },
  created() {
    this.getList();
    this.listDept();
    this.gettabList();
@@ -548,6 +538,22 @@
    /** 查询患者列表 */
    getList() {
      this.loading = true;
      if (this.queryParams.searchscope == 1) {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes=null;
      } else if (this.queryParams.searchscope == 2) {
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.queryParams.leaveldeptcodes=null;
      } else {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      listpatient(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
src/views/patient/patient/hospital.vue
@@ -41,26 +41,30 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="患者范围" prop="tagId">
            <el-select v-model="queryParams.Patientid" placeholder="请选择">
              <el-option
                v-for="item in Patientrange"
                :key="item.id"
                :label="item.name"
                :value="item.id"
          <el-form-item label="患者来源" prop="tagId">
            <el-select
                v-model="queryParams.searchscope"
                placeholder="请选择患者来源"
              >
              </el-option>
            </el-select>
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
          </el-form-item>
          <el-form-item label=" 入院日期 " prop="createTime">
            <el-date-picker
              clearable
              v-model="queryParams.createTime"
              type="date"
              value-format="yyyy-MM-dd"
              placeholder="请选择 就诊日期 "
            >
            </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-row>
@@ -118,32 +122,7 @@
              >删除</el-button
            >
          </el-col>
          <el-col :span="19">
            <div class="documentf">
              <div class="document">
                <el-button
                  type="info"
                  plain
                  icon="el-icon-upload2"
                  size="medium"
                  @click="handleImport"
                  v-hasPermi="['system:user:import']"
                  >导入</el-button
                >
              </div>
              <div class="document">
                <el-button
                  type="warning"
                  plain
                  icon="el-icon-download"
                  size="medium"
                  @click="handleExport"
                  v-hasPermi="['system:user:export']"
                  >导出</el-button
                >
              </div>
            </div>
          </el-col>
          <!-- <el-col :span="1.5"> </el-col> -->
        </el-row>
        <el-table
@@ -174,8 +153,9 @@
          <el-table-column
            label="住院号"
            align="center"
            key="patid"
            prop="patid"
            key="patno"
            prop="patno"
          width="120"
          />
          <el-table-column
            label="姓名"
@@ -225,10 +205,17 @@
            width="120"
          /> -->
          <el-table-column
            label="病区"
            label="科室"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="病区"
            align="center"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
            width="120"
          />
          <el-table-column
@@ -248,8 +235,8 @@
          <el-table-column
            label="责任护士"
            align="center"
            key="Sister"
            prop="Sister"
            key="nurseName"
            prop="nurseName"
            width="120"
          />
@@ -270,7 +257,7 @@
                    query: { id: scope.row.patid },
                  })
                "
                v-hasPermi="['system:user:edit']"
                ><span class="button-textsc"
                  ><i class="el-icon-zoom-in"></i>查看</span
                ></el-button
@@ -396,6 +383,7 @@
import Treeselect from "@riophae/vue-treeselect";
import { listDept } from "@/api/system/dept";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import store from "@/store";
export default {
  name: "behospitalized",
@@ -430,6 +418,20 @@
      amendtag: false, //是否修改
      // 日期范围
      dateRange: [],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      paperstypes: [
        { papersname: "身份证" },
        { papersname: "护照" },
@@ -489,6 +491,7 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        cry: 1,
        idcardno: undefined,
        name: undefined,
        status: undefined,
@@ -497,49 +500,7 @@
      },
      // 表单校验
      rules: {
        // userName: [
        //   { required: true, message: "用户名称不能为空", trigger: "blur" },
        //   {
        //     min: 2,
        //     max: 20,
        //     message: "用户名称长度必须介于 2 和 20 之间",
        //     trigger: "blur",
        //   },
        // ],
        // nickName: [
        //   { required: true, message: "用户昵称不能为空", trigger: "blur" },
        // ],
        // password: [
        //   { required: true, message: "用户密码不能为空", trigger: "blur" },
        //   {
        //     min: 5,
        //     max: 20,
        //     message: "用户密码长度必须介于 5 和 20 之间",
        //     trigger: "blur",
        //   },
        // ],
        // email: [
        //   {
        //     type: "email",
        //     message: "请输入正确的邮箱地址",
        //     trigger: ["blur", "change"],
        //   },
        // ],
        // phonenumber: [
        //   {
        //     pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
        //     message: "请输入正确的手机号码",
        //     trigger: "blur",
        //   },
        // ],
        // IDnumber: [
        //   {
        //     pattern:
        //       /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
        //     message: "请输入正确的身份证号码",
        //     trigger: "blur",
        //   },
        // ],
      },
    };
  },
@@ -550,6 +511,7 @@
    },
  },
  created() {
    this.getList();
    this.listDept();
    this.gettabList();
@@ -557,6 +519,22 @@
  methods: {
    /** 查询患者列表 */
    getList() {
      if (this.queryParams.searchscope == 1) {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes=null;
      } else if (this.queryParams.searchscope == 2) {
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.queryParams.leaveldeptcodes=null;
      } else {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.loading = true;
      listpatient(this.queryParams).then((response) => {
        console.log(response);
src/views/patient/patient/index.vue
@@ -12,8 +12,8 @@
          v-model="queryParams.allhosp"
          @tab-click="handleClick"
        >
          <el-tab-pane label="患者列表" name="0"></el-tab-pane>
          <el-tab-pane label="住院患者" name="1"></el-tab-pane>
          <!-- <el-tab-pane label="患者列表" name="0"></el-tab-pane> -->
          <el-tab-pane label="出入院患者" name="1"></el-tab-pane>
          <el-tab-pane label="门诊患者" name="2"></el-tab-pane>
          <el-tab-pane label="体检患者" name="3"></el-tab-pane>
        </el-tabs>
@@ -101,7 +101,7 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="姓名" prop="name">
              <el-form-item label="患者姓名" prop="name">
                <el-input
                  v-model="queryParams.name"
                  placeholder="请输入姓名"
@@ -109,6 +109,20 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="患者来源" prop="tagId">
            <el-select
                v-model="queryParams.searchscope"
                placeholder="请选择患者来源"
              >
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
          </el-form-item>
              <el-form-item label="联系电话" prop="telcode">
                <el-input
                  v-model="queryParams.telcode"
@@ -147,18 +161,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"
@@ -215,13 +218,13 @@
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
              <!-- <el-table-column
                fixed
                label="序号"
                align="center"
                key="id"
                prop="id"
              />
              /> -->
              <el-table-column
                fixed
                label="姓名"
@@ -239,14 +242,14 @@
                align="center"
                key="age"
                prop="age"
                width="120"
                width="60"
              />
              <el-table-column
                label="出生年月"
                align="center"
                key="birthdate"
                prop="birthdate"
                width="160"
                width="120"
              >
              </el-table-column>
              <el-table-column
@@ -254,7 +257,8 @@
                align="center"
                key="placeOfResidence"
                prop="placeOfResidence"
                width="120"
                width="150"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="患者标签"
@@ -270,13 +274,7 @@
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="证件类型"
                align="center"
                key="idcardtype"
                prop="idcardtype"
                width="120"
              /><el-table-column
             <el-table-column
                label="证件号码"
                align="center"
                key="idcardno"
@@ -329,25 +327,22 @@
                        query: { id: scope.row.id },
                      })
                    "
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textsc"
                      ><i class="el-icon-zoom-in"></i>详情编辑</span
                    ></el-button
                  >
                  <!-- <el-button
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxga"
                      ><i class="el-icon-edit"></i>修改</span
                      ><i class="el-icon-edit"></i>患者过滤</span
                    ></el-button
                  > -->
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="Distributionservice(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-menu"></i>服务</span
                    ></el-button
@@ -510,7 +505,7 @@
            <el-form-item label="性别" prop="sex">
              <el-select v-model="form.sex" placeholder="请选择性别">
                <el-option
                  v-for="dict in dict.type.sys_user_sex"
                  v-for="dict in sextype"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
@@ -528,7 +523,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
        <el-row  v-if="!amendtag">
          <el-col :span="8">
            <el-form-item label="民族" prop="name">
              <el-input
@@ -557,30 +552,8 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="证件类型" prop="idcardtype">
              <el-select v-model="form.idcardtype" placeholder="请选择性别">
                <el-option
                  v-for="item in paperstypes"
                  :key="item.papersname"
                  :label="item.papersname"
                  :value="item.papersname"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="证件号" prop="idcardno">
              <el-input
                v-model="form.idcardno"
                placeholder="请输入证件号"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
        <el-row v-if="!amendtag">
          <el-col :span="12">
            <el-form-item label="出生地" prop="idcardno">
              <el-input
@@ -599,8 +572,9 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
          <el-col :span="amendtag?12:24"v-if="!amendtag" >
            <el-form-item label="患者类型">
              <el-select v-model="form.pattype" placeholder="请选择类型">
                <el-option
@@ -612,9 +586,32 @@
              </el-select>
            </el-form-item>
          </el-col>
          <!-- <el-col :span="12" v-if="amendtag">
            <el-form-item label="过滤说明">
              <el-select v-model="form.notrequiredreason" placeholder="请选择过滤类型">
                <el-option
                  v-for="item in dict.type.futter_patient"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col> -->
        </el-row>
        <el-row>
          <el-col :span="24">
          <el-col :span="24" v-if="amendtag">
            <el-form-item label="过滤原因">
              <el-input
                v-model="form.notrequiredreason"
                type="textarea"
                placeholder="请输入过滤原因"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24" v-if="!amendtag">
            <el-form-item label="备注">
              <el-input
                v-model="form.remark"
@@ -691,8 +688,7 @@
          <el-table-column prop="serial" label="序号"> </el-table-column>
          <el-table-column prop="name" label="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </el-table-column>
          <el-table-column prop="certificate" label="证件类型">
          </el-table-column>
          <el-table-column prop="certificatenum" label="证件号码">
          </el-table-column>
          <el-table-column prop="goday" label="出生日期"> </el-table-column>
@@ -731,8 +727,6 @@
          <el-table-column prop="serial" label="序号"> </el-table-column>
          <el-table-column prop="name" label="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </el-table-column>
          <el-table-column prop="certificate" label="证件类型">
          </el-table-column>
          <el-table-column prop="certificatenum" label="证件号码">
          </el-table-column>
          <el-table-column prop="goday" label="出生日期"> </el-table-column>
@@ -803,7 +797,7 @@
export default {
  name: "Patient",
  dicts: ["sys_normal_disable", "task_status", "sys_user_sex"],
  dicts: ["sys_normal_disable", "task_status", "sys_user_sex",'futter_patient'],
  components: { Treeselect },
  data() {
    return {
@@ -861,10 +855,7 @@
          value: "1",
          label: "在院患者",
        },
        {
          value: "2",
          label: "门诊患者",
        },
        {
          value: "3",
          label: "体检患者",
@@ -873,6 +864,17 @@
          value: "4",
          label: "出院患者",
        },
      ],
      sextype: [
        {
          value: 1,
          label: "男",
        },
        {
          value: 2,
          label: "女",
        },
      ],
      cardlist: [
@@ -891,13 +893,22 @@
          router: "/patient/hospital",
        },
        {
          name: "门诊患者",
          value: 56,
          router: "/patient/outpatient",
        },
        {
          name: "离世患者",
          value: 0,
        },
      ],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      // 表单参数
@@ -943,7 +954,7 @@
      // 查询参数
      queryParams: {
        pageNum: 1,
        allhosp: "0",
        allhosp: "1",
        pageSize: 10,
        idcardno: undefined,
        name: undefined,
@@ -974,9 +985,7 @@
            trigger: "blur",
          },
        ],
        idcardtype: [
          { required: true, message: "证件类型不能为空", trigger: "blur" },
        ],
        idcardno: [
          { required: true, message: "证件号能为空", trigger: "blur" },
          {
@@ -1007,10 +1016,8 @@
  methods: {
    /** 查询患者列表 */
    getList() {
      console.log(this.dict.type.sys_user_sex);
      this.loading = true;
      messagelistpatient(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
@@ -1071,6 +1078,22 @@
    },
    /** 搜索按钮操作 */
    handleQuery() {
      if (this.queryParams.searchscope == 1) {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes=null;
      } else if (this.queryParams.searchscope == 2) {
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.queryParams.leaveldeptcodes=null;
      } else {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.queryParams.pageNum = 1;
      this.getList();
    },
@@ -1096,7 +1119,6 @@
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      console.log(row);
      const userIds = row.id || this.ids;
      particularpatient(userIds).then((response) => {
        console.log(response);
@@ -1111,13 +1133,14 @@
        if (valid) {
          if (this.amendtag) {
            this.form.isoperation = 2;
            this.form.notrequiredFlag = 1;
            alterpatient(this.form)
              .then((response) => {
                console.log(response);
              })
              .then(() => {
                this.getList();
                this.$modal.msgSuccess("修改成功");
                this.$modal.msgSuccess("患者过滤成功");
              });
          } else {
            this.form.isoperation = 1;
@@ -1253,7 +1276,7 @@
  //   display: flex;
  margin-top: 20px;
  margin: 20px;
  padding: 30px;
  padding: 15px;
  background: #d0e9fd;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
src/views/patient/patient/profile/index.vue
@@ -44,23 +44,17 @@
        >
        <el-tabs v-model="sonactiveName" @tab-click="handleClickson">
          <el-tab-pane name="outpatient"
            ><span class="mulsz" slot="label"
              >门诊({{ mznumber }})</span
            ></el-tab-pane
            ><span class="mulsz" slot="label">门诊</span></el-tab-pane
          >
          <el-tab-pane name="inhospital"
            ><span class="mulsz" slot="label"
              >在院({{ zynumber }})
            </span></el-tab-pane
            ><span class="mulsz" slot="label">在院 </span></el-tab-pane
          >
          <el-tab-pane name="checkout"
            ><span class="mulsz" slot="label"
              >出院({{ jynumber }})
            </span></el-tab-pane
            ><span class="mulsz" slot="label">出院 </span></el-tab-pane
          >
        </el-tabs>
      </el-tab-pane>
      <el-tab-pane name="monitor">
      <!-- <el-tab-pane name="monitor">
        <span class="mulsz" slot="label"
          ><i class="el-icon-s-data"></i> 健康监测</span
        >
@@ -97,7 +91,7 @@
            </span></el-tab-pane
          >
        </el-tabs></el-tab-pane
      >
      > -->
      <el-tab-pane name="serve">
        <span class="mulsz" slot="label"
          ><i class="el-icon-s-custom"></i> 服务记录</span
@@ -390,18 +384,7 @@
            key="patname"
            prop="patname"
          />
          <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="年龄"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="联系电话"
            align="center"
@@ -410,10 +393,17 @@
            width="120"
          />
          <el-table-column
            label="诊断"
            label="入院诊断"
            align="center"
            key="diagname"
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="出院诊断"
            align="center"
            key="leavediagname"
            prop="leavediagname"
            width="190"
          />
@@ -425,14 +415,28 @@
            width="120"
          />
          <el-table-column
            label="接诊医生"
            label="所在病区"
            align="center"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
            width="120"
          />
          <el-table-column
            label="主治医生"
            align="center"
            key="drname"
            prop="drname"
            width="120"
          />
        </el-table>
          <el-table-column
            label="责任护士"
            align="center"
            key="nurseName"
            prop="nurseName"
            width="120"
          />
        </el-table>
        <pagination
          v-show="total > 0"
          :total="total"
@@ -447,8 +451,9 @@
          <el-table-column
            label="住院号"
            align="center"
            key="patid"
            prop="patid"
            key="patno"
            prop="patno"
            width="180"
          />
          <el-table-column
            label="姓名"
@@ -456,26 +461,13 @@
            key="patname"
            prop="patname"
          />
          <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="年龄"
            align="center"
            key="age"
            prop="age"
            width="120"
          />
          <el-table-column
            label="联系电话"
            align="center"
            key="telephone"
            prop="telephone"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="入院诊断"
            align="center"
@@ -483,19 +475,26 @@
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="出院诊断"
            align="center"
            key="leavediagname"
            prop="leavediagname"
            width="190"
          />
          <el-table-column
            label="病区"
            label="就诊科室"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="床位号"
            label="所在病区"
            align="center"
            key="bedNo"
            prop="bedNo"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
            width="120"
          />
          <el-table-column
@@ -505,29 +504,100 @@
            prop="drname"
            width="120"
          />
          <el-table-column
            label="责任护士"
            align="center"
            key="Sister"
            prop="Sister"
            key="nurseName"
            prop="nurseName"
            width="120"
          />
          <el-table-column
            label="床位号"
            align="center"
            key="bedNo"
            prop="bedNo"
            width="120"
          />
        </el-table>
      </div>
      <!-- 出院 -->
      <div v-if="sonactiveName == 'checkout'">
        <el-table :data="serviceDatacy" style="width: 100%">
          <el-table-column prop="godaya" label="体检类型"> </el-table-column>
          <el-table-column prop="hospitalname" label="体检套餐名称">
          </el-table-column>
          <el-table-column prop="result" label="体检预约日期">
          </el-table-column>
          <el-table-column prop="administrative" label="体检项目">
          </el-table-column>
          <el-table-column prop="administrative" label="体检报告日">
          </el-table-column>
          <el-table-column prop="administrative" label="体检总检报告">
          </el-table-column>
          <el-table-column
            label="住院号"
            align="center"
            key="patno"
            prop="patno"
            width="120"
          />
          <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
          <el-table-column
            label="联系电话"
            align="center"
            key="telcode"
            prop="telcode"
            width="120"
          />
          <el-table-column
            label="入院诊断"
            align="center"
            key="diagname"
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="出院诊断"
            align="center"
            key="leavediagname"
            prop="leavediagname"
            width="190"
          />
          <el-table-column
            label="就诊科室"
            align="center"
            key="deptname"
            prop="deptname"
            width="120"
          />
          <el-table-column
            label="所在病区"
            align="center"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
            width="120"
          />
          <el-table-column
            label="主治医生"
            align="center"
            key="drname"
            prop="drname"
            width="120"
          />
          <el-table-column
            label="责任护士"
            align="center"
            key="nurseName"
            prop="nurseName"
            width="120"
          />
          <el-table-column
            label="床位号"
            align="center"
            key="bedNo"
            prop="bedNo"
            width="120"
          />
        </el-table>
      </div>
    </div>
@@ -548,27 +618,41 @@
              border-left: 4px solid rgb(190, 65, 134);
            "
          >
            {{ item.name }}
          <span v-if="item.serviceType==2">出院随访</span>
          <span v-if="item.serviceType==1">监测评估</span>
          <span v-if="item.serviceType==3">门诊随访</span>
          <span v-if="item.serviceType==4">宣教关怀</span>
          </div>
          <el-divider></el-divider>
          <div style="margin-top: 10px">
            {{ item.name }}状态:已终止<span style="color: #2775b6"
              >(终止原因:患者痊愈回访结束,终止时间:2023-12-18 12:00)</span
            服务名称:<span style="color: #2775b6"
              >{{ item.templatename }}</span
            >
          </div>
          <div style="margin-top: 10px">
            {{ item.name }}发送时间:<span style="color: #2775b6"
              >2023-11-23 12:00</span
            创建时间:<span style="color: #2775b6"
              >{{item.createTime}}</span
            >
          </div>
          <div style="margin-top: 10px">
            {{ item.name }}完成时间:<span style="color: #2775b6"
              >2023-12-18 12:00</span
            完成时间:<span style="color: #2775b6"
              >{{ item.finishtime }}</span
            >
          </div>
          <div style="margin-top: 10px">
            疼痛程度:<span style="color: #2775b6">中度</span>
            <el-row :gutter="20">
              <el-col :span="12"
                >科室:
                <span style="color: #2775b6">{{ item.deptname }}</span></el-col
              >
              <el-col :span="12"
                >病区:
                <span style="color: #2775b6">{{ item.leavehospitaldistrictname }}</span></el-col
              >
            </el-row>
          </div>
          <div
            style="
              font-size: 20px;
@@ -577,37 +661,38 @@
              border-left: 4px solid rgb(65, 161, 190);
            "
          >
            人工{{ item.name }}记录
            人工记录
          </div>
          <div style="margin-top: 10px">
            <el-row :gutter="20">
              <el-col :span="6"
                >{{ item.name }}日期:
                <span style="color: #2775b6">2023-11-22 11:22</span></el-col
                >负责人:
                <span style="color: #2775b6">{{ item.createBy }}</span></el-col
              >
              <el-col :span="6"
                >{{ item.name }}人:
                <span style="color: #2775b6">吴小龙</span></el-col
                >主治医生:
                <span style="color: #2775b6">{{ item.drname }}</span></el-col
              >
              <el-col :span="6"
                >患者配合度: <span style="color: #2775b6">高</span></el-col
                >责任护士 <span style="color: #2775b6">{{ item.nurseName }}</span></el-col
              >
            </el-row>
          </div>
          <div style="margin-top: 10px">
            {{ item.name }}结果:
            <span style="color: #2775b6">患者痊愈,身体倍棒</span>
            结果状态:
            <span style="color: #2775b6" v-if="item.excep==0">服务正常</span>
            <span style="color: #B55E54" v-if="item.excep==1">异常</span>
          </div>
          <div style="margin-top: 10px">
            {{ item.name }}备注:
          <!-- <div style="margin-top: 10px">
            备注:
            <span style="color: #2775b6">提醒注意饮食健康</span>
          </div>
          </div> -->
        </el-card>
      </div>
    </div>
    <!-- 健康监测 -->
    <div class="medical-record" v-show="activeName == 'monitor'">
      <!-- 血压图标 -->
    <!-- <div class="medical-record" v-show="activeName == 'monitor'">
      <div v-show="sontwoactiveName == 'blood'" style="display: flex">
        <div
          id="xyeCharts"
@@ -625,7 +710,6 @@
          </el-card>
        </div>
      </div>
      <!-- 血糖 -->
      <div v-show="sontwoactiveName == 'glucose'" style="display: flex">
        <div
          id="xteCharts"
@@ -643,7 +727,6 @@
          </el-card>
        </div>
      </div>
      <!-- 体重 -->
      <div v-show="sontwoactiveName == 'weight'" style="display: flex">
        <div
          id="tzeCharts"
@@ -661,7 +744,6 @@
          </el-card>
        </div>
      </div>
      <!-- 心率 -->
      <div v-show="sontwoactiveName == 'heartrate'" style="display: flex">
        <div
          id="xleCharts"
@@ -679,7 +761,6 @@
          </el-card>
        </div>
      </div>
      <!-- 血氧 -->
      <div v-show="sontwoactiveName == 'bloodoxygen'" style="display: flex">
        <div
          id="xueyangeCharts"
@@ -697,7 +778,6 @@
          </el-card>
        </div>
      </div>
      <!-- 体温 -->
      <div v-show="sontwoactiveName == 'animalheat'" style="display: flex">
        <div
          id="tweCharts"
@@ -715,7 +795,7 @@
          </el-card>
        </div>
      </div>
    </div>
    </div> -->
    <el-dialog :title="titletb" :visible.sync="AddanumberVisible">
      <el-form :model="numberform" label-width="100px">
@@ -757,6 +837,11 @@
  alterpatient,
  Patientclinic,
} from "@/api/patient/homepage";
import {
  getsearchrResults,
  getTaskservelist,
} from "@/api/AiCentre/index";
import { listPatouthosp } from "@/api/smartor/patouthosp";
import { listpatient } from "@/api/patient/record";
@@ -781,7 +866,7 @@
      id: "",
      loading: false,
      activeName: "health", //一类导航
      sonactiveName: "outpatient", //健康监测导航
      sonactiveName: "inhospital", //健康监测导航
      sontwoactiveName: "blood", //医疗档案导航
      dynamicTags: [],
      record: [
@@ -944,19 +1029,22 @@
        // 门诊记录
        listPatouthosp({ patid: this.id }).then((response) => {
          if (response.code == 200) {
            this.serviceData = response.rows;
            // this.serviceData = response.rows;
            this.serviceData = [];
          }
        });
      } else if (type == 1) {
        listpatient({ patid: this.id }).then((response) => {
        listpatient({ patid: this.id, cry: 0 }).then((response) => {
          if (response.code == 200) {
            this.serviceDatary = response.rows;
          }
        });
      } else if (type == 2) {
        listpatient({ patid: this.id }).then((response) => {
        listpatient({ patid: this.id, cry: 1 }).then((response) => {
          if (response.code == 200) {
            this.serviceDatacy = response.rows;
            console.log(this.serviceDatacy);
            this.$forceUpdate()
          }
        });
      }
@@ -1117,13 +1205,25 @@
    // tab切换
    handleClick(tab, event) {
      if (tab.index == "1") {
        this.getList(0);
        this.getList(1);
      }else if (tab.index == "2") {
this.handleClickfw();
      }
    },
    handleClickson(tab, event) {
      console.log(tab.index, "son");
      console.log(tab, "son");
      this.getList(tab.index);
    },
    // 查询服务记录
    handleClickfw(){
      getTaskservelist({
        patid: this.id,
      }).then((res) => {
        if (res.code == 200) {
          this.record = res.rows;
        }
      });
    },
    // 联系方式新增
    Addanumber() {},
    // 标签--------------------------
src/views/patient/propaganda/Missioncreation.vue
@@ -66,6 +66,50 @@
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用科室" prop="region">
                      <el-select
                        v-model="form.deptcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择科室"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongDepts"
                          :key="item.deptCode"
                          :label="item.deptName"
                          :value="item.deptCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用病区" prop="region">
                      <el-select
                        v-model="form.leavehospitaldistrictcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择病区"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongWards"
                          :key="item.districtCode"
                          :label="item.districtName"
                          :value="item.districtCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
@@ -105,7 +149,7 @@
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段一</span
                        >①</span
                      >
                      <el-time-picker
                        is-range
@@ -122,7 +166,7 @@
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                        >②</span
                      >
                      <el-time-picker
                        is-range
@@ -139,7 +183,7 @@
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                        >③</span
                      >
                      <el-time-picker
                        is-range
@@ -156,6 +200,26 @@
                    </div>
                  </div>
                </el-form-item>
                <el-row>
                  <el-col :span="12"
                    ><el-form-item label="开场白" prop="kcb">
                      <el-input
                        type="textarea"
                        :rows="3"
                        v-model="form.kcb"
                        placeholder="请输入开场白"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="结束语" prop="jsy">
                      <el-input
                        type="textarea"
                        :rows="3"
                        v-model="form.jsy"
                        placeholder="请输入结束语"
                      /> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
@@ -319,7 +383,7 @@
                    @details="detailhz"
                    @handleUpdate="handleUpdate"
                    :currentList="overallCase"
                    :tableLabel="tableLabelhz"
                    :tableLabel="tableLabelhzwb"
                    :serialnumber="false"
                    :searchTrue="true"
                    :multiplechoice="false"
@@ -597,27 +661,44 @@
      dialogVisiblepatient: false, //添加患者弹框
      radio: 1,
      checkboxlist: [],
      // 科室/病区
      belongWards: [],
      belongWards: [],
      tableLabel: [],
      questionList: [],
      htmlRichText: "<p>Hello, <strong>world</strong>!</p>",
      // 患者表单
      tableLabelhz: [
        // { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "出院日期", width: "150", prop: "inhosptime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人", width: "", prop: "createBy" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "240", prop: "dept" },
        { label: "病区", width: "240", prop: "leavehospitaldistrictname" },
      ],
        // 患者表单
        tableLabelhzwb: [
        { label: "出院日期", width: "150", prop: "endtime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "180", prop: "deptName" },
        { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
      ],
      tableLabelxj: [
        { label: "宣教名称", width: "", prop: "preachname" },
        { label: "宣教描述", width: "", prop: "note" },
        { label: "宣教形式", width: "", prop: "playType" },
      { label: "创建人", width: "", prop: "createBy" },
      { label: "宣教名称", width: "180", prop: "preachname" },
        { label: "宣教描述", width: "180", prop: "preachcontent" },
        // { label: "宣教形式", width: "", prop: "playType" },
        { label: "适用方式", width: "", prop: "suitway" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人", width: "", prop: "createBy" },
      ],
      // 变量
      tableLabelvariable: [
@@ -720,6 +801,8 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
        {
@@ -743,6 +826,8 @@
  created() {
    this.id = this.$route.query.id;
    this.form.type = this.$route.query.type;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    this.form.typename = this.$route.query.typename;
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.listDept();
@@ -866,6 +951,10 @@
        this.$modal.msgError("请选择病人");
        return;
      }
      if (!this.form.templatename) {
        this.$modal.msgError("未选择模板");
        return;
      }
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
@@ -880,6 +969,8 @@
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
      }
      this.form.leaveldeptcodes = store.getters.belongDepts.map(obj=>obj.deptCode);
      this.form.leavehospitaldistrictcodes = store.getters.belongWards.map(obj=>obj.districtCode);
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
@@ -963,14 +1054,15 @@
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "序号", width: "", prop: "patid" },
          { label: "患者名称", width: "", prop: "name" },
        { label: "出院日期", width: "150", prop: "endtime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "sfzh" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "主任医师", width: "", prop: "drname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "创建人", width: "", prop: "createBy" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
        this.tableLabelhz = [
@@ -1085,6 +1177,16 @@
    },
    // 获取详情
    Getdetails() {
      this.form = {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
        serviceType:Number(this.$route.query.serviceType),
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
      if (this.id) {
        getTaskInfo({ taskid: this.id }).then((res) => {
          let filteredArray = "";
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -80,7 +80,17 @@
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="执行设置" prop="sendType">
                <el-form-item label="是否长期" prop="longTask">
                  <el-radio-group v-model="form.longTask">
                    <el-radio :label="0">普通任务</el-radio>
                    <el-radio :label="1">长期任务</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item
                  label="执行设置"
                  prop="sendType"
                  v-if="!form.longTask"
                >
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段执行</el-radio>
                    <el-radio :label="3">时间点执行</el-radio>
@@ -89,7 +99,7 @@
                </el-form-item>
                <el-form-item
                  label="执行日期"
                  v-if="form.sendType == 1"
                  v-if="form.sendType == 1 && !form.longTask"
                  prop="daytime"
                >
                  <el-date-picker
@@ -106,7 +116,7 @@
                <el-form-item
                  label="执行时间点"
                  v-if="form.sendType == 3"
                  v-if="form.sendType == 3 && !form.longTask"
                  prop="daytime"
                >
                  <div style="display: flex">
@@ -125,7 +135,7 @@
                <el-form-item
                  label="执行时间段"
                  v-if="form.sendType == 1"
                  v-if="form.sendType == 1 && !form.longTask"
                  prop="daytime"
                >
                  <div style="display: flex">
@@ -177,11 +187,68 @@
                  </div>
                </el-form-item>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用科室" prop="region">
                      <el-select
                        v-model="form.deptcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择科室"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongDepts"
                          :key="item.deptCode"
                          :label="item.deptName"
                          :value="item.deptCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用病区" prop="region">
                      <!-- <el-cascader
                      style="width: 400px"
                      v-model="form.leavehospitaldistrictcode"
                      :options="topicoptions"
                      :props="propstask"
                      :show-all-levels="false"
                      clearable
                    >
                      <template slot-scope="{ node, data }">
                        <span>{{ data.deptName }}</span>
                        <span v-if="!node.isLeaf">
                          ({{ data.children.length }})
                        </span>
                      </template>
                    </el-cascader> -->
                      <el-select
                        v-model="form.leavehospitaldistrictcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择病区"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongWards"
                          :key="item.districtCode"
                          :label="item.districtName"
                          :value="item.districtCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="12"
                    ><el-form-item label="开场白" prop="kcb">
                      <el-input
                        type="textarea"
                          :rows="3"
                        :rows="3"
                        v-model="form.kcb"
                        placeholder="请输入开场白"
                      /> </el-form-item
@@ -212,6 +279,7 @@
                      placeholder="请点击右侧选择"
                    />
                    <el-button
                      style="margin-left: 10px"
                      type="primary"
                      icon="el-icon-edit"
                      @click="drawermb = true"
@@ -219,7 +287,7 @@
                    ></el-button>
                    <el-button
                      v-if="form.libtemplateid"
                      v-if="form.templatename"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
@@ -319,7 +387,7 @@
                      >
                    </el-col>
                    <el-col :span="1.5">
                    <!-- <el-col :span="1.5">
                      <el-button
                        type="danger"
                        plain
@@ -329,7 +397,7 @@
                        @click="handleDelete"
                        >删除</el-button
                      >
                    </el-col>
                    </el-col> -->
                    <!-- <el-col :span="1.5"> </el-col> -->
                  </el-row>
@@ -391,7 +459,7 @@
                ></el-input>
              </el-form-item>
              <el-select
                v-model="patientqueryParams.topica"
                v-model="patientqueryParams.searchscope"
                placeholder="请选择患者来源"
              >
                <el-option
@@ -447,69 +515,282 @@
        >
      </span>
    </el-dialog>
    <el-dialog title="模板预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <div v-for="item in questionList">
          <!-- 单选 -->
          <div
            class="scriptTopic-dev"
            :key="item.sort"
            v-if="item.scriptType == 1"
          >
            <div class="dev-text">
              {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-radio-group v-model="item.remark">
                <el-radio
                  v-for="(items, index) in item.svyLibTemplateTargetoptions"
                  :key="index"
                  :label="index"
                  >{{ items.optioncontent }}</el-radio
    <!-- 模板预览 -->
    <el-dialog title="模板预览" :visible.sync="previewtf" width="70%">
      <el-tabs type="border-card">
        <el-tab-pane label="模板基础数据"
          ><div class="preview-left">
            <el-form :model="objyl" label-width="100px" class="demo-objyl">
              <el-row :gutter="10">
                <el-col :span="14">
                  <el-form-item label="问卷分类" prop="categoryid">
                    <el-select
                      v-model="objyl.categoryid"
                      size="medium"
                      filterable
                      placeholder="请选择分类"
                    >
                      <el-option-group
                        v-for="group in optionsclass"
                        :key="group.id"
                        :label="group.name"
                      >
                        <el-option
                          v-for="item in group.svyLibTemplateCategoryList"
                          :key="item.id"
                          :label="item.name"
                          :value="item.id"
                        >
                        </el-option>
                      </el-option-group>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="10">
                  <el-form-item label="评价类型" prop="scoreType">
                    <el-select
                      v-model="objyl.scoreType"
                      placeholder="请选择分类"
                    >
                      <el-option
                        v-for="group in appraiselist"
                        :key="group.value"
                        :label="group.label"
                        :value="group.value"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="14">
                  <el-form-item label="可用状态" prop="isenable">
                    <el-radio-group v-model="objyl.isenable">
                      <el-radio
                        v-for="(item, index) in usable"
                        :label="item.value"
                        >{{ item.label }}</el-radio
                      >
                    </el-radio-group>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="版本号" prop="name">
                    <el-input
                      v-model="objyl.version"
                      placeholder="默认1.0"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-form-item label="问卷标题" prop="svyname">
                <div style="width: 400px">
                  <el-input v-model="objyl.svyname"></el-input>
                </div>
              </el-form-item>
              <el-form-item label="问卷方式" prop="suitway">
                <el-select
                  style="width: 400px"
                  v-model="objyl.suitway"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
              </el-radio-group>
            </div>
          </div>
          <!-- 多选 -->
          <div
            class="scriptTopic-dev"
            :key="item.sort"
            v-if="item.scriptType == 2"
          >
            <div class="dev-text">
              {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-checkbox-group v-model="qremark">
                <el-checkbox
                  v-for="(items, index) in item.svyLibTemplateTargetoptions"
                  :key="index"
                  :label="index"
                  <el-option
                    class="ruleFormaa"
                    v-for="item in mode"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-row :gutter="20" v-if="form.longTask">
                <el-col :span="14">
                  <el-form-item label="长期任务" prop="longTemp">
                    <el-radio-group v-model="objyl.longTemp">
                      <el-radio
                        v-for="(item, index) in longtype"
                        :label="item.value"
                        >{{ item.label }}</el-radio
                      >
                    </el-radio-group>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="任务周期" prop="name">
                    <el-input
                      v-model="objyl.sendDay"
                      placeholder="默认5天后"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row>
                <el-col :span="20"
                  ><el-form-item label="适用科室" prop="region">
                    <el-select
                      style="width: 400px"
                      v-model="tempDetpRelevanceslist"
                      size="medium"
                      multiple
                      filterable
                      placeholder="请选择科室"
                    >
                      <el-option
                        class="ruleFormaa"
                        v-for="item in belongDepts"
                        :key="item.deptCode"
                        :label="item.deptName"
                        :value="item.deptCode"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
              </el-row>
              <el-row>
                <el-col :span="20"
                  ><el-form-item label="适用病区" prop="region">
                    <el-select
                      v-model="tempbelongWards"
                      style="width: 400px"
                      size="medium"
                      multiple
                      filterable
                      placeholder="请选择科室"
                    >
                      <el-option
                        class="ruleFormaa"
                        v-for="item in belongWards"
                        :key="item.districtCode"
                        :label="item.districtName"
                        :value="item.districtCode"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
              </el-row>
              <div class="xinz-infs">
                <el-form-item>
                  <template #label>
                    适用疾病
                    <el-tooltip
                      class="item"
                      effect="light"
                      content="选择好适用疾病后,可以方便您通过疾病诊断查找到对应的病人!"
                      placement="top-start"
                    >
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip>
                  </template>
                  <el-tag
                    v-for="tag in illnesslist"
                    :key="tag.icdid"
                    type="warning"
                    :disable-transitions="false"
                  >
                    {{ tag.icdname }}
                  </el-tag>
                  <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
                </el-form-item>
              </div>
              <el-form-item label="问卷描述" prop="description">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="objyl.description"
                >
                  {{ items.optioncontent }}
                </el-checkbox>
              </el-checkbox-group>
            </div>
          </div>
          <!-- 填空 -->
          <div
            class="scriptTopic-dev"
            :key="item.sort"
            v-if="item.scriptType == 4"
          >
            <div class="dev-text">
              {{ item.sort }}、[问答]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-input placeholder="请输入答案" v-model="radioas" clearable>
              </el-input>
            </div>
          </div>
        </div>
      </div>
                </el-input
              ></el-form-item>
              <el-form-item label="问卷结束语" prop="conclusion">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="objyl.conclusion"
                >
                </el-input
              ></el-form-item>
            </el-form></div
        ></el-tab-pane>
        <el-tab-pane label="问题展示"
          ><div class="preview-left">
            <div v-for="item in questionList">
              <!-- 单选 -->
              <div
                class="scriptTopic-dev"
                :key="item.sort"
                v-if="item.scriptType == 1"
              >
                <div class="dev-text">
                  {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span>
                </div>
                <div class="dev-xx">
                  <el-radio-group v-model="item.remark">
                    <el-radio
                      v-for="(items, index) in item.svyLibTemplateTargetoptions"
                      :key="index"
                      :label="index"
                      >{{ items.optioncontent }}</el-radio
                    >
                  </el-radio-group>
                </div>
              </div>
              <!-- 多选 -->
              <div
                class="scriptTopic-dev"
                :key="item.sort"
                v-if="item.scriptType == 2"
              >
                <div class="dev-text">
                  {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span>
                </div>
                <div class="dev-xx">
                  <el-checkbox-group v-model="qremark">
                    <el-checkbox
                      v-for="(items, index) in item.svyLibTemplateTargetoptions"
                      :key="index"
                      :label="index"
                    >
                      {{ items.optioncontent }}
                    </el-checkbox>
                  </el-checkbox-group>
                </div>
              </div>
              <!-- 填空 -->
              <div
                class="scriptTopic-dev"
                :key="item.sort"
                v-if="item.scriptType == 4"
              >
                <div class="dev-text">
                  {{ item.sort }}、[问答]<span>{{ item.scriptContent }}</span>
                </div>
                <div class="dev-xx">
                  <el-input
                    placeholder="请输入答案"
                    v-model="item.radioas"
                    clearable
                  >
                  </el-input>
                </div>
              </div>
            </div></div
        ></el-tab-pane>
      </el-tabs>
      <span slot="footer" class="dialog-footer">
        <!-- <el-button @click="previewGo">前往模板详情修改</el-button> -->
        <el-button type="primary" @click="previewFn">确认使用</el-button>
        <!-- <el-button @click="previewGo">保存模板详情修改</el-button> -->
        <el-button type="primary" @click="Departmenttreatment"
          >保存使用</el-button
        >
      </span>
    </el-dialog>
    <el-drawer
@@ -535,7 +816,7 @@
              <el-form-item label="问卷名称">
                <el-input v-model="topqueryParams.svyname"></el-input>
              </el-form-item>
              <el-form-item label="适用形式" prop="status">
              <!-- <el-form-item label="适用形式" prop="status">
                <el-select v-model="topqueryParams.topica" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
@@ -545,7 +826,7 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item>
                <el-button
                  type="primary"
@@ -597,12 +878,15 @@
  getQtemplatelist,
  getQtemplateobj,
  TaskQuestioncomit,
  deleteTaskQuestioncomit,
  Questionnairetaskgetson,
  gethetaskinfo,
  delhetaskinfo,
  getTaskQuestioncomit,
  depthospgetson,
  getillness,
  Editsingletask,
  getQtemplateclassify,
  depthospgetsonlist,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import SFtable from "@/components/SFtable"; //表格组件
@@ -615,8 +899,13 @@
      id: "", //
      previewid: "", //任务模板传递id
      libName: "",
      objyl: {},
      overallCase: [], //选择患者总
      allpids: [],
      appraiselist: [],
      optionsclass: [],
      illnesslist: [],
      mode: [],
      libId: null, //模板库模板id
      Editprogress: 1, //编辑进度
      drawermb: false, //选择模板弹窗
@@ -628,33 +917,45 @@
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      usable: [
        { value: "0", label: "可用" },
        { value: "1", label: "停用" },
      ],
      required: [
        { value: "1", label: "必填" },
        { value: "2", label: "不必填" },
      ],
      props: { multiple: true, value: "deptCode", label: "deptName" },
      propstask: { value: "deptCode", label: "deptName" },
      // 患者表单
      tableLabelhz: [
        { label: "出院日期", width: "150", prop: "inhosptime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "240", prop: "deptname" },
          { label: "病区", width: "240", prop: "leavehospitaldistrictname" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "240", prop: "dept" },
        { label: "病区", width: "240", prop: "leavehospitaldistrictname" },
      ],
      // 患者表单
      tableLabelhzwb: [
      { label: "出院日期", width: "150", prop: "inhosptime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "sfzh" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "deptName" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        { label: "出院日期", width: "150", prop: "endtime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "出院天数", width: "", prop: "endDay" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "180", prop: "deptName" },
        { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
      ],
      tableLabelwj: [
        { label: "序号", width: "", prop: "svyid" },
        { label: "问卷名称", width: "", prop: "svyname" },
        { label: "问卷概述", width: "", prop: "description" },
        { label: "问卷标题", width: "", prop: "svyname" },
        { label: "问卷描述", width: "", prop: "description" },
        { label: "修改日期", width: "", prop: "updateTime" },
        { label: "创建人", width: "", prop: "createBy" },
      ],
@@ -696,7 +997,7 @@
      patientqueryParams: {
        pageNum: 1, //
        pageSize: 10,
        topica:0,//0全部1科室2病区
        topica: 0, //0全部1科室2病区
      },
      topicoptions: [{ children: [{ children: [] }] }],
      showSearch: true, //
@@ -715,6 +1016,10 @@
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
      delvariableList: [], //删除变量临时存储
      longtype: [
        { value: 0, label: "普通任务" },
        { value: 1, label: "长期任务" },
      ],
      variableList: [
        {
          name: "姓名",
@@ -761,16 +1066,21 @@
      form: {
        patTaskRelevances: [],
        sendType: 1,
        longTask: 0,
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb:'亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。',
        jsy:'请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!',
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
        {
          value: "1",
          label: "出院病人",
        },
        {
          value: "4",
          label: "在院病人",
        },
        {
          value: "2",
@@ -784,7 +1094,7 @@
      source: [
        {
          value: 0,
          label: "所有患者",
          label: "所属患者",
        },
        {
          value: 1,
@@ -831,6 +1141,15 @@
          label: "其他通知",
        },
      ],
      // 科室/病区
      belongWards: [],
      belongWards: [],
      deptlist: [],
      hosplist: [],
      tempDetpRelevanceslist: [], //科室数据
      tempDetpRelevanceslistform: [], //科室数据
      tempbelongWards: [], //病区数据
      tempbelongWardsform: [], //病区数据
      rules: {
        taskName: [
          { required: true, message: "任务名称不能为空", trigger: "blur" },
@@ -841,12 +1160,14 @@
            trigger: "blur",
          },
        ],
        taskDesc: [
          { required: true, message: "任务描述不能为空", trigger: "blur" },
        ],
        sendType: [
          { required: true, message: "发送设置不能为空", trigger: "blur" },
        ],
      },
      // 科室院区查询入参
      queryParamsdept: {
        tempid: "",
        type: 11,
      },
      quote: false,
      serviceType: null,
@@ -855,20 +1176,25 @@
  components: { SFtable },
  created() {
    this.appraiselist = store.getters.appraiselist;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    this.mode = store.getters.Askmode;
    this.id = this.$route.query.id;
    this.newadd = this.$route.query.newadd;
    this.form.type = this.$route.query.type;
    this.form.typename = this.$route.query.typename;
    this.serviceType = Number(this.$route.query.serviceType);
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.listDept();
    this.Acquisitiontype();
    this.Getdetails();
    this.getQtemplateclassify();
  },
  activated() {
    if (this.id != this.$route.query.id) {
      this.listDept();
      this.Acquisitiontype();
      this.Getdetails();
      this.getQtemplateclassify();
    }
  },
@@ -906,7 +1232,7 @@
      let queryParams = {
        pageNum: this.topqueryParams.pageNum,
        pageSize: this.topqueryParams.pageSize,
        isavailable: "",
        isenable: "",
      };
      this.currenttype = this.$route.query.type;
      this.title = "问卷内容列表";
@@ -1025,8 +1351,6 @@
    },
    // 保存
    submitForm(formName) {
      console.log(this.form.patTaskRelevances,'1.patTaskRelevances');
      console.log(this.overallCase,'this.form.overallCase');
      if (this.time4 && this.form.sendType == 3)
        this.form.showTimeMorn = this.time4;
      this.form.sendTimeslot = [
@@ -1042,7 +1366,7 @@
        this.$modal.msgError("请选择服务类型");
        return;
      }
      if (!this.form.patTaskRelevances[0]) {
      if (!this.form.patTaskRelevances[0] && !this.form.longTask) {
        this.$modal.msgError("请选择病人");
        return;
      }
@@ -1051,11 +1375,13 @@
        return;
      }
      if ((this.form.sendType == 1 && this.time1) || this.form.sendType == 2) {
      } else if (this.form.sendType == 3 && this.time4) {
      } else if (
        (this.form.sendType == 3 && this.time4) ||
        this.form.longTask
      ) {
      } else {
        return this.$modal.msgError("时间信息缺失");
      }
      console.log(this.form.patTaskRelevances,'2.patTaskRelevances');
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
@@ -1070,12 +1396,19 @@
        this.form.type = this.$route.query.type;
      }
      this.form.serviceType = this.serviceType;
      this.form.leaveldeptcodes = store.getters.belongDepts.map(
        (obj) => obj.deptCode
      );
      this.form.leavehospitaldistrictcodes = store.getters.belongWards.map(
        (obj) => obj.districtCode
      );
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
            this.$modal.msgSuccess("新增成功");
          } else {
            this.$modal.msgSuccess("修改成功");
          } else {
            this.puttaskid(res.data);
            this.$modal.msgSuccess("新增成功");
          }
          this.$router.push({
            path: "/followvisit/tasklist",
@@ -1084,19 +1417,46 @@
        }
      });
    },
    // 给任务模板赋值任务id
    puttaskid(data) {
      getTaskQuestioncomit(this.form.templateid).then((res) => {
        if (res.code == 200) {
          this.objyl = res.data;
          this.objyl.isoperation = 2;
          this.objyl.taskid = data.taskId;
          TaskQuestioncomit(this.objyl).then((response) => {
            this.previewtf = false;
            this.form.libtemplateid = this.objyl.svyid;
            this.form.templateid = response.data;
            // this.putbelongDepts(response.data);
            this.form.templatename = this.objyl.svyname;
            this.$modal.msgSuccess("选择模板成功");
          });
        }
      });
    },
    // ----------------------表格子组件事件
    // 确认选择模板放入任务模板
    // 选择预览
    selectfn(row, type) {
      // 模板情况下获取模板信息
      if (type == 1) {
        this.libName = row.svyname;
        this.libId = row.svyid;
        this.Tasktemplate = row;
        this.questionList = row.svyTemplateLibScripts;
        getQtemplateobj({ svyid: row.svyid }).then((res) => {
          if (res.code == 200) {
            this.objyl = res.rows[0];
            if (this.form.longTask) {
              this.objyl.longTemp = 1;
            }
            this.queryParamsdept.type = 1;
            this.queryParamsdept.tempid = row.svyid;
            this.listDept();
            this.objyl.suitway = this.objyl.suitway.split(",");
            this.questionList = res.rows[0].svyTemplateLibScripts;
            this.getillness(row.svyid);
            this.previewtf = true;
          }
        });
@@ -1109,14 +1469,37 @@
    },
    // 预览
    previewfnmb() {
      console.log(this.form);
      getQtemplateobj({ svyid: this.form.libtemplateid }).then((res) => {
      getTaskQuestioncomit(this.form.templateid).then((res) => {
        if (res.code == 200) {
          this.questionList = res.rows[0].svyTemplateLibScripts;
          console.log(res, "预览数据");
          this.objyl = res.data;
          if (this.objyl.suitway)
            this.objyl.suitway = this.objyl.suitway.split(",");
          this.queryParamsdept.tempid = this.form.templateid;
          this.queryParamsdept.type = 11;
          this.getillness(this.form.libtemplateid);
          // 执行获取该任务模板id
          this.listDept();
          this.previewtf = true;
          getQtemplateobj({ svyid: this.form.libtemplateid }).then((res) => {
            if (res.code == 200) {
              this.questionList = res.rows[0].svyTemplateLibScripts;
              this.objyl.svyTemplateLibScripts =
                res.rows[0].svyTemplateLibScripts;
            }
          });
        }
      });
    },
    getillness(id) {
      if (id) {
        getillness({ outid: id, type: 5 }).then((res) => {
          this.illnesslist = res.rows;
          this.illnesslist.forEach((item) => {
            item.icdname = item.icd10name;
          });
        });
      }
    },
    // 处理问题层变量
    Variablehandling(arr, type) {
@@ -1135,7 +1518,6 @@
            }
          });
        });
        console.log(Variablist, "Variablist");
        const Aarr = Variablist.filter(
          (obj, index, self) =>
            index ===
@@ -1148,44 +1530,74 @@
    },
    // 子任务二级弹框
    handleAddpatient(row) {
      console.log(this.overallCase, "ssaaa");
      this.allpids = [];
      this.overallCase.forEach((item) => {
        this.allpids.push(item.patid);
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "出院日期", width: "150", prop: "inhosptime" },
          // { label: "入院日期", width: "170", prop: "starttime" },
          { label: "出院日期", width: "150", prop: "endtime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "出院天数", width: "", prop: "endDay" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "deptname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
      } else if (this.patientqueryParams.allhosp == 4) {
        this.tableLabelhz = [
        { label: "入院日期", width: "150", prop: "starttime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "诊断", width: "", prop: "diagname" },
          { label: "科室", width: "", prop: "deptname" },
        { label: "病区", width: "", prop: "leavehospitaldistrictname" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "创建人", width: "", prop: "createBy" },
          { label: "出院天数", width: "", prop: "endDay" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      }
      if (this.allpids[0]) {
        this.patientqueryParams.pids = this.allpids;
        console.log(this.patientqueryParams.pids);
      } else {
        this.patientqueryParams.pids = null;
      }
      // 类型判断
      if (this.patientqueryParams.allhosp == 1) {
        this.patientqueryParams.cry = 1;
      } else if (this.patientqueryParams.allhosp == 4) {
        this.patientqueryParams.cry = 0;
      }
      // 来源判断
      if (this.patientqueryParams.searchscope == 1) {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes = [];
      } else if (this.patientqueryParams.searchscope == 2) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
        this.patientqueryParams.leaveldeptcodes = [];
      } else {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      getTaskpatient(this.patientqueryParams).then((response) => {
        console.log(response);
        this.patientuserList = response.rows;
        this.patientuserList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        this.patienttotal = response.total;
        this.loading = false;
        this.Restorecheck();
@@ -1197,7 +1609,6 @@
    handleExport() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
      console.log("多选患者",selection);
      this.SelectPatientslist = structuredClone(selection);
      this.multiple = !selection.length;
@@ -1210,27 +1621,22 @@
          item.hospType = this.patientqueryParams.allhosp;
          item.sfzh = item.idcardno;
          item.deptCode = item.deptcode;
          item.deptName = item.deptname;
          item.deptName = item.dept;
          item.admindate = item.inhosptime;
          item.sfzh = item.idcardno;
          console.log(item);
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
          console.log(this.form.patTaskRelevances,'patTaskRelevances');
        }
      });
    },
    // 切换页后恢复选中
    Restorecheck() {
      console.log(this.overallCase, "this.overallCase");
      const allid = this.overallCase.map((item) => item.patid);
      const overlap = this.patientuserList.filter((value) => {
        return allid.includes(value.patid);
      });
      // 保持ids和当前页面的同步性
      this.SelectPatientslist = overlap;
      console.log(this.SelectPatientslist, "进入分页SelectPatientslist");
      this.toggleSelection(overlap);
    },
    // 挂载选择状态
@@ -1243,7 +1649,6 @@
          });
          this.decision = false;
        });
        console.log(123);
      } else {
        this.$refs.multipleTable.clearSelection();
      }
@@ -1262,18 +1667,18 @@
    },
    getList() {},
    handleQuery() {
      // if (this.patientqueryParams.topica == 0) {
      //   this.patientqueryParams.leavehospitaldistrictcodes =
      //     store.getters.leavehospitaldistrictcodes;
      //   this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      // } else if (this.patientqueryParams.topica == 1) {
      //   this.patientqueryParams.leavehospitaldistrictcodes = null;
      //   this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      // } else if (this.patientqueryParams.topica == 2) {
      //   this.patientqueryParams.leavehospitaldistrictcodes =
      //     store.getters.leavehospitaldistrictcodes;
      //   this.patientqueryParams.leaveldeptcodes = null;
      // }
      if (this.patientqueryParams.topica == 0) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.leavehospitaldistrictcodes;
        this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      } else if (this.patientqueryParams.topica == 1) {
        this.patientqueryParams.leavehospitaldistrictcodes = null;
        this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      } else if (this.patientqueryParams.topica == 2) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.leavehospitaldistrictcodes;
        this.patientqueryParams.leaveldeptcodes = null;
      }
      this.handleAddpatient();
    },
    resetQuery() {},
@@ -1307,9 +1712,10 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb:'亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。',
        jsy:'生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!',
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
      this.questionList = [];
      if (this.id) {
        Questionnairetaskgetson({ taskid: this.id }).then((res) => {
@@ -1322,13 +1728,17 @@
              : [];
            this.overallCase = this.form.patTaskRelevances.concat();
            this.checkList = this.form.preachform.split(",");
            console.log(this.form, "this.form");
            this.overallCase.forEach((item) => {
              if (item.endtime) {
                item.endDay = this.daysBetween(item.endtime);
              }
            });
            if (this.form.showDate)
              this.daytime = this.form.showDate.split(",");
            if (this.form.showTimeMorn) {
              if (this.form.sendType == 3) {
                this.time4 = this.form.showTimeMorn;
                console.log(1122);
              } else {
                this.time1 = this.form.showTimeMorn.split(",");
              }
@@ -1337,20 +1747,54 @@
              this.time2 = this.form.showTimeNoon.split(",");
            if (this.form.showTimeNight)
              this.time3 = this.form.showTimeNight.split(",");
            console.log(1122);
            filteredArray = this.convertFormat1ToFormat2(this.form.textParam);
            this.variableList = this.transitionList.concat(filteredArray);
          } else {
            this.$modal.msgError(res.code);
          }
        if (this.newadd) {
          this.neWaddfn();
        }
        });
      }
    },
    // 依照新增时处理
    neWaddfn(){
      this.id=null;
      this.form.taskName='';
      this.form.taskName='';
      this.overallCase=[];
      this.form.patTaskRelevances=[];
      this.daytime=[]; //日期
      this.applydaytime=[]; //计算日期
      this.time1=""; //上午时间段
      this.time2=""; //下午时间段
      this.time3=""; //晚上时间段
      this.time4=""; //晚上时间段
    },
    // 获取科室列表
    listDept() {
      listDept().then((res) => {
        this.topicoptions = this.handleTree(res.data, "deptId");
        console.log(this.topicoptions, "topicoptions");
      this.tempDetpRelevanceslist = [];
      this.tempbelongWards = [];
      depthospgetsonlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          arr.forEach((item) => {
            if (item.deptType == 1) {
              this.deptlist.push(item);
              this.tempDetpRelevanceslist.push(item.deptCode);
            } else if (item.deptType == 2) {
              this.hosplist.push(item);
              this.tempbelongWards.push(item.deptCode);
            }
          });
        }
      });
    },
    getQtemplateclassify() {
      getQtemplateclassify({}).then((res) => {
        this.optionsclass = res.rows;
      });
    },
    // 新增派送患者
@@ -1367,18 +1811,14 @@
      this.variableList.splice(index, 1);
      row.isoperation = 3;
      this.delvariableList.push(row);
      console.log(index, row);
    },
    // 时间----------
    changeTime(row) {
      console.log(row, "时间");
      this.processingTime();
    },
    Totaldate(row) {
      console.log(row, "时间");
      this.form.sendTimeslot = [{ begantime: row, endtime: row, xh: 1 }];
      this.form.showTimeMorn = row;
      console.log(this.form.sendTimeslot, "时间");
    },
    changeTimeday(row) {
      const startDate = new Date(row[0]);
@@ -1447,30 +1887,68 @@
        query: { id: this.previewid, task: true, data: this.form },
      });
    },
    // 保存/更新任务模板
    previewFn() {
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      console.log(this.Tasktemplate);
      this.Tasktemplate.svyTemplateLibScripts.forEach((item) => {
      if (Array.isArray(this.objyl.suitway)) {
        this.objyl.suitway = this.objyl.suitway.join(",");
      }
      this.objyl.svyTemplateLibScripts.forEach((item) => {
        item.svyTaskTemplateTargetoptions = item.svyLibTemplateTargetoptions;
      });
      this.Tasktemplate.svyTaskTemplateScriptVOS =
        this.Tasktemplate.svyTemplateLibScripts;
      this.Tasktemplate.templateid = id;
      this.Tasktemplate.isoperation = 1;
      TaskQuestioncomit(this.Tasktemplate).then((response) => {
        this.previewtf = false;
        this.form.templateid = response.data;
        this.form.libtemplateid = this.libId;
        this.form.templatename = this.libName;
        this.$modal.msgSuccess("选择模板成功");
      this.objyl.svyTaskTemplateScriptVOS = this.objyl.svyTemplateLibScripts;
      this.objyl.templateid = this.objyl.svyid;
      this.objyl.isoperation = 1;
      console.log(this.objyl.id);
      if (this.objyl.id) {
        deleteTaskQuestioncomit(this.objyl.id).then((res) => {
          if (res.code == 200) {
            (this.objyl.id = null),
              TaskQuestioncomit(this.objyl).then((response) => {
                this.previewtf = false;
                this.form.libtemplateid = this.objyl.svyid;
                this.form.templateid = response.data;
                this.putbelongDepts(response.data);
                this.form.templatename = this.objyl.svyname;
                this.$modal.msgSuccess("选择模板成功");
              });
          }
        });
      } else {
        TaskQuestioncomit(this.objyl).then((response) => {
          this.previewtf = false;
          this.form.libtemplateid = this.objyl.svyid;
          this.form.templateid = response.data;
          this.putbelongDepts(response.data);
          this.form.templatename = this.objyl.svyname;
          this.$modal.msgSuccess("选择模板成功");
        });
      }
    },
    // 保存科室/病区
    putbelongDepts(id) {
      this.tempDetpRelevanceslistform.forEach((item) => {
        item.tempid = id;
      });
      this.tempbelongWardsform.forEach((item) => {
        item.tempid = id;
      });
      depthospgetson(this.tempDetpRelevanceslistform).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("科室更新成功");
          this.tempDetpRelevanceslistform = [];
        }
      });
      depthospgetson(this.tempbelongWardsform).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("病区更新成功");
          this.tempbelongWardsform = [];
        }
      });
    },
    // 处理服务形式
    formatFn(type) {
      console.log(this.preachform, "preachform");
      console.log(this.checkList, "checklist");
      let list = [];
      let formlist = [];
      if (type == 1) {
@@ -1496,6 +1974,33 @@
        });
        this.checkList = list;
      }
    },
    // 科室处理
    Departmenttreatment() {
      this.tempDetpRelevanceslist.forEach((item) => {
        this.tempDetpRelevanceslistform.push({
          deptType: 1,
          longTemp: this.form.longTask,
          deptCode: item,
          tempid: null,
          type: 11,
        });
      });
      this.tempbelongWards.forEach((item) => {
        this.tempbelongWardsform.push({
          deptType: 2,
          longTemp: this.form.longTask,
          deptCode: item,
          tempid: null,
          type: 11,
        });
      });
      console.log(33);
      setTimeout(() => {
        this.previewFn();
      }, 1000);
    },
  },
};
@@ -1574,6 +2079,14 @@
    }
  }
}
.xinz-infs {
  font-size: 18px;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
}
// .leftvlue-jbxx {
//   margin-bottom: 50px;
//   font-size: 20px;
@@ -1596,9 +2109,9 @@
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  // border: 1px solid #dcdfe6;
  // -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
  //   0 0 6px 0 rgba(0, 0, 0, 0.04);
  .scriptTopic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
@@ -1668,7 +2181,7 @@
// }
::v-deep.el-radio-group {
  span {
    font-size: 24px;
    font-size: 18px;
  }
}
::v-deep.el-input.is-disabled .el-input__inner {
@@ -1679,7 +2192,7 @@
}
::v-deep.el-checkbox-group {
  span {
    font-size: 24px;
    font-size: 18px;
  }
}
</style>
src/views/repositoryai/intention/index.vue
@@ -3,7 +3,7 @@
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">指标类型</div>
        <div class="top-wj">指标分类</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
      </div>
      <div class="center-ss">
@@ -152,7 +152,7 @@
                  icon="el-icon-plus"
                  size="medium"
                  @click="handleAdd"
                  v-hasPermi="['system:user:add']"
                  >新增</el-button
                >
              </el-col>
@@ -165,7 +165,7 @@
                  size="medium"
                  :disabled="multiple"
                  @click="handleDelete"
                  v-hasPermi="['system:user:remove']"
                  >删除</el-button
                >
              </el-col>
@@ -187,8 +187,24 @@
                prop="id"
              /> -->
              <el-table-column
                label="指标类型"
                label="指标名称"
                fixed
                align="center"
                key="targetname"
                prop="targetname"
                :show-overflow-tooltip="true"
              >
              </el-table-column>
              <el-table-column
                label="指标描述"
                align="center"
                key="targetdesc"
                prop="targetdesc"
                :show-overflow-tooltip="true"
                width="200"
              />
              <el-table-column
                label="指标类型"
                align="center"
                key="valueType"
                prop="valueType"
@@ -201,14 +217,7 @@
                  />
                </template>
              </el-table-column>
              <el-table-column
                label="指标名称"
                align="center"
                key="targetname"
                prop="targetname"
                :show-overflow-tooltip="true"
              >
              </el-table-column>
              <!-- <el-table-column
                label="正常值范围"
@@ -221,13 +230,7 @@
                  <span>{{ scope.row.warnup }}~{{ scope.row.warndown }}</span>
                </template>
              </el-table-column> -->
              <el-table-column
                label="指标描述"
                align="center"
                key="targetdesc"
                prop="targetdesc"
                width="200"
              /><el-table-column
             <el-table-column
                label="适用场景"
                align="center"
                key="suitWayList"
@@ -250,7 +253,7 @@
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
@@ -287,7 +290,7 @@
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-edit"></i>修改</span
                    ></el-button
@@ -305,7 +308,7 @@
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-textsc"
                      ><i class="el-icon-delete"></i>删除</span
                    ></el-button
@@ -353,20 +356,9 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="版本号" prop="deptId">
                  <el-input
                    v-model="indexform.version"
                    placeholder="默认1.0"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <!-- deptOptions -->
            <el-row v-if="!measurement">
              <el-col :span="8">
                <el-form-item label="指标分类" prop="assortid">
                  <el-select
                  style="width: 300px;"
                    v-model="indexform.assortid"
                    size="medium"
                    filterable
@@ -386,6 +378,31 @@
                      </el-option>
                    </el-option-group>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="指标描述" prop="targetdesc">
                  <el-input
                    v-model="indexform.targetdesc"
                    placeholder="请输入指标描述"
                    id="targetdesc"
                    @focus="currentInputId = 'targetdesc'"
                    maxlength="40"
                  />
                </el-form-item> </el-col
            ></el-row>
            <!-- deptOptions -->
            <el-row v-if="!measurement">
              <el-col :span="8">
                <el-form-item label="版本号" prop="deptId">
                  <el-input
                    v-model="indexform.version"
                    placeholder="默认1.0"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="8">
@@ -415,18 +432,7 @@
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="指标描述" prop="targetdesc">
                  <el-input
                    v-model="indexform.targetdesc"
                    placeholder="请输入指标描述"
                    id="targetdesc"
                    @focus="currentInputId = 'targetdesc'"
                    maxlength="40"
                  />
                </el-form-item> </el-col
            ></el-row>
            <!-- <el-form-item label="插入填空" prop="scriptContent">
              <div style="display: flex; margin-bottom: 10px">
                <div class="tsgname" @click="tsgnameto">插入填空</div>
@@ -474,7 +480,7 @@
              <el-col :span="24">
                <el-form-item prop="valueType">
                  <template #label>
                    值类型
                    结果类型
                    <el-tooltip
                      class="item"
                      effect="light"
@@ -495,7 +501,7 @@
            >
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="题目类型" prop="scriptType">
                <el-form-item label="适用题型" prop="scriptType">
                  <el-radio-group
                    @input="Changtype"
                    v-model="indexform.scriptType"
@@ -810,10 +816,10 @@
          { required: true, message: "指标描述不能为空", trigger: "blur" },
        ],
        valueType: [
          { required: true, message: "值类型不能为空", trigger: "blur" },
          { required: true, message: "结果类型不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
          { required: true, message: "适用题型不能为空", trigger: "blur" },
        ],
        suitWayList: [
          { required: true, message: "适用场景不能为空", trigger: "blur" },
src/views/system/user/index.vue
@@ -37,10 +37,19 @@
          v-show="showSearch"
          label-width="68px"
        >
          <el-form-item label="用户名称" prop="userName">
          <el-form-item label="用户工号" prop="userName">
            <el-input
              v-model="queryParams.userName"
              placeholder="请输入用户名称"
              placeholder="请输入用户工号"
              clearable
              style="width: 240px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="用户昵称" prop="nickName">
            <el-input
              v-model="queryParams.nickName"
              placeholder="请输入用户昵称"
              clearable
              style="width: 240px"
              @keyup.enter.native="handleQuery"
@@ -70,7 +79,8 @@
              />
            </el-select>
          </el-form-item>
          <el-form-item label="创建时间">
          <!-- <el-form-item label="创建时间">
            <el-date-picker
              v-model="dateRange"
              style="width: 240px"
@@ -80,7 +90,7 @@
              start-placeholder="开始日期"
              end-placeholder="结束日期"
            ></el-date-picker>
          </el-form-item>
          </el-form-item> -->
          <el-form-item>
            <el-button
              type="primary"
@@ -174,7 +184,7 @@
            v-if="columns[0].visible"
          />
          <el-table-column
            label="用户名称"
            label="用户工号"
            align="center"
            key="userName"
            prop="userName"
@@ -304,52 +314,55 @@
              />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="12">
            <el-form-item label="归属部门" prop="deptId">
              <treeselect
                v-model="form.depts"
                :options="deptOptions"
                :multiple="true"
                :show-count="true"
                placeholder="请选择归属部门"
              />
          <el-col :span="12">
            <el-form-item label="患者范围" prop="status">
              <el-select
                v-model="form.searchscope"
                placeholder="患者范围"
                clearable
              >
                <el-option
                  v-for="dict in searchscopelist"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col> -->
          </el-col>
        </el-row>
        <el-form-item label="适用科室" prop="region">
                <el-cascader
                style="width: 478px"
                  v-model="form.leaveldeptcodes"
                  :options="deptOptions"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.label }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="适用院区" prop="region">
                <el-cascader
                style="width: 478px"
                  v-model="form.leavehospitaldistrictcodes"
                  :options="deptOptions"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.label }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
          <el-cascader
            style="width: 478px"
            v-model="form.deptCodes"
            @remove-tag="removehpsp"
            :options="deptOptions"
            :props="props"
            :show-all-levels="false"
            clearable
          >
            <template slot-scope="{ node, data }">
              <span>{{ data.label }}</span>
              <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
            </template>
          </el-cascader>
        </el-form-item>
        <el-form-item label="适用病区" prop="region">
          <el-cascader
            style="width: 478px"
            @remove-tag="removehpsp"
            v-model="form.wardCodes"
            :options="deptOptions"
            :props="props"
            :show-all-levels="false"
            clearable
          >
            <template slot-scope="{ node, data }">
              <span>{{ data.label }}</span>
              <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
            </template>
          </el-cascader>
        </el-form-item>
        <el-row>
          <el-col :span="12">
            <el-form-item label="手机号码" prop="phonenumber">
@@ -374,12 +387,12 @@
          <el-col :span="12">
            <el-form-item
              v-if="form.userId == undefined"
              label="用户名称"
              label="用户工号"
              prop="userName"
            >
              <el-input
                v-model="form.userName"
                placeholder="请输入用户名称"
                placeholder="请输入用户工号"
                maxlength="30"
              />
            </el-form-item>
@@ -426,6 +439,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="岗位">
@@ -533,12 +547,14 @@
  updateUser,
  resetUserPwd,
  adduserdept,
  removeusertd,
  changeUserStatus,
  deptTreeSelect,
} from "@/api/system/user";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { type } from "jquery";
export default {
  name: "User",
@@ -608,24 +624,31 @@
        status: undefined,
        deptId: undefined,
      },
      searchscopelist: [
        { value: "1", label: "科室" },
        { value: "2", label: "病区" },
        { value: "0", label: "全部" },
        { value: "9", label: "无" },
      ],
      // 列信息
      columns: [
        { key: 0, label: `用户编号`, visible: true },
        { key: 1, label: `用户名称`, visible: true },
        { key: 1, label: `用户工号`, visible: true },
        { key: 2, label: `用户昵称`, visible: true },
        { key: 3, label: `部门`, visible: true },
        { key: 4, label: `手机号码`, visible: true },
        { key: 5, label: `状态`, visible: true },
        { key: 6, label: `创建时间`, visible: true },
      ],
      // 表单校验
      rules: {
        userName: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          { required: true, message: "用户工号不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 和 20 之间",
            message: "用户工号长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
@@ -686,9 +709,14 @@
    },
    /** 查询部门下拉树结构 */
    getDeptTree() {
      // 科室列表
      deptTreeSelect().then((response) => {
        this.deptOptions = response.data;
      });
      // 院区列表
      //  deptTreeSelect().then((response) => {
      //   this.deptOptions = response.data;
      // });
    },
    // 筛选节点
    filterNode(value, data) {
@@ -774,9 +802,9 @@
    handleAdd() {
      this.reset();
      this.open = true;
        this.title = "添加用户";
        this.form.password = this.initPassword;
        this.form.depts = [];
      this.title = "添加用户";
      this.form.password = this.initPassword;
      this.form.depts = [];
      // getUser().then((response) => {
      //   this.postOptions = response.posts;
      //   this.roleOptions = response.roles;
@@ -790,11 +818,14 @@
      const userId = row.userId || this.ids;
      getUser(userId).then((response) => {
        this.form = response.data;
        this.form.leaveldeptcodes = JSON.parse(this.form.hospInfo);
        this.form.leavehospitaldistrictcodes = JSON.parse(this.form.deptInfo);
        console.log(this.form.leavehospitaldistrictcodes,'leavehospitaldistrictcodes');
        console.log(this.form.leaveldeptcodes,'leaveldeptcodes');
        this.belongDepts = response.belongDepts;
        this.belongWards = response.belongWards;
        if (this.form.hospInfo)
          this.form.deptCodes = JSON.parse(this.form.hospInfo);
        if (this.form.deptInfo)
          this.form.wardCodes = JSON.parse(this.form.deptInfo);
        console.log(this.form.wardCodes, "wardCodes");
        console.log(this.form.deptCodes, "deptCodes");
        this.postOptions = response.posts;
        this.roleOptions = response.roles;
@@ -803,6 +834,16 @@
        this.open = true;
        this.title = "修改用户";
        this.form.password = "";
      });
    },
    // 删除科室
    removehpsp(valueArray) {
      console.log(valueArray,'删除科室');
      console.log(this.form.userId,'删除');
     let code=valueArray[valueArray.length-1];
      removeusertd(this.form.userId,code).then((res) => {
        if (res.code) {
        }
      });
    },
    /** 重置密码按钮操作 */
@@ -828,17 +869,16 @@
    },
    /** 提交按钮 */
    submitForm: function () {
      this.form.hospInfo = JSON.stringify(this.form.leaveldeptcodes);
      this.form.deptInfo = JSON.stringify(this.form.leavehospitaldistrictcodes);
      this.form.leaveldeptcodes = this.form.leaveldeptcodes.map(
      this.form.hospInfo = JSON.stringify(this.form.deptCodes);
      this.form.deptInfo = JSON.stringify(this.form.wardCodes);
      this.form.deptCodes = this.form.deptCodes.map(
        (subArr) => subArr[subArr.length - 1]
      );
      this.form.leavehospitaldistrictcodes = this.form.leavehospitaldistrictcodes.map(
      this.form.wardCodes = this.form.wardCodes.map(
        (subArr) => subArr[subArr.length - 1]
      );
      console.log(this.form.leavehospitaldistrictcodes,'leavehospitaldistrictcodes');
      console.log(this.form.leaveldeptcodes,'leaveldeptcodes');
      console.log(this.form.wardCodes, "wardCodes");
      console.log(this.form.deptCodes, "deptCodes");
      this.$refs["form"].validate((valid) => {
        if (valid) {
@@ -846,42 +886,64 @@
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
              this.adduserdept();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
              this.form.userId = response.data;
              console.log("开始加部门");
              this.adduserdept();
            });
          }
        }
      });
    },
    // 新增数据
    adduserdept(){
      if (this.form.leavehospitaldistrictcodes[0]) {
        this.form.leavehospitaldistrictcodes.forEach((dept) => {
          adduserdept({deptCode:dept,deptType:2,userId:this.form.userId}).then((response) => {
            this.open = false;
            this.getList();
          });
        })
      }
      if (this.form.leaveldeptcodes[0]) {
        this.form.leaveldeptcodes.forEach((dept) => {
          adduserdept({deptCode:dept,deptType:1,userId:this.form.userId}).then((response) => {
            this.open = false;
            this.getList();
          });
        })
      }
    adduserdept() {
      if (this.form.wardCodes[0]) {
        this.form.wardCodes.forEach((dept) => {
          const containsId8 = null;
          if (this.belongWards) {
            containsId8 = this.belongWards.some(
              (item) => item.deptCode == dept
            );
          }
      adduserdept(this.form).then((response) => {
        this.$modal.msgSuccess("添加成功");
        this.open = false;
        this.getList();
      });
          if (!containsId8) {
            adduserdept({
              deptCode: dept,
              deptType: 2,
              userId: this.form.userId,
            }).then((response) => {
              this.open = false;
              this.getList();
            });
          }
        });
      }
      if (this.form.deptCodes[0]) {
        this.form.deptCodes.forEach((dept) => {
          const containsId8 = null;
          if (this.belongDepts) {
            containsId8 = this.belongDepts.some(
              (item) => item.deptCode == dept
            );
          }
          if (!containsId8) {
            adduserdept({
              deptCode: dept,
              deptType: 1,
              userId: this.form.userId,
            }).then((response) => {
              this.open = false;
              this.getList();
            });
          }
        });
      }
    },
    /** 删除按钮操作 */
    handleDelete(row) {
vue.config.js
@@ -9,7 +9,7 @@
const name = process.env.VUE_APP_TITLE || '浙中大二院智慧随访平台' // 网页标题
const port = process.env.port || process.env.npm_config_port || 8096 // 端口
const port = process.env.port || process.env.npm_config_port || 8093 // 端口
// vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -35,10 +35,12 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        // target: `http://192.168.168.60:8095`,
        target: `http://192.168.1.10:8095`,
        // target:`http://localhost:8095`,
        // target: `http://192.168.101.135:8095`,
        // target: `http://192.168.101.166:8093`,
        // target: `http://192.168.191.181:8095`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''