11
heimawl
2023-07-04 8cdcc9b986f9d3c4672b2b9109a1edfc3548de45
11
已添加3个文件
已修改4个文件
539 ■■■■■ 文件已修改
src/views/complaint/complaintlist/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/complaint/complaintmy/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/communication/index.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/messagebank/compile/index.vue 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/messagebank/index.vue 338 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/complaint/complaintlist/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<template>
  <div>投诉列表</div>
</template>
<script>
export default {
  data() {
    return {};
  },
  created() {},
  methods: {},
};
</script>
<style lang="scss" scoped></style>
src/views/complaint/complaintmy/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<template>
  <div>我的投诉</div>
</template>
<script>
export default {
  data() {
    return {};
  },
  created() {},
  methods: {},
};
</script>
<style lang="scss" scoped></style>
src/views/login.vue
@@ -36,7 +36,7 @@
          />
        </el-input>
      </el-form-item>
      <el-form-item prop="code" v-if="captchaEnabled">
      <!-- <el-form-item prop="code" v-if="captchaEnabled">
        <el-input
          v-model="loginForm.code"
          auto-complete="off"
@@ -53,7 +53,7 @@
        <div class="login-code">
          <img :src="codeUrl" @click="getCode" class="login-code-img" />
        </div>
      </el-form-item>
      </el-form-item> -->
      <el-checkbox
        v-model="loginForm.rememberMe"
        style="margin: 0px 0px 25px 0px"
@@ -108,7 +108,7 @@
        password: [
          { required: true, trigger: "blur", message: "请输入您的密码" },
        ],
        code: [{ required: true, trigger: "change", message: "请输入验证码" }],
        // code: [{ required: true, trigger: "change", message: "请输入验证码" }],
      },
      loading: false,
      // éªŒè¯ç å¼€å…³
