WXL
2024-10-24 6f35ca70caf02e1c2b7dbab32794c1cc1f5dbf60
测试完成
已删除2个文件
已添加2个文件
已修改9个文件
已重命名1个文件
5249 ■■■■ 文件已修改
src/components/Regular/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 327 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/index.vue 828 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/medtechnician/Compositeeditdetails.vue 873 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/medtechnician/PatientChart.vue 1159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/medtechnician/SpecializedService.vue 534 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/PatientChart.vue 1115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/index.vue 219 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/measurement.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue
@@ -70,6 +70,18 @@
              </el-input> </el-form-item
          ></el-col>
        </el-row>
        <el-row :gutter="10" v-if="scriptType == 1">
                      <el-form-item label="选中提示">
                        <el-input
                          style="width: 24vw"
                          type="textarea"
                          autosize
                          placeholder="请输入内容"
                          v-model="item.prompt"
                        >
                        </el-input
                      ></el-form-item>
                    </el-row>
        <el-row>
          <el-form-item label="关键字(含)" prop="desc" v-if="hasValue">
            <div class="xinz-inf">
@@ -267,6 +279,10 @@
      type: Boolean,
      default: true,
    },
    scriptType: {
      type: String,
      default: '1',
    },
    addoption: {
      type: Boolean,
      default: false,
src/store/getters.js
@@ -395,7 +395,68 @@
        cssClass: "",
        listClass: "",
      },
    }
    },
  ],
  // æœåŠ¡ç±»åž‹
  checkboxlist: (state) => [
    {
      value: "1",
      label: "人工",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "2",
      label: "纸质",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "3",
      label: "电话",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "4",
      label: "短信",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "5",
      label: "微信公众号",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "6",
      label: "微信小程序",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "8",
      label: "智能机器人",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // è¯­è¨€
  languagelist: (state) => [
@@ -573,8 +634,6 @@
      },
    },
  ],
};
export default getters;
src/views/followvisit/discharge/index.vue
@@ -1,29 +1,29 @@
<template>
  <div class="app-container">
    <div class="leftvlue" style="margin-bottom: 20px;">
        <el-row :gutter="10">
          <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
            <el-card
              shadow="hover"
              :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
            >
              <div style="padding: 8px" @click="$router.push(item.router)">
                <span>{{ item.name }}</span>
                <div
                  style="
                    text-align: center;
                    font-size: 18px;
                    margin-top: 10px;
                    font-weight: 600;
                  "
                >
                  {{ item.value }}
                </div>
    <div class="leftvlue" style="margin-bottom: 20px">
      <el-row :gutter="10">
        <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
          <el-card
            shadow="hover"
            :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
          >
            <div style="padding: 8px" @click="$router.push(item.router)">
              <span>{{ item.name }}</span>
              <div
                style="
                  text-align: center;
                  font-size: 18px;
                  margin-top: 10px;
                  font-weight: 600;
                "
              >
                {{ item.value }}
              </div>
            </el-card>
          </el-col>
        </el-row>
      </div>
            </div>
          </el-card>
        </el-col>
      </el-row>
    </div>
    <el-row :gutter="20">
      <!--用户数据-->
      <el-form
@@ -35,7 +35,10 @@
        label-width="98px"
      >
        <el-form-item label="任务名称">
          <el-input v-model="topqueryParams.taskName" placeholder="请选择任务名称"></el-input>
          <el-input
            v-model="topqueryParams.taskName"
            placeholder="请选择任务名称"
          ></el-input>
        </el-form-item>
        <el-form-item label="出院时间">
@@ -155,8 +158,8 @@
      <el-table
        v-loading="loading"
        :data="userList"
         height="660"
         :row-class-name="tableRowClassName"
        height="660"
        :row-class-name="tableRowClassName"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="50" align="center" />
@@ -177,80 +180,61 @@
          prop="sendname"
        />
        <el-table-column
        label="任务状态"
        align="center"
        key="sendstate"
        prop="sendstate"
        width="120"
          label="任务状态"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
        >
        <template slot-scope="scope">
          <div v-if="scope.row.sendstate == 1">
            <el-tag type="primary" :disable-transitions="false"
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 1">
              <el-tag type="primary" :disable-transitions="false"
                >被领取</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 2">
                <el-tag type="primary" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 2">
              <el-tag type="primary" :disable-transitions="false"
                >待发送</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 3">
                <el-tag type="success" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 3">
              <el-tag type="success" :disable-transitions="false"
                >已发送未领取</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 4">
                <el-tag type="info" :disable-transitions="false">不执行</el-tag>
              </div>
              <div v-if="scope.row.sendstate == 5">
                <el-tag type="danger" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 4">
              <el-tag type="info" :disable-transitions="false">不执行</el-tag>
            </div>
            <div v-if="scope.row.sendstate == 5">
              <el-tag type="danger" :disable-transitions="false"
                >发送失败</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 6">
                <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
              </div>
            </template>
          </el-table-column>
          <el-table-column
              >
            </div>
            <div v-if="scope.row.sendstate == 6">
              <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
            </div>
          </template>
        </el-table-column>
        <!-- <el-table-column
          label="任务异常说明"
          width="120"
          align="center"
          key="remark"
          prop="remark"
          prop="remark" -->
        />
          <!-- <el-table-column
          label="结果状态"
          align="center"
          key="excep"
          prop="excep"
          width="120"
          >
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 6">
              <dict-tag
              :options="dict.type.sys_yujing"
              :value="scope.row.excep"
              />
            </div>
            <div v-else>
              <span></span>
            </div>
          </template>
        </el-table-column> -->
        <el-table-column
        label="人工处理意见"
        align="center"
        key="suggest"
        prop="suggest"
        width="120"
          label="人工处理意见"
          align="center"
          key="suggest"
          prop="suggest"
          width="120"
        >
        <template slot-scope="scope">
          <dict-tag
          :options="dict.type.sys_suggest"
          :value="scope.row.suggest"
          />
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_suggest"
              :value="scope.row.suggest"
            />
          </template>
        </el-table-column>
        <el-table-column
@@ -272,34 +256,34 @@
          </template>
        </el-table-column>
        <el-table-column
        label="出院日期"
        width="200"
        align="center"
        key="endtime"
        prop="endtime"
          label="出院日期"
          width="200"
          align="center"
          key="endtime"
          prop="endtime"
        >
        <template slot-scope="scope">
          <span>{{ formatTime(scope.row.endtime) }}</span>
        </template></el-table-column
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.endtime) }}</span>
          </template></el-table-column
        >
        <el-table-column
        label="应随访日期"
        width="200"
        align="center"
        key="longSendTime"
        prop="longSendTime"
          label="应随访日期"
          width="200"
          align="center"
          key="longSendTime"
          prop="longSendTime"
        >
        <template slot-scope="scope">
          <span>{{ formatTime(scope.row.longSendTime) }}</span>
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.longSendTime) }}</span>
          </template></el-table-column
          >
          <el-table-column
        >
        <el-table-column
          label="出院天数"
          width="120"
          align="center"
          key="endDay"
          prop="endDay"
          >
        >
          <template slot-scope="scope">
            <span>{{
              scope.row.endDay ? scope.row.endDay + "天" : "日期缺失"
@@ -334,7 +318,6 @@
          key="drname"
          prop="drname"
        />
        <!-- <el-table-column
          label="病历号"
@@ -382,59 +365,56 @@
          prop="templatename"
          width="200"
        />
        <el-table-column
        <!-- <el-table-column
          label="责任医师"
          label="任务执行方式"
          align="center"
          key="drname"
          prop="drname"
          width="120"
        /> -->
        <!-- <el-table-column
          label="出院时间"
          sortable
          align="center"
          prop="createTime"
          key="preachform"
          prop="preachform"
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column> -->
        <!-- <el-table-column
          label="随访时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.sendType != 3">{{
              formatTime(scope.row.createTime)
            }}</span>
            <span v-else>即刻发送</span>
          </template>
        </el-table-column> -->
        <!-- <el-table-column
          label="任务状态"
          fixed="right"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <dict-tag :options="serviceState" :value="scope.row.sendstate" />
            <span v-for="item in scope.row.preachform"
              >{{ item }}、
            </span>
          </template>
        </el-table-column> -->
        </el-table-column>
        <el-table-column
          label="任务发送流程"
          align="center"
          key="serviceSubtaskRecordList"
          prop="serviceSubtaskRecordList"
          width="160"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span v-for="item in scope.row.serviceSubtaskRecordList"
              >{{ item.remark }}、
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="任务结果说明"
          width="120"
          align="center"
          key="remark"
          prop="remark"
        >
          <template slot-scope="scope" v-if="scope.row.remark">
            <el-tag
              type="success"
              v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
              >{{ scope.row.remark }}</el-tag
            >
            <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
          fixed="right"
          align="center"
          width="200"
          class-name="small-padding fixed-width"
@@ -773,7 +753,7 @@
        pageNum: 1,
        pageSize: 10,
        serviceType: 2,
        searchscope:2,
        searchscope: 2,
      },
      propss: { multiple: true },
      options: [],
@@ -815,6 +795,7 @@
        },
      ],
      serviceState: [],
      checkboxlist: [],
      // è¡¨å•校验
      rules: {},
    };
@@ -822,6 +803,8 @@
  watch: {},
  created() {
    this.serviceState = store.getters.serviceState;
    this.checkboxlist = store.getters.checkboxlist;
    this.getList();
    this.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
@@ -852,17 +835,25 @@
      this.loading = true;
      getTaskservelist(this.topqueryParams).then((response) => {
        this.userList = response.rows[0].serviceSubtaskList;
        this.cardlist[0].value=Number(response.rows[0].wzx)+Number(response.rows[0].ysf);
        this.cardlist[1].value=response.rows[0].ysf;
        this.cardlist[2].value=response.rows[0].wzx;
        this.cardlist[3].value=response.rows[0].yc;
        this.cardlist[4].value=response.rows[0].fssb;
        this.cardlist[5].value=response.rows[0].blq;
        this.cardlist[6].value=response.rows[0].yfs;
        this.cardlist[0].value =
          Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
        this.cardlist[1].value = response.rows[0].ysf;
        this.cardlist[2].value = response.rows[0].wzx;
        this.cardlist[3].value = response.rows[0].yc;
        this.cardlist[4].value = response.rows[0].fssb;
        this.cardlist[5].value = response.rows[0].blq;
        this.cardlist[6].value = response.rows[0].yfs;
        this.userList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
          const idArray = item.preachform.split(",");
          item.preachform = idArray.map((value) => {
            // æŸ¥æ‰¾id对应的对象
            const item = this.checkboxlist.find((item) => item.value == value);
            // å¦‚果找到对应的id,返回label值,否则返回null
            return item ? item.label : null;
          });
        });
        this.total = response.total;
        this.loading = false;
@@ -955,7 +946,7 @@
        pageNum: 1,
        pageSize: 10,
        serviceType: 2,
        searchscope:2,
        searchscope: 2,
      };
      this.handleQuery();
    },
