Browse Source

Merge branch 'master' into 'master'

新增科室字典以及指标显示优化

See merge request lighter/vue-intergration-platform!63
huangshuhua 1 year ago
parent
commit
8fdd32bb82

+ 62 - 0
src/api/dictionary/personnel/deptDict.js

@@ -0,0 +1,62 @@
+import request from '../../../utils/request'
+
+/**
+ * 查询所有科室
+ * @param {*} text 输入内容
+ * @returns 
+ */
+export function selectDeptDict(text) {
+    return request({
+        url: '/personnel/selectDeptDict',
+        method: 'get',
+        params: { text },
+    })
+}
+
+/**
+ * 查询科室分类字典
+ * @returns 
+ */
+export function selectUnitClass() {
+    return request({
+        url: '/personnel/selectUnitClass',
+        method: 'get',
+        params: {},
+    })
+}
+
+/**
+ * 查询有效科室
+ * @returns 
+ */
+export function selectDeptDictForEffective() {
+    return request({
+        url: '/personnel/selectDeptDictForEffective',
+        method: 'get',
+        params: {},
+    })
+}
+
+/**
+ * 根据编码查询科室
+ * @returns 
+ */
+export function selectDeptDictByCode(code) {
+    return request({
+        url: '/personnel/selectDeptDictByCode',
+        method: 'get',
+        params: { code },
+    })
+}
+
+/**
+ * 根据编码查询科室
+ * @returns 
+ */
+export function saveDeptDict(data) {
+    return request({
+        url: '/personnel/saveDeptDict',
+        method: 'post',
+        data
+    })
+}

+ 5 - 0
src/router/modules/dashboard.js

@@ -341,6 +341,11 @@ const route = [
                 component: createNameComponent(() => import('@/views/dictionary/OprtDoctorLevel.vue')),
                 meta: {title: '手术医生级别管理'},
             },
