WXL
2023-12-08 c50a8b158e31b9157869d28fb90c6f5c840bb05d
src/views/repositoryai/intention/index.vue
@@ -21,48 +21,52 @@
        </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>
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
      </div>
    </div>
    <!-- 右侧数据 -->
    <div class="leftvlue">
      <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">
          <!--用户数据-->
@@ -75,7 +79,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,19 +88,29 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="指标值" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
              <el-form-item label="标签" prop="sickness">
                <el-cascader
                  v-model="queryParams.sickness"
                  :options="optionss"
                  :props="propss"
                  clearable
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
                ></el-cascader>
              </el-form-item>
              <el-form-item label="语言" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
              <el-form-item label="适用方式" prop="shape">
                <el-cascader
                  v-model="queryParams.shapevalue"
                  :options="optionss"
                  :props="propss"
                  clearable
                ></el-cascader>
              </el-form-item>
              <el-form-item label="指标类型" prop="classify">
                <el-select
                  v-model="queryParams.classifyvalue"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in languagelist"
                    v-for="(item, index) in qyoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -104,10 +118,13 @@
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="是否启用" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
              <el-form-item label="可用状态" prop="classify">
                <el-select
                  v-model="queryParams.classifyvalue"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in qyoptions"
                    v-for="(item, index) in qyoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -178,38 +195,47 @@
                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"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="指标规则"
                label="正常值范围"
                align="center"
                key="scope"
                prop="scope"
                width="400"
              />
              <el-table-column
                label="指标描述"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                v-if="columns[4].visible"
                width="400"
              /><el-table-column
                label="指标类型"
                label="适用方式"
                align="center"
                key="bphonenumbers"
                prop="bphonenumbers"
                width="120"
              />
              <el-table-column
                label="适用疾病"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                v-if="columns[4].visible"
                width="120"
              />
              <el-table-column
@@ -217,7 +243,6 @@
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                v-if="columns[4].visible"
                width="120"
              />
              <el-table-column label="是否启用" align="center" key="status">
@@ -250,10 +275,19 @@
                  <el-button
                    size="medium"
                    type="text"
                    @click="handlemeasurement(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textcs"
                      ><i class="el-icon-help"></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-edit"></i>删除</span
                      ><i class="el-icon-delete"></i>删除</span
                    ></el-button
                  >
                </template>
@@ -283,8 +317,28 @@
            :rules="rules"
            label-width="100px"
          >
            <el-row>
              <el-col :span="24">
            <el-row v-if="!measurement">
              <el-col :span="12">
                <el-form-item label="指标名称" prop="deptId">
                  <el-input
                    v-model="indexform.name"
                    placeholder="请输入指标种类"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="版本号" prop="deptId">
                  <el-input
                    v-model="indexform.versions"
                    placeholder="请输入指标种类"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="!measurement">
              <el-col :span="12">
                <el-form-item label="语言" prop="deptId">
                  <el-select
                    v-model="indexform.language"
@@ -299,20 +353,71 @@
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="是否可用" prop="deptId">
                  <el-select
                    v-model="indexform.useofstate"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="index in qyoptions"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="指标种类" prop="nickName">
                <el-form-item label="指标描述" prop="nickName">
                  <el-input
                    v-model="indexform.nickName"
                    placeholder="请输入指标种类"
                    placeholder="请输入指标描述"
                    maxlength="40"
                  />
                </el-form-item> </el-col
            ></el-row>
            <el-row>
            <el-form-item label="标签" prop="desc" v-if="!measurement">
              <div class="xinz-inf">
                <el-tag
                  :key="tag"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClose(tag)"
                >
                  {{ tag }}
                </el-tag>
                <el-select
                  v-model="inputValue"
                  v-if="inputVisible"
                  @change="handleInputConfirm"
                  filterable
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in optionss"
                    :key="item.label"
                    :label="item.label"
                    :value="item.label"
                  >
                  </el-option>
                </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInput"
                  >+ 新增标签</el-button
                >
              </div>
            </el-form-item>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="招标类型">
                <el-form-item label="值类型">
                  <el-radio-group v-model="indexform.resource">
                    <el-radio label="选项"></el-radio>
                    <el-radio label="文本"></el-radio>
@@ -320,55 +425,138 @@
                  </el-radio-group>
                </el-form-item> </el-col
            ></el-row>
            <el-row>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="指标值" prop="userName">
                  <el-input
                    v-model="indexform.userName"
                    placeholder="请输入手机号"
                    maxlength="30"
                  />
                <el-form-item label="适用疾病" prop="userName">
                  <el-select
                    v-model="indexform.useofstate"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="index in qyoptions"
                      :key="index.value"
                      :label="index.label"
                      :value="index.value"
                    ></el-option>
                  </el-select>
                </el-form-item> </el-col
            ></el-row>
            <el-row>
            <el-row v-if="!measurement">
              <el-col :span="24">
                <el-form-item label="指标规则" prop="email">
                  <el-input
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                <el-form-item label="适用方式" prop="email">
                  <el-select
                    v-model="indexform.useofstate"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="index in qyoptions"
                      :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="是否启用">
                  <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-card class="box-card" style="margin-bottom: 20px">
              <el-table v-loading="loading" :data="testuserList">
                <el-table-column
                  label="序号"
                  align="center"
                  key="userid"
                  prop="userid"
                  width="50"
                />
                <el-table-column
                  label="指标选项"
                  align="center"
                  key="nickName"
                  prop="nickName"
                  :show-overflow-tooltip="true"
                >
                  <template slot-scope="scope">
                    <el-input
                      v-model="scope.row.nickName"
                      placeholder="请输入内容"
                    ></el-input>
                  </template>
                </el-table-column>
                <el-table-column
                  label="解析规则"
                  align="center"
                  key="aphonenumber"
                  prop="aphonenumber"
                  width="460"
                  :show-overflow-tooltip="true"
                >
                  <template slot-scope="scope">
                    <el-input
                      v-model="scope.row.aphonenumber"
                      placeholder="请输入内容"
                    ></el-input>
                  </template>
                </el-table-column>
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注">
                <el-table-column
                  label="操作"
                  align="center"
                  width="200"
                  class-name="small-padding fixed-width"
                >
                  <template slot-scope="scope">
                    <el-button
                      @click="addoption(scope.row)"
                      type="success"
                      icon="el-icon-circle-plus-outline"
                      circle
                    ></el-button>
                    <el-button
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="deloption(scope.row)"
                    ></el-button>
                    <el-button
                      @click="syioption(scope.row)"
                      type="primary"
                      icon="el-icon-top"
                      circle
                    ></el-button>
                    <el-button
                      @click="xiayioption(scope.row)"
                      type="primary"
                      icon="el-icon-bottom"
                      circle
                    ></el-button>
                  </template>
                </el-table-column>
              </el-table>
            </el-card>
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="测试输入" prop="nickName">
                  <el-input
                    v-model="indexform.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                    v-model="testvalue"
                    placeholder="请输入测试内容"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-button type="success">开始测试</el-button>
              </el-col>
            </el-row>
          </el-form>
          <div>
            <el-input
              type="textarea"
              :rows="4"
              placeholder="此处展示识别结果"
              v-model="testgovalue"
            >
            </el-input>
          </div>
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="submitForm">确 定</el-button>
            <el-button @click="cancel">取 消</el-button>
@@ -383,6 +571,17 @@
      :visible.sync="dialogFormVisible"
    >
      <el-form :model="classifyform">
        <el-form-item label="请选择指标大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
            <el-option
              v-for="item in optionss"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
@@ -442,6 +641,7 @@
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      measurement: false,
      // 总条数
      total: 0,
      namequestionnaire: "",
@@ -451,6 +651,8 @@
      dialogFormVisible: false, //修改添加类别弹框
      deleteVisible: false, //分类删除弹框
      deletefenl: "高血压", //删除项
      testvalue: "",
      testgovalue: "",
      classifyform: {
        categoryname: "",
      }, //类别表单
@@ -463,6 +665,28 @@
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
        },
      ],
      testuserList: [
        {
          userid: 1,
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 2,
          nickName: "正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 55,
          nickName: "非正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 4,
          nickName: "a正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          status: "0",
        },
      ],
@@ -484,7 +708,10 @@
      dialogFormVisible: false, //添加类别弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      inputVisible: false,
      inputValue: "",
      propss: { multiple: true },
      dynamicTags: ["标签一", "标签二", "标签三"],
      languagelist: [
        {
          value: 1,
@@ -502,11 +729,29 @@
      qyoptions: [
        {
          value: 1,
          label: "启用",
          label: "可用",
        },
        {
          value: 2,
          label: "关闭",
          label: "停用",
        },
      ],
      optionss: [
        {
          value: 1,
          label: "类型一",
        },
        {
          value: 2,
          label: "类型二",
        },
        {
          value: 3,
          label: "类型三",
        },
        {
          value: 4,
          label: "类型四",
        },
      ],
      //类别列表
@@ -614,6 +859,9 @@
        console.log(this.userList);
      });
    },
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // 添加、修改类别
    submitsidecolumn() {
      if (this.amendtag) {
@@ -668,6 +916,72 @@
          row.status = row.status === "0" ? "1" : "0";
        });
    },
    // 侧边--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    // 标签-----------------
    handleClose(tag) {
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    showInput() {
      this.inputVisible = true;
    },
    //测试表单 --------------------------
    addoption() {
      this.testuserList.push({
        userid: 1,
        nickName: "贫血",
        aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
      });
      this.sortFn();
    },
    deloption() {
      const index = this.testuserList.indexOf(item);
      if (index !== -1) {
        this.testuserList.splice(index, 1); // 从索引位置删除一个元素
        this.sortFn();
      } else {
        console.log("未找到该对象");
      }
    },
    syioption(row) {
      const index = this.getIndexInArray(this.testuserList, row);
      const item = this.testuserList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
      this.testuserList.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
      this.sortFn();
    },
    xiayioption(row) {
      const index = this.getIndexInArray(this.testuserList, row);
      const item = this.testuserList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
      this.testuserList.splice(index + 1, 0, item); // 将item插入到索引位置的前一位
      this.sortFn();
    },
    sortFn() {
      this.testuserList = this.testuserList.map((item, index) => {
        return {
          userid: index + 1,
          nickName: item.nickName,
          aphonenumber: item.aphonenumber,
        };
      });
      console.log(this.testuserList);
    },
// ---------------------
    //搜索类别
    sidecolumnss() {},
    // 切换共享/本地
@@ -720,12 +1034,20 @@
      this.reset();
      this.title = "新增指标";
      this.indexopen = true;
      this.measurement=false;
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      this.title = "修改指标";
      this.title = "指标详情";
      this.indexopen = true;
      this.measurement=false;
    },
    handlemeasurement(row) {
      this.reset();
      this.title = "指标详情";
      this.indexopen = true;
      this.measurement=true;
    },
    // 修改分类弹框
    popoveramend(tagcategoryid) {
@@ -775,6 +1097,30 @@
<style lang="scss" scoped>
.Questionnairemanagement {
  display: flex;
}
.xinz-inf {
  font-size: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
  .button-new-tag {
    margin-left: 10px;
    height: 32px;
    line-height: 30px;
    padding-top: 0;
    padding-bottom: 0;
  }
  .input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
  }
}
.sidecolumn {
  width: 300px;
@@ -868,7 +1214,7 @@
.button-text {
  color: rgb(70, 204, 238);
}
.button-textck {
.button-textcs {
  color: rgb(39, 167, 67);
}
.button-textxg {