瀏覽代碼

标准病历和自动化测试(未完成)

zhangxc 5 年之前
父節點
當前提交
37bc8f260d

+ 432 - 0
src/components/qualityControl/AddStandardRecord.vue

@@ -0,0 +1,432 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="BaseField"></crumbs>
+        <div class="contents">
+            <div class="content">
+            <el-form ref="form" :label-position="labelPosition" label-width="125px" :model="form" :rules="rules">
+                <el-form-item label="所属医院:" prop="hospitalId">
+                    <el-select v-model="form.hospitalId"
+                               placeholder="请选择"
+                                 @change="changeHospital"
+                               size="small">
+                        <el-option
+                                v-for="item in hisTypes"
+                                :key="item.val"
+                                :label="item.name"
+                                :value="Number(item.val)">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="病人住院序号:" prop="hospitalNo">
+                    <el-select v-model="hospitalNo" filterable placeholder="请选择">
+                        <el-option
+                        v-for="item in hospitalNoList"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                        </el-option>
+                    </el-select>  <span>搜索</span>
+                </el-form-item>
+                <div>
+                    <el-table
+                    :data="medicalRecordlist"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        :resizable = "false"
+                        label="所属医院"
+                        prop="id"
+                        >
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="name"
+                        label="病人住院序号"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="病案号">
+                </el-table-column>
+                
+                <el-table-column
+                        :resizable = "false"
+                        prop="hospitalId"
+                        :formatter="hisFormatter"
+                        label="病人姓名">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="性别">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="年龄">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="入院日期">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="出院日期">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modeId"
+                        :formatter="moduleFormatter"
+                        label="加入时间">
+                </el-table-column>
+            </el-table>
+                    
+                </div>
+                <!-- <el-form-item label="所属模块:" prop="modeId">
+                    <el-select v-model="form.modeId"
+                               placeholder="请选择"
+                               @change="changeModule"
+                               size="small">
+                        <el-option
+                                v-for="item in fieldTypes"
+                                :key="item.val"
+                                :label="item.name"
+                                :value="Number(item.val)">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="备注:" prop="tagName">
+                    <el-input type="text" placeholder="请输入备注" v-model.trim="form.tagName"></el-input>
+                </el-form-item>
+                <el-form-item label="显示名称:" prop="name">
+                    <el-input type="text" placeholder="请输入显示名称" v-model.trim="form.name"></el-input>
+                </el-form-item>
+                <el-form-item label="取值字段:" prop="value">
+                    <el-input type="text" placeholder="请输入取值字段" v-model.trim="form.val"></el-input>
+                    
+                </el-form-item>
+                <el-form-item label="关联缺陷条目:" prop="casesEntryIds">
+                    <el-select filterable
+                               multiple
+                               v-model="casesEIds"
+                               placeholder="请选择"
+                               class="big-select"
+                               size="small">
+                        <el-option
+                                v-for="item in flawList"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="String(item.id)">
+                        </el-option>
+                    </el-select>
+                    
+                </el-form-item>
+                <el-form-item>
+                    <el-checkbox v-model="form.monoLine" :true-label="Number(1)" :false-label="Number(0)">独占一行</el-checkbox>
+                    <el-checkbox v-model="form.addLine" :true-label="Number(1)" :false-label="Number(0)">内容换行</el-checkbox>
+                    <el-checkbox v-model="form.position" :true-label="Number(1)" :false-label="Number(0)">靠右显示</el-checkbox>
+                    <el-checkbox v-model="form.bold" :true-label="Number(1)" :false-label="Number(0)">内容加粗</el-checkbox>
+                    <el-checkbox v-model="form.retract" :true-label="Number(1)" :false-label="Number(0)">内容缩进</el-checkbox>
+                </el-form-item> -->
+                <el-button class="disclButn" size="small" type="primary" :disabled = 'saveDisable' @click="comfirn('form')">确定</el-button>
+            </el-form>
+        </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+  import api from '@api/qualityControl.js';
+  export default {
+    name:'AddStandardRecord',
+    data(){
+      return{
+        // data:{},
+        list:[],
+        medicalRecordlist:[],
+        labelPosition:'left',
+        isFirst:true,
+        title:'标准病历-新增',
+        casesEIds:'',
+        form:{
+          modeId:"",
+          hospitalId:"",
+          hospitalNo:"", //病人住院序号
+          name:'',
+          val:'',
+          tagName:'',
+          monoLine:0,
+          addLine:0,
+          bold:0,
+          position:0,
+          retract:0,
+          casesEntryIds:'',
+          quesCasesEntryVOList:[]
+        },
+        id:null,
+        rules:{
+          hospitalId:{ required: true, message: '请选择所属医院', trigger: ['blur', 'change']},
+          hospitalNo:{ required: true, message: '请选择病人住院序号', trigger: ['blur', 'change']},
+          /*name:[{ required: true, message: '请输入显示名称',trigger: ['blur', 'change'] }],*/
+        },
+        copy:null,
+        saveDisable: false,  //保存按钮禁止点击
+        flawList:[],
+        hisTypes:[],
+        hospitalNoList:[], //住院序号列表
+        fieldTypes:[],
+      }
+    },
+    created(){
+      this.getAllTypes();
+      let {isCopy,info} = this.$route.params;
+      this.copy=isCopy;
+      if(info){
+        const infoCopy =  Object.assign({},info);
+        isCopy?infoCopy.id="":"";
+        // infoCopy.casesEntryIds?this.casesEIds = infoCopy.casesEntryIds.split(","):'';
+        let tmpArr = [],tmpArr1 = []
+        for(let i = 0;i < infoCopy.quesCasesEntryDTOList.length;i++){
+          let obj = {
+            name:infoCopy.quesCasesEntryDTOList[i].casesEntryName,
+            casesEntryName:infoCopy.quesCasesEntryDTOList[i].casesEntryName,
+            id:infoCopy.quesCasesEntryDTOList[i].casesEntryId,
+            casesEntryId:infoCopy.quesCasesEntryDTOList[i].casesEntryId
+          }
+          tmpArr.push(""+infoCopy.quesCasesEntryDTOList[i].casesEntryId)
+          tmpArr1.push(obj)
+        }
+        infoCopy.quesCasesEntryDTOList?this.casesEIds = tmpArr:'';
+        infoCopy.quesCasesEntryVOList = [...tmpArr1];
+        this.title=isCopy?"字段映射维护-复制字段映射":'字段映射维护-修改字段映射';
+        this.form = infoCopy;
+        this.getQcFlawList(tmpArr1);
+      }else{
+        let hospitalId = localStorage.getItem("qcSelectHospital")&&Number(localStorage.getItem("qcSelectHospital")) || "";
+        let modeId = localStorage.getItem("qcSelectModule")&&Number(localStorage.getItem("qcSelectModule"))  || "";
+    
+        let qcSelecttModuleNme = localStorage.getItem("qcSelectModuleName");
+        this.form.hospitalId = hospitalId
+        this.form.modeId = modeId
+        this.form.tagName = qcSelecttModuleNme
+        this.getQcFlawList()
+      }
+    },
+    watch:{
+      "casesEIds":function(val){
+        this.form.casesEntryIds = val.join(",");
+        let tmp = []
+        for(let i = 0;i < val.length;i++){
+          let obj = {
+            casesEntryId:val[i],
+            id:val[i],
+          }
+          tmp.push(obj)
+        }
+        this.form.quesCasesEntryVOList = tmp
+      }
+    },
+    methods:{
+      changeHospital(val){
+         localStorage.setItem("qcSelectHospital",val);
+        const mName=localStorage.getItem("qcSelectModuleName");
+        const qcSelecttModuleNme  = this.hisTypes.find(item => Number(item.val) === val).name + '-'+(mName||"");
+        localStorage.setItem("qcSelectModuleName",qcSelecttModuleNme);
+        this.getQcFlawList()
+        this.form.modeId=""
+        this.form.quesCasesEntryDTOList =[]
+        this.casesEIds=[]
+      },
+      changeModule(val){
+         localStorage.setItem("qcSelectModule",val);
+         const shis=localStorage.getItem("qcSelectHospital");
+         const qcSelecttModuleNme  = this.hisTypes.find(item => +item.val === +shis).name + '-'+this.fieldTypes.find(item => Number(item.val) === val).name + '-';
+         this.form.tagName = qcSelecttModuleNme
+          localStorage.setItem("qcSelectModuleName",qcSelecttModuleNme);
+        this.getQcFlawList()
+         this.form.quesCasesEntryDTOList =[]
+        this.casesEIds=[]
+      },
+      getQcFlawList(val){
+        const { hospitalId, modeId } = this.form
+        if(hospitalId === '' || modeId === ''){
+          return
+        }
+        const param={modeId:modeId,hospitalId:hospitalId,name:"",size:500};
+        api.getQcFlawList(param).then((res)=>{
+          if(res.data.code==="0") {
+            const data = res.data.data;
+            this.flawList = []
+            this.flawList = data.records;
+            /*let info = this.$route.params.info;
+            if(info){
+              const infoCopy =  Object.assign({},this.form);
+
+              
+              for(let i = 0;i < infoCopy.quesCasesEntryDTOList.length;i++){
+                let obj = {
+                  name:infoCopy.quesCasesEntryDTOList[i].casesEntryName,
+                  casesEntryName:infoCopy.quesCasesEntryDTOList[i].casesEntryName,
+                  id:infoCopy.quesCasesEntryDTOList[i].casesEntryId,
+                  casesEntryId:infoCopy.quesCasesEntryDTOList[i].casesEntryId
+              }
+              this.flawList.unshift(obj)
+            }
+            }*/
+          }else{
+            this.warning("获取缺陷条目失败");
+          }
+        });
+      },
+      getAllTypes(){
+        if(localStorage.getItem("qcModuleTypes")){
+          this.hisTypes = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+          this.fieldTypes = JSON.parse(localStorage.getItem("qcModuleTypes"));
+          return ;
+        }
+        //获取枚举信息
+        api.getQcTypes().then((res)=>{
+          if(res.data.code==="0"){
+            const data = res.data.data;
+            localStorage.setItem("qcFieldTypes",JSON.stringify(data[11]));
+            localStorage.setItem("qcModuleTypes",JSON.stringify(data[12]));
+            localStorage.setItem("qcHospitalTypes",JSON.stringify(data[13]));
+          }else{
+            this.warning("获取枚举信息失败");
+          }
+        });
+      },
+      comfirn(form){
+        /*if(!this.form.name.trim() || !this.form.refreshTime.trim()){
+          this.$message({
+            message:'请填写相关内容',
+            type:'warning'
+          });
+          return
+        }*/
+        const {hospitalId,modeId,tagName} = this.form
+        if(!hospitalId){
+          this.warning("请选择所属医院");
+          return
+        }
+         if(!modeId){
+          this.warning("请选择所属模块");
+          return
+        }
+         if(!tagName){
+          this.warning("请输入备注");
+          return
+        }
+        // this.$refs[form].validate((valid) => {
+          // if (valid) {
+            const { val } = this.form
+            let regex = /(?<=【)(.+?)(?=】)/g;
+             let regex2 = /[^\u4e00-\u9fa5|a-zA-Z0-9]+/
+            const matchVal = val.match(regex) ||[]
+            let illegalCode = false
+            for(let i = 0; i < matchVal.length; i++){
+              if(regex2.test(matchVal[i])){
+                illegalCode = true
+              }
+            }
+            if(illegalCode){
+              this.warning("取值字段【】含有非法字符")
+              return;
+            }
+
+            if(this.form.id){//修改
+              const param = Object.assign({},this.form);
+              this.saveDisable = true;  //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
+              api.addFieldMatch({questionWrapper:param}).then((res)=>{
+                if(res.data.code==0){
+                  this.$message({
+                    message:"修改成功",
+                    type:'success'
+                  });
+                  //返回带搜索条件的首页
+                  this.$router.push({
+                    name: 'BaseField',
+                    params: Object.assign({}, this.$route.params, {currentPage: 1})
+                  });
+                }else{
+                  this.$message({
+                    message:res.data.msg,
+                    type:'warning'
+                  });
+                }
+                this.saveDisable = false
+              })
+            }else{//添加
+              const params = Object.assign({},this.form);
+              this.saveDisable = true;  //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
+              api.addFieldMatch({questionWrapper:params}).then((res)=>{
+                if(res.data.code==0){
+                  this.$message({
+                    message:"添加成功",
+                    type:'success'
+                  });
+                  this.$router.push({name: 'BaseField'});
+                }else{
+                  this.$message({
+                    message:res.data.msg,
+                    type:'warning'
+                  });
+                }
+                this.saveDisable = false
+              })
+            }
+          // } else {
+          //   return false;
+          // }
+        // });
+      },
+      warning(msg, type,time) {
+          this.$message({
+              showClose: true,
+              message: msg,
+              type: type || 'warning',
+              duration:time || '3000'
+          })
+      },
+    }
+  }
+</script>
+<style>
+    .content .el-form-item.is-success .el-input__inner{
+        border-color: #ccc;
+    }
+    .content .el-form-item.is-success .el-input__inner:focus{
+        border-color: #48C5D7;
+    }
+</style>
+<style lang="less" scoped>
+    .content {
+        background: #fff;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .el-checkbox{
+            display: inline-block;
+        }
+    }
+    /deep/.el-input{
+              .el-input__inner{
+                    height: 30px;
+                    line-height: 30px;
+              }
+            }
+    .el-form-item{
+        width: 600px;
+    }
+    .el-select.big-select{
+        width: 360px;
+    }
+</style>

