yxh
2023-06-29 0243fa63313ebf928894a86a8b4e465465c42ecf
Merge branch 'wulong' of http://116.62.18.175:6699/r/~yxh/smartor-web into yxh01
已添加5个文件
已修改9个文件
2893 ■■■■ 文件已修改
package.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/element-variables.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/variables.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/cm-setting.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Intelligentcenter/centercontrol/index.vue 249 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/previews.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 303 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/index.vue 1174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/particulars/index.vue 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/index.vue 428 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -39,6 +39,7 @@
    "@riophae/vue-treeselect": "0.4.0",
    "axios": "0.24.0",
    "clipboard": "2.0.8",
    "codemirror": "^5.65.13",
    "core-js": "^3.25.3",
    "cos-js-sdk-v5": "^1.4.18",
    "dayjs": "^1.11.7",
@@ -60,6 +61,7 @@
    "sortablejs": "1.10.2",
    "vue": "2.6.12",
    "vue-cli": "^2.9.6",
    "vue-codemirror": "^4.0.6",
    "vue-count-to": "1.0.13",
    "vue-cropper": "0.5.5",
    "vue-meta": "2.4.0",
src/assets/styles/element-variables.scss
@@ -4,7 +4,7 @@
**/
/* theme color */
$--color-primary: #3a80c2;
$--color-primary: #3ba2f7;
$--color-success: #13ce66;
$--color-warning: #ffba00;
$--color-danger: #ff4949;
src/assets/styles/variables.scss
@@ -13,7 +13,7 @@
// é»˜è®¤èœå•主题风格
$base-menu-color:#f7f8f8;
$base-menu-color-active:#f4f4f5;
$base-menu-background:transparent;
$base-menu-background:#5788fe;
$base-logo-title-color: #ffffff;
$base-menu-light-color:rgba(0,0,0,.70);
src/main.js
@@ -20,7 +20,14 @@
 import 'quill/dist/quill.core.css'
 import 'quill/dist/quill.snow.css'
 import 'quill/dist/quill.bubble.css'
 Vue.use(VueQuillEditor)
 Vue.use(VueQuillEditor);
 // å¼•å…¥
import { codemirror } from "vue-codemirror";
import "@/utils/cm-setting.js";
Vue.component("codemirror", codemirror);
//  import VueCodeMirror from 'vue-codemirror'
//  import 'vue-codemirror/dist/codemirror.css'
//  Vue.use(VueCodeMirror)
 //实现quill-editor编辑器拖拽上传图片
