WXL
2024-09-05 df59cae6f3c73605a3f3b4055fdca5b4dabde2c2
测试完成
已添加2个文件
已修改11个文件
856 ■■■■■ 文件已修改
dist .zip 补丁 | 查看 | 原始文档 | blame | 历史
publicNetwork.zip 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/role.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 131 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/profile/index.vue 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dist .zip
Binary files differ
publicNetwork.zip
Binary files differ
src/api/system/role.js
@@ -20,7 +20,7 @@
// 新增角色
export function addRole(data) {
  return request({
    url: '/system/role',
    url: '/system/role/add',
    method: 'post',
    data: data
  })
src/api/system/user.js
@@ -51,7 +51,7 @@
    password
  }
  return request({
    url: '/system/user/resetPwd/edit',
    url: '/system/user/resetPwd',
    method: 'post',
    data: data
  })
src/components/Regular/index.vue
@@ -36,7 +36,9 @@
          <el-col :span="20"
            ><el-form-item label="选项说明">
              <el-input
                type="text"
              style="width: 500px;"
                type="textarea"
                :rows="2"
                placeholder="请输入"
                v-model="item.optiondesc"
                show-word-limit
@@ -244,6 +246,9 @@
        targetvalue: [
          { required: true, message: "请输入选项名称", trigger: "blur" },
        ],
        isabnormal: [
          { required: true, message: "请输入选项名称", trigger: "blur" },
        ],
      },
    };
  },
src/views/index.vue
@@ -245,23 +245,18 @@
                >
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">出院随访</div>
                    <div class="subtitle">满意度调查</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">出院宣教</div>
                    <div class="subtitle">其他通知</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">复诊通知</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col> </el-row
                </el-row
              >
              <el-row>
                <el-col :span="3"
@@ -269,20 +264,20 @@
                >
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">出院随访</div>
                    <div class="subtitle">在院宣教</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">出院宣教</div>
                    <div class="subtitle">在院评估</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">复诊通知</div>
                    <div class="subtitle">其他通知</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col> </el-row
src/views/knowledge/questionbank/particulars/index.vue
@@ -23,7 +23,7 @@
      </div>
      <div v-if="Editprogress == 1">
        <el-card class="box-card">
          <el-form :inline="true" :model="topicobj" class="demo-form-inline">
          <el-form :inline="true" ref="topicobj" :model="topicobj" :rules="rules" class="demo-form-inline">
            <div class="headline">
              基础信息配置
              <span style="margin-left: 30px"
@@ -42,7 +42,7 @@
            <div style="margin-left: 8%">
              <el-row :gutter="10">
                <el-col :span="8">
                  <el-form-item label="问题分类">
                  <el-form-item label="问题分类" prop="categoryid">
                    <el-select
                      v-model="topicobj.categoryid"
                      size="medium"
@@ -66,7 +66,7 @@
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="评价类型">
                  <el-form-item label="评价类型" prop="scoretype">
                    <el-select
                      v-model="topicobj.scoretype"
                      placeholder="请选择分类"
@@ -82,7 +82,7 @@
                  </el-form-item>
                </el-col>
                <el-col :span="8" v-if="topicobj.scoretype == 1">
                  <el-form-item label="题目得分">
                  <el-form-item label="题目得分" prop="score">
                    <el-input
                      v-model="topicobj.score"
                      placeholder="请输入分数"
@@ -93,14 +93,14 @@
              <el-row :gutter="10">
                <el-col :span="8"
                  ><el-form-item label="题目标题">
                  ><el-form-item label="题目标题" prop="scriptTopic">
                    <el-input
                      v-model="topicobj.scriptTopic"
                      placeholder="请输入标题"
                    ></el-input> </el-form-item
                ></el-col>
                <el-col :span="8"
                  ><el-form-item label="是否可用">
                  ><el-form-item label="是否可用" prop="isavailable">
                    <el-radio-group v-model="topicobj.isavailable">
                      <el-radio
                      @change="$forceUpdate()"
@@ -111,8 +111,8 @@
                    </el-radio-group>
                  </el-form-item></el-col
                >
                <el-col :span="8">
                  <el-form-item label="是否必填">
                <!-- <el-col :span="8">
                  <el-form-item label="是否必填" prop="ismandatory">
                    <el-radio-group v-model="topicobj.ismandatory">
                      <el-radio
                      @change="$forceUpdate()"
