WXL
2025-01-10 3dcfdb6a9a1035cc3c4ff34d29f7af0ee2534068
丽水提交
已添加3个文件
已修改24个文件
846 ■■■■ 文件已修改
.env.development 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dist (2).zip 补丁 | 查看 | 原始文档 | blame | 历史
dist (3).zip 补丁 | 查看 | 原始文档 | blame | 历史
dist.zip 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/Logo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainnew.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainwt.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainwtnew.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainxj.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainxjnew.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/behospitalized.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/hospital.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/indexls.vue 575 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/outpatient.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/Missioncreation.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/register.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/taskub.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -1,10 +1,10 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°
VUE_APP_TITLE = æ™¯å®äººæ°‘医院智慧随访平台
# å¼€å‘环境配置
ENV = 'development'
# æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°/开发环境
# æ™¯å®äººæ°‘医院智慧随访平台/开发环境
VUE_APP_BASE_API = '/dev-api'
# è·¯ç”±æ‡’加载
.env.production
@@ -1,8 +1,8 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°
VUE_APP_TITLE = æ™¯å®äººæ°‘医院智慧随访平台
# ç”Ÿäº§çŽ¯å¢ƒé…ç½®
ENV = 'production'
# æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°/生产环境
# æ™¯å®äººæ°‘医院智慧随访平台/生产环境
VUE_APP_BASE_API = '/prod-api'
.env.staging
@@ -1,10 +1,10 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°
VUE_APP_TITLE = æ™¯å®äººæ°‘医院智慧随访平台
NODE_ENV = production
# æµ‹è¯•环境配置
ENV = 'staging'
# æµ™ä¸­åŒ»å¤§äºŒé™¢æ™ºæ…§éšè®¿å¹³å°/测试环境
# æ™¯å®äººæ°‘医院智慧随访平台/测试环境
VUE_APP_BASE_API = '/stage-api'
dist (2).zip
Binary files differ
dist (3).zip
Binary files differ
dist.zip
Binary files differ
package.json
@@ -1,7 +1,7 @@
{
  "name": "ruoyi",
  "version": "3.8.5",
  "description": "浙中医大二院智慧随访平台",
  "description": "景宁人民医院智慧随访平台",
  "author": "杭新",
  "license": "MIT",
  "scripts": {
src/layout/components/Sidebar/Logo.vue
@@ -70,7 +70,7 @@
  },
  data() {
    return {
      title: "浙中医大二院智慧随访平台",
      title: "景宁人民医院智慧随访平台",
      logo: logoImg,
    };
  },
src/views/followvisit/record/detailpage/index.vue
@@ -168,27 +168,39 @@
      </div>
    </div>
    <div class="Followuserinfo">
      <div>
        <div class="headline">
          <div>人工处理意见</div>
          <div>人工处理</div>
          <div style="margin-left: 30px;"><el-button type="warning"
                >一键呼叫</el-button
              ></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>
        <el-form ref="form" :model="form" label-width="80px">
          <el-form-item label="随访记录">
            <el-input type="textarea" v-model="form.remark"></el-input>
          </el-form-item>
          <el-form-item label="处理意见">
            <div>
              <el-button plain type="warning" @click="Editsingletaskson('1')"
                >暂不处理</el-button
              >
              <el-button plain type="success" @click="Editsingletaskson('2')"
                >病情稳定</el-button
              >
              <el-button plain type="primary" @click="Editsingletaskson('3')"
                >通知就诊</el-button
              >
              <!-- <el-button type="danger" @click="Editsingletaskson('4')"
    >失访</el-button
  > -->
              <el-button plain type="info" @click="Editsingletaskson('5')"
                >中心随访</el-button
              >
            </div>
          </el-form-item>
        </el-form>
      </div>
    </div>
    <div>
@@ -441,6 +453,7 @@
      activeName: "wj",
      voice: "",
      templateid: "",
      form: {},
      tableDatatop: [], //题目表
      voiceDatatop: [], //题目表
      Whetherall: false, //是否全部记录展示
@@ -593,10 +606,10 @@
      this.Editsingletasksonyic(excep);
    },
    yuyingetdetail() {
      this.tableDatatop.forEach((item,index) => {
      this.tableDatatop.forEach((item, index) => {
        console.log(item.scriptResult, "scriptResult");
        item.scriptResult = item.scriptResult.join("&");
        item.templatequestionnum=index+1;
        item.templatequestionnum = index + 1;
        item.subId = this.id;
        item.taskid = this.taskid;
        item.asrtext = item.matchedtext;
@@ -631,6 +644,8 @@
        taskid: taskid,
      }).then((res) => {
        if (res.code == 200) {
          this.form = res.rows[0].serviceSubtaskList[0];
          console.log(this.form,'form3');
          this.logsheetlist = res.rows[0].serviceSubtaskList;
          this.templateid = this.logsheetlist[0].templateid;
        }
@@ -649,6 +664,8 @@
      }).then((res) => {
        if (res.code == 200) {
          objson = res.rows[0];
          objson.suggest = son;
          Editsingletaskson(objson).then((res) => {
            if (res.code) {
@@ -667,8 +684,6 @@
      }).then((res) => {
        if (res.code == 200) {
          objson = res.rows[0].serviceSubtaskList[0];
          console.log(objson, "obj");
          objson.excep = excep;
          Editsingletaskson(objson).then((res) => {
            if (res.code) {
src/views/login.vue
@@ -6,7 +6,7 @@
      :rules="loginRules"
      class="login-form"
    >
      <h3 class="title">浙中医大二院智慧随访平台</h3>
      <h3 class="title">景宁人民医院智慧随访平台</h3>
      <el-form-item prop="username">
        <el-input
          v-model="loginForm.username"
@@ -37,7 +37,7 @@
        </el-input>
      </el-form-item>
      <!-- ä¸½===================æ°´ -->
      <!-- <el-form-item prop="guid">
      <el-form-item prop="guid">
        <el-select style="width: 100%;" v-model="loginForm.guid"  placeholder="请选择院区">
          <el-option
            v-for="item in options"
@@ -48,7 +48,7 @@
          </el-option>
          <i slot="prefix" class="el-icon-mobile"></i>
        </el-select>
      </el-form-item> -->
      </el-form-item>
      <!-- <el-form-item prop="code" v-if="captchaEnabled">
        <el-input
          v-model="loginForm.code"
@@ -126,7 +126,7 @@
        password: [
          { required: true, trigger: "blur", message: "请输入您的密码" },
        ],
        // guid: [{ required: true, trigger: "blur", message: "请选择院区" }],
        guid: [{ required: true, trigger: "blur", message: "请选择院区" }],
      },
      loading: false,
      // éªŒè¯ç å¼€å…³
src/views/outsideChainnew.vue
@@ -8,7 +8,7 @@
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
                : "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
            }}
            <!-- äº²çˆ±çš„æ‚£è€…/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
src/views/outsideChainwt.vue
@@ -8,7 +8,7 @@
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
                : "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
            }}
            <!-- äº²çˆ±çš„æ‚£è€…/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
src/views/outsideChainwtnew.vue
@@ -8,7 +8,7 @@
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
                : "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
            }}
            <!-- äº²çˆ±çš„æ‚£è€…/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
src/views/outsideChainxj.vue
@@ -1,7 +1,7 @@
<template>
  <div class="questionnaire">
    <!-- <div class="CONTENT">
      <div class="title">浙中医大二院医护知识宣教</div>
      <div class="title">景宁人民医院医护知识宣教</div>
      <div class="preview-left">
        <div v-html="richText"></div>
      </div>
@@ -10,12 +10,12 @@
    <div class="CONTENT" >
      <div class="preview-left">
        <div class="toptitle">
          <div class="title">{{ taskname ? taskname : "浙中医大二院医护知识宣教" }}</div>
          <div class="title">{{ taskname ? taskname : "景宁人民医院医护知识宣教" }}</div>
          <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。"
                : "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。"
            }}
            <!-- äº²çˆ±çš„æ‚£è€…/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
src/views/outsideChainxjnew.vue
@@ -1,7 +1,7 @@
<template>
  <div class="questionnaire">
    <!-- <div class="CONTENT">
      <div class="title">浙中医大二院医护知识宣教</div>
      <div class="title">景宁人民医院医护知识宣教</div>
      <div class="preview-left">
        <div v-html="richText"></div>
      </div>
@@ -10,12 +10,12 @@
    <div class="CONTENT" >
      <div class="preview-left">
        <div class="toptitle">
          <div class="title">{{ taskname ? taskname : "浙中医大二院医护知识宣教" }}</div>
          <div class="title">{{ taskname ? taskname : "景宁人民医院医护知识宣教" }}</div>
          <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。"
                : "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。"
            }}
            <!-- äº²çˆ±çš„æ‚£è€…/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
src/views/patient/patient/behospitalized.vue
@@ -30,28 +30,28 @@
          <el-form-item label="患者范围" prop="tagId">
            <el-select
                v-model="queryParams.searchscope"
                placeholder="请选择患者范围"
              v-model="queryParams.searchscope"
              placeholder="请选择患者范围"
            >
              <el-option
                v-for="item in source"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label=" å…¥é™¢æ—¥æœŸ " prop="createTime">
            <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>
              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>
@@ -115,7 +115,7 @@
        <el-table
          v-loading="loading"
          :data="userList"
           height="660"
          height="660"
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="50" align="center" />
@@ -143,14 +143,31 @@
            align="center"
            key="patno"
            prop="patno"
          width="120"
            width="120"
          />
          <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="
                  $router.push({
                    path: '/patient/indexls/',
                    query: { id: scope.row.id },
                  })
                "
                ><span class="button-textsc">{{
                  scope.row.patname
                }}</span></el-button
              >
            </template>
          </el-table-column>
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
@@ -171,7 +188,6 @@
            width="120"
          />
          <el-table-column
            label="入院诊断"
            align="center"
@@ -179,7 +195,6 @@
            prop="diagname"
            width="190"
          />
          <el-table-column
            label="科室"
@@ -469,7 +484,7 @@
        pageNum: 1,
        pageSize: 10,
        cry: 0,
        searchscope:2,
        searchscope: 2,
        idcardno: undefined,
        name: undefined,
        status: undefined,
@@ -531,7 +546,6 @@
    },
  },
  created() {
    this.getList();
    this.listDept();
    this.gettabList();
@@ -544,11 +558,11 @@
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.queryParams.leavehospitaldistrictcodes=null;
        this.queryParams.leavehospitaldistrictcodes = null;
      } else if (this.queryParams.searchscope == 2) {
        this.queryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.queryParams.leaveldeptcodes=null;
        this.queryParams.leaveldeptcodes = null;
      } else {
        this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
src/views/patient/patient/hospital.vue
@@ -148,12 +148,36 @@
            prop="patno"
          width="120"
          />
          <el-table-column
          <!-- <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
          /> -->
          <el-table-column
              fixed
                label="姓名"
                align="center"
                key="patname"
                prop="patname"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="
                      $router.push({
                        path: '/patient/indexls/',
                        query: { id: scope.row.id },
                      })
                    "
                    ><span class="button-textsc"
                      >{{scope.row.patname}}</span
                    ></el-button
                  >
                </template>
              </el-table-column>
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
src/views/patient/patient/index.vue
@@ -226,13 +226,37 @@
                key="id"
                prop="id"
              /> -->
              <el-table-column
              <!-- <el-table-column
                fixed
                label="姓名"
                align="center"
                key="name"
                prop="name"
              />
              /> -->
              <el-table-column
                label="姓名"
                align="center"
                key="name"
                prop="name"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="
                      $router.push({
                        path: '/patient/indexls/',
                        query: { id: scope.row.id },
                      })
                    "
                    ><span class="button-textsc"
                      >{{scope.row.name}}</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column label="性别" align="center" key="sex" prop="sex">
                <template slot-scope="scope">
                  <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
src/views/patient/patient/indexls.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,575 @@
<template>
  <div class="app-container">
  æ‚£è€…360嵌入位置
  </div>
</template>
<script>
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
  resetUserPwd,
  changeUserStatus,
} from "@/api/system/user";
import { getTaskservelist } from "@/api/AiCentre/index";
import Treeselect from "@riophae/vue-treeselect";
import store from "@/store";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "Discharge",
  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
  components: { Treeselect },
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: null,
      // å¼¹å‡ºå±‚标题
      title: "新增门诊宣教",
      // æ˜¯å¦æ˜¾ç¤ºä¿®æ”¹ã€æ·»åŠ å¼¹å‡ºå±‚
      addalteropen: false,
      // ä¿®æ”¹å‘送时间对话框
      modificationVisible: false,
      // éƒ¨é—¨åç§°
      deptName: undefined,
      // é»˜è®¤å¯†ç 
      initPassword: undefined,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // å²—位选项
      postOptions: [],
      ruleForm: {
        type: [],
      },
      dynamicTags: ["选项一", "选项二", "选项三"], //选项
      inputVisible: false,
      inputValue: "",
      previewVisible: false, //门诊宣教预览弹框
      radio: "",
      radios: [],
      previewtype: 2, //预览门诊宣教类型
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导门诊宣教数量
      //预览门诊宣教信息
      previewvalue: {
        username: "这个医生对你怎么样",
      },
      value: [],
      list: [],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      loading: false,
      states: [
        "Alabama",
        "Alaska",
        "Arizona",
        "Arkansas",
        "California",
        "Colorado",
        "Connecticut",
        "Delaware",
        "Florida",
        "Georgia",
        "Hawaii",
        "Idaho",
        "Illinois",
        "Indiana",
        "Iowa",
        "Kansas",
        "Kentucky",
        "Louisiana",
        "Maine",
        "Maryland",
        "Massachusetts",
        "Michigan",
        "Minnesota",
        "Mississippi",
        "Missouri",
        "Montana",
        "Nebraska",
        "Nevada",
        "New Hampshire",
        "New Jersey",
        "New Mexico",
        "New York",
        "North Carolina",
        "North Dakota",
        "Ohio",
        "Oklahoma",
        "Oregon",
        "Pennsylvania",
        "Rhode Island",
        "South Carolina",
        "South Dakota",
        "Tennessee",
        "Texas",
        "Utah",
        "Vermont",
        "Virginia",
        "Washington",
        "West Virginia",
        "Wisconsin",
        "Wyoming",
      ],
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now();
        },
        shortcuts: [
          {
            text: "今天",
            onClick(picker) {
              picker.$emit("pick", new Date());
            },
          },
          {
            text: "昨天",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit("pick", date);
            },
          },
          {
            text: "一周前",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", date);
            },
          },
        ],
      },
      // è¡¨å•参数
      form: {
        phonenumber: "",
        totagid: "",
        types: "",
        nickName: "",
        qystatus: "",
        btstatus: "",
      },
      // æŸ¥è¯¢å‚æ•°
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        serviceType: 4,
        searchscope: 2,
      },
      propss: { multiple: true },
      options: [],
      topicoptions: [
        {
          value: 1,
          label: "被领取",
        },
        {
          value: 2,
          label: "待发送",
        },
        {
          value: 3,
          label: "已发送未领取",
        },
        {
          value: 4,
          label: "不执行",
        },
        {
          value: 5,
          label: "发送失败",
        },
        {
          value: 6,
          label: "已完成",
        },
      ],
      topicoptionsyj: [
        {
          value: 1,
          label: "异常",
        },
        {
          value: 0,
          label: "正常",
        },
      ],
      serviceState: [],
      // è¡¨å•校验
      rules: {},
    };
  },
  watch: {},
  created() {
    this.serviceState = store.getters.serviceState;
    this.getList();
    this.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
    });
  },
  activated() {
    this.getList();
  },
  // æœç´¢
  mounted() {
    this.list = this.states.map((item) => {
      return { value: `value:${item}`, label: `label:${item}` };
    });
  },
  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[0].serviceSubtaskList;
        this.userList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
        });
        this.total = response.total;
        this.loading = false;
      });
    },
    // æŸ¥çœ‹é—¨è¯Šå®£æ•™è¯¦æƒ…
    Referencequestion(row) {
      this.previewVisible = true;
    },
    // æ·»åŠ å¼¹æ¡†æœç´¢
    remoteMethod(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          this.options = this.list.filter((item) => {
            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
          });
        }, 200);
      } else {
        this.options = [];
      }
    },
    // é—¨è¯Šå®£æ•™çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "启用" : "停用";
      this.$modal
        .confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
        .then(function () {
          return changeUserStatus(row.userId, row.status);
        })
        .then(() => {
          this.$modal.msgSuccess(text + "成功");
        })
        .catch(function () {
          row.status = row.status === "0" ? "1" : "0";
        });
    },
    // å–消按钮
    cancel() {
      this.addalteropen = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
        password: undefined,
        phonenumber: undefined,
        email: undefined,
        sex: undefined,
        status: "0",
        remark: undefined,
        postIds: [],
        roleIds: [],
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    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.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.topqueryParams = {
        pageNum: 1,
        pageSize: 10,
        serviceType: 4,
      };
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    //删除选项
    handleClose(tag) {
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
    },
    //触发新增输入
    showInput() {
      this.inputVisible = true;
      this.$nextTick((_) => {
        this.$refs.saveTagInput.$refs.input.focus();
      });
    },
    //获取失去焦点触发
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/followvisit/Missioncreation",
        query: {
          type: 3,
          serviceType: 4,
        },
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    // å…¨éƒ¨åœæ­¢
    AllStop() {
      this.$modal
        .confirm("是否停止全部任务?")
        .then(function () {
          return console.log("停止成功");
        })
        .then(() => {
          this.getList();
          this.$modal.msgWarning("停止成功");
        })
        .catch(() => {});
    },
    // å…¨éƒ¨å¼€å§‹
    AllStarted() {
      this.$modal
        .confirm("是否开启全部任务?")
        .then(function () {
          return console.log("开启成功");
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("开启成功");
        })
        .catch(() => {});
    },
    // è®¾ç½®å‘送时间
    Sendtimesetting() {
      this.modificationVisible = true;
    },
    // ä¾¿æ·æŒ‰é’®
    toleadExport(too) {
      if (too == 1) {
        this.topqueryParams.sendstate = 4;
        this.topqueryParams.excep = null;
      } else if (too == 2) {
        this.topqueryParams.excep = 1;
      }
      this.handleQuery();
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download(
        "system/user/export",
        {
          ...this.topqueryParams,
        },
        `user_${new Date().getTime()}.xlsx`
      );
    },
  },
};
</script>
<style lang="scss" scoped>
.el-tag + .el-tag {
  margin-left: 10px;
}
.button-new-tag {
  margin-left: 10px;
  height: 32px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
}
.input-new-tag {
  width: 90px;
  margin-left: 10px;
  vertical-align: bottom;
}
.drexamine {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px;
  background: #daeaf5;
  img {
    width: 100px;
    height: 100px;
  }
}
.qrcode-dialo {
  // text-align: center;
  //   display: flex;
  margin: 20px;
  padding: 30px;
  background: #edf1f7;
  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);
  .topic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