+            {
+                path: 'personnel/deptDict',
+                component: createNameComponent(() => import('@/views/dictionary/personnel/DeptDict.vue')),
+                meta: {title: '科室字典'},
+            },
         ],
     },
     {

+ 133 - 0
src/views/dictionary/personnel/DeptDict.vue

@@ -0,0 +1,133 @@
+<template>
+    <page-layer>
+        <template #header>
+            <el-input v-model="text" class="w-50 m-2" style="width: 160px" placeholder="请输入关键字" clearable />
+            <el-button type="primary" icon="Search" @click="qeryDeptDict" style="margin-left: 5px">查询</el-button>
+            <!-- <el-button type="primary" icon="Download" @click="exportData" style="margin-left: 5px">导出</el-button> -->
+        </template>
+        <template #main>
+            <el-table :data="tableData.slice(pageSize * (currentPage - 1), pageSize * currentPage)" border
+                style="width: 100%" :height="tableHeight" stripe highlight-current-row>
+                <el-table-column type="index" label="序号" width="50" fixed />
+                <el-table-column prop="delFlag" label="停用" width="50" fixed>
+                    <template #default="scope">
+                        <span v-if="scope.row.delFlag === '1'" style="color:#d12920;">停用</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="code" label="科室编码" width="120" fixed />
+                <el-table-column prop="name" label="名称" width="180" fixed />
+                <el-table-column prop="className" label="分类" />
+                <el-table-column prop="pyCode" label="拼音码" width="120" />
+                <el-table-column prop="dcode" label="五笔码" width="120" />
+                <el-table-column prop="ncode" label="院内码" />
+                <el-table-column prop="mzFlag" label="门诊开放">
+                    <template #default="scope">
+                        <span v-if="scope.row.mzFlag === '1'" style="color:#007175;">是</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="yjFlag" label="医技上线">
+                    <template #default="scope">
+                        <span v-if="scope.row.yjFlag === '1'" style="color:#007175;">是</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="xnhDeptCode" label="新农合科室编码" width="100" />
+                <el-table-column prop="xnhDeptName" label="新农合科室名称" width="180" />
+                <el-table-column prop="parentName" label="父科室" width="180" />
+                <el-table-column prop="ghChargeFlag" label="收取挂号费">
+                    <template #default="scope">
+                        <span v-if="scope.row.ghChargeFlag === '1'" style="color:#007175;">是</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="supplyFlag" label="用药方式执行科室" width="120">
+                    <template #default="scope">
+                        <span v-if="scope.row.supplyFlag === '1'" style="color:#007175;">是</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="ghjzFlag" label="门诊挂号就诊" width="100">
+                    <template #default="scope">
+                        <span v-if="scope.row.ghjzFlag === '1'" style="color:#007175;">是</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="officePos" label="就诊地点" width="280" />
+                <el-table-column label="操作" fixed="right" width="150" align="center" header-align="center">
+                    <template #default="scope">
+                        <el-button type="primary" size="small" @click="handleEdit(scope.row)">编辑</el-button>
+                        <el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination :current-page="currentPage" :page-size="pageSize" :page-sizes="[15, 30, 45, 60]"
+                :total="tableData.length" layout="total, sizes, prev, pager, next, jumper" style="margin-top: 5px"
+                @size-change="handleSizeChange" @current-change="handleCurrentChange">
+            </el-pagination>
+        </template>
+    </page-layer>
+    <el-dialog v-model="showDeptEdit" :close-on-click-modal="false" :title="deptTitle" width="70%">
+        <DeptInformation :deptDetail="deptDetail" />
+    </el-dialog>
+</template>
+<script setup name="DeptDict">
+import { ref, reactive, onMounted, nextTick } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import store from '@/store'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { selectDeptDict, selectDeptDictByCode } from '@/api/dictionary/personnel/deptDict.js'
+import DeptInformation from '@/views/dictionary/personnel/DeptInformation.vue'
+
+const windowSize = store.state.app.windowSize;
+const tableHeight = windowSize.h / 1.07;
+const pageSize = ref(30)
+const currentPage = ref(1)
+const handleSizeChange = (val) => {
+    pageSize.value = val
+}
+const handleCurrentChange = (val) => {
+    currentPage.value = val
+}
+const text = ref('')
+const tableData = ref([])
+const deptTitle = ref('')
+const showDeptEdit = ref(false)
+const deptDetail = ref({})
+
+onMounted(() => {
+    nextTick(() => {
+        qeryDeptDict()
+    })
+})
+
+// 查询科室字典
+const qeryDeptDict = () => {
+    selectDeptDict(text.value)
+        .then((res) => {
+            tableData.value = res
+        });
+}
+
+const handleEdit = (row) => {
+    selectDeptDictByCode(row.code).then((res) => {
+        deptTitle.value = '编辑科室信息'
+        deptDetail.value = res
+        showDeptEdit.value = true
+    })
+}
+
+const handleDelete = (row) => {
+    console.log(row);
+    ElMessage({
+        type: "warning",
+        message: "功能更新中,请等待。。。",
+        duration: 2500,
+        showClose: true,
+    });
+    return
+
+}
+
+</script>

+ 212 - 0
src/views/dictionary/personnel/DeptInformation.vue

@@ -0,0 +1,212 @@
+<template>
+    <PageLayer>
+        <template #header class="hd-cl">
+            <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存</el-button>
+            <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)"
+                style="margin-left: 10px">重置</el-button>
+        </template>
+        <template #mainMaxContentHeight>
+            <el-form ref="ruleFormRef" label-width="127px" :model="deptForm" class="demo-ruleForm" :size="formSize">
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="科室编码" prop="code">
+                            <el-input v-model="deptForm.code" minlength="0" maxlength="7" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="科室名称" prop="name">
+                            <el-input v-model="deptForm.name" minlength="0" maxlength="30" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="分类" prop="classCode">
+                            <el-select v-model="deptForm.classCode" placeholder="请选择科室分类" clearable>
+                                <el-option v-for="item in unitClassList" :key="item.code" :label="item.name"
+                                    :value="item.code">
+                                    <span style="float: left">{{ item.code }}</span>
+                                    <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
+                                        {{ item.name }}
+                                    </span>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="父科室" prop="parentCode">
+                            <el-select v-model="deptForm.parentCode" placeholder="请选择父科室" clearable>
+                                <el-option v-for="item in deptUseList" :key="item.code" :label="item.name"
+                                    :value="item.code">
+                                    <span style="float: left">{{ item.code }}</span>
+                                    <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
+                                        {{ item.name }}
+                                    </span>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="院内码" prop="ncode">
+                            <el-input v-model="deptForm.ncode" minlength="0" maxlength="8" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="是否停用" prop="delFlag">
+                            <el-switch v-model="deptForm.delFlag" active-value="0" inactive-value="1" active-color="#13ce66"
+                                inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="新农合科室编码" prop="xnhDeptCode">
+                            <el-input v-model="deptForm.xnhDeptCode" minlength="0" maxlength="18" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="新农合科室名称" prop="xnhDeptName">
+                            <el-input v-model="deptForm.xnhDeptName" minlength="0" maxlength="48" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="门诊开放" prop="mzFlag">
+                            <el-switch v-model="deptForm.mzFlag" active-value="1" inactive-value="0" active-color="#13ce66"
+                                inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="医技上线" prop="yjFlag">
+                            <el-switch v-model="deptForm.yjFlag" active-value="1" inactive-value="0" active-color="#13ce66"
+                                inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="收取挂号费" prop="ghChargeFlag">
+                            <el-switch v-model="deptForm.ghChargeFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="门诊挂号就诊" prop="ghjzFlag">
+                            <el-switch v-model="deptForm.ghjzFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="用药方式执行科室" prop="supplyFlag">
+                            <el-switch v-model="deptForm.supplyFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="18">
+                        <el-form-item label="就诊地点" prop="officePos">
+                            <el-input v-model="deptForm.officePos" minlength="0" maxlength="64" show-word-limit />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+        </template>
+    </PageLayer>
+</template>
+<script setup name="ReportLevel">
+import { ref, onMounted, nextTick } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import { selectDeptDictForEffective, selectUnitClass, saveDeptDict } from '@/api/dictionary/personnel/deptDict.js'
+// import { FormInstance, FormRules } from 'element-plus'
+import { ElMessage, ElMessageBox } from 'element-plus'
+const props = defineProps({
+    deptDetail: {
+        type: Object,
+        default: {}
+    }
+})
+let deptForm = ref({
+    code: '', // 科室编码
+    name: '', // 科室名称
+    classCode: '', // 分类
+    parentCode: '', // 父科室(code)
+    ncode: '', // 院内码
+    delFlag: '', // 停用
+    xnhDeptCode: '', // 新农合科室编码
+    xnhDeptName: '', // 新农合科室名称
+    mzFlag: '', // 门诊开放
+    yjFlag: '', // 医技上线
+    ghChargeFlag: '', // 收取挂号费
+    ghjzFlag: '', // 门诊挂号就诊
+    supplyFlag: '', // 用药方式执行科室
+    officePos: '', // 就诊地点
+})
+const formSize = ref('default')
+const ruleFormRef = ref()
+const deptUseList = ref([])
+const unitClassList = ref([])
+
+watch(() => props.deptDetail, () => {
+    console.log(props.deptDetail)
+    deptForm.value = props.deptDetail
+})
+
+onMounted(() => {
+    nextTick(() => {
+        selectDeptUseData()
+        selectUnitClassData()
+        deptForm.value = props.deptDetail
+    })
+})
+
+// 查询有效科室字典
+const selectDeptUseData = () => {
+    selectDeptDictForEffective()
+        .then((res) => {
+            deptUseList.value = res
+        });
+}
+
+// 查询科室分类
+const selectUnitClassData = () => {
+    selectUnitClass()
+        .then((res) => {
+            unitClassList.value = res
+        });
+}
+
+// ---------- 保存报表 ------------
+const submitForm = async (formEl) => {
+    if (!formEl) return
+
+    ElMessageBox.confirm('请确认是否保存最新科室信息?', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+    }).then(() => {
+        console.log('确定&取消')
+        ElMessage({
+            type: "success",
+            message: "功能更新中,请等待。。。",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+        // await saveDeptDict(deptForm).then((res) => {
+        //     console.log(res)
+
+        // })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            console.log('取消')
+        }
+    })
+
+}
+
+// ---------- 重置报表 ------------
+const resetForm = (formEl) => {
+    if (!formEl) return
+    formEl.resetFields()
+}
+
+</script>