@@ -122,11 +122,11 @@
                      >
                    </el-radio-group>
                  </el-form-item>
                </el-col>
                </el-col> -->
              </el-row>
              <el-row :gutter="10">
                <el-col :span="8">
                  <el-form-item label="语言">
                  <el-form-item label="语言" prop="language">
                    <el-select
                      v-model="topicobj.language"
                      size="medium"
@@ -145,7 +145,7 @@
                  </el-form-item>
                </el-col>
                <el-col :span="8"
                  ><el-form-item label="题目类型">
                  ><el-form-item label="题目类型" prop="scriptType">
                    <el-select
                      v-model="topicobj.scriptType"
                      @change="changefn"
@@ -164,7 +164,7 @@
                    </el-select> </el-form-item
                ></el-col>
                <el-col :span="8"
                  ><el-form-item label="适用方式">
                  ><el-form-item label="适用方式" prop="suitway">
                    <el-select
                      v-model="topicobj.suitway"
                      disabled
@@ -180,7 +180,7 @@
                      </el-option> </el-select></el-form-item
                ></el-col>
              </el-row>
              <el-form-item label="题目内容">
              <el-form-item label="题目内容" prop="scriptContent">
                <el-input
                  style="width: 40vw"
                  type="textarea"
@@ -235,7 +235,7 @@
                </el-form-item>
              </el-col>
            </el-row> -->
              <el-form-item label="题目说明">
              <el-form-item label="题目说明" prop="targetname">
                <el-input
                  style="width: 40vw"
                  type="textarea"
@@ -527,7 +527,7 @@
                <el-input
                  type="textarea"
                  :rows="4"
                  placeholder="此处展示收集信息"
                  placeholder="此处展示问答题收集信息"
                  v-model="testgovalue"
                >
                </el-input>
@@ -607,14 +607,6 @@
            align="center"
            key="targetdesc"
            prop="targetdesc"
            width="200"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="语言"
            align="center"
            key="language"
            prop="language"
            width="200"
            :show-overflow-tooltip="true"
          />