+ 354 - 0
src/components/qualityControl/AutoTestStat.vue

@@ -0,0 +1,354 @@
+<template>
+    <div>
+        <crumbs title="自动化测试统计">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="所属医院:">
+                    <el-select size="mini" v-model.trim="filter.hospitalId" @change="getValue"  placeholder="所属医院" clearable>
+                        <el-option v-for="item in hospitalList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="所属模块:">
+                     <el-select size="mini" v-model.trim="filter.casesId"  placeholder="所属模块" clearable>
+                        <el-option v-for="item in moduleList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="缺陷名称:">
+                    <el-input size="mini" v-model.trim="filter.entryName" placeholder="缺陷名称" clearable></el-input>
+                </el-form-item>
+               
+                <el-form-item label="条目编码:">
+                    <el-input size="mini" v-model.trim="filter.code" placeholder="条目编码" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="transformTask">转化为任务</el-button>
+                    <el-button size="mini" type="warning" @click="addTemp">自动化测试</el-button>
+                </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
+                        :resizable = "false"
+                        label="所属医院"
+                        prop="hospitalId"
+                        :formatter="hisFormatter"
+                        >
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="casesName"
+                        label="所属模块">
+                </el-table-column>
+                 <el-table-column
+                        :resizable = "false"
+                        prop="entryName"
+                        label="缺陷名称"
+                        width="180"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="code"
+                        label="条目编码">
+                </el-table-column>
+                 <el-table-column
+                        :resizable = "false"
+                        prop="typeStr"
+                        label="差异数量"
+                        show-overflow-tooltip>
+                </el-table-column>
+                    <el-table-column
+                        :resizable = "false"
+                        prop="typeStr"
+                        label="病人住院序号"
+                        show-overflow-tooltip>
+                </el-table-column>
+             
+            </el-table>
+          <el-pagination  :current-page.sync="currentPage"
+                          @current-change="currentChange"
+                          background
+                          :page-size.sync="pageSize"
+                          :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                          :layout="pageLayout"
+                          :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/qualityControl.js';
+  import config from '@api/config.js';
+  import utils from '@api/utils.js'
+  export default {
+    name: 'ItemDataType',
+    data: function() {
+      return {
+        list: [],
+        hospitalList: [],
+        moduleList:[],
+        qcTypeNameList:[],
+        searched: false,
+        filter: {
+          typeName:"",//质控类型名称
+          hospitalId: "", //所属医院
+          entryName:"", //条目名称
+          casesId:null,//所属模块
+          code:"",//条目编码
+        },
+        currentPage: 1,
+        pageSize: config.pageSize,
+        pageSizeArr:config.pageSizeArr,
+        pageLayout:config.pageLayout,
+        total: 0,
+      }
+    },
+    created() {
+      const _this=this;
+      this.getTypeNameList()
+      setTimeout(function(){
+        _this.getAllTypes().then(()=>{
+          _this.getDataList()
+        })
+      },100);
+
+    },
+    watch: {
+      'filter': {
+        handler: function () {
+          this.searched = false;
+        },
+        deep: true
+      }
+    },
+    beforeRouteEnter(to, from, next) {
+      next(vm => {
+        //const pm = to.param;
+        Object.assign(vm, to.params);
+        vm.inCurrentPage=to.params.currentPage;
+      })
+    },
+    methods: {
+      moduleFormatter(row, column, cellValue){
+        const it = this.moduleList.find(item => item.id == cellValue);
+        return it?it.name:'';
+      },
+      hisFormatter(row, column, cellValue){
+        const it = this.hospitalList.find(item => item.val == cellValue);
+        return it?it.name:'';
+      },
+      getAllTypes(){
+          if(localStorage.getItem("qcModuleTypes")){
+              this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+              this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              return new Promise(function(resolve, reject){
+                  resolve()
+              });
+          }
+          //获取枚举信息
+          return api.getQcTypes().then((res)=>{
+              if(res.data.code==="0"){
+                  const data = res.data.data;
+                  localStorage.setItem("qcFieldTypes",JSON.stringify(data[11]));
+                  localStorage.setItem("qcModuleTypes",JSON.stringify(data[12]));
+                  localStorage.setItem("qcHospitalTypes",JSON.stringify(data[13]));
+                  this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+                  this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              }else{
+                  this.warning("获取枚举信息失败");
+              }
+          });
+      },
+      getTypeNameList(hospitalId){
+        api.getQcEntryTypeByHospital({hospitalId:hospitalId}).then((res) => {
+          if(res.data.code == 0){
+            // let list = res.data.data.records
+              this.qcTypeNameList = res.data.data
+          }
+          
+        })
+      },
+      handleSizeChange(val){
+        this.pageSize = val;
+        this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+        this.getDataList();
+      },
+      getValue(val) {
+        console.log('changeVal', )
+        THIS.filter.typeName = ""
+      },
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
+        this.searched = true;
+        const loading = this.$loading({
+            lock: true,
+            text: 'Loading',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+        });
+        api.getQcEntryTypeList(param).then((res) => {
+          loading.close()
+          if(res.data.code == 0){
+            let list = res.data.data.records
+          /*for(let i = 0; i < list.length; i++){
+            list[i].hospitalId = this.hospitalList.find(item => item.val == list[i].hospitalId).name
+            list[i].modeId  = this.moduleList.find(item => item.val == list[i].modeId).name
+          }*/
+          this.list = list;
+          this.total = res.data.data.total;
+          if(this.inCurrentPage!==undefined){
+            this.currentPage=this.inCurrentPage;
+            this.inCurrentPage = undefined;
+          }
+          }
+          
+        })
+      },
+      filterDatas() {
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      addTemp() {
+        const pam = this.searched ? {
+          currentPage: this.currentPage,
+          pageSize:this.pageSize,
+          filter: this.filter
+        } : {currentPage: this.currentPage,pageSize:this.pageSize};
+        this.$router.push({
+          name: 'ItemDataTypeRelation',
+          params: pam
+        })
+      },
+      transformTask(){
+          const pam = this.searched ? {
+          currentPage: this.currentPage,
+          pageSize:this.pageSize,
+          filter: this.filter
+        } : {currentPage: this.currentPage,pageSize:this.pageSize};
+        this.$router.push({
+          name: 'TransformTask',
+          params: pam
+        })
+      },
+     
+      currentChange(next) {
+        this.currentPage = next;
+        this.getDataList(true);
+        // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        //     this.list = this.cacheData[next];
+        // } else {
+        //     this.getDataList();
+        // }
+      },
+      clearFilter(){
+        this.filter={
+          hospitalId: "",
+          typeName:"",
+          entryName:"",
+          casesId:null,
+          code:""
+        };
+      },
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
+        const {hospitalId,typeName,entryName,casesId,code} = this.filter
+        const param = {
+          current: this.inCurrentPage||this.currentPage,
+          size: this.pageSize,
+          hospitalId: hospitalId,
+          typeName:typeName,
+          entryName:entryName,
+          casesId:casesId,
+          code:code
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      getTagType(val) {
+        return val
+      },
+      warning(msg,type){
+        this.$message({
+          showClose: true,
+          dangerouslyUseHTMLString: true,
+          message:'<p>'+msg+'</p>',
+          type:type||'warning'
+        })
+      },
+      showConfirmDialog(msg,resolve){
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      showDelDialog(row){
+        const param = {
+          "ids": row.id,
+        }
+        this.showConfirmDialog('是否删除该模板?',()=>{
+          api.delQCTemp(param).then((res)=>{
+            if(res.data.code=='0'){
+              if(!this.searched){
+                //未点确认时清空搜索条件
+                this.clearFilter();
+              }
+              if(this.list.length==1){
+                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+              }
+              this.getDataList();
+              this.warning(res.data.msg || '操作成功','success');
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+
+<style lang="less">
+  @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+  .el-pagination__sizes{
+      margin-right: 20px;
+    .el-input .el-input__inner{
+        height: 28px;
+        line-height: 28px;
+    }
+  }
+</style>

+ 367 - 0
src/components/qualityControl/AutoTestStatDetail.vue

@@ -0,0 +1,367 @@
+<template>
+    <div>
+        <crumbs title="详情" linkTo="TransformTask">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="所属医院:">
+                    <el-select size="mini" v-model.trim="filter.hospitalId" @change="getValue"  placeholder="所属医院" clearable>
+                        <el-option v-for="item in hospitalList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="所属模块:">
+                     <el-select size="mini" v-model.trim="filter.casesId"  placeholder="所属模块" clearable>
+                        <el-option v-for="item in moduleList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="缺陷名称:">
+                    <el-input size="mini" v-model.trim="filter.entryName" placeholder="缺陷名称" clearable></el-input>
+                </el-form-item>
+               
+                <el-form-item label="条目编码:">
+                    <el-input size="mini" v-model.trim="filter.code" placeholder="条目编码" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                </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
+                        :resizable = "false"
+                        label="所属医院"
+                        prop="hospitalId"
+                        :formatter="hisFormatter"
+                        >
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="casesName"
+                        label="所属模块">
+                </el-table-column>
+                 <el-table-column
+                        :resizable = "false"
+                        prop="entryName"
+                        label="缺陷名称"
+                        width="180"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="code"
+                        label="条目编码">
+                </el-table-column>
+                 <el-table-column
+                        :resizable = "false"
+                        prop="typeStr"
+                        label="差异数量"
+                        show-overflow-tooltip>
+                </el-table-column>
+                    <el-table-column
+                        :resizable = "false"
+                        prop="typeStr"
+                        label="病人住院序号"
+                        show-overflow-tooltip>
+                </el-table-column>
+             
+            </el-table>
+          <el-pagination  :current-page.sync="currentPage"
+                          @current-change="currentChange"
+                          background
+                          :page-size.sync="pageSize"
+                          :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                          :layout="pageLayout"
+                          :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/qualityControl.js';
+  import config from '@api/config.js';
+  import utils from '@api/utils.js'
+  export default {
+    name: 'TransformTask',
+    data: function() {
+      return {
+        list: [],
+        hospitalList: [],
+        moduleList:[],
+        qcTypeNameList:[],
+        searched: false,
+        filter: {
+          typeName:"",//质控类型名称
+          hospitalId: "", //所属医院
+          entryName:"", //条目名称
+          casesId:null,//所属模块
+          code:"",//条目编码
+        },
+        currentPage: 1,
+        pageSize: config.pageSize,
+        pageSizeArr:config.pageSizeArr,
+        pageLayout:config.pageLayout,
+        total: 0,
+      }
+    },
+    created() {
+      const _this=this;
+      this.getTypeNameList()
+      setTimeout(function(){
+        _this.getAllTypes().then(()=>{
+          _this.getDataList()
+        })
+      },100);
+
+    },
+    watch: {
+      'filter': {
+        handler: function () {
+          this.searched = false;
+        },
+        deep: true
+      }
+    },
+    beforeRouteEnter(to, from, next) {
+      next(vm => {
+        //const pm = to.param;
+        Object.assign(vm, to.params);
+        vm.inCurrentPage=to.params.currentPage;
+      })
+    },
+    methods: {
+      moduleFormatter(row, column, cellValue){
+        const it = this.moduleList.find(item => item.id == cellValue);
+        return it?it.name:'';
+      },
+      hisFormatter(row, column, cellValue){
+        const it = this.hospitalList.find(item => item.val == cellValue);
+        return it?it.name:'';
+      },
+      getAllTypes(){
+          if(localStorage.getItem("qcModuleTypes")){
+              this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+              this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              return new Promise(function(resolve, reject){
+                  resolve()
+              });
+          }
+          //获取枚举信息
+          return api.getQcTypes().then((res)=>{
+              if(res.data.code==="0"){
+                  const data = res.data.data;
+                  localStorage.setItem("qcFieldTypes",JSON.stringify(data[11]));
+                  localStorage.setItem("qcModuleTypes",JSON.stringify(data[12]));
+                  localStorage.setItem("qcHospitalTypes",JSON.stringify(data[13]));
+                  this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+                  this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              }else{
+                  this.warning("获取枚举信息失败");
+              }
+          });
+      },
+      getTypeNameList(hospitalId){
+        api.getQcEntryTypeByHospital({hospitalId:hospitalId}).then((res) => {
+          if(res.data.code == 0){
+            // let list = res.data.data.records
+              this.qcTypeNameList = res.data.data
+          }
+          
+        })
+      },
+      handleSizeChange(val){
+        this.pageSize = val;
+        this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+        this.getDataList();
+      },
+      getValue(val) {
+        console.log('changeVal', )
+        THIS.filter.typeName = ""
+      },
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
+        this.searched = true;
+        const loading = this.$loading({
+            lock: true,
+            text: 'Loading',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+        });
+        api.getQcEntryTypeList(param).then((res) => {
+          loading.close()
+          if(res.data.code == 0){
+            let list = res.data.data.records
+          /*for(let i = 0; i < list.length; i++){
+            list[i].hospitalId = this.hospitalList.find(item => item.val == list[i].hospitalId).name
+            list[i].modeId  = this.moduleList.find(item => item.val == list[i].modeId).name
+          }*/
+          this.list = list;
+          this.total = res.data.data.total;
+          if(this.inCurrentPage!==undefined){
+            this.currentPage=this.inCurrentPage;
+            this.inCurrentPage = undefined;
+          }
+          }
+          
+        })
+      },
+      filterDatas() {
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      addTemp() {
+        const pam = this.searched ? {
+          currentPage: this.currentPage,
+          pageSize:this.pageSize,
+          filter: this.filter
+        } : {currentPage: this.currentPage,pageSize:this.pageSize};
+        this.$router.push({
+          name: 'ItemDataTypeRelation',
+          params: pam
+        })
+      },
+      modifyIndeptTag(row, type) {
+        api.getQcEntryTypeDetail({ "entryId": row.entryId,"hospitalId": row.hospitalId}).then((res)=>{
+          const {code,data,msg} = res.data;
+          const hospitalItem = this.hospitalList.find(item => item.val == row.hospitalId);
+         const hospitalName = hospitalItem ? hospitalItem.name:''
+          if(code=='0'){
+            const item = Object.assign({},{hospitalName:hospitalName},data);
+            const pam = this.searched ? {
+              currentPage: this.currentPage,
+              filter: this.filter
+            } : {currentPage: this.currentPage};
+            if(type == 'modify') {
+              this.$router.push({name: 'ItemDataTypeRelation', params: Object.assign(pam, {isEdit: true, data: item})});
+            } else if( type == 'copy') {
+              this.$router.push({name: 'ItemDataTypeRelation', params: Object.assign(pam, {isCopy: true, data: item})});
+            } else {
+                return
+            }
+          }else{
+            this.$message({
+              message: msg,
+              type: 'warning'
+            });
+          }
+        });
+        //this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:row}});
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        this.getDataList(true);
+        // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        //     this.list = this.cacheData[next];
+        // } else {
+        //     this.getDataList();
+        // }
+      },
+      clearFilter(){
+        this.filter={
+          hospitalId: "",
+          typeName:"",
+          entryName:"",
+          casesId:null,
+          code:""
+        };
+      },
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
+        const {hospitalId,typeName,entryName,casesId,code} = this.filter
+        const param = {
+          current: this.inCurrentPage||this.currentPage,
+          size: this.pageSize,
+          hospitalId: hospitalId,
+          typeName:typeName,
+          entryName:entryName,
+          casesId:casesId,
+          code:code
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      getTagType(val) {
+        return val
+      },
+      warning(msg,type){
+        this.$message({
+          showClose: true,
+          dangerouslyUseHTMLString: true,
+          message:'<p>'+msg+'</p>',
+          type:type||'warning'
+        })
+      },
+      showConfirmDialog(msg,resolve){
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      showDelDialog(row){
+        const param = {
+          "ids": row.id,
+        }
+        this.showConfirmDialog('是否删除该模板?',()=>{
+          api.delQCTemp(param).then((res)=>{
+            if(res.data.code=='0'){
+              if(!this.searched){
+                //未点确认时清空搜索条件
+                this.clearFilter();
+              }
+              if(this.list.length==1){
+                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+              }
+              this.getDataList();
+              this.warning(res.data.msg || '操作成功','success');
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+
+<style lang="less">
+  @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+  .el-pagination__sizes{
+      margin-right: 20px;
+    .el-input .el-input__inner{
+        height: 28px;
+        line-height: 28px;
+    }
+  }
+</style>

+ 36 - 16
src/components/qualityControl/StandardRecord.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div class="standardRecordWrapper">
         <crumbs title="标准病历维护">
             <el-form :inline="true" class="demo-form-inline">
               <el-form-item label="病人住院序号:">
@@ -14,9 +14,17 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item label="出院日期:">
-                    <el-select size="mini" v-model.trim="filter.hospitalName" @change="getValue"  placeholder="所属医院" clearable>
-                        <el-option v-for="item in hospitalList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
-                    </el-select>
+                    <el-date-picker
+                      v-model="filter.date1"
+                      type="date"
+                      placeholder="选择日期">
+                    </el-date-picker>
+                    <span>-</span>
+                    <el-date-picker
+                      v-model="filter.date2"
+                      type="date"
+                      placeholder="选择日期">
+                    </el-date-picker>
                 </el-form-item>
                
                 <el-form-item>
@@ -134,6 +142,8 @@
           moduleId:null, //模板Id
           modeId: '',//所属模块
           hospitalName: '', //所属医院
+          date1:"",
+          date2:"",
         },
         currentPage: 1,
         pageSize: config.pageSize,
@@ -240,7 +250,7 @@
           filter: this.filter
         } : {currentPage: this.currentPage,pageSize:this.pageSize};
         this.$router.push({
-          name: 'AddQualityControlTemp',
+          name: 'AddStandardRecord',
           params: pam
         })
       },
@@ -357,18 +367,28 @@
 
 <style lang="less">
   @import "../../less/admin.less";
-    .delete{
-        color: red
-    }
-    .delete:hover {
-        color: red;
-    }
-    .el-select .el-input .el-icon-arrow-up{
-        display: inline-block!important;
-    }
-    .el-select .el-input .el-icon-circle-close{
-        float:left;
+  .standardRecordWrapper{
+    .el-date-editor.el-input{
+      width: 115px;
+      input{
+        padding: 0 5px;
+        width: 115px;
+        height: 25px;
+      }
     }
+  }
+  .delete{
+      color: red
+  }
+  .delete:hover {
+      color: red;
+  }
+  .el-select .el-input .el-icon-arrow-up{
+      display: inline-block!important;
+  }
+  .el-select .el-input .el-icon-circle-close{
+      float:left;
+  }
   .el-pagination__sizes{
       margin-right: 20px;
     .el-input .el-input__inner{

+ 352 - 0
src/components/qualityControl/TransformTask.vue

@@ -0,0 +1,352 @@
+<template>
+    <div>
+        <crumbs title="转化为任务" linkTo="AutoTestStat">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="所属医院:">
+                    <el-select size="mini" v-model.trim="filter.hospitalId" @change="getValue"  placeholder="所属医院" clearable>
+                        <el-option v-for="item in hospitalList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="所属模块:">
+                     <el-select size="mini" v-model.trim="filter.casesId"  placeholder="所属模块" clearable>
+                        <el-option v-for="item in moduleList" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                 <el-form-item label="缺陷名称:">
+                    <el-input size="mini" v-model.trim="filter.entryName" placeholder="缺陷名称" clearable></el-input>
+                </el-form-item>
+               
+                <el-form-item label="条目编码:">
+                    <el-input size="mini" v-model.trim="filter.code" placeholder="条目编码" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addTemp">转化为任务</el-button>
+                    <el-button size="mini" type="warning" @click="addTemp">自动化测试</el-button>
+                </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
+                        :resizable = "false"
+                        label="任务名称"
+                        prop="hospitalId"
+                        :formatter="hisFormatter"
+                        >
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyIndeptTag(scope.row, 'modify')" type="text" size="small">详情</el-button>
+                        <!-- <span style="margin:0 3px;">|</span>
+                        <el-button @click="modifyIndeptTag(scope.row, 'copy')" class="text" type="text" size="small">复制</el-button> -->
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="showDelDialog(scope.row)" class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+          <el-pagination  :current-page.sync="currentPage"
+                          @current-change="currentChange"
+                          background
+                          :page-size.sync="pageSize"
+                          :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                          :layout="pageLayout"
+                          :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/qualityControl.js';
+  import config from '@api/config.js';
+  import utils from '@api/utils.js'
+  export default {
+    name: 'TransformTask',
+    data: function() {
+      return {
+        list: [],
+        hospitalList: [],
+        moduleList:[],
+        qcTypeNameList:[],
+        searched: false,
+        filter: {
+          typeName:"",//质控类型名称
+          hospitalId: "", //所属医院
+          entryName:"", //条目名称
+          casesId:null,//所属模块
+          code:"",//条目编码
+        },
+        currentPage: 1,
+        pageSize: config.pageSize,
+        pageSizeArr:config.pageSizeArr,
+        pageLayout:config.pageLayout,
+        total: 0,
+      }
+    },
+    created() {
+      const _this=this;
+      this.getTypeNameList()
+      setTimeout(function(){
+        _this.getAllTypes().then(()=>{
+          _this.getDataList()
+        })
+      },100);
+
+    },
+    watch: {
+      'filter': {
+        handler: function () {
+          this.searched = false;
+        },
+        deep: true
+      }
+    },
+    beforeRouteEnter(to, from, next) {
+      next(vm => {
+        //const pm = to.param;
+        Object.assign(vm, to.params);
+        vm.inCurrentPage=to.params.currentPage;
+      })
+    },
+    methods: {
+      moduleFormatter(row, column, cellValue){
+        const it = this.moduleList.find(item => item.id == cellValue);
+        return it?it.name:'';
+      },
+      hisFormatter(row, column, cellValue){
+        const it = this.hospitalList.find(item => item.val == cellValue);
+        return it?it.name:'';
+      },
+      getAllTypes(){
+          if(localStorage.getItem("qcModuleTypes")){
+              this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+              this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              return new Promise(function(resolve, reject){
+                  resolve()
+              });
+          }
+          //获取枚举信息
+          return api.getQcTypes().then((res)=>{
+              if(res.data.code==="0"){
+                  const data = res.data.data;
+                  localStorage.setItem("qcFieldTypes",JSON.stringify(data[11]));
+                  localStorage.setItem("qcModuleTypes",JSON.stringify(data[12]));
+                  localStorage.setItem("qcHospitalTypes",JSON.stringify(data[13]));
+                  this.hospitalList = JSON.parse(localStorage.getItem("qcHospitalTypes"));
+                  this.moduleList = JSON.parse(localStorage.getItem("qcModuleTypes"));
+              }else{
+                  this.warning("获取枚举信息失败");
+              }
+          });
+      },
+      getTypeNameList(hospitalId){
+        api.getQcEntryTypeByHospital({hospitalId:hospitalId}).then((res) => {
+          if(res.data.code == 0){
+            // let list = res.data.data.records
+              this.qcTypeNameList = res.data.data
+          }
+          
+        })
+      },
+      handleSizeChange(val){
+        this.pageSize = val;
+        this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+        this.getDataList();
+      },
+      getValue(val) {
+        console.log('changeVal', )
+        THIS.filter.typeName = ""
+      },
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
+        this.searched = true;
+        const loading = this.$loading({
+            lock: true,
+            text: 'Loading',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+        });
+        api.getQcEntryTypeList(param).then((res) => {
+          loading.close()
+          if(res.data.code == 0){
+            let list = res.data.data.records
+          /*for(let i = 0; i < list.length; i++){
+            list[i].hospitalId = this.hospitalList.find(item => item.val == list[i].hospitalId).name
+            list[i].modeId  = this.moduleList.find(item => item.val == list[i].modeId).name
+          }*/
+          this.list = list;
+          this.total = res.data.data.total;
+          if(this.inCurrentPage!==undefined){
+            this.currentPage=this.inCurrentPage;
+            this.inCurrentPage = undefined;
+          }
+          }
+          
+        })
+      },
+      filterDatas() {
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      addTemp() {
+        const pam = this.searched ? {
+          currentPage: this.currentPage,
+          pageSize:this.pageSize,
+          filter: this.filter
+        } : {currentPage: this.currentPage,pageSize:this.pageSize};
+        this.$router.push({
+          name: 'ItemDataTypeRelation',
+          params: pam
+        })
+      },
+      modifyIndeptTag(row, type) {
+        api.getQcEntryTypeDetail({ "entryId": row.entryId,"hospitalId": row.hospitalId}).then((res)=>{
+          const {code,data,msg} = res.data;
+          const hospitalItem = this.hospitalList.find(item => item.val == row.hospitalId);
+         const hospitalName = hospitalItem ? hospitalItem.name:''
+          if(code=='0'){
+            const item = Object.assign({},{hospitalName:hospitalName},data);
+            const pam = this.searched ? {
+              currentPage: this.currentPage,
+              filter: this.filter
+            } : {currentPage: this.currentPage};
+            if(type == 'modify') {
+              this.$router.push({name: 'ItemDataTypeRelation', params: Object.assign(pam, {isEdit: true, data: item})});
+            } else if( type == 'copy') {
+              this.$router.push({name: 'ItemDataTypeRelation', params: Object.assign(pam, {isCopy: true, data: item})});
+            } else {
+                return
+            }
+          }else{
+            this.$message({
+              message: msg,
+              type: 'warning'
+            });
+          }
+        });
+        //this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:row}});
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        this.getDataList(true);
+        // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        //     this.list = this.cacheData[next];
+        // } else {
+        //     this.getDataList();
+        // }
+      },
+      clearFilter(){
+        this.filter={
+          hospitalId: "",
+          typeName:"",
+          entryName:"",
+          casesId:null,
+          code:""
+        };
+      },
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
+        const {hospitalId,typeName,entryName,casesId,code} = this.filter
+        const param = {
+          current: this.inCurrentPage||this.currentPage,
+          size: this.pageSize,
+          hospitalId: hospitalId,
+          typeName:typeName,
+          entryName:entryName,
+          casesId:casesId,
+          code:code
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      getTagType(val) {
+        return val
+      },
+      warning(msg,type){
+        this.$message({
+          showClose: true,
+          dangerouslyUseHTMLString: true,
+          message:'<p>'+msg+'</p>',
+          type:type||'warning'
+        })
+      },
+      showConfirmDialog(msg,resolve){
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      showDelDialog(row){
+        const param = {
+          "ids": row.id,
+        }
+        this.showConfirmDialog('是否删除该条任务?',()=>{
+          return
+          api.delQCTemp(param).then((res)=>{
+            if(res.data.code=='0'){
+              if(!this.searched){
+                //未点确认时清空搜索条件
+                this.clearFilter();
+              }
+              if(this.list.length==1){
+                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+              }
+              this.getDataList();
+              this.warning(res.data.msg || '操作成功','success');
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+
+<style lang="less">
+  @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+  .el-pagination__sizes{
+      margin-right: 20px;
+    .el-input .el-input__inner{
+        height: 28px;
+        line-height: 28px;
+    }
+  }
+</style>

+ 10 - 2
src/routes.js

@@ -132,8 +132,13 @@ import AddQualityControlTemp from '@components/qualityControl/AddQualityControlT
 import QCTypeMang from '@components/qualityControl/QCTypeMang.vue';
 import AddQcType from '@components/qualityControl/AddQcType.vue';
 import StandardRecord from '@components/qualityControl/StandardRecord.vue';
+import AddStandardRecord from '@components/qualityControl/AddStandardRecord.vue';
 import ItemDataType from '@components/qualityControl/ItemDataType.vue';
 import ItemDataTypeRelation from '@components/qualityControl/ItemDataTypeRelation.vue';
+import AutoTestStat from '@components/qualityControl/AutoTestStat.vue'; //自动化测试
+import TransformTask from '@components/qualityControl/TransformTask.vue'; //转化为任务
+import AutoTestStatDetail from '@components/qualityControl/AutoTestStatDetail.vue'; //自动化测试详情
+
 
 
 
@@ -341,8 +346,11 @@ export default [
       {path: 'LT-BLZK-PLGLBLTM',name:'ManageItemBatch', component: ManageItemBatch},//病例条目
       {path:'LT-ZKYMSJWH-ZKLXWH',name:'QCTypeMang',component: QCTypeMang},  //质控类型
       {path:'LT-ZKYMSJWH-TJZKLXWH',name:'AddQcType',component: AddQcType},  //添加质控类型
-      {path:'LT-ZKYMSJWH-BZBL',name:'StandardRecord',component: StandardRecord},  //添加质控类型
-      
+      {path:'LT-ZKYMSJWH-BZBL',name:'StandardRecord',component: StandardRecord},  //标准病历
+      {path:'LT-ZKYMSJWH-TJBZBL',name:'AddStandardRecord',component: AddStandardRecord},  //添加标准病历
+      {path:'LT-ZKYMSJWH-ZDHCSTJ',name:'AutoTestStat',component: AutoTestStat},  //自动化测试
+      {path:'LT-ZKYMSJWH-ZDHCSTJRW',name:'TransformTask',component: TransformTask},  //自动化测试
+      {path:'LT-ZKYMSJWH-ZDHCSTJXQ',name:'AutoTestStatDetail',component: AutoTestStatDetail},  //自动化测试
 
     ]
   }