@@ -1100,10 +1091,10 @@
    // ä¾¿æ·æŒ‰é’®
    toleadExport(too) {
      if (too == 1) {
        this.topqueryParams.sendstate=4;
        this.topqueryParams.excep=null;
        this.topqueryParams.sendstate = 4;
        this.topqueryParams.excep = null;
      } else if (too == 2) {
        this.topqueryParams.excep=1;
        this.topqueryParams.excep = 1;
      }
      this.handleQuery();
    },
@@ -1118,12 +1109,12 @@
      );
    },
    // å¼‚常列渲染
    tableRowClassName({row, rowIndex}) {
        if (row.excep == 1) {
          return 'warning-row';
        }
        return '';
    tableRowClassName({ row, rowIndex }) {
      if (row.excep == 1) {
        return "warning-row";
      }
      return "";
    },
  },
};
</script>
@@ -1140,8 +1131,8 @@
  height: 50px;
}
::v-deep.el-table .warning-row {
    background: #eec4c4;
  }
  background: #eec4c4;
}
.documentf {
  display: flex;
src/views/followvisit/record/index.vue
ÎļþÒÑɾ³ý
src/views/followvisit/tasklist/index.vue
@@ -71,7 +71,7 @@
          <el-select
            @change="handleQuery"
            v-model="tasktopic"
            placeholder="请选择新增类型"
            placeholder="请选择服务类型"
          >
            <el-option
              v-for="item in taskoptions"
@@ -82,11 +82,8 @@
            </el-option>
          </el-select>
        </el-col>
        <!-- <el-col :span="1.5">
          <el-select
            v-model="longTask"
            placeholder="请选择任务类型"
          >
        <el-col :span="1.5">
          <el-select v-model="topqueryParams.type" placeholder="请选择执行类型">
            <el-option
              v-for="item in longtermlist"
              :key="item.value"
@@ -95,7 +92,7 @@
            >
            </el-option>
          </el-select>
        </el-col> -->
        </el-col>
        <el-col :span="1.5">
          <el-button
            type="primary"
@@ -457,12 +454,16 @@
      },
      longtermlist: [
        {
          value: "1",
          label: "长期任务",
          value: 1,
          label: "语音随访",
        },
        {
          value: "0",
          label: "普通任务",
          value: 2,
          label: "问卷随访",
        },
        {
          value: 3,
          label: "宣教关怀",
        },
      ],
      taskoptions: [
@@ -606,7 +607,7 @@
      },
      propss: { multiple: true },
      options: [],
      checkboxlist:[],
      // è¡¨å•校验
      rules: {
        userName: [
@@ -669,7 +670,7 @@
    this.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
    });
    // this.taskoptions = store.getters.Serviceauthority;
    this.checkboxlist = store.getters.checkboxlist;
  },
  activated() {
    this.getList();
@@ -696,13 +697,37 @@
        this.tasktopic == 6
      ) {
        this.topqueryParams.type = 2;
        this.TaskOperation.taskType = 2;
        this.longtermlist = [
          {
            value: 1,
            label: "语音随访",
          },
          {
            value: 2,
            label: "问卷随访",
          },
        ];
      } else if (this.tasktopic == 4 || this.tasktopic == 8) {
        this.topqueryParams.type = 3;
        this.TaskOperation.taskType = 3;
        this.longtermlist = [
          {
            value: 3,
            label: "宣教关怀",
          },
        ];
      } else if (this.tasktopic == 5) {
        this.topqueryParams.type = 1;
        this.TaskOperation.taskType = 1;
        this.longtermlist = [
          {
            value: 1,
            label: "语音随访",
          },
          {
            value: 2,
            label: "问卷随访",
          },
        ];
      }
      // this.topqueryParams.typename = this.findLabelByValue(
      //   this.taskoptions,
@@ -710,14 +735,12 @@
      // );
      this.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      getTasklist(this.topqueryParams).then(
        (response) => {
          this.userList = response.rows;
          this.total = response.total;
          this.$forceUpdate();
          this.loading = false;
        }
      );
      getTasklist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
        this.$forceUpdate();
        this.loading = false;
      });
    },
    // æŸ¥çœ‹é—¨è¯Šéšè®¿è¯¦æƒ…
    Referencequestion(row) {
@@ -901,6 +924,7 @@
        this.taskformVisible = true;
      } else if (this.taskform.sendState != 2 && this.taskform.sendType == 2) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.sendState = 2;
        this.TaskOperation.sendType = 2;
        this.$modal