@@ -732,6 +724,8 @@
        svyLibScriptOptions: [],
        svyLibScriptTagList: [],
        suitway: "1",
        scoretype:'4',
        language:'普通话',
      },
      headers: {
        Authorization: "Bearer " + getToken(),
@@ -799,6 +793,36 @@
      valuetype: [],
      usable: [],
      mode: [], //方式
      // 表单校验
      rules: {
        categoryid: [
          { required: true, message: "问题分类不能为空", trigger: "blur" },
        ],
        scoretype: [
          { required: true, message: "评价类型不能为空", trigger: "blur" },
        ],
        language: [
          { required: true, message: "语言不能为空", trigger: "blur" },
        ],
        isavailable: [
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        scriptTopic: [
          { required: true, message: "题目标题不能为空", trigger: "blur" },
        ],
        ismandatory: [
          { required: true, message: "是否必填不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
        ],
        suitway: [
          { required: true, message: "适用方式不能为空", trigger: "blur" },
        ],
        scriptContent: [
          { required: true, message: "题目内容不能为空", trigger: "blur" },
        ],
      },
    };
  },
@@ -889,7 +913,9 @@
    },
    // 新增或修改详情
    compileissue() {
      this.topicobj.svyLibScriptOptions = this.topicobj.svyLibScriptOptions.map(
      this.$refs["topicobj"].validate((valid) => {
        if (valid) {
          this.topicobj.svyLibScriptOptions = this.topicobj.svyLibScriptOptions.map(
        (item) => {
          if (item.isoperation != 1 && item.isoperation != 3) {
            item.isoperation = 2;
@@ -943,6 +969,10 @@
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
        }
      })
    },
    // 判断分值
    Scorejudgment() {
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -41,7 +41,7 @@
        >
          <el-row :gutter="10">
            <el-col :span="10">
              <el-form-item label="问卷分类" prop="region">
              <el-form-item label="问卷分类" prop="categoryid">
                <el-select
                  v-model="ruleForm.categoryid"
                  size="medium"
@@ -65,7 +65,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="评价类型">
              <el-form-item label="评价类型" prop="scoreType">
                <el-select
                  v-model="ruleForm.scoreType"
                  placeholder="请选择分类"
@@ -81,12 +81,12 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问卷标题" prop="name">
          <el-form-item label="问卷标题" prop="svyname">
            <div style="width: 30%">
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述">
          <el-form-item label="问卷描述" prop="description">
            <el-input
              style="width: 40vw"
              type="textarea"
@@ -98,7 +98,19 @@
          ></el-form-item>
          <el-row>
            <el-form-item label="标签" prop="desc">
            <el-form-item  prop="dynamicTags" >
              <template #label>
                    标签
                    <el-tooltip
                      class="item"
                      effect="light"
                      content="准确、扼要、多重的标签,可以让您在系统使用中方便的查找到该模版。"
                      placement="top-start"
                    >
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip>
                    <!-- 在标签后插入红色星号 -->
                  </template>
              <div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
@@ -142,7 +154,18 @@
            </el-form-item>
          </el-row>
          <div class="xinz-infs">
            <el-form-item label="适用疾病" prop="region">
            <el-form-item >
              <template #label>
                适用疾病
                <el-tooltip
                  class="item"
                  effect="light"
                  content="选择好适用疾病后,可以方便您通过疾病诊断查找到对应的病人!"
                  placement="top-start"
                >
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip>
              </template>
              <el-tag
                v-for="tag in displayedTags"
                :key="tag.icdid"
@@ -168,7 +191,7 @@
                ></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
              <el-form-item label="可用状态" prop="isAvailable">
                <el-radio-group v-model="ruleForm.isAvailable">
                  <el-radio
                    v-for="(item, index) in usable"
@@ -179,7 +202,7 @@
              </el-form-item></el-col
            >
          </el-row>
          <el-form-item label="问卷方式" prop="region">
          <el-form-item label="问卷方式" prop="suitway">
            <el-select
              v-model="ruleForm.suitway"
              size="medium"
@@ -237,7 +260,7 @@
              </el-form-item></el-col
            >
          </el-row>
          <el-form-item label="问卷结束语">
          <el-form-item label="问卷结束语" prop="conclusion">
            <el-input
              style="width: 40vw"
              type="textarea"
@@ -1208,11 +1231,42 @@
        svyTemplateLibScripts: [],
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
        scoreType:'4',
        isAvailable:'0'
      },
      indexform: {
        svyLibTemplateTargetoptions: [],
      },
      rules: {},
       // 表单校验
       rules: {
        categoryid: [
          { required: true, message: "问卷分类不能为空", trigger: "blur" },
        ],
        scoreType: [
          { required: true, message: "评价类型不能为空", trigger: "blur" },
        ],
        svyname: [
          { required: true, message: "问卷标题不能为空", trigger: "blur" },
        ],
        isAvailable: [
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        scriptTopic: [
          { required: true, message: "题目标题不能为空", trigger: "blur" },
        ],
        ismandatory: [
          { required: true, message: "是否必填不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
        ],
        suitway: [
          { required: true, message: "问卷方式不能为空", trigger: "blur" },
        ],
        conclusion: [
          { required: true, message: "问卷结束语不能为空", trigger: "blur" },
        ],
      },
      rulesa: {},
      optionsclass: [], //分类列表
      optionlist: [
@@ -1380,11 +1434,13 @@
    // 获取数据
    getissueinfo() {
      this.id = this.$route.query.id;
      this.ruleForm = {
     this.ruleForm= {
        svyTemplateLibScripts: [],
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
      };
        scoreType:'4',
        isAvailable:'0'
      },
      this.topicobj = {};
      if (this.id) {
@@ -1416,7 +1472,7 @@
    },
    submitForm(formName) {
      this.$modal.loading("正在修正保存数据,请稍候...");
      if (this.ruleForm.suitway) {
      if (Array.isArray(this.ruleForm.suitway)) {
        this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      }
      if (!this.ruleForm.categoryid) {
src/views/patient/patient/index.vue
@@ -950,49 +950,42 @@
      },
      // 表单校验
      rules: {
        // userName: [
        //   { required: true, message: "用户名称不能为空", trigger: "blur" },
        //   {
        //     min: 2,
        //     max: 20,
        //     message: "用户名称长度必须介于 2 和 20 之间",
        //     trigger: "blur",
        //   },
        // ],
        // nickName: [
        //   { required: true, message: "用户昵称不能为空", trigger: "blur" },
        // ],
        // password: [
        //   { required: true, message: "用户密码不能为空", trigger: "blur" },
        //   {
        //     min: 5,
        //     max: 20,
        //     message: "用户密码长度必须介于 5 和 20 之间",
        //     trigger: "blur",
        //   },
        // ],
        // email: [
        //   {
        //     type: "email",
        //     message: "请输入正确的邮箱地址",
        //     trigger: ["blur", "change"],
        //   },
        // ],
        // phonenumber: [
        //   {
        //     pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
        //     message: "请输入正确的手机号码",
        //     trigger: "blur",
        //   },
        // ],
        // IDnumber: [
        //   {
        //     pattern:
        //       /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
        //     message: "请输入正确的身份证号码",
        //     trigger: "blur",
        //   },
        // ],
        name: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
        age: [{ required: true, message: "年龄不能为空", trigger: "blur" }],
        nation: [{ required: true, message: "民族不能为空", trigger: "blur" }],
        telcode: [
          { required: true, message: "联系方式不能为空", trigger: "blur" },
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        idcardtype: [
          { required: true, message: "证件类型不能为空", trigger: "blur" },
        ],
        idcardno: [
          { required: true, message: "证件号能为空", trigger: "blur" },
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
        placeOfResidence: [
          { required: true, message: "居住地不能为空", trigger: "blur" },
        ],
      },
    };
  },
@@ -1111,30 +1104,34 @@
    },
    //修改/新增患者
    submitForm() {
      if (this.amendtag) {
        this.form.isoperation = 2;
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("修改成功");
          });
      } else {
        this.form.isoperation = 1;
        alterpatient(this.form)
          .then((response) => {
            console.log(response);
          })
          .then(() => {
            this.getList();
            this.$modal.msgSuccess("添加成功");
          });
      }
      this.reset();
      // this.idds = "";
      this.Labelchange = false;
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.amendtag) {
            this.form.isoperation = 2;
            alterpatient(this.form)
              .then((response) => {
                console.log(response);
              })
              .then(() => {
                this.getList();
                this.$modal.msgSuccess("修改成功");
              });
          } else {
            this.form.isoperation = 1;
            alterpatient(this.form)
              .then((response) => {
                console.log(response);
              })
              .then(() => {
                this.getList();
                this.$modal.msgSuccess("添加成功");
              });
          }
          this.reset();
          // this.idds = "";
          this.Labelchange = false;
        }
      });
    },
    /** 删除按钮操作 */
src/views/patient/patient/profile/index.vue
@@ -113,81 +113,101 @@
          <el-button type="primary" @click="savefile">保存患者档案</el-button>
        </div>
        <div class="detailed">
          <el-row :gutter="20">
            <el-col :span="12"
              ><div class="grid-content bg-purple">
                患者姓名:<span class="spanvalue">{{ userform.name }}</span>
              </div></el-col
            >
            <el-col :span="12"
              ><div class="grid-content bg-purple">
                联系电话:<span class="spanvalue">{{ userform.telcode }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="grid-content bg-purple">
                出生地:<span class="spanvalue">{{ userform.birthplace }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="grid-content bg-purple">
                居住地:<span class="spanvalue">{{
                  userform.placeOfResidence
                }}</span>
              </div></el-col
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="24"
              ><div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClose(tag)"
                >
                  {{ tag.tagname }}
                </el-tag>
                <el-select
                  v-if="inputVisible"
                  v-model="inputValue"
                  @change="handleInputConfirm"
                  filterable
                  allow-create
                  default-first-option
                  placeholder="请选择/查询"
                >
                  <el-option
                    v-for="item in options"
                    :key="item.tagid"
                    :label="item.tagname"
                    :value="item.tagname"
                  >
                  </el-option>
                </el-select>
          <el-form
            ref="userform"
            :model="userform"
            :rules="rules"
            label-width="100px"
          >
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="患者姓名" prop="name">
                  <el-input
                    v-model="userform.name"
                    placeholder="请输入姓名"
                    maxlength="30"
                  ></el-input> </el-form-item
              ></el-col>
              <el-col :span="12"
                ><el-form-item label="联系方式" prop="telcode">
                  <el-input
                    v-model="userform.telcode"
                    placeholder="请输入联系方式"
                    maxlength="30"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24">
                <el-form-item label="出生地" prop="birthplace">
                  <el-input
                    v-model="userform.birthplace"
                    placeholder="国、省、地市、区县、街道等详细信息"
                    maxlength="50"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24"
                ><el-form-item label="居住地" prop="placeOfResidence">
                  <el-input
                    v-model="userform.placeOfResidence"
                    placeholder="国、省、地市、区县、街道等详细信息"
                    maxlength="50"
                  /> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="24">
                <el-form-item label="标签" prop="desc">
                  <div class="xinz-inf">
                    <el-tag
                      :key="tag.tagname"
                      type="success"
                      v-for="tag in dynamicTags"
                      v-if="tag.isoperation != 3"
                      closable
                      :disable-transitions="false"
                      @close="handleClose(tag)"
                    >
                      {{ tag.tagname }}
                    </el-tag>
                    <el-select
                      v-if="inputVisible"
                      v-model="inputValue"
                      @change="handleInputConfirm"
                      filterable
                      allow-create
                      default-first-option
                      placeholder="请选择/查询"
                    >
                      <el-option
                        v-for="item in options"
                        :key="item.tagid"
                        :label="item.tagname"
                        :value="item.tagname"
                      >
                      </el-option>
                    </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInput"
                  >+ 新增标签</el-button
                >
              </div></el-col
            >
          </el-row>
                    <el-button
                      v-else
                      class="button-new-tag"
                      size="small"
                      @click="showInput"
                      >+ 新增标签</el-button
                    >
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
        </div>
      </div>
      <div class="top-message">
        <div class="headline">病史</div>
        <div class="detailed">
          <el-form ref="form" :model="form" label-width="100px">
          <el-form :model="form" label-width="100px">
            <el-row>
              <el-col :span="8">
                <el-form-item label="过往疾病" prop="name">
@@ -860,6 +880,39 @@
        { label: "测量时间", width: "", prop: "name" },
        { label: "体温", width: "", prop: "sex" },
      ],
      // 表单校验
      rules: {
        name: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
        age: [{ required: true, message: "年龄不能为空", trigger: "blur" }],
        nation: [{ required: true, message: "民族不能为空", trigger: "blur" }],
        telcode: [
          { required: true, message: "联系方式不能为空", trigger: "blur" },
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        idcardtype: [
          { required: true, message: "证件类型不能为空", trigger: "blur" },
        ],
        idcardno: [
          { required: true, message: "证件号能为空", trigger: "blur" },
        ],
        placeOfResidence: [
          { required: true, message: "居住地不能为空", trigger: "blur" },
        ],
      },
    };
  },
  created() {
@@ -941,17 +994,21 @@
    },
    // 保存患者档案
    savefile() {
      // this.userform.tagList = this.dynamicTags;
      this.userform.isoperation = 2;
      alterpatient(this.userform).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("基础信息保存成功");
        } else {
          this.$modal.msgError("基础信息修改失败");
      this.$refs["userform"].validate((valid) => {
        if (valid) {
          this.userform.isoperation = 2;
          this.userform.tagList = this.dynamicTags;
          alterpatient(this.userform).then((res) => {
            if (res.code == 200) {
              this.$modal.msgSuccess("基础信息保存成功");
            } else {
              this.$modal.msgError("基础信息修改失败");
            }
          });
          // 病史
          this.medicalhistory();
        }
      });
      // 病史
      this.medicalhistory();
    },
    // 病史
    medicalhistory() {
@@ -1099,8 +1156,8 @@
    },
    handleClose(tag) {
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.userform.tagList[lindex].isoperation = 3;
      // this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.dynamicTags[lindex].isoperation = 3;
    },
    showInput() {
@@ -1128,7 +1185,7 @@
            };
          }
          console.log(tagvalue);
          this.userform.tagList.push(tagvalue);
          // this.userform.tagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          console.log(this.userform.tagList);
          console.log(this.dynamicTags);
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -30,33 +30,68 @@
              <div>基础信息</div>
            </div>
            <div class="jic-value">
              <el-form ref="form" :model="form" label-width="105px">
              <el-form
                ref="form"
                :model="form"
                :rules="rules"
                label-width="125px"
              >
                <el-row :gutter="20">
                  <el-col :span="12"
                    ><el-form-item label="任务名称">
                    ><el-form-item label="任务名称" prop="taskName">
                      <el-input
                        style="width: 220px"
                        v-model="form.taskName"
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="任务类型">
                      <el-select
                        v-model="serviceType"
                        placeholder="请选择新增类型"
                      >
                        <el-option
                          v-for="item in tasktypes"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="任务描述">
                <el-form-item label="任务描述" prop="taskDesc">
                  <el-input
                    type="textarea"
                    v-model="form.taskDesc"
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:">
                <el-form-item label="服务形式" prop="taskDesc">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="执行设置" prop="sendType">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
                    <el-radio :label="2">即刻发送</el-radio>
                    <el-radio :label="1">时间段执行</el-radio>
                    <el-radio :label="3">时间点执行</el-radio>
                    <el-radio :label="2">即刻执行</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="发送日期:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行日期"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <el-date-picker
                    v-model="daytime"
                    @change="changeTimeday"
@@ -69,7 +104,11 @@
                  </el-date-picker>
                </el-form-item>
                <el-form-item label="发送时间点:" v-if="form.sendType == 3">
                <el-form-item
                  label="执行时间点"
                  v-if="form.sendType == 3"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <el-date-picker
@@ -84,12 +123,14 @@
                  </div>
                </el-form-item>
                <el-form-item label="发送时间段:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行时间段"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段一</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">①</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -104,9 +145,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">②</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -121,9 +160,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">③</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -139,28 +176,21 @@
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-row :gutter="20">
                  <el-col :span="10"
                    ><el-form-item label="模板名称">
                      <el-input
                        style="width: 300px"
                        :disabled="true"
                        v-model="form.templatename"
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="4">
              </el-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>任务使用模板</div>
              <div style="margin-left: 20px">
                <el-form :model="form">
                  <el-form-item label="">
                    <el-input
                      style="width: 300px"
                      :disabled="true"
                      v-model="form.templatename"
                      placeholder="请点击右侧选择"
                    />
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
@@ -169,23 +199,21 @@
                    ></el-button>
                    <el-button
                    v-if="this.form.libtemplateid"
                      v-if="this.form.libtemplateid"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
              </el-form>
                  </el-form-item>
                </el-form>
              </div>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>变量匹配量参</div>
            </div>
            <div class="examine-jic">
              <div class="jic-value">
                <div style="margin-bottom: 10px">模板中使用的变量:</div>
                <el-row :gutter="20">
                  <el-table :data="variableList" style="width: 100%">
                    <el-table-column
@@ -335,7 +363,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="患者名称:">
              <el-form-item label="患者:">
                <el-input
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
@@ -592,13 +620,13 @@
      questionList: [],
      // 患者表单
      tableLabelhz: [
        // { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "医生", width: "", prop: "drname" },
        { label: "科室", width: "", prop: "deptName" },
        { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
      ],
      tableLabelwj: [
@@ -728,8 +756,62 @@
          label: "体检病人",
        },
      ],
      tasktypes: [
        {
          value: 1,
          label: "监测评估",
        },
        {
          value: 2,
          label: "出院随访",
        },
        {
          value: 3,
          label: "门诊随访",
        },
        {
          value: 4,
          label: "宣教关怀",
        },
        {
          value: 5,
          label: "复诊管理",
        },
        {
          value: 6,
          label: "满意度调查",
        },
        {
          value: 7,
          label: "患者报告",
        },
        {
          value: 8,
          label: "其他通知",
        },
      ],
      rules: {
        taskName: [
          { required: true, message: "任务名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "任务名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        taskDesc: [
          { required: true, message: "任务描述不能为空", trigger: "blur" },
        ],
        sendType: [
          { required: true, message: "发送设置不能为空", trigger: "blur" },
        ],
        daytime: [{ required: true, message: "民族不能为空", trigger: "blur" }],
      },
      quote: false,
      serviceType:null,
      serviceType: null,
    };
  },
  components: { SFtable },
@@ -899,38 +981,49 @@
    },
    // 保存
    submitForm(formName) {
      this.form.preachform = this.checkList.join(",");
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
      }
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
      );
      console.log(filteredArray, "存前变量");
      this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
      if (this.form.taskid) {
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
      }
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
      }
      this.form.serviceType=this.serviceType;
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
            this.$modal.msgSuccess("新增成功");
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.checkList[0]) {
            this.form.preachform = this.checkList.join(",");
          } else {
            this.$modal.msgSuccess("修改成功");
            this.$modal.msgError("请选择服务类型");
            return;
          }
          this.$router.push({
            path: "/followvisit/tasklist",
            query: { tasktopic: this.form.serviceType },
          if (!this.form.patTaskRelevances[0]) {
            this.$modal.msgError("请选择病人");
            return;
          }
          const filteredArray = this.variableList.filter(
            (item) =>
              item.name !== "姓名" &&
              item.name !== "电话" &&
              item.name !== "地址"
          );
          this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
          if (this.form.taskid) {
            this.form.isoperation = 2;
          } else {
            this.form.isoperation = 1;
          }
          if (!this.form.type) {
            this.form.type = this.$route.query.type;
          }
          this.form.serviceType = this.serviceType;
          Editsingletask(this.form).then((res) => {
            if (res.code == 200) {
              if (this.form.taskid) {
                this.$modal.msgSuccess("新增成功");
              } else {
                this.$modal.msgSuccess("修改成功");
              }
              this.$router.push({
                path: "/followvisit/tasklist",
                query: { tasktopic: this.form.serviceType },
              });
            }
          });
        }else{
          this.$modal.msgError("表单内容未完善,请检查");
        }
      });
    },
