WXL
2024-03-25 d84cde7ed98bf0c562a8631e660fd494de9a7d0b
指标完成
已修改4个文件
250 ■■■■ 文件已修改
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/SFtable/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 243 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -58,6 +58,7 @@
    "js-cookie": "3.0.1",
    "jsencrypt": "3.0.0-rc.1",
    "lemon-imui": "^1.7.7",
    "moment": "^2.30.1",
    "nprogress": "0.2.0",
    "quill": "1.3.7",
    "quill-image-drop-module": "^1.0.3",
src/components/SFtable/index.vue
@@ -150,7 +150,7 @@
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      $emit("handleSelectionChange", selection);
      this.$emit("handleSelectionChange", selection);
    },
  },
};
src/main.js
@@ -80,6 +80,9 @@
for (let key in filters) {
  Vue.filter(key, filters[key]);
}
import moment from "moment"
Vue.prototype.$moment = moment;
// 全局方法挂载
@@ -131,3 +134,4 @@
  store,
  render: (h) => h(App),
});
src/views/patient/propaganda/particty.vue
@@ -38,40 +38,86 @@
              <el-form ref="form" :model="form" label-width="105px">
                <el-form-item label="模版名称:">
                  <el-input
                    :disabled="true"
                    style="width: 220px"
                    v-model="form.preachname"
                    placeholder="请在下方选择"
                    v-model="form.templatename"
                    placeholder="请在下列选择"
                  />
                </el-form-item>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                  <el-radio-group v-model="radio">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="2">时间点发送</el-radio>
                    <el-radio :label="3">即刻发送</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item
                  label="发送时间点:"
                  v-if="currenttype != 2 && radio == 2"
                  label="发送日期:"
                  v-if="currenttype != 2 && form.sendType == 1"
                >
                  <el-date-picker
                    v-model="form.sendTime"
                    type="datetime"
                    placeholder="选择日期时间"
                    default-time="13:00:00"
                    v-model="daytime"
                    @change="changeTimeday"
                    type="daterange"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    value-format="yyyy-MM-dd"
                  >
                  </el-date-picker>
                </el-form-item>
                <el-form-item
                  label="发送时间段:"
                  v-if="currenttype != 2 && radio == 1"
                  v-if="currenttype != 2 && form.sendType == 1"
                >
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox label="上午(8:30-11:30)"></el-checkbox>
                    <el-checkbox label="下午(14:30-16:30)"></el-checkbox>
                    <el-checkbox label="夜间(18:30-20:30)"></el-checkbox>
                  </el-checkbox-group>
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >上午</span
                      >
                      <el-time-picker
                        is-range
                        @change="changeTime"
                        v-model="time1"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >下午</span
                      >
                      <el-time-picker
                        is-range
                        @change="changeTime"
                        v-model="time2"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >晚间</span
                      >
                      <el-time-picker
                        is-range
                        @change="changeTime"
                        v-model="time3"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
@@ -82,18 +128,6 @@
                    ></el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
                <!-- <el-form-item label="组织形式">
                  <el-radio-group v-model="form.radio">
                    <el-radio :label="3">单人宣教</el-radio>
                    <el-radio :label="6">多人集中宣教</el-radio>
                  </el-radio-group>
                </el-form-item> -->
                <!-- <el-form-item label="语音模版" prop="region">
                  <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> -->
              </el-form>
            </div>
          </div>
@@ -259,10 +293,9 @@
                    </el-form-item>
                  </el-form>
                  <el-divider></el-divider>
                  <!-- 选择任务列表 -->
                  <!-- 选择模版列表 -->
                  <SFtable
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    @selectfn="selectfn"
                    :currentList="userList"
                    :tableLabel="tableLabel"
                    :controlsc="false"
@@ -474,7 +507,7 @@
                  <SFtable
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    :currentList="sonuserList"
                    :currentList="form.patTaskRelevances"
                    :tableLabel="tableLabelhz"
                    :controlxz="false"
                    :typeinfo="2"
