Ver código fonte

医学术语属性维护(未完成)

zhangxc 6 anos atrás
pai
commit
bd615cb6e9

+ 318 - 0
src/components/icss/AddMedicalInfo.vue

@@ -0,0 +1,318 @@
+<template>
+    <div class="MedicalInfoWrapper">
+        <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 = "concept">
+                   <el-select v-model="form.concept" clearable placeholder="请选择" size="small">
+                        <el-option
+                            v-for="item in conceptList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="选择类型:" prop="type">
+                   <el-select v-model="form.type" clearable placeholder="请选择" size="small">
+                        <el-option
+                            v-for="item in typeList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="术语名称:" prop="termName">
+                   <el-input v-model="form.termName"></el-input>
+                </el-form-item>
+                 <el-form-item label="术语标准名称:" prop="termStandardName">
+                   <el-input v-model="form.termStandardName"></el-input>
+                </el-form-item>
+                 <el-form-item label="术语小类名称:" prop="termMiniClassName">
+                   <el-input v-model="form.termMiniClassName"></el-input>
+                </el-form-item>
+                <el-form-item label="术语类组:" prop="termClass">
+                   <el-input v-model="form.termClass"></el-input>
+                </el-form-item>
+                <el-form-item label="性别:" prop="sex">
+                   <el-select v-model="form.sex" clearable placeholder="请选择" size="small">
+                        <el-option
+                            v-for="item in typeList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item
+                    label="年龄"
+                    class="fix-inp"
+                    prop="age"
+                >
+                    <el-col :span="10">
+                        <el-input v-model="form.minAge"
+                                maxLength="3"
+                        ></el-input>
+                    </el-col>
+                    <el-col :span="4">~</el-col>
+                    <el-col :span="10">
+                        <el-input
+                            v-model="form.maxAge"
+                            maxLength="3"
+                        ></el-input>
+                    </el-col>
+                </el-form-item>
+                <el-form-item label="一级部位:" prop="primarySite">
+                    <el-select v-model="form.primarySite" clearable placeholder="请选择" size="small">
+                        <el-option
+                            v-for="item in typeList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="二级部位:" prop="twoLevelPosition">
+                    <el-select v-model="form.twoLevelPosition" clearable placeholder="请选择" size="small">
+                        <el-option
+                            v-for="item in typeList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="显示顺序:" prop="order">
+                   <el-input v-model="form.order"></el-input>
+                </el-form-item>
+                <el-form-item label="科室:" prop="department">
+                   <el-input v-model="form.department"></el-input>
+                </el-form-item>
+                <el-form-item label="术语编码:" prop="termCode">
+                   <el-input v-model="form.termCode"></el-input>
+                </el-form-item>
+                <el-form-item label="备注:" prop="remark">
+                   <el-input  type="textarea"  v-model="form.remark"></el-input>
+                </el-form-item>
+            </el-form>
+            <div class="btn">
+                <el-button
+                        type="primary"
+                        @click="submitForm"
+                >确 定</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+  /**
+   *
+   */
+  import api from '@api/icss.js';
+
+  export default {
+    name: 'AddMedicinePrompt',
+    components: {
+    },
+    data() {
+      return {
+        isEdit:false,
+        conceptList: [
+            {
+              name:'概念1',
+              id:1,
+              key:1
+            },
+            {
+              name:'概念2',
+              id:2,
+              key:2
+            },
+            {
+              name:'概念3',
+              id:3,
+              key:3
+            },
+        ],
+        typeList:[
+            {
+              name:'类型1',
+              id:1,
+              key:1
+            },
+            {
+              name:'类型2',
+              id:2,
+              key:2
+            },
+            {
+              name:'类型3',
+              id:3,
+              key:3
+            },
+        ],
+        form:{
+            concept: '',
+        },
+        rules: {
+            termName: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            termStandardName: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            termMiniClassName: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            termClass: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            sex: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            age: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            primarySite: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            twoLevelPosition: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+            department: [
+                { required: true, message: '请选择模板归属', trigger: 'change' }
+            ],
+        }
+      }
+    },
+    watch:{
+      
+    },
+    created:function(){
+      const {isEdit,data} = this.$route.params;
+      if(isEdit){
+        this.isEdit = isEdit;
+      }
+    },
+    methods: {
+      back() { this.$router.go(-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.selectedTerm.libId,
+          detailVOList:Object.assign(this.form.prags)
+        };
+        console.log(param);
+        this.showSaveDialog(param);
+      },
+      showSaveDialog(param) {
+        this.showConfirmDialog('是否保存该静态知识?', () => {
+          api.saveTermPrompts(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '保存成功', 'success');
+              this.$router.push("/admin/LT-YXSYKWH-YXSYJTZSWH");
+            } 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";
+    .MedicalInfoWrapper {
+
+        .fix-inp{
+            width: 330px;
+        }
+        .fix-inp .el-col .el-input__inner{
+            width: 100%;
+            display: inline-block;
+        }
+        .fix-inp .el-col-4{
+            text-align: center;
+        }
+        .fix-inp .el-col-8{
+            text-align: center;
+        }
+        .el-textarea__inner {
+            width: 400px;
+        }
+        .info-container{
+            background: #fff;
+            padding: 20px;
+            margin: 20px 20px -20px 20px;
+        .el-input__inner{
+            width: 200px;
+            height: 32px;
+        }
+        .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>
+

+ 235 - 0
src/components/icss/MedicalInfo.vue

@@ -0,0 +1,235 @@
+<template>
+    <div>
+        <crumbs title="医学术语属性">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="医学术语:">
+                    <el-input size="mini" v-model="filter.proName" placeholder="输入术语" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="术语类型:">
+                    <el-select v-model="filter.termType" clearable placeholder="请选择" size="mini">
+                        <el-option
+                            v-for="item in termTypeList"
+                            :key="item.key"
+                            :label="item.name"
+                            :value="item.key">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" @click="uploadClick">导入</el-button>
+                    <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" accept=".csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
+                    <router-link to="/admin/LT-YXSYKWH-TJYXSYXX" 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="操作时间"
+                        :show-overflow-tooltip="true">
+                </el-table-column>
+                <el-table-column
+                        prop="questionName"
+                        label="医学标准术语"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="operatorName"
+                        label="操作人">
+                </el-table-column>
+                
+                <el-table-column
+                        label="操作" width="160">
+                    <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" class="delete" @click="showDelDialog(scope.row.questionId)">删除</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';
+  export default {
+    name: 'MedicalInfo',
+    data: function () {
+      return {
+        list: [],
+        cacheData: {},
+        termTypeList: [
+            {
+              name:'类型1',
+              id:1,
+              key:1
+            },
+            {
+              name:'类型2',
+              id:2,
+              key:2
+            },
+            {
+              name:'类型3',
+              id:3,
+              key:3
+            },
+        ],
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        filter: {
+          proName: '',
+          termType:''
+        }
+      }
+    },
+    created() {
+      this.getDataList();
+    },
+    methods: {
+      toEditProduct(row){
+        // this.$router.push({
+        //   name:'AddSimilarName',
+        //   params: {id:row.questionId,name:row.questionName}
+        // })
+      },
+      filterDatas(){
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      getDataList() {
+        const param = this.getFilterItems();
+        /*api.similarName(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:'DeptInfoDetail', params:{id: id}})
+      },
+      getFilterItems() {
+        const param = {
+          questionName: this.filter.proName,
+          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.delSimilarName({questionId: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);
+          })
+        });
+      },
+      uploadClick(){
+        let inp = document.getElementById("upFile");
+        inp.click();
+      },
+      uploadFile(e){
+        let fileInfo = e.target.files[0];
+        e.preventDefault();
+        let formData = new FormData();
+        formData.append('uploadfile', fileInfo);
+        console.log(123,fileInfo,formData);
+        const header = {
+          headers:{
+            'Content-Type': 'multipart/form-data'
+          }
+        }
+        api.uploadFile(formData,header).then((res)=>{
+          if(res.data.code==0){
+            this.$message({
+              message: '上传成功',
+              type: 'success',
+            });
+          }else{
+            this.$message.error(res.data.msg);
+          }
+        })
+        this.getDataList();
+        /*//解决上传相同文件不触发change
+        let inp = document.getElementById("upFile");
+        inp.value = "";
+        */
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+    @import "../../less/admin.less";
+    .delete{
+        color: red;
+    }
+    .el-table .cell{
+      overflow: hidden;
+      white-space: nowrap;
+    }
+    #upFile{
+      display: none !important;
+    }
+</style>