WXL
2024-09-11 b5a56d53e44c426fa188ba3e4e1db3eb779e2fd9
测试完成
已删除1个文件
已修改48个文件
793 ■■■■ 文件已修改
dist.zip 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/ruoyi.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/complaint/complaintlist/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/complaint/complaintmy/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/linem/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/outpatient/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/satisfaction/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/FollowupDetails/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/compilequer/index.vue 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/job/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/job/log.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/logininfor/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/online/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/operlog/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainwt.vue 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/medtechnician/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/PatientChart.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/authRole.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/hospital.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/outpatient.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/physical.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/profile/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/physical/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/questionnaire/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/subsequent/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/matching/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/messagebank/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/taglibrary/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/category/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/config/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dept/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dict/data.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dict/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/menu/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/post/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/authUser.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/selectUser.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/authRole.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dist.zip
Binary files differ
src/store/getters.js
@@ -11,6 +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,
  permission_routes: (state) => state.permission.routes,
  topbarRouters: (state) => state.permission.topbarRouters,
  defaultRoutes: (state) => state.permission.defaultRoutes,
src/store/modules/user.js
@@ -6,6 +6,8 @@
    token: getToken(),
    name: '',
    avatar: '',
    leavehospitaldistrictcodes:[],
    leaveldeptcodes:[],
    roles: [],
    permissions: [],
    // 服务类型
@@ -94,6 +96,12 @@
    },
    SET_Serviceauthority: (state, Serviceauthority) => {
      state.Serviceauthority = Serviceauthority
    },
    SET_leavehospitaldistrictcodes: (state, leavehospitaldistrictcodes) => {
      state.leavehospitaldistrictcodes = leavehospitaldistrictcodes
    },
    SET_leaveldeptcodes: (state, leaveldeptcodes) => {
      state.leaveldeptcodes = leaveldeptcodes
    }
  },
@@ -128,6 +136,8 @@
            commit('SET_ROLES', ['ROLE_DEFAULT'])
          }
          commit('SET_NAME', user.userName)
          commit('SET_leavehospitaldistrictcodes', user.leavehospitaldistrictcodes)
          commit('SET_leaveldeptcodes', user.leaveldeptcodes)
          commit('SET_AVATAR', avatar)
          resolve(res)
        }).catch(error => {
src/utils/ruoyi.js
@@ -49,6 +49,20 @@
  });
  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 formatTime(val) {
  if (val) {
src/views/complaint/complaintlist/index.vue
@@ -204,7 +204,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
@@ -214,7 +214,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
@@ -224,7 +224,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/complaint/complaintmy/index.vue
@@ -172,7 +172,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/followvisit/discharge/index.vue
@@ -242,7 +242,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.admindate) }}</span>
            <span>{{ formatTime(scope.row.admindate) }}</span>
          </template>
        </el-table-column>
        <!-- <el-table-column
@@ -254,7 +254,7 @@
        >
          <template slot-scope="scope">
            <span v-if="scope.row.sendType != 3">{{
              parseTime(scope.row.createTime)
              formatTime(scope.row.createTime)
            }}</span>
            <span v-else>即刻发送</span>
          </template>
@@ -267,7 +267,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.finishtime) }}</span>
            <span>{{ formatTime(scope.row.finishtime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
src/views/followvisit/linem/index.vue
@@ -111,7 +111,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
src/views/followvisit/outpatient/index.vue
@@ -245,7 +245,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.admindate) }}</span>
            <span>{{ formatTime(scope.row.admindate) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -256,7 +256,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.finishtime) }}</span>
            <span>{{ formatTime(scope.row.finishtime) }}</span>
          </template>
        </el-table-column>
src/views/followvisit/record/detailpage/index.vue
@@ -4,7 +4,22 @@
    <div class="Followuserinfo">
      <div>
        <div class="userinfo-text">
          {{ sendname }}<span>患者服务详情</span>
          <!-- <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>
          <!-- <el-button type="success">随访后短信</el-button> -->
        </div>
      </div>
@@ -46,7 +61,7 @@
            width="210"
          >
          </el-table-column>
          <el-table-column
          <!-- <el-table-column
            label="操作"
            fixed="right"
            align="center"
@@ -64,7 +79,7 @@
                ></el-button
              >
            </template>
          </el-table-column>
          </el-table-column> -->
        </el-table>
      </div>
    </div>
@@ -203,6 +218,7 @@
      radio: "2",
      taskname: "",
      tableDatatop: [], //题目表
      Whetherall:false, //是否全部记录展示
      logsheetlist: [],
      sendname: null,
      serviceType: null,