@@ -693,6 +726,12 @@
        { label: "匹配符", width: "", prop: "character" },
        { label: "替换值", width: "", prop: "Replacementvalue" },
      ],
      // 时间处理
      daytime: [], //日期
      applydaytime: [], //计算日期
      time1: "", //上午时间段
      time2: "", //下午时间段
      time3: "", //晚上时间段
      topqueryParams: {
        pageNum: 1, //
        pageSize: 10,
@@ -738,16 +777,15 @@
          Replacementvalue: "八个八",
        },
      ], //变量列表
      variableListTime: [],
      tasktopic: null, //新增类型
      SelectPatientslist: [],
      form: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        serviceform: [],
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
      },
      taskoptions: [
        {
@@ -782,7 +820,7 @@
    //   地址: { "${dzz}": "龙宫" },
    //   电话: { "${dhh}": "八个八" },
    // }
    // 对象转数组
    // 变量转换对象转数组
    convertFormat1ToFormat2(data) {
      let result = [];
      for (let key in data) {
@@ -818,15 +856,15 @@
        this.title = "宣教内容列表";
        this.tableLabel = this.tableLabelxj;
        this.checkboxlist = [
          "当面",
          "多媒体",
          "线下",
          "视频",
          "纸质",
          "电话",
          "语音",
          "短信",
          "微信公众号",
          "微信小程序",
          "支付宝",
          "智能小程序",
          "二维码",
          "钉钉",
        ];
        getlibrarylist(queryParams).then((response) => {
@@ -836,7 +874,7 @@
      } else if (this.currenttype == 2) {
        this.title = "随访内容列表";
        this.tableLabel = this.tableLabelmz;
        this.checkboxlist = ["当面", "纸质", "电话", "短信", "微信公众号"];
        this.checkboxlist = ["线下", "纸质", "语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
@@ -844,7 +882,7 @@
      } else if (this.currenttype == 3) {
        this.title = "随访计划列表";
        this.tableLabel = this.tableLabelcy;
        this.checkboxlist = ["当面", "纸质", "电话", "短信", "微信公众号"];
        this.checkboxlist = ["线下", "纸质", "语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
@@ -852,7 +890,7 @@
      } else if (this.currenttype == 4) {
        this.title = "通知内容列表";
        this.tableLabel = this.tableLabelfz;
        this.checkboxlist = ["电话", "短信", "微信公众号"];
        this.checkboxlist = ["语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
@@ -860,7 +898,7 @@
      } else if (this.currenttype == 5) {
        this.title = "通知内容列表";
        this.tableLabel = this.tableLabeltj;
        this.checkboxlist = ["纸质", "电话", "短信", "微信公众号"];
        this.checkboxlist = ["纸质", "语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
@@ -869,10 +907,10 @@
        this.title = "问卷内容列表";
        this.tableLabel = this.tableLabelwj;
        this.checkboxlist = [
          "当面",
          "多媒体",
          "线下",
          "视频",
          "纸质",
          "电话",
          "语音",
          "短信",
          "微信公众号",
          "微信小程序",
@@ -891,12 +929,23 @@
    },
    // 保存
    submitForm(formName) {
      this.form.serviceform = this.checkList.join(",");
      this.form.textParam = {
        姓名: { "${name}": "龙傲天" },
        地址: { "${dzz}": "龙宫" },
        电话: { "${dhh}": "八个八" },
      };
      if (this.form.id) {
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
      }
      Editsingletask(this.form).then((response) => {
        if (res.code == 200) {
          if (this.form.id) {
            this.$modal.msgSuccess("新增成功");
          }else{
            this.$modal.msgSuccess("修改成功成功");
          } else {
            this.$modal.msgSuccess("修改成功");
          }
          this.$router.go(-1);
        }
@@ -910,6 +959,18 @@
      //     return false;
      //   }
      // });
    },
    // ----------------------表格子组件事件
    // 选择
    selectfn(row, type) {
      console.log(row);
      console.log(type);
      if (type == 1) {
        this.form.templatename = row.preachname;
        this.form.templateid = row.templateid;
      } else if (type == 2) {
      } else if (type == 3) {
      }
    },
    // 子任务二级弹框
    handleAddpatient(row) {
@@ -926,6 +987,8 @@
    handleExport() {},
    // 多选框选中数据
    handleSelectionChange(selection) {
      console.log("多选患者");
      this.SelectPatientslist = selection;
      this.ids = null;
      this.ids = selection.map((item) => item.patid).join(",");
      // let result = this.ids.join(",");
@@ -960,12 +1023,10 @@
    },
    // 新增派送患者
    AddDispatchpatients() {
      let objictpint = {};
      objictpint.patientes = this.ids;
      objictpint.pguid = 2;
      // Addpatienttask(objictpint).then((res) => {
      //   console.log(res);
      // });
      this.SelectPatientslist.forEach((item) => {
        item.isoperation = 1;
      });
      this.form.patTaskRelevances.push(...this.SelectPatientslist);
      this.dialogVisiblepatient = false;
    },
@@ -986,6 +1047,66 @@
    variableDelete(index, row) {
      console.log(index, row);
    },
    // 时间----------
    changeTime(row) {
      console.log(row, "时间");
      this.processingTime();
    },
    changeTimeday(row) {
      const startDate = new Date(row[0]);
      const endDate = new Date(row[1]);
      this.applydaytime = this.getDates(startDate, endDate);
      this.processingTime();
    },
    getDates(startDate, endDate) {
      const dates = [];
      let currentDate = new Date(startDate);
      while (currentDate <= endDate) {
        dates.push(this.$moment(currentDate).format("YYYY-MM-DD"));
        currentDate.setDate(currentDate.getDate() + 1);
      }
      return dates;
    },
    // 时间最终处理方法
    processingTime() {
      const combinedData = [];
      let serialnumber = 1;
      if (this.time3[0]) {
        serialnumber = 3;
      } else if (this.time2[0]) {
        serialnumber = 2;
      } else if (this.time1[0]) {
        serialnumber = 1;
      } else {
        return;
      }
      for (let i = 0; i < this.applydaytime.length; i++) {
        combinedData.push({
          begantime: `${this.applydaytime[i]} ${this.time1[0]}`,
          endtime: `${this.applydaytime[i]} ${this.time1[1]}`,
          xh: serialnumber * i + 1,
        });
        if (serialnumber >= 2) {
          combinedData.push({
            begantime: `${this.applydaytime[i]} ${this.time2[0]}`,
            endtime: `${this.applydaytime[i]} ${this.time2[1]}`,
            xh: serialnumber * i + 2,
          });
        }
        if (serialnumber >= 3) {
          combinedData.push({
            begantime: `${this.applydaytime[i]} ${this.time3[0]}`,
            endtime: `${this.applydaytime[i]} ${this.time3[1]}`,
            xh: serialnumber * i + 3,
          });
        }
      }
      this.form.sendTimeslot = combinedData;
      console.log(combinedData, "combinedData");
    },
  },
};
</script>