Browse Source

质控计划-分配医师:调取审阅医师接口

liyanyan 6 days ago
parent
commit
84c3b57952

+ 0 - 228
src/views/recordsRoom/qc/components/AssignDoctor/AddPlanModal.vue

@@ -1,228 +0,0 @@
-<template>
-    <el-dialog :visible.sync="dialogVisible" class="custom-dialog" :modal="false" :title="getDialogTitle()" width="800px" @close="onCancel">
-        <el-form :model="formData"
-            :rules="rules" ref="formDataRef" label-width="120px">
-            <el-form-item label="质控计划名称" prop="zkjhmc">
-                <el-input v-model="formData.zkjhmc" placeholder="请输入"></el-input>
-            </el-form-item>
-            <el-form-item label="质控计划周期" required>
-              <div style="width: 100%;display: grid;grid-template-columns: 1fr 1fr;gap: 5px;">
-                <el-form-item prop="zkjhzq_kssj">
-                  <el-date-picker style="width: 100%" v-model="formData.zkjhzq_kssj" type="date" placeholder="开始日期"
-                    :picker-options="pickerOptions" value-format="yyyyMMdd" format="yyyy年MM月dd日">
-                  </el-date-picker>
-                </el-form-item>
-                <el-form-item prop="zkjhzq_jssj">
-                  <el-date-picker style="width: 100%" v-model="formData.zkjhzq_jssj" type="date" placeholder="结束日期"
-                    value-format="yyyyMMdd" format="yyyy年MM月dd日">
-                  </el-date-picker>
-                </el-form-item>
-              </div>
-            </el-form-item>
-            <el-form-item label="质控病例数量" required>
-              <div style="width: 100%;display: flex;gap: 5px;">
-                <el-form-item prop="zkblsllx">
-                  <el-radio-group v-model="formData.zkblsllx">
-                    <el-radio :label="1">全部</el-radio>
-                    <el-radio :label="0">自定义</el-radio>
-                  </el-radio-group>
-                </el-form-item>
-                <el-form-item prop="blslnum" label="病历数量">
-                  <el-input style="width: 100%" v-model="formData.blslnum" placeholder="请输入">
-                    <template slot="append">份</template>
-                  </el-input>
-                </el-form-item>
-              </div>
-            </el-form-item>
-        </el-form>
-        <template #footer>
-        </template>
-    </el-dialog>
-</template>
-<script>
-import moment from 'moment/moment';
-import { examineAppeal } from '@/api/qc';
-export default {
-  emits: ['onUpdate'],
-  components: {
-  },
-  data() {
-    const that = this;
-    return {
-        action: 'ADD',
-      dialogVisible: false,
-      formData: {
-        zkjhmc: '',
-        zkjhzq_kssj: '',
-        zkjhzq_jssj: '',
-        zkblsllx: 1,
-        blslnum: ''
-      },
-      rules: {
-        zkjhmc: [{ required: true, message: '请输入' }],
-        zkjhzq_kssj: [{ required: true, message: '请选择' }],
-        zkjhzq_jssj: [{ required: true, message: '请选择' }],
-        zkblsllx: [{ required: true, message: '请选择' }],
-        // blslnum: [{ required: true, message: '输入' }],
-      },
-      pickerOptions: {
-        disabledDate: (time) => {
-          if (that.formData.zkjhzq_jssj != "") {
-            return time.getTime() > Date.now();
-          }
-        },
-        shortcuts: [{
-          text: '今天',
-          onClick(picker) {
-            picker.$emit('pick', moment().format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().format('YYYYMMDD')
-          }
-        }, {
-          text: '近7天',
-          onClick(picker) {
-            picker.$emit('pick', moment().subtract(7, 'days').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().format('YYYYMMDD')
-          }
-        }, {
-          text: '近30天',
-          onClick(picker) {
-            picker.$emit('pick', moment().subtract(30, 'days').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().format('YYYYMMDD')
-          }
-        }, {
-          text: '一季度',
-          onClick(picker) {
-            picker.$emit('pick', moment().startOf('year').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().startOf('year').add(3,'M').subtract(1, 'days').format('YYYYMMDD')
-          }
-        },  {
-          text: '二季度',
-          onClick(picker) {
-            picker.$emit('pick', moment().startOf('year').add(3,'M').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().startOf('year').add(6,'M').subtract(1, 'days').format('YYYYMMDD')
-          }
-        },  {
-          text: '三季度',
-          onClick(picker) {
-            picker.$emit('pick', moment().startOf('year').add(6,'M').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().startOf('year').add(9,'M').subtract(1, 'days').format('YYYYMMDD')
-          }
-        },  {
-          text: '四季度',
-          onClick(picker) {
-            picker.$emit('pick', moment().startOf('year').add(9,'M').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().startOf('year').add(12,'M').subtract(1, 'days').format('YYYYMMDD')
-          }
-        }, {
-          text: moment().add(-2,'Y').format("YYYY"),
-          onClick(picker) {
-            picker.$emit('pick', moment().add(-2,'Y').startOf('year').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().add(-2,'Y').endOf('year').format('YYYYMMDD')
-          }
-        }, {
-          text: moment().add(-1,'Y').format("YYYY"),
-          onClick(picker) {
-            picker.$emit('pick', moment().add(-1,'Y').startOf('year').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().add(-1,'Y').endOf('year').format('YYYYMMDD')
-          }
-        }, {
-          text: moment().format("YYYY"),
-          onClick(picker) {
-            picker.$emit('pick', moment().startOf('year').format('YYYYMMDD'));
-            that.formData.zkjhzq_jssj = moment().endOf('year').format('YYYYMMDD')
-          }
-        }]
-      },
-    };
-  },
-  computed: {},
-  watch: {},
-  created() {},
-  mounted() {},
-  beforeDestroy() {},
-
-  methods: {
-    getDialogTitle() {
-      if(this.action === 'ADD') {
-        return '质控计划配置'
-      }
-      if(this.action === 'EDIT') {
-        return '质控计划配置'
-      }
-    },
-        
-    async openModal(action = 'ADD', params) {
-        this.action = action;
-        if(action == 'EDIT') {
-            this.$nextTick(() => {
-                for(let keys in this.formData) {
-                    this.formData[keys] = params[keys]
-                }
-            })
-        }
-      this.dialogVisible = true;
-    },
-    
-    onSubmit() {
-      this.$refs.formDataRef.validate((valid) => {
-        if (valid) {
-            if(this.action == 'EDIT') {
-                this.$emit('onUpdate')
-                this.dialogVisible = false;
-            }
-            
-            return
-            // 申诉逻辑
-            const pramse = {
-              id: this.currentId,
-              zyh: this.MEDRECID,
-              type: 2,
-              quality_type: this.qualityType,
-              defect_content: this.formData.reason, // 使用 formData 中的原因
-              appeal_docter: this.formData.zkjhmc, // 使用 formData 中的医师
-            };
-            console.log(pramse, 'pramse');
-
-            examineAppeal(pramse).then(res => {
-              if(res.code == 200) {
-                this.$message({
-                  message: '提交申诉成功',
-                  type: 'success',
-                });
-                // 提交后关闭弹框
-                this.dialogVisible = false;
-                this.$emit('onUpdate')
-              }
-            });
-          // 申诉审核通过和驳回逻辑
-        
-        } else {
-          console.log('error submit!!');
-          return false;
-        }
-      });
-      
-    },
-    onCancel() {
-        this.dialogVisible = false;
-        this.$refs.formDataRef && this.$refs.formDataRef.resetFields()
-    }
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-::v-deep .el-dialog__header {
-  background-color: hsl(205.32deg 43.43% 49.22%);
-}
-
-::v-deep .el-dialog__close {
-  color: #fff;
-  border: 1px solid #fff;
-  border-radius: 20px;
-}
-
-::v-deep .el-dialog__title {
-  color: #fff;
-}
-</style>

+ 23 - 6
src/views/recordsRoom/qc/components/AssignDoctor/TableBox.vue

@@ -11,9 +11,20 @@
     <el-table-column v-for="column in columns" :key="column.prop" :prop="column.prop" :label="column.label">
       <template slot-scope="scope">
         <template v-if="scope.row.isEditing">
-          <!-- <el-form-item :prop="column.prop"> -->
-            <el-input v-model="scope.row.editData[column.prop]"></el-input>
-          <!-- </el-form-item> -->
+            <!-- <el-input v-model="scope.row.editData[column.prop]"></el-input> -->
+            <el-select 
+              v-model="scope.row.editData[column.prop]" 
+              filterable 
+              clearable 
+              placeholder="请选择"
+            >
+              <el-option 
+                v-for="item of staffListData" 
+                :key="item.code" 
+                :label="item.name" 
+                :value="item.code" 
+              />
+            </el-select>
         </template>
         <template v-else>
           {{ scope.row[column.prop] }}
@@ -25,7 +36,7 @@
         <template v-if="scope.row.isEditing">
           <el-button type="text" @click="saveRow(scope.row)">保存</el-button>
           <el-button type="text" @click="cancelEdit(scope.row)">取消</el-button>
-=        </template>
+        </template>
         <template v-else>
           <el-button type="text" icon="el-icon-edit" @click="editRow(scope.row, scope.$index)"></el-button>
           <el-button type="text" style="color:#ef1f3a" icon="el-icon-delete" @click="deleteRow(scope.row)"></el-button>
@@ -58,12 +69,18 @@ export default {
       default() {
         return false;
       },
-    }
+    },
+    staffListData: {
+      type: Boolean,
+      default() {
+        return [];
+      },
+    },
   },
   data() {
     return {
       columns: [
-        { prop: 'appeal_docter', label: '所属院区' },
+        { prop: 'ssyq', label: '所属院区' },
         { prop: 'ssks', label: '所属科室' },
         { prop: 'syys', label: '审阅医师' },
         { prop: 'syks', label: '审阅科室' }

+ 13 - 3
src/views/recordsRoom/qc/components/qualityControlPlan/AssignDoctor.vue

@@ -1,8 +1,8 @@
 <template>
     <div>
-      <SearchBoxVue ref="SearchBoxRef" @search="handleSearch" @reset="handleReset" @add="handleAdd" :action="action"/>
+      <SearchBoxVue ref="SearchBoxRef" @search="handleSearch" @reset="handleReset" @add="handleAdd" :action="action" :staffListData="staffListData"/>
       <div>
-        <TableBoxVue :loading="loading" :data="tableData" ref="tableRef" @onUpdate="getList" :action="action"/>
+        <TableBoxVue :loading="loading" :data="tableData" ref="tableRef" @onUpdate="getList" :action="action" :staffListData="staffListData"/>
         <el-row type="flex" justify="end" align="middle">
           <mPagination v-if="tableData && tableData.length !== 0" :data="paginationData" @pageChangeEvent="pageHasChanged"></mPagination>
         </el-row>
@@ -16,7 +16,8 @@
   import TableBoxVue from '@/views/recordsRoom/qc/components/AssignDoctor/TableBox.vue'
   import pagination from '@/components/Pagination/index2.vue'
   import { getCaseAppealList } from '@/api/admin'
-  
+  import { getStaffListData } from '@/api/qc';
+
   export default {
     components: {
       mPagination,
@@ -30,6 +31,7 @@
       return {
         loading: false,
         tableData: [],
+        staffListData: [],
         paginationData: {
           total: 0,
           currentPage: 1,
@@ -41,8 +43,16 @@
     },
     mounted() {
       this.getList()
+      this.getStaffList()
     },
     methods: {
+      // 人员
+      getStaffList() {
+        getStaffListData().then(res => {
+          const { data = [] } = res;
+          this.staffListData = data
+        });
+      },
       getList() {
         this.loading = true
         getCaseAppealList({