+ 2 - 3
src/views/target-management/target-comm/ReportLevel.vue

@@ -119,7 +119,7 @@ const levelTypeList = [
   {'code': '2', 'name': '图表类型'},
 ]
 
-let levelForm = reactive({
+let levelForm = ref({
   levelId: '', // 报表分组类型id
   levelName: '', // 报表分组类型名称
   reportId: '', // 报表id
@@ -137,8 +137,7 @@ let levelForm = reactive({
 
 onMounted(() => {
   nextTick(() => {
-    levelForm = props.reportLevelDetail
-    console.log(props.reportLevelDetail);
+    levelForm.value = props.reportLevelDetail as any
   })
 })
 

+ 195 - 179
src/views/target-management/target-dict/TargetDictConfig.vue

@@ -1,65 +1,61 @@
 <template>
   <el-row :gutter="5">
     <el-col :span="8">
-      <TargetTree v-if="isShowTree" :targetTreeData="targetTreeData" @treeNodeClick="treeNodeClick"/>
+      <TargetTree v-if="isShowTree" :targetTreeData="targetTreeData" @treeNodeClick="treeNodeClick" />
     </el-col>
     <el-col :span="16">
       <PageLayer>
         <template #header class="hd-cl">
-          <el-button type="primary" icon="Plus" @click="addForm(ruleFormRef)"
-                     style="margin-left: 10px">新增
+          <el-button type="primary" icon="Plus" @click="addForm(ruleFormRef)" style="margin-left: 10px">新增
           </el-button>
-          <el-button type="primary" icon="Edit" @click="editForm(ruleFormRef)"
-                     style="margin-left: 10px">编辑
+          <el-button type="primary" icon="Edit" @click="editForm(ruleFormRef)" style="margin-left: 10px">编辑
           </el-button>
-          <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)"
-                     style="margin-left: 10px">保存
+          <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存
           </el-button>
-          <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)"
-                     style="margin-left: 10px">重置
+          <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)" style="margin-left: 10px">重置
           </el-button>
         </template>
         <template #main>
-          <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
-                   :size="formSize" status-icon :disabled="isShowForm">
+          <el-form ref="ruleFormRef" :model="ruleForm" :rules="rulesForm" label-width="120px" class="demo-ruleForm"
+            :size="formSize" status-icon :disabled="isShowForm">
             <el-row>
               <el-col :span="12">
                 <el-form-item label="指标名称" prop="name">
-                  <el-input v-model="ruleForm.name" minlength="1" maxlength="256" show-word-limit/>
+                  <el-input v-model="ruleForm.name" minlength="1" maxlength="256" show-word-limit />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="指标编码" prop="id">
-                  <el-input v-model="ruleForm.id" minlength="1" maxlength="12" show-word-limit/>
+                  <el-input v-model="ruleForm.id" minlength="1" maxlength="12" show-word-limit />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="父级编码" prop="pid">
-                  <el-input v-model="ruleForm.pid" minlength="1" maxlength="12" show-word-limit/>
+                  <el-input v-model="ruleForm.pid" minlength="1" maxlength="12" show-word-limit />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
               <el-col :span="6">
                 <el-form-item label="指标序号" prop="sort">
-                  <el-input v-model="ruleForm.sort" maxlength="12" show-word-limit/>
+                  <el-input v-model="ruleForm.sort" maxlength="12" show-word-limit />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="总分" prop="score">
-                  <el-input v-model="ruleForm.score" placeholder="请输入正整数或两位小数"/>
+                  <el-input v-model="ruleForm.score" placeholder="请输入正整数或两位小数" />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="所占比率" prop="ratio" :disabled="true">
-                  <el-input v-model="ruleForm.ratio" minlength="0" maxlength="48" show-word-limit/>
+                  <el-input v-model="ruleForm.ratio" minlength="0" maxlength="48" show-word-limit />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="对接类型">
                   <el-select v-model="ruleForm.type" placeholder="请选择类型">
-                    <el-option label="V1" value="0"/>
-                    <el-option label="V2" value="1"/>
+                    <el-option label="V1" value="0" />
+                    <el-option label="V2" value="1" />
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -68,66 +64,64 @@
               <el-col :span="6">
                 <el-form-item label="状态" prop="state">
                   <el-select v-model="ruleForm.state" placeholder="请选择状态">
-                    <el-option label="开启" value="Y"/>
-                    <el-option label="关闭" value="N"/>
+                    <el-option label="开启" value="Y" />
+                    <el-option label="关闭" value="N" />
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="启用时间">
                   <el-form-item prop="openTime">
-                    <el-date-picker v-model="ruleForm.openTime" type="date" label="选择时间"
-                                    placeholder="选择时间" style="width: 100%"/>
+                    <el-date-picker v-model="ruleForm.openTime" type="date" label="选择时间" placeholder="选择时间"
+                      style="width: 100%" />
                   </el-form-item>
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="责任科室" prop="deptCode">
                   <el-select-v2 ref="deptInfoRef" v-model="ruleForm.deptCode" clearable remote filterable
-                                :remote-method="deptMethod" :options="deptWardList"/>
+                    :remote-method="deptMethod" :options="deptWardList" />
                 </el-form-item>
               </el-col>
               <el-col :span="6">
                 <el-form-item label="责任人" prop="opId">
                   <el-select-v2 ref="opInfoRef" v-model="ruleForm.opId" clearable remote filterable
-                                :remote-method="empMethod" :options="empList"/>
+                    :remote-method="empMethod" :options="empList" />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-form-item label="是否叶子节点" prop="isLeaf">
               <el-switch v-model="ruleForm.isLeaf" active-value="1" inactive-value="0" active-color="#13ce66"
-                         inactive-color="#ff4949" @change='changeNode(ruleFormRef)'/>
+                inactive-color="#ff4949" @change='changeNode(ruleFormRef)' />
             </el-form-item>
             <el-form-item label="指标定义" prop="definition">
-              <el-input v-model="ruleForm.definition" type="textarea"/>
+              <el-input v-model="ruleForm.definition" type="textarea" />
             </el-form-item>
             <el-form-item label="评审方法" prop="method">
-              <el-input v-model="ruleForm.method" type="textarea" :rows="4"/>
+              <el-input v-model="ruleForm.method" type="textarea" :rows="4" />
             </el-form-item>
             <el-form-item label="计分细则" prop="scoreRule">
-              <el-input v-model="ruleForm.scoreRule" type="textarea"/>
+              <el-input v-model="ruleForm.scoreRule" type="textarea" />
             </el-form-item>
             <el-form-item label="数据来源条件" prop="source">
-              <el-input v-model="ruleForm.source" type="textarea"
-                        placeholder="请描述指标数据来源条件,比如:诊断包含xxx, 诊断编码是xxx等等"/>
+              <el-input v-model="ruleForm.source" type="textarea" placeholder="请描述指标数据来源条件,比如:诊断包含xxx, 诊断编码是xxx等等" />
             </el-form-item>
-            <el-divider/>
-            <el-form ref="upFormRef" label-width="180px" :model="sqlForm" class="demo-ruleForm"
-                     :size="formSize">
+            <el-divider />
+            <el-form ref="upFormRef" label-width="180px" :model="sqlForm" class="demo-ruleForm" :size="formSize">
               <el-row>
                 <el-col :span="8">
                   <el-form-item label="开始年份">
                     <el-form-item prop="startTime">
-                      <el-date-picker v-model="sqlForm.startTime" type="year" label="选择年份"
-                                      placeholder="选择年份" format="YYYY" value-format="YYYY" :disabled="false"/>
+                      <el-date-picker v-model="sqlForm.startTime" type="year" label="选择年份" placeholder="选择年份"
+                        format="YYYY" value-format="YYYY" :disabled="false" />
                     </el-form-item>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
                   <el-form-item label="结束年份">
                     <el-form-item prop="endTime">
-                      <el-date-picker v-model="sqlForm.endTime" type="year" label="选择年份"
-                                      placeholder="选择年份" format="YYYY" value-format="YYYY" :disabled="false"/>
+                      <el-date-picker v-model="sqlForm.endTime" type="year" label="选择年份" placeholder="选择年份" format="YYYY"
+                        value-format="YYYY" :disabled="false" />
                     </el-form-item>
                   </el-form-item>
                 </el-col>
@@ -161,70 +155,66 @@
               </el-row>
             </el-form>
             <el-form ref="upFormRef" label-width="180px" :model="sqlForm" class="demo-ruleForm" :size="formSize"
-                     :disabled="isShowTargetResult" v-show="isShowTargetResult">
+              :disabled="isShowTargetResult" v-show="isShowTargetResult">
               <el-row v-for="item in resultList">
                 <el-col :span="8">
                   <el-form-item :label="item.childLabel" :prop="item.childLabel + item.index">
-                    <el-input v-model="item.childResult"/>
+                    <el-input v-model="item.childResult" />
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
                   <el-form-item :label="item.momLabel" :prop="item.momLabel + item.index">
-                    <el-input v-model="item.momResult"/>
+                    <el-input v-model="item.momResult" />
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
                   <el-form-item :label="item.calcLabel" :prop="item.calcLabel + item.index">
-                    <el-input v-model="item.calcResult"/>
+                    <el-input v-model="item.calcResult" />
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
             <el-form ref="upFormRef" label-width="120px" :model="sqlForm" class="demo-ruleForm" :size="formSize"
-                     v-show="isShowHandWrite">
+              v-show="isShowHandWrite">
               <el-row v-for="e in 4">
                 <el-col :span="6">
                   <el-form-item :label="'年份' + e" :prop="'year' + e" :rules="[
-                                        { type: 'number', message: '年份必须是数字' },
-                                    ]">
-                    <el-input v-model.number="sqlForm['year' + e]" minlength="4" maxlength="4"
-                              show-word-limit/>
+                    { type: 'number', message: '年份必须是数字' },
+                  ]">
+                    <el-input v-model.number="sqlForm['year' + e]" minlength="4" maxlength="4" show-word-limit />
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
                   <el-form-item :label="'分子结果' + e" :prop="'childResult' + e">
-                    <el-input v-model="sqlForm['childResult' + e]" minlength="1" maxlength="12"
-                              show-word-limit/>
+                    <el-input v-model="sqlForm['childResult' + e]" minlength="1" maxlength="12" show-word-limit />
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
                   <el-form-item :label="'分母结果' + e" :prop="'momResult' + e">
-                    <el-input v-model="sqlForm['momResult' + e]" minlength="1" maxlength="12"
-                              show-word-limit/>
+                    <el-input v-model="sqlForm['momResult' + e]" minlength="1" maxlength="12" show-word-limit />
                   </el-form-item>
                 </el-col>
                 <el-col :span="6">
                   <el-form-item :label="'分子/分母-结果' + e" :prop="'calcResult' + e">
-                    <el-input v-model="sqlForm['calcResult' + e]" minlength="1" maxlength="12"
-                              show-word-limit/>
+                    <el-input v-model="sqlForm['calcResult' + e]" minlength="1" maxlength="12" show-word-limit />
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
             <el-row v-show="isShowQtResult">
-              <el-table :data="QtResultData" stripe border highlight-current-row row-key="childKey"
-                        height="200" style="width: 100%">
-                <el-table-column prop="year" label="年份" header-align="center"/>
+              <el-table :data="QtResultData" stripe border highlight-current-row row-key="childKey" height="200"
+                style="width: 100%">
+                <el-table-column prop="year" label="年份" header-align="center" />
                 <el-table-column prop="dataType" label="数据方式" header-align="center">
                   <template #default="scope">
                     {{ scope.row.dataType == '1' ? 'sql统计' : '手动输入' }}
                   </template>
                 </el-table-column>
-                <el-table-column prop="childResult" label="分子结果" header-align="center"/>
-                <el-table-column prop="momResult" label="分母结果" header-align="center"/>
-                <el-table-column prop="calcResult" label="计算结果" header-align="center"/>
-                <el-table-column prop="op" label="统计人员" header-align="center"/>
-                <el-table-column prop="opTime" label="统计时间" header-align="center" width="200"/>
+                <el-table-column prop="childResult" label="分子结果" header-align="center" />
+                <el-table-column prop="momResult" label="分母结果" header-align="center" />
+                <el-table-column prop="calcResult" label="计算结果" header-align="center" />
+                <el-table-column prop="op" label="统计人员" header-align="center" />
+                <el-table-column prop="opTime" label="统计时间" header-align="center" width="200" />
               </el-table>
             </el-row>
           </el-form>
@@ -234,21 +224,21 @@
   </el-row>
 
   <el-drawer :title="'Sql编辑'" v-model="isSqlEdit" size="80%" destroy-on-close>
-    <SqlEditPage :sqlEditData="sqlEditData"/>
+    <SqlEditPage :sqlEditData="sqlEditData" />
   </el-drawer>
 </template>
 <script setup name="TargetDictConfig" lang="ts">
-import {ref, reactive, onMounted, nextTick} from 'vue'
+import { ref, reactive, onMounted, nextTick } from 'vue'
 import TargetTree from '../target-comm/targetTree.vue'
 import SqlEditPage from '../target-comm/SqlEditPage.vue'
-import {ElMessage, ElMessageBox} from 'element-plus'
-import type {FormInstance, FormRules} from 'element-plus'
-import {clone} from '../../../utils/clone'
-import {formatDate} from '../../../utils/date'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
+import { clone } from '../../../utils/clone'
+import { formatDate } from '../../../utils/date'
 import PageLayer from '../../../layout/PageLayer.vue'
-import {queryDept} from '../../../api/public-api'
-import {selectTargetDictById, selectTargetDictTree, saveTargetDict} from '../../../api/target-management/target-dict'
-import {employeeList} from "../../../api/zhu-yuan-yi-sheng/pat-info-query"
+import { queryDept } from '../../../api/public-api'
+import { selectTargetDictById, selectTargetDictTree, saveTargetDict } from '../../../api/target-management/target-dict'
+import { employeeList } from "../../../api/zhu-yuan-yi-sheng/pat-info-query"
 import {
   targetSqlExecuteById,
   saveTargetReportResult,
@@ -326,16 +316,16 @@ const qeryTargetDictTree = () => {
   queryParam.id = '';
   queryParam.pid = '';
   selectTargetDictTree(queryParam)
-      .then((res: any) => {
-        targetTreeData.value.data = res
-        isShowTree.value = true
-      });
+    .then((res: any) => {
+      targetTreeData.value.data = res
+      isShowTree.value = true
+    });
 }
 
 // ------  指标字典新增,修改保存表单开始  ------
 // ruleForm.value.name = '123'
 // ruleForm.name = '21312'
-let ruleForm = reactive({
+let ruleForm = ref({
   id: '', // 指标编码
   name: '', // 指标名称
   pid: '', // 父级编码
@@ -356,6 +346,8 @@ let ruleForm = reactive({
   isLeaf: '1', // 是否叶子节点(0:否, 1:是)
   calcChild: '', // 计算-分子
   calcMom: '', // 计算-分母
+  childId: '',
+  momId: '',
 })
 
 let sqlForm = reactive({
@@ -381,30 +373,35 @@ let sqlForm = reactive({
   childResult4: '', // 计算分子结果4
   momResult4: '', // 计算分母结果4
   calcResult4: '', // 计算结果4
+  childResult: '',
+  momResult: '',
+  calcResult: '',
+  childId: '',
+  momId: '',
 })
 
 const formSize = ref('default')
 const ruleFormRef = ref<FormInstance>()
 const upFormRef = ref<FormInstance>()
 
-const rules = reactive<FormRules>({
+const rulesForm = ref<FormRules>({
   name: [
-    {required: true, message: '请填写指标名称', trigger: 'blur'},
-    {min: 1, max: 256, message: '指标名称长度范围1-256个字符', trigger: 'blur'},
+    { required: true, message: '请填写指标名称', trigger: 'blur' },
+    { min: 1, max: 256, message: '指标名称长度范围1-256个字符', trigger: 'blur' },
   ],
   id: [
-    {required: true, message: '请填写指标id', trigger: 'blur'},
-    {min: 1, max: 12, message: '指标id长度范围1-12个字符', trigger: 'blur'},
+    { required: true, message: '请填写指标id', trigger: 'blur' },
+    { min: 1, max: 12, message: '指标id长度范围1-12个字符', trigger: 'blur' },
   ],
   pid: [
-    {required: true, message: '请填写指标父id', trigger: 'blur'},
-    {min: 1, max: 12, message: '指标父id长度范围1-12个字符', trigger: 'blur'},
+    { required: true, message: '请填写指标父id', trigger: 'blur' },
+    { min: 1, max: 12, message: '指标父id长度范围1-12个字符', trigger: 'blur' },
   ],
   sort: [
-    {min: 0, max: 12, message: '指标序号长度范围0-12个字符', trigger: 'blur'},
+    { min: 0, max: 12, message: '指标序号长度范围0-12个字符', trigger: 'blur' },
   ],
   score: [
-    {required: true, message: '请填写指标总分', trigger: 'blur'},
+    { required: true, message: '请填写指标总分', trigger: 'blur' },
     {
       validator: (rule: any, value: any, callback: any) => {
         if (/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(value) == false) {
@@ -417,16 +414,16 @@ const rules = reactive<FormRules>({
     }
   ],
   ratio: [
-    {min: 0, max: 48, message: '指标所占比例长度范围0-48个字符', trigger: 'blur'},
+    { min: 0, max: 48, message: '指标所占比例长度范围0-48个字符', trigger: 'blur' },
   ],
   definition: [
-    {required: true, message: '请填写指标定义', trigger: 'blur'},
+    { required: true, message: '请填写指标定义', trigger: 'blur' },
   ],
   method: [
-    {required: true, message: '请填写评审方法', trigger: 'blur'},
+    { required: true, message: '请填写评审方法', trigger: 'blur' },
   ],
   scoreRule: [
-    {required: true, message: '请填写计分细则', trigger: 'blur'},
+    { required: true, message: '请填写计分细则', trigger: 'blur' },
   ]
 })
 
@@ -440,8 +437,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
 
   await formEl.validate((valid, fields) => {
     if (valid) {
-      ruleForm.dept = deptInfoRef.value.states.selectedLabel
-      ruleForm.op = opInfoRef.value.states.selectedLabel
+      ruleForm.value.dept = deptInfoRef.value.states.selectedLabel
+      ruleForm.value.op = opInfoRef.value.states.selectedLabel
       saveTargetDict(ruleForm).then((res: any) => {
         if (res) {
           nextTick(() => {
@@ -493,7 +490,7 @@ const addForm = (formEl: FormInstance | undefined) => {
   formEl.resetFields()
 
   // 新增自动映射父指标id作为子指标的父id
-  ruleForm.pid = queryParam.id
+  ruleForm.value.pid = queryParam.id
   sqlForm.startTime = ''
   sqlForm.endTime = ''
   sqlForm.childResult = ''
@@ -534,19 +531,21 @@ const changeNode = async (formEl: FormInstance | undefined) => {
 const leafRulesChange = async (formEl: FormInstance | undefined) => {
   if (!formEl) return
   // 父节点
-  if (ruleForm.isLeaf === '0') {
+  if (ruleForm.value.isLeaf === '0') {
     // 取消叶子节点的字典值校验
     leafRuleFields.forEach(e => {
-      if (rules[e]) {
-        rules[e][0].required = false
+      if (rulesForm.value[e]) {
+        let dfas = rulesForm.value[e] as any
+        dfas[0].required = true
       }
     })
     formEl.clearValidate(leafRuleFields)
   } else { // 叶子节点
     // 增加叶子节点的字典值校验
     leafRuleFields.forEach(e => {
-      if (rules[e]) {
-        rules[e][0].required = true
+      if (rulesForm.value[e]) {
+        let dfas = rulesForm.value[e] as any
+        dfas[0].required = true
       }
     })
   }
@@ -556,7 +555,7 @@ const editForm = (formEl: FormInstance | undefined) => {
   if (!formEl) return
   if (isShowForm.value) {
     isShowForm.value = false
-    if ('1' === ruleForm.isLeaf) {
+    if ('1' === ruleForm.value.isLeaf) {
       changeNode(formEl)
     }
   }
@@ -578,23 +577,23 @@ const treeNodeClick = (data: any, node: any, obj: any) => {
     queryParam.id = node.data.id
     queryParam.pid = node.data.pid
     selectTargetDictById(queryParam)
-        .then((res: any) => {
-          if (res) {
-            nextTick(() => {
-              isShowForm.value = true
-              ruleForm = res
-              // 获取点击树的是否叶子节点数据
-              queryParam.isLeaf = ruleForm.isLeaf
-              ruleFormRef.value?.resetFields()
-              ruleFormRef.value?.clearValidate()
-              leafRulesChange(ruleFormRef.value)
-
-              upFormRef.value?.resetFields()
-              // 获取指标报表结果
-              queryTargetReportResult()
-            })
-          }
-        });
+      .then((res: any) => {
+        if (res) {
+          nextTick(() => {
+            isShowForm.value = true
+            ruleForm.value = res
+            // 获取点击树的是否叶子节点数据
+            queryParam.isLeaf = ruleForm.value.isLeaf
+            ruleFormRef.value?.resetFields()
+            ruleFormRef.value?.clearValidate()
+            leafRulesChange(ruleFormRef.value)
+
+            upFormRef.value?.resetFields()
+            // 获取指标报表结果
+            queryTargetReportResult()
+          })
+        }
+      });
 
   }
 }
@@ -602,7 +601,7 @@ const treeNodeClick = (data: any, node: any, obj: any) => {
 // ------------------------- sql编辑 -----------------------
 const sqlEdit = (formEl: FormInstance | undefined) => {
   if (!formEl) return
-  if (ruleForm.id === '') {
+  if (ruleForm.value.id === '') {
     ElMessage({
       type: "info",
       message: "指标信息不全,请确认!",
@@ -611,7 +610,7 @@ const sqlEdit = (formEl: FormInstance | undefined) => {
     });
     return
   }
-  if (ruleForm.isLeaf === '0') {
+  if (ruleForm.value.isLeaf === '0') {
     ElMessage({
       type: "info",
       message: "不是基础指标,不需要编写sql,请确认!",
@@ -622,7 +621,12 @@ const sqlEdit = (formEl: FormInstance | undefined) => {
   }
 
   isSqlEdit.value = true
-  sqlEditData.value = ruleForm
+  sqlEditData.value.id = ruleForm.value.id
+  sqlEditData.value.pid = ruleForm.value.pid
+  sqlEditData.value.name = ruleForm.value.name
+  sqlEditData.value.calcChild = ruleForm.value.calcChild
+  sqlEditData.value.calcMom = ruleForm.value.calcMom
+  sqlEditData.value.sort = ruleForm.value.sort
 
 }
 // --------------- sql编写结束 ------------
@@ -642,12 +646,24 @@ interface DataType {
   dataType: string, // 数据统计类型:1 sql计算获得; 2 手动输入填写获得
 }
 
-const resultList = ref(Array<DataType>)
+const resultList = ref([{
+  id: '',
+  pid: '',
+  childLabel: '',
+  childResult: '',
+  momLabel: '',
+  momResult: '',
+  calcLabel: '',
+  calcResult: '',
+  index: 0,
+  year: 0,
+  dataType: '',
+}])
 
 const sqlExecute = (formEl: FormInstance | undefined) => {
   if (!formEl) return
   // 验证是否填写完整
-  if (ruleForm.id === '') {
+  if (ruleForm.value.id === '') {
     ElMessage({
       type: "info",
       message: "指标信息不全,请确认!",
@@ -656,7 +672,7 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
     });
     return
   }
-  if (ruleForm.isLeaf === '0') {
+  if (ruleForm.value.isLeaf === '0') {
     ElMessage({
       type: "info",
       message: "不是基础指标,不需要执行sql,请确认!",
@@ -666,7 +682,7 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
     return
   }
 
-  if (ruleForm.calcChild === '') {
+  if (ruleForm.value.calcChild === '') {
     ElMessage({
       type: "info",
       message: "未编写sql,请联系管理员编写!",
@@ -693,14 +709,14 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
     isShowTargetResult.value = true
   }
 
-  sqlForm.id = ruleForm.id
-  sqlForm.pid = ruleForm.pid
-  sqlForm.childId = ruleForm.childId
-  sqlForm.momId = ruleForm.momId
+  sqlForm.id = ruleForm.value.id
+  sqlForm.pid = ruleForm.value.pid
+  sqlForm.childId = ruleForm.value.childId
+  sqlForm.momId = ruleForm.value.momId
   targetSqlExecuteById(sqlForm)
-      .then((res: any) => {
-        resultList.value = res
-      });
+    .then((res: any) => {
+      resultList.value = res
+    });
 }
 
 // ------------ 手动填值 ---------
@@ -709,14 +725,14 @@ const handWrite = () => {
   if (isShowTargetResult.value) {
     isShowTargetResult.value = false
   }
-  resultList.value = []
+  resultList.value = [] as any
   isShowHandWrite.value = true
 }
 
 // ------------ 统计结果保存 --------------
 const saveTargetDictResult = () => {
 
-  if (ruleForm.id === '') {
+  if (ruleForm.value.id === '') {
     ElMessage({
       type: "info",
       message: "指标信息不全,请确认!",
@@ -731,51 +747,51 @@ const saveTargetDictResult = () => {
       cancelButtonText: '取消',
       confirmButtonText: '确定',
     })
-        .then(() => {
-          let targetResultList = [] as any
-          if (resultList.value.length > 0) {
-            targetResultList = clone(resultList.value)
-          } else {
-            for (let i = 1; i <= 4; i++) {
-              if (sqlForm['year' + i] && sqlForm['calcResult' + i]) {
-                let handWriteData = {} as DataType
-                handWriteData.id = ruleForm.id
-                handWriteData.pid = ruleForm.pid
-                handWriteData.dataType = '2'
-                handWriteData.year = sqlForm['year' + i]
-                handWriteData.childResult = sqlForm['childResult' + i]
-                handWriteData.momResult = sqlForm['momResult' + i]
-                handWriteData.calcResult = sqlForm['calcResult' + i]
-                targetResultList.push(handWriteData)
-              }
+      .then(() => {
+        let targetResultList = [] as any
+        if (resultList.value.length > 0) {
+          targetResultList = clone(resultList.value)
+        } else {
+          for (let i = 1; i <= 4; i++) {
+            if (sqlForm['year' + i] && sqlForm['calcResult' + i]) {
+              let handWriteData = {} as DataType
+              handWriteData.id = ruleForm.value.id
+              handWriteData.pid = ruleForm.value.pid
+              handWriteData.dataType = '2'
+              handWriteData.year = sqlForm['year' + i]
+              handWriteData.childResult = sqlForm['childResult' + i]
+              handWriteData.momResult = sqlForm['momResult' + i]
+              handWriteData.calcResult = sqlForm['calcResult' + i]
+              targetResultList.push(handWriteData)
             }
           }
+        }
 
-          if (targetResultList.length > 0) {
-            saveTargetReportResult(targetResultList)
-                .then((res: any) => {
-                  if (res) {
-                    ElMessage({
-                      type: "success",
-                      message: "保存统计结果成功!",
-                      duration: 2500,
-                      showClose: true,
-                    });
-                    return
-                  }
+        if (targetResultList.length > 0) {
+          saveTargetReportResult(targetResultList)
+            .then((res: any) => {
+              if (res) {
+                ElMessage({
+                  type: "success",
+                  message: "保存统计结果成功!",
+                  duration: 2500,
+                  showClose: true,
                 });
-
-          } else {
-            ElMessage({
-              type: "info",
-              message: "保存统计结果为空,请确认!",
-              duration: 2500,
-              showClose: true,
+                return
+              }
             });
-            return
-          }
-        }).catch(() => {
-    })
+
+        } else {
+          ElMessage({
+            type: "info",
+            message: "保存统计结果为空,请确认!",
+            duration: 2500,
+            showClose: true,
+          });
+          return
+        }
+      }).catch(() => {
+      })
   }
 }
 
@@ -783,7 +799,7 @@ const saveTargetDictResult = () => {
 let QtResultData = ref([])
 const queryTargetReportResult = () => {
 
-  if (ruleForm.id === '') {
+  if (ruleForm.value.id === '') {
     ElMessage({
       type: "info",
       message: "指标信息不全,请确认!",
@@ -806,15 +822,15 @@ const queryTargetReportResult = () => {
     startTime: '',
     endTime: '',
   }
-  queryData.id = ruleForm.id
-  queryData.pid = ruleForm.pid
+  queryData.id = ruleForm.value.id
+  queryData.pid = ruleForm.value.pid
   selectTargetReportResult(queryData)
-      .then((res: any) => {
-        if (isShowQtResult.value === false) {
-          isShowQtResult.value = true
-        }
-        QtResultData.value = res
-      });
+    .then((res: any) => {
+      if (isShowQtResult.value === false) {
+        isShowQtResult.value = true
+      }
+      QtResultData.value = res
+    });
 }
 
 </script>

+ 5 - 3
src/views/target-management/target-dict/TargetDictInfo.vue

@@ -9,7 +9,7 @@
                     <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
                         end-placeholder="结束日期" :shortcuts="shortcuts"> </el-date-picker>
                     <el-select-v2 ref="deptInfoRef" v-model="queryParam.deptId" clearable remote filterable
-                        :remote-method="deptMethod" :options="deptWardList" />
+                        :remote-method="deptMethod" :options="deptWardList" :placeholder="'请选择科室'" />
                     <el-input v-model="queryParam.calcChild" v-if="isShowSql"></el-input>
                     <el-input v-model="queryParam.calcMom" v-if="isShowSql"></el-input>
                     <el-button icon="Search" type="primary" @click="selectTargetDictInfo"
@@ -178,7 +178,9 @@ let returnData = reactive({
     currentPage: 1,
     pageSize: 30,
     total: 0,
-    data: []
+    data: [],
+    tableDisplays: [] as any,
+    chirdData: [] as any
 });
 
 onMounted(() => {
@@ -215,7 +217,7 @@ const treeNodeClick = async (data: any, node: any, obj: any) => {
         // 查询指标的分子、分母sql
         queryParam.childId = targetForm.value.childId
         queryParam.momId = node.data.momId
-        let selectTargetSqlRes = await selectTargetSql(queryParam)
+        let selectTargetSqlRes: any = await selectTargetSql(queryParam)
         let { reportChild } = selectTargetSqlRes
         let { reportMom } = selectTargetSqlRes
         if (reportChild) {

+ 14 - 14
src/views/target-management/target-dict/TargetReportConfig.vue

@@ -226,7 +226,7 @@ const sqlForm = reactive({
     calcResult: '', // 计算结果
 })
 
-let reportForm = reactive({
+let reportForm = ref({
     reportId: '', // 报表id
     reportName: '', // 报表名称
     reportType: '', // 报表类型
@@ -307,7 +307,7 @@ const levelTypeQt = () => {
 // 指标分组类型字典内容检索
 const levelFilterMethod = (key: any) => {
     //`这一步一定要加上,不然输入框会有问题`!!!!!
-    reportForm.level = key
+    reportForm.value.level = key
     if (key) {
         levelList.value = levelList.value.filter((item: any) => {
             let flag = true
@@ -343,7 +343,7 @@ const treeNodeClick = async (data: any, node: any, obj: any) => {
 
             // 查询指标字典
             let selectReportDictRes = await selectReportDict(queryParam)
-            reportForm = selectReportDictRes[0]
+            reportForm.value = selectReportDictRes[0]
         }
     }
 }
@@ -357,7 +357,7 @@ const addForm = (formEl: FormInstance | undefined) => {
     }
 
     formEl.resetFields()
-    reportForm = {}
+    reportForm.value = {} as any
     ruleFormRef.value?.resetFields()
     sqlForm.calcResult = ''
 
@@ -377,7 +377,7 @@ const editForm = (formEl: FormInstance | undefined) => {
 const submitForm = async (formEl: FormInstance | undefined) => {
     if (!formEl) return
 
-    if (reportForm.reportId == '') {
+    if (reportForm.value.reportId == '') {
         ElMessage({
             type: "info",
             message: '指标报表信息不全,请确认!',
@@ -389,7 +389,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
 
     await formEl.validate((valid, fields) => {
         if (valid) {
-            if (reportForm.gatherSql == '' || reportForm.baseSql == '' || reportForm.reportName == '') {
+            if (reportForm.value.gatherSql == '' || reportForm.value.baseSql == '' || reportForm.value.reportName == '') {
                 ElMessage({
                     type: "info",
                     message: '指标报表信息不全,请确认!',
@@ -431,7 +431,7 @@ const resetForm = (formEl: FormInstance | undefined) => {
     }
 
     formEl.resetFields()
-    reportForm = {}
+    reportForm = {} as any
     ruleFormRef.value?.resetFields()
     sqlForm.calcResult = ''
 }
@@ -440,7 +440,7 @@ const resetForm = (formEl: FormInstance | undefined) => {
 const sqlExecute = (formEl: FormInstance | undefined) => {
     if (!formEl) return
     // 验证是否填写完整
-    if (reportForm.reportId === '') {
+    if (reportForm.value.reportId === '') {
         ElMessage({
             type: "info",
             message: "报表信息不全,请确认!",
@@ -450,7 +450,7 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
         return
     }
 
-    if (reportForm.baseSql === '') {
+    if (reportForm.value.baseSql === '') {
         ElMessage({
             type: "info",
             message: "未编写基础sql,请检查!",
@@ -471,8 +471,8 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
     }
 
     // sql测试
-    sqlForm.gatherSql = reportForm.gatherSql
-    sqlForm.baseSql = reportForm.baseSql
+    sqlForm.gatherSql = reportForm.value.gatherSql
+    sqlForm.baseSql = reportForm.value.baseSql
     sqlForm.startTime = sqlForm.startTime + ' 00:00:00'
     sqlForm.endTime = sqlForm.endTime + ' 23:59:59'
     reportSqlExecute(sqlForm)
@@ -489,7 +489,7 @@ const showReportLevel = ref(false)
 const reportLevelTitle = ref('报表分组类型配置')
 const reportLevelDetail = ref({})
 const reportLevel = () => {
-    if (reportForm.reportId == '') {
+    if (reportForm.value.reportId == '') {
         ElMessage({
             type: "info",
             message: "指标报表信息不全,请确认!",
@@ -500,8 +500,8 @@ const reportLevel = () => {
     }
 
     const param = {
-        reportId: reportForm.reportId,
-        level: reportForm.level,
+        reportId: reportForm.value.reportId,
+        level: reportForm.value.level,
     }
     selectReportLevel(param).then((res: any) => {
         if (res == null) {