@@ -1001,17 +1094,17 @@
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "主任医师", width: "", prop: "drname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "创建人", width: "", prop: "createBy" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "", prop: "deptName" },
          { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "诊断", width: "", prop: "diagname" },
@@ -1127,20 +1220,20 @@
    },
    // 获取详情
    Getdetails() {
      this.form= {
      this.form = {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      };
      this.questionList=[];
      this.questionList = [];
      if (this.id) {
        Questionnairetaskget({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          if (res.code == 200) {
            this.form = res.data;
            this.form.serviceType=this.serviceType;
            this.form.serviceType = this.serviceType;
            this.form.patTaskRelevances = this.form.patTaskRelevances
              ? this.form.patTaskRelevances
              : [];
@@ -1357,11 +1450,12 @@
  margin: 20px;
  .headline {
    font-size: 24px;
    height: 40px;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;
    // justify-content: space-between;
    .Add-details {
      font-size: 18px;
      color: #02a7f0;
src/views/repositoryai/intention/index.vue
@@ -432,7 +432,7 @@
                <div class="tsgname" @click="tsgnameto">插入填空</div>
              </div>
            </el-form-item> -->
            <el-form-item label="标签" prop="desc" v-if="!measurement">
            <el-form-item label="标签" prop="dynamicTags" v-if="!measurement">
              <div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
@@ -472,7 +472,7 @@
            </el-form-item>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item>
                <el-form-item prop="valueType">
                  <template #label>
                    值类型
                    <el-tooltip
@@ -495,7 +495,7 @@
            >
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="题目类型">
                <el-form-item label="题目类型" prop="scriptType">
                  <el-radio-group
                    @input="Changtype"
                    v-model="indexform.scriptType"
@@ -801,10 +801,25 @@
          { required: true, message: "指标分类不能为空", trigger: "blur" },
        ],
        language: [
          { required: true, message: "指标语言不能为空", trigger: "blur" },
          { required: true, message: "语言不能为空", trigger: "blur" },
        ],
        isAvailable: [
          { required: true, message: "指标语言不能为空", trigger: "blur" },
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        targetdesc: [
          { required: true, message: "指标描述不能为空", trigger: "blur" },
        ],
        dynamicTags: [
          { required: true, message: "标签不能为空", trigger: "blur" },
        ],
        valueType: [
          { required: true, message: "值类型不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
        ],
        suitWayList: [
          { required: true, message: "适用场景不能为空", trigger: "blur" },
        ],
      },
    };
@@ -1275,6 +1290,7 @@
          targetregex: "",
          targetregex2: "",
          isoperation: 1,
          isabnormal:0,
          picturePath: "",
          dynamiccruxs: [],
          nodynamiccruxs: [],
vue.config.js
@@ -9,7 +9,7 @@
const name = process.env.VUE_APP_TITLE || '患者智慧服务系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 8093 // 端口
const port = process.env.port || process.env.npm_config_port || 8096 // 端口
// vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -35,9 +35,9 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        // target: `http://192.168.1.10:8095`,
        target: `http://192.168.1.10:8095`,
        // target:`http://localhost:8095`,
        target: `http://192.168.101.135:8095`,
        // target: `http://192.168.101.135:8095`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''