@@ -217,7 +233,7 @@
    this.patid = this.$route.query.patid;
    this.serviceType = this.$route.query.serviceType;
    this.getsearchrResults();
    this.getTaskservelist();
    this.getTaskservelist(this.taskid);
  },
  methods: {
@@ -241,16 +257,27 @@
      });
    },
    // 获取患者记录
    getTaskservelist() {
    getTaskservelist(taskid) {
      if (taskid) {
        this.Whetherall=false;
      }else{
        this.Whetherall=true;
      }
      getTaskservelist({
        patid: this.patid,
        taskid: taskid,
      }).then((res) => {
        if (res.code == 200) {
          this.logsheetlist = res.rows;
        }
      });
    },
    Seedetails() {},
    Seedetails(row) {
      this.$modal.confirm('是否查看任务为"' + optionids + '"的服务项?').then(function () {
        }).then(() => {
          this.getList();
        }).catch(() => { });
    },
  },
};
</script>
@@ -331,6 +358,20 @@
    }
  }
}
.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;
    }
  }
::v-deep.offside-value .el-radio__label {
  color: #fff;
}
src/views/followvisit/record/index.vue
@@ -201,7 +201,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.admindate) }}</span>
            <span>{{ formatTime(scope.row.admindate) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -212,7 +212,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.finishtime) }}</span>
            <span>{{ formatTime(scope.row.finishtime) }}</span>
          </template>
        </el-table-column>
src/views/followvisit/satisfaction/index.vue
@@ -241,7 +241,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
src/views/followvisit/tasklist/FollowupDetails/index.vue
@@ -301,7 +301,7 @@
                      width="160"
                    >
                      <template slot-scope="scope">
                        <span>{{ parseTime(scope.row.createTime) }}</span>
                        <span>{{ formatTime(scope.row.createTime) }}</span>
                      </template>
                    </el-table-column>
                    <el-table-column
src/views/followvisit/tasklist/index.vue
@@ -170,7 +170,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
src/views/knowledge/education/compilequer/index.vue
@@ -255,7 +255,9 @@
      <!-- 宣教内容 -->
      <div v-if="Editprogress == 2">
        <el-row :gutter="20">
          <el-col :span="4"><div class="leftvlue-jbxx">宣教内容</div></el-col>
          <el-col :span="4">
            <div class="leftvlue-jbxx">宣教内容</div>
          </el-col>
        </el-row>
        <div>
@@ -266,7 +268,7 @@
            label-width="100px"
            class="demo-ruleForm"
          >
            <el-row gutter="20">
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="资料形式" prop="region">
                  <el-select
@@ -299,8 +301,8 @@
                  <el-button type="info" @click="closeFm('ruleForm')"
                    >关闭</el-button
                  >
                </div></el-col
              >
                </div>
              </el-col>
            </el-row>
          </el-form>
        </div>
@@ -429,7 +431,7 @@
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      content: "", //最终保存的内容
      content: `<p>测试</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/营养泵操作规范.mp4"></video><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://218.108.11.22:8093/profile-api/upload/vadio/注射器推注.mp4"></video><p>321</p>"`, //最终保存的内容
      fileName: "", //文件名
      dynamicTags: [],
      inputVisible: false,