//  import Quill from 'quill'
src/router/index.js
@@ -47,6 +47,11 @@
    hidden: true
  },
  {
    path: '/previews',
    component: () => import('@/views/previews'),
    hidden: true
  },
  {
    path: '/register',
    component: () => import('@/views/register'),
    hidden: true
src/utils/cm-setting.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
// cm-setting.js
// ç»„件样式
import "codemirror/lib/codemirror.css";
// ä¸»é¢˜
import "codemirror/theme/3024-day.css"; // å¼•入主题样式,根据设置的theme的主题引入
import "codemirror/theme/ayu-mirage.css";
import "codemirror/theme/monokai.css";
import 'codemirror/theme/rubyblue.css'
// html代码高亮
import "codemirror/mode/htmlmixed/htmlmixed.js";
// è¯­è¨€æ¨¡å¼
import 'codemirror/mode/javascript/javascript.js'
src/views/Intelligentcenter/centercontrol/index.vue
@@ -7,6 +7,7 @@
        class="el-menu-vertical-demo"
        @open="handleOpen"
        @close="handleClose"
        @select="handleSelect"
        background-color="#545c64"
        text-color="#fff"
        active-text-color="#ffd04b"
@@ -14,33 +15,46 @@
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>导航一</span>
            <span>患者管理</span>
          </template>
          <el-menu-item-group>
            <template slot="title">分组一</template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
          </el-menu-item-group>
          <el-menu-item-group title="分组2">
            <el-menu-item index="1-3">选项3</el-menu-item>
          </el-menu-item-group>
          <el-submenu index="1-4">
          <!-- <el-submenu index="1-4">
            <template slot="title">选项4</template>
            <el-menu-item index="1-4-1">选项1</el-menu-item>
          </el-submenu>
          </el-submenu> -->
        </el-submenu>
        <el-menu-item index="2">
          <i class="el-icon-menu"></i>
          <span slot="title">导航二</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
          <i class="el-icon-document"></i>
          <span slot="title">导航三</span>
        </el-menu-item>
        <el-menu-item index="4">
          <i class="el-icon-setting"></i>
          <span slot="title">导航四</span>
        </el-menu-item>
        <el-submenu index="2">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>知识库</span>
          </template>
          <el-menu-item-group>
            <el-menu-item index="2-1">宣教管理</el-menu-item>
            <el-menu-item index="2-2">问卷管理</el-menu-item>
            <el-menu-item index="2-3">题库管理</el-menu-item>
          </el-menu-item-group>
          <!-- <el-submenu index="1-4">
            <template slot="title">选项4</template>
            <el-menu-item index="1-4-1">选项1</el-menu-item>
          </el-submenu> -->
        </el-submenu>
        <el-submenu index="3">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>患者管理</span>
          </template>
          <el-menu-item-group>
            <el-menu-item index="3-1">话术库</el-menu-item>
            <el-menu-item index="3-2">意图管理</el-menu-item>
            <el-menu-item index="3-3">模版库</el-menu-item>
          </el-menu-item-group>
          <!-- <el-submenu index="1-4">
            <template slot="title">选项4</template>
            <el-menu-item index="1-4-1">选项1</el-menu-item>
          </el-submenu> -->
        </el-submenu>
      </el-menu>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -58,7 +72,36 @@
            :label="item.title"
            :name="item.name"
          >
            {{ item.content }}
            <!-- {{ item.content }} -->
            <div class="leftvalu-code" v-if="editableTabs.length">
              <el-tabs
                v-model="fiactiveName"
                type="card"
                @tab-click="handleClick"
              >
                <el-tab-pane
                  v-if="item.content == 0 || item.content == 3"
                  label="代码展示"
                  name="first"
                  ><codemirror
                    v-model="item.value"
                    :options="options"
                  ></codemirror
                ></el-tab-pane>
                <el-tab-pane
                  v-if="item.content == 1 || item.content == 3"
                  label="表格展示"
                  name="second"
                  ><el-table :data="tableData" style="width: 100%">
                    <el-table-column prop="date" label="日期" width="180">
                    </el-table-column>
                    <el-table-column prop="name" label="姓名" width="180">
                    </el-table-column>
                    <el-table-column prop="address" label="地址">
                    </el-table-column> </el-table
                ></el-tab-pane>
              </el-tabs>
            </div>
          </el-tab-pane>
        </el-tabs>
      </div>
@@ -67,24 +110,135 @@
</template>
<script>
// import { codemirror } from "vue-codemirror";
export default {
  name: "education",
  data() {
    return {
      editableTabsValue: "2",
      editableTabs: [
      code: "",
      fiactiveName: "first",
      options: {
        line: true,
        theme: "rubyblue", // ä¸»é¢˜
        tabSize: 4, // åˆ¶è¡¨ç¬¦çš„宽度
        indentUnit: 2, // ä¸€ä¸ªå—应该缩进多少个空格(无论这在编辑语言中意味着什么)。默认值为 2。
        firstLineNumber: 1, // ä»Žå“ªä¸ªæ•°å­—开始计算行数。默认值为 1。
        readOnly: false, // åªè¯»
        autorefresh: true,
        smartIndent: true, // ä¸Šä¸‹æ–‡ç¼©è¿›
        lineNumbers: true, // æ˜¯å¦æ˜¾ç¤ºè¡Œå·
        styleActiveLine: true, // é«˜äº®é€‰ä¸­è¡Œ
        viewportMargin: Infinity, //处理高度自适应时搭配使用
        showCursorWhenSelecting: true, // å½“选择处于活动状态时是否应绘制游标
        mode: "javascript",
      },
      tableData: [
        {
          title: "Tab 1",
          name: "1",
          content: "Tab 1 content",
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 å¼„",
        },
        {
          title: "Tab 2",
          name: "2",
          content: "Tab 2 content",
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 å¼„",
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 å¼„",
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 å¼„",
        },
      ],
      editableTabsValue: "2-2-3",
      editableTabslist: [
        {
          title: "患者管理",
          name: "1-1",
          content: 0,
          value: "<el-tab-pane>",
        },
        {
          title: "宣教管理",
          name: "2-1",
          content: 1,
          value:
            "<el-table-column prop='address' label='地址'></el-table-column>",
        },
        {
          title: "问卷管理",
          name: "2-2",
          content: 3,
          value:
            "<el-table-column prop='address' label='地址'></el-table-column>",
        },
        {
          title: "题库管理",
          name: "2-3",
          content: "",
        },
        {
          title: "话术库",
          name: "3-1",
          content: "",
        },
        {
          title: "意图管理",
          name: "3-2",
          content: "",
        },
        {
          title: "模板库",
          name: "3-3",
          content: "",
        },
      ],
      // éœ€è¦çš„æ ‘的格式
      editableTabslisat: [
        {
          title: "患者管理",
          name: "1",
          son: [
            {
              title: "患者管理",
              name: "1-1",
              content: "",
            },
          ],
        },
        {
          title: "知识库",
          name: "2",
          son: [
            {
              title: "宣教管理",
              name: "2-1",
              content: "",
            },
            {
              title: "问卷管理",
              name: "2-2",
              content: "",
            },
            {
              title: "题库管理",
              name: "2-3",
              content: "",
              son: [
                { title: "政策管理", name: "2-3-1", content: "" },
                { title: "治安管理", name: "2-3-2", content: "" },
              ],
            },
          ],
        },
      ],
      editableTabs: [],
      tabIndex: 2,
    };
  },
@@ -96,15 +250,26 @@
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath, "ss");
      var result = this.editableTabslist.find((v) => {
        return v.name === key; // return v.value ===  '9'  è¿”回undefined
      });
      var results = this.editableTabs.some(function (item) {
        if (item.name == key) {
          //item.name == "王麻子"
          return true; //返回false
        }
      });
      if (!results) {
        this.editableTabs.push(result);
      }
      this.editableTabsValue = key;
      console.log(result);
    },
    handleTabsEdit(targetName, action) {
      if (action === "add") {
        let newTabName = ++this.tabIndex + "";
        this.editableTabs.push({
          title: "New Tab",
          name: newTabName,
          content: "New Tab content",
        });
        this.editableTabsValue = newTabName;
      }
      if (action === "remove") {
        let tabs = this.editableTabs;
@@ -131,6 +296,17 @@
<style lang="scss" scoped>
.educationmanagement {
  display: flex;
}
.leftvalu-code {
  // background: #3a3d42;
  height: 300px;
  ::v-deep.CodeMirror {
    position: relative;
    overflow: hidden;
    // background: #3a3d42;
    color: #3a92ef;
    font-size: 20px;
  }
}
.sidecolumn {
  width: 300px;
@@ -168,6 +344,7 @@
    display: center !important;
  }
}
.qrcode-dialo {
  text-align: center;
  //   display: flex;
src/views/previews.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
<template>
  <div>二维码内容预览</div>
</template>
<script>
export default {
  name: "RuoyiUiPreviews",
  data() {
    return {};
  },
  mounted() {},
  methods: {},
};
</script>
<style lang="scss" scoped></style>
src/views/repositoryai/intention/index.vue
@@ -3,7 +3,7 @@
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">意图类型</div>
        <div class="top-wj">指标类型</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
      </div>
      <div class="center-ss">
@@ -56,10 +56,10 @@
      <div class="leftvlue-top">
        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
          <el-tab-pane name="Local">
            <span class="mulsz" slot="label">本地意图库 </span>
            <span class="mulsz" slot="label">普通指标库 </span>
          </el-tab-pane>
          <el-tab-pane name="sharing">
            <span class="mulsz" slot="label">共享意图库 </span>
            <span class="mulsz" slot="label">特定指标库 </span>
          </el-tab-pane>
        </el-tabs>
      </div>
@@ -75,7 +75,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="意图名称" prop="userName">
              <el-form-item label="指标种类" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
@@ -84,13 +84,36 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用疾病" prop="status">
                <el-cascader
                  v-model="queryParams.status"
                  :options="optionss"
                  :props="propss"
              <el-form-item label="指标值" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
                  clearable
                ></el-cascader>
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="语言" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="是否启用" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item>
@@ -158,7 +181,7 @@
                v-if="columns[0].visible"
              />
              <el-table-column
                label="意图名称"
                label="指标种类"
                align="center"
                key="userName"
                prop="userName"
@@ -166,7 +189,7 @@
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="版本"
                label="指标值"
                align="center"
                key="nickName"
                prop="nickName"
@@ -175,14 +198,14 @@
              />
              <el-table-column
                label="适用疾病"
                label="指标规则"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                v-if="columns[4].visible"
                width="120"
                width="400"
              /><el-table-column
                label="意图描述"
                label="指标类型"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
@@ -190,40 +213,31 @@
                width="120"
              />
              <el-table-column
                label="最近编辑"
                label="语言"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                v-if="columns[4].visible"
                width="120"
              />
              <el-table-column label="是否启用" align="center" key="status">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                align="center"
                width="300"
                width="200"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="goQRCode(scope.row)"
                    v-hasPermi="['system:user:edit']"
                  >
                    <span class="button-text"
                      ><i class="el-icon-edit"></i>二维码</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="ViewQuestionnaire(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textck"
                      ><i class="el-icon-edit"></i>查看</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
@@ -256,87 +270,89 @@
          </el-col>
        </el-row>
        <!-- æ·»åŠ æˆ–ä¿®æ”¹æ„å›¾é…ç½®å¯¹è¯æ¡† -->
        <!-- æ·»åŠ æˆ–ä¿®æ”¹æŒ‡æ ‡é…ç½®å¯¹è¯æ¡† -->
        <el-dialog
          :title="title"
          :visible.sync="open"
          :visible.sync="indexopen"
          width="900px"
          append-to-body
        >
          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
          <el-form
            ref="form"
            :model="indexform"
            :rules="rules"
            label-width="100px"
          >
            <el-row>
              <el-col :span="12">
                <el-form-item label="姓名" prop="nickName">
                  <el-input
                    v-model="form.nickName"
                    placeholder="请输入姓名"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="性别" prop="deptId">
                  <el-select v-model="form.sex" placeholder="请选择性别">
              <el-col :span="24">
                <el-form-item label="语言" prop="deptId">
                  <el-select
                    v-model="indexform.language"
                    placeholder="请选择语言"
                  >
                    <el-option
                      v-for="dict in dict.type.sys_user_sex"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="证件类型" prop="phonenumber">
              <el-col :span="24">
                <el-form-item label="指标种类" prop="nickName">
                  <el-input
                    v-model="form.phonenumber"
                    placeholder="请选择证件类型"
                    maxlength="11"
                    v-model="indexform.nickName"
                    placeholder="请输入指标种类"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="证件号" prop="email">
                  <el-input
                    v-model="form.email"
                    placeholder="请输入证件号"
                    maxlength="50"
                  />
                </el-form-item>
              </el-col>
            </el-row>
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="本人手机号" prop="userName">
              <el-col :span="24">
                <el-form-item label="招标类型">
                  <el-radio-group v-model="indexform.resource">
                    <el-radio label="选项"></el-radio>
                    <el-radio label="文本"></el-radio>
                    <el-radio label="数值"></el-radio>
                  </el-radio-group>
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="指标值" prop="userName">
                  <el-input
                    v-model="form.userName"
                    v-model="indexform.userName"
                    placeholder="请输入手机号"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="亲属手机号" prop="password">
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="指标规则" prop="email">
                  <el-input
                    v-model="form.password"
                    placeholder="请输入亲属手机号"
                    type="password"
                    maxlength="20"
                    show-password
                  />
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="患者标签">
                  <el-cascader
                    :options="optionss"
                    :props="propss"
                    clearable
                  ></el-cascader>
              <el-col :span="24">
                <el-form-item label="是否启用">
                  <el-radio-group v-model="indexform.qystatus">
                    <el-radio
                      v-for="item in qyoptions"
                      :key="item.value"
                      :label="item.value"
                      >{{ item.label }}</el-radio
                    >
                  </el-radio-group>
                </el-form-item>
              </el-col>
            </el-row>
@@ -345,7 +361,7 @@
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="form.remark"
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
@@ -395,15 +411,6 @@
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- äºŒç»´ç å±•示弹框 -->
    <el-dialog width="30%" :visible.sync="goQRCodeVisible">
      <div class="qrcode-dialo">
        <div class="qrcode-text">
          {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span>
        </div>
        <div class="qrcode-img"></div>
      </div>
    </el-dialog>
  </div>
</template>
@@ -451,11 +458,12 @@
      userList: [
        {
          userid: 1,
          userName: "三号意图",
          nickName: "1.2.4",
          aphonenumber: "关节炎症",
          bphonenumber: "很棒",
          cphonenumber: "2022-12-12 ",
          userName: "血常规、尿常规",
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
          status: "0",
        },
      ],
      // å¼¹å‡ºå±‚标题
@@ -468,53 +476,59 @@
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      // è¡¨å•参数
      form: {},
      // æ·»åŠ ã€ä¿®æ”¹å‚æ•°
      indexform: {},
      numberlb: 22,
      numberlbs: 2,
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      goQRCodeVisible: false, //二维码弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      propss: { multiple: true },
      optionss: [
      languagelist: [
        {
          value: 1,
          label: "东南",
          label: "普通话",
        },
        {
          value: 2,
          label: "西北",
          label: "粤语",
        },
        {
          value: 3,
          label: "仨仨仨",
          label: "英语",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "启用",
        },
        {
          value: 4,
          label: "六飒飒飒",
          value: 2,
          label: "关闭",
        },
      ],
      //类别列表
      editableTabs: [
        {
          title: "意图分类一",
          title: "指标分类一",
          number: "1",
        },
        {
          title: "意图分类二",
          title: "指标分类二",
          number: "2",
        },
        {
          title: "意图分类三",
          title: "指标分类三",
          number: "2",
        },
        {
          title: "意图分类四",
          title: "指标分类四",
          number: "2",
        },
        {
          title: "意图分类五",
          title: "指标分类五",
          number: "2",
        },
      ],
@@ -639,20 +653,31 @@
        this.deletefenl = row.title;
      }
    },
    // é¢˜ç›®çŠ¶æ€ä¿®æ”¹
    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() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.open = false;
      this.indexopen = false;
      this.reset();
    },
    goQRCode(row) {
      this.goQRCodeVisible = true;
      this.namequestionnaire = row.userName;
      this.haoquestionnaire = row.nickName;
    },
    // è¡¨å•重置
    reset() {
      this.form = {
@@ -692,23 +717,15 @@
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
      });
      this.reset();
      this.title = "新增指标";
      this.indexopen = true;
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
        query: { id: "1" },
      });
    },
    // æŸ¥çœ‹æ„å›¾
    ViewQuestionnaire() {
      this.$router.push({
        path: "/knowledge/questionnaire/examine/",
        query: { id: "1" },
      });
      this.reset();
      this.title = "修改指标";
      this.indexopen = true;
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
@@ -724,13 +741,13 @@
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.indexopen = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.indexopen = false;
              this.getList();
            });
          }
src/views/repositoryai/templateku/configurat/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,350 @@
<template>
  <div class="stencils">
    <!-- ä¸Šéƒ¨ -->
    <div class="stencils-top">
      <div class="basic">待选问题</div>
      <div class="top-menu">
        <div class="search-box">
          <el-form :inline="true" :model="formInline" class="demo-form-inline">
            <el-form-item label="语言" prop="status">
              <el-select v-model="formInline.status" placeholder="请选择">
                <el-option
                  v-for="item in languagelist"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="问题主旨">
              <el-input
                v-model="formInline.user"
                placeholder="问题主旨"
              ></el-input>
            </el-form-item>
            <el-form-item label="关联指标">
              <el-input
                v-model="formInline.user"
                placeholder="关联指标"
              ></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" @click="onSubmit"
                >搜索</el-button
              >
            </el-form-item>
          </el-form>
        </div>
        <div
          style="
            height: 300px;
            border: 0.5px solid #aeafb1;
            overflow-x: hidden;
            overflow-y: scroll;
          "
        >
          <div class="menu-list" v-for="item in 13">
            <div>用药是否规范</div>
            <div class="menu-icon" @click="menudeletei(index)">
              <i class="el-icon-plus" />
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- ä¸‹éƒ¨ -->
    <div class="stencils-bottom">
      <div class="issue">
        <div class="basics">已选择问题</div>
        <div style="margin: 10px; font-size: 20px">体检通知</div>
        <div
          style="
            height: 350px;
            margin: 10px;
            border: 0.5px solid #aeafb1;
            overflow-x: hidden;
            overflow-y: scroll;
          "
        >
          <div class="menu-list" v-for="item in 13">
            <div>用药是否规范</div>
            <div class="menu-icons" @click="menudeletei(index)">
              <i class="el-icon-delete" />
            </div>
          </div>
        </div>
        <div class="issue-button">
          <el-button type="primary" icon="el-icon-circle-plus-outline"
            >关系图</el-button
          >
          <el-button type="primary" icon="el-icon-s-claim">保存</el-button>
        </div>
      </div>
      <div class="particulars">
        <div class="headline">
          <div class="basics">问题配置</div>
          <div class="headbottom">
            <el-button
              type="primary"
              icon="el-icon-circle-plus-outline"
              @click="addzbiao"
              >添加指标</el-button
            >
            <el-button type="primary" icon="el-icon-s-claim">保存</el-button>
          </div>
        </div>
        <div
          class="valuetop"
          v-for="(item, index) in deployList"
          :key="item.id"
        >
          <div class="val-text">
            <div>
              æœ‰æ— å¤æŸ¥ <span>{{ item.name }}</span>
            </div>
            <div class="text-icon" @click="deletei(index)">
              <i class="el-icon-delete" />
            </div>
          </div>
          <div class="val-bon">
            <el-form ref="form" :model="item" label-width="90px">
              <el-form-item label="节点ID">
                <el-input v-model="item.id"></el-input>
              </el-form-item>
              <el-form-item label="节点描述">
                <el-input v-model="item.name"></el-input>
              </el-form-item>
              <el-form-item label="文本提示">
                <el-input type="textarea" v-model="item.valuetop"></el-input>
              </el-form-item>
              <el-form-item label="语音地址">
                <el-input v-model="item.name"></el-input>
              </el-form-item>
              <el-form-item label="跳转问题号">
                <el-input v-model="item.name"></el-input>
              </el-form-item>
              <el-form-item label="播报类型">
                <el-radio-group v-model="item.resource">
                  <el-radio label="混合优先"></el-radio>
                  <el-radio label="文字优先"></el-radio>
                </el-radio-group>
              </el-form-item>
              <el-form-item label="指标类型">
                <el-radio-group v-model="item.resource">
                  <el-radio label="选项"></el-radio>
                  <el-radio label="文本"></el-radio>
                  <el-radio label="数组"></el-radio>
                </el-radio-group>
              </el-form-item>
              <el-form-item label="指标名称">
                <el-input v-model="item.name"></el-input>
              </el-form-item>
              <el-form-item label="指标值">
                <el-input v-model="item.name"></el-input>
              </el-form-item>
              <el-form-item label="适用规则">
                <el-radio-group v-model="item.resources">
                  <el-radio label="基础"></el-radio>
                  <el-radio label="自定义"></el-radio>
                </el-radio-group>
              </el-form-item>
              <el-form-item
                label="自定义规则"
                v-if="item.resources == '自定义'"
              >
                <el-input type="textarea" v-model="item.valuetop"></el-input>
              </el-form-item>
            </el-form>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      deployList: [
        {
          id: 1,
          name: "有",
          valuetop:
            "(?!.*忘|.*不|.*没)^.*(是|有|对|做|作|检|查|复诊|好|参加|复诊|去(过|好|了|完|医院)|来(过|了|医院))|没错|对呀|可能|(已经|早)去了|开了药|腰带|吊带|要的|(?<!没)有的|表带,10;要,5",
        },
        {
          id: 2,
          name: "不知道",
          valuetop:
            "(不|没|谁|鬼|怎么).*(病|可能|知道|了解|清楚|懂|明白|确认|确定|晓得|知晓|认得|识得|印象|熟悉|è®°|会|关心|关注|注意|告诉|通知|听)",
        },
      ],
      languagelist: [
        {
          value: 1,
          label: "普通话",
        },
        {
          value: 2,
          label: "粤语",
        },
        {
          value: 3,
          label: "英语",
        },
      ], //语言列表
      formInline: {
        user: "",
        region: "",
      },
    };
  },
  created() {},
  methods: {
    deletei(index) {
      console.log(index);
      this.deployList.splice(index, 1);
    },
    addzbiao() {
      const ids = this.deployList.length + 1;
      console.log(ids);
      this.deployList.push({
        id: ids,
        name: "",
        valuetop: "",
      });
    },
    onSubmit() {
      console.log("submit!");
    },
  },
};
</script>
<style lang="scss" scoped>
.stencils-top {
  .basic {
    height: 50px;
    margin: 15px;
    margin-bottom: 0;
    padding: 0 20px 20px 20px;
    line-height: 50px;
    background: #92c5f0;
    justify-content: space-between;
  }
  .top-menu {
    margin: 15px;
    margin-top: 0;
    height: 400px;
    padding: 10px 30px 10px 30px;
    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);
    .menu-list {
      display: flex;
      justify-content: space-between;
      padding: 5px;
      border-bottom: 0.5px solid #bfc0c2;
    }
  }
}
.stencils-bottom {
  display: flex;
  justify-content: space-between;
  .issue {
    width: 37%;
    margin-left: 15px;
    height: 500px;
    background: #f2f5fc;
    .menu-list {
      display: flex;
      justify-content: space-between;
      padding: 5px;
      border-bottom: 0.5px solid #bfc0c2;
    }
    .basics {
      height: 50px;
      padding-left: 20px;
      line-height: 50px;
      background: #92c5f0;
      justify-content: space-between;
    }
  }
  .issue-button {
    margin: 10px;
    text-align: right;
  }
  .particulars {
    width: 59%;
    margin-right: 15px;
    background: #f2f5fc;
    .headline {
      display: flex;
      height: 50px;
      padding: 0 20px 20px 20px;
      line-height: 50px;
      background: #92c5f0;
      justify-content: space-between;
    }
    .valuetop {
      .val-text {
        display: flex;
        height: 50px;
        margin: 15px;
        margin-bottom: 0;
        // padding: 0 20px 20px 20px;
        padding: 0 20px;
        align-items: center;
        background: #92c5f0;
        justify-content: space-between;
        .text-icon {
          width: 35px;
          height: 35px;
          line-height: 35px;
          text-align: center;
          background: #fafafa;
          cursor: pointer;
          border-radius: 5px;
        }
      }
      .val-bon {
        margin: 15px;
        margin-top: 0;
        padding: 30px;
        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);
      }
    }
  }
}
.menu-icon {
  cursor: pointer;
  width: 20px;
  height: 20px;
  line-height: 20px;
  text-align: center;
  margin-right: 10px;
  background: #78baf0;
  color: #fff;
  border-radius: 2px;
}
.menu-icons {
  cursor: pointer;
  width: 20px;
  height: 20px;
  line-height: 20px;
  text-align: center;
  margin-right: 10px;
  background: #f7603a;
  color: #fff;
  border-radius: 2px;
}
</style>
src/views/repositoryai/templateku/index.vue
@@ -1,17 +1,1181 @@
<template>
  <div>随访模版</div>
  <div class="Questionnairemanagement">
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn" v-show="topactiveName == 'Local'">
      <div class="sidecolumn-top">
        <div class="top-wj">模版类型</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
      </div>
      <div class="center-ss">
        <el-input
          placeholder="请输入内容"
          v-model="sidecolumnval"
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-tabs tab-position="right">
          <el-tab-pane :label="`全部 (${numberlb})`"></el-tab-pane>
          <el-tab-pane
            class="tab-paness"
            :key="item.title"
            v-for="(item, index) in editableTabs"
          >
            <span slot="label">
              {{
                item.title + " (" + item.number + ")"
              }}&nbsp&nbsp&nbsp<el-popover
                placement="top-start"
                width="100"
                trigger="hover"
              >
                <div style="text-align: center">
                  <el-button type="text" @click="popoveramend(item)"
                    >修改</el-button
                  ><el-button type="text" @click="deletefenlei(item)"
                    ><span style="color: rgb(173, 55, 55)"
                      >删除</span
                    ></el-button
                  >
                </div>
                <i slot="reference" class="el-icon-share"></i> </el-popover
            ></span>
          </el-tab-pane>
        </el-tabs>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
    <div :class="topactiveName == 'Local' ? 'leftvlue' : 'leftvlues'">
      <div class="leftvlue-top">
        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
          <el-tab-pane name="Local">
            <span class="mulsz" slot="label">普通模版库 </span>
          </el-tab-pane>
          <el-tab-pane name="sharing">
            <span class="mulsz" slot="label">通用模版库 </span>
          </el-tab-pane>
        </el-tabs>
      </div>
      <div class="leftvlue-bg">
        <el-row :gutter="20">
          <!--用户数据-->
          <el-col :span="24" :xs="24">
            <el-form
              :model="queryParams"
              ref="queryForm"
              size="small"
              :inline="true"
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="模版名称" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
                  clearable
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="语言" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="是否启用" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in qyoptions"
                    :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-row :gutter="10" class="mb8">
              <el-col :span="1.5">
                <el-button
                  type="primary"
                  plain
                  icon="el-icon-plus"
                  size="medium"
                  @click="handleAdd"
                  v-hasPermi="['system:user:add']"
                  >新增</el-button
                >
              </el-col>
              <el-col :span="1.5">
                <el-button
                  type="danger"
                  plain
                  icon="el-icon-delete"
                  size="medium"
                  :disabled="multiple"
                  @click="handleDelete"
                  v-hasPermi="['system:user:remove']"
                  >删除</el-button
                >
              </el-col>
              <!-- <el-col :span="1.5"> </el-col> -->
            </el-row>
            <!-- æ ‡å‡†æ¨¡ç‰ˆ -->
            <el-table
              v-if="topactiveName == 'Local'"
              v-loading="loading"
              :data="userList"
              :border="true"
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
              />
              <el-table-column
                label="模版名称"
                align="center"
                key="userName"
                prop="userName"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="静默时间"
                align="center"
                key="nickName"
                prop="nickName"
                width="400"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="无声重复次数"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                width="400"
              /><el-table-column
                label="无声匹配重复次数"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="通用库"
                align="center"
                key="bphonenumbear"
                prop="bphonenumbear"
                width="120"
              />
              <el-table-column
                label="语言"
                align="center"
                key="indicator"
                prop="indicator"
                width="120"
              />
              <el-table-column label="是否启用" align="center" key="status">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                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-textxg"
                      ><i class="el-icon-edit-outline"></i>修改</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="compileUpdate(scope.row)"
                    ><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
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class=".button-xiazai"
                      ><i class="el-icon-s-management"></i>复制模版</span
                    ></el-button
                  >
                </template>
              </el-table-column>
            </el-table>
            <!-- é€šç”¨æ¨¡ç‰ˆ -->
            <el-table
              v-else
              v-loading="loading"
              :data="userList"
              :border="true"
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
              />
              <el-table-column
                label="通用模版名称"
                align="center"
                key="userName"
                prop="userName"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="语言"
                align="center"
                key="nickName"
                prop="nickName"
                width="400"
                :show-overflow-tooltip="true"
              />
              <el-table-column label="是否启用" align="center" key="status">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                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-textxg"
                      ><i class="el-icon-edit-outline"></i>修改</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="compileUpdate(scope.row)"
                    ><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
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="downloadfn(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-xiazai"
                      ><i class="el-icon-download"></i>下载</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="copyfn(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class=".button-xiazai"
                      ><i class="el-icon-s-management"></i>复制模版</span
                    ></el-button
                  >
                </template>
              </el-table-column>
            </el-table>
            <!-- åº•部分页 -->
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            />
          </el-col>
        </el-row>
        <!-- æ·»åŠ æˆ–ä¿®æ”¹æ ‡å‡†æ¨¡ç‰ˆå¯¹è¯æ¡† -->
        <el-dialog
          v-if="topactiveName == 'Local'"
          :title="title"
          :visible.sync="indexopen"
          width="900px"
          append-to-body
        >
          <el-form
            ref="form"
            :model="indexform"
            :rules="rules"
            label-width="110px"
          >
            <el-row>
              <el-col :span="24">
                <el-form-item label="语言" prop="deptId">
                  <el-select
                    v-model="indexform.language"
                    placeholder="请选择语言"
                  >
                    <el-option
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="模版名称" prop="nickName">
                  <el-input
                    v-model="indexform.nickName"
                    placeholder="请输入模版名称"
                    maxlength="80"
                  />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="静默时间(秒)" prop="verbaltricktext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无声重复次数" prop="verbaltrickyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无匹配重复次数" prop="matchtext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="启动任务" prop="matchyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="通用库" prop="deptId">
                  <el-select v-model="indexform.language" placeholder="请选择">
                    <el-option
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="科室" prop="deptId">
                  <el-select v-model="indexform.language" placeholder="请选择">
                    <el-option
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="诊断类型关键字" prop="librarytext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="诊断类型" prop="deptId">
                  <el-select v-model="indexform.language" placeholder="请选择">
                    <el-option
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="随访推延天数" prop="vaguetext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="模版标签信息" prop="vagueyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="播报方式">
                  <el-radio-group v-model="indexform.qystatus">
                    <el-radio
                      v-for="item in qyoptionbo"
                      :key="item.value"
                      :label="item.value"
                      >{{ item.label }}</el-radio
                    >
                  </el-radio-group>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="是否启用">
                  <el-radio-group v-model="indexform.qystatus">
                    <el-radio
                      v-for="item in qyoptions"
                      :key="item.value"
                      :label="item.value"
                      >{{ item.label }}</el-radio
                    >
                  </el-radio-group>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
            <el-button @click="cancel">取 æ¶ˆ</el-button>
          </div>
        </el-dialog>
        <!-- æ·»åŠ æˆ–ä¿®æ”¹é€šç”¨æ¨¡ç‰ˆå¯¹è¯æ¡† -->
        <el-dialog
          :title="title"
          :visible.sync="indexopenty"
          width="900px"
          append-to-body
        >
          <el-form
            ref="form"
            :model="indexform"
            :rules="rules"
            label-width="100px"
          >
            <el-row>
              <el-col :span="24">
                <el-form-item label="语言" prop="deptId">
                  <el-select
                    v-model="indexform.language"
                    placeholder="请选择语言"
                  >
                    <el-option
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="模版名称" prop="nickName">
                  <el-input
                    v-model="indexform.nickName"
                    placeholder="请输入模版主旨"
                    maxlength="80"
                  />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="是否启用">
                  <el-radio-group v-model="indexform.qystatus">
                    <el-radio
                      v-for="item in qyoptions"
                      :key="item.value"
                      :label="item.value"
                      >{{ item.label }}</el-radio
                    >
                  </el-radio-group>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
            <el-button @click="cancel">取 æ¶ˆ</el-button>
          </div>
        </el-dialog>
      </div>
    </div>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <el-dialog
      :title="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
      <el-form :model="classifyform">
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
          <el-input
            v-model="classifyform.categoryname"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
} from "@/api/system/user";
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  data() {
    return {};
    return {
      topactiveName: "Local", //顶部选择
      // é®ç½©å±‚
      loading: false,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      namequestionnaire: "",
      haoquestionnaire: "",
      idds: "",
      amendtag: false, //是否修改类别
      dialogFormVisible: false, //修改添加类别弹框
      deleteVisible: false, //分类删除弹框
      deletefenl: "高血压", //删除项
      classifyform: {
        categoryname: "",
      }, //类别表单
      // è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: 1,
          userName: "血常规、尿常规",
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
          status: "0",
        },
      ],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // å²—位选项
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      // æ·»åŠ ã€ä¿®æ”¹å‚æ•°
      indexform: {},
      numberlb: 22,
      numberlbs: 2,
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      indexopenty: false, //弹框展示否
      propss: { multiple: true },
      languagelist: [
        {
          value: 1,
          label: "普通话",
        },
        {
          value: 2,
          label: "粤语",
        },
        {
          value: 3,
          label: "英语",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "启用",
        },
        {
          value: 2,
          label: "关闭",
        },
      ],
      // æ’­æŠ¥æ–¹å¼
      qyoptionbo: [
        {
          value: 1,
          label: "语音优先",
        },
        {
          value: 2,
          label: "文字优先",
        },
      ],
      //类别列表
      editableTabs: [
        {
          title: "模版分类一",
          number: "1",
        },
        {
          title: "模版分类二",
          number: "2",
        },
        {
          title: "模版分类三",
          number: "2",
        },
        {
          title: "模版分类四",
          number: "2",
        },
        {
          title: "模版分类五",
          number: "2",
        },
      ],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      // è¡¨å•校验
      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.getList();
  },
  created() {},
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
        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;
      }
    },
    // å¤åˆ¶æ¨¡ç‰ˆ
    copyfn() {},
    // ä¸‹è½½æ¨¡ç‰ˆ
    downloadfn() {},
    // è·³è½¬ç¼–辑话术页面
    compileUpdate(row) {
      if (this.topactiveName == "Local") {
        this.$router.push({
          path: "/repositoryai/templateku/configurat/",
          query: { id: "1" },
        });
      } else {
        this.$router.push({
          path: "/repositoryai/templateku/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() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.indexopen = false;
      this.indexopenty = false;
      this.reset();
    },
  methods: {},
    // è¡¨å•重置
    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.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.queryParams.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;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.title = "新增模版";
      if (this.topactiveName == "Local") {
        this.indexopen = true;
      } else {
        this.indexopenty = true;
      }
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      this.title = "修改模版";
      if (this.topactiveName == "Local") {
        this.indexopen = true;
      } else {
        this.indexopenty = true;
      }
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    /** æ›´æ–°/修改提交按钮 */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.indexopen = false;
              this.indexopenty = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.indexopen = false;
              this.indexopenty = 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(() => {});
    },
  },
};
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.Questionnairemanagement {
  display: flex;
}
.sidecolumn {
  width: 300px;
  min-height: 100vh;
  text-align: center;
  //   display: flex;
  margin-top: 20px;
  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);
  .sidecolumn-top {
    display: flex;
    justify-content: space-between;
    .top-wj {
      font-size: 20px;
    }
    .top-tj {
      font-size: 18px;
      color: rgb(0, 89, 255);
      cursor: pointer;
    }
  }
  .center-ss {
    margin-top: 30px;
    .input-with-select {
      height: 40px !important;
    }
  }
  .bottom-fl {
    margin-top: 30px;
    display: center !important;
  }
}
.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;
  }
}
.tsgname {
  width: 90px;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #7799fa;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgname:hover {
  background: #3366f5;
}
::v-deep.el-tabs--left,
.el-tabs--right {
  overflow: hidden;
  align-items: center;
  display: flex;
}
::v-deep.el-input--medium .el-input__inner {
  height: 40px !important;
}
::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
  height: 40px;
  width: 5px;
  left: 0;
}
::v-deep.el-tabs--right .el-tabs__item.is-right {
  display: block;
  font-size: 20px;
}
.leftvlue {
  //   display: flex;
  //   flex: 1;
  width: 80%;
  margin-top: 20px;
  //   margin: 20px;
  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);
  .mulsz {
    font-size: 20px;
  }
}
.leftvlues {
  //   display: flex;
  //   flex: 1;
  width: 100%;
  margin: 20px;
  //   margin: 20px;
  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);
  .mulsz {
    font-size: 20px;
  }
}
.button-text {
  color: rgb(70, 204, 238);
}
.button-bji {
  color: rgb(39, 167, 67);
}
.button-textxg {
  color: rgb(35, 81, 233);
}
.button-textsc {
  color: rgb(235, 23, 23);
}
.button-xiazai {
  color: #0ab2c9;
}
</style>
src/views/repositoryai/templateku/particulars/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,155 @@
<template>
  <div>
    <div class="basic">基本信息</div>
    <div class="top-text">
      <div class="substance">
        <p>
          æŒ‡æ ‡é€‰é¡¹ï¼š<span>{{ optionvalue }}</span>
        </p>
      </div>
    </div>
    <div class="headline">
      <div class="basics">问题配置</div>
      <div class="headbottom">
        <el-button
          type="primary"
          icon="el-icon-circle-plus-outline"
          @click="addzbiao"
          >添加指标</el-button
        >
        <el-button type="primary" icon="el-icon-s-claim">保存</el-button>
      </div>
    </div>
    <div class="valuetop" v-for="(item, index) in deployList" :key="item.id">
      <div class="val-text">
        <div>
          <span>{{ item.name }}</span>
        </div>
        <div class="text-icon" @click="deletei(index)">
          <i class="el-icon-delete" />
        </div>
      </div>
      <div class="val-bon">
        <el-form ref="form" :model="item" label-width="90px">
          <el-form-item label="语音文本">
            <el-input v-model="item.name"></el-input>
          </el-form-item>
          <el-form-item label="语音路径">
            <el-input v-model="item.name"></el-input>
          </el-form-item>
          <el-form-item label="自定义规则">
            <el-input type="textarea" v-model="item.valuetop"></el-input>
          </el-form-item>
        </el-form>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      optionvalue: "医院普通话通用库",
      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() {
      const ids = this.deployList.length + 1;
      console.log(ids);
      this.deployList.push({
        id: ids,
        name: "",
        valuetop: "",
      });
    },
  },
};
</script>
<style lang="scss" scoped>
.top-text {
  margin: 15px;
  margin-top: 0;
  padding: 0 30px 30px 30px;
  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;
}
.valuetop {
  .val-text {
    display: flex;
    height: 50px;
    margin: 15px;
    margin-bottom: 0;
    // padding: 0 20px 20px 20px;
    padding: 0 20px;
    align-items: center;
    background: #92c5f0;
    justify-content: space-between;
    .text-icon {
      width: 35px;
      height: 35px;
      line-height: 35px;
      text-align: center;
      background: #fafafa;
      cursor: pointer;
      border-radius: 5px;
    }
  }
  .val-bon {
    margin: 15px;
    margin-top: 0;
    padding: 30px;
    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);
  }
}
</style>
src/views/repositoryai/verbaltrick/index.vue
@@ -56,10 +56,10 @@
      <div class="leftvlue-top">
        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
          <el-tab-pane name="Local">
            <span class="mulsz" slot="label">本地话术库 </span>
            <span class="mulsz" slot="label">普通话术库 </span>
          </el-tab-pane>
          <el-tab-pane name="sharing">
            <span class="mulsz" slot="label">共享话术库 </span>
            <span class="mulsz" slot="label">特定话术库 </span>
          </el-tab-pane>
        </el-tabs>
      </div>
@@ -75,7 +75,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="话术名称" prop="userName">
              <el-form-item label="话术主旨" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
@@ -84,13 +84,36 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用疾病" prop="status">
                <el-cascader
                  v-model="queryParams.status"
                  :options="optionss"
                  :props="propss"
              <el-form-item label="关联指标" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
                  clearable
                ></el-cascader>
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="语言" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="是否启用" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item>
@@ -138,11 +161,6 @@
              <!-- <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"
@@ -155,82 +173,84 @@
                align="center"
                key="userId"
                prop="userId"
                v-if="columns[0].visible"
              />
              <el-table-column
                label="话术名称"
                label="主旨"
                align="center"
                key="userName"
                prop="userName"
                v-if="columns[1].visible"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="版本"
                label="问题文本"
                align="center"
                key="nickName"
                prop="nickName"
                v-if="columns[2].visible"
                width="400"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="适用疾病"
                label="问题语音"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                v-if="columns[4].visible"
                width="120"
                width="400"
              /><el-table-column
                label="话术描述"
                label="关联指标"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                v-if="columns[4].visible"
                width="120"
              />
              <el-table-column
                label="最近编辑"
                label="指标选项"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                v-if="columns[4].visible"
                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">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                align="center"
                width="300"
                width="200"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="goQRCode(scope.row)"
                    v-hasPermi="['system:user:edit']"
                  >
                    <span class="button-text"
                      ><i class="el-icon-edit"></i>二维码</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="ViewQuestionnaire(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textck"
                      ><i class="el-icon-edit"></i>查看</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-edit"></i>修改</span
                      ><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
@@ -239,7 +259,7 @@
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-textsc"
                      ><i class="el-icon-edit"></i>删除</span
                      ><i class="el-icon-delete-solid"></i>删除</span
                    ></el-button
                  >
                </template>
@@ -259,84 +279,142 @@
        <!-- æ·»åŠ æˆ–ä¿®æ”¹è¯æœ¯é…ç½®å¯¹è¯æ¡† -->
        <el-dialog
          :title="title"
          :visible.sync="open"
          :visible.sync="indexopen"
          width="900px"
          append-to-body
        >
          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
          <el-form
            ref="form"
            :model="indexform"
            :rules="rules"
            label-width="100px"
          >
            <el-row>
              <el-col :span="12">
                <el-form-item label="姓名" prop="nickName">
                  <el-input
                    v-model="form.nickName"
                    placeholder="请输入姓名"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="性别" prop="deptId">
                  <el-select v-model="form.sex" placeholder="请选择性别">
              <el-col :span="24">
                <el-form-item label="语言" prop="deptId">
                  <el-select
                    v-model="indexform.language"
                    placeholder="请选择语言"
                  >
                    <el-option
                      v-for="dict in dict.type.sys_user_sex"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                      v-for="index in languagelist"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="证件类型" prop="phonenumber">
              <el-col :span="24">
                <el-form-item label="话术主旨" prop="nickName">
                  <el-input
                    v-model="form.phonenumber"
                    placeholder="请选择证件类型"
                    maxlength="11"
                    v-model="indexform.nickName"
                    placeholder="请输入话术主旨"
                    maxlength="80"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="证件号" prop="email">
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <div
                  style="display: flex; margin-left: 100px; margin-bottom: 10px"
                >
                  <div class="tsgname" @click="tsgnameto()">医院名称</div>
                  <div class="tsgname" @click="tsgnameto()">医院电话</div>
                  <div class="tsgname" @click="tsgnameto()">医院姓名</div>
                  <div class="tsgname" @click="tsgnameto()">随访姓名</div>
                  <div class="tsgname" @click="tsgnameto()">随访电话</div>
                  <div class="tsgname" @click="tsgnameto()">性别</div>
                  <div class="tsgname" @click="tsgnameto()">年龄</div>
                  <div class="tsgname" @click="tsgnameto()">地址</div>
                </div>
              </el-col></el-row
            >
            <el-row>
              <el-col :span="24">
                <el-form-item label="话术文本" prop="verbaltricktext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="话术语音" prop="verbaltrickyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无匹配文本" prop="matchtext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无匹配语音" prop="matchyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无声文本" prop="silenttext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="无声语音" prop="silentyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="通用库文本" prop="librarytext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="通用库语音" prop="libraryy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="听不清文本" prop="vaguetext">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="听不清语音" prop="vagueyy">
                  <el-input v-model="indexform.userName" maxlength="30" />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="话术规则" prop="email">
                  <el-input
                    v-model="form.email"
                    placeholder="请输入证件号"
                    maxlength="50"
                  />
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="本人手机号" prop="userName">
                  <el-input
                    v-model="form.userName"
                    placeholder="请输入手机号"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="亲属手机号" prop="password">
                  <el-input
                    v-model="form.password"
                    placeholder="请输入亲属手机号"
                    type="password"
                    maxlength="20"
                    show-password
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="患者标签">
                  <el-cascader
                    :options="optionss"
                    :props="propss"
                    clearable
                  ></el-cascader>
              <el-col :span="24">
                <el-form-item label="是否启用">
                  <el-radio-group v-model="indexform.qystatus">
                    <el-radio
                      v-for="item in qyoptions"
                      :key="item.value"
                      :label="item.value"
                      >{{ item.label }}</el-radio
                    >
                  </el-radio-group>
                </el-form-item>
              </el-col>
            </el-row>
@@ -345,7 +423,7 @@
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="form.remark"
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
@@ -395,15 +473,6 @@
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- äºŒç»´ç å±•示弹框 -->
    <el-dialog width="30%" :visible.sync="goQRCodeVisible">
      <div class="qrcode-dialo">
        <div class="qrcode-text">
          {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span>
        </div>
        <div class="qrcode-img"></div>
      </div>
    </el-dialog>
  </div>
</template>
@@ -451,11 +520,12 @@
      userList: [
        {
          userid: 1,
          userName: "三号话术",
          nickName: "1.2.4",
          aphonenumber: "关节炎症",
          bphonenumber: "很棒",
          cphonenumber: "2022-12-12 ",
          userName: "血常规、尿常规",
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
          status: "0",
        },
      ],
      // å¼¹å‡ºå±‚标题
@@ -468,31 +538,37 @@
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      // è¡¨å•参数
      form: {},
      // æ·»åŠ ã€ä¿®æ”¹å‚æ•°
      indexform: {},
      numberlb: 22,
      numberlbs: 2,
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      goQRCodeVisible: false, //二维码弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      propss: { multiple: true },
      optionss: [
      languagelist: [
        {
          value: 1,
          label: "东南",
          label: "普通话",
        },
        {
          value: 2,
          label: "西北",
          label: "粤语",
        },
        {
          value: 3,
          label: "仨仨仨",
          label: "英语",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "启用",
        },
        {
          value: 4,
          label: "六飒飒飒",
          value: 2,
          label: "关闭",
        },
      ],
      //类别列表
@@ -528,20 +604,10 @@
        deptId: undefined,
        IDnumber: undefined,
      },
      // åˆ—信息
      columns: [
        { key: 0, label: `用户编号`, visible: true },
        { key: 1, label: `用户名称`, visible: true },
        { key: 2, label: `用户昵称`, visible: true },
        { key: 3, label: `部门`, visible: true },
        { key: 4, label: `手机号码`, visible: true },
        { key: 5, label: `状态`, visible: true },
        { key: 6, label: `创建时间`, visible: true },
      ],
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          { required: true, message: "主旨不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
@@ -639,20 +705,39 @@
        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() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.open = false;
      this.indexopen = false;
      this.reset();
    },
    goQRCode(row) {
      this.goQRCodeVisible = true;
      this.namequestionnaire = row.userName;
      this.haoquestionnaire = row.nickName;
    },
    // è¡¨å•重置
    reset() {
      this.form = {
@@ -692,23 +777,15 @@
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
      });
      this.reset();
      this.title = "新增话术";
      this.indexopen = true;
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
        query: { id: "1" },
      });
    },
    // æŸ¥çœ‹è¯æœ¯
    ViewQuestionnaire() {
      this.$router.push({
        path: "/knowledge/questionnaire/examine/",
        query: { id: "1" },
      });
      this.reset();
      this.title = "修改话术";
      this.indexopen = true;
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
@@ -724,13 +801,13 @@
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.indexopen = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.indexopen = false;
              this.getList();
            });
          }
@@ -815,6 +892,21 @@
    height: 400px;
  }
}
.tsgname {
  width: 90px;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #7799fa;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgname:hover {
  background: #3366f5;
}
::v-deep.el-tabs--left,
.el-tabs--right {
  overflow: hidden;
@@ -851,7 +943,7 @@
.button-text {
  color: rgb(70, 204, 238);
}
.button-textck {
.button-bji {
  color: rgb(39, 167, 67);
}
.button-textxg {
src/views/repositoryai/verbaltrick/particulars/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
<template>
  <div>
    <div class="basic">基本信息</div>
    <div class="top-text">
      <div class="substance">
        <p>话术主旨:<span>有无复查</span></p>
        <p>问题文本:<span>有无复查</span></p>
        <p>指标种类:<span>有无复查</span></p>
        <p>
          æŒ‡æ ‡é€‰é¡¹ï¼š<span>{{ optionvalue }}</span>
        </p>
      </div>
    </div>
    <div class="headline">
      <div class="basics">问题配置</div>
      <div class="headbottom">
        <el-button
          type="primary"
          icon="el-icon-circle-plus-outline"
          @click="addzbiao"
          >添加指标</el-button
        >
        <el-button type="primary" icon="el-icon-s-claim">保存</el-button>
        <el-button type="primary" icon="el-icon-document"
          >更新指标规则至模版</el-button
        >
      </div>
    </div>
    <div class="valuetop" v-for="(item, index) in deployList" :key="item.id">
      <div class="val-text">
        <div>
          æœ‰æ— å¤æŸ¥ <span>{{ item.name }}</span>
        </div>
        <div class="text-icon" @click="deletei(index)">
          <i class="el-icon-delete" />
        </div>
      </div>
      <div class="val-bon">
        <el-form ref="form" :model="form" label-width="80px">
          <el-form-item label="指标类型">
            <el-radio-group v-model="form.resource">
              <el-radio label="选项"></el-radio>
              <el-radio label="文本"></el-radio>
              <el-radio label="数组"></el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="指标名称">
            <el-input v-model="form.name"></el-input>
          </el-form-item>
          <el-form-item label="指标值">
            <el-input v-model="item.name"></el-input>
          </el-form-item>
          <el-form-item label="特殊资源">
            <el-radio-group v-model="form.resource">
              <el-radio label="基础"></el-radio>
              <el-radio label="自定义"></el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="基础规则">
            <el-input type="textarea" v-model="item.valuetop"></el-input>
          </el-form-item>
        </el-form>
      </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() {
      const ids = this.deployList.length + 1;
      console.log(ids);
      this.deployList.push({
        id: ids,
        name: "",
        valuetop: "",
      });
    },
  },
};
</script>
<style lang="scss" scoped>
.top-text {
  margin: 15px;
  margin-top: 0;
  padding: 0 30px 30px 30px;
  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: #cdcdce;
}
.headline {
  display: flex;
  height: 50px;
  margin: 15px;
  margin-bottom: 0;
  padding: 0 20px 20px 20px;
  line-height: 50px;
  background: #cdcdce;
  justify-content: space-between;
}
.valuetop {
  .val-text {
    display: flex;
    height: 50px;
    margin: 15px;
    margin-bottom: 0;
    // padding: 0 20px 20px 20px;
    padding: 0 20px;
    align-items: center;
    background: #cdcdce;
    justify-content: space-between;
    .text-icon {
      width: 35px;
      height: 35px;
      line-height: 35px;
      text-align: center;
      background: #fafafa;
      cursor: pointer;
      border-radius: 5px;
    }
  }
  .val-bon {
    margin: 15px;
    margin-top: 0;
    padding: 30px;
    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);
  }
}
</style>