Browse Source

医学术语静态知识维护页面添加

zhouna 6 years ago
parent
commit
ecdfcb1943
3 changed files with 418 additions and 0 deletions
  1. 227 0
      src/components/icss/AddMedicinePrompt.vue
  2. 187 0
      src/components/icss/MedicinePrompt.vue
  3. 4 0
      src/routes.js

+ 227 - 0
src/components/icss/AddMedicinePrompt.vue

@@ -0,0 +1,227 @@
+<template>
+    <div class="NoiseTemplateWrapper TemplateWrapper">
+        <div class="groupTitle"><i
+                class="el-icon-back"
+                @click="back"
+        ></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-select v-model="form.name" :disabled="isEdit">
+                        <el-option>{{}}</el-option>
+                    </el-select>
+                </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>
+            </el-form>
+            <div class="btn">
+                <el-button
+                        type="primary"
+                        @click="submitForm"
+                >确 定</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+  /**
+   *
+   */
+  import api from '@api/icss.js';
+  import utils from '@api/utils.js';
+  import TagPool from './PromptTagPool';
+  import schema from 'async-validator';
+  import InfoParagraph from './InfoParagraph';
+
+  export default {
+    name: 'AddPromptInfo',
+    components: {
+      TagPool,
+      InfoParagraph
+    },
+    data() {
+      return {
+        isEdit:false,
+        tagPool:[],                 //标签池数据
+        Adscriptions:[],            //归属列表
+        editData:{
+          tagFor:'',
+          selectedTags:[],
+          prags:[]
+        },
+        form:{
+          name:'',
+          tagFor:'',
+          selectedTags:[],            //关联标签
+          prags:[{              //单个段落相关
+            title:'',
+            content:'',
+            isReason:0,
+            orderNo:0,
+            position:[],
+            text:''}]
+        },
+        rules: {
+          name: [
+            { required: true, message: '请选择术语标签', trigger: 'change' }
+          ]
+        }
+      }
+    },
+    created:function(){
+      const {isEdit,data} = this.$route.params;
+      if(isEdit){
+        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) },
+      mapStringToNum(str){
+        return str.split(",").map((it)=>{
+          return +it;
+        })
+      },
+      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
+        };
+      },
+      addParagraph(){
+        this.form.prags.push({title:'',
+          content:'',
+          isReason:0,
+          orderNo:0,
+          position:[],
+          text:''});
+      },
+      delParagraph(i){
+        if(this.form.prags.length==1){
+          this.warning('只剩一个段落,不能再删啦!');
+          return;
+        }
+        this.showConfirmDialog('确定要删除该段落?', () => {
+          this.form.prags.splice(i,1);
+        });
+      },
+      getPgValues(i,data){
+        this.form.prags[i] = data;
+        //console.log(data,this.form.prags);
+      },
+      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)
+        };
+        //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.savePrompts(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '保存成功', 'success');
+              this.$router.push("/admin/LT-YXSJWH-TSXXWH");
+            } else {
+              this.warning(res.data.msg)
+            }
+          }).catch((err) => {
+            this.warning(err);
+          })
+        });
+      },
+      showConfirmDialog(msg, resolve) {
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      warning(msg, type) {
+        this.$message({
+          showClose: true,
+          message: msg,
+          type: type || 'warning'
+        })
+      },
+    }
+  }
+</script>
+<style lang="less">
+    @import "../../less/common.less";
+    .info-container{
+        background: #fff;
+        padding: 20px;
+        margin: 20px 20px -20px 20px;
+    .el-input__inner{
+        width: 200px;
+    }
+    .el-form-item__label{
+        text-align: left;
+    }
+    .add-prg .el-form-item{
+        margin-bottom: 20px;
+    }
+    }
+    .line{
+        border-top:1px #dcdfe6 solid;
+        margin-bottom: 25px;
+    }
+</style>
+

+ 187 - 0
src/components/icss/MedicinePrompt.vue