.button-bb {
  font-weight: 500;
  background-color: #2ba05c;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-xq {
  font-weight: 500;
  background-color: #409eff;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-sc {
  font-weight: 500;
  background-color: #dd302a;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-zx {
  background: #4fabe9;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
::v-deep.el-radio-group {
  span {
    font-size: 24px;
  }
}
// é€‰é¡¹å­—体放大
// ::v-deep.el-checkbox-group {
//   span {
//     font-size: 24px;
//   }
// }
</style>
src/views/patient/patient/outpatient.vue
@@ -167,11 +167,27 @@
            prop="patid"
          />
          <el-table-column
            label="姓名"
            align="center"
            key="patname"
            prop="patname"
          />
                label="姓名"
                align="center"
                key="patname"
                prop="patname"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="
                      $router.push({
                        path: '/patient/indexls/',
                        query: { id: scope.row.id },
                      })
                    "
                    ><span class="button-textsc"
                      >{{scope.row.patname}}</span
                    ></el-button
                  >
                </template>
              </el-table-column>
          <el-table-column label="性别" align="center" key="sex" prop="sex">
            <template slot-scope="scope">
              <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
src/views/patient/propaganda/Missioncreation.vue
@@ -921,7 +921,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        kcb: "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
@@ -1350,7 +1350,7 @@
        templateid: null,
        libtemplateid: null,
        serviceType: Number(this.$route.query.serviceType),
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        kcb: "亲爱的患者-家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -1073,7 +1073,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        kcb: "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
@@ -1760,7 +1760,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        kcb: "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
src/views/patient/propaganda/particty.vue
@@ -1104,7 +1104,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,进行本次回访服务。",
        kcb: "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,进行本次回访服务。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访内容就到这里,祝您身体健康!",
      },
      taskoptions: [
@@ -1822,7 +1822,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        kcb: "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
src/views/register.vue
@@ -6,7 +6,7 @@
      :rules="registerRules"
      class="register-form"
    >
      <h3 class="title">浙中医大二院智慧随访平台</h3>
      <h3 class="title">景宁人民医院智慧随访平台</h3>
      <el-form-item prop="username">
        <el-input
          v-model="registerForm.username"
src/views/repositoryai/templateku/configurat/index.vue
@@ -1510,7 +1510,7 @@
      ruleForm: {
        templateName: "",
        revisitBefore:
          "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
          "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        revisitAfter:
          "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
        ivrLibaTemplateTagList: [],
src/views/repositoryai/templateku/configurat/taskub.vue
@@ -1508,7 +1508,7 @@
      ruleForm: {
        templateName: "",
        revisitBefore:
          "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
          "亲爱的患者/家属,您好!我们是景宁人民医院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        revisitAfter:
          "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
        ivrLibaTemplateTagList: [],
vue.config.js
@@ -7,7 +7,7 @@
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '浙中医大二院智慧随访平台' // ç½‘页标题
const name = process.env.VUE_APP_TITLE || '景宁人民医院智慧随访平台' // ç½‘页标题
const port = process.env.port || process.env.npm_config_port || 8093 // ç«¯å£