morphone1995 4 anos atrás
pai
commit
28d37da19d

+ 2 - 1
src/api/config.js

@@ -341,7 +341,8 @@ export default {
       'editTaskDetail':'/api/mrman/stdMissionDetail/updateMissionDetail',   //任务详情修改
       'delTaskDetail':'/api/mrman/stdMissionDetail/clearMissionDetail',     //任务详情删除
       'autoTest':'/api/mrman/stdBehospitalInfo/analyze',  //自动化测试
-
+      'saveDefaultModuleInfo': '/api/mrman/qc/qcModuleInfo/saveDefaultModuleInfo',  //模板列表首页
+      
   },
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 1 - 1
src/api/index.js

@@ -3,7 +3,7 @@ import config from './config.js';
 
 axios.default.timeout = 500000;
 axios.defaults.headers.post['Content-Type'] = "application/json;charset=utf-8";
-// axios.defaults.baseURL = 'http://192.168.2.236';
+axios.defaults.baseURL = 'http://192.168.2.236';
 // axios.defaults.baseURL = 'http://192.168.2.241';
 // axios.defaults.baseURL = 'http://192.168.3.117:5050';
 

+ 6 - 0
src/api/qualityControl.js

@@ -120,4 +120,10 @@ export default {
   autoTest(param){
     return axios.post(urls.autoTest,param);
   },
+  saveDefaultModuleInfo(param){
+    return axios.post(urls.saveDefaultModuleInfo,param);
+  },
+  saveOrUpdateModuleInfo(param){
+    return axios.post(urls.saveOrUpdateModuleInfo,param);
+  },
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 651 - 500
src/components/qualityControl/AddQualityControlTemp.vue


+ 385 - 314
src/components/qualityControl/QualityControlTemp.vue

@@ -1,349 +1,420 @@
 <template>
-    <div>
-        <crumbs title="模板维护">
-            <el-form :inline="true" class="demo-form-inline">
-              <el-form-item label="模板Id:">
-                    <el-input size="mini" v-model.trim="filter.moduleId" placeholder="模板Id" clearable></el-input>
-                </el-form-item>
-                 <el-form-item label="模板名称:">
-                    <el-input size="mini" v-model.trim="filter.modeName" placeholder="模板名称" clearable></el-input>
-                </el-form-item>
-                <el-form-item label="所属模块:">
-                     <el-select size="mini" v-model.trim="filter.modeId" @change="getValue"  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-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-form-item>
-               
-                <el-form-item>
-                    <el-button size="mini" @click="filterDatas">确认</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="模板Id"
-                        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="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>
+    <crumbs title="模板维护">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="模板Id:">
+          <el-input size="mini" v-model.trim="filter.moduleId" placeholder="模板Id" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="模板名称:">
+          <el-input size="mini" v-model.trim="filter.modeName" placeholder="模板名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="所属模块:">
+          <el-select
+            size="mini"
+            v-model.trim="filter.modeId"
+            @change="getValue"
+            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-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-form-item>
+
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">确认</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="模板Id" 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="operate" label="默认标准模版">
+          <template slot-scope="scope">
+            <el-switch
+              v-model="scope.row.defaultModule"
+              :active-value="1"
+              :inactive-value="0"
+              active-color="#4BC4D7"
+              inactive-color="#BBBBBB"
+              @change="handleTemChange(scope.row)"
+            ></el-switch>
+          </template>
+        </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: 'QualityControlTemp',
-    data: function() {
-      return {
-        list: [],
-        hospitalList: [],
-        moduleList:[],
-        searched: false,
-        filter: {
-          modeName: '', //模板名称
-          moduleId:null, //模板Id
-          modeId: '',//所属模块
-          hospitalName: '', //所属医院
-        },
-        currentPage: 1,
-        pageSize: config.pageSize,
-        pageSizeArr:config.pageSizeArr,
-        pageLayout:config.pageLayout,
-        total: 0,
-      }
+import api from '@api/qualityControl.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+export default {
+  name: 'QualityControlTemp',
+  data: function() {
+    return {
+      list: [],
+      hospitalList: [],
+      moduleList: [],
+      searched: false,
+      filter: {
+        modeName: '', //模板名称
+        moduleId: null, //模板Id
+        modeId: '', //所属模块
+        hospitalName: '' //所属医院
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0
+    };
+  },
+  created() {
+    const _this = this;
+    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: {
+    // 默认标准模版切换
+    handleTemChange(row) {
+      // console.log(row, 'row');
+      let params = {
+        defaultModule: row.defaultModule,
+        defineType: 0,
+        hospitalId: row.hospitalId,
+        id: row.id,
+        modeId: row.modeId,
+        name: row.name
+      };
+
+      api.saveDefaultModuleInfo(params).then(res => {
+        // console.log(res.data);
+        if (res.data.code === '-1') {
+          // 互斥
+          this.$alert('默认标准模版已存在,是否替换?', '提示', {
+            confirmButtonText: '确定',
+            type: 'warning'
+          })
+            .then(() => {
+              params = { ...params, defineType: 1 };
+              api.saveDefaultModuleInfo(params).then(res => {
+                console.log(res,'互斥再次请求的接口返回');
+                this.getDataList();
+              });
+            })
+            .catch(() => {
+              this.getDataList();
+            });
+        } else if (res.data.code === '0') {
+          // 不互斥
+          this.getDataList();
+        }
+      });      
     },
-    created() {
-      const _this=this;
-      setTimeout(function(){
-        _this.getAllTypes().then(()=>{
-          _this.getDataList()
-        })
-      },100);
 
+    moduleFormatter(row, column, cellValue) {
+      const it = this.moduleList.find(item => item.val == cellValue);
+      return it ? it.name : '';
     },
-    watch: {
-      'filter': {
-        handler: function () {
-          this.searched = false;
-        },
-        deep: true
+    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('获取枚举信息失败');
+        }
+      });
     },
-    beforeRouteEnter(to, from, next) {
-      next(vm => {
-        //const pm = to.param;
-        Object.assign(vm, to.params);
-        vm.inCurrentPage=to.params.currentPage;
-      })
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
     },
-    methods: {
-      moduleFormatter(row, column, cellValue){
-        const it = this.moduleList.find(item => item.val == 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("获取枚举信息失败");
-              }
-          });
-      },
-      handleSizeChange(val){
-        this.pageSize = val;
-        this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
-        this.getDataList();
-      },
-      getValue(val) {
-        console.log('changeVal', val, this.filter.tagAdscription)
-      },
-      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.getQCTemplist(param).then((res) => {
-          loading.close()
-          let list = res.data.data.records
-          /*for(let i = 0; i < list.length; i++){
+    getValue(val) {
+      console.log('changeVal', val, this.filter.tagAdscription);
+    },
+    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.getQCTemplist(param).then(res => {
+        loading.close();
+        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;
+        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
           }
-        })
-      },
-      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: 'AddQualityControlTemp',
-          params: pam
-        })
-      },
-      modifyIndeptTag(row, type) {
-        api.getQCTempDetail({moduleId:row.id}).then((res)=>{
-          const {code,data,msg} = res.data;
-          if(code=='0'){
-            const item = Object.assign({},row,data);
-            const pam = this.searched ? {
-              currentPage: this.currentPage,
-              filter: this.filter
-            } : {currentPage: this.currentPage};
-            if(type == 'modify') {
-              this.$router.push({name: 'AddQualityControlTemp', params: Object.assign(pam, {isEdit: true, data: item})});
-            } else if( type == 'copy') {
-              this.$router.push({name: 'AddQualityControlTemp', params: Object.assign(pam, {isCopy: true, data: item})});
-            } else {
-                return
-            }
-          }else{
-            this.$message({
-              message: msg,
-              type: 'warning'
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddQualityControlTemp',
+        params: pam
+      });
+    },
+    modifyIndeptTag(row, type) {
+      api.getQCTempDetail({ moduleId: row.id }).then(res => {
+        const { code, data, msg } = res.data;
+        if (code == '0') {
+          const item = Object.assign({}, row, data);
+          const pam = this.searched
+            ? {
+                currentPage: this.currentPage,
+                filter: this.filter
+              }
+            : { currentPage: this.currentPage };
+          if (type == 'modify') {
+            this.$router.push({
+              name: 'AddQualityControlTemp',
+              params: Object.assign(pam, { isEdit: true, data: item })
+            });
+          } else if (type == 'copy') {
+            this.$router.push({
+              name: 'AddQualityControlTemp',
+              params: Object.assign(pam, { isCopy: true, data: item })
             });
+          } else {
+            return;
           }
-        });
-        //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={
-          name: "",
-          modeId: "",
-          hospitalName: "",
-          id:"",
-
-        };
-      },
-      getFilterItems(isTurnPage) {
-        //翻页时筛选条件没点确定则清空
-        if(isTurnPage&&!this.searched){
-          this.clearFilter();
-        };
-        const {modeName, modeId, hospitalName,moduleId} = this.filter
-        const param = {
-          name: modeName,
-          current: this.inCurrentPage||this.currentPage,
-          size: this.pageSize,
-          modeId: modeId,
-          id:moduleId,
-          hospitalId: hospitalName
-        };
-        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,
+        } else {
+          this.$message({
+            message: msg,
+            type: 'warning'
+          });
         }
-        this.showConfirmDialog('是否删除该模板?',()=>{
-          api.delQCTemp(param).then((res)=>{
-            if(res.data.code=='0'){
-              if(!this.searched){
+      });
+      //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 = {
+        name: '',
+        modeId: '',
+        hospitalName: '',
+        id: ''
+      };
+    },
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const { modeName, modeId, hospitalName, moduleId } = this.filter;
+      const param = {
+        name: modeName,
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        modeId: modeId,
+        id: moduleId,
+        hospitalId: hospitalName
+      };
+      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){
+              if (this.list.length == 1) {
                 //当前在最后一页且只有一条数据时,删除后跳到前一页
-                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                this.currentPage =
+                  this.currentPage === 1 ? 1 : this.currentPage - 1;
               }
               this.getDataList();
-              this.warning(res.data.msg || '操作成功','success');
-            }else{
+              this.warning(res.data.msg || '操作成功', 'success');
+            } else {
               this.warning(res.data.msg);
             }
-          }).catch((error)=>{
-            this.warning(error);
           })
-        });
-      }
+          .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;
-    }
+@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>