Prechádzať zdrojové kódy

病例人员关联考核授权培训考试

cyy 1 rok pred
rodič
commit
61452bc1f3

+ 41 - 2
src/views/component/personnelFile/components/dialogDeltail.vue

@@ -21,6 +21,33 @@
                 <div class="rowSty">
                     <div class="nameSty">{{ e.name }} </div>
                     <div v-if="e.type==='text'" class="contant">{{ e.contant }}</div>
+                    <div v-else-if="e.type==='user' || e.type==='position'" class="contant">
+                        <ibps-user-selector
+                            v-model="e.contant"
+                            :type="e.type"
+                            readonly-text="text"
+                            :disabled="true"
+                            :multiple="false"
+                            size="mini"
+                            style="width:100%"
+                            :filter="filter"
+                            filtrate
+                        />
+                    </div>
+                    <div v-if="e.type==='dialog'" class="contant">
+                        <ibps-custom-dialog
+                            v-model="e.contant"
+                            size="mini"
+                            :template-key="e.dialogKey"
+                            multiple
+                            :disabled="true"
+                            type="dialog"
+                            class="custom-dialog"
+                            placeholder="请选择"
+                            icon="el-icon-search"
+                            style="width:100%"
+                        />
+                    </div>
                     <div v-else-if="e.type==='file'" class="contant">
                         <ibps-attachment
                             v-model="e.contant"
@@ -42,10 +69,13 @@
 </template>
 <script>
 import IbpsAttachment from '@/business/platform/file/attachment/selector'
+import ibpsUserSelector from '@/business/platform/org/selector'
 
 export default {
     components: {
-        IbpsAttachment
+        IbpsAttachment,
+        ibpsUserSelector,
+        IbpsCustomDialog: () => import('@/business/platform/data/templaterender/custom-dialog')
     },
     props: {
         dialogData: {
@@ -61,7 +91,16 @@ export default {
     },
     data () {
         return {
-
+            filter: [{
+                descVal: '1',
+                includeSub: true,
+                old: 'position',
+                partyId: this.$store.getters.userInfo.employee.positions,
+                partyName: '',
+                scriptContent: '',
+                type: 'user',
+                userType: 'position'
+            }]
         }
     }
 }

+ 14 - 6
src/views/component/personnelFile/components/kphdglbTag.vue

@@ -25,9 +25,17 @@
                     label="序号"
                     min-width="5%"
                 />
+                <el-table-column
+                    label="科普名称"
+                    min-width="15%"
+                >
+                    <template slot-scope="scope">
+                        {{ scope.row.hasOwnProperty("kePuMingCheng") > 0 ? scope.row.kePuMingCheng:'/' }}
+                    </template>
+                </el-table-column>
                 <el-table-column
                     label="科普编号"
-                    min-width="16%"
+                    min-width="14%"
                 >
                     <template slot-scope="scope">
                         {{ scope.row.hasOwnProperty("kePuBianHao") > 0 ? scope.row.kePuBianHao:'/' }}
@@ -35,7 +43,7 @@
                 </el-table-column>
                 <el-table-column
                     label="活动时间"
-                    min-width="16%"
+                    min-width="14%"
                 >
                     <template slot-scope="scope">
                         {{ scope.row.hasOwnProperty("huoDongShiJian") > 0 ? scope.row.huoDongShiJian:'/' }}
@@ -43,7 +51,7 @@
                 </el-table-column>
                 <el-table-column
                     label="科普形式"
-                    min-width="16%"
+                    min-width="14%"
                 >
                     <template slot-scope="scope">
                         {{ scope.row.hasOwnProperty("kePuXingShi") > 0 ? scope.row.kePuXingShi:'/' }}
@@ -51,7 +59,7 @@
                 </el-table-column>
                 <el-table-column
                     label="备注"
-                    min-width="21%"
+                    min-width="12%"
                 >
                     <template slot-scope="scope">
                         {{ scope.row.hasOwnProperty("beiZhu") > 0 ? scope.row.beiZhu:'/' }}
@@ -194,8 +202,8 @@ export default {
         handleClick (val) {
             this.dialogDetails = true
             this.dialogData = [
-                [{ name: '科普编号', contant: val.kePuBianHao, type: 'text' }, { name: '开始日期', contant: val.qiZhiShiJian, type: 'text' }],
-                [{ name: '科普形式', contant: val.kePuXingShi, type: 'text' }],
+                [{ name: '科普名称', contant: val.kePuMingCheng, type: 'text' }, { name: '活动时间', contant: val.huoDongShiJian, type: 'text' }],
+                [{ name: '科普编号', contant: val.kePuBianHao, type: 'text' }, { name: '科普形式', contant: val.kePuXingShi, type: 'text' }],
                 [{ name: '备注', contant: val.beiZhu, type: 'text' }, { name: '附件', contant: val.fuJian, type: 'file' }]
             ]
             // console.log(this.dialogData)

+ 145 - 49
src/views/component/personnelFile/components/modulesTag.vue

@@ -11,7 +11,10 @@
             <el-tab-pane label="工作经历" name="gzjl" class="tabPane">
                 <gzjl-tag class="paneAll" :plane-data="judgeBase('gzjl')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" @tipsShowTab="tipsShowTab" />
             </el-tab-pane>
-            <el-tab-pane v-if="judgeTag('kyxmglb')" label="科研项目" name="kyxmglb" class="tabPane">
+            <el-tab-pane label="资格职称证书" name="zsb" class="tabPane">
+                <zsb-tag class="paneAll" :plane-data="judgeBase('zsb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" @tipsShowTab="tipsShowTab" />
+            </el-tab-pane>
+            <!-- <el-tab-pane v-if="judgeTag('kyxmglb')" label="科研项目" name="kyxmglb" class="tabPane">
                 <kyxmglb-tag ref="kyxmglb" class="paneAll" :plane-data="judgeData('kyxmglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
             </el-tab-pane>
             <el-tab-pane v-if="judgeTag('kjhjcgglb')" label="获奖成果" name="kjhjcgglb" class="tabPane">
@@ -34,12 +37,66 @@
             </el-tab-pane>
             <el-tab-pane v-if="judgeTag('kphdglb')" label="科普活动" name="kphdglb" class="tabPane">
                 <kphdglb-tag ref="kphdglb" class="paneAll" :plane-data="judgeData('kphdglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
-            </el-tab-pane>
+            </el-tab-pane> -->
             <el-tab-pane v-if="judgeTag('bmsm')" label="公正性、保密性" name="bmsm" class="tabPane">
                 <bmsm-tag ref="bmsm" class="paneAll" :plane-data="judgeData('bmsm')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
             </el-tab-pane>
-            <el-tab-pane label="资格职称证书" name="zsb" class="tabPane">
-                <zsb-tag class="paneAll" :plane-data="judgeBase('zsb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" @tipsShowTab="tipsShowTab" />
+            <el-tab-pane v-if="judgeTag('kyxmglb')" v-model="activeNameTabInner" label="科研管理" name="kyxmglb" class="tabPane">
+                <div class="paneAll innerTabs">
+                    <el-tabs v-model="activeNameTabInner" tab-position="left" style="height:100%" @tab-click="handleClick">
+                        <el-tab-pane v-if="judgeTag('kyxmglb')" label="科研项目" name="kyxmglb" class="tabPane shadowNone paddingInner">
+                            <kyxmglb-tag ref="kyxmglb" class="paneAll" :plane-data="judgeData('kyxmglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('kjhjcgglb')" label="获奖成果" name="kjhjcgglb" class="tabPane shadowNone paddingInner">
+                            <kjhjcgglb-tag ref="kjhjcgglb" class="paneAll" :plane-data="judgeData('kjhjcgglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('SCIwzglb')" label="SCI文章" name="SCIwzglb" class="tabPane shadowNone paddingInner">
+                            <SCIwzglb-tag ref="SCIwzglb" class="paneAll" :plane-data="judgeData('SCIwzglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('zwlwglb')" label="中文论文" name="zwlwglb" class="tabPane shadowNone paddingInner">
+                            <zwlwglb-tag ref="zwlwglb" class="paneAll" :plane-data="judgeData('zwlwglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('kyzzglb')" label="专著" name="kyzzglb" class="tabPane shadowNone paddingInner">
+                            <kyzzglb-tag ref="kyzzglb" class="paneAll" :plane-data="judgeData('kyzzglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('kyzlglb')" label="专利" name="kyzlglb" class="tabPane shadowNone paddingInner">
+                            <kyzlglb-tag ref="kyzlglb" class="paneAll" :plane-data="judgeData('kyzlglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('jxjyxmxshdglb')" label="继续教育学术活动" name="jxjyxmxshdglb" class="tabPane shadowNone paddingInner">
+                            <jxjyxmxshdglb-tag ref="jxjyxmxshdglb" class="paneAll" :plane-data="judgeData('jxjyxmxshdglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('kphdglb')" label="科普活动" name="kphdglb" class="tabPane shadowNone paddingInner">
+                            <kphdglb-tag ref="kphdglb" class="paneAll" :plane-data="judgeData('kphdglb')" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                    </el-tabs>
+                </div>
+            </el-tab-pane>
+            <el-tab-pane v-if="judgeTagStair(['jyrykhjlb','lhrynlqr'])" label="人员考核与授权" name="rykhysq" class="tabPane">
+                <div class="paneAll innerTabs">
+                    <el-tabs v-model="activeNameTabInnerRY" tab-position="left" style="height:100%" @tab-click="handleClickRY">
+                        <el-tab-pane v-if="judgeTag('jyrykhjlb')" label="考核记录" name="jyrykhjlb" class="tabPane shadowNone paddingInner">
+                            <public-list ref="jyrykhjlb" class="paneAll" :plane-data="judgeDataAll('jyrykhjlb')" :tab-name="'jyrykhjlb'" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('lhrynlqr')" label="人员岗位授权" name="lhrynlqr" class="tabPane shadowNone paddingInner">
+                            <public-list ref="lhrynlqr" class="paneAll" :plane-data="judgeDataAll('lhrynlqr')" :tab-name="'lhrynlqr'" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                    </el-tabs>
+                </div>
+            </el-tab-pane>
+            <el-tab-pane v-if="judgeTagStair(['lhrypxjlb','lhpxsqb'])" label="培训" name="pxgl" class="tabPane">
+                <div class="paneAll innerTabs">
+                    <el-tabs v-model="activeNameTabPXInnerRY" tab-position="left" style="height:100%" @tab-click="handleClickRY">
+                        <el-tab-pane v-if="judgeTag('lhrypxjlb')" label="内部培训" name="lhrypxjlb" class="tabPane shadowNone paddingInner">
+                            <public-list ref="lhrypxjlb" class="paneAll" :plane-data="judgeDataAll('lhrypxjlb')" :tab-name="'lhrypxjlb'" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                        <el-tab-pane v-if="judgeTag('lhpxsqb')" label="外部培训" name="lhpxsqb" class="tabPane shadowNone paddingInner">
+                            <public-list ref="lhpxsqb" class="paneAll" :plane-data="judgeDataAll('lhpxsqb')" :tab-name="'lhpxsqb'" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
+                        </el-tab-pane>
+                    </el-tabs>
+                </div>
+            </el-tab-pane>
+            <el-tab-pane v-if="judgeTag('kaoshijilu')" label="考试记录" name="kaoshijilu" class="tabPane">
+                <public-list ref="kaoshijilu" class="paneAll" :plane-data="judgeDataAll('kaoshijilu')" :tab-name="'kaoshijilu'" :button-type="buttonType" :btn-show="btnShow" :btn-type="btnType" @changeButtonShow="changeButtonShow" @changeBaseData="changeBaseData" />
             </el-tab-pane>
         </el-tabs>
     </div>
@@ -58,6 +115,8 @@ import kyzlglbTag from './kyzlglbTag.vue'
 import jxjyxmxshdglbTag from './jxjyxmxshdglbTag.vue'
 import kphdglbTag from './kphdglbTag.vue'
 import bmsmTag from './bmsmTag.vue'
+import publicList from './publicList.vue'
+import { correlationSql, correlationConfig } from '../constants/simulated'
 
 export default {
     components: {
@@ -73,7 +132,8 @@ export default {
         kyzlglbTag,
         jxjyxmxshdglbTag,
         kphdglbTag,
-        bmsmTag
+        bmsmTag,
+        publicList
     },
     props: {
         buttonType: {
@@ -106,8 +166,24 @@ export default {
         }
     },
     data () {
+        const { userId, userList = [], deptList = [], menus, userInfo } = this.$store.getters
         return {
-            activeNameTab: this.activeName
+            userId,
+            activeNameTab: this.activeName,
+            activeNameTabInner: 'kyxmglb',
+            activeNameTabInnerRY: 'jyrykhjlb',
+            activeNameTabPXInnerRY: 'lhrypxjlb',
+            jurisdictionKYGL: {
+                kyxmglb: 'reviewTableKYXM',
+                kjhjcgglb: 'reviewTableHJCG',
+                SCIwzglb: 'reviewTableSCI',
+                zwlwglb: 'reviewTableZWLW',
+                kyzzglb: 'reviewTableKYZZ',
+                kyzlglb: 'reviewTableKYZL',
+                jxjyxmxshdglb: 'reviewTableJXJY',
+                kphdglb: 'reviewTableKPHD',
+                bmsm: 'reviewTableBMSM'
+            }
         }
     },
     watch: {
@@ -132,59 +208,64 @@ export default {
     },
     methods: {
         handleClick (val) {
-            this.$emit('changeTabs', val.name)
-            if (typeof this.$refs.kyxmglb !== 'undefined' && typeof this.$refs.kyxmglb.$refs.reviewTableKYXM !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.kyxmglb.$refs.reviewTableKYXM.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.kjhjcgglb !== 'undefined' && typeof this.$refs.kjhjcgglb.$refs.reviewTableHJCG !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.kjhjcgglb.$refs.reviewTableHJCG.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.SCIwzglb !== 'undefined' && typeof this.$refs.SCIwzglb.$refs.reviewTableSCI !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.SCIwzglb.$refs.reviewTableSCI.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.zwlwglb !== 'undefined' && typeof this.$refs.zwlwglb.$refs.reviewTableZWLW !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.zwlwglb.$refs.reviewTableZWLW.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.kyzzglb !== 'undefined' && typeof this.$refs.kyzzglb.$refs.reviewTableKYZZ !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.kyzzglb.$refs.reviewTableKYZZ.doLayout()
-                }, 200)
+            if (this.jurisdictionKYGL.hasOwnProperty(val.name)) {
+                this.$emit('changeTabs', val.name)
             }
-            if (typeof this.$refs.kyzlglb !== 'undefined' && typeof this.$refs.kyzlglb.$refs.reviewTableKYZL !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.kyzlglb.$refs.reviewTableKYZL.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.jxjyxmxshdglb !== 'undefined' && typeof this.$refs.jxjyxmxshdglb.$refs.reviewTableJXJY !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.jxjyxmxshdglb.$refs.reviewTableJXJY.doLayout()
-                }, 200)
-            }
-            if (typeof this.$refs.kphdglb !== 'undefined' && typeof this.$refs.kphdglb.$refs.reviewTableKPHD !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.kphdglb.$refs.reviewTableKPHD.doLayout()
-                }, 200)
+            for (const key in this.jurisdictionKYGL) {
+                if (typeof this.$refs[key] !== 'undefined' && typeof this.$refs[key].$refs[this.jurisdictionKYGL[key]] !== 'undefined') {
+                    setTimeout(() => {
+                        this.$refs[key].$refs[this.jurisdictionKYGL[key]].doLayout()
+                    }, 200)
+                }
             }
-            if (typeof this.$refs.bmsm !== 'undefined' && typeof this.$refs.bmsm.$refs.reviewTableBMSM !== 'undefined') {
-                setTimeout(() => {
-                    this.$refs.bmsm.$refs.reviewTableBMSM.doLayout()
-                }, 200)
+            switch (val.name) {
+                case 'rykhysq':
+                    this.handleClickRY({ name: 'jyrykhjlb' })
+                    break
+                case 'pxgl':
+                    this.handleClickRY({ name: 'lhrypxjlb' })
+                    break
+                case 'kaoshijilu':
+                    this.handleClickRY({ name: 'kaoshijilu' })
+                    break
+                default:
+                    break
             }
         },
+        handleClickRY (val) {
+            const arr = ['jyrykhjlb', 'lhrynlqr', 'lhrypxjlb', 'lhpxsqb', 'kaoshijilu']
+            arr.forEach(item => {
+                if (typeof this.$refs[item] !== 'undefined' && typeof this.$refs[item].$refs['reviewTable' + item] !== 'undefined') {
+                    setTimeout(() => {
+                        this.$refs[item].$refs['reviewTable' + item].doLayout()
+                    }, 200)
+                }
+            })
+            this.$common.request('sql', correlationSql(val.name, this.userId)).then((result) => {
+                this.$set(this.tagData[val.name], 'data', result.variables.data || [])
+                this.$set(this.tagData[val.name], 'config', correlationConfig[val.name])
+            }).catch((err) => {
+                console.error(err)
+            })
+        },
         judgeTag (val) {
             return !!(Object.keys(this.tagData).length > 0 && this.tagData.hasOwnProperty(val) && this.tagData[val].display === 'Y' && this.btnShow === true && this.buttonType !== 1 && this.buttonType !== 3 && this.buttonType !== 4)
         },
+        judgeTagStair (val) {
+            let disTF = false
+            val.forEach(element => {
+                if (this.tagData.hasOwnProperty(element) && this.tagData[element].display === 'Y') {
+                    disTF = true
+                }
+            })
+            return !!(Object.keys(this.tagData).length > 0 && disTF && this.btnShow === true && this.buttonType !== 1 && this.buttonType !== 3 && this.buttonType !== 4)
+        },
         judgeData (val) {
             return Object.keys(this.tagData).length > 0 ? this.tagData[val].data : []
         },
+        judgeDataAll (val) {
+            return Object.keys(this.tagData).length > 0 ? this.tagData[val] : {}
+        },
         judgeBase (val, type = 'arr') {
             return Object.keys(this.baseData).length > 0 ? this.baseData[val].data : type === 'obj' ? {} : []
         },
@@ -245,6 +326,14 @@ export default {
         width: 100%;
         height: 2%;
     }
+    .innerTabs{
+        ::v-deep .el-tabs__active-bar{
+            background-color: #fff;
+        }
+        ::v-deep .el-tabs--left .el-tabs__item.is-left{
+            // text-align: left;
+        }
+    }
     .tabsAll{
         height: 100%;
         .tabPane{
@@ -261,6 +350,13 @@ export default {
                 display: table;
             }
         }
+        .shadowNone{
+            box-shadow: none;
+        }
+        .paddingInner{
+            padding: 12px 0 0 0;
+            height: 100%;
+        }
     }
 
 }

+ 291 - 0
src/views/component/personnelFile/components/publicList.vue

@@ -0,0 +1,291 @@
+<template>
+    <div class="publicList20241107">
+        <div class="titleAll">
+            <el-divider direction="vertical" />
+            <span>{{ planeData.title }}</span>
+        </div>
+        <div class="hand-btn" />
+        <div class="contentAll">
+            <el-table
+                v-if="planeData.hasOwnProperty('config')"
+                :ref="'reviewTable'+tabName"
+                :data="nowData.filter((e,m) => Math.floor(m/10)===currentPage-1 )"
+
+                stripe
+                height="92%"
+                highlight-current-row
+                style="width: 99.5%"
+                class="review-table blue-header tableCol"
+                @selection-change="handleSelectionChange"
+            >
+                <el-table-column
+                    type="selection"
+                    min-width="2%"
+                />
+                <el-table-column
+                    type="index"
+                    label="序号"
+                    min-width="5%"
+                />
+                <el-table-column
+                    v-for="(item,i) in planeData.config.config"
+                    :key="tabName+i"
+                    :label="item.label"
+                    :min-width="item.width"
+                >
+                    <template slot-scope="scope">
+                        <span v-if="item.type==='text'">{{ scope.row.hasOwnProperty(item.field) > 0 ? scope.row[item.field]:'/' }}</span>
+                        <div v-else-if="item.type==='user'||item.type==='position'" class="grid-content bg-purple-light">
+                            <ibps-user-selector
+                                v-model="scope.row[item.field]"
+                                :type="item.type"
+                                readonly-text="text"
+                                :disabled="true"
+                                :multiple="false"
+                                size="mini"
+                                style="width:100%"
+                                :filter="filter"
+                                filtrate
+                            />
+                        </div>
+                        <div v-else-if="item.type==='file'" class="grid-content bg-purple-light">
+                            <ibps-attachment
+                                v-model="scope.row[item.field]"
+                                :download="true"
+                                multiple
+                                accept="*"
+                                :readonly="true"
+                                style="width:100%"
+                                limlt="5"
+                            />
+                        </div>
+                        <div v-else-if="item.type==='dialog'" class="grid-content bg-purple-light">
+                            <ibps-custom-dialog
+                                v-model="scope.row[item.field]"
+                                size="mini"
+                                :template-key="item.dialogKey"
+                                multiple
+                                :disabled="true"
+                                type="dialog"
+                                class="custom-dialog"
+                                placeholder="请选择"
+                                icon="el-icon-search"
+                                style="width:100%"
+                            />
+                        </div>
+                        <div v-else>/</div>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    fixed="right"
+                    label="操作"
+                    class-name="handleSty"
+                    width="100"
+                >
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="handleClick(scope.row)">查阅</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="10"
+                layout="total, prev, pager, next"
+                :total="nowData.length"
+                @current-change="handleCurrentChange"
+            />
+        </div>
+        <dialog-deltail :dialog-details="dialogDetails" :dialog-data="dialogData" @changeDetails="changeDetails" />
+    </div>
+</template>
+<script>
+import IbpsAttachment from '@/business/platform/file/attachment/selector'
+import option from '../constants/option.js'
+import dialogDeltail from './dialogDeltail'
+import ibpsUserSelector from '@/business/platform/org/selector'
+
+export default {
+    components: {
+        IbpsAttachment,
+        dialogDeltail,
+        ibpsUserSelector,
+        IbpsCustomDialog: () => import('@/business/platform/data/templaterender/custom-dialog')
+
+    },
+    props: {
+        planeData: {
+            type: Object,
+            default: function () {
+                return {}
+            }
+        },
+        buttonType: {
+            type: Number,
+            default: 0
+        },
+        btnShow: {
+            type: Boolean,
+            default: true
+        },
+        btnType: {
+            type: String,
+            default: ''
+        },
+        tabName: {
+            type: String,
+            default: ''
+        }
+    },
+    data () {
+        return {
+            activeName: 'first',
+            nowData: [],
+            nowDataObj: {},
+            multipleSelection: [],
+            currentPage: 1,
+            dialogDetails: false,
+            dialogData: [],
+            filter: [{
+                descVal: '1',
+                includeSub: true,
+                old: 'position',
+                partyId: this.$store.getters.userInfo.employee.positions,
+                partyName: '',
+                scriptContent: '',
+                type: 'user',
+                userType: 'position'
+            }]
+        }
+    },
+    watch: {
+        planeData: {
+            handler: function (val, oldVal) {
+                // eslint-disable-next-line no-undef
+                this.nowData = structuredClone(val.data || [])
+                this.nowDataObj = { nowData: [...this.nowData] }
+            },
+            deep: true,
+            immediate: true
+        },
+        btnType: {
+            handler: function (val, oldVal) {
+                if (val === 'exitEdit') {
+                    // eslint-disable-next-line no-undef
+                    this.nowData = structuredClone(this.planeData.data || [])
+                    this.nowDataObj = { nowData: [...this.nowData] }
+                }
+                // else if (val === 'save' || val === 'temporaryStorage' || val === 'submit') {
+                // }
+            },
+            deep: true
+        }
+    },
+    created () {
+        setTimeout(() => {
+            console.log(this.planeData, 'ttttttt')
+        }, 2000)
+    },
+    methods: {
+        handleSelectionChange (val) {
+            this.multipleSelection = val
+        },
+        handleCurrentChange (val) {
+            // console.log(`当前页: ${val}`)
+            this.$refs.reviewTableZWLW.$parent.$parent.$parent.$parent.$parent.tabSetData(val)
+        },
+        handleClick (val) {
+            this.dialogDetails = true
+            this.dialogData = this.planeData.config.dialog
+            this.dialogData.forEach((item, i) => {
+                if (item.length > 1) {
+                    item.forEach(it => {
+                        it.contant = val[it.field]
+                    })
+                } else {
+                    item[0].contant = val[item[0].field]
+                }
+            })
+            console.log(this.dialogData)
+        },
+        changeDetails (val) {
+            this.dialogDetails = val
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.publicList20241107{
+    font-size: 12px;
+    color: #2f2f36;
+    .titleAll{
+        ::v-deep .el-divider--vertical{
+            width: 4px;
+            height: 1.4em;
+            background-color: #86c3c7;
+            border-radius: 2px;
+            margin-left: 0;
+            margin-right: 15px;
+        }
+        span{
+            font-size: 15px;
+            font-weight: 700;
+            vertical-align: text-top;
+        }
+    }
+    .hand-btn{
+        width: 99.5%;
+        height: 10px;
+        text-align: right;
+        margin: 0.5% 0;
+    }
+    .contentAll{
+        height: 85%;
+        overflow-y: auto;
+        ::v-deep .ibps-attachment-selector{
+            min-width: 0;
+        }
+        .tableCol{
+            height: 92%;
+            overflow-y: auto;
+            ::v-deep .el-table__fixed-right{
+                .el-table__fixed-body-wrapper{
+                    .el-table__body{
+                        .el-table__row{
+                            .handleSty{
+                                text-align: center;
+                            }
+                        }
+                    }
+                }
+                .el-table__fixed-header-wrapper{
+                    .el-table__header{
+                        .handleSty{
+                            text-align: center;
+                        }
+                    }
+                }
+            }
+            ::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+                display: none; /* for Chrome, Safari, and Opera */
+            }
+
+            ::v-deep .el-table__body-wrapper {
+                -ms-overflow-style: none;  /* for Internet Explorer, Edge */
+                scrollbar-width: none;  /* for Firefox */
+            }
+            ::v-deep .el-table__fixed-right-patch{
+                width: 0 !important;
+            }
+        }
+        .tableCol::-webkit-scrollbar{
+            display: none;
+        }
+        .grid-content {
+            ::v-deep .el-date-editor.el-input.el-input--mini.el-input--prefix.el-input--suffix.el-date-editor--date{
+                width: 100%;
+            }
+        }
+    }
+}
+
+</style>

+ 1 - 1
src/views/component/personnelFile/components/zwlwglbTag.vue

@@ -216,7 +216,7 @@ export default {
     }
     .hand-btn{
         width: 99.5%;
-        height: 5.5%;
+        height: 10px;
         text-align: right;
         margin: 0.5% 0;
     }

+ 118 - 1
src/views/component/personnelFile/constants/simulated.js

@@ -419,10 +419,127 @@ export const data = '{"id":"","diDian":"1257660949100232704","shiFouGuoShen":"
 //     jxjyxmxshdglb: 'jxjy',
 //     bmsm: 'bmsm'
 // }
+export function correlationSql (type, val) {
+    let sql = ``
+    const col = {
+        jyrykhjlb: 'bei_kao_he_ren_yu',
+        lhrynlqr: 'bei_shou_quan_ren',
+        lhrypxjlb: 'pei_xun_ren_yuan_',
+        lhpxsqb: 'can_jia_ren_yuan_',
+        kaoshijilu: 'examinee'
+    }
+    if (type === 'jyrykhjlb' || type === 'lhrynlqr' || type === 'lhrypxjlb' || type === 'lhpxsqb') {
+        sql = `select * from t_${type} where FIND_IN_SET(${val},${col[type]}) and shi_fou_guo_shen_ = '已完成' `
+    } else if (type === 'kaoshijilu') {
+        sql = `select * from v_${type} where FIND_IN_SET(${val},${col[type]})`
+    }
+    return sql
+}
+export const correlationConfig = {
+    jyrykhjlb: {
+        config: [
+            { label: '考核时机', width: '15%', type: 'text', field: 'kao_he_shi_ji_' },
+            { label: '岗位类型', width: '10%', type: 'text', field: 'gang_wei_lei_xing' },
+            { label: '考核时间', width: '15%', type: 'text', field: 'bian_zhi_shi_jian' },
+            { label: '总分', width: '10%', type: 'text', field: 'zong_fen_' },
+            { label: '考核结果', width: '12%', type: 'text', field: 'kao_he_jie_guo_' },
+            { label: '附件', width: '14%', type: 'file', field: 'shang_chuan_fu_ji' },
+            { label: '表单', width: '14%', type: 'file', field: 'kuai_zhao_' }
+
+        ],
+        dialog: [
+            [{ name: '被考核人员', field: 'bei_kao_he_ren_yu', type: 'user' }, { name: '考核时间', field: 'bian_zhi_shi_jian', type: 'text' }],
+            [{ name: '考核时机', field: 'kao_he_shi_ji_', type: 'text' }, { name: '总分', field: 'zong_fen_', type: 'text' }],
+            [{ name: '岗位类型', field: 'gang_wei_lei_xing', type: 'text' }, { name: '考核结果', field: 'kao_he_jie_guo_', type: 'text' }],
+            [{ name: '附件', field: 'shang_chuan_fu_ji', type: 'file' }],
+            [{ name: '表单', field: 'kuai_zhao_', type: 'file' }]
+        ]
+    },
+    lhrynlqr: {
+        config: [
+            { label: '授权使用设备', width: '20%', type: 'dialog', field: 'shou_quan_shi_yon', dialogKey: 'sbwxdhk' },
+            { label: '授权岗位', width: '16%', type: 'dialog', field: 'shou_quan_gang_we', dialogKey: 'gwzzdhkrysqy' },
+            { label: '直属上级', width: '10%', type: 'user', field: 'shen_he_ren_' },
+            { label: '检验专业', width: '10%', type: 'text', field: 'jian_yan_zhuan_ye' },
+            { label: '考核结果', width: '10%', type: 'text', field: 'kao_he_jie_guo_' },
+            { label: '附件', width: '12%', type: 'file', field: 'shang_chuan_fu_ji' },
+            { label: '表单', width: '12%', type: 'file', field: 'kuai_zhao_' }
+
+        ],
+        dialog: [
+            [{ name: '授权使用设备', field: 'shou_quan_shi_yon', type: 'dialog', dialogKey: 'sbwxdhk' }, { name: '考核结果', field: 'kao_he_jie_guo_', type: 'text' }],
+            [{ name: '授权岗位', field: 'shou_quan_gang_we', type: 'dialog', dialogKey: 'gwzzdhkrysqy' }, { name: '考核日期', field: 'kao_he_shi_jian_', type: 'text' }],
+            [{ name: '直属上级', field: 'shen_he_ren_', type: 'user' }, { name: '检验专业', field: 'jian_yan_zhuan_ye', type: 'text' }],
+            [{ name: '附件', field: 'shang_chuan_fu_ji', type: 'file' }],
+            [{ name: '表单', field: 'kuai_zhao_', type: 'file' }]
+        ]
+    },
+    lhrypxjlb: {
+        config: [
+            { label: '培训名称', width: '15%', type: 'text', field: 'pei_xun_nei_rong_' },
+            { label: '培训老师', width: '12%', type: 'text', field: 'pei_xun_lao_shi_' },
+            { label: '培训时间', width: '12%', type: 'text', field: 'pei_xun_shi_jian_' },
+            { label: '培训地点', width: '10%', type: 'text', field: 'pei_xun_di_dian_' },
+            { label: '培训内容', width: '12%', type: 'text', field: 'pei_xun_xue_xi_ne' },
+            { label: '见证性材料', width: '14%', type: 'file', field: 'jian_zheng_xing_c' },
+            { label: '表单', width: '14%', type: 'file', field: 'kuai_zhao_' }
+
+        ],
+        dialog: [
+            [{ name: '培训名称', field: 'pei_xun_nei_rong_', type: 'text' }, { name: '培训目标', field: 'pei_xun_mu_di_', type: 'text' }],
+            [{ name: '培训开始时间', field: 'pei_xun_shi_jian_', type: 'text' }, { name: '培训结束时间', field: 'pei_xun_jie_shu_s', type: 'text' }],
+            [{ name: '培训老师', field: 'pei_xun_lao_shi_', type: 'text' }, { name: '培训地点', field: 'pei_xun_di_dian_', type: 'text' }],
+            [{ name: '培训内容', field: 'pei_xun_xue_xi_ne', type: 'text' }],
+            [{ name: '见证性材料', field: 'jian_zheng_xing_c', type: 'file' }],
+            [{ name: '图片', field: 'tu_pian_', type: 'file' }],
+            [{ name: '表单', field: 'kuai_zhao_', type: 'file' }]
+        ]
+    },
+    lhpxsqb: {
+        config: [
+            { label: '培训主题', width: '23%', type: 'text', field: 'pei_xun_nei_rong_' },
+            { label: '开始时间', width: '10%', type: 'text', field: 'pei_xun_kai_shi_s' },
+            { label: '结束时间', width: '10%', type: 'text', field: 'pei_xun_jie_shu_s' },
+            { label: '培训机构', width: '17%', type: 'text', field: 'pei_xun_ji_gou_' },
+            { label: '附件', width: '15%', type: 'file', field: 'pei_xun_fu_jian_' },
+            { label: '表单', width: '15%', type: 'file', field: 'kuai_zhao_' }
+
+        ],
+        dialog: [
+            [{ name: '培训主题', field: 'pei_xun_nei_rong_', type: 'text' }],
+            [{ name: '培训目的', field: 'pei_xun_mu_di_', type: 'text' }],
+            [{ name: '开始时间', field: 'pei_xun_kai_shi_s', type: 'text' }, { name: '结束时间', field: 'pei_xun_jie_shu_s', type: 'text' }],
+            [{ name: '培训机构', field: 'pei_xun_ji_gou_', type: 'text' }, { name: '培训老师', field: 'pei_xun_lao_shi_', type: 'text' }],
+            [{ name: '培训地点', field: 'pei_xun_di_dian_', type: 'text' }, { name: '参会形式', field: 'can_hui_xing_shi_', type: 'text' }],
+            [{ name: '培训天数', field: 'pei_xun_tian_shu_', type: 'text' }, { name: '培训时长', field: 'pei_xun_shi_chang', type: 'text' }],
+            [{ name: '是否有证书', field: 'shi_fou_you_zheng', type: 'text' }, { name: '发证单位', field: 'fa_zheng_dan_wei_', type: 'text' }],
+            [{ name: '是否通过考核', field: 'shi_fou_kao_he_', type: 'text' }, { name: '考核情况', field: 'kao_he_qing_kuang', type: 'text' }],
+            [{ name: '附件', field: 'pei_xun_fu_jian_', type: 'file' }],
+            [{ name: '表单', field: 'kuai_zhao_', type: 'file' }]
+        ]
+    },
+    kaoshijilu: {
+        config: [
+            { label: '考试名称', width: '19%', type: 'text', field: 'examName' },
+            { label: '考试开始时间', width: '15%', type: 'text', field: 'startDate' },
+            { label: '考试题库', width: '20%', type: 'text', field: 'bankName' },
+            { label: '考试类别', width: '12%', type: 'text', field: 'examType' },
+            { label: '考试得分', width: '12%', type: 'text', field: 'resultScore' },
+            { label: '考试总分', width: '12%', type: 'text', field: 'totalScore' }
+
+        ],
+        dialog: [
+            [{ name: '考试名称', field: 'examName', type: 'text' }, { name: '考试开始时间', field: 'startDate', type: 'text' }],
+            [{ name: '考试题库', field: 'bankName', type: 'text' }, { name: '考试类别', field: 'examType', type: 'text' }],
+            [{ name: '考试总分', field: 'totalScore', type: 'text' }, { name: '考试得分', field: 'resultScore', type: 'text' }]
+        ]
+    }
+}
 export default {
     baseDataObj,
     externalSourceDataObj,
     tabName,
-    data
+    data,
+    correlationSql
     // baseName
 }

+ 0 - 3
src/views/component/personnelFile/index.vue

@@ -369,9 +369,6 @@ export default {
             }
         },
         tipsShow (val, name) {
-            // console.log(val, this.tipsControls, val && this.tipsControls === false, 'tttttttttttttt')
-
-            console.log(this.infoNumArr, '23123213213123213123123213213123')
             if (val && this.tipsControls === false) {
                 this.infoNumArr = []