@@ -926,6 +950,7 @@
    confirmSponsor(row) {
      if (this.activname == 0) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.sendState = 2;
        TaskTemplateSendExecution(this.TaskOperation).then((res) => {
          if (res.code == 200) {
@@ -943,6 +968,7 @@
    immediateExecution(row) {
      console.log(row, "任务信息");
      if (row.sendState != 2) {
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.sendState = 2;
        this.TaskOperation.sendType = 2;
src/views/patient/medtechnician/Compositeeditdetails.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,873 @@
<template>
  <div>
    <div class="Followuserinfo">
      <div>
        <div class="userinfo-text">
          <!-- <span>患者服务详情</span> -->
          <div class="headline">
            <div>服务患者列表</div>
            <div style="margin-left: 20px">
              <el-button
                icon="el-icon-download"
                v-if="!Whetherall"
                type="success"
                @click="getTaskservedr()"
                >导入服务患者</el-button
              >
            </div>
          </div>
          <!-- <el-button type="success">随访后短信</el-button> -->
        </div>
      </div>
      <div>
        <el-table :data="logsheetlist" style="width: 100%">
          <el-table-column
            prop="sendname"
            align="center"
            key="sendname"
            label="姓名"
          >
          </el-table-column>
          <el-table-column prop="sfz" align="center" key="sfz" label="身份证号">
          </el-table-column>
          <el-table-column
            prop="telcode"
            align="center"
            key="telcode"
            label="电话"
          >
          </el-table-column>
          <el-table-column
            label="出院日期"
            width="200"
            align="center"
            key="endtime"
            prop="endtime"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.endtime) }}</span>
            </template></el-table-column
          >
          <el-table-column
            label="病区"
            width="120"
            align="center"
            key="leavehospitaldistrictname"
            prop="leavehospitaldistrictname"
          />
          <el-table-column
            label="科室"
            width="120"
            align="center"
            key="deptname"
            prop="deptname"
          />
          <el-table-column
            label="责任护士"
            width="120"
            align="center"
            key="nurseName"
            prop="nurseName"
          />
          <el-table-column
            label="主治医生"
            width="120"
            align="center"
            key="drname"
            prop="drname"
          />
          <el-table-column
            label="处理意见"
            align="center"
            key="suggest"
            prop="suggest"
            width="120"
          >
          </el-table-column>
          <!-- <el-table-column
            label="操作"
            fixed="right"
            align="center"
            width="200"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="Seedetails(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-zx"
                  ><i class="el-icon-s-order"></i>查看服务</span
                ></el-button
              >
            </template>
          </el-table-column> -->
        </el-table>
      </div>
    </div>
    <el-card style="margin: 20px" class="box-card">
      <div class="presentation">
        <div class="presentation-left">
          <div class="headline">
            <div>任务流程</div>
            <div style="margin-left: 20px">
              <el-button
                icon="el-icon-plus"
                v-if="!Whetherall"
                type="primary"
                @click="getTaskservelist()"
                >添加任务流程</el-button
              >
            </div>
          </div>
          <el-divider></el-divider>
          <div class="block">
            <el-timeline>
              <el-timeline-item color="#5cb3cc" placement="top" hide-timestamp>
                <div class="custom-timestamp">
                  <span
                    >出院第<span style="color: #1661ab; font-size: 20px">{{
                      5
                    }}</span
                    >天执行</span
                  >
                </div>
                <div @click="singletask">
                  <el-card shadow="hover">
                    <h2 style="color: #1a94bc; font-weight: 600">
                      é—®å·éšè®¿<span
                        style="font-size: 16px; margin-left: 10px; color: black"
                        >心血管内科随访</span
                      >
                    </h2>
                    <p>王小虎 åˆ›å»ºäºŽ 2018/4/12 20:46</p>
                  </el-card>
                </div>
              </el-timeline-item>
              <el-timeline-item color="#5cb3cc" hide-timestamp placement="top">
                <div class="custom-timestamp">
                  <span
                    >出院第<span style="color: #1661ab; font-size: 20px">{{
                      6
                    }}</span
                    >天执行</span
                  >
                </div>
                <el-card shadow="hover">
                  <h2 style="color: #1a94bc; font-weight: 600">
                    è¯­éŸ³éšè®¿<span
                      style="font-size: 16px; margin-left: 10px; color: black"
                      >语音一号随访</span
                    >
                  </h2>
                  <p>王小虎 åˆ›å»ºäºŽ 2018/4/3 20:46</p>
                </el-card>
              </el-timeline-item>
              <el-timeline-item color="#5cb3cc" hide-timestamp placement="top">
                <div class="custom-timestamp">
                  <span
                    >出院第<span style="color: #1661ab; font-size: 20px">{{
                      8
                    }}</span
                    >天执行</span
                  >
                </div>
                <el-card shadow="hover">
                  <h2 style="color: #1a94bc; font-weight: 600">
                    å®£æ•™éšè®¿<span
                      style="font-size: 16px; margin-left: 10px; color: black"
                      >管饲第二次宣教</span
                    >
                  </h2>
                  <p>王小虎 åˆ›å»ºäºŽ 2018/4/2 20:46</p>
                </el-card>
              </el-timeline-item>
            </el-timeline>
          </div>
        </div>
        <el-divider direction="vertical"></el-divider>
        <div class="presentation-right">
          <el-form
            :model="ruleForm"
            :rules="rules"
            ref="ruleForm"
            label-width="100px"
            class="demo-ruleForm"
          >
            <div class="headline">基础信息编辑</div>
            <el-divider></el-divider>
            <div style="margin: 15px; margin-top: 50px">
              <el-form-item label="任务组名称" prop="name">
                <el-input
                  v-model="ruleForm.switchText"
                  placeholder="请输入"
                ></el-input>
              </el-form-item>
              <el-form-item label="任务组描述" prop="name">
                <el-input
                  type="textarea"
                  :rows="2"
                  v-model="ruleForm.ms"
                  placeholder="请输入"
                ></el-input>
              </el-form-item>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="是否启用" prop="resource">
                    <el-select v-model="ruleForm.isEnable" placeholder="请选择">
                      <el-option
                        v-for="item in usable"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
                <el-col :span="12">
                  <el-form-item label="是否长期任务" prop="resource">
                    <el-select v-model="ruleForm.isEnd" placeholder="请选择">
                      <el-option
                        v-for="item in usablend"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
              </el-row>
              <!-- å•任务基础数据 -->
              <el-form-item label="选中任务名称" prop="name">
                <el-input
                  v-model="ruleForm.switchText"
                  placeholder="请输入"
                ></el-input>
              </el-form-item>
              <el-form-item label="选中模板名称" prop="name">
                <el-input v-model="ruleForm.mb" placeholder="请输入"></el-input>
              </el-form-item>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="开始执行时间" prop="resource">
                    <el-input
                      v-model="ruleForm.switchText"
                      placeholder="请输入"
                    ></el-input> </el-form-item
                ></el-col>
                <el-col :span="12">
                  <el-form-item label="是否长期任务" prop="resource">
                    <el-input
                      v-model="ruleForm.switchText"
                      placeholder="请输入"
                    ></el-input> </el-form-item
                ></el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="是否启用补偿" prop="resource">
                    <el-select v-model="ruleForm.isEnable" placeholder="请选择">
                      <el-option
                        v-for="item in usable"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
                <el-col :span="12">
                  <el-form-item label="任务类型" prop="resource">
                    <el-select v-model="ruleForm.isEnd" placeholder="请选择">
                      <el-option
                        v-for="item in usablend"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
              </el-row>
              <el-form-item>
                <el-button type="primary" @click="submitForm('ruleForm')"
                  >保存任务组</el-button
                >
                <el-button
                  v-if="ruleForm.id"
                  type="primary"
                  plain
                  @click="modification('edit')"
                  >更新流程</el-button
                >
                <el-button @click="resetForm('ruleForm')">关闭</el-button>
              </el-form-item>
            </div>
          </el-form>
        </div>
      </div>
    </el-card>
    <!-- è·³è½¬æœåŠ¡å¯¹è¯æ¡† -->
    <el-dialog title="选择新建任务类型" :visible.sync="serviceVisible">
      <el-card class="box-card">
      <el-form ref="form" :model="form" label-width="80px">
        <el-form-item label="任务类型">
          <el-radio-group v-model="serviceradio">
          <el-radio :label="1">宣教随访</el-radio>
          <el-radio :label="2">门诊服务</el-radio>
          <el-radio :label="3">出院服务</el-radio>
          <el-radio :label="4">复诊服务</el-radio>
          <el-radio :label="5">体检通知</el-radio>
          <el-radio :label="6">问卷服务</el-radio>
        </el-radio-group>
        </el-form-item>
        <el-form-item label="新建方式" v-if="serviceradio">
          <el-radio-group v-model="serviceradiofs">
            <el-radio :label="1">初始化创建</el-radio>
            <el-radio :label="2">以现有任务模板修改创建</el-radio>
          </el-radio-group>
        </el-form-item>
      </el-form>
      <el-table v-loading="loading" :data="taskuserList">
          <el-table-column
            label="任务名称"
            fixed
            align="center"
            key="taskName"
            prop="taskName"
            width="140"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="任务描述"
            align="center"
            key="taskDesc"
            prop="taskDesc"
            width="180"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="服务项目"
            align="center"
            key="templatename"
            prop="templatename"
          />
          <el-table-column
            label="待执行/总任务"
            align="center"
            key="nickName"
            prop="nickName"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.wfs }}/{{ scope.row.yfs }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="创建人"
            align="center"
            key="createBy"
            prop="createBy"
            width="120"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="创建时间"
            sortable
            align="center"
            prop="createTime"
            width="160"
          >
            <template slot-scope="scope">
              <span>{{ formatTime(scope.row.createTime) }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="状态"
            fixed="right"
            align="center"
            key="sendState"
            prop="sendState"
            width="120"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.task_status"
                :value="scope.row.sendState"
              />
            </template>
          </el-table-column>
          <el-table-column
            label="任务详情"
            fixed="right"
            align="center"
            width="200"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
                ><span class="button-xq"
                  ><i class="el-icon-s-data"></i>选择派发</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="tasktotal > 0"
          :total="tasktotal"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="distribute"
        />
      </el-card>
      <div slot="footer" class="dialog-footer">
        <el-button @click="serviceVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="CreateService">新建任务</el-button>
      </div>
    </el-dialog>
    <!-- ç”¨æˆ·å¯¼å…¥å¯¹è¯æ¡† -->
    <el-dialog
      :title="upload.title"
      :visible.sync="upload.open"
      width="70%"
      append-to-body
    >
      <el-steps :active="dractive" simple>
        <el-step title="上传导入文件" icon="el-icon-upload"></el-step>
        <el-step title="导入检查" icon="el-icon-picture"></el-step>
      </el-steps>
      <!-- ä¸Šä¼ å¯¼å…¥æ–‡ä»¶ -->
      <div class="download" v-if="dractive == 1">
        <el-upload
          class="upload-demo"
          ref="upload"
          :limit="1"
          accept=".xlsx, .xls"
          :headers="upload.headers"
          :action="upload.url"
          :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
          drag
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
          <div class="el-upload__tip text-center" slot="tip">
            <!-- <div class="el-upload__tip" slot="tip">
              <el-checkbox v-model="upload.updateSupport" />
              æ˜¯å¦æ›´æ–°å·²ç»å­˜åœ¨çš„用户数据
            </div> -->
            <span>仅允许导入xls、xlsx格式文件。</span>
            <el-link
              type="primary"
              :underline="false"
              style="font-size: 24px; vertical-align: baseline"
              @click="importTemplate"
              >下载模板
            </el-link>
            <!-- <el-link
              type="success"
              :underline="false"
              style="font-size: 24px; vertical-align: baseline"
              href="http://m.qpic.cn/psc?/V50ZTolo1AIhq00dqrJP2169QM2VHGTU/ruAMsa53pVQWN7FLK88i5qfmCJclyMduqqL6kjE4h7TXDAjimVtmLmTyGVfF4qlkyOISsYQ4Mxx705X2tkXEIUPrfCS4L4yK.f11SmO8Tq0!/b&bo=twb0AgAAAAADB2U!&rf=viewer_4"
              target="_blank"
            >
              æŸ¥çœ‹æ¨¡æ¿</el-link
            > -->
          </div>
        </el-upload>
      </div>
      <!-- å®Œæˆ -->
      <div class="drexamine" v-else-if="dractive == 2">
        <div style="display: flex">
          <img src="@/assets/images/导入.png" />
          <p>导入患者成功!</p>
          <p>
            æœ¬æ¬¡æˆåŠŸå¯¼å…¥<span style="color: #72d3a9; font-size: 20px">{{
              uploadingData.length
            }}</span
            >位患者
          </p>
        </div>
        <el-table :data="uploadingData" style="width: 100%">
          <el-table-column prop="serial" label="患者id"> </el-table-column>
          <el-table-column prop="name" label="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </el-table-column>
          <el-table-column prop="idcardno" width="300" label="证件号码">
          </el-table-column>
          <el-table-column prop="goday" label="出生日期"> </el-table-column>
          <el-table-column prop="telcode" width="200" label="联系方式">
          </el-table-column>
          <el-table-column prop="createTime" width="200" label="创建日期">
          </el-table-column>
        </el-table>
        <!-- <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="geterryList"
        /> -->
      </div>
      <div slot="footer">
        <el-button type="primary" @click="submitFileForm">{{
          dractive == 1 ? "下一步" : "加入任务"
        }}</el-button>
        <el-button @click="submitclose">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import store from "@/store";
import {
  editgeneravaluel,
  addgeneravaluel,
  getgeneravaluelinfo,
  addgeneral,
  editgeneral,
  getgeneralinfo,
  getgeneralclassify,
  delgeneravaluelinfo,
  getgeneravaluellist,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
export default {
  data() {
    return {
      loading: false,
      id: null,
      usable: [],
      index: "",
      queryParams:{
        pageNum: 1, //
        pageSize: 10,
      },
      logsheetlist: [],
      deptOptions: [],
      mode: [],
      pitchon: "",
      targetList: [],
      usablend: [
        {
          value: 0,
          label: "非结束语",
        },
        {
          value: 1,
          label: "结束语",
        },
      ],
      ruleForm: {
        dynamiccruxs: [],
        nodynamiccruxs: [],
      },
      baseForm: {
        extName: "",
      },
      // ç”¨æˆ·å¯¼å…¥å‚æ•°
      upload: {
        // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚(用户导入)
        open: false,
        // å¼¹å‡ºå±‚标题(用户导入)
        title: "",
        // æ˜¯å¦ç¦ç”¨ä¸Šä¼ 
        isUploading: false,
        // æ˜¯å¦æ›´æ–°å·²ç»å­˜åœ¨çš„用户数据
        updateSupport: 0,
        // è®¾ç½®ä¸Šä¼ çš„请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // ä¸Šä¼ çš„地址
        url: process.env.VUE_APP_BASE_API + "/smartor/import/importPatInfo",
      },
      rules: {},
      bases: {},
      whether: 1, //1为关键词,2为否定关键词
      dractive: 1,
      inputValue: "",
      serviceradio: "",
      serviceradiofs: "",
      serviceVisible: false,
      inputVisible: false,
      noinputVisible: false,
      loading: false,
      regular: [],
      noregular: [],
    };
  },
  created() {
    this.id = this.$route.query.id;
    this.getList();
    this.usable = store.getters.usablesz;
    this.mode = store.getters.mode;
    this.regular = store.getters.regular;
    this.noregular = store.getters.noregular;
  },
  methods: {
    getList() {
      if (this.id) {
        this.$modal.loading("请稍候...");
        getgeneralinfo(this.id).then((res) => {
          if (res.code == 200) {
            this.baseForm = res.data;
          }
          this.$modal.closeLoading();
        });
        getgeneravaluellist({ extID: this.id }).then((res) => {
          if (res.code == 200) {
            this.targetList = res.rows;
          }
          this.$modal.closeLoading();
        });
      }
      getgeneralclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // æ–°å¢žä»»åŠ¡
    getTaskservelist() {
      this.serviceVisible = true;
    },
    // å¯¼å…¥æ‚£è€…
    getTaskservedr() {
      this.upload.title = "用户导入";
      this.upload.open = true;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {},
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row, index) {
      this.pitchon = row.switchText;
      this.ruleForm = row;
      this.index = index;
    },
    // åˆ é™¤
    handleDelete(item) {
      this.$modal
        .confirm("是否确认删除该话术项?")
        .then((res) => {
          if (item.id) {
            delgeneravaluelinfo(item.id).then((res) => {
              this.$modal.msgSuccess("删除成功");
            });
          }
          this.targetList = this.targetList.filter((obj) => obj !== item);
        })
        .catch(() => {});
    },
    // ä¿å­˜ä¸»è¡¨
    submitForm() {
      if (this.baseForm.id) {
        editgeneral(this.baseForm).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("修改成功");
            this.savetalk();
          }
        });
      } else {
        addgeneral(this.baseForm).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("新增成功");
            this.baseForm.id = res.data.id;
            this.id = res.data.id;
            this.savetalk();
          }
        });
      }
    },
    // ä¿å­˜è¯æœ¯
    savetalk() {
      this.targetList.forEach((obj) => {
        if (obj.id) {
          editgeneravaluel(obj).then((res) => {
            this.getList();
          });
        } else {
          obj.extID = this.baseForm.id;
          addgeneravaluel(obj).then((res) => {
            this.getList();
          });
        }
      });
    },
    modification(type) {
      if (type == "add") {
        console.log(this.ruleForm, "ruleForm");
        this.targetList.push(this.ruleForm);
      } else {
        this.targetList[this.index] = this.ruleForm;
      }
      this.ruleForm = {};
    },
    // å…³é—­
    resetForm() {
      this.$confirm("即将退出页面, è¯·ç¡®è®¤æ•°æ®æ˜¯å¦ä¿å­˜?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$router.go(-1);
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消",
          });
        });
    },
    // æ­£åˆ™-----------------
    singletask(row) {},
    //  å¯¼å…¥-----------------
    /** å¯¼å…¥æŒ‰é’®æ“ä½œ */
    handleImport() {
      this.upload.title = "用户导入";
      this.upload.open = true;
    },
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
    },
    // æ–‡ä»¶ä¸Šä¼ æˆåŠŸå¤„ç†
    handleFileSuccess(response, file, fileList) {
      this.upload.isUploading = false;
      this.uploadingData = response.rows;
      console.log(response, "文件");
      this.$refs.upload.clearFiles();
    },
    // æäº¤ä¸Šä¼ æ–‡ä»¶
    submitFileForm() {
      // ä¸Šä¼ 
      if (this.dractive == 1) {
        this.$refs.upload.submit();
        this.dractive++;
      } else if (this.dractive == 2) {
        this.handleSelectionChange(this.uploadingData, 4);
        this.upload.open = false;
        this.dractive = 1;
      }
    },
    submitclose() {
      this.upload.open = false;
      this.dractive = 1;
    },
  },
};
</script>
<style lang="scss" scoped>
.Followuserinfo {
  margin: 20px 10px;
  align-items: center;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .userinfo-text {
    font-size: 20px;
    margin-right: 20px;
    margin-bottom: 10px;
  }
  .userinfo-value {
    color: rgb(15, 139, 211);
    span {
      margin-right: 20px;
    }
  }
}
.download {
  text-align: center;
  .el-upload__tip {
    font-size: 23px;
  }
  .el-upload__text {
    font-size: 23px;
  }
}
.headline {
  font-size: 24px;
  height: 40px;
  border-left: 5px solid #5788fe;
  padding-left: 5px;
  margin-bottom: 10px;
  display: flex;
  // justify-content: space-between;
  .Add-details {
    font-size: 18px;
    color: #02a7f0;
    cursor: pointer;
  }
}
.presentation {
  margin: 20px 0;
  display: flex;
  .presentation-left {
    width: 50%;
    // height: 500px;
  }
  .presentation-right {
    width: 50%;
    max-height: 688px;
    padding: 0 20px;
    font-size: 18px;
    overflow: auto;
  }
}
.button-textxg {
  color: rgb(35, 81, 233);
}
.button-textsc {
  color: rgb(235, 23, 23);
}
.topicxq {
  background-color: #e2f5fc;
  border-radius: 4px;
  margin-top: 10px;
  padding: 10px;
}
.el-tag + .el-tag {
  margin-left: 10px;
}
.button-new-tag {
  margin-left: 10px;
  height: 32px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
}
.input-new-tag {
  width: 90px;
  margin-left: 10px;
  vertical-align: bottom;
}
::v-deep .block .el-card {
  border: 1px solid #52aee8;
}
::v-deep .block .el-card.is-hover-shadow:hover {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 8px 16px rgba(0, 0, 0, 0.2);
  cursor: pointer;
}
</style>
src/views/patient/medtechnician/PatientChart.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1159 @@
<template>
  <div class="app-container">
    <el-row :gutter="20">
      <!--用户数据-->
      <el-form
        :model="topqueryParams"
        ref="queryForm"
        size="small"
        :inline="true"
        v-show="showSearch"
        label-width="98px"
      >
        <el-form-item label="任务组名称">
          <el-input
            v-model="topqueryParams.taskName"
            @keyup.enter.native="handleQuery"
          ></el-input>
        </el-form-item>
        <el-form-item label="创建人">
          <el-input
            v-model="topqueryParams.createBy"
            @keyup.enter.native="handleQuery"
          ></el-input>
        </el-form-item>
        <el-form-item label="创发送时间">
          <el-date-picker
            v-model="dateRange"
            style="width: 240px"
            value-format="yyyy-MM-dd"
            type="daterange"
            range-separator="-"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="任务组模板" prop="status">
          <el-input
            v-model="topqueryParams.templatename"
            @keyup.enter.native="handleQuery"
          ></el-input>
        </el-form-item>
        <el-form-item label="任务组状态" prop="status">
          <el-select v-model="topqueryParams.sendState" placeholder="请选择">
            <el-option
              v-for="item in dict.type.task_status"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            icon="el-icon-search"
            size="medium"
            @click="handleQuery"
            >搜索</el-button
          >
          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
            >重置</el-button
          >
        </el-form-item>
      </el-form>
      <el-divider></el-divider>
      <el-row :gutter="10" class="mb8">
        <el-col :span="1.5">
          <el-select
            v-model="tasktopic"
            placeholder="请选择优先服务类型"
          >
            <el-option
              v-for="item in taskoptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-col>
        <el-col :span="1.5">
          <el-button
            type="primary"
            icon="el-icon-plus"
            size="medium"
            @click="handleAdd"
            :disabled="!tasktopic"
            >新建任务组</el-button
          >
        </el-col>
        <!-- <el-col :span="19">
          <div class="documentf">
            <div class="document">
              <el-button
                type="warning"
                plain
                icon="el-icon-download"
                size="medium"
                @click="handleExport"
                v-hasPermi="['system:user:export']"
                >导出</el-button
              >
            </div>
          </div>
        </el-col> -->
        <!-- <el-col :span="1.5"> </el-col> -->
      </el-row>
      <!-- <right-toolbar
              :showSearch.sync="showSearch"
              @queryTable="getList"
              :columns="columns"
            ></right-toolbar> -->
      <el-table v-loading="loading" :data="userList">
        <!-- <el-table-column
          label="序号"
          fixed
          align="center"
          key="taskid"
          prop="taskid"
        /> -->
        <el-table-column
          label="任务组名称"
          fixed
          width="120"
          align="center"
          key="taskName"
          prop="taskName"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="任务组描述"
          width="280"
          align="center"
          key="taskDesc"
          prop="taskDesc"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="任务流程"
          width="280"
          align="center"
          key="taskDesc"
          prop="taskDesc"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="服务项目"
          width="120"
          align="center"
          key="templatename"
          prop="templatename"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="待执行/总任务组"
          align="center"
          key="nickName"
          prop="nickName"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.wfs }}/{{ scope.row.yfs }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="是否长期任务组"
          align="center"
          key="longTask"
          prop="longTask"
          width="120"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.longTask ? "长期任务组" : "非长期" }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="状态"
          align="center"
          key="sendState"
          prop="sendState"
          width="120"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.task_status"
              :value="scope.row.sendState"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="创建人"
          align="center"
          key="createBy"
          prop="createBy"
          width="120"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="创建时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
          fixed="right"
          align="center"
          width="180"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              v-if="
                (scope.row.sendState == 1 || scope.row.sendState == 3) &&
                !scope.row.longTask
              "
              size="medium"
              type="text"
              @click="sponsor(scope.row)"
              ><span class="button-zx"
                ><i class="el-icon-s-promotion"></i>发起</span
              ></el-button
            >
            <!-- <el-button size="medium" type="text" @click="newAdd(scope.row)"
              ><span class="button-xj"
                ><i class="el-icon-circle-plus-outline"></i>终止</span
              ></el-button
            > -->
            <el-button
              size="medium"
              type="text"
              @click="handleUpdate(scope.row, 1)"
              ><span class="button-xj"
                ><i class="el-icon-circle-plus-outline"></i>依照新增</span
              ></el-button
            >
            <el-button
              v-if="scope.row.sendState == 2"
              size="medium"
              type="text"
              @click="stop(scope.row)"
              ><span class="button-zt"
                ><i class="el-icon-circle-plus-outline"></i>暂停</span
              ></el-button
            >
          </template>
        </el-table-column>
        <el-table-column
          label="任务组详情"
          fixed="right"
          align="center"
          width="200"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="scope">
            <el-button
              size="medium"
              type="text"
              @click="handleUpdate(scope.row)"
              ><span class="button-xq"
                ><i class="el-icon-s-data"></i>详情</span
              ></el-button
            >
            <el-button size="medium" type="text" @click="deletefn(scope.row)"
              ><span class="button-sc"
                ><i class="el-icon-delete"></i>删除</span
              ></el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="topqueryParams.pageNum"
        :limit.sync="topqueryParams.pageSize"
        @pagination="getList"
      />
    </el-row>
    <!-- ç¡®è®¤å‘起对话框 -->
    <el-dialog
      title="任务组发起确认"
      :visible.sync="taskformVisible"
      width="50%"
      :before-close="handleClose"
    >
      <el-tabs type="border-card" v-model="activname">
        <el-tab-pane>
          <span slot="label"><i class="el-icon-date"></i> æ­£å¸¸å‘èµ·</span>
          <div style="font-size: 20px; color: red; margin-bottom: 20px">
            è¯·ç¡®è®¤ä»»åŠ¡ç»„"{{ taskform.taskName }}"的执行时间
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showDate"
          >
            æ‰§è¡Œæ—¥æœŸï¼š<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showDate[0] }} è‡³ {{ taskform.showDate[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeMorn[0]"
          >
            ç¬¬ä¸€æ—¶é—´æ®µï¼š<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeMorn[0] }} è‡³
              {{ taskform.showTimeMorn[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeNight[0]"
          >
            ç¬¬äºŒæ—¶é—´æ®µï¼š<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeNight[0] }} è‡³
              {{ taskform.showTimeNight[1] }}</span
            >
          </div>
          <div
            style="font-size: 18px; margin-bottom: 20px"
            v-if="taskform.showTimeNoon[0]"
          >
            ç¬¬ä¸‰æ—¶é—´æ®µï¼š<span
              style="font-size: 18px; color: #2376b7; margin-bottom: 20px"
              >{{ taskform.showTimeNoon[0] }} è‡³
              {{ taskform.showTimeNoon[1] }}</span
            >
          </div>
        </el-tab-pane>
        <el-tab-pane label="立即执行">
          <div style="font-size: 20px; color: red; margin-bottom: 20px">
            æ­¤æ“ä½œå°†ç«‹å³å‘起并执行任务组:{{ taskform.taskName }},请谨慎操作!
          </div>
        </el-tab-pane>
      </el-tabs>
      <div style="text-align: right; margin: 20px 0">
        <el-button style="margin-right: 20px" @click="taskformVisible = false"
          >取 æ¶ˆ</el-button
        >
        <el-button
          style="margin-right: 20px"
          type="success"
          @click="confirmSponsor(taskform)"
          >确认执行</el-button
        >
        <el-button type="primary" @click="handleUpdate(taskform)"
          >前往修改</el-button
        >
      </div>
    </el-dialog>
  </div>
</template>
<script>
import {
  getUser,
  delUser,
  addUser,
  updateUser,
  resetUserPwd,
  changeUserStatus,
} from "@/api/system/user";
import {
  getTasklist,
  getTaskInfo,
  Editsingletask,
  delTaskInfo,
  Questionnairetasklist,
  Questionnairetaskget,
  Questionnairetasksponsor,
  TaskTemplateSendExecution,
} from "@/api/AiCentre/index";
import store from "@/store";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "Tasklist",
  dicts: ["sys_normal_disable", "sys_user_sex", "task_status"],
  components: { Treeselect },
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: null,
      // å¼¹å‡ºå±‚标题
      title: "新增门诊随访",
      // æ˜¯å¦æ˜¾ç¤ºä¿®æ”¹ã€æ·»åŠ å¼¹å‡ºå±‚
      addalteropen: false,
      // éƒ¨é—¨åç§°
      deptName: undefined,
      // é»˜è®¤å¯†ç 
      initPassword: undefined,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // å²—位选项
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      longTask: 0,
      taskform: {
        showDate: [],
        showTimeMorn: [],
        showTimeNight: [],
        showTimeNoon: [],
      },
      taskformVisible: false,
      dynamicTags: ["选项一", "选项二", "选项三"], //选项
      inputVisible: false,
      inputValue: "",
      previewVisible: false, //门诊随访预览弹框
      TaskOperation: {},
      radio: "",
      radios: [],
      previewtype: 2, //预览门诊随访类型
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导门诊随访数量
      //预览门诊随访信息
      previewvalue: {
        username: "这个医生对你怎么样",
      },
      longtermlist: [
        {
          value: 1,
          label: "语音随访",
        },
        {
          value: 2,
          label: "问卷随访",
        },
        {
          value: 3,
          label: "宣教关怀",
        },
      ],
      taskoptions: [
        {
          value: "1",
          label: "监测评估",
        },
        {
          value: "2",
          label: "出院随访",
        },
        {
          value: "3",
          label: "门诊随访",
        },
        {
          value: "4",
          label: "宣教关怀",
        },
        {
          value: "5",
          label: "复诊管理",
        },
        {
          value: "6",
          label: "满意度调查",
        },
        {
          value: "7",
          label: "患者报告",
        },
        {
          value: "8",
          label: "其他通知",
        },
      ],
      tasktopic: "2", //新增类型
      activname: "",
      value: [],
      list: [],
      loading: false,
      states: [
        "Alabama",
        "Alaska",
        "Arizona",
        "Arkansas",
        "California",
        "Colorado",
        "Connecticut",
        "Delaware",
        "Florida",
        "Georgia",
        "Hawaii",
        "Idaho",
        "Illinois",
        "Indiana",
        "Iowa",
        "Kansas",
        "Kentucky",
        "Louisiana",
        "Maine",
        "Maryland",
        "Massachusetts",
        "Michigan",
        "Minnesota",
        "Mississippi",
        "Missouri",
        "Montana",
        "Nebraska",
        "Nevada",
        "New Hampshire",
        "New Jersey",
        "New Mexico",
        "New York",
        "North Carolina",
        "North Dakota",
        "Ohio",
        "Oklahoma",
        "Oregon",
        "Pennsylvania",
        "Rhode Island",
        "South Carolina",
        "South Dakota",
        "Tennessee",
        "Texas",
        "Utah",
        "Vermont",
        "Virginia",
        "Washington",
        "West Virginia",
        "Wisconsin",
        "Wyoming",
      ],
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now();
        },
        shortcuts: [
          {
            text: "今天",
            onClick(picker) {
              picker.$emit("pick", new Date());
            },
          },
          {
            text: "昨天",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit("pick", date);
            },
          },
          {
            text: "一周前",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", date);
            },
          },
        ],
      },
      // è¡¨å•参数
      form: {
        phonenumber: "",
        totagid: "",
        types: "",
        nickName: "",
        qystatus: "",
        btstatus: "",
      },
      // æŸ¥è¯¢å‚æ•°
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        type: 3,
        userName: undefined,
        tagid: undefined,
        topic: undefined,
      },
      propss: { multiple: true },
      options: [],
      checkboxlist:[],
      // è¡¨å•校验
      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",
          },
        ],
      },
    };
  },
  watch: {},
  created() {
    this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
      (obj) => obj.deptCode
    );
    this.topqueryParams.leavehospitaldistrictcodes =
      store.getters.belongWards.map((obj) => obj.districtCode);
    this.tasktopic = this.$route.query.tasktopic
      ? this.$route.query.tasktopic
      : this.tasktopic;
    this.getList();
    this.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
    });
    this.checkboxlist = store.getters.checkboxlist;
  },
  activated() {
    this.getList();
  },
  // æœç´¢
  mounted() {
    this.list = this.states.map((item) => {
      return { value: `value:${item}`, label: `label:${item}` };
    });
  },
  methods: {
    /** æŸ¥è¯¢ä»»åŠ¡ç»„åˆ—è¡¨ */
    getList() {
      this.loading = true;
      let type = this.$route.query.type;
      this.topqueryParams.serviceType = Number(this.tasktopic);
      this.topqueryParams.type = Number(this.type);
      if (
        this.tasktopic == 2 ||
        this.tasktopic == 3 ||
        this.tasktopic == 1 ||
        this.tasktopic == 7 ||
        this.tasktopic == 6
      ) {
        this.topqueryParams.type = 2;
        this.longtermlist = [
          {
            value: 1,
            label: "语音随访",
          },
          {
            value: 2,
            label: "问卷随访",
          },
        ];
      } else if (this.tasktopic == 4 || this.tasktopic == 8) {
        this.topqueryParams.type = 3;
        this.longtermlist = [
          {
            value: 3,
            label: "宣教关怀",
          },
        ];
      } else if (this.tasktopic == 5) {
        this.topqueryParams.type = 1;
        this.longtermlist = [
          {
            value: 1,
            label: "语音随访",
          },
          {
            value: 2,
            label: "问卷随访",
          },
        ];
      }
      // this.topqueryParams.typename = this.findLabelByValue(
      //   this.taskoptions,
      //   this.tasktopic
      // );
      this.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      getTasklist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
        this.$forceUpdate();
        this.loading = false;
      });
    },
    // æŸ¥çœ‹é—¨è¯Šéšè®¿è¯¦æƒ…
    Referencequestion(row) {
      this.previewVisible = true;
    },
    // æ·»åŠ å¼¹æ¡†æœç´¢
    remoteMethod(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          this.options = this.list.filter((item) => {
            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
          });
        }, 200);
      } else {
        this.options = [];
      }
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
        password: undefined,
        phonenumber: undefined,
        email: undefined,
        sex: undefined,
        status: "0",
        remark: undefined,
        postIds: [],
        roleIds: [],
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.topqueryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.topqueryParams.deptId = undefined;
      this.$refs.tree.setCurrentKey(null);
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    //删除选项
    handleClose(tag) {
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
    },
    //触发新增输入
    showInput() {
      this.inputVisible = true;
      this.$nextTick((_) => {
        this.$refs.saveTagInput.$refs.input.focus();
      });
    },
    //获取失去焦点触发
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
        this.$router.push({
          path: "/combination/Compositeeditdetails",
          query: {
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
          },
        });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row, newadd) {
        this.$router.push({
          path: "/combination/Compositeeditdetails",
          query: {
            id: row.taskid,
            type: this.topqueryParams.type,
            serviceType: this.tasktopic,
            newadd: newadd, //是否依照新建
          },
        });
    },
    // åˆ é™¤ä»»åŠ¡ç»„
    deletefn(row) {
      this.$modal
        .confirm(
          '是否删除任务组名称为"' +
            row.taskName +
            '"的数据项,删除后不可撤回!是否继续'
        )
        .then(() => {
          delTaskInfo(row.taskid).then((res) => {
            if (res.code == 200) {
              this.getList();
              this.$modal.msgSuccess("删除成功");
            }
          });
        })
        .catch(() => {});
    },
    // ä»»åŠ¡ç»„å‘èµ·
    sponsor(row) {
      console.log(row, "任务组信息");
      this.taskform = row;
      if (this.taskform.showDate && this.taskform.sendType != 2) {
        this.taskform.showDate = this.taskform.showDate.split(",");
      }
      if (this.taskform.showTimeMorn && this.taskform.sendType != 2) {
        this.taskform.showTimeMorn = this.taskform.showTimeMorn.split(",");
      } else {
        this.taskform.showTimeMorn = [];
      }
      if (this.taskform.showTimeNight && this.taskform.sendType != 2) {
        this.taskform.showTimeNight = this.taskform.showTimeNight.split(",");
      } else {
        this.taskform.showTimeNight = [];
      }
      if (this.taskform.showTimeNoon && this.taskform.sendType != 2) {
        this.taskform.showTimeNoon = this.taskform.showTimeNoon.split(",");
      } else {
        this.taskform.showTimeNoon = [];
      }
      if (this.taskform.sendState != 2 && this.taskform.sendType != 2) {
        this.taskformVisible = true;
      } else if (this.taskform.sendState != 2 && this.taskform.sendType == 2) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.sendState = 2;
        this.TaskOperation.sendType = 2;
        this.$modal
          .confirm(
            '当前选中任务组名称为"' +
              row.taskName +
              '"的数据项为立即执行任务组,发起执行后不可撤回!是否继续'
          )
          .then(() => {
            TaskTemplateSendExecution(this.TaskOperation).then((res) => {
              if (res.code == 200) {
                this.getList();
                this.$modal.msgSuccess("任务组已立即执行");
              }
            });
          })
          .catch(() => {});
      } else {
        this.$modal.msgError("任务组已发起,不可再次发起");
      }
    },
    // ç¡®è®¤å‘èµ·
    confirmSponsor(row) {
      if (this.activname == 0) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.sendState = 2;
        TaskTemplateSendExecution(this.TaskOperation).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("任务组已成功加入执行队列");
            this.taskformVisible = false;
            this.getList();
          }
        });
      } else if (this.activname == 1) {
        this.immediateExecution(row);
      }
    },
    // ç«‹å³æ‰§è¡Œ
    immediateExecution(row) {
      console.log(row, "任务组信息");
      if (row.sendState != 2) {
        this.TaskOperation.taskType = this.topqueryParams.type;
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.sendState = 2;
        this.TaskOperation.sendType = 2;
        this.$modal
          .confirm(
            '是否立即执行任务组名称为为"' +
              row.taskName +
              '"的数据项?发起执行后不可撤回!'
          )
          .then(() => {
            TaskTemplateSendExecution(this.TaskOperation).then((res) => {
              if (res.code == 200) {
                this.getList();
                this.$modal.msgSuccess("任务组已立即执行");
              }
            });
          })
          .then(() => {})
          .catch(() => {});
      }
    },
    // æš‚停
    stop(row) {
      console.log(row);
      if (row.sendState == 2) {
        this.TaskOperation.taskId = row.taskid;
        this.TaskOperation.sendState = 3;
        this.TaskOperation.sendType = "";
        this.TaskOperation.taskType = row.type;
        TaskTemplateSendExecution(this.TaskOperation).then((res) => {
          this.$modal.msgSuccess("任务组已暂停");
          this.getList();
        });
      }
    },
    /** æäº¤æŒ‰é’® */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return delUser(userIds);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download(
        "system/user/export",
        {
          ...this.topqueryParams,
        },
        `user_${new Date().getTime()}.xlsx`
      );
    },
    findLabelByValue(data, value) {
      const item = data.find((item) => item.value === value);
      return item ? item.label : null;
    },
  },
};
</script>
<style lang="scss" scoped>
.el-button--primary.is-plain {
  color: #ffffff;
  background: #409eff;
  border-color: #4fabe9;
}
.document {
  width: 100px;
  height: 50px;
}
.documentf {
  display: flex;
  justify-content: flex-end;
}
.download {
  text-align: center;
  .el-upload__tip {
    font-size: 23px;
  }
  .el-upload__text {
    font-size: 23px;
  }
}
.uploading {
  margin-top: 20px;
  margin: 20px;
  padding: 30px;
  background: #ffffff;
  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);
}
.el-tag + .el-tag {
  margin-left: 10px;
}
.button-new-tag {
  margin-left: 10px;
  height: 32px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
}
.input-new-tag {
  width: 90px;
  margin-left: 10px;
  vertical-align: bottom;
}
.drexamine {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px;
  background: #daeaf5;
  img {
    width: 100px;
    height: 100px;
  }
}
.qrcode-dialo {
  // text-align: center;
  //   display: flex;
  margin: 20px;
  padding: 30px;
  background: #edf1f7;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .topic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
.button-bb {
  font-weight: 500;
  color: #2ba05c;
}
.button-xq {
  font-weight: 500;
  color: #409eff;
}
.button-sc {
  font-weight: 500;
  color: #dd302a;
}
.button-zx {
  background: #4fabe9;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-lj {
  background: #e9614f;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-xj {
  background: #815c94;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
.button-zt {
  background: #f9c116;
  padding: 5px;
  border-radius: 1px;
  color: #ffffff;
}
::v-deep.el-radio-group {
  span {
    font-size: 24px;
  }
}
::v-deep.el-button + .el-button {
  margin-left: 0;
}
::v-deep.el-checkbox-group {
  span {
    font-size: 24px;
  }
}
</style>
src/views/patient/medtechnician/SpecializedService.vue
ÎļþÃû´Ó src/views/patient/medtechnician/index.vue ÐÞ¸Ä
@@ -1,5 +1,29 @@
<template>
  <div class="app-container">
    <div class="leftvlue" style="margin-bottom: 20px">
      <el-row :gutter="10">
        <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
          <el-card
            shadow="hover"
            :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
          >
            <div style="padding: 8px" @click="$router.push(item.router)">
              <span>{{ item.name }}</span>
              <div
                style="
                  text-align: center;
                  font-size: 18px;
                  margin-top: 10px;
                  font-weight: 600;
                "
              >
                {{ item.value }}
              </div>
            </div>
          </el-card>
        </el-col>
      </el-row>
    </div>
    <el-row :gutter="20">
      <!--用户数据-->
      <el-form
@@ -10,13 +34,14 @@
        v-show="showSearch"
        label-width="98px"
      >
        <el-form-item label="任务名称">
          <el-input v-model="topqueryParams.taskName"></el-input>
        <el-form-item label="任务组名称">
          <el-input
            v-model="topqueryParams.taskName"
            placeholder="请选择任务组名称"
          ></el-input>
        </el-form-item>
        <!-- <el-form-item label="发起人">
          <el-input v-model="topqueryParams.createBy"></el-input>
        </el-form-item> -->
        <!-- <el-form-item label="审核时间">
        <el-form-item label="出院时间">
          <el-date-picker
            v-model="dateRange"
            style="width: 240px"
@@ -27,36 +52,29 @@
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="宣教类型" prop="status">
          <el-select v-model="topqueryParams.topic" placeholder="请选择">
        <el-form-item label="患者姓名" prop="sendname">
          <el-input
            v-model="topqueryParams.sendname"
            placeholder="请输入患者姓名"
          ></el-input>
        </el-form-item>
        <el-form-item label="患者范围" prop="status">
          <el-select
            v-model="topqueryParams.searchscope"
            placeholder="请选择患者范围"
          >
            <el-option
              v-for="item in topicoptions"
              v-for="item in source"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item> -->
        <el-form-item label="患者姓名" prop="sendname">
          <el-input v-model="topqueryParams.sendname" placeholder="请输入患者姓名"></el-input>
        </el-form-item>
        <el-form-item label="患者范围" prop="status">
          <el-select
                v-model="topqueryParams.searchscope"
                placeholder="请选择患者范围"
              >
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
        </el-form-item>
        <el-form-item label="任务状态" prop="status">
        <el-form-item label="任务组状态" prop="status">
          <el-select v-model="topqueryParams.sendstate" placeholder="请选择">
            <el-option
              v-for="item in topicoptions"
@@ -67,17 +85,7 @@
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="结果状态" prop="status">
          <el-select v-model="topqueryParams.excep" placeholder="请选择">
            <el-option
              v-for="item in topicoptionsyj"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
@@ -103,7 +111,7 @@
            >新增</el-button
          >
        </el-col>
        <!-- <el-col :span="1.5">
        <el-col :span="1.5">
          <div class="documentf">
            <div class="document">
              <el-button
@@ -122,55 +130,12 @@
          <div class="documentf">
            <div class="document">
              <el-button
                type="success"
                plain
                icon="el-icon-download"
                size="medium"
                @click="toleadExport"
                v-hasPermi="['system:user:export']"
                >导入</el-button
              >
            </div>
          </div>
        </el-col>
        <el-col :span="1.5">
          <div class="documentf">
            <div class="document">
              <el-button
                type="info"
                icon="el-icon-refresh"
                size="medium"
                @click="TaskReset"
                v-hasPermi="['system:user:export']"
                >任务重置</el-button
              >
            </div>
          </div>
        </el-col>
        <el-col :span="1.5">
          <div class="documentf">
            <div class="document">
              <el-button
                type="success"
                icon="el-icon-position"
                size="medium"
                @click="AllStarted"
                v-hasPermi="['system:user:export']"
                >全部开始</el-button
              >
            </div>
          </div>
        </el-col>
        <el-col :span="1.5">
          <div class="documentf">
            <div class="document">
              <el-button
                type="warning"
                icon="el-icon-remove"
                plain
                icon="el-icon-warning-outline"
                size="medium"
                @click="AllStop"
                v-hasPermi="['system:user:export']"
                >全部停止</el-button
                @click="toleadExport(1)"
                >执行失败</el-button
              >
            </div>
          </div>
@@ -179,27 +144,28 @@
          <div class="documentf">
            <div class="document">
              <el-button
                type="primary"
                icon="el-icon-remove"
                type="danger"
                plain
                icon="el-icon-warning"
                size="medium"
                @click="Sendtimesetting"
                v-hasPermi="['system:user:export']"
                >发送时间设置</el-button
                @click="toleadExport(2)"
                >结果异常</el-button
              >
            </div>
          </div>
        </el-col> -->
        <!-- <el-col :span="1.5"> </el-col> -->
        </el-col>
      </el-row>
      <el-table
        v-loading="loading"
        :data="userList"
        height="660"
        :row-class-name="tableRowClassName"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="50" align="center" />
        <el-table-column
          label="任务名称"
          label="任务组名称"
          fixed
          align="center"
          key="taskName"
          prop="taskName"
@@ -208,19 +174,13 @@
        <!-- <el-table-column label="序号" fixed align="center" key="id" prop="id" /> -->
        <el-table-column
          label="姓名"
          fixed
          align="center"
          key="sendname"
          prop="sendname"
        />
        <el-table-column
          label="身份证号码"
          width="200"
          align="center"
          key="sfzh"
          prop="sfzh"
        />
        <el-table-column
          label="任务状态"
          label="任务组状态"
          align="center"
          key="sendstate"
          prop="sendstate"
@@ -228,38 +188,64 @@
        >
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 1">
              <el-tag type="primary"
              :disable-transitions="false">被领取</el-tag></div>
              <el-tag type="primary" :disable-transitions="false"
                >被领取</el-tag
              >
            </div>
            <div v-if="scope.row.sendstate == 2">
              <el-tag type="primary"
              :disable-transitions="false">待发送</el-tag>
              </div>
            <div v-if="scope.row.sendstate == 3"> <el-tag type="success"
              :disable-transitions="false">已发送未领取</el-tag></div>
            <div v-if="scope.row.sendstate == 4"> <el-tag type="info"
              :disable-transitions="false">不执行</el-tag></div>
            <div v-if="scope.row.sendstate == 5"> <el-tag type="danger"
              :disable-transitions="false">发送失败</el-tag></div>
              <div v-if="scope.row.sendstate == 6"> <el-tag type="danger"
                :disable-transitions="false">已完成</el-tag></div>
              <el-tag type="primary" :disable-transitions="false"
                >待发送</el-tag
              >
            </div>
            <div v-if="scope.row.sendstate == 3">
              <el-tag type="success" :disable-transitions="false"
                >已发送未领取</el-tag
              >
            </div>
            <div v-if="scope.row.sendstate == 4">
              <el-tag type="info" :disable-transitions="false">不执行</el-tag>
            </div>
            <div v-if="scope.row.sendstate == 5">
              <el-tag type="danger" :disable-transitions="false"
                >发送失败</el-tag
              >
            </div>
            <div v-if="scope.row.sendstate == 6">
              <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
            </div>
          </template>
        </el-table-column>
        <el-table-column
          label="宣教异常记录"
        <!-- <el-table-column
          label="任务组异常说明"
          width="120"
          align="center"
          key="remark"
          prop="remark"
          prop="remark" -->
        />
        <el-table-column
          label="宣教人员"
          label="人工处理意见"
          align="center"
          key="suggest"
          prop="suggest"
          width="120"
        >
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_suggest"
              :value="scope.row.suggest"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="随访人员"
          align="center"
          key="createBy"
          prop="createBy"
          width="120"
        />
        <el-table-column
          label="宣教时间"
          label="随访时间"
          sortable
          align="center"
          prop="finishtime"
@@ -281,7 +267,7 @@
          </template></el-table-column
        >
        <el-table-column
          label="应宣教日期"
          label="应随访日期"
          width="200"
          align="center"
          key="longSendTime"
@@ -305,6 +291,20 @@
          </template>
        </el-table-column>
        <el-table-column
          label="身份证号码"
          width="200"
          align="center"
          key="sfzh"
          prop="sfzh"
        />
        <el-table-column
          label="联系电话"
          width="200"
          align="center"
          key="phone"
          prop="phone"
        />
        <el-table-column
          label="责任护士"
          width="120"
          align="center"
@@ -318,8 +318,6 @@
          key="drname"
          prop="drname"
        />
        <!-- <el-table-column
          label="病历号"
@@ -361,62 +359,60 @@
        </el-table-column> -->
        <el-table-column
          label="宣教模板名称"
          label="出院随访模板名称"
          align="center"
          key="templatename"
          prop="templatename"
          width="200"
        />
        <el-table-column
        <!-- <el-table-column
          label="责任医师"
          label="任务组执行方式"
          align="center"
          key="drname"
          prop="drname"
          width="120"
        /> -->
        <!-- <el-table-column
          label="出院时间"
          sortable
          align="center"
          prop="createTime"
          key="preachform"
          prop="preachform"
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column> -->
        <!-- <el-table-column
          label="宣教时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.sendType != 3">{{
              formatTime(scope.row.createTime)
            }}</span>
            <span v-else>即刻发送</span>
          </template>
        </el-table-column> -->
        <!-- <el-table-column
          label="任务状态"
          fixed="right"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <dict-tag :options="serviceState" :value="scope.row.sendstate" />
            <span v-for="item in scope.row.preachform"
              >{{ item }}、
            </span>
          </template>
        </el-table-column> -->
        </el-table-column>
        <el-table-column
          label="任务组发送流程"
          align="center"
          key="serviceSubtaskRecordList"
          prop="serviceSubtaskRecordList"
          width="160"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span v-for="item in scope.row.serviceSubtaskRecordList"
              >{{ item.remark }}、
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="任务组结果说明"
          fixed="right"
          width="120"
          align="center"
          key="remark"
          prop="remark"
        >
          <template slot-scope="scope" v-if="scope.row.remark">
            <el-tag
              type="success"
              v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
              >{{ scope.row.remark }}</el-tag
            >
            <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
          fixed="right"
@@ -428,7 +424,7 @@
            <!-- <el-tooltip
              class="item"
              effect="dark"
              content="重新宣教"
              content="重新随访"
              placement="top"
            >
              <el-button
@@ -471,7 +467,7 @@
        @pagination="getList"
      />
    </el-row>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹é—¨è¯Šå®£æ•™å¯¹è¯æ¡† -->
    <!-- æ·»åŠ æˆ–ä¿®æ”¹é—¨è¯Šéšè®¿å¯¹è¯æ¡† -->
    <el-dialog
      :title="title"
      :visible.sync="addalteropen"
@@ -481,7 +477,7 @@
      <el-form ref="form" :model="form" label-width="100px">
        <el-row :gutter="20">
          <el-col :span="12"
            ><el-form-item label="任务名称">
            ><el-form-item label="任务组名称">
              <el-input v-model="form.name"></el-input> </el-form-item
          ></el-col>
        </el-row>
@@ -495,8 +491,8 @@
        ></el-row>
        <el-row :gutter="20">
          <el-col :span="24"
            ><el-form-item label="宣教类型">
              <el-select v-model="form.region" placeholder="请选择宣教类型">
            ><el-form-item label="随访类型">
              <el-select v-model="form.region" placeholder="请选择随访类型">
                <el-option label="区域一" value="shanghai"></el-option>
                <el-option label="区域二" value="beijing"></el-option>
              </el-select> </el-form-item
@@ -514,7 +510,7 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="24">
            <el-form-item label="门诊宣教要求">
            <el-form-item label="门诊随访要求">
              <el-input type="textarea" v-model="form.desc"></el-input>
            </el-form-item>
          </el-col>
@@ -532,7 +528,7 @@
      width="45%"
    >
      <div style="margin-bottom: 20px; color: red">
        ç»Ÿä¸€ä¿®æ”¹å½“天未发送的任务时间
        ç»Ÿä¸€ä¿®æ”¹å½“天未发送的任务组时间
      </div>
      <el-form
@@ -639,7 +635,7 @@
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: null,
      // å¼¹å‡ºå±‚标题
      title: "新增门诊宣教",
      title: "新增门诊随访",
      // æ˜¯å¦æ˜¾ç¤ºä¿®æ”¹ã€æ·»åŠ å¼¹å‡ºå±‚
      addalteropen: false,
      // ä¿®æ”¹å‘送时间对话框
@@ -658,13 +654,13 @@
      dynamicTags: ["选项一", "选项二", "选项三"], //选项
      inputVisible: false,
      inputValue: "",
      previewVisible: false, //门诊宣教预览弹框
      previewVisible: false, //门诊随访预览弹框
      radio: "",
      radios: [],
      previewtype: 2, //预览门诊宣教类型
      previewtype: 2, //预览门诊随访类型
      total: 0, // æ€»æ¡æ•°
      ImportQuantity: 999, //导门诊宣教数量
      //预览门诊宣教信息
      ImportQuantity: 999, //导门诊随访数量
      //预览门诊随访信息
      previewvalue: {
        username: "这个医生对你怎么样",
      },
@@ -685,57 +681,35 @@
        },
      ],
      loading: false,
      states: [
        "Alabama",
        "Alaska",
        "Arizona",
        "Arkansas",
        "California",
        "Colorado",
        "Connecticut",
        "Delaware",
        "Florida",
        "Georgia",
        "Hawaii",
        "Idaho",
        "Illinois",
        "Indiana",
        "Iowa",
        "Kansas",
        "Kentucky",
        "Louisiana",
        "Maine",
        "Maryland",
        "Massachusetts",
        "Michigan",
        "Minnesota",
        "Mississippi",
        "Missouri",
        "Montana",
        "Nebraska",
        "Nevada",
        "New Hampshire",
        "New Jersey",
        "New Mexico",
        "New York",
        "North Carolina",
        "North Dakota",
        "Ohio",
        "Oklahoma",
        "Oregon",
        "Pennsylvania",
        "Rhode Island",
        "South Carolina",
        "South Dakota",
        "Tennessee",
        "Texas",
        "Utah",
        "Vermont",
        "Virginia",
        "Washington",
        "West Virginia",
        "Wisconsin",
        "Wyoming",
      cardlist: [
        {
          name: "全部服务",
          value: 0,
        },
        {
          name: "应随访",
          value: 0,
        },
        {
          name: "不执行",
          value: 0,
        },
        {
          name: "异常",
          value: 0,
        },
        {
          name: "发送失败",
          value: 0,
        },
        {
          name: "被领取",
          value: 0,
        },
        {
          name: "已发送未领取",
          value: 0,
        },
      ],
      pickerOptions: {
        disabledDate(time) {
@@ -779,8 +753,8 @@
      topqueryParams: {
        pageNum: 1,
        pageSize: 10,
        serviceType: 4,
        searchscope:2,
        serviceType: 2,
        searchscope: 2,
      },
      propss: { multiple: true },
      options: [],
@@ -822,6 +796,7 @@
        },
      ],
      serviceState: [],
      checkboxlist: [],
      // è¡¨å•校验
      rules: {},
    };