@@ -508,6 +510,13 @@
      deptList: [],
      tempDetpRelevanceslist: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      // 内网的部分(文件)
      oldPattern: "http://192.168.191.181:8095/profile/upload",
      // 内网的部分(文件)
      oldPatternhtml: "/http:\/\/192\.168\.191\.181:8095\/profile\/upload\//g",
      // 外网部分(文件)
      newPattern: "http://218.108.11.22:8093/profile-api/upload",
      xjxsoptions: [
        {
          value: "1",
@@ -581,11 +590,14 @@
      if (this.id) {
        getlibraryinfo({ id: this.id }).then((res) => {
          this.ruleForm = res.data[0];
          if (this.ruleForm.campus)
          this.ruleForm.campus = this.ruleForm.campus.split(",");
          this.dynamicTags = res.data[0].heLibraryTagList.map(
            this.processElement
          );
          if (this.ruleForm.htmlRichText) {
          this.Getmissioncontent(this.ruleForm.htmlRichText);
          }
          if (this.ruleForm.deptNames) {
            this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
          }
@@ -606,15 +618,51 @@
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      this.loading = false;
    },
      // ------------------
      // let html =
      //   '<p>测试</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/营养泵介绍.mp4"></video><p>测试111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/注射器推注.mp4"></video><p><br></p>';
      // // html = html.parserdom(this.oldPattern, this.newPattern);
      // html = this.parserdom(html);
      // console.log(html, "html");
      // this.loading = false;
    },
    // parser
    parserdom(html) {
      // 创建一个新的DOM解析器
      var parser = new DOMParser();
      // 将字符串解析为文档对象
      var doc = parser.parseFromString(html, "text/html");
      // 定义要替换的新旧URL
      var oldUrlBase = "http://192.168.191.181:8095/profile/upload";
      var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
      // 获取所有的video元素
      var videos = doc.querySelectorAll("video");
      // 遍历所有的video元素并替换src属性
      videos.forEach(function (video) {
        var src = video.getAttribute("src");
        if (src.startsWith(oldUrlBase)) {
          video.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
        }
      });
      // 将修改后的文档转换回字符串
      var newContent = doc.body.innerHTML;
      return newContent;
    },
    submitForm(formName) {
      let tgs = [];
      this.dynamicTags.forEach((item) => {
        tgs.push(item.tagname);
      });
      if (this.ruleForm.campus) {
      this.ruleForm.campus = this.ruleForm.campus.join(",");
      }
      this.ruleForm.labelInfo = tgs.length != 0 ? tgs.join(", ") : "";
      this.ruleForm.otherdata = JSON.stringify(this.variablelist);
      this.ruleForm.hetype = 1;
@@ -623,42 +671,47 @@
        this.ruleForm.suitway.length != 0
          ? this.ruleForm.suitway.join(",")
          : "";
      addrichText({
        content: this.content,
        content: this.parserdom(this.content),
        fileName: this.generateRandomHtmlFilename(),
      }).then((res) => {
        this.ruleForm.richText = res.msg;
        this.ruleForm.htmlRichText = this.replaceIpAndPort(res.msg);
        this.ruleForm.htmlRichText = this.removePathSegment(this.ruleForm.htmlRichText,'prod-api');
        console.log(this.ruleForm.htmlRichText,'this.ruleForm.htmlRichText');
        console.log(this.ruleForm.richText, "this.ruleForm.richText");
        // 处理内网html
        addrichText({
          // content: this.content,
          fileName: this.generateRandomHtmlFilename(),
        }).then((resf) => {
          this.ruleForm.htmlRichText = resf.msg.replace(
            this.newPattern,
            this.oldPattern
          );
          console.log(this.ruleForm.htmlRichText, "this.ruleForm.htmlRichText");
        if (this.id) {
          this.ruleForm.isoperation = 2;
          compilelibrary(this.ruleForm).then((res) => {
              if (res.code == 200) {
            this.$modal.msgSuccess("编辑成功");
            this.confirmillness();
            this.$router.go(-1);
              }
          });
        } else {
          this.ruleForm.isoperation = 1;
          compilelibrary(this.ruleForm).then((res) => {
              if (res.code == 200) {
            this.$modal.msgSuccess("新增成功");
            this.confirmillness(res.data);
            this.$router.go(-1);
              }
          });
        }
      });
      });
    },
    replaceIpAndPort(path) {
      // 正则表达式匹配IP地址和端口
      const ipPortRegex = /(\b(?:\d{1,3}\.){3}\d{1,3}(?::\d+)?)/;
      // 替换为指定的IP地址和端口
      return path.replace(ipPortRegex, "192.168.191.181:8095");
    },
    removePathSegment(url, segment) {
    // 使用正则表达式全局匹配并替换掉指定的路径段
    return url.replace(new RegExp('/' + segment + '/?', 'g'), '/');
},
    generateRandomHtmlFilename() {
    // 生成一个0到1之间的随机数,并将其转换为字符串
    let randomNumber = Math.random().toString();
@@ -666,10 +719,10 @@
    randomNumber = randomNumber.substring(6);
    // 确保生成的随机数是一定长度的,例如8位
    while (randomNumber.length < 8) {
        randomNumber = '0' + randomNumber;
        randomNumber = "0" + randomNumber;
    }
    // 拼接上.html后缀
    return randomNumber + '.html';
      return randomNumber + ".html";
},
    // 保存疾病
@@ -877,7 +930,11 @@
      console.log("上传成功");
      //拼接出上传的图片在服务器的完整地址
      let imgUrl = res.url;
      imgUrl=this.replaceIpAndPort(imgUrl)
      console.log(res.url);
      imgUrl = imgUrl.replace(this.newPattern, this.oldPattern);
      console.log(imgUrl, "imgUrl");
      let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1);
      this.fileName = this.getFileNameFromPath(res.url);
@@ -941,17 +998,18 @@
      console.log(res);
      console.log(file);
    },
    // 上传图片成功
    // 上传word成功
    uploadEditorSuccessword(res, file) {
      console.log("上传成功");
      const data = null;
      console.log("上传word文件成功");
      console.log(res, file, "word");
      let fileurl = res.url.replace(this.newPattern, this.oldPattern);
      axios
        .get(res.url)
        .get(fileurl)
        .then((response) => {
          console.log(response.data, "数据"); // 输出获取到的文件内容
          this.$nextTick(() => {
          this.content = response.data;
          this.texturl = res.url;
          });
          this.fileName = this.getFileNameFromPath(response.url);
          console.log(this.fileName, "this.fileName");
        })
@@ -972,6 +1030,7 @@
          console.error("Failed to fetch file:", error);
        });
    },
    // 处理url
  },
};
</script>
@@ -980,6 +1039,7 @@
.Questionnairemanagement {
  // display: flex;
}
.sidecolumn {
  // width: 300px;
  // min-height: 100vh;
@@ -994,6 +1054,7 @@
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
}
.leftvlue {
  //   display: flex;
  //   flex: 1;
@@ -1003,20 +1064,25 @@
  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);
  .mulsz {
    font-size: 20px;
  }
  .leftvlue-jbxx {
    margin-bottom: 50px;
    font-size: 20px;
    span {
      position: absolute;
      right: 80px;
    }
  }
  .demo-cascader {
    margin-right: 20px;
  }
  .PreviewTemplate {
    color: #02a7f0;
    cursor: pointer;
@@ -1024,6 +1090,7 @@
    margin: 0 20px;
  }
}
.xinz-inf {
  font-size: 18px;
  white-space: nowrap;
@@ -1035,6 +1102,7 @@
  .el-tag + .el-tag {
    margin-left: 10px;
  }
  .button-new-tag {
    margin-left: 10px;
    height: 32px;
@@ -1042,12 +1110,14 @@
    padding-top: 0;
    padding-bottom: 0;
  }
  .input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
  }
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
@@ -1056,41 +1126,51 @@
  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;
    }
  }
}
.addtopic {
  margin-top: 30px;
}
.presentation {
  margin: 20px 0;
  display: flex;
  .presentation-left {
    width: 50%;
    height: 500px;
    .button-textxg {
      color: #024df0;
    }
    .button-textsc {
      color: #f52727;
    }
  }
  .presentation-right {
    width: 50%;
    height: 500px;
    padding: 20px;
    font-size: 18px;
    border: 1px solid #909091;
    span {
      padding: 0 35px;
      margin-right: 10px;
      border-bottom: 1px solid #909091;
    }
    .headline {
      font-size: 20px;
      border-left: 3px solid #41a1be;
@@ -1099,6 +1179,7 @@
    }
  }
}
::v-deep .addtopic-input {
  input {
    background: #02a7f0;
@@ -1106,25 +1187,31 @@
    width: 150px;
  }
}
::v-deep.el-step.is-vertical .el-step__title {
  font-size: 25px;
}
::v-deep.el-input--medium {
  font-size: 18px !important;
}
::v-deep.ruleFormaa.el-select {
  display: inline-block;
  position: relative;
  width: 700px;
}
.el-select__tags {
  font-size: 20px;
  max-width: 888px !important;
}
::v-deep.el-radio__inner {
  width: 22px;
  height: 22px;
}
// ::v-deep.topic-dev.el-radio__label {
//   font-size: 24px;
// }
@@ -1133,19 +1220,23 @@
    font-size: 24px;
  }
}
::v-deep.el-checkbox-group {
  span {
    font-size: 24px;
  }
}
.editor {
  line-height: normal !important;
  height: 600px;
  margin-bottom: 80px;
}
.ql-snow .ql-tooltip[data-mode="link"]::before {
  content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
  border-right: 0px;
  content: "保存";
@@ -1160,14 +1251,17 @@
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
  content: "14px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
  content: "10px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
  content: "18px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
  content: "32px";
@@ -1177,26 +1271,32 @@
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
  content: "文本";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
  content: "标题1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
  content: "标题2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
  content: "标题3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
  content: "标题4";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
  content: "标题5";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
  content: "标题6";
@@ -1206,10 +1306,12 @@
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
  content: "标准字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
  content: "衬线字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
  content: "等宽字体";
src/views/monitor/job/index.vue
@@ -256,7 +256,7 @@
            <el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="下次执行时间:">{{ parseTime(form.nextValidTime) }}</el-form-item>
            <el-form-item label="下次执行时间:">{{ formatTime(form.nextValidTime) }}</el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="调用目标方法:">{{ form.invokeTarget }}</el-form-item>
src/views/monitor/job/log.vue
@@ -119,7 +119,7 @@
      </el-table-column>
      <el-table-column label="执行时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/monitor/logininfor/index.vue
@@ -113,7 +113,7 @@
      <el-table-column label="操作信息" align="center" prop="msg" />
      <el-table-column label="登录日期" align="center" prop="loginTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.loginTime) }}</span>
          <span>{{ formatTime(scope.row.loginTime) }}</span>
        </template>
      </el-table-column>
    </el-table>
src/views/monitor/online/index.vue
@@ -42,7 +42,7 @@
      <el-table-column label="操作系统" align="center" prop="os" />
      <el-table-column label="登录时间" align="center" prop="loginTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.loginTime) }}</span>
          <span>{{ formatTime(scope.row.loginTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/monitor/operlog/index.vue
@@ -121,7 +121,7 @@
      </el-table-column>
      <el-table-column label="操作日期" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.operTime) }}</span>
          <span>{{ formatTime(scope.row.operTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -175,7 +175,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="操作时间:">{{ parseTime(form.operTime) }}</el-form-item>
            <el-form-item label="操作时间:">{{ formatTime(form.operTime) }}</el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="异常信息:" v-if="form.status === 1">{{ form.errorMsg }}</el-form-item>
src/views/outsideChainwt.vue
@@ -4,8 +4,13 @@
      <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 }}
          <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
            {{
              kcb
                ? kcb
                : "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。"
            }}
            <!-- 亲爱的患者/家属您好,为了更好的了解您出院后的康复情况,给您适当及时的健康指导,请您抽一点宝贵时间,完成这份出院随访问卷调查。 -->
          </div>
        </div>
        <el-divider></el-divider>
@@ -17,21 +22,21 @@
        >
          <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 1">
            <div class="dev-text">
              {{ index + 1 }}、<span>{{ item.scriptContent }} <span style="color: #3BA2F7;">[单选]</span></span>
              {{ index + 1 }}、<span style="line-height: 1.5"
                >{{ item.scriptContent }}
                <span style="color: #3ba2f7">[单选]</span></span
              >
            </div>
            <div class="dev-xx">
              <el-radio-group
                class="radio-group"
                class="custom-radio"
                v-model="item.scriptResult"
                @change="handleOptionChange($event, index, item)"
              >
                <el-radio
                  :class="{
                    'radio-option': true,
                    'radio-option-first': index === 0,
                  }"
                  border
                  v-for="(items, index) in item.svyLibTemplateTargetoptions"
                  :class="items.isabnormal ? 'red-star' : ''"
                  :key="index"
                  :label="items.optioncontent"
                  >{{ items.optioncontent }}</el-radio
@@ -45,22 +50,22 @@
          <!-- 多选 -->
          <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 2">
            <div class="dev-text">
              {{ index + 1 }}、<span>{{ item.scriptContent }} <span style="color: #3BA2F7;">[多选]</span></span>
              {{ index + 1 }}、<span style="line-height: 1.5"
                >{{ item.scriptContent }}
                <span style="color: #3ba2f7">[多选]</span></span
              >
            </div>
            <div class="dev-xx">
              <el-checkbox-group
                class="radio-group"
                class="custom-radio"
                v-model="item.scriptResult"
                @change="updateScore($event, index, item)"
              >
                <el-checkbox
                  :class="{
                    'radio-option': true,
                    'radio-option-first': index === 0,
                  }"
                  border
                  @change="$forceUpdate()"
                  v-for="(items, indexs) in item.svyLibTemplateTargetoptions"
                  :class="items.isabnormal ? 'red-star' : ''"
                  :key="indexs"
                  :label="items.optioncontent"
                >