@@ -133,6 +133,7 @@
  methods: {
    getCode() {
      getCodeImg().then((res) => {
        console.log(res);
        this.captchaEnabled =
          res.captchaEnabled === undefined ? true : res.captchaEnabled;
        if (this.captchaEnabled) {
src/views/shortmessage/communication/index.vue
@@ -625,7 +625,8 @@
    },
    // å‘送新消息触发
    handleSend(message, next, file) {
      console.log(message, file);
      console.log(message);
      console.log(file);
      console.log(next);
      this.requstWs();
      setTimeout(() => {
src/views/shortmessage/messagebank/compile/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,155 @@
<template>
  <div>
    <div class="headline">
      <div class="basics">问题配置</div>
      <div class="headbottom">
        <el-button type="primary" icon="el-icon-notebook-2" @click="addzbiaofn"
          >健康信息模版</el-button
        >
        <el-button @click="emptyfn" type="primary" icon="el-icon-refresh-right"
          >清空短信内容</el-button
        >
      </div>
    </div>
    <div class="top-text">
      <el-input
        :rows="5"
        placeholder="请输入短信内容或利用模板进行编辑"
        type="textarea"
        v-model="form.desc"
      ></el-input>
    </div>
    <div class="headline">
      <div class="basics">
        æŽ¥æ”¶çŸ­ä¿¡å·ç <span>注:手机号码用英文符号 ';' åˆ†éš”开!</span>
      </div>
      <div class="headbottom">
        <el-button type="primary" icon="el-icon-phone" @click="selectphp"
          >选泽号码</el-button
        >
        <el-button
          type="primary"
          icon="el-icon-refresh-right
"
          >清空号码</el-button
        >
      </div>
    </div>
    <div class="top-text">
      <el-input
        :rows="5"
        placeholder="请输入"
        type="textarea"
        v-model="form.desc"
      ></el-input>
    </div>
    <div class="headlinetwo">
      <div class="basics">
        <el-checkbox v-model="form.checked">预约发送</el-checkbox>
      </div>
      <div class="headbottom">
        <el-button
          type="warning"
          plain
          icon="el-icon-arrow-left"
          @click="addzbiao"
          >返回短信列表</el-button
        >
        <el-button type="success" plain icon="el-icon-position">发送</el-button>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      optionvalue: "不需要、没有、不知道",
      form: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
      },
      deployList: [
        {
          id: 1,
          name: "有",
          valuetop:
            "(?!.*忘|.*不|.*没)^.*(是|有|对|做|作|检|查|复诊|好|参加|复诊|去(过|好|了|完|医院)|来(过|了|医院))|没错|对呀|可能|(已经|早)去了|开了药|腰带|吊带|要的|(?<!没)有的|表带,10;要,5",
        },
        {
          id: 2,
          name: "不知道",
          valuetop:
            "(不|没|谁|鬼|怎么).*(病|可能|知道|了解|清楚|懂|明白|确认|确定|晓得|知晓|认得|识得|印象|熟悉|è®°|会|关心|关注|注意|告诉|通知|听)",
        },
      ],
    };
  },
  created() {},
  methods: {
    onSubmit() {
      console.log("submit!");
    },
    deletei(index) {
      console.log(index);
      this.deployList.splice(index, 1);
    },
    addzbiao() {
      this.$router.go(-1);
    },
  },
};
</script>
<style lang="scss" scoped>
.top-text {
  margin: 15px;
  margin-top: 0;
  padding: 10px;
  background: #f2f5fc;
  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);
}
.basic {
  height: 50px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  background: #92c5f0;
}
.headline {
  display: flex;
  height: 50px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  background: #92c5f0;
  justify-content: space-between;
  span {
    margin-left: 20px;
    color: #fa3a3a;
    font-weight: 600;
  }
}
.headlinetwo {
  display: flex;
  height: 50px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  justify-content: space-between;
}
</style>
src/views/shortmessage/messagebank/index.vue
@@ -3,37 +3,42 @@
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn">
      <div class="notebuttom"><i class="el-icon-chat-dot-square" />发短信</div>
      <el-divider></el-divider>
      <div class="notestate">
        <div class="state-text">短信状态</div>
        <div class="state-line">
          <div class="value-left">
            <i class="el-icon-chat-dot-square" />全部
          </div>
        <div
          :class="classestag == 1 ? 'state-lines' : 'state-line'"
          @click="completefn"
        >
          <div class="value-left"><i class="el-icon-menu" />全部</div>
          <div class="quantityq">22</div>
        </div>
        <div class="state-line">
          <div class="value-left">
            <i class="el-icon-chat-dot-square" />发送成功
          </div>
        <div
          :class="classestag == 2 ? 'state-lines' : 'state-line'"
          @click="succeedfn"
        >
          <div class="value-left"><i class="el-icon-s-claim" />发送成功</div>
          <div class="quantitycg">22</div>
        </div>
        <div class="state-line">
          <div class="value-left">
            <i class="el-icon-chat-dot-square" />发送失败
          </div>
        <div
          :class="classestag == 3 ? 'state-lines' : 'state-line'"
          @click="losefn"
        >
          <div class="value-left"><i class="el-icon-warning" />发送失败</div>
          <div class="quantitysb">22</div>
        </div>
        <div class="state-line">
          <div class="value-left">
            <i class="el-icon-chat-dot-square" />待发送
          </div>
        <div
          :class="classestag == 4 ? 'state-lines' : 'state-line'"
          @click="awaitfn"
        >
          <div class="value-left"><i class="el-icon-s-comment" />待发送</div>
          <div class="quantityd">22</div>
        </div>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
    <div class="leftvlue">
      <div class="leftvlue-top">短信详情</div>
      <div class="leftvlue-top">短信详情({{ total }})</div>
      <div class="leftvlue-bg">
        <el-row :gutter="20">
          <!--用户数据-->
@@ -55,7 +60,7 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="创建时间">
              <el-form-item label="上传日期">
                <el-date-picker
                  v-model="dateRange"
                  style="width: 240px"
@@ -148,63 +153,84 @@
                prop="userId"
              />
              <el-table-column
                label="主旨"
                label="手机号码"
                align="center"
                key="userName"
                prop="userName"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="问题文本"
                label="类型"
                align="center"
                key="nickName"
                prop="nickName"
                width="400"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="问题语音"
                label="发送人"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                width="400"
                key="transmitleg"
                prop="transmitleg"
              /><el-table-column
                label="关联指标"
                label="接收人"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="指标选项"
                label="上传时间"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="语言"
                align="center"
                key="indicator"
                prop="indicator"
                width="120"
              />
              <el-table-column label="是否启用" align="center" key="status">
                prop="createTime"
                width="160"
              >
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                </template> </el-table-column
              ><el-table-column
                label="发送时间"
                align="center"
                prop="createTime"
                width="160"
              >
                <template slot-scope="scope">
                  <span>{{ parseTime(scope.row.createTime) }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="发送内容"
                align="center"
                key="sendvalue"
                prop="sendvalue"
                width="300"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="发送状态"
                align="center"
                key="state"
                prop="state"
              >
                <template slot-scope="scope">
                  <div
                    v-if="scope.row.state == 1"
                    style="color: rgb(58, 250, 144)"
                  >
                    <i class="el-icon-check"></i>
                  </div>
                  <div
                    v-else-if="scope.row.state == 2"
                    style="color: rgb(250, 96, 58)"
                  >
                    <i class="el-icon-check"></i>
                  </div>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                align="center"
                width="200"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
@@ -214,25 +240,7 @@
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-edit-outline"></i>修改</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="compileUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-bji"
                      ><i class="el-icon-edit"></i>编辑短信</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-textsc"
                      ><i class="el-icon-delete-solid"></i>删除</span
                      ><i class="el-icon-edit-outline"></i>再次发送</span
                    ></el-button
                  >
                </template>
@@ -466,7 +474,6 @@
  components: { Treeselect },
  data() {
    return {
      topactiveName: "Local", //顶部选择
      // é®ç½©å±‚
      loading: false,
      // é€‰ä¸­æ•°ç»„
@@ -479,6 +486,7 @@
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      classestag: 1, //类别标识
      namequestionnaire: "",
      haoquestionnaire: "",
      idds: "",
@@ -643,68 +651,8 @@
        console.log(this.userList);
      });
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    deletefenlei(row) {
      if (this.deleteVisible) {
        // deletetagcategory(this.idds).then((response) => {
        //   console.log(response);
        //   this.gitclasify();
        // });
        this.deleteVisible = false;
        this.idds = "";
      } else {
        this.deleteVisible = true;
        this.idds = row.tagcategoryid;
        this.deletefenl = row.title;
      }
    },
    compileUpdate(row) {
      this.$router.push({
        path: "/repositoryai/verbaltrick/particulars/",
        query: { id: "1" },
      });
    },
    // é¢˜ç›®çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "启用" : "停用";
      this.$modal
        .confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
        .then(function () {
          return changeUserStatus(row.userId, row.status);
        })
        .then(() => {
          this.$modal.msgSuccess(text + "成功");
        })
        .catch(function () {
          row.status = row.status === "0" ? "1" : "0";
        });
    },
    //搜索类别
    sidecolumnss() {},
    submitsidecolumn() {},
    deletefenlei() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    // åˆ‡æ¢å…±äº«/本地
@@ -754,9 +702,7 @@
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.title = "新增短信";
      this.indexopen = true;
      this.$router.push("/shortmessage/messagebank/compile/");
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
@@ -805,6 +751,22 @@
        })
        .catch(() => {});
    },
    // åˆ‡æ¢å…¨éƒ¨ç±»åˆ«
    completefn() {
      this.classestag = 1;
    },
    // åˆ‡æ¢æˆåŠŸç±»åˆ«
    succeedfn() {
      this.classestag = 2;
    },
    // åˆ‡æ¢å¤±è´¥ç±»åˆ«
    losefn() {
      this.classestag = 3;
    },
    // åˆ‡æ¢å¾…发送类别
    awaitfn() {
      this.classestag = 4;
    },
  },
};
</script>
@@ -814,60 +776,94 @@
  display: flex;
}
.sidecolumn {
  width: 300px;
  width: 350px;
  min-height: 100vh;
  text-align: center;
  //   display: flex;
  margin-top: 20px;
  margin: 20px;
  padding: 30px;
  background: #edf1f7;
  padding: 10px;
  padding-top: 20px;
  text-align: center;
  background: #dfeffd;
  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);
  .sidecolumn-top {
    display: flex;
    justify-content: space-between;
    .top-wj {
      font-size: 20px;
  .notebuttom {
    height: 35px;
    background: #85c046;
    color: #ffff;
    font-size: 20px;
    line-height: 35px;
    cursor: pointer;
    border-radius: 3px;
  }
  .notestate {
    font-size: 20px;
    .state-text {
      height: 40px;
    }
    .top-tj {
      font-size: 18px;
      color: rgb(0, 89, 255);
    .state-line {
      display: flex;
      height: 40px;
      align-items: center;
      padding: 10px 10px;
      cursor: pointer;
      justify-content: space-between;
    }
  }
  .center-ss {
    margin-top: 30px;
    .input-with-select {
      height: 40px !important;
    .state-lines {
      display: flex;
      height: 40px;
      align-items: center;
      padding: 10px 10px;
      background: #88abfc;
      cursor: pointer;
      justify-content: space-between;
    }
  }
  .bottom-fl {
    margin-top: 30px;
    display: center !important;
    .state-line:hover {
      background: #88abfc;
    }
    .quantityq {
      height: 30px;
      line-height: 30px;
      padding: 0 5px;
      border-radius: 10px;
      color: #fff;
      background: #9eb8ff;
    }
    .quantitycg {
      height: 30px;
      line-height: 30px;
      padding: 0 5px;
      border-radius: 10px;
      color: #fff;
      background: #48cf2d;
    }
    .quantitysb {
      height: 30px;
      line-height: 30px;
      padding: 0 5px;
      border-radius: 10px;
      color: #fff;
      background: #ce513b;
    }
    .quantityd {
      height: 30px;
      line-height: 30px;
      padding: 0 5px;
      border-radius: 10px;
      color: #fff;
      background: #3fbff1;
    }
  }
}
.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);
  .qrcode-text {
    font-size: 20px;
    span {
      margin-left: 20px;
    }
  }
  .qrcode-img {
    width: 300px;
    height: 400px;
  }
[class^="el-icon-"],
[class*=" el-icon-"] {
  font-weight: 600;
  font-size: 20px;
}
.tsgname {
  width: 90px;
vue.config.js
@@ -129,7 +129,7 @@
          config.optimization.runtimeChunk('single'),
          {
             from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
             to: './' //到根目录下
             to: '/' //到根目录下
          }
        }
      )