@@ -829,29 +804,28 @@
  watch: {},
  created() {
    this.serviceState = store.getters.serviceState;
    this.checkboxlist = store.getters.checkboxlist;
    this.getList();
    this.getConfigKey("sys.user.initPassword").then((response) => {
      this.initPassword = response.msg;
    });
  },
  // æœç´¢
  mounted() {
    this.list = this.states.map((item) => {
      return { value: `value:${item}`, label: `label:${item}` };
    });
  activated() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢é—¨è¯Šå®£æ•™æœåŠ¡åˆ—è¡¨ */
    /** æŸ¥è¯¢é—¨è¯Šéšè®¿æœåŠ¡åˆ—è¡¨ */
    getList() {
      if (this.topqueryParams.searchscope == 1) {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes=null;
        this.topqueryParams.leavehospitaldistrictcodes = null;
      } else if (this.topqueryParams.searchscope == 2) {
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.topqueryParams.leaveldeptcodes=null;
        this.topqueryParams.leaveldeptcodes = null;
      } else {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
@@ -861,17 +835,32 @@
      }
      this.loading = true;
      getTaskservelist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.userList = response.rows[0].serviceSubtaskList;
        this.cardlist[0].value =
          Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
        this.cardlist[1].value = response.rows[0].ysf;
        this.cardlist[2].value = response.rows[0].wzx;
        this.cardlist[3].value = response.rows[0].yc;
        this.cardlist[4].value = response.rows[0].fssb;
        this.cardlist[5].value = response.rows[0].blq;
        this.cardlist[6].value = response.rows[0].yfs;
        this.userList.forEach((item) => {
          if (item.endtime) {
            item.endDay = this.daysBetween(item.endtime);
          }
          const idArray = item.preachform.split(",");
          item.preachform = idArray.map((value) => {
            // æŸ¥æ‰¾id对应的对象
            const item = this.checkboxlist.find((item) => item.value == value);
            // å¦‚果找到对应的id,返回label值,否则返回null
            return item ? item.label : null;
          });
        });
        this.total = response.total;
        this.loading = false;
      });
    },
    // æŸ¥çœ‹é—¨è¯Šå®£æ•™è¯¦æƒ…
    // æŸ¥çœ‹é—¨è¯Šéšè®¿è¯¦æƒ…
    Referencequestion(row) {
      this.previewVisible = true;
    },
