parent
							
								
									7ea0ac13e6
								
							
						
					
					
						commit
						1ba43dc288
					
				|  | @ -0,0 +1,36 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="相关方安全告知培训合格证" width="370px" destroy-on-close	> | ||||
|       <vue-qr :text="qrCodeStr" :margin="0" :size="320" color-dark="#000" color-light="#fff"/> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import vueQr from 'vue-qr' | ||||
| 
 | ||||
| export default { | ||||
|   components: { vueQr }, | ||||
|   props: { | ||||
|     appendToBody: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       visible: false, | ||||
|       qrCodeStr: '' | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     init(e) { | ||||
|       this.visible = true | ||||
|       this.qrCodeStr = e.qrCodeStr | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| </style> | ||||
|  | @ -0,0 +1,320 @@ | |||
| <template> | ||||
|   <el-dialog | ||||
|     v-if="visible" | ||||
|     :visible.sync="visible" | ||||
|     :before-close="handleClose" | ||||
|     :append-to-body="true" | ||||
|     title="培训申请" | ||||
|     width="60%"> | ||||
|     <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | ||||
|       <el-row> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="TERRITORIALITY" | ||||
|             label="集团单位 " | ||||
|           > | ||||
|             <Treeselect | ||||
|               :options="jituanDanweiTreeData" | ||||
|               :normalizer="normalizer" | ||||
|               v-model="form.TERRITORIALITY" | ||||
|               placeholder="请选择集团单位 " | ||||
|               no-options-text="暂无数据" | ||||
|               no-children-text="暂无数据" | ||||
|               style="width: 100%;" | ||||
|               @select="getUserList($event)" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
| 
 | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="TERRITORIALITY_USER_ID" | ||||
|             label="审核人员" | ||||
|           > | ||||
|             <div style="display:flex;justify-content: space-between;align-items: flex-start;"> | ||||
|               <el-select v-model="form.TERRITORIALITY_USER_ID"> | ||||
|                 <el-option | ||||
|                   v-for="item in companyUserList" | ||||
|                   :key="item.USER_ID" | ||||
|                   :label="item.NAME" | ||||
|                   :value="item.USER_ID"/> | ||||
|               </el-select> | ||||
|             </div> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
| 
 | ||||
|       <el-row> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="MANAGER" | ||||
|             label="主管部门" | ||||
|           > | ||||
|             <Treeselect | ||||
|               :options="treeData" | ||||
|               :normalizer="normalizer" | ||||
|               v-model="form.MANAGER" | ||||
|               :disabled="true" | ||||
|               placeholder="请选择主管部门" | ||||
|               no-options-text="暂无数据" | ||||
|               no-children-text="暂无数据" | ||||
|               style="width: 100%;" | ||||
|               @select="getmanagerUserList($event)" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
| 
 | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="MANAGER_USER_ID" | ||||
|             label="审核人员" | ||||
|           > | ||||
|             <div style="display:flex;justify-content: space-between;align-items: flex-start;"> | ||||
|               <el-select v-model="form.MANAGER_USER_ID"> | ||||
|                 <el-option | ||||
|                   v-for="item in managercompanyUserList" | ||||
|                   :key="item.USER_ID" | ||||
|                   :label="item.NAME" | ||||
|                   :value="item.USER_ID"/> | ||||
|               </el-select> | ||||
|             </div> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
|       <el-row> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="SUPERVISION" | ||||
|             label="安监部门" | ||||
|           > | ||||
|             <Treeselect | ||||
|               :options="treeData" | ||||
|               :normalizer="normalizer" | ||||
|               v-model="form.SUPERVISION" | ||||
|               :disabled="true" | ||||
|               placeholder="请选择安监部门" | ||||
|               no-options-text="暂无数据" | ||||
|               no-children-text="暂无数据" | ||||
|               style="width: 100%;" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
| 
 | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item | ||||
|             prop="SUPERVISION_USER_ID" | ||||
|             label="审核人员" | ||||
|           > | ||||
|             <div style="display:flex;justify-content: space-between;align-items: flex-start;"> | ||||
|               <el-select v-model="form.SUPERVISION_USER_ID"> | ||||
|                 <el-option v-for="item in userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/> | ||||
|               </el-select> | ||||
|             </div> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
| 
 | ||||
|       <el-row> | ||||
|         <el-col :span="24"> | ||||
|           <el-form-item label="备注"> | ||||
|             <el-input :rows="3" v-model="form.DESCR" type="textarea" placeholder="这里输入备注..."/> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
|     </el-form> | ||||
| 
 | ||||
|     <div slot="footer" class="dialog-footer"> | ||||
|       <el-button @click="closeWindow">取 消</el-button> | ||||
|       <el-button :loading="loading" type="primary" @click="save">确 定</el-button> | ||||
|     </div> | ||||
|   </el-dialog> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { requestFN } from '@/utils/request' | ||||
| import Treeselect from '@riophae/vue-treeselect' | ||||
| import '@riophae/vue-treeselect/dist/vue-treeselect.css' | ||||
| 
 | ||||
| export default { | ||||
|   components: { | ||||
|     Treeselect | ||||
|   }, | ||||
|   props: { | ||||
|     corpInfo: { | ||||
|       type: String, | ||||
|       default: '' | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       visible: false, | ||||
|       loading: false, | ||||
|       treeData: [], | ||||
|       companyTreeData: [], | ||||
|       corpinfo: {}, | ||||
|       userList: [], | ||||
|       companyUserList: [], | ||||
|       managercompanyUserList: [], | ||||
|       jituanDanwei: '', | ||||
|       jituanDanweiTreeData: [], | ||||
|       normalizer(node) { | ||||
|         return { | ||||
|           id: node.id, | ||||
|           label: node.name, | ||||
|           children: node.nodes | ||||
|         } | ||||
|       }, | ||||
|       form: {}, | ||||
|       rules: { | ||||
|         // SUPERVISION: [{ required: true, message: '安监部门不能为空', trigger: 'blur' }], | ||||
|         SUPERVISION_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }], | ||||
|         MANAGER: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }], | ||||
|         MANAGER_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }], | ||||
|         TERRITORIALITY: [{ required: true, message: '属地管理部门不能为空', trigger: 'blur' }], | ||||
|         TERRITORIALITY_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     async init(e) { | ||||
|       if (e) { | ||||
|         this.users = e | ||||
|       } | ||||
|       this.visible = true | ||||
|       this.loading = false | ||||
|       this.form = {} | ||||
|       /** | ||||
|        * 获取相关方的 集团单位  corpinfo/getDataForEditByCorpInfoId | ||||
|        * 根据集团单位 找到 对应的 企业id | ||||
|        */ | ||||
|       await this.getCorpinfo() | ||||
|     }, | ||||
|     getCorpinfo() { | ||||
|       requestFN( | ||||
|         '/corpinfo/getDataForEditByCorpInfoId', | ||||
|         { | ||||
|           CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID, | ||||
|           tm: new Date().getTime() | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.corpinfo = data.pd | ||||
|         // 河港机械	jtdw002  1e6dbbe16004402f8d2c0e52afd9a676 | ||||
|         // 河港港工	jtdw003  3a854eefa7894e06aaa1a2611bca80f6 | ||||
|         // 河港检测	jtdw004  020578a4c1f04bc692ee25145c2efbe5 | ||||
|         // 方宇物业	jtdw005 90966974de3c4b83aca6f8fd6432d5c2 | ||||
| 
 | ||||
|         if (data.pd.CORP_TYPE == 'jtdw002') { | ||||
|           this.jituanDanwei = '1e6dbbe16004402f8d2c0e52afd9a676' | ||||
|         } | ||||
|         if (data.pd.CORP_TYPE == 'jtdw003') { | ||||
|           this.jituanDanwei = '3a854eefa7894e06aaa1a2611bca80f6' | ||||
|         } | ||||
|         if (data.pd.CORP_TYPE == 'jtdw004') { | ||||
|           this.jituanDanwei = '020578a4c1f04bc692ee25145c2efbe5' | ||||
|         } | ||||
|         if (data.pd.CORP_TYPE == 'jtdw005') { | ||||
|           this.jituanDanwei = '90966974de3c4b83aca6f8fd6432d5c2' | ||||
|         } | ||||
|         this.getTreeData() | ||||
|       }) | ||||
|     }, | ||||
|     // 获得部门树 | ||||
|     getTreeData() { | ||||
|       requestFN( | ||||
|         '/regulatoryApi/department/listTree', | ||||
|         {} | ||||
|       ).then((data) => { | ||||
|         this.treeData = JSON.parse(data.zTreeNodes) | ||||
|         // 必须指定【股份-安全监督部】 | ||||
|         this.form.SUPERVISION = 'c31058273a2d40f9b83dd8e5ae3a723c' | ||||
|         this.form.MANAGER = this.corpinfo.MAIN_DEPARTMENT | ||||
|         this.getRegulatoryUserList(this.form.SUPERVISION) | ||||
|         this.getmanagerUserList(this.corpinfo.MAIN_DEPARTMENT) | ||||
|       }).catch((e) => { | ||||
|         console.log(e) | ||||
|       }) | ||||
| 
 | ||||
|       if (this.jituanDanwei) { | ||||
|         requestFN( | ||||
|           '/companyApi/department/listTree', | ||||
|           { CORPINFO_ID: this.jituanDanwei } | ||||
|         ).then((data) => { | ||||
|           this.jituanDanweiTreeData = JSON.parse(data.zTreeNodes) | ||||
|         }).catch((e) => { | ||||
|         }) | ||||
|       } | ||||
|     }, | ||||
|     getRegulatoryUserList(DEPARTMENT_ID) { | ||||
|       requestFN( | ||||
|         '/regulatoryApi/user/listAll', | ||||
|         { | ||||
|           DEPARTMENT_ID: DEPARTMENT_ID, | ||||
|           ISASSESS: '1' | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.userList = data.userList | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|     }, | ||||
|     // 人员 | ||||
|     getUserList({ id: DEPARTMENT_ID }) { | ||||
|       requestFN( | ||||
|         '/companyApi/user/listAll', | ||||
|         { | ||||
|           DEPARTMENT_ID | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.companyUserList = data.userList | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|     }, | ||||
|     getmanagerUserList(DEPARTMENT_ID) { | ||||
|       requestFN( | ||||
|         '/regulatoryApi/user/listAll', | ||||
|         { | ||||
|           DEPARTMENT_ID: DEPARTMENT_ID | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.managercompanyUserList = data.userList | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|     }, | ||||
| 
 | ||||
|     save() { | ||||
|       this.$refs.form.validate(valid => { | ||||
|         if (valid) { | ||||
|           this.loading = true | ||||
|           this.form.USER_COUNT = this.users.length | ||||
|           this.form.AUDIT_STATUS = 0 | ||||
|           this.form.TYPE = 2 | ||||
|           requestFN( | ||||
|             '/trainingbatch/add', | ||||
|             { | ||||
|               ...this.form, | ||||
|               users: this.users.join(',') | ||||
|             } | ||||
|           ).then((data) => { | ||||
|             this.loading = false | ||||
|             this.$message({ | ||||
|               message: '申请成功', | ||||
|               type: 'success' | ||||
|             }) | ||||
|             this.handleClose() | ||||
|           }).catch((e) => { | ||||
|             this.listLoading = false | ||||
|           }) | ||||
|         } else { | ||||
|           return false | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     handleClose() { | ||||
|       this.visible = false | ||||
|       this.$emit('finish', '') | ||||
|     }, | ||||
|     closeWindow() { | ||||
|       this.handleClose() | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | @ -0,0 +1,190 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <el-dialog v-loading = "loading" :visible.sync="visible" :append-to-body="appendToBody" :before-close="beforeClose" title="审批" width="1200px" destroy-on-close> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="200px" label-position="right" type="flex"> | ||||
|         <el-row :gutter="12"> | ||||
|           <el-col :span="12"> | ||||
|             <el-form-item prop="APPOINT_DEPARTMENT_ID" label="指定监管部门:"> | ||||
|               <Treeselect | ||||
|                 :options="departmentTree" | ||||
|                 :normalizer="normalizer" | ||||
|                 v-model="form.APPOINT_DEPARTMENT_ID" | ||||
|                 placeholder="请选择部门" | ||||
|                 no-options-text="暂无数据" | ||||
|                 no-children-text="暂无数据" | ||||
|                 style="width: 100%;" | ||||
|                 @select="getPeopleList($event)" | ||||
|               /> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col :span="12"> | ||||
|             <el-form-item prop="APPOINT_USER_ID" label="指定监管部门审批人:"> | ||||
|               <el-select v-model="form.user" style="width: 300px" placeholder="请选择" @change="chooseUser"> | ||||
|                 <el-option v-for="item in peopleList" :key="item.USER_ID" :value="JSON.stringify(item)" :label="item.NAME"/> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|         </el-row> | ||||
|       </el-form> | ||||
| 
 | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="handleClose">关 闭</el-button> | ||||
|         <el-button type="primary" @click="sendMessage('1')">确 定</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import vueQr from 'vue-qr' | ||||
| import Treeselect from '@riophae/vue-treeselect' | ||||
| import { requestFN } from '@/utils/request' | ||||
| 
 | ||||
| export default { | ||||
|   components: { Treeselect, vueQr }, | ||||
|   props: { | ||||
|     appendToBody: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       visible: false, | ||||
|       loading: false, | ||||
|       form: { | ||||
|         STATUS: null, | ||||
|         APPOINT_CORP_ID: '', | ||||
|         APPOINT_CORP_NAME: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: null, | ||||
|         APPOINT_USER_NAME: '', | ||||
|         OPINION: '', | ||||
|         user: '', | ||||
|         tm: new Date().getTime(), | ||||
|         list: [], | ||||
|         isShow: true, | ||||
|         info: {}, | ||||
|         entrustFlag: '1' | ||||
|       }, | ||||
|       rules: { | ||||
|         STATUS: [ | ||||
|           { required: true, message: '请选择是否通过', trigger: 'change' } | ||||
|         ], | ||||
|         APPOINT_DEPARTMENT_ID: [ | ||||
|           { required: true, message: '请选择指定监管部门', trigger: 'change' } | ||||
|         ], | ||||
|         APPOINT_USER_ID: [ | ||||
|           { required: true, message: '请选择指定监管部门审批人', trigger: 'change' } | ||||
|         ], | ||||
|         OPINION: [ | ||||
|           { required: true, message: '请填写打回原因', trigger: 'change' } | ||||
|         ] | ||||
|       }, | ||||
|       heirloom: {}, | ||||
| 
 | ||||
|       normalizer(node) { | ||||
|         return { | ||||
|           id: node.id, | ||||
|           label: node.name, | ||||
|           children: node.nodes | ||||
|         } | ||||
|       }, | ||||
| 
 | ||||
|       departmentTree: [], | ||||
|       peopleList: [] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     async init(e) { | ||||
|       console.log(e) | ||||
|       this.loading = true | ||||
|       this.visible = true | ||||
|       this.heirloom = JSON.stringify(e) | ||||
|       this.form.list = JSON.stringify(e) | ||||
|       this.getDepartmentTree() | ||||
|       this.loading = false | ||||
|     }, | ||||
|     sendMessage(e) { | ||||
|       this.$refs.form.validate((valid) => { | ||||
|         if (!valid) { | ||||
|           this.$message.error('请填写完整信息') | ||||
|         } else { | ||||
|           requestFN('/xgf/user/approve', this.form) | ||||
|             .then((data) => { | ||||
|               this.$message.success('推送成功') | ||||
|               this.visible = false | ||||
|               this.$emit('refresh', '') | ||||
|             }) | ||||
|             .catch((e) => { | ||||
|               console.log(e) | ||||
|             }) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     getDepartmentTree() { | ||||
|       return new Promise(resolve => { | ||||
|         requestFN( | ||||
|           '/corpDepartment/listTreeManageAndCorpHasOrder', | ||||
|           {} | ||||
|         ).then((data) => { | ||||
|           const treeData = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes') | ||||
|           this.departmentTree = this.removeEmptyChildren(treeData) | ||||
|           resolve(true) | ||||
|         }).catch((e) => { | ||||
|           console.log(e) | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     getPeopleList(e) { | ||||
|       this.form.APPOINT_DEPARTMENT_NAME = e.name | ||||
|       requestFN( | ||||
|         '/user/listAllCorp', | ||||
|         { | ||||
|           DEPARTMENT_ID: e.id | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.peopleList = data.userList | ||||
|       }).catch((e) => { | ||||
|         console.log(e) | ||||
|       }) | ||||
|     }, | ||||
|     chooseUser(e) { | ||||
|       const entity = JSON.parse(e) | ||||
|       this.form.APPOINT_USER_ID = entity.USER_ID | ||||
|       this.form.APPOINT_USER_NAME = entity.NAME | ||||
|     }, | ||||
| 
 | ||||
|     handleClose() { | ||||
|       this.form = { | ||||
|         STATUS: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: '', | ||||
|         APPOINT_USER_NAME: '', | ||||
|         user: '', | ||||
|         list: [], | ||||
|         tm: new Date().getTime() | ||||
|       } | ||||
|       this.visible = false | ||||
|     }, | ||||
|     beforeClose() { | ||||
|       this.visible = false | ||||
|       this.form = { | ||||
|         STATUS: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: '', | ||||
|         APPOINT_USER_NAME: '', | ||||
|         user: '', | ||||
|         list: [], | ||||
|         tm: new Date().getTime() | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| </style> | ||||
|  | @ -0,0 +1,385 @@ | |||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <el-form label-width="130px"> | ||||
|       <el-row> | ||||
|         <el-col :span="6"> | ||||
|           <el-form-item label="用户名"> | ||||
|             <el-input v-model="KEYWORDS" placeholder="请输入用户名"/> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="6"> | ||||
|           <el-form-item label="培训状态"> | ||||
|             <el-select v-model="STUDY_STATUS" placeholder="请选择培训状态" style="width: 100%;" clearable> | ||||
|               <el-option v-for="item in studyStatusList" :key="item.STUDY_STATUS" :label="item.STUDY_STATUS_NAME" :value="item.STUDY_STATUS"/> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="6"> | ||||
|           <el-form-item label="审核状态"> | ||||
|             <el-select v-model="CHECK_STATUS" placeholder="请选择培训状态" style="width: 100%;" clearable> | ||||
|               <el-option v-for="item in checkStatusList" :key="item.CHECK_STATUS" :label="item.CHECK_STATUS_NAME" :value="item.CHECK_STATUS"/> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="6"> | ||||
|           <el-form-item label-width="10px"> | ||||
|             <el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery"> | ||||
|               搜索 | ||||
|             </el-button> | ||||
|             <el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset"> | ||||
|               重置 | ||||
|             </el-button> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="6"> | ||||
|           <el-form-item label="归属企业"> | ||||
|             <el-select v-model="BELONG_TO_CORP" filterable placeholder="请选择" style="width:  100%" > | ||||
|               <el-option | ||||
|                 v-for="item in companyList" | ||||
|                 :key="item.BELONG_TO_CORP" | ||||
|                 :label="item.BELONG_TO_CORP_NAME" | ||||
|                 :value="item.BELONG_TO_CORP"/> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
| 
 | ||||
|       </el-row> | ||||
|     </el-form> | ||||
|     <el-table | ||||
|       ref="multipleTable" | ||||
|       :data="varList" | ||||
|       :header-cell-style="{'font-weight': 'bold','color': '#000'}" | ||||
|       tooltip-effect="dark" | ||||
|       border | ||||
|       fit | ||||
|       highlight-current-row> | ||||
|       <el-table-column :selectable="handleSelectWithDifferentStatus" type="selection" width="55" align="center"/> | ||||
|       <el-table-column type="index" label="序号" width="50" align="center"/> | ||||
|       <el-table-column prop="USERNAME" label="用户名" align="center"/>xgf/user | ||||
|       <el-table-column prop="NAME" label="姓名" align="center"/> | ||||
|       <el-table-column prop="BELONG_TO_CORP_NAME" label="外派公司名称" align="center"/> | ||||
|       <el-table-column prop="STUDY_STATUS_NAME" label="培训状态" align="center"/> | ||||
|       <el-table-column prop="CHECK_STATUS_NAME" label="审核状态" align="center"/> | ||||
|       <el-table-column label="操作" align="center" width="450"> | ||||
|         <template slot-scope="{row}"> | ||||
|           <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)">详情</el-button> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|     <div class="page-btn-group"> | ||||
|       <div> | ||||
|       </div> | ||||
|       <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/> | ||||
|     </div> | ||||
|     <user ref="userInfo" append-to-body/> | ||||
|     <user-info ref="userInfos" append-to-body/> | ||||
|     <send-util ref="sendUtil" append-to-body @refresh="getList"/> | ||||
|     <entrust ref="entrust" append-to-body @refresh="getList"/> | ||||
|     <flow-step ref="step" append-to-body/> | ||||
|     <flow-info-list ref="flowInfoList" /> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 | ||||
| import { requestFN } from '@/utils/request' | ||||
| import waves from '@/directive/waves' // waves directive | ||||
| import vueQr from 'vue-qr' | ||||
| import apply from './apply' | ||||
| import user from './user.vue' | ||||
| import SendUtil from './sendUtil.vue' | ||||
| import UserInfo from '../../flow_audit/userInfo.vue' | ||||
| import Entrust from './entrust.vue' | ||||
| import FlowStep from '../../flow/components/flowStep.vue' | ||||
| import FlowInfoList from '../../flow/components/flowInfoList.vue' | ||||
| 
 | ||||
| export default { | ||||
|   components: { FlowInfoList, FlowStep, Entrust, UserInfo, SendUtil, Pagination, apply, vueQr, user }, | ||||
|   directives: { waves }, | ||||
|   data() { | ||||
|     return { | ||||
|       config: config, | ||||
|       QRCodeDialog: false, | ||||
|       qrcodeStr: '', | ||||
|       userDetailForm: {}, | ||||
|       specialUsersList: {}, | ||||
|       detailForm: {}, | ||||
|       userEntryForm: {}, | ||||
|       imgUrl: '', | ||||
|       SUPERVISE_CORPINFO_ID: '', | ||||
|       wenhuachengduList: [], // 文化程度 | ||||
|       postList: [], // 岗位名称 | ||||
|       photosOfLevel: [], // 三级教育照片 | ||||
|       trainRecordList: [], // 培训记录 | ||||
|       contractFileList: [], // 合同文件 | ||||
|       insuranceFileList: [], // 保险文件 | ||||
|       gongshangbaoxianFile: [], | ||||
|       userPhotoFile: [], // 头像 | ||||
|       userCardIDPhotoFile: [], // 身份证照片 | ||||
|       socialPhotoFile: [], // 身份证照片 | ||||
|       listQuery: { | ||||
|         page: 1, | ||||
|         limit: 10 | ||||
|       }, | ||||
|       form: { | ||||
|         STATUS: null, | ||||
|         APPOINT_CORP_ID: '', | ||||
|         APPOINT_CORP_NAME: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: null, | ||||
|         APPOINT_USER_NAME: '', | ||||
|         APPOINT_ANNEX: null, | ||||
|         OPINION: '', | ||||
|         STEP: false, | ||||
|         LIMIT_END_TIME: '', | ||||
|         user: '', | ||||
|         XGF_USER_ID:'', | ||||
|         FLOWS_STEP:'1', | ||||
|         FLOWS_TYPE:'2', | ||||
|         repeatPush: '1', | ||||
|         tm: new Date().getTime(), | ||||
|         list: [], | ||||
|         isShow: true, | ||||
|         info: {}, | ||||
|         TYPE: null, | ||||
|         BACK_NAME: '', | ||||
|         BACK_STEP: '' | ||||
|       }, | ||||
|       total: 0, | ||||
|       varList: [], | ||||
|       KEYWORDS: '', | ||||
|       STATUS: '', | ||||
|       add: false,		// 新增按钮 | ||||
|       del: false,		// 删除按钮 | ||||
|       edit: false,	// 修改按钮 | ||||
| 
 | ||||
|       studyStatusList: [], | ||||
|       checkStatusList: [], | ||||
|       STUDY_STATUS: '', | ||||
|       CHECK_STATUS: '', | ||||
|       BELONG_TO_CORP: '', | ||||
|       companyList: [] | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.getDict() | ||||
|     this.getList() | ||||
|     this.hasButton() | ||||
|   }, | ||||
|   methods: { | ||||
|     handleSelectWithDifferentStatus(row, rowIndex) { | ||||
|       if (row.STATUS === 0) { | ||||
|         // 不禁用 | ||||
|         return true | ||||
|       } else { | ||||
|         // 禁用 | ||||
|         return false | ||||
|       } | ||||
|     }, | ||||
|     getQuery() { | ||||
|       if (this.$refs.multipleTable) { | ||||
|         this.$refs.multipleTable.clearSelection() | ||||
|       } | ||||
|       this.listQuery = { | ||||
|         page: 1, | ||||
|         limit: 10 | ||||
|       } | ||||
|       this.getList() | ||||
|     }, | ||||
|     // 推送人员 | ||||
|     sendMessage(item){ | ||||
|       this.form.STATUS = 1 | ||||
|       this.form.STEP = false | ||||
|       this.form.TYPE = 2 | ||||
|       this.form.BACK_STEP = -1 | ||||
|       this.form.XGF_USER_ID = item.XGF_USER_ID | ||||
|       this.form.repeatPush = '1' | ||||
|       this.form.FLOWS_STEP = '1' | ||||
|       this.form.FLOWS_TYPE = '2' | ||||
|       if (this.form.TYPE !== '2') { | ||||
|         this.loading = true | ||||
|         requestFN('/xgf/user/repeatPush', this.form) | ||||
|           .then((data) => { | ||||
|             if (data.code === '0') { | ||||
|               this.$message.success('推送成功') | ||||
|               this.visible = false | ||||
|               this.$emit('refresh', '') | ||||
|               this.handleClose() | ||||
|             } else { | ||||
|               this.$message.error(data.errorMessage) | ||||
|             } | ||||
| 
 | ||||
|             this.loading = false | ||||
|           }) | ||||
|           .catch((e) => { | ||||
|             console.log(e) | ||||
|           }) | ||||
|       } else { | ||||
|         const formData = new FormData() | ||||
|         this.form.chengNuoFlag = '1' | ||||
|         Object.keys(this.form).map(key => { | ||||
|           formData.append(key, this.form[key]) | ||||
|         }) | ||||
|         if (this.form.APPOINT_ANNEX) { | ||||
|           for (let i = 0; i < this.form.APPOINT_ANNEX.length; i++) { | ||||
|             formData.append('weiTuoShu', this.form.APPOINT_ANNEX[i].raw) | ||||
|           } | ||||
|         } | ||||
|         this.loading = true | ||||
|         upload('/xgf/user/repeatPush', formData) | ||||
|           .then((data) => { | ||||
|             this.$message.success('推送成功') | ||||
|             this.visible = false | ||||
|             this.$emit('refresh', '') | ||||
|             this.handleClose() | ||||
|             this.loading = false | ||||
|           }) | ||||
|           .catch((e) => { | ||||
|             console.log(e) | ||||
|           }) | ||||
|       } | ||||
|     }, | ||||
|     handleClose() { | ||||
|       this.form = { | ||||
|         STATUS: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: '', | ||||
|         APPOINT_USER_NAME: '', | ||||
|         OPINION: '', | ||||
|         user: '', | ||||
|         list: [], | ||||
|         tm: new Date().getTime() | ||||
|       } | ||||
|     }, | ||||
|     goKeyReset() { | ||||
|       this.KEYWORDS = '' | ||||
|       this.STATUS = '' | ||||
|       this.CHECK_STATUS = '' | ||||
|       this.STUDY_STATUS = '' | ||||
|       this.BELONG_TO_CORP = '' | ||||
|       this.getQuery() | ||||
|     }, | ||||
|     getList() { | ||||
|       this.listLoading = true | ||||
|       requestFN( | ||||
|         '/xgf/user/getAllXgfUserList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, | ||||
|         { | ||||
|           KEYWORDS: this.KEYWORDS, | ||||
|           CHECK_STATUS: this.CHECK_STATUS, | ||||
|           STUDY_STATUS: this.STUDY_STATUS, | ||||
|           BELONG_TO_CORP: this.BELONG_TO_CORP | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.listLoading = false | ||||
|         this.varList = data.list | ||||
|         this.total = data.page.totalResult | ||||
|       }) | ||||
|         .catch((e) => { | ||||
|           this.listLoading = false | ||||
|         }) | ||||
|     }, | ||||
|     handleShow(row) { | ||||
|       this.$refs.userInfos.init(row) | ||||
|     }, | ||||
|     handleShowStep(row) { | ||||
|       this.$refs.step.init(row) | ||||
|     }, | ||||
|     handleShowFlow(row) { | ||||
|       this.$refs.flowInfoList.init(row) | ||||
|     }, | ||||
|     approve(row) { | ||||
|       this.$refs.sendUtil.init(row) | ||||
|     }, | ||||
|     entrust(row) { | ||||
|       this.$refs.entrust.init(row) | ||||
|     }, | ||||
|     getUserInfo(row) { | ||||
|       this.$refs.userInfo.init(row) | ||||
|     }, | ||||
|     handleAdd() { | ||||
|       const _selectData = this.$refs.multipleTable.selection | ||||
|       if (_selectData == null || _selectData.length == 0) { | ||||
|         this.$message({ | ||||
|           message: '未勾选培训人员...', | ||||
|           type: 'error' | ||||
|         }) | ||||
|         return false | ||||
|       } | ||||
| 
 | ||||
|       var users = [] | ||||
|       _selectData.map(item => { | ||||
|         if (item.STATUS === 0) { | ||||
|           users.push(item.USER_ID) | ||||
|         } | ||||
|       }) | ||||
| 
 | ||||
|       if (users == null || users.length == 0) { | ||||
|         this.$message({ | ||||
|           message: '勾选人员暂无法提交申请...', | ||||
|           type: 'error' | ||||
|         }) | ||||
|         return false | ||||
|       } | ||||
|       this.$refs.apply.init(users) | ||||
|     }, | ||||
|     hasButton() { | ||||
|       var keys = 'trainingbatch:add,trainingbatch:del,trainingbatch:edit,fhSms,email,fromExcel,toExcel' | ||||
|       requestFN( | ||||
|         '/head/hasButton', | ||||
|         { | ||||
|           keys: keys, tm: new Date().getTime() | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         if (data.result == 'success') { | ||||
|           this.add = data.trainingbatchfhadminadd	// 增 | ||||
|           this.del = data.trainingbatchfhadmindel	// 删 | ||||
|           this.edit = data.trainingbatchfhadminedit	// 改 | ||||
|           this.fromExcel = data.fromExcel	// 从excel导入权限 | ||||
|           this.toExcel = data.toExcel		// 导出到excel权限 | ||||
|         } else if (data.result == 'exception') { | ||||
|           // showException('按钮权限', data.exception)// 显示异常 | ||||
|           console.info('按钮权限:', data.exception) | ||||
|         } | ||||
|       }) | ||||
|         .catch((e) => { | ||||
|           this.listLoading = false | ||||
|         }) | ||||
|     }, | ||||
|     getDict: function() { | ||||
|       requestFN( | ||||
|         'dictionaries/getLevels', | ||||
|         { DICTIONARIES_ID: 'd7d80f08d73a4accbccf4fd3d8d1d867' } | ||||
|       ).then((data) => { | ||||
|         this.wenhuachengduList = data.list | ||||
|       }).catch((e) => { | ||||
|         this.listLoading = false | ||||
|       }) | ||||
|       requestFN( | ||||
|         'dictionaries/getLevels', | ||||
|         { DICTIONARIES_ID: '09e36ac01e9540f8bc84eab1c1a78754' } | ||||
|       ).then((data) => { | ||||
|         this.postList = data.list | ||||
|       }).catch((e) => { | ||||
|         this.listLoading = false | ||||
|       }) | ||||
| 
 | ||||
|       requestFN('/xgf/user/translate').then((data) => { | ||||
|         this.studyStatusList = data.studyStatusList | ||||
|         this.checkStatusList = data.checkStatusList | ||||
|       }).catch((e) => { | ||||
|         this.listLoading = false | ||||
|       }) | ||||
|       requestFN( | ||||
|         '/xgf/user/getAllCorpInfo', {} | ||||
|       ).then((data) => { | ||||
|         this.companyList = data.list | ||||
|       }).catch((e) => { | ||||
|         this.loading = false | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
|  | @ -0,0 +1,36 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="头像" width="370px" destroy-on-close	> | ||||
|       <el-image :src="src"/> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import vueQr from 'vue-qr' | ||||
| 
 | ||||
| export default { | ||||
|   components: { vueQr }, | ||||
|   props: { | ||||
|     appendToBody: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       visible: false, | ||||
|       src: '' | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     init(e) { | ||||
|       this.visible = true | ||||
|       this.src = e.src | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| </style> | ||||
|  | @ -0,0 +1,198 @@ | |||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <el-page-header content="申请记录" @back="goBack"/> | ||||
|     <el-form label-width="130px"> | ||||
|       <el-row> | ||||
|         <el-col :span="5"> | ||||
|           <el-form-item label="申请人员"> | ||||
|             <el-input v-model="KEYWORDS" placeholder="请输入申请人员"/> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="5"> | ||||
|           <el-form-item label="主管部门"> | ||||
|             <Treeselect | ||||
|               :options="companyTreeData" | ||||
|               :normalizer="normalizer" | ||||
|               v-model="MANAGER" | ||||
|               placeholder="请选择部门" | ||||
|               no-options-text="暂无数据" | ||||
|               no-children-text="暂无数据" | ||||
|               style="width: 100%;" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="5"> | ||||
|           <el-form-item label="属地管理部门"> | ||||
|             <Treeselect | ||||
|               :options="companyTreeData" | ||||
|               :normalizer="normalizer" | ||||
|               v-model="TERRITORIALITY" | ||||
|               placeholder="请选择部门" | ||||
|               no-options-text="暂无数据" | ||||
|               no-children-text="暂无数据" | ||||
|               style="width: 100%;" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="5"> | ||||
|           <el-form-item label="申请状态"> | ||||
|             <el-select v-model="AUDIT_STATUS" placeholder="请选择申请状态" style="width: 100%;"> | ||||
|               <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="4"> | ||||
|           <el-form-item label-width="10px"> | ||||
|             <el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery"> | ||||
|               搜索 | ||||
|             </el-button> | ||||
|             <el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset"> | ||||
|               重置 | ||||
|             </el-button> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
|     </el-form> | ||||
|     <el-table ref="multipleTable" :data="varList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row> | ||||
|       <el-table-column type="selection" width="55" align="center" /> | ||||
|       <el-table-column type="index" label="序号" width="50" align="center" /> | ||||
|       <el-table-column prop="CREATTIME" label="申请时间" align="center" /> | ||||
|       <el-table-column prop="CREATOR" label="申请人员" align="center" /> | ||||
|       <el-table-column prop="SUPERVISION_DEPARTMENT_NAME" label="安监部门" align="center" /> | ||||
|       <el-table-column prop="MANAGER_DEPT_NAME" label="主管部门" align="center" /> | ||||
|       <el-table-column prop="TERRITORIALITY_DEPARTMENT_NAME" label="属地管理部门" align="center" /> | ||||
|       <el-table-column prop="TRAIN_DATE" label="申请年份" align="center" > | ||||
|         <template slot-scope="{row}"> | ||||
|           {{ new Date(row.CREATTIME).getFullYear() }} | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column prop="AUDIT_STATUS" label="申请状态" align="center" > | ||||
|         <template slot-scope="{row}"> | ||||
|           <span v-if="row.AUDIT_STATUS === 0">待审核</span> | ||||
|           <span v-if="row.AUDIT_STATUS === 1">审核中</span> | ||||
|           <span v-if="row.AUDIT_STATUS === 2">待培训</span> | ||||
|           <span v-if="row.AUDIT_STATUS === 3">已完成</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column prop="PASS_COUNT" label="审核通过人数" align="center" /> <!-- 已更新为申请状态中的审核通过人员数--> | ||||
|       <el-table-column prop="USER_COUNT" label="申请人数" align="center" /> | ||||
|       <el-table-column label="操作" align="center" width="200"> | ||||
|         <template slot-scope="{row}"> | ||||
|           <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)">查看</el-button> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|     <div class="page-btn-group"> | ||||
|       <div/> | ||||
|       <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> | ||||
|     </div> | ||||
| 
 | ||||
|     <users ref="users"/> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 | ||||
| import { requestFN } from '@/utils/request' | ||||
| import waves from '@/directive/waves' // waves directive | ||||
| import Treeselect from '@riophae/vue-treeselect' | ||||
| import '@riophae/vue-treeselect/dist/vue-treeselect.css' | ||||
| import users from './users' | ||||
| export default { | ||||
|   components: { Pagination, Treeselect, users }, | ||||
|   directives: { waves }, | ||||
|   data() { | ||||
|     return { | ||||
|       listQuery: { | ||||
|         page: 1, | ||||
|         limit: 10 | ||||
|       }, | ||||
|       total: 0, | ||||
|       varList: [], | ||||
|       treeData: [], | ||||
|       companyTreeData: [], | ||||
|       normalizer(node) { | ||||
|         return { | ||||
|           id: node.id, | ||||
|           label: node.name, | ||||
|           children: node.nodes | ||||
|         } | ||||
|       }, | ||||
|       MANAGER: null, | ||||
|       TERRITORIALITY: null, | ||||
|       statusList: [{ value: 0, label: '待审核' }, { value: 1, label: '审核中' }, { value: 2, label: '待培训' }, { value: 3, label: '已完成' }], | ||||
|       AUDIT_STATUS: '', | ||||
|       KEYWORDS: '' | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.getList() | ||||
|     this.getTreeData() | ||||
|   }, | ||||
|   methods: { | ||||
|     getQuery() { | ||||
|       this.$refs.multipleTable.clearSelection() | ||||
|       this.listQuery = { | ||||
|         page: 1, | ||||
|         limit: 10 | ||||
|       } | ||||
|       this.getList() | ||||
|     }, | ||||
|     goKeyReset() { | ||||
|       this.MANAGER = null | ||||
|       this.TERRITORIALITY = null | ||||
|       this.AUDIT_STATUS = '' | ||||
|       this.KEYWORDS = '' | ||||
|       this.getQuery() | ||||
|     }, | ||||
|     getList() { | ||||
|       this.listLoading = true | ||||
|       requestFN( | ||||
|         '/trainingbatch/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, | ||||
|         { | ||||
|           MANAGER: this.MANAGER, | ||||
|           TERRITORIALITY: this.TERRITORIALITY, | ||||
|           AUDIT_STATUS: this.AUDIT_STATUS, | ||||
|           KEYWORDS: this.KEYWORDS, | ||||
|           TYPE: 2, | ||||
|           USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.listLoading = false | ||||
|         this.varList = data.varList | ||||
|         console.log(this.varList) | ||||
|         this.total = data.page.totalResult | ||||
|       }) | ||||
|         .catch((e) => { | ||||
|           this.listLoading = false | ||||
|         }) | ||||
|     }, | ||||
| 
 | ||||
|     // 获得部门树 | ||||
|     getTreeData() { | ||||
|       requestFN( | ||||
|         '/regulatoryApi/department/listTree', | ||||
|         {} | ||||
|       ).then((data) => { | ||||
|         this.treeData = JSON.parse(data.zTreeNodes) | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|       requestFN( | ||||
|         '/companyApi/department/listTree', | ||||
|         { CORPINFO_ID: this.$parent.SUPERVISE_CORPINFO_ID } | ||||
|       ).then((data) => { | ||||
|         this.companyTreeData = JSON.parse(data.zTreeNodes) | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|     }, | ||||
| 
 | ||||
|     handleShow(row) { | ||||
|       this.$refs.users.init(row) | ||||
|     }, | ||||
|     goBack() { | ||||
|       this.$parent.activeName = 'List' | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
|  | @ -0,0 +1,218 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <el-dialog v-loading = "loading" :visible.sync="visible" :append-to-body="appendToBody" :before-close="beforeClose" title="审批" width="1200px" destroy-on-close> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="200px" label-position="right" type="flex"> | ||||
|         <el-row :gutter="12"> | ||||
|           <el-col :span="12"> | ||||
|             <el-form-item prop="STATUS" label="是否通过: "> | ||||
|               <el-select v-model="form.STATUS" style="width: 300px" placeholder="请选择"> | ||||
|                 <el-option label="是" value="1"/> | ||||
|                 <el-option label="否" value="0"/> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col :span="12"> | ||||
|             <el-form-item v-if="form.STATUS === '1' && !form.STEP" prop="APPOINT_DEPARTMENT_ID" label="指定监管部门:"> | ||||
|               <Treeselect | ||||
|                 :options="departmentTree" | ||||
|                 :normalizer="normalizer" | ||||
|                 v-model="form.APPOINT_DEPARTMENT_ID" | ||||
|                 placeholder="请选择部门" | ||||
|                 no-options-text="暂无数据" | ||||
|                 no-children-text="暂无数据" | ||||
|                 style="width: 100%;" | ||||
|                 @select="getPeopleList($event)" | ||||
|               /> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|         </el-row> | ||||
|         <el-row> | ||||
|           <el-col v-if="form.STATUS === '0'" :span="12"> | ||||
|             <el-form-item v-if="form.STATUS === '0'" prop="OPINION" label="打回原因:"> | ||||
|               <el-input v-model="form.OPINION" :rows="2" type="textarea" placeholder="填写审批意见"/> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col v-if="form.STATUS === '1' && !form.STEP " :span="12"> | ||||
|             <el-form-item v-if="form.STATUS === '1'" prop="APPOINT_USER_ID" label="指定监管部门审批人:"> | ||||
|               <el-select v-model="form.user" style="width: 300px" placeholder="请选择" @change="chooseUser"> | ||||
|                 <el-option v-for="item in peopleList" :key="item.USER_ID" :value="JSON.stringify(item)" :label="item.NAME"/> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|         </el-row> | ||||
|       </el-form> | ||||
| 
 | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="handleClose">关 闭</el-button> | ||||
|         <el-button type="primary" @click="sendMessage('1')">确 定</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import vueQr from 'vue-qr' | ||||
| import Treeselect from '@riophae/vue-treeselect' | ||||
| import { requestFN } from '@/utils/request' | ||||
| 
 | ||||
| export default { | ||||
|   components: { Treeselect, vueQr }, | ||||
|   props: { | ||||
|     appendToBody: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       visible: false, | ||||
|       loading: false, | ||||
|       form: { | ||||
|         STATUS: null, | ||||
|         APPOINT_CORP_ID: '', | ||||
|         APPOINT_CORP_NAME: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: null, | ||||
|         APPOINT_USER_NAME: '', | ||||
|         OPINION: '', | ||||
|         STEP: false, | ||||
|         user: '', | ||||
|         tm: new Date().getTime(), | ||||
|         list: [], | ||||
|         isShow: true, | ||||
|         info: {} | ||||
|       }, | ||||
|       rules: { | ||||
|         STATUS: [ | ||||
|           { required: true, message: '请选择是否通过', trigger: 'change' } | ||||
|         ], | ||||
|         APPOINT_DEPARTMENT_ID: [ | ||||
|           { required: true, message: '请选择指定监管部门', trigger: 'change' } | ||||
|         ], | ||||
|         APPOINT_USER_ID: [ | ||||
|           { required: true, message: '请选择指定监管部门审批人', trigger: 'change' } | ||||
|         ], | ||||
|         OPINION: [ | ||||
|           { required: true, message: '请填写打回原因', trigger: 'change' } | ||||
|         ] | ||||
|       }, | ||||
|       heirloom: {}, | ||||
| 
 | ||||
|       normalizer(node) { | ||||
|         return { | ||||
|           id: node.id, | ||||
|           label: node.name, | ||||
|           children: node.nodes | ||||
|         } | ||||
|       }, | ||||
| 
 | ||||
|       departmentTree: [], | ||||
|       peopleList: [] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     async init(e) { | ||||
|       console.log(e) | ||||
|       this.loading = true | ||||
|       this.visible = true | ||||
|       this.heirloom = JSON.stringify(e) | ||||
|       this.form.list = JSON.stringify(e) | ||||
|       this.form.STEP = (e[0].FLOWS_STEP === 3) | ||||
|       this.getDepartmentTree() | ||||
|       this.loading = false | ||||
|     }, | ||||
|     sendMessage(e) { | ||||
|       this.$refs.form.validate((valid) => { | ||||
|         if (!valid) { | ||||
|           this.$message.error('请填写完整信息') | ||||
|         } else { | ||||
|           requestFN('/xgf/user/approve', this.form) | ||||
|             .then((data) => { | ||||
|               this.$message.success('推送成功') | ||||
|               this.visible = false | ||||
|               this.$emit('refresh', '') | ||||
|             }) | ||||
|             .catch((e) => { | ||||
|               console.log(e) | ||||
|             }) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     getDepartmentTree() { | ||||
|       return new Promise(resolve => { | ||||
|         requestFN( | ||||
|           '/department/listTree', | ||||
|           {} | ||||
|         ).then((data) => { | ||||
|           this.departmentTree = this.removeEmptyChildren(JSON.parse(data.zTreeNodes)) | ||||
|           resolve(true) | ||||
|         }).catch((e) => { | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     getCorpDepartmentTree() { | ||||
|       return new Promise(resolve => { | ||||
|         requestFN( | ||||
|           '/openApi/corpDepartment/listTree', | ||||
|           {} | ||||
|         ).then((data) => { | ||||
|           this.departmentTree = this.removeEmptyChildren(JSON.parse(data.zTreeNodes)) | ||||
|           resolve(true) | ||||
|         }).catch((e) => { | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     getPeopleList(e) { | ||||
|       this.form.APPOINT_DEPARTMENT_NAME = e.name | ||||
|       requestFN( | ||||
|         '/user/listAll', | ||||
|         { | ||||
|           DEPARTMENT_ID: e.id | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.peopleList = data.userList | ||||
|       }).catch((e) => { | ||||
|         console.log(e) | ||||
|       }) | ||||
|     }, | ||||
|     chooseUser(e) { | ||||
|       const entity = JSON.parse(e) | ||||
|       this.form.APPOINT_USER_ID = entity.USER_ID | ||||
|       this.form.APPOINT_USER_NAME = entity.NAME | ||||
|     }, | ||||
| 
 | ||||
|     handleClose() { | ||||
|       this.form = { | ||||
|         STATUS: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: '', | ||||
|         APPOINT_USER_NAME: '', | ||||
|         OPINION: '', | ||||
|         user: '', | ||||
|         list: [], | ||||
|         tm: new Date().getTime() | ||||
|       } | ||||
|       this.visible = false | ||||
|     }, | ||||
|     beforeClose() { | ||||
|       this.visible = false | ||||
|       this.form = { | ||||
|         STATUS: '', | ||||
|         APPOINT_DEPARTMENT_ID: null, | ||||
|         APPOINT_DEPARTMENT_NAME: '', | ||||
|         APPOINT_USER_ID: '', | ||||
|         APPOINT_USER_NAME: '', | ||||
|         OPINION: '', | ||||
|         user: '', | ||||
|         list: [], | ||||
|         tm: new Date().getTime() | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| </style> | ||||
|  | @ -0,0 +1,250 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="相关方安全告知培训合格证" width="370px"> | ||||
|       <div v-for="item in peopleList" :key="item.CLASS_INFO_ID" style="height: 220px"> | ||||
|         <div class="bg_table"> | ||||
|           <div class="title">相关方安全告知培训合格证</div> | ||||
|           <div class="red">{{ item.CLASS_NO }}</div> | ||||
|           <table class="table"> | ||||
|             <tr> | ||||
|               <td style="width: 120px"> | ||||
|                 <div class="text textone name">姓名</div> | ||||
|               </td> | ||||
|               <td style="width: 100px;"> | ||||
|                 <div class="text text1 tcenter">{{ item.NAME }}</div> | ||||
|               </td> | ||||
|               <td style="width: 86px"> | ||||
|                 <div class="text text2 tcenter">工种</div> | ||||
|               </td> | ||||
|               <td style="width: 148px;"> | ||||
|                 <div v-if="item.JOBS_TYPE" class="text tcenter ">{{ item.JOBS_TYPE }}</div> | ||||
|                 <div v-else>暂无</div> | ||||
|               </td> | ||||
|               <td rowspan="4" style="width: 134px;"> | ||||
|                 <img v-if="!getShowPicture(item)" src="../../../../assets/images/peopleHead.png" alt="" style="width: 116px; height: 146px"> | ||||
|                 <img v-if="getShowPicture(item)" :src="config.fileUrl + item.PHOTO" alt="" style="width: 116px; height: 146px" @click="openPicture(config.fileUrl + item.PHOTO)"> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">资质</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div v-if="item.CERTIFICATE" class="text">{{ item.CERTIFICATE }}</div> | ||||
|                 <div v-else>暂无</div> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">培训时间</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div class="text">{{ item.OPENING_TIME }}</div> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">有效期限</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div class="text">{{ item.VALIDITY_PERIOD_END }}</div> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">所在单位</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div class="text">{{ item.DEPARTMENT_NAME }}</div> | ||||
|               </td> | ||||
|               <td rowspan="3" style="padding-top: 6px" @click="click(config.messageUrl + '?CLASS_INFO_ID=' + item.CLASS_INFO_ID)"> | ||||
|                 <vue-qr :text="config.messageUrl + '?CLASS_INFO_ID=' + item.CLASS_INFO_ID" :margin="0" :size="110" color-dark="#000" color-light="#fff"/> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">身份证号</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div class="text">{{ item.CARD_ID }}</div> | ||||
|               </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|               <td> | ||||
|                 <div class="text textone">手机</div> | ||||
|               </td> | ||||
|               <td colspan="3"> | ||||
|                 <div class="text">{{ item.PHONE }}</div> | ||||
|               </td> | ||||
|             </tr> | ||||
|           </table> | ||||
|         </div> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|     <QRCode ref="QRcode" append-to-body/> | ||||
|     <Picture ref="Picture" append-to-body/> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { requestFN } from '@/utils/request' | ||||
| import vueQr from 'vue-qr' | ||||
| import QRCode from './QRCode.vue' | ||||
| import Picture from './picture.vue' | ||||
| 
 | ||||
| export default { | ||||
|   components: { QRCode, Picture, vueQr }, | ||||
|   props: { | ||||
|     appendToBody: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       config: config, | ||||
|       visible: false, | ||||
|       peopleList: [], | ||||
|       CLASS_MESSAGE_ID: '', | ||||
|       CLASS_INFO_ID: '', | ||||
|       USER_ID: '', | ||||
|       qrCodeStr: '' | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     init(e) { | ||||
|       console.info(e) | ||||
|       if (e && e.CLASS_INFO_ID) { | ||||
|         this.CLASS_INFO_ID = e.CLASS_INFO_ID | ||||
|       } | ||||
|       if (e && e.CLASS_MESSAGE_ID) { | ||||
|         this.CLASS_MESSAGE_ID = e.CLASS_MESSAGE_ID | ||||
|       } | ||||
|       if (e && e.USER_ID) { | ||||
|         this.USER_ID = e.USER_ID | ||||
|       } | ||||
|       this.qrCodeStr = config.messageUrl + '?CLASS_INFO_ID=' + this.CLASS_INFO_ID | ||||
|       this.visible = true | ||||
|       this.getInfo() | ||||
|     }, | ||||
|     getInfo() { | ||||
|       requestFN('/trainusers/getUserinfoList', { | ||||
|         CLASS_INFO_ID: this.CLASS_INFO_ID, | ||||
|         CLASS_MESSAGE_ID: this.CLASS_MESSAGE_ID, | ||||
|         USER_ID: this.USER_ID | ||||
|       }) | ||||
|         .then((data) => { | ||||
|           this.peopleList = data.list | ||||
|         }).catch((e) => { | ||||
|           console.log(e) | ||||
|         }) | ||||
|     }, | ||||
|     getShowPicture(row) { | ||||
|       if (row.PHOTO && row.PHOTO !== '' && (row.PHOTO.indexOf('.jpg') >= 0 || row.PHOTO.indexOf('.png') >= 0 || row.PHOTO.indexOf('.jpeg') >= 0)) { | ||||
|         return true | ||||
|       } | ||||
|     }, | ||||
|     click(e) { | ||||
|       this.$refs.QRcode.init({ qrCodeStr: e }) | ||||
|     }, | ||||
|     openPicture(src) { | ||||
|       this.$refs.Picture.init({ src: src }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| 
 | ||||
| .name{ | ||||
|   width: 120px; | ||||
|   overflow: hidden;//溢出隐藏 | ||||
|   white-space: nowrap; // 强制一行显示 | ||||
|   text-overflow: ellipsis;// 显示。。。省略号 | ||||
| } | ||||
| .red { | ||||
|   width: 660px; | ||||
|   color: #ff0000; | ||||
|   margin-left: 34px; | ||||
|   font-size: 24px; | ||||
| } | ||||
| 
 | ||||
| .bg_table { | ||||
|   background: url("../../../../assets/tablebg.jpg") no-repeat bottom center; | ||||
|   background-size: 100%; | ||||
|   width: 660px; | ||||
|   height: 430px; | ||||
|   border: 4px solid #453d3a; | ||||
|   transform: scale(0.5); | ||||
|   transform-origin: top left; | ||||
| 
 | ||||
|   .title { | ||||
|     font-size: 28px; | ||||
|     text-align: center; | ||||
|     margin-top: 34px; | ||||
|     font-weight: bold; | ||||
|     color: #000000; | ||||
|   } | ||||
| 
 | ||||
|   .table { | ||||
|     border-collapse: collapse; | ||||
|     width: 590px; | ||||
|     color: #453d3a; | ||||
|     font-size: 20px; | ||||
|     margin: 34px; | ||||
|     text-align: left; | ||||
|     margin-top: 10px; | ||||
| 
 | ||||
|     .tcenter { | ||||
|       text-align: center | ||||
|     } | ||||
| 
 | ||||
|     .w60 { | ||||
|       width: 100px; | ||||
|     } | ||||
| 
 | ||||
|     .w74 { | ||||
|       width: 148px | ||||
|     } | ||||
| 
 | ||||
|     th, td { | ||||
|       border: 2px solid #453d3a; | ||||
|       text-align: left; | ||||
|       height: 40px; | ||||
|       padding: 0 16px; | ||||
| 
 | ||||
|       box-sizing: border-box; | ||||
| 
 | ||||
|       .textone { | ||||
|         width: 80px; | ||||
|         text-align: justify; | ||||
|         text-align-last: justify; | ||||
|         text-justify: distribute-all-lines; | ||||
|         margin: 0 auto; | ||||
|       } | ||||
| 
 | ||||
|       .text1 { | ||||
|         width: 60px; | ||||
|         text-align: justify; | ||||
|         text-align-last: justify; | ||||
|         text-justify: distribute-all-lines; | ||||
|         margin: 0 auto; | ||||
| 
 | ||||
|       } | ||||
| 
 | ||||
|       .text2 { | ||||
|         width: 50px; | ||||
|         text-align: justify; | ||||
|         text-align-last: justify; | ||||
|         text-justify: distribute-all-lines; | ||||
|         margin: 0 auto; | ||||
| 
 | ||||
|       } | ||||
| 
 | ||||
|       .text { | ||||
| 
 | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,513 @@ | |||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <el-dialog | ||||
|       v-if="visible" | ||||
|       :visible.sync="visible" | ||||
|       :before-close="handleClose" | ||||
|       :append-to-body="true" | ||||
|       title="申请详情" | ||||
|       width="60%"> | ||||
|       <div class="level-title mt-20" style="display: flex;justify-content: space-between;"> | ||||
|         <h1>申请信息</h1> | ||||
|       </div> | ||||
|       <table class="table-ui" style="margin-bottom: 20px;"> | ||||
|         <tr> | ||||
|           <th style="width: 17%">申请人</th> | ||||
|           <td style="width: 17%">{{ pd.CREATOR }}</td> | ||||
|           <th style="width: 17%">申请时间</th> | ||||
|           <td style="width: 17%">{{ pd.CREATTIME }}</td> | ||||
|           <th style="width: 17%">备注</th> | ||||
|           <td style="width: 15%">{{ pd.DESCR }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th style="width: 30px">安监部门</th> | ||||
|           <td style="width: 50px">{{ pd.SUPERVISION_DEPARTMENT_NAME }}</td> | ||||
|           <th style="width: 30px">审核人</th> | ||||
|           <td style="width: 50px">{{ pd.SUPERVISION_USER_NAME }}</td> | ||||
|           <th style="width: 30px">审核时间</th> | ||||
|           <td style="width: 50px">{{ pd.SUPERVISION_TIME }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>主管部门</th> | ||||
|           <td>{{ pd.MANAGER_DEPT_NAME }}</td> | ||||
|           <th>审核人</th> | ||||
|           <td>{{ pd.MANAGER_USER_NAME }}</td> | ||||
|           <th>审核时间</th> | ||||
|           <td>{{ pd.MANAGER_TIME }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>属地管理部门</th> | ||||
|           <td>{{ pd.TERRITORIALITY_DEPARTMENT_NAME }}</td> | ||||
|           <th>审核人</th> | ||||
|           <td>{{ pd.TERRITORIALITY_USER_NAME }}</td> | ||||
|           <th>审核时间</th> | ||||
|           <td>{{ pd.TERRITORIALITY_TIME }}</td> | ||||
|         </tr> | ||||
|         <tr v-if="pd.AUDIT_DESCR"> | ||||
|           <th>股份公司意见</th> | ||||
|           <td colspan="5">{{ pd.AUDIT_DESCR }}</td> | ||||
|         </tr> | ||||
|         <tr v-if="pd.CORP_AUDIT_DESCR"> | ||||
|           <th>分公司意见</th> | ||||
|           <td colspan="5">{{ pd.CORP_AUDIT_DESCR }}</td> | ||||
|         </tr> | ||||
|       </table> | ||||
|       <div class="level-title"> | ||||
|         <h1>申请人员列表</h1> | ||||
|       </div> | ||||
|       <el-table ref="multipleTable" :data="userList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row> | ||||
|         <el-table-column type="selection" width="55" align="center" /> | ||||
|         <el-table-column type="index" label="序号" width="50" align="center" /> | ||||
|         <el-table-column prop="USERNAME" label="用户名" align="center" /> | ||||
|         <el-table-column prop="NAME" label="姓名" align="center" /> | ||||
|         <el-table-column prop="DEPARTMENT_NAME" label="部门" align="center" /> | ||||
|         <el-table-column prop="STATE" label="审核状态" align="center" > | ||||
|           <template slot-scope="{row}"> | ||||
|             <el-tag v-if="row.MANAGER_STATE === 0 || row.SUPERVISION_STATE === 0 || row.TERRITORIALITY_STATE === 0" type="danger">审核不通过</el-tag> | ||||
|             <el-tag v-else-if="row.MANAGER_STATE === 1 && row.SUPERVISION_STATE === 1 && row.TERRITORIALITY_STATE === 1" type="success">审核通过</el-tag> | ||||
|             <el-tag v-else type="success">待审核</el-tag> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="操作" align="center" width="200" > | ||||
|           <template slot-scope="{row}"> | ||||
|             <el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row.USER_ID)">查看</el-button> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <div class="page-btn-group"> | ||||
|         <div/> | ||||
|         <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getUserList" /> | ||||
|       </div> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="closeWindow">关 闭</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|     <el-dialog | ||||
|       v-if="userInfoDialog" | ||||
|       :visible.sync="userInfoDialog" | ||||
|       :append-to-body="true" | ||||
|       title="查看" | ||||
|       width="60%"> | ||||
|       <table class="table-ui" style="margin-bottom: 20px;"> | ||||
|         <div class="level-title"> | ||||
|           <h1>人员信息</h1> | ||||
|         </div> | ||||
|         <tr> | ||||
|           <th>照片</th> | ||||
|           <td> | ||||
|             <span v-if="imgUrl != ''"> | ||||
|               <div class="img-flex"> | ||||
|                 <viewer> | ||||
|                   <img :src="imgUrl" width="40" height="40" style="object-fit: cover;"> | ||||
|                 </viewer> | ||||
|               </div> | ||||
|             </span> | ||||
|             <span v-else/> | ||||
|           </td> | ||||
|           <th>姓名</th> | ||||
|           <td>{{ userDetailForm.NAME }}</td> | ||||
|           <th>性别</th> | ||||
|           <td>{{ userDetailForm.SEX === '0' ? '男' : '女' }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>出生年月</th> | ||||
|           <td>{{ userDetailForm.DATE_OF_BIRTH }}</td> | ||||
|           <th>年龄</th> | ||||
|           <td>{{ userDetailForm.AGE }}</td> | ||||
|           <th>手机号</th> | ||||
|           <td>{{ userDetailForm.PHONE }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>身份证</th> | ||||
|           <td>{{ userDetailForm.CARD_ID }}</td> | ||||
|           <th>身份证照片</th> | ||||
|           <!--if条件不可删除--> | ||||
|           <td v-if="userCardIDPhotoFile.length>0" colspan="3"> | ||||
|             <span> | ||||
|               <div class="img-flex"> | ||||
|                 <viewer> | ||||
|                   <img | ||||
|                     v-for="item in userCardIDPhotoFile" | ||||
|                     :src="config.fileUrl + item.FILEPATH" | ||||
|                     :key="item.IMGFILES_ID" | ||||
|                     width="40" | ||||
|                     height="40" | ||||
|                     style="object-fit: cover;"> | ||||
|                 </viewer> | ||||
|               </div> | ||||
|             </span> | ||||
|           </td> | ||||
|         </tr> | ||||
| 
 | ||||
|         <tr> | ||||
|           <th>民族</th> | ||||
|           <td>{{ userDetailForm.NATIONALITY_NAME ? userDetailForm.NATIONALITY_NAME : '暂无信息' }}</td> | ||||
|           <th>婚姻状况</th> | ||||
|           <td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td> | ||||
|           <th>政治面貌</th> | ||||
|           <td>{{ userDetailForm.zzName }} {{ | ||||
|             userDetailForm.zzName == '中共党员' ? '入党时间' + userDetailForm.POLITICAL_TIME : '' | ||||
|           }} | ||||
|           </td> | ||||
|         </tr> | ||||
| 
 | ||||
|         <tr> | ||||
|           <th>户口所在地</th> | ||||
|           <td>{{ userDetailForm.HKLOCAL ? userDetailForm.HKLOCAL : '暂无信息' }}</td> | ||||
|           <th>现住址</th> | ||||
|           <td>{{ userDetailForm.ADDRESS ? userDetailForm.ADDRESS : '暂无信息' }}</td> | ||||
|           <th>联系电话</th> | ||||
|           <td>{{ userDetailForm.PHONE }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>文化程度</th> | ||||
|           <td>{{ userDetailForm.DEGREE_OF_EDUCATION_NAME }}</td> | ||||
|           <th>岗位名称(工种)</th> | ||||
|           <td colspan="5">{{ userDetailForm.POST_ID }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>是否缴纳社保</th> | ||||
|           <td :colspan="userDetailForm.IS_SOCIAL === '1' ? '':5">{{ formatLabel(userDetailForm.IS_SOCIAL) }}</td> | ||||
|           <th v-if="userDetailForm.IS_SOCIAL === '1'">社会保障号码</th> | ||||
|           <td v-if="userDetailForm.IS_SOCIAL === '1'">{{ userDetailForm.SOCIAL_NUMBER }}</td> | ||||
|           <th v-if="userDetailForm.IS_SOCIAL === '1'">社保卡照片</th> | ||||
|           <td v-if="userDetailForm.IS_SOCIAL === '1'&& socialPhotoFile.length>0" colspan="3"> | ||||
|             <span> | ||||
|               <div class="img-flex"> | ||||
|                 <viewer> | ||||
|                   <img | ||||
|                     v-for="item in socialPhotoFile" | ||||
|                     :src="config.fileUrl + item.FILEPATH" | ||||
|                     :key="item.IMGFILES_ID" | ||||
|                     width="40" | ||||
|                     height="40" | ||||
|                     style="object-fit: cover;"> | ||||
|                 </viewer> | ||||
|               </div> | ||||
|             </span> | ||||
|           </td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>是否参加三级安全培训</th> | ||||
|           <td>{{ formatLabel(userDetailForm.IS_LEVEL_THREE) }}</td> | ||||
|           <th v-if="userDetailForm.IS_LEVEL_THREE == 1">三级安全培训照片</th> | ||||
|           <td v-if="userDetailForm.IS_LEVEL_THREE == 1 && photosOfLevel.length>0" colspan="5"> | ||||
|             <span> | ||||
|               <div class="img-flex"> | ||||
|                 <viewer> | ||||
|                   <img | ||||
|                     v-for="item in photosOfLevel" | ||||
|                     :src="config.fileUrl + item.FILEPATH" | ||||
|                     :key="item.IMGFILES_ID" | ||||
|                     width="40" | ||||
|                     height="40" | ||||
|                     style="object-fit: cover;"> | ||||
|                 </viewer> | ||||
|               </div> | ||||
|             </span> | ||||
|           </td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>是否缴纳保险</th> | ||||
|           <td>{{ formatLabel(userDetailForm.IS_BF) }}</td> | ||||
|           <th>是否特殊工种</th> | ||||
|           <td>{{ formatLabel(userDetailForm.IS_SPECIAL_JOB) }}</td> | ||||
|           <th>是否流动人员</th> | ||||
|           <td>{{ formatLabel(userDetailForm.ISFLOW) }}</td> | ||||
|         </tr> | ||||
|       </table> | ||||
|       <div class="level-title"> | ||||
|         <h1>培训记录</h1> | ||||
|       </div> | ||||
|       <el-table | ||||
|         :data="trainRecordList" | ||||
|         :header-cell-style="{'font-weight': 'bold','color': '#000'}" | ||||
|         tooltip-effect="dark" | ||||
|         border | ||||
|         fit | ||||
|         highlight-current-row> | ||||
|         <el-table-column type="selection" width="55" align="center"/> | ||||
|         <el-table-column type="index" label="序号" width="50" align="center"/> | ||||
|         <el-table-column prop="CLASS_NAME" label="班级名称" align="center"/> | ||||
|         <el-table-column prop="OPENING_TIME" label="开班时间" align="center"/> | ||||
|         <el-table-column prop="TRAINING_TYPE_NAME" label="培训类型" align="center"/> | ||||
|         <el-table-column prop="PLACE_NAME" label="培训地点" align="center"/> | ||||
|         <el-table-column label="培训有效期" align="center"> | ||||
|           <template slot-scope="{row}"> | ||||
|             <span>{{ formatDate(row.VALIDITY_PERIOD_START) }} 至 {{ formatDate(row.VALIDITY_PERIOD_END) }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <div v-if="userDetailForm.IS_SPECIAL_JOB == '1'" class="level-title"> | ||||
|         <h1>特种作业人员信息</h1> | ||||
|       </div> | ||||
|       <table v-for="(item,index) in specialUsersList" :key="index" class="table-ui" style="margin-bottom: 20px;"> | ||||
|         <tr> | ||||
|           <th style="width: 150px">证书名称</th> | ||||
|           <td style="width: 150px">{{ item.CERTIFICATE }}</td> | ||||
|           <th style="width: 150px">作业类别</th> | ||||
|           <td style="width: 180px">{{ item.SPECIAL_TYPE_NAME }}</td> | ||||
|           <th style="width: 150px">操作项目</th> | ||||
|           <td>{{ item.OPERATION_TYPE_NAME }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>特种作业证书编号</th> | ||||
|           <td>{{ item.SPECIAL_NUMBER }}</td> | ||||
|           <th>发证机关</th> | ||||
|           <td colspan="3">{{ item.ISSUING_AUTHORITY }}</td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|           <th>复审时间</th> | ||||
|           <td>{{ item.REVIEW_TIME }}</td> | ||||
|           <th>有效期</th> | ||||
|           <td colspan="3">{{ item.VALIDITY_TIME_START }} 至 {{ item.VALIDITY_TIME_END }}</td> | ||||
|         </tr> | ||||
|       </table> | ||||
|       <div | ||||
|         v-if="detailForm.SUPERVISION_STATE === 0 || detailForm.MANAGER_STATE === 0 || detailForm.TERRITORIALITY_STATE === 0" | ||||
|         class="level-title mt-20"> | ||||
|         <h1>打回信息</h1> | ||||
|       </div> | ||||
|       <table | ||||
|         v-if="detailForm.SUPERVISION_STATE === 0 || detailForm.MANAGER_STATE === 0 || detailForm.TERRITORIALITY_STATE === 0" | ||||
|         class="table-ui" | ||||
|         style="margin-bottom: 20px;"> | ||||
|         <tr> | ||||
|           <th>打回人</th> | ||||
|           <td v-if="detailForm.SUPERVISION_STATE === 0">{{ detailForm.SUPERVISION_USER_NAME }}</td> | ||||
|           <td v-if="detailForm.MANAGER_STATE === 0">{{ detailForm.MANAGER_USER_NAME }}</td> | ||||
|           <td | ||||
|             v-if="detailForm.TERRITORIALITY_STATE === 0 && detailForm.MANAGER_USER_NAME !== detailForm.TERRITORIALITY_USER_NAME"> | ||||
|             {{ detailForm.TERRITORIALITY_USER_NAME }} | ||||
|           </td> | ||||
|           <th>打回原由</th> | ||||
|           <td v-if="detailForm.SUPERVISION_STATE === 0">{{ detailForm.SUPERVISION_OPINION }}</td> | ||||
|           <td v-if="detailForm.MANAGER_STATE === 0">{{ detailForm.MANAGER_OPINION }}</td> | ||||
|           <td | ||||
|             v-if="detailForm.TERRITORIALITY_STATE === 0 && detailForm.MANAGER_USER_NAME !== detailForm.TERRITORIALITY_USER_NAME"> | ||||
|             {{ detailForm.TERRITORIALITY_OPINION }} | ||||
|           </td> | ||||
|         </tr> | ||||
|       </table> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="userInfoDialog = false">关 闭</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|     <el-dialog :visible.sync="QRCodeDialog" title="查看二维码" width="680px" class="top-dialog"> | ||||
|       <div class="table-qrcode" style="text-align: center;padding-top: 30px;"> | ||||
|         <vue-qr :text="qrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" /> | ||||
|       </div> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="QRCodeDialog = false">关 闭</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 | ||||
| import { requestFN } from '@/utils/request' | ||||
| import vueQr from 'vue-qr' | ||||
| import dateformat from '@/utils/dateformat' | ||||
| import '@riophae/vue-treeselect/dist/vue-treeselect.css' | ||||
| export default { | ||||
|   components: { | ||||
|     Pagination, | ||||
|     vueQr | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       config: config, | ||||
|       contractFileList: [], // 合同文件 | ||||
|       insuranceFileList: [], // 保险文件 | ||||
|       userInfoDialog: false, | ||||
|       QRCodeDialog: false, | ||||
|       qrcodeStr: '', | ||||
|       userDetailForm: {}, | ||||
|       userEntryForm: {}, | ||||
|       specialUsersList: {}, | ||||
|       imgUrl: '', | ||||
|       wenhuachengduList: [], // 文化程度 | ||||
|       userCardIDPhotoFile: [], // 身份证照片 | ||||
|       postList: [], // 岗位名称 | ||||
|       trainRecordList: [], // 培训记录 | ||||
|       visible: false, | ||||
|       pd: {}, | ||||
|       userList: [], | ||||
|       listQuery: { | ||||
|         page: 1, | ||||
|         limit: 10 | ||||
|       }, | ||||
|       total: 0, | ||||
|       photosOfLevel: [] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     formatDate(date, column) { | ||||
|       if (date) { | ||||
|         return dateformat(date, 'YYYY-MM-DD') | ||||
|       } else { | ||||
|         return '' | ||||
|       } | ||||
|     }, | ||||
|     init(e) { | ||||
|       if (e) { | ||||
|         this.pd = e | ||||
|       } | ||||
|       this.visible = true | ||||
|       this.userList = [] | ||||
|       this.getDict() | ||||
|       this.getUserList() | ||||
|     }, | ||||
|     // 获取数据字典数据 | ||||
|     getDict: function() { | ||||
|       requestFN( | ||||
|         '/dictionaries/getLevels', | ||||
|         { | ||||
|           DICTIONARIES_ID: '1144b16d85f14b108ea7859e2be9d001' | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.flowAreaList = data.list | ||||
|       }).catch((e) => { | ||||
| 
 | ||||
|       }) | ||||
|       requestFN( | ||||
|         'dictionaries/getLevels', | ||||
|         { DICTIONARIES_ID: 'd7d80f08d73a4accbccf4fd3d8d1d867' } | ||||
|       ).then((data) => { | ||||
|         this.wenhuachengduList = data.list | ||||
|       }).catch((e) => { | ||||
|         this.listLoading = false | ||||
|       }) | ||||
|       requestFN( | ||||
|         'dictionaries/getLevels', | ||||
|         { DICTIONARIES_ID: '09e36ac01e9540f8bc84eab1c1a78754' } | ||||
|       ).then((data) => { | ||||
|         this.postList = data.list | ||||
|       }).catch((e) => { | ||||
|         this.listLoading = false | ||||
|       }) | ||||
|     }, | ||||
| 
 | ||||
|     // 人员 | ||||
|     getUserList() { | ||||
|       requestFN( | ||||
|         '/trainingbatch/batchUserList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, | ||||
|         { | ||||
|           TRAININGBATCH_ID: this.pd.TRAININGBATCH_ID | ||||
|         } | ||||
|       ).then((data) => { | ||||
|         this.userList = data.varList | ||||
|         this.total = data.page.totalResult | ||||
|       }).catch((e) => { | ||||
|       }) | ||||
|     }, | ||||
|     // 二维码 | ||||
|     showQRCode(id) { | ||||
|       this.QRCodeDialog = true | ||||
|       const arr = [{ USER_ID: id, CODE_TYPE: '1' }] | ||||
|       this.qrcodeStr = JSON.stringify(arr) | ||||
|     }, | ||||
|     // 查看 | ||||
|     async handleShow(USER_ID) { | ||||
|       await this.getUserInfoById(USER_ID) | ||||
|       await this.getOtherUserInfoById(USER_ID) | ||||
|       this.userInfoDialog = true | ||||
|     }, | ||||
|     getUserInfoById(id) { | ||||
|       return new Promise((resolve, reject) => { | ||||
|         requestFN( | ||||
|           '/user/getFloatPersonDetailById', | ||||
|           { | ||||
|             USER_ID: id, | ||||
|             TRAININGBATCH_ID: this.pd.TRAININGBATCH_ID, | ||||
|             CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID | ||||
|           } | ||||
|         ).then((data) => { | ||||
|           this.userDetailForm = Object.assign(this.userDetailForm, data.userDetail) | ||||
|           this.userEntryForm = Object.assign(this.userEntryForm, data.eCard) | ||||
|           if (this.userDetailForm.PHOTO) { | ||||
|             this.imgUrl = config.fileUrl + this.userDetailForm.PHOTO | ||||
|           } | ||||
|           this.trainRecordList = data.recordList | ||||
|           // this.insuranceFileList = data.insuranceFile | ||||
|           // this.contractFileList = data.contractFile | ||||
|           resolve() | ||||
|         }).catch((e) => { | ||||
|           reject() | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     getOtherUserInfoById(id) { | ||||
|       return new Promise((resolve, reject) => { | ||||
|         requestFN( | ||||
|           'user/getDetailByUserIdAndCorpInfoId', | ||||
|           { | ||||
|             USER_ID: id, | ||||
|             CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID, | ||||
|             CER_TYPE: '7498057c4c1f4a11b9a960e66ea04a7a' | ||||
|           } | ||||
|         ).then((data) => { | ||||
|           Object.assign(this.userDetailForm, data.pd) | ||||
|           this.userPhotoFile = data.userPhotoFile | ||||
|           if (this.userPhotoFile.length > 0) { | ||||
|             this.imgUrl = config.fileUrl + this.userPhotoFile[0].FILEPATH | ||||
|           } | ||||
|           this.insuranceFileList = data.insuranceFile | ||||
|           this.specialUsersList = data.specialUsers | ||||
|           this.contractFileList = data.contractFile | ||||
|           this.userCardIDPhotoFile = data.userCardIDPhotoFile | ||||
|           this.socialPhotoFile = data.socialPhotoFile | ||||
|           this.gongshangbaoxianFile = data.gongshangbaoxianFile | ||||
|           resolve() | ||||
|         }).catch((e) => { | ||||
|           reject() | ||||
|         }) | ||||
|       }) | ||||
|     }, | ||||
|     // 转换是否 | ||||
|     formatLabel(value) { | ||||
|       if (value == '1') { | ||||
|         return '是' | ||||
|       } else if (value == '0') { | ||||
|         return '否' | ||||
|       } else { | ||||
|         return '' | ||||
|       } | ||||
|     }, | ||||
|     // 转换字典数据 | ||||
|     formatDictioariesLabel(value, type) { | ||||
|       var list = [] | ||||
|       if (type == '0') { | ||||
|         list = this.wenhuachengduList | ||||
|       } else if (type == '1') { | ||||
|         list = this.postList | ||||
|       } | ||||
|       if (value) { | ||||
|         if (list.length > 0) { | ||||
|           var data = '' | ||||
|           for (let i = 0; i < list.length; i++) { | ||||
|             const obj = list[i] | ||||
|             if (value == obj.BIANMA) { | ||||
|               data = obj.NAME | ||||
|               break | ||||
|             } | ||||
|           } | ||||
|           return data | ||||
|         } else { | ||||
|           return value | ||||
|         } | ||||
|       } else { | ||||
|         return '' | ||||
|       } | ||||
|     }, | ||||
| 
 | ||||
|     handleClose() { | ||||
|       this.visible = false | ||||
|     }, | ||||
|     closeWindow() { | ||||
|       this.handleClose() | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | @ -0,0 +1,22 @@ | |||
| <template> | ||||
|   <component :is="activeName" /> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import List from './components/list' | ||||
| import Record from './components/record' | ||||
| export default { | ||||
|   components: { | ||||
|     List: List, | ||||
|     Record: Record | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       activeName: 'List', | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| </style> | ||||
		Loading…
	
		Reference in New Issue