<template>
|
<div class="Questionnairemanagement">
|
<!-- 左侧栏 -->
|
<div class="sidecolumn">
|
<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-input>
|
</div>
|
|
<div class="head-container" style="margin-top: 20px">
|
<el-tree
|
:data="deptOptions"
|
:props="defaultProps"
|
:expand-on-click-node="false"
|
:filter-node-method="filterNode"
|
ref="tree"
|
node-key="id"
|
default-expand-all
|
highlight-current
|
@node-click="handleNodeClick"
|
>
|
<span class="custom-tree-node" slot-scope="{ node, data }">
|
<span>{{ node.label }}</span>
|
<span>
|
<el-button
|
type="text"
|
icon="el-icon-delete"
|
circle
|
size="mini"
|
@click="() => remove(node, data)"
|
>
|
</el-button>
|
</span>
|
</span>
|
</el-tree>
|
</div>
|
</div>
|
<!-- 右侧数据 -->
|
<div class="leftvlue">
|
<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="sickness">
|
<el-select v-model="queryParams.tag" placeholder="请选择">
|
<el-option
|
v-for="item in dynamicTags"
|
:key="item.tagid"
|
:label="item.tagname"
|
:value="item.tagid"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="适用方式" prop="shape">
|
<el-select v-model="queryParams.value" placeholder="请选择">
|
<el-option
|
v-for="item in mode"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="指标类型" prop="classify">
|
<el-select
|
v-model="queryParams.classifyvalue"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="(item, index) in qyoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="可用状态" prop="classify">
|
<el-select
|
v-model="queryParams.classifyvalue"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="(item, index) 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-loading="loading"
|
:data="targetList"
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column type="selection" width="50" align="center" />
|
<el-table-column
|
label="序号"
|
fixed
|
align="center"
|
key="id"
|
prop="id"
|
/>
|
<el-table-column
|
label="值类型"
|
fixed
|
align="center"
|
key="isenable"
|
prop="isenable"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<dict-tag :options="valuetype" :value="scope.row.isenable" />
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="指标名称"
|
align="center"
|
key="targetname"
|
prop="targetname"
|
:show-overflow-tooltip="true"
|
>
|
</el-table-column>
|
|
<el-table-column
|
label="正常值范围"
|
align="center"
|
key="warndown"
|
prop="warndown"
|
width="200"
|
>
|
<template slot-scope="scope">
|
<span>{{ scope.row.warnup }}~{{ scope.row.warndown }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="指标描述"
|
align="center"
|
key="targetdesc"
|
prop="targetdesc"
|
width="200"
|
/><el-table-column
|
label="适用方式"
|
align="center"
|
key="suitWay"
|
prop="suitWay"
|
width="120"
|
>
|
<template slot-scope="scope">
|
<dict-tag :options="mode" :value="scope.row.suitWay" />
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="适用疾病"
|
align="center"
|
key="suitDisease"
|
prop="suitDisease"
|
width="120"
|
>
|
<template slot-scope="scope">
|
<el-button
|
size="medium"
|
type="text"
|
@click="illnessUpdate(scope.row)"
|
v-hasPermi="['system:user:edit']"
|
><span class="button-textxg"
|
><i class="el-icon-date"></i>详情</span
|
></el-button
|
>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="语言"
|
align="center"
|
key="language"
|
prop="language"
|
width="120"
|
/>
|
<el-table-column
|
label="是否可用"
|
align="center"
|
key="isAvailable"
|
prop="isAvailable"
|
>
|
<template slot-scope="scope">
|
<dict-tag
|
:options="qyoptions"
|
:value="scope.row.isAvailable"
|
/>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
label="操作"
|
fixed="right"
|
align="center"
|
width="200"
|
class-name="small-padding fixed-width"
|
>
|
<template slot-scope="scope">
|
<el-button
|
size="medium"
|
type="text"
|
@click="handleUpdate(scope.row)"
|
v-hasPermi="['system:user:edit']"
|
><span class="button-textxg"
|
><i class="el-icon-edit"></i>修改</span
|
></el-button
|
>
|
<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-delete"></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
|
:title="title"
|
:visible.sync="indexopen"
|
width="900px"
|
append-to-body
|
>
|
<el-form
|
ref="indexform"
|
:model="indexform"
|
:rules="rules"
|
label-width="100px"
|
>
|
<el-row v-if="!measurement">
|
<el-col :span="12">
|
<el-form-item label="指标名称" prop="deptId">
|
<el-input
|
v-model="indexform.targetname"
|
placeholder="请输入指标种类"
|
maxlength="40"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="版本号" prop="deptId">
|
<el-input
|
v-model="indexform.version"
|
placeholder="请输入指标种类"
|
maxlength="40"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<!-- deptOptions -->
|
<el-row v-if="!measurement">
|
<el-col :span="8">
|
<el-form-item label="指标分类">
|
<el-select
|
v-model="indexform.assortid"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option-group
|
v-for="group in deptOptions"
|
:key="group.id"
|
:label="group.indexAssortName"
|
>
|
<el-option
|
v-for="item in group.ivrLibaTargetAssortList"
|
:key="item.id"
|
:label="item.indexAssortName"
|
:value="item.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<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-col :span="8">
|
<el-form-item label="是否可用" prop="isAvailable">
|
<el-select
|
v-model="indexform.isAvailable"
|
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 v-if="!measurement">
|
<el-col :span="24">
|
<el-form-item label="指标描述" prop="targetdesc">
|
<el-input
|
v-model="indexform.targetdesc"
|
placeholder="请输入指标描述"
|
maxlength="40"
|
/>
|
</el-form-item> </el-col
|
></el-row>
|
<el-form-item label="标签" prop="desc" v-if="!measurement">
|
<div class="xinz-inf">
|
<el-tag
|
:key="tag.tagname"
|
type="success"
|
v-for="tag in dynamicTags"
|
closable
|
:disable-transitions="false"
|
@close="handleClosetag(tag)"
|
>
|
{{ tag.tagname }}
|
</el-tag>
|
<el-select
|
v-model="inputValue"
|
v-if="inputVisible"
|
@change="handleInputConfirm"
|
filterable
|
allow-create
|
default-first-option
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in optionstag"
|
:key="item.tagid"
|
:label="item.tagname"
|
:value="item.tagname"
|
>
|
</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-radio-group v-model="indexform.isenable">
|
<el-radio :label="1">选项</el-radio>
|
<el-radio :label="2">文本</el-radio>
|
<el-radio :label="3">数值</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col></el-row
|
>
|
<!-- <el-row v-if="!measurement">
|
<el-col :span="24">
|
<el-form-item label="适用疾病" prop="userName">
|
<el-select
|
v-model="indexform.suitDisease"
|
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 v-if="!measurement">
|
<el-col :span="24">
|
<el-form-item label="适用方式" prop="email">
|
<el-select v-model="indexform.suitWay" placeholder="请选择">
|
<el-option
|
v-for="index in mode"
|
:key="index.value"
|
:label="index.label"
|
:value="index.value"
|
></el-option>
|
</el-select>
|
</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="guid"
|
prop="guid"
|
width="50"
|
/>
|
<el-table-column
|
label="指标选项"
|
align="center"
|
key="targetvalue"
|
prop="targetvalue"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<el-input
|
v-model="scope.row.targetvalue"
|
placeholder="请输入内容"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="解析规则"
|
align="center"
|
key="targetregex"
|
prop="targetregex"
|
width="460"
|
:show-overflow-tooltip="true"
|
>
|
<template slot-scope="scope">
|
<el-input
|
v-model="scope.row.targetregex"
|
placeholder="请输入内容"
|
></el-input>
|
</template>
|
</el-table-column>
|
|
<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-card class="box-card" style="margin-bottom: 20px">
|
<Regular :TargetoptionList="testuserList" />
|
</el-card>
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="测试输入" prop="nickName">
|
<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>
|
</div>
|
</el-dialog>
|
</div>
|
</div>
|
<!-- 添加疾病对话框 -->
|
<el-dialog title="指标疾病" :visible.sync="illnessVisible" width="50%">
|
<div>
|
<div class="xinz-infs">
|
<el-tag
|
:key="item.icd10name"
|
type="warning"
|
v-for="item in illnesslist"
|
closable
|
:disable-transitions="false"
|
@close="handleCloseillness(item)"
|
>
|
{{ item.icd10name }}
|
</el-tag>
|
<el-select
|
v-model="inputValue"
|
v-if="inputVisible"
|
@change="illnessConfirm"
|
:remote-method="remoteMethod"
|
filterable
|
remote
|
allow-create
|
default-first-option
|
placeholder="请选择/查询"
|
:loading="loading"
|
>
|
<el-option
|
v-for="item in optionsillness"
|
:key="item.icdid"
|
:label="item.icdname"
|
:value="item.icdid"
|
>
|
</el-option>
|
</el-select>
|
<el-button
|
v-else
|
class="button-new-tag"
|
size="small"
|
@click="showInput"
|
>+ 新增疾病</el-button
|
>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="illnessVisible = false">取 消</el-button>
|
<el-button type="primary" @click="confirmillness">确 定</el-button>
|
</span>
|
</el-dialog>
|
<!-- 添加类别弹框 -->
|
<el-dialog title="新增类别" width="30%" :visible.sync="dialogFormVisible">
|
<div style="text-align: center; margin-bottom: 20px">
|
<el-radio-group v-model="radio">
|
<el-radio-button label="主分类"></el-radio-button>
|
<el-radio-button label="子分类"></el-radio-button>
|
</el-radio-group>
|
</div>
|
<el-divider></el-divider>
|
|
<el-form :model="classifyform">
|
<el-form-item label="请选择问题大类" v-if="radio == '子分类'">
|
<el-select v-model="classifyform.pid" placeholder="请选择">
|
<el-option
|
v-for="item in deptOptions"
|
:key="item.id"
|
:label="item.indexAssortName"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="请输入类别名称">
|
<el-input
|
v-model="classifyform.indexAssortName"
|
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>
|
</div>
|
</template>
|
|
<script>
|
import {
|
gettargetInfo,
|
particulartarget,
|
gettargetInfoedit,
|
addtarget,
|
deletetarget,
|
getillnesslist,
|
illnesslistget,
|
getillness,
|
deltargetillness,
|
addtargetillness,
|
selectIvrLibaTargetAssortList,
|
addtreeselectIvrLibaTargetAssort,
|
delselectIvrLibaTargetAssort,
|
} from "@/api/AiCentre/index";
|
import { getToken } from "@/utils/auth";
|
import Treeselect from "@riophae/vue-treeselect";
|
import Regular from "@/components/Regular"; //正则组件
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
import { listtag } from "@/api/system/label";
|
import store from "@/store";
|
|
export default {
|
name: "questionnaire",
|
dicts: ["sys_normal_disable", "sys_user_sex"],
|
components: { Treeselect, Regular },
|
data() {
|
return {
|
topactiveName: "Local", //顶部选择
|
// 遮罩层
|
loading: false,
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 显示搜索条件
|
showSearch: true,
|
measurement: false,
|
languagelist: [],
|
indexid: null,
|
// 总条数
|
total: 0,
|
idds: "",
|
amendtag: false, //是否修改类别
|
dialogFormVisible: false, //修改添加类别弹框
|
deleteVisible: false, //分类删除弹框
|
deletefenl: "高血压", //删除项
|
radio: "主分类",
|
testvalue: "",
|
testgovalue: "",
|
classifyform: {
|
categoryname: "",
|
}, //类别表单
|
// 表格数据
|
targetList: null,
|
testuserList: [],
|
// 弹出层标题
|
title: "",
|
// 是否显示弹出层
|
open: false,
|
// 日期范围
|
dateRange: [],
|
// 岗位选项
|
postOptions: [],
|
// 角色选项
|
roleOptions: [],
|
// 添加、修改参数
|
indexform: {},
|
numberlb: 22,
|
numberlbs: 2,
|
deptOptions: [],
|
defaultProps: {
|
children: "ivrLibaTargetAssortList",
|
label: "indexAssortName",
|
},
|
sidecolumnform: {}, //添加类别表单
|
dialogFormVisible: false, //添加类别弹框
|
sidecolumnval: "", //类别搜索
|
indexopen: false, //弹框展示否
|
inputVisible: false,
|
illnessVisible: false, //指标疾病弹框
|
inputValue: "",
|
propss: { multiple: true },
|
dynamicTags: [],
|
illnesslist: [],
|
illnesslistapi: [],
|
optionsillness: [],
|
qyoptions: [],
|
mode: [],
|
optionstag: [],
|
targetoptionList: [],
|
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
},
|
|
// 表单校验
|
rules: {},
|
};
|
},
|
watch: {
|
// 根据名称筛选部门树
|
sidecolumnval(val) {
|
console.log(val);
|
this.$refs.tree.filter(val);
|
},
|
},
|
created() {
|
// 初始化数据
|
this.getList();
|
this.gettabList();
|
this.getDeptTree();
|
this.mode = store.getters.mode;
|
this.valuetype = store.getters.valuetype;
|
this.languagelist = store.getters.languagelist;
|
this.qyoptions = store.getters.usable;
|
},
|
methods: {
|
/** 查询指标列表 */
|
getList() {
|
this.loading = true;
|
gettargetInfo(this.queryParams).then((res) => {
|
this.targetList = res.rows;
|
this.total = res.total;
|
console.log(this.targetList);
|
this.loading = false;
|
});
|
},
|
|
processElement(element) {
|
// 返回一个新的对象,将element对象的属性isoperation设置为1
|
return { ...element, isoperation: 1 };
|
},
|
// 返回数组中指定元素的索引
|
getIndexInArray(arr, obj) {
|
// 返回数组中指定元素的索引
|
return arr.indexOf(obj);
|
},
|
//删除分类
|
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;
|
}
|
},
|
|
// 疾病-----------------------
|
illnessUpdate(row) {
|
this.illnessVisible = true;
|
this.indexid = row.id;
|
this.illnesslistapi = [];
|
const illnessqueryParams = {
|
pageNum: 1,
|
pageSize: 100,
|
};
|
getillnesslist(illnessqueryParams).then((response) => {
|
console.log(response);
|
this.optionsillness = response.rows;
|
});
|
getillness({ outid: row.id, type: 1 }).then((res) => {
|
this.illnesslist = res.rows;
|
console.log(res);
|
});
|
},
|
handleCloseillness(tag) {
|
this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
|
if (tag.id) {
|
this.illnesslistapi.push(tag.id);
|
}
|
},
|
remoteMethod(value) {
|
const illnessqueryParams = {
|
pageNum: 1,
|
pageSize: 100,
|
icdname: value,
|
};
|
this.loading = true;
|
setTimeout(() => {
|
this.loading = false;
|
getillnesslist(illnessqueryParams).then((response) => {
|
this.optionsillness = response.rows;
|
});
|
}, 200);
|
},
|
illnessConfirm(item) {
|
let opeavalue = {};
|
let tagname = this.inputValue;
|
illnesslistget(item).then((res) => {
|
opeavalue = res.data;
|
opeavalue.outid = this.indexid;
|
opeavalue.type = "1";
|
opeavalue.icd10id = opeavalue.icdid;
|
opeavalue.icd10name = opeavalue.icdname;
|
opeavalue.icd10code = opeavalue.icdcode;
|
if (tagname) {
|
this.illnesslist.push(opeavalue);
|
}
|
});
|
console.log(this.illnesslist);
|
this.inputVisible = false;
|
this.inputValue = "";
|
},
|
confirmillness() {
|
this.illnesslist.forEach((item, index) => {
|
if (!item.id) {
|
addtargetillness(item).then((res) => {});
|
}
|
});
|
if (this.illnesslistapi.length) {
|
deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
|
}
|
this.illnessVisible = false;
|
this.$modal.msgSuccess("编辑成功");
|
},
|
|
// 标签-----------------
|
gettabList() {
|
const tagqueryParams = {
|
pageNum: 1,
|
pageSize: 1000,
|
tagcategoryid: "0",
|
};
|
listtag(tagqueryParams).then((response) => {
|
console.log(response);
|
this.optionstag = response.rows;
|
});
|
},
|
handleClosetag(tag) {
|
console.log(tag);
|
console.log(this.dynamicTags.indexOf(tag));
|
const lindex = this.dynamicTags.indexOf(tag);
|
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
|
this.indexform.baseTagList[lindex].isoperation = 3;
|
},
|
handleInputConfirm() {
|
let tagvalue = {};
|
let tagname = this.inputValue;
|
if (tagname) {
|
listtag({
|
pageNum: 1,
|
pageSize: 1000,
|
tagcategoryid: "0",
|
tagname: tagname,
|
}).then((res) => {
|
if (res.rows[0]) {
|
tagvalue = res.rows[0];
|
tagvalue.isoperation = 1;
|
} else {
|
tagvalue = {
|
tagname: tagname,
|
isoperation: 1,
|
};
|
}
|
console.log(tagvalue);
|
this.indexform.baseTagList.push(tagvalue);
|
this.dynamicTags.push(tagvalue);
|
console.log(this.indexform.baseTagList);
|
console.log(this.dynamicTags);
|
});
|
}
|
this.inputVisible = false;
|
this.inputValue = "";
|
},
|
showInput() {
|
this.inputVisible = true;
|
},
|
//测试表单 --------------------------
|
addoption() {
|
const objvakue = {
|
guid: 1,
|
id: this.indexform.id,
|
targettype: this.indexform.targettype,
|
targetvalue: "贫血",
|
targetregex: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
|
};
|
this.testuserList.push(objvakue);
|
// this.indexform.targetoptionList.push(objvakue);
|
console.log(this.testuserList);
|
this.sortFn();
|
},
|
deloption(item) {
|
const index = this.testuserList.indexOf(item);
|
if (index !== -1) {
|
this.testuserList[index].isoperation = 3;
|
this.targetoptionList.push(this.testuserList[index]);
|
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 {
|
guid: index + 1,
|
targetvalue: item.targetvalue,
|
targetregex: item.targetregex,
|
targetoptionid: item.targetoptionid,
|
id: this.indexform.id,
|
targettype: this.indexform.targettype,
|
isoperation: item.targetoptionid ? 2 : 1,
|
categoryName: item.categoryName,
|
language: item.language,
|
};
|
});
|
console.log(this.testuserList);
|
},
|
// ---------------------
|
|
/** 查询部门下拉树结构 */
|
getDeptTree() {
|
selectIvrLibaTargetAssortList({}).then((res) => {
|
this.deptOptions = res.rows;
|
});
|
},
|
// 筛选节点
|
filterNode(value, data) {
|
if (!value) return true;
|
return data.indexAssortName.indexOf(value) !== -1;
|
},
|
// 添加类别树
|
submitsidecolumn() {
|
let calssvalue = {};
|
if (
|
this.classifyform.pid &&
|
this.classifyform.indexAssortName &&
|
this.radio == "子分类"
|
) {
|
const index = this.deptOptions.findIndex(
|
(obj) => obj.id == this.classifyform.pid
|
);
|
calssvalue = this.deptOptions[index];
|
console.log(calssvalue);
|
calssvalue.ivrLibaTargetAssortList.push(this.classifyform);
|
} else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
|
this.classifyform.pid = null;
|
this.classifyform.ivrLibaTargetAssortList = [];
|
} else {
|
return this.$modal.msgError("请填写完整信息");
|
}
|
|
addtreeselectIvrLibaTargetAssort(this.classifyform).then((res) => {
|
this.getDeptTree();
|
this.$modal.msgSuccess("新增成功");
|
this.classifyform = {};
|
this.dialogFormVisible = false;
|
});
|
},
|
remove(a, b) {
|
if (b.pid) {
|
this.$modal
|
.confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
|
.then(function () {
|
return delselectIvrLibaTargetAssort(b.id);
|
})
|
.then(() => {
|
this.getDeptTree();
|
this.$modal.msgSuccess("删除成功");
|
})
|
.catch(() => {});
|
} else {
|
this.$modal
|
.confirm(
|
'是否确认删除一级分类"' +
|
b.indexAssortName +
|
'"?删除后其下分类将归类‘未分类’'
|
)
|
.then(() => {
|
return delselectIvrLibaTargetAssort(b.id);
|
})
|
.then(() => {
|
this.getDeptTree();
|
this.$modal.msgSuccess("删除成功");
|
})
|
.catch(() => {});
|
}
|
},
|
handleNodeClick(data) {
|
this.queryParams.assortid = data.id;
|
this.getList();
|
},
|
|
// 取消按钮
|
cancel() {
|
this.indexopen = false;
|
this.reset();
|
},
|
|
// 表单重置
|
reset() {
|
this.indexform = {
|
suitWay: undefined,
|
id: undefined,
|
targetdesc: undefined,
|
baseTagList: [],
|
targetoptionList: [],
|
};
|
this.resetForm("indexform");
|
},
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
this.getList();
|
},
|
/** 重置按钮操作 */
|
resetQuery() {
|
this.dateRange = [];
|
this.resetForm("queryForm");
|
this.queryParams={
|
pageNum: 1,
|
pageSize: 10,
|
};
|
this.$refs.tree.setCurrentKey(null);
|
this.handleQuery();
|
},
|
// 多选框选中数据
|
handleSelectionChange(selection) {
|
this.ids = selection.map((item) => item.id);
|
this.single = selection.length != 1;
|
this.multiple = !selection.length;
|
},
|
/** 新增按钮操作 */
|
handleAdd() {
|
this.reset();
|
this.title = "新增指标";
|
this.indexform = {
|
baseTagList: [],
|
targetoptionList: [],
|
};
|
this.dynamicTags = [];
|
this.testuserList = [
|
{
|
guid: 1,
|
isoperation: 1,
|
targettype: "1",
|
targetvalue: "",
|
targetregex: "",
|
},
|
];
|
this.indexopen = true;
|
this.measurement = false;
|
},
|
/** 修改按钮操作 */
|
handleUpdate(row) {
|
this.reset();
|
console.log(row);
|
this.title = "指标详情";
|
this.indexform = row;
|
this.dynamicTags = row.baseTagList.map(this.processElement);
|
this.testuserList = row.targetoptionList;
|
this.indexopen = true;
|
this.measurement = false;
|
},
|
handlemeasurement(row) {
|
this.reset();
|
this.title = "指标详情";
|
this.indexopen = true;
|
this.measurement = true;
|
},
|
// 修改分类弹框
|
popoveramend(tagcategoryid) {
|
this.idds = tagcategoryid;
|
this.amendtag = true;
|
this.dialogFormVisible = true;
|
},
|
|
/** 更新/修改提交按钮 */
|
submitForm: function () {
|
// this.indexform.targetoptionList=[]
|
this.$refs["indexform"].validate((valid) => {
|
this.indexform.targetoptionList = this.testuserList.concat(
|
this.targetoptionList
|
);
|
if (valid) {
|
if (this.indexform.id != undefined) {
|
this.indexform.isoperation = 2;
|
gettargetInfoedit(this.indexform).then((response) => {
|
this.$modal.msgSuccess("修改成功");
|
this.indexopen = false;
|
this.getList();
|
});
|
} else {
|
this.indexform.targettype = "1";
|
this.indexform.isoperation = 1;
|
gettargetInfoedit(this.indexform).then((response) => {
|
this.$modal.msgSuccess("新增成功");
|
this.indexopen = false;
|
this.getList();
|
});
|
}
|
}
|
});
|
},
|
/** 删除按钮操作 */
|
handleDelete(row) {
|
const userIds = row.id || this.ids;
|
this.$modal
|
.confirm('是否确认删除指标名称为"' + row.targetname + '"的数据项?')
|
.then(function () {
|
return deletetarget(userIds);
|
})
|
.then(() => {
|
this.getList();
|
this.$modal.msgSuccess("删除成功");
|
})
|
.catch(() => {});
|
},
|
},
|
};
|
</script>
|
|
<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;
|
}
|
}
|
.xinz-infs {
|
font-size: 18px;
|
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;
|
min-height: 100vh;
|
text-align: center;
|
// display: flex;
|
margin-top: 20px;
|
margin: 20px;
|
padding: 30px;
|
background: #fff;
|
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;
|
}
|
}
|
::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;
|
}
|
}
|
::v-deep .el-tree-node__content {
|
display: -webkit-box;
|
display: -ms-flexbox;
|
display: flex;
|
-webkit-box-align: center;
|
-ms-flex-align: center;
|
align-items: center;
|
height: 46px;
|
font-size: 20px;
|
cursor: pointer;
|
}
|
::v-deep .el-tree{
|
position: relative;
|
cursor: default;
|
border-radius: 5px;
|
background: #EFF8FE;
|
color: #606266;
|
border: 1px solid #bbe1fa;
|
// 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);
|
|
}
|
::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
|
background-color: #7799FB ;
|
color: #fff;
|
}
|
::v-deep .el-button--mini.is-circle {
|
padding: 7px;
|
margin: 0;
|
color: red;
|
}
|
.button-text {
|
color: rgb(70, 204, 238);
|
}
|
.button-textcs {
|
color: rgb(39, 167, 67);
|
}
|
.button-textxg {
|
color: rgb(35, 81, 233);
|
}
|
.button-textsc {
|
color: rgb(235, 23, 23);
|
}
|
</style>
|