@@ -889,7 +878,7 @@
        this.options = [];
      }
    },
    // é—¨è¯Šä»»åŠ¡çŠ¶æ€ä¿®æ”¹
    // é—¨è¯Šéšè®¿çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "启用" : "停用";
      this.$modal
@@ -933,11 +922,11 @@
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes=null;
        this.topqueryParams.leavehospitaldistrictcodes = null;
      } else if (this.topqueryParams.searchscope == 2) {
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
          this.topqueryParams.leaveldeptcodes=null;
        this.topqueryParams.leaveldeptcodes = null;
      } else {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
@@ -946,12 +935,20 @@
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.topqueryParams.pageNum = 1;
      this.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.topqueryParams = {};
      this.topqueryParams = {
        pageNum: 1,
        pageSize: 10,
        serviceType: 2,
        searchscope: 2,
      };
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
@@ -983,10 +980,10 @@
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/followvisit/Missioncreation",
        path: "/followvisit/QuestionnaireTask",
        query: {
          type: 3,
          serviceType: 4,
          type: 2,
          serviceType: 2,
        },
      });
    },
@@ -1045,7 +1042,7 @@
    // å…¨éƒ¨åœæ­¢
    AllStop() {
      this.$modal
        .confirm("是否停止全部任务?")
        .confirm("是否停止全部任务组?")
        .then(function () {
          return console.log("停止成功");
        })
@@ -1058,7 +1055,7 @@
    // å…¨éƒ¨å¼€å§‹
    AllStarted() {
      this.$modal
        .confirm("是否开启全部任务?")
        .confirm("是否开启全部任务组?")
        .then(function () {
          return console.log("开启成功");
        })
@@ -1068,10 +1065,10 @@
        })
        .catch(() => {});
    },
    // ä»»åŠ¡é‡ç½®
    // ä»»åŠ¡ç»„é‡ç½®
    TaskReset() {
      this.$modal
        .confirm("是否重置选中的任务项?")
        .confirm("是否重置选中的任务组项?")
        .then(function () {
          return console.log("选中成功");
        })
@@ -1089,11 +1086,19 @@
    Seedetails(row) {
      this.$router.push({
        path: "/followvisit/record/detailpage/",
        query: { taskid: row.taskid, patid: row.patid,id: row.id},
        query: { taskid: row.taskid, patid: row.patid, id: row.id },
      });
    },
    // å¯¼å…¥æŒ‰é’®
    toleadExport() {},
    // ä¾¿æ·æŒ‰é’®
    toleadExport(too) {
      if (too == 1) {
        this.topqueryParams.sendstate = 4;
        this.topqueryParams.excep = null;
      } else if (too == 2) {
        this.topqueryParams.excep = 1;
      }
      this.handleQuery();
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download(
@@ -1103,6 +1108,13 @@
        },
        `user_${new Date().getTime()}.xlsx`
      );
    },
    // å¼‚常列渲染
    tableRowClassName({ row, rowIndex }) {
      if (row.excep == 1) {
        return "warning-row";
      }
      return "";
    },
  },
};
@@ -1118,6 +1130,9 @@
.document {
  // width: 100px;
  height: 50px;
}
::v-deep.el-table .warning-row {
  background: #eec4c4;
}
.documentf {
@@ -1197,6 +1212,13 @@
    }
  }
}
::v-deep.leftvlue .el-card__body {
  background: #d0e9fd;
}
::v-deep.leftvlue .el-card__body:hover {
  background: #8dc8f8;
  cursor: pointer; /* é¼ æ ‡æ‚¬æµ®æ—¶å˜ä¸ºæ‰‹å½¢ */
}
.button-bb {
  font-weight: 500;
  background-color: #2ba05c;
src/views/patient/patient/PatientChart.vue
ÎļþÒÑɾ³ý
src/views/patient/propaganda/index.vue
@@ -11,7 +11,10 @@
        label-width="98px"
      >
        <el-form-item label="任务名称">
          <el-input v-model="topqueryParams.taskName" placeholder="请选择任务名称"></el-input>
          <el-input
            v-model="topqueryParams.taskName"
            placeholder="请选择任务名称"
          ></el-input>
        </el-form-item>
        <!-- <el-form-item label="发起人">
          <el-input v-model="topqueryParams.createBy"></el-input>
@@ -135,7 +138,7 @@
                size="medium"
                @click="toleadExport(2)"
                >结果异常</el-button
              >
              >-
            </div>
          </div>
        </el-col>
@@ -143,7 +146,7 @@
      <el-table
        v-loading="loading"
        :data="userList"
         height="660"
        height="560"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="50" align="center" />
@@ -164,54 +167,54 @@
          prop="sendname"
        />
        <el-table-column
        label="宣教状态"
        align="center"
        key="sendstate"
        prop="sendstate"
        width="120"
          label="宣教状态"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
        >
        <template slot-scope="scope">
          <div v-if="scope.row.sendstate == 1">
            <el-tag type="primary" :disable-transitions="false"
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 1">
              <el-tag type="primary" :disable-transitions="false"
                >被领取</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 2">
                <el-tag type="primary" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 2">
              <el-tag type="primary" :disable-transitions="false"
                >待发送</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 3">
                <el-tag type="success" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 3">
              <el-tag type="success" :disable-transitions="false"
                >已发送未领取</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 4">
                <el-tag type="info" :disable-transitions="false">不执行</el-tag>
              </div>
              <div v-if="scope.row.sendstate == 5">
                <el-tag type="danger" :disable-transitions="false"
              >
            </div>
            <div v-if="scope.row.sendstate == 4">
              <el-tag type="info" :disable-transitions="false">不执行</el-tag>
            </div>
            <div v-if="scope.row.sendstate == 5">
              <el-tag type="danger" :disable-transitions="false"
                >发送失败</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 6">
                <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
              </div>
            </template>
          </el-table-column>
              >
            </div>
            <div v-if="scope.row.sendstate == 6">
              <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
            </div>
          </template>
        </el-table-column>
          <el-table-column
        <el-table-column
          label="结果状态"
          align="center"
          key="excep"
          prop="excep"
          width="120"
          >
        >
          <template slot-scope="scope">
            <div v-if="scope.row.sendstate == 6">
              <dict-tag
              :options="dict.type.sys_yujing"
              :value="scope.row.excep"
                :options="dict.type.sys_yujing"
                :value="scope.row.excep"
              />
            </div>
            <div v-else>
@@ -220,48 +223,49 @@
          </template>
        </el-table-column>
        <el-table-column
        label="处理意见"
        align="center"
        key="suggest"
        prop="suggest"
        width="120"
          label="处理意见"
          align="center"
          key="suggest"
          prop="suggest"
          width="120"
        >
        <template slot-scope="scope">
          <dict-tag
          :options="dict.type.sys_suggest"
          :value="scope.row.suggest"
          />
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_suggest"
              :value="scope.row.suggest"
            />
          </template>
        </el-table-column>
        <el-table-column
        label="出院日期"
        width="200"
        align="center"
        key="endtime"
        prop="endtime"
          label="出院日期"
          width="200"
          align="center"
          key="endtime"
          prop="endtime"
        >
        <template slot-scope="scope">
          <span>{{ formatTime(scope.row.endtime) }}</span>
        </template></el-table-column
        >
        <el-table-column
        label="应宣教日期"
        width="200"
        align="center"
        key="longSendTime"
        prop="longSendTime"
        >
        <template slot-scope="scope">
          <span>{{ formatTime(scope.row.longSendTime) }}</span>
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.endtime) }}</span>
          </template></el-table-column
          >
          <el-table-column
        >
        <el-table-column
          label="应宣教日期"
          width="200"
          align="center"
          key="longSendTime"
          prop="longSendTime"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.longSendTime) }}</span>
          </template></el-table-column
        >
        <el-table-column
          label="出院天数"
          width="120"
          align="center"
          key="endDay"
          prop="endDay"
          >
        >
          <template slot-scope="scope">
            <span>{{
              scope.row.endDay ? scope.row.endDay + "天" : "日期缺失"
@@ -289,13 +293,7 @@
          key="drname"
          prop="drname"
        />
        <el-table-column
          label="宣教异常记录"
          width="120"
          align="center"
          key="remark"
          prop="remark"
        />
        <!-- <el-table-column
          label="病历号"
@@ -341,6 +339,7 @@
          align="center"
          key="templatename"
          prop="templatename"
          :show-overflow-tooltip="true"
          width="200"
        />
@@ -351,40 +350,37 @@
          prop="createBy"
          width="120"
        />
        <!-- <el-table-column
          label="责任医师"
          align="center"
          key="drname"
          prop="drname"
          width="120"
        /> -->
        <!-- <el-table-column
          label="出院时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span>{{ formatTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column> -->
        <!-- <el-table-column
          label="宣教时间"
          sortable
          align="center"
          prop="createTime"
          width="160"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.sendType != 3">{{
              formatTime(scope.row.createTime)
            }}</span>
            <span v-else>即刻发送</span>
          </template>
        </el-table-column> -->
        <el-table-column
        fixed="right"
          label="任务发送流程"
          align="center"
          key="serviceSubtaskRecordList"
          prop="serviceSubtaskRecordList"
          width="160"
          :show-overflow-tooltip="true"
        >
          <template slot-scope="scope">
            <span v-for="item in scope.row.serviceSubtaskRecordList"
              >{{ item.remark }}、
            </span>
          </template>
        </el-table-column>
        <el-table-column
        fixed="right"
          label="任务结果记录"
          width="120"
          align="center"
          key="remark"
          prop="remark"
        >
        <template slot-scope="scope" v-if="scope.row.remark">
          <el-tag type="success" v-if="scope.row.sendstate!=5&&scope.row.sendstate!=4&&scope.row.remark">{{ scope.row.remark }}</el-tag>
          <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
        </template>
      </el-table-column>
        <el-table-column
        fixed="right"
          label="宣教时间"
          sortable
          align="center"