@@ -75,12 +80,15 @@
          <!-- 填空 -->
          <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 4">
            <div class="dev-text">
              {{ index + 1 }}、<span>{{ item.scriptContent }}<span style="color: #3BA2F7;">[问答]</span></span>
              {{ index + 1 }}、<span style="line-height: 1.5"
                >{{ item.scriptContent
                }}<span style="color: #3ba2f7">[问答]</span></span
              >
            </div>
            <div class="dev-xx">
              <el-input
                type="textarea"
                :rows="2"
                :rows="3"
                placeholder="请输入答案"
                v-model="item.scriptResult"
                clearable
@@ -90,14 +98,21 @@
          </div>
        </div>
        <div class="bottom-fixed">
          <el-button type="primary" style="width: 100%;" @click="cache(true)">提交问卷</el-button>
          <el-button
            type="primary"
            style="width: 80%; font-size: 20px"
            @click="cache(true)"
            >提交问卷</el-button
          >
        </div>
      </div>
    </div>
    <div class="CONTENT" v-else>
      <div class="preview-left" style="margin-top: 100px">
      <div class="preview-lefts">
        <div
          style="
            text-align: center;
            padding-top: 50px;
            font-size: 24px;
            color: #175997;
            font-weight: 600;
@@ -106,7 +121,13 @@
        >
          感谢您的配合!
        </div>
        <div style="font-size: 20px">{{ revisitAfter }}</div>
        <div style="font-size: 20px">
          {{
            jsy
              ? jsy
              : "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!"
          }}
        </div>
      </div>
    </div>
    <!-- <el-dialog
@@ -114,7 +135,7 @@
      width="50%"
    >
      <div>
        <el-alert :title="revisitAfter" type="success"> </el-alert>
        <el-alert :title="jsy" type="success"> </el-alert>
      </div>
    </el-dialog> -->
  </div>
@@ -133,95 +154,95 @@
    return {
      taskid: 355,
      patid: 265823,
      kcb:'',
      kcb: "",
      questionList: [
        // {
        //   scriptType: 1,
        //   scriptContent: "您的年龄范围是?",
        //   scriptResult: null,
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "18-25", value: "18-25" },
        //     { optioncontent: "26-35", value: "26-35" },
        //     { optioncontent: "36-45", value: "36-45" },
        //     { optioncontent: "46-55", value: "46-55" },
        //     { optioncontent: "56+", value: "56+" },
        //   ],
        //   required: true,
        // },
        // {
        //   scriptType: 1,
        //   scriptContent: "您的职业是什么?",
        //   scriptResult: null,
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "学生", value: "student" },
        //     { optioncontent: "教师", value: "teacher" },
        //     { optioncontent: "工程师", value: "engineer" },
        //     { optioncontent: "医生", value: "doctor" },
        //     { optioncontent: "其他", value: "other" },
        //   ],
        //   required: false,
        // },
        // {
        //   scriptType: 2,
        //   scriptContent: "您感兴趣的活动有哪些?",
        //   scriptResult: [],
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "旅游", value: "travel" },
        //     { optioncontent: "阅读", value: "reading" },
        //     { optioncontent: "运动", value: "sports" },
        //     { optioncontent: "音乐", value: "music" },
        //     { optioncontent: "电影", value: "movies" },
        //   ],
        //   required: false,
        // },
        // {
        //   scriptType: 1,
        //   scriptContent: "您的职业是什么?",
        //   scriptResult: null,
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "学生", value: "student" },
        //     { optioncontent: "教师", value: "teacher" },
        //     { optioncontent: "工程师", value: "engineer" },
        //     { optioncontent: "医生", value: "doctor" },
        //     { optioncontent: "其他", value: "other" },
        //   ],
        //   required: false,
        // },
        // {
        //   scriptType: 1,
        //   scriptContent: "您的职业是什么?",
        //   scriptResult: null,
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "学生", value: "student" },
        //     { optioncontent: "教师", value: "teacher" },
        //     { optioncontent: "工程师", value: "engineer" },
        //     { optioncontent: "医生", value: "doctor" },
        //     { optioncontent: "其他", value: "other" },
        //   ],
        //   required: false,
        // },
        // {
        //   scriptType: 1,
        //   scriptContent: "您的职业是什么?",
        //   scriptResult: null,
        //   svyLibTemplateTargetoptions: [
        //     { optioncontent: "学生", value: "student" },
        //     { optioncontent: "教师", value: "teacher" },
        //     { optioncontent: "工程师", value: "engineer" },
        //     { optioncontent: "医生", value: "doctor" },
        //     { optioncontent: "其他", value: "other" },
        //   ],
        //   required: false,
        // },
        // {
        //   scriptType: 4,
        //   scriptContent: "您的姓名是什么?",
        //   scriptResult: "name",
        //   required: true,
        //   scriptResult: null,
        // },
        {
          scriptType: 1,
          scriptContent: "您的年龄范围是?",
          scriptResult: null,
          svyLibTemplateTargetoptions: [
            { optioncontent: "18-25", value: "18-25", isabnormal: true },
            { optioncontent: "26-35", value: "26-35" },
            { optioncontent: "36-45", value: "36-45" },
            { optioncontent: "46-55", value: "46-55" },
            { optioncontent: "56+", value: "56+" },
      ],
      revisitAfter: null,
          required: true,
        },
        {
          scriptType: 1,
          scriptContent: "您的职业是什么?",
          scriptResult: null,
          svyLibTemplateTargetoptions: [
            { optioncontent: "学生", value: "student" },
            { optioncontent: "教师", value: "teacher" },
            { optioncontent: "工程师", value: "engineer" },
            { optioncontent: "医生", value: "doctor" },
            { optioncontent: "其他", value: "other" },
          ],
          required: false,
        },
        {
          scriptType: 2,
          scriptContent: "您感兴趣的活动有哪些?",
          scriptResult: [],
          svyLibTemplateTargetoptions: [
            { optioncontent: "旅游", value: "travel", isabnormal: true },
            { optioncontent: "阅读", value: "reading", isabnormal: true },
            { optioncontent: "运动", value: "sports", isabnormal: true },
            { optioncontent: "音乐", value: "music" },
            { optioncontent: "电影", value: "movies" },
          ],
          required: false,
        },
        {
          scriptType: 1,
          scriptContent: "您的职业是什么?",
          scriptResult: null,
          svyLibTemplateTargetoptions: [
            { optioncontent: "学生", value: "student" },
            { optioncontent: "教师", value: "teacher" },
            { optioncontent: "工程师", value: "engineer" },
            { optioncontent: "医生", value: "doctor" },
            { optioncontent: "其他", value: "other" },
          ],
          required: false,
        },
        {
          scriptType: 1,
          scriptContent: "您的职业是什么?",
          scriptResult: null,
          svyLibTemplateTargetoptions: [
            { optioncontent: "学生", value: "student" },
            { optioncontent: "教师", value: "teacher" },
            { optioncontent: "工程师", value: "engineer", isabnormal: true },
            { optioncontent: "医生", value: "doctor" },
            { optioncontent: "其他", value: "other" },
          ],
          required: false,
        },
        {
          scriptType: 1,
          scriptContent: "您的职业是什么?",
          scriptResult: null,
          svyLibTemplateTargetoptions: [
            { optioncontent: "学生", value: "student" },
            { optioncontent: "教师", value: "teacher" },
            { optioncontent: "工程师", value: "engineer" },
            { optioncontent: "医生", value: "doctor" },
            { optioncontent: "其他", value: "other" },
          ],
          required: false,
        },
        {
          scriptType: 4,
          scriptContent: "您的姓名是什么?",
          scriptResult: "name",
          required: true,
          scriptResult: null,
        },
      ],
      jsy: null,
      dialogVisible: false,
      Endornot: true,
      accomplish: false,
@@ -291,7 +312,7 @@
        (res) => {
          if (res.code == 200) {
            this.questionList = res.data.script;
            this.revisitAfter = res.data.revisitAfter;
            this.jsy = res.data.jsy;
            this.kcb = res.data.kcb;
            // 处理题目收集结果格式
            this.questionList.forEach((item) => {
@@ -334,7 +355,7 @@
      form.serviceSubtaskDetailList = arr;
      Submitaquestionnaire(form).then((res) => {
        if (res.code == 200) {
          if (this.revisitAfter) {
          if (this.jsy) {
            this.dialogVisible = true;
          }
          this.accomplish = true;
@@ -411,7 +432,7 @@
  padding: 0;
  .CONTENT {
    .title {
      color: #3769F3;
      color: #3769f3;
      font-size: 22px;
      font-weight: bold;
      margin-bottom: 20px;
@@ -426,6 +447,7 @@
  border-radius: 5px;
  //   margin: 20px;
  padding: 10px;
  height: 100%;
  // background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
@@ -438,12 +460,73 @@
    }
  }
}
.radio-group {
.preview-lefts {
  margin: 10px;
  background-color: #fff;
  border-radius: 5px;
  //   margin: 20px;
  padding: 10px;
  height: 95vh; // 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);
  .topic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
.red-star {
  position: relative;
  padding-right: 15px;
}
.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.el-checkbox-group {
  font-size: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px; /* 设置选项之间的间隔 */
  align-items: start; /* 确保选项上下对齐 */
  padding: 10px 0; /* 为整个组设置上下间隔 */
  flex-direction: column;
  margin: 5px 0;
}
::v-deep.el-checkbox.is-bordered + .el-checkbox.is-bordered {
  margin-left: 0;
}
::v-deep.el-radio-group {
  display: flex;
  flex-direction: column;
  margin: 5px 0;
}
::v-deep.el-radio.is-bordered + .el-radio.is-bordered {
  /* margin-left: 10px; */
  margin-left: 0;
}
::v-deep.custom-radio .el-radio {
  margin: 2px 0;
}
.radio-option {
@@ -463,6 +546,7 @@
  bottom: 0;
  left: 0;
  width: 100%;
  text-align: center;
  padding: 10px 0; /* 根据需要调整内边距 */
  background: #fff; /* 根据需要调整背景颜色 */
  box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); /* 可选的阴影效果 */
@@ -490,4 +574,7 @@
    line-height: 17px;
    font-size: 20px;
}
::v-deep.el-checkbox {
  margin-right: 0px;
}
</style>
src/views/patient/medtechnician/index.vue
@@ -226,7 +226,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -237,7 +237,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -248,7 +248,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
src/views/patient/patient/PatientChart.vue
@@ -252,7 +252,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.archivetime) }}</span>
              <span>{{ formatTime(scope.row.archivetime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/patient/patient/authRole.vue
@@ -29,7 +29,7 @@
      <el-table-column label="权限字符" align="center" prop="roleKey" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
    </el-table>
src/views/patient/patient/hospital.vue
@@ -167,7 +167,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.endtime) }}</span>
              <span>{{ formatTime(scope.row.endtime) }}</span>
            </template>
          </el-table-column>
src/views/patient/patient/index.vue
@@ -298,6 +298,9 @@
                prop="createTime"
                width="160"
              >
              <template slot-scope="scope">
                  <span>{{ formatTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="更新日期"
@@ -306,7 +309,7 @@
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                  <span>{{ formatTime(scope.row.archivetime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
@@ -437,7 +440,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/patient/patient/outpatient.vue
@@ -156,7 +156,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
src/views/patient/patient/physical.vue
@@ -257,7 +257,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
@@ -267,7 +267,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/patient/patient/profile/index.vue
@@ -374,7 +374,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
src/views/patient/physical/index.vue
@@ -251,7 +251,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -262,7 +262,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -273,7 +273,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -176,6 +176,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>
            </div>
          </div>
@@ -286,6 +306,7 @@
                        </el-option>
                      </el-select>
                    </el-col>
                    <el-col :span="1.5">
                      <el-button
                        type="primary"
@@ -293,7 +314,7 @@
                        icon="el-icon-plus"
                        size="medium"
                        :disabled="!patientqueryParams.allhosp"
                        @click="handleAddpatient"
                        @click="handleQuery"
                        >新增</el-button
                      >
                    </el-col>
@@ -369,6 +390,18 @@
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-select
                v-model="patientqueryParams.topica"
                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-button
@@ -651,6 +684,7 @@
      patientqueryParams: {
        pageNum: 1, //
        pageSize: 10,
        topica:0,//0全部1科室2病区
      },
      topicoptions: [{ children: [{ children: [] }] }],
      showSearch: true, //
@@ -718,6 +752,8 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb:'亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。',
        jsy:'生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!',
      },
      taskoptions: [
        {
@@ -733,6 +769,21 @@
          label: "体检病人",
        },
      ],
      source: [
        {
          value: 0,
          label: "所有患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      tasktypes: [
        {
          value: 1,
@@ -1128,7 +1179,6 @@
    handleUpdate() {},
    handleDelete() {},
    handleExport() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
      console.log("多选患者");
@@ -1189,6 +1239,18 @@
    },
    getList() {},
    handleQuery() {
      if (this.patientqueryParams.topica == 0) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.leavehospitaldistrictcodes;
        this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      } else if (topica == 1) {
        this.patientqueryParams.leavehospitaldistrictcodes = null;
        this.patientqueryParams.leaveldeptcodes = store.getters.leaveldeptcodes;
      } else if (topica == 2) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.leavehospitaldistrictcodes;
        this.patientqueryParams.leaveldeptcodes = null;
      }
      this.handleAddpatient();
    },
    resetQuery() {},
@@ -1222,6 +1284,8 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb:'亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。',
        jsy:'生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!',
      };
      this.questionList = [];
      if (this.id) {
src/views/patient/questionnaire/index.vue
@@ -236,7 +236,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -247,7 +247,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -258,7 +258,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
src/views/patient/subsequent/index.vue
@@ -240,7 +240,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -251,7 +251,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -262,7 +262,7 @@
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
src/views/repositoryai/matching/index.vue
@@ -207,7 +207,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/shortmessage/messagebank/index.vue
@@ -192,7 +192,7 @@
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                  <span>{{ formatTime(scope.row.createTime) }}</span>
                </template> </el-table-column
              ><el-table-column
                label="发送时间"
@@ -201,7 +201,7 @@
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                  <span>{{ formatTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
src/views/shortmessage/taglibrary/index.vue
@@ -149,7 +149,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
src/views/system/category/index.vue
src/views/system/config/index.vue
@@ -116,7 +116,7 @@
      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/dept/index.vue
@@ -104,7 +104,7 @@
        width="200"
      >
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column
src/views/system/dict/data.vue
@@ -109,7 +109,7 @@
      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/dict/index.vue
@@ -126,7 +126,7 @@
      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/menu/index.vue
@@ -72,7 +72,7 @@
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/post/index.vue
@@ -92,7 +92,7 @@
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/role/authUser.vue
@@ -72,7 +72,7 @@
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/role/index.vue
@@ -115,7 +115,7 @@
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
src/views/system/role/selectUser.vue
@@ -37,7 +37,7 @@
        </el-table-column>
        <el-table-column label="创建时间" align="center" prop="createTime" width="180">
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
      </el-table>
src/views/system/user/authRole.vue
@@ -29,7 +29,7 @@
      <el-table-column label="权限字符" align="center" prop="roleKey" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
          <span>{{ formatTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
    </el-table>
src/views/system/user/index.vue
@@ -228,7 +228,7 @@
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.createTime) }}</span>
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
@@ -304,7 +304,7 @@
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
          <!-- <el-col :span="12">
            <el-form-item label="归属部门" prop="deptId">
              <treeselect
                v-model="form.depts"
@@ -314,8 +314,42 @@
                placeholder="请选择归属部门"
              />
            </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-row>
          <el-col :span="12">
            <el-form-item label="手机号码" prop="phonenumber">
@@ -548,6 +582,7 @@
        children: "children",
        label: "label",
      },
      props: { multiple: true, value: "id", label: "label" },
      // 用户导入参数
      upload: {
        // 是否显示弹出层(用户导入)
@@ -754,7 +789,8 @@
      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);
        this.postOptions = response.posts;
        this.roleOptions = response.roles;
        this.$set(this.form, "postIds", response.postIds);
@@ -787,6 +823,15 @@
    },
    /** 提交按钮 */
    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(
        (subArr) => subArr[subArr.length - 1]
      );
      this.form.leavehospitaldistrictcodes = this.form.leavehospitaldistrictcodes.map(
        (subArr) => subArr[subArr.length - 1]
      );
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
vue.config.js
@@ -37,6 +37,7 @@
      [process.env.VUE_APP_BASE_API]: {
        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`,
        changeOrigin: true,
        pathRewrite: {