|
@@ -3,44 +3,34 @@
|
|
|
<div class="groupTitle"><i
|
|
|
class="el-icon-back"
|
|
|
@click="back"
|
|
|
- ></i> 提示信息维护--添加</div>
|
|
|
+ ></i> 提示信息维护--{{isEdit?'修改':'添加'}}</div>
|
|
|
<div class="info-container">
|
|
|
<el-form :rules="rules"
|
|
|
:model="form"
|
|
|
label-width="130px"
|
|
|
ref="groups">
|
|
|
<el-form-item label="静态知识名称:" prop="name">
|
|
|
- <el-input v-model="form.name"></el-input>
|
|
|
+ <el-input v-model="form.name" :disabled="isEdit"></el-input>
|
|
|
</el-form-item>
|
|
|
+ <InfoParagraph v-for="(f,i) in form.prags"
|
|
|
+ :data="f"
|
|
|
+ :index="i"
|
|
|
+ :isEdit = "isEdit"
|
|
|
+ @change="getPgValues"
|
|
|
+ @add="addParagraph"
|
|
|
+ @del="delParagraph" ref="subForm"></InfoParagraph>
|
|
|
<p class="line"></p>
|
|
|
- <el-form-item label="是否属于诊断:" prop="isReason">
|
|
|
- <el-select v-model="form.isReason" placeholder="请选择">
|
|
|
- <el-option label="否" value="0"></el-option>
|
|
|
- <el-option label="是" value="1"></el-option>
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="关联标签:" prop="tags">
|
|
|
+ <el-form-item label="标签归属:">
|
|
|
+ <el-select placeholder="标签归属" v-model="form.tagFor" clearable>
|
|
|
+ <el-option v-for="item in Adscriptions" :label="item.name" :value="item.val" :key="item.id" ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <TagPool :pool="tagPool"
|
|
|
+ :type="form.tagFor"
|
|
|
+ :selected="editData.selectedTags"
|
|
|
+ @changeActionData="changeActionData"></TagPool>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="显示位置:" prop="position">
|
|
|
- <el-checkbox-group v-model="form.position">
|
|
|
- <el-checkbox v-for="it in positions" :key="it.key" :label="it.name" :value="it.key" name="position"></el-checkbox>
|
|
|
- </el-checkbox-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="添加段落:" prop="addPrg">
|
|
|
- <div class="add-prg">
|
|
|
- <el-form-item label="标题" prop="title" label-width="80px">
|
|
|
- <el-input v-model="form.title"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="内容" prop="desc" label-width="80px">
|
|
|
- <InfoUeditor v-model="msg" :config="config"></InfoUeditor>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button>添加段落</el-button >
|
|
|
- </el-form-item>
|
|
|
- <p class="line"></p>
|
|
|
- <TagPool :pool="tagPool"
|
|
|
- :sexType="sexType"
|
|
|
- @changeActionData="changeActionData"></TagPool>
|
|
|
</el-form>
|
|
|
<div class="btn">
|
|
|
<el-button
|
|
@@ -58,92 +48,160 @@
|
|
|
import api from '@api/icss.js';
|
|
|
import utils from '@api/utils.js';
|
|
|
import TagPool from './PromptTagPool';
|
|
|
- import InfoUeditor from 'vue-ueditor-wrap';
|
|
|
+ import schema from 'async-validator';
|
|
|
+ import InfoParagraph from './InfoParagraph';
|
|
|
+
|
|
|
export default {
|
|
|
name: 'AddPromptInfo',
|
|
|
components: {
|
|
|
TagPool,
|
|
|
- InfoUeditor
|
|
|
+ InfoParagraph
|
|
|
},
|
|
|
data() {
|
|
|
+ const validateTags = (rule,value,callback)=>{
|
|
|
+ if(this.form.selectedTags.length==0){
|
|
|
+ this.warning('请选择关联标签!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ callback();
|
|
|
+ };
|
|
|
return {
|
|
|
- msg:'',
|
|
|
- config:{
|
|
|
- initialFrameWidth: null,
|
|
|
- initialFrameHeight: 350,
|
|
|
- imageUrlPrefix:"http://192.168.2.236:82",
|
|
|
- serverUrl: '/api/icssman/file/uploadImage',
|
|
|
- UEDITOR_HOME_URL: '/UEditor/', //静态文件路径
|
|
|
- toolbars:[['source','undo','redo','bold','italic','underline','fontborder','strikethrough','superscript','subscript','removeformat','formatmatch','autotypeset','blockquote',
|
|
|
- 'pasteplain','forecolor','backcolor','insertorderedlist','insertunorderedlist','selectall',
|
|
|
- 'cleardoc','rowspacingtop','rowspacingbottom','lineheight','customstyle','paragraph',
|
|
|
- 'fontfamily','fontsize','directionalityltr','directionalityrtl','indent','justifyleft',
|
|
|
- 'justifycenter','justifyright','justifyjustify','touppercase','tolowercase','link','simpleupload','insertimage','horizontal',
|
|
|
- 'date','time','spechars','fullscreen']] //自定义工具
|
|
|
+ isEdit:false,
|
|
|
+ tagPool:[], //标签池数据
|
|
|
+ Adscriptions:[], //归属列表
|
|
|
+ editData:{
|
|
|
+ tagFor:'',
|
|
|
+ selectedTags:[],
|
|
|
+ prags:[]
|
|
|
},
|
|
|
- tagPool:[],
|
|
|
- sexType:'1',
|
|
|
- positions:[],
|
|
|
form:{
|
|
|
name:'',
|
|
|
- isReason:'0',
|
|
|
- position:[]
|
|
|
+ tagFor:'',
|
|
|
+ selectedTags:[], //关联标签
|
|
|
+ prags:[{ //单个段落相关
|
|
|
+ title:'',
|
|
|
+ content:'',
|
|
|
+ isReason:0,
|
|
|
+ orderNo:0,
|
|
|
+ position:[],
|
|
|
+ text:''}]
|
|
|
},
|
|
|
rules: {
|
|
|
name: [
|
|
|
{ required: true, message: '静态知识名称不能为空', trigger: 'change' }
|
|
|
],
|
|
|
- isReason: [
|
|
|
- { required: true, message: '请选择是否属于诊断', trigger: 'change' }
|
|
|
- ],
|
|
|
- position: [
|
|
|
- { required: true, message: '请选择显示位置', trigger: 'change' }
|
|
|
- ],
|
|
|
+ tags:[
|
|
|
+ { required: true, validator: validateTags, trigger: 'submit' }
|
|
|
+ ]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
created:function(){
|
|
|
const {isEdit,data} = this.$route.params;
|
|
|
- //显示位置枚举列表
|
|
|
- const pos = localStorage.getItem("icssEnumsData");
|
|
|
- this.positions = JSON.parse(pos)&&JSON.parse(pos).introducePositionEnum;
|
|
|
+ this.getDropList(); //标签归属列表获取
|
|
|
if(isEdit){
|
|
|
- this.editData = data;
|
|
|
+ this.isEdit = isEdit;
|
|
|
+ const id = data.id;
|
|
|
+ api.getPrompDetail({id}).then((res) =>{
|
|
|
+ if(res.data.code === '0') {
|
|
|
+ this.form = this.parseData(res.data.data);
|
|
|
+ this.editData = Object.assign({},this.form);
|
|
|
+ }else{
|
|
|
+ this.warning("数据获取失败");
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
back() { this.$router.go(-1) },
|
|
|
- submitForm() { // 调用子组件的方法验证公用部分
|
|
|
- this.$refs.groups.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- //this.$emit('validatePass', this.form, false)
|
|
|
- } else {
|
|
|
- console.log('error submit!!');
|
|
|
- return false;
|
|
|
- }
|
|
|
- });;
|
|
|
+ mapStringToNum(str){
|
|
|
+ return str.split(",").map((it)=>{
|
|
|
+ return +it;
|
|
|
+ })
|
|
|
},
|
|
|
- changeActionData(){
|
|
|
-
|
|
|
+ parseData(info){
|
|
|
+ let detail = [];
|
|
|
+ info.details.forEach((it)=>{
|
|
|
+ detail.push(Object.assign({},it,{position:this.mapStringToNum(it.position)}));
|
|
|
+ });
|
|
|
+ return {
|
|
|
+ name:info.name,
|
|
|
+ tagFor:info.questionList[0].type+'',
|
|
|
+ selectedTags:info.questionList,
|
|
|
+ prags:detail
|
|
|
+ };
|
|
|
},
|
|
|
- validatePass() { //验证成功回调,调取接口
|
|
|
- //仍需验证标签明细是否选择
|
|
|
- /*if (this.itemsTypes.includes(+this.dataPub.region2)&&this.options.length==0) {
|
|
|
- this.$message({
|
|
|
- message: '至少填一个选项',
|
|
|
- type: 'warning'
|
|
|
- });
|
|
|
+ addParagraph(){
|
|
|
+ this.form.prags.push({title:'',
|
|
|
+ content:'',
|
|
|
+ isReason:0,
|
|
|
+ orderNo:0,
|
|
|
+ position:[],
|
|
|
+ text:''});
|
|
|
+ },
|
|
|
+ delParagraph(i){
|
|
|
+ if(this.form.prags.length==1){
|
|
|
+ this.warning('只剩一个段落,不能再删啦!');
|
|
|
return;
|
|
|
- }*/
|
|
|
- const {isEdit,data} = this.$route.params;
|
|
|
- let param = {
|
|
|
+ }
|
|
|
+ this.showConfirmDialog('确定要删除该段落?', () => {
|
|
|
+ this.form.prags.splice(i,1);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getPgValues(i,data){
|
|
|
+ this.form.prags[i] = data;
|
|
|
+ //console.log(data,this.form.prags);
|
|
|
+ },
|
|
|
+ getDropList() {
|
|
|
+ return api.getDropList().then((res) =>{
|
|
|
+ if(res.data.code === '0') {
|
|
|
+ this.Adscriptions = res.data.data[1];
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ submitForm() {
|
|
|
+ //验证外层表单
|
|
|
+ let goOn=true,it=null;
|
|
|
+ this.$refs.groups.validate((valid) =>{
|
|
|
+ if(!valid){
|
|
|
+ goOn = false;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //验证段落表单
|
|
|
+ for(let i=0;i<this.$refs.subForm.length;i++){
|
|
|
+ it=this.$refs.subForm[i];
|
|
|
+ it.$refs.form.validate((valid) =>{
|
|
|
+ if(!valid){
|
|
|
+ goOn = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
|
|
|
+ if(!goOn){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //通过必填验证,提交保存
|
|
|
+ const param = {
|
|
|
+ name:this.form.name,
|
|
|
+ detailVOList:Object.assign(this.form.prags),
|
|
|
+ mapVOList:Object.assign(this.form.selectedTags)
|
|
|
};
|
|
|
- this.showSaveDialog(param);
|
|
|
+ //console.log(param);
|
|
|
+ this.showSaveDialog(param);
|
|
|
+ },
|
|
|
+ parseTagsForSubmit(data){
|
|
|
+ return data.map((it)=>{
|
|
|
+ return {questionId:it.id,introduceId:'',type:it.type};
|
|
|
+ });
|
|
|
+ },
|
|
|
+ changeActionData(selectedTags){
|
|
|
+ this.form.selectedTags = this.parseTagsForSubmit(selectedTags);
|
|
|
+ //console.log(selectedTags)
|
|
|
},
|
|
|
showSaveDialog(param) {
|
|
|
- this.showConfirmDialog('是否保存该标签?', () => {
|
|
|
- api.saveOrUpdate(param).then((res) => {
|
|
|
+ this.showConfirmDialog('是否保存该静态知识?', () => {
|
|
|
+ api.savePrompts(param).then((res) => {
|
|
|
if (res.data.code === '0') {
|
|
|
this.warning(res.data.msg || '保存成功', 'success');
|
|
|
this.$router.push("/admin/LT-YXSJWH-TSXXWH");
|