@@ -408,7 +404,6 @@
            <dict-tag :options="serviceState" :value="scope.row.sendstate" />
          </template>
        </el-table-column> -->
      </el-table>
      <pagination
@@ -728,7 +723,7 @@
        pageNum: 1,
        pageSize: 10,
        serviceType: 4,
        searchscope:2,
        searchscope: 2,
      },
      propss: { multiple: true },
      options: [],
@@ -1005,10 +1000,10 @@
    // ä¾¿æ·æŒ‰é’®
    toleadExport(too) {
      if (too == 1) {
        this.topqueryParams.sendstate=4;
        this.topqueryParams.excep=null;
        this.topqueryParams.sendstate = 4;
        this.topqueryParams.excep = null;
      } else if (too == 2) {
        this.topqueryParams.excep=1;
        this.topqueryParams.excep = 1;
      }
      this.handleQuery();
    },
src/views/patient/propaganda/particty.vue
@@ -1254,7 +1254,6 @@
            value: "1",
            label: "人工",
          },
          {
            value: "2",
            label: "纸质",
src/views/repositoryai/templateku/configurat/index.vue
@@ -532,6 +532,16 @@
                    <el-radio :label="0">否</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="选中提示" v-if="topicobj.scriptType != 1">
                  <el-input
                    style="width: 24vw"
                    type="textarea"
                    autosize
                    placeholder="请输入内容"
                    v-model="topicobj.prompt"
                  >
                  </el-input
                ></el-form-item>
                <el-row>
                  <el-col :span="24"
                    ><el-form-item label="语音文本">
@@ -617,6 +627,7 @@
                    @branchFlagfn="branchFlagfn"
                    :branchFlag="topicobj.branchFlag ? true : false"
                    :controlsc="false"
                    :scriptType="topicobj.scriptType"
                  />
                  <!-- æ— åŒ¹é…ç±»åž‹ -->
                  <div class="topicxq">
@@ -1051,9 +1062,19 @@
                        </el-select> </el-form-item
                    ></el-col> -->
                  </el-row>
                  <el-form-item label="选中提示" v-if="topicobj.scriptType != 1">
                  <el-input
                    style="width: 24vw"
                    type="textarea"
                    autosize
                    placeholder="请输入内容"
                    v-model="indexform.prompt"
                  >
                  </el-input
                ></el-form-item>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="语音话术">
                      ><el-form-item label="语音文本">
                        <el-input
                          style="width: 600px"
                          type="textarea"
@@ -1422,9 +1443,9 @@
      inputValue: "",
      inputValueillness: "",
      topicobj: {
        noMatchText: "",
        noClearlyText: "",
        slienceText: "",
        noMatchText:'抱歉,我没有听懂,您能再说一遍吗?',
        noClearlyText:'抱歉,我没有听清您说的话,您可以再说一次吗?',
        slienceText:'抱歉,我没有听到您说的话,您可以再说一次吗?',
      },
      total: 1,
      id: "",
src/views/repositoryai/templateku/configurat/measurement.vue
@@ -158,7 +158,7 @@
      };
      // å‘èµ·ws请求
      sendWebsocket(
        "ws://localhost:8095/chat?userId=1",
        "ws://192.168.2.13:8095/chat?userId=1",
        obj,
        this.wsMessage,
        this.wsError
@@ -205,6 +205,8 @@
        });
        return item;
      });
      console.log(this.questionList);
      // IMUI.appendMessage(data);
    },
@@ -224,7 +226,7 @@
      console.log(obj, "入参");
      // å‘èµ·ws请求
      sendWebsocket(
        "ws://localhost:8095/chat?userId=1",
        "ws://192.168.2.13:8095/chat?userId=1",
        obj,
        this.wsMessage,
        this.wsError
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -730,6 +730,9 @@
        ivrLibaScriptTargetoptionList: [],
        ivrLibaScriptTagList: [],
        suitway: "2",
        noMatchText:'抱歉,我没有听懂,您能再说一遍吗?',
        noClearlyText:'抱歉,我没有听清您说的话,您可以再说一次吗?',
        slienceText:'抱歉,我没有听到您说的话,您可以再说一次吗?',
      },
      mode: [],
      questionclass: [],