@@ -0,0 +1,187 @@
+<template>
+    <div>
+        <crumbs title="医学术语静态知识维护">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="静态知识名称:">
+                    <el-input size="mini" v-model="filter.name" placeholder="静态知识名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="标签系统名称:">
+                    <el-input size="mini" v-model="filter.tagName" placeholder="标签系统名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <router-link to="/admin/LT-YXSYKWH-TJYXSYJTZS" style="margin:0 10px">
+                        <el-button size="mini" type="warning">添加静态知识</el-button>
+                    </router-link>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table :data="list"
+                      border
+                      style="width: 100%">
+                <el-table-column
+                        type="index"
+                        :index="indexMethod"
+                        label="编号"
+                        width="60">
+                </el-table-column>
+                <el-table-column
+                        prop="gmtOperate"
+                        label="操作时间"
+                        width="180"
+                        :show-overflow-tooltip="true">
+                </el-table-column>
+                <el-table-column
+                        prop="name"
+                        label="静态知识名称">
+                </el-table-column>
+                <el-table-column
+                        prop="tagName"
+                        label="关联标签"
+                        width="240">
+                </el-table-column>
+                <el-table-column
+                        prop="operatorName"
+                        label="操作人"
+                        width="80">
+                </el-table-column>
+
+                <el-table-column
+                        label="操作" width="120">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button type="text" size="small" @click="showDelDialog(scope.row.id)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination v-if="total>pageSize"
+                           :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           layout="total,prev, pager, next, jumper"
+                           :total="total">
+            </el-pagination>
+        </div>
+
+    </div>
+</template>
+
+<script>
+  import api from '@api/icss.js';
+  import utils from '@api/utils.js';
+
+  export default {
+    name: 'prompt-info',
+    data: function () {
+      return {
+        list: [],
+        cacheData: {},
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        linkIn:[],
+        pays:[],
+        filter: {
+          name: '',
+          tagName:''
+        }
+      }
+    },
+    created() {
+      this.getDataList();
+    },
+    methods: {
+      toEditProduct(row){
+        this.$router.push({
+          name:'AddPromptInfo',
+          params: {data:row,isEdit:true}
+        })
+      },
+      filterDatas(){
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      getDataList() {
+        const param = this.getFilterItems();
+        // const param = {
+        //   'name':''
+        // };
+        api.getPromptList(param).then((res) => {
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            this.list = data.records;
+            this.cacheData[param.current] = data.records;
+            this.total = data.total;
+          }
+        }).catch((error) => {
+          console.log(error);
+        });
+      },
+      getDetailList(id) {
+        const param = {'id': id,};
+        this.$router.push({name:'PromptDetail', params:{id: id}})
+      },
+      getFilterItems() {
+        const param = {
+          name:this.filter.name,
+          tagName:this.filter.tagName,
+          current: this.currentPage,
+          size: this.pageSize
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+          this.list = this.cacheData[next];
+        } else {
+          this.getDataList();
+        }
+      },
+      warning(msg,type){
+        this.$message({
+          showClose: true,
+          message:msg,
+          type:type||'warning'
+        })
+      },
+      showConfirmDialog(msg,resolve){
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      showDelDialog(id){
+        this.showConfirmDialog('是否删除该静态知识?',()=>{
+          api.delPromptInfo({id}).then((res)=>{
+            if(res.data.code=='0'){
+              this.warning(res.data.msg||'操作成功','success');
+              this.getDataList();
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .status-span{
+        font-size: 12px;
+        margin-right:10px;
+        color: unset;
+    }
+</style>

+ 4 - 0
src/routes.js

@@ -39,6 +39,8 @@ import AddIndeptLabel from '@components/icss/AddIndeptLabel.vue'//独立标签-
 import PromptInfo from '@components/icss/PromptInfo.vue'//提示信息
 import AddPromptInfo from '@components/icss/AddPromptInfo.vue'//添加提示信息
 import PromptDetail from '@components/icss/PromptDetail.vue'//提示信息详情
+import MedicinePrompt from '@components/icss/MedicinePrompt.vue'   //医学术语静态知识
+import AddMedicinePrompt from '@components/icss/AddMedicinePrompt.vue'   //医学术语静态知识
 
 export default [
   {
@@ -147,6 +149,8 @@ export default [
       {path:'LT-YXSJWH-TSXXWH',component:PromptInfo,name:'PromptInfo'},         //提示信息维护
       {path:'LT-YXSJWH-TJTSXX',component:AddPromptInfo,name:'AddPromptInfo'},         //提示信息维护-添加
       {path:'LT-YXSJWH-TSXXXQ',component:PromptDetail,name:'PromptDetail'},         //提示信息维护详情
+      {path:'LT-YXSYKWH-YXSYJTZSWH',component:MedicinePrompt,name:'MedicinePrompt'},         //医学术语提示信息维护
+      {path:'LT-YXSYKWH-TJYXSYJTZS',component:AddMedicinePrompt,name:'AddMedicinePrompt'},         //医学术语提示信息维护添加
 
 
     ]