|
@@ -0,0 +1,711 @@
|
|
|
|
+<template>
|
|
|
|
+ <transition name="el-zoom-in-center">
|
|
|
|
+ <div class="JNPF-common-layout">
|
|
|
|
+ <div class="JNPF-common-layout-center">
|
|
|
|
+ <div class="JNPF-preview-main flow-form-main">
|
|
|
|
+ <!-- <div class="JNPF-common-page-header">
|
|
|
|
+ <el-page-header @back="goBack" :content="title" />
|
|
|
|
+
|
|
|
|
+ </div> -->
|
|
|
|
+ <el-row class="JNPF-common-search-box" :gutter="16">
|
|
|
|
+ <el-form @submit.native.prevent>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="姓名">
|
|
|
|
+ <el-input v-model="query.name" placeholder="请输入" clearable>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="联系电话">
|
|
|
|
+ <el-input v-model="query.mobile" placeholder="请输入" clearable>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <template v-if="showAll">
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="人员编码">
|
|
|
|
+ <el-input v-model="query.code" placeholder="请输入" clearable>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="响应状态">
|
|
|
|
+ <JnpfSelect v-model="query.resStatus" placeholder="请选择"
|
|
|
|
+ clearable :options="resStatusOptions"
|
|
|
|
+ :props="resStatusProps" multiple>
|
|
|
|
+ </JnpfSelect>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item label="响应数据版本">
|
|
|
|
+ <el-input v-model="query.resVersion" placeholder="请输入"
|
|
|
|
+ clearable>
|
|
|
|
+ </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </template>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-button type="primary" icon="el-icon-search"
|
|
|
|
+ @click="search()">查询</el-button>
|
|
|
|
+ <el-button icon="el-icon-refresh-right"
|
|
|
|
+ @click="reset()">重置</el-button>
|
|
|
|
+ <el-button type="text" icon="el-icon-arrow-down"
|
|
|
|
+ @click="showAll=true" v-if="!showAll">
|
|
|
|
+ 展开
|
|
|
|
+ </el-button>
|
|
|
|
+ <el-button type="text" icon="el-icon-arrow-up"
|
|
|
|
+ @click="showAll=false" v-else>
|
|
|
|
+ 收起
|
|
|
|
+ </el-button>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-form>
|
|
|
|
+ <div class="options">
|
|
|
|
+ <el-button @click="goBack()">{{$t('common.cancelButton')}}</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-row>
|
|
|
|
+ <div class="JNPF-common-layout-main JNPF-flex-main">
|
|
|
|
+ <div class="JNPF-common-head">
|
|
|
|
+ <div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="JNPF-common-head-right">
|
|
|
|
+ <!-- <el-tooltip content="高级查询" placement="top" v-if="true">
|
|
|
|
+ <el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon"
|
|
|
|
+ :underline="false" @click="openSuperQuery()" />
|
|
|
|
+ </el-tooltip> -->
|
|
|
|
+ <el-tooltip effect="dark" :content="$t('common.refresh')"
|
|
|
|
+ placement="top">
|
|
|
|
+ <el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
|
|
|
|
+ :underline="false" @click="initData()" />
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <JNPF-table v-loading="listLoading" :data="list"
|
|
|
|
+ @sort-change='handleTableSort'
|
|
|
|
+ :header-cell-class-name="handleHeaderClass" :has-c="hasBatchBtn"
|
|
|
|
+ :span-method="arraySpanMethod">
|
|
|
|
+ <el-table-column prop="batchId" label="批次ID" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.batchId" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="code" label="人员编码" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.code" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="name" label="姓名" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.name" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="namePinyin" label="账户" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.namePinyin" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="personnelType" label="人员类型" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="gender" label="性别" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="mobile" label="联系电话" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.mobile" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="email" label="邮箱" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.email" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="jobStatus" label="岗位状态" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="personStatus" label="人员状态" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="unionid" label="微信unionid" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.unionid" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="organizationCode" label="所属组织编码" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.organizationCode" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="organizationName" label="所属组织名称" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.organizationName" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="departmentCode" label="部门编码" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.departmentCode" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="departmentName" label="部门名称" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.departmentName" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="itsmUserId" label="Itsm用户id" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.itsmUserId" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="itsmUserName" label="itsm用户姓名" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.itsmUserName" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="itsmUserAlias" label="itsm用户别名" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.itsmUserAlias" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="enterpriseWechat" label="企微账号" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.enterpriseWechat" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="resCode" label="响应数据编码" align="left" width="100"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.resCode" detailed showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="resStatus" label="响应状态" align="left"
|
|
|
|
+ show-overflow-tooltip>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="resMessage" label="响应数据描述" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.resMessage" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="resVersion" label="响应数据版本" align="left"
|
|
|
|
+ width="100" show-overflow-tooltip>
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <JnpfInput v-model="scope.row.resVersion" detailed
|
|
|
|
+ showOverflow />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </JNPF-table>
|
|
|
|
+ <pagination :total="total" :page.sync="listQuery.currentPage"
|
|
|
|
+ :limit.sync="listQuery.pageSize" @pagination="initData" />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
|
|
|
|
+ <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
|
|
|
|
+
|
|
|
|
+ <ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
|
|
|
|
+ <ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail"
|
|
|
|
+ @close="toFormDetailVisible = false" />
|
|
|
|
+ <SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson"
|
|
|
|
+ @superQuery="superQuery" />
|
|
|
|
+ </div>
|
|
|
|
+ </transition>
|
|
|
|
+</template>
|
|
|
|
+<script>
|
|
|
|
+import request from '@/utils/request'
|
|
|
|
+import { mapGetters } from "vuex";
|
|
|
|
+import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
|
|
|
|
+import JNPFForm from '../mdmuserdetail/form'
|
|
|
|
+import ExportBox from '@/components/ExportBox'
|
|
|
|
+import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
|
|
|
|
+import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
|
|
|
|
+import { getConfigData } from '@/api/onlineDev/visualDev'
|
|
|
|
+import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
|
|
|
|
+import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
|
|
|
|
+import columnList from './columnList'
|
|
|
|
+import { thousandsFormat } from "@/components/Generator/utils/index"
|
|
|
|
+import SuperQuery from '@/components/SuperQuery'
|
|
|
|
+import superQueryJson from './superQueryJson'
|
|
|
|
+import { noGroupList } from '@/components/Generator/generator/comConfig'
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ components: {
|
|
|
|
+ JNPFForm,
|
|
|
|
+ ExportBox, ToFormDetail, SuperQuery
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ visible: false,
|
|
|
|
+ keyword: '',
|
|
|
|
+ expandsTree: true,
|
|
|
|
+ refreshTree: true,
|
|
|
|
+ toFormDetailVisible: false,
|
|
|
|
+ hasBatchBtn: false,
|
|
|
|
+ expandObj: {},
|
|
|
|
+ columnOptions: [],
|
|
|
|
+ mergeList: [],
|
|
|
|
+ exportList: [],
|
|
|
|
+ columnList,
|
|
|
|
+
|
|
|
|
+ showAll: false,
|
|
|
|
+ superQueryVisible: false,
|
|
|
|
+ superQueryJson,
|
|
|
|
+ uploadBoxVisible: false,
|
|
|
|
+ query: {
|
|
|
|
+ batchId: undefined,
|
|
|
|
+ name: undefined,
|
|
|
|
+ mobile: undefined,
|
|
|
|
+ code: undefined,
|
|
|
|
+ resStatus: undefined,
|
|
|
|
+ resVersion: undefined,
|
|
|
|
+ },
|
|
|
|
+ defListQuery: {
|
|
|
|
+ sort: 'desc',
|
|
|
|
+ sidx: '',
|
|
|
|
+ },
|
|
|
|
+ //排序默认值
|
|
|
|
+ defaultSortConfig: [],
|
|
|
|
+ treeProps: {
|
|
|
|
+ children: 'children',
|
|
|
|
+ label: 'fullName',
|
|
|
|
+ value: 'id',
|
|
|
|
+ isLeaf: 'isLeaf'
|
|
|
|
+ },
|
|
|
|
+ list: [],
|
|
|
|
+ listLoading: true,
|
|
|
|
+ multipleSelection: [],
|
|
|
|
+ total: 0,
|
|
|
|
+ queryData: {},
|
|
|
|
+ listQuery: {
|
|
|
|
+ superQueryJson: '',
|
|
|
|
+ currentPage: 1,
|
|
|
|
+ pageSize: 20,
|
|
|
|
+ sort: "",
|
|
|
|
+ sidx: "",
|
|
|
|
+ },
|
|
|
|
+ //多列排序
|
|
|
|
+ ordersList: [],
|
|
|
|
+ formVisible: false,
|
|
|
|
+ flowVisible: false,
|
|
|
|
+ flowListVisible: false,
|
|
|
|
+ flowList: [],
|
|
|
|
+ exportBoxVisible: false,
|
|
|
|
+ personnelTypeOptions: [],
|
|
|
|
+ personnelTypeProps: { "label": "fullName", "value": "enCode" },
|
|
|
|
+ genderOptions: [],
|
|
|
|
+ genderProps: { "label": "fullName", "value": "enCode" },
|
|
|
|
+ jobStatusOptions: [],
|
|
|
|
+ jobStatusProps: { "label": "fullName", "value": "enCode" },
|
|
|
|
+ personStatusOptions: [],
|
|
|
|
+ personStatusProps: { "label": "fullName", "value": "enCode" },
|
|
|
|
+ resStatusOptions: [],
|
|
|
|
+ resStatusProps: { "label": "fullName", "value": "enCode" },
|
|
|
|
+ interfaceRes: {
|
|
|
|
+ },
|
|
|
|
+ //掩码配置
|
|
|
|
+ maskConfig: {
|
|
|
|
+ batchId: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ code: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ name: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ namePinyin: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ mobile: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ email: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ unionid: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ organizationCode: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ organizationName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ departmentCode: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ departmentName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ itsmUserId: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ itsmUserName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ itsmUserAlias: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ enterpriseWechat: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ resCode: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ resMessage: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ resVersion: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapGetters(['userInfo']),
|
|
|
|
+ menuId() {
|
|
|
|
+ return this.$route.meta.modelId || ''
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ this.getColumnList(),
|
|
|
|
+ this.initSearchDataAndListData()
|
|
|
|
+ this.getresStatusOptions();
|
|
|
|
+ this.queryData = JSON.parse(JSON.stringify(this.query))
|
|
|
|
+ this.getHasBatchBtn();
|
|
|
|
+ //排序默认值
|
|
|
|
+ this.setDefaultQuery(this.defaultSortConfig);
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ getHasBatchBtn() {
|
|
|
|
+ let btnsList = []
|
|
|
|
+ this.hasBatchBtn = btnsList.some(o => ['batchRemove', 'batchPrint', 'download'].includes(o))
|
|
|
|
+ },
|
|
|
|
+ goBack() {
|
|
|
|
+ this.$emit('refresh')
|
|
|
|
+ },
|
|
|
|
+ treeRefresh() {
|
|
|
|
+ this.keyword = ''
|
|
|
|
+ this.treeActiveId = ''
|
|
|
|
+ this.leftTreeActiveInfo = {}
|
|
|
|
+ this.$refs.treeBox.setCurrentKey(null)
|
|
|
|
+ this.getTreeView()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ toDetail(defaultValue, modelId) {
|
|
|
|
+ if (!defaultValue) return
|
|
|
|
+ getConfigData(modelId).then(res => {
|
|
|
|
+ if (!res.data || !res.data.formData) return
|
|
|
|
+ let formData = JSON.parse(res.data.formData)
|
|
|
|
+ formData.popupType = 'general'
|
|
|
|
+ this.toFormDetailVisible = true
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.toFormDetail.init(formData, modelId, defaultValue)
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ toggleTreeExpand(expands) {
|
|
|
|
+ this.refreshTree = false
|
|
|
|
+ this.expandsTree = expands
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.refreshTree = true
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.treeBox.setCurrentKey(null)
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ filterNode(value, data) {
|
|
|
|
+ if (!value) return true;
|
|
|
|
+ return data[this.treeProps.label].indexOf(value) !== -1;
|
|
|
|
+ },
|
|
|
|
+ loadNode(node, resolve) {
|
|
|
|
+ const nodeData = node.data
|
|
|
|
+ const config = {
|
|
|
|
+ treeInterfaceId: "",
|
|
|
|
+ treeTemplateJson: []
|
|
|
|
+ }
|
|
|
|
+ if (config.treeInterfaceId) {
|
|
|
|
+ //这里是为了拿到参数中关联的字段的值,后端自行拿
|
|
|
|
+ if (config.treeTemplateJson && config.treeTemplateJson.length) {
|
|
|
|
+ for (let i = 0; i < config.treeTemplateJson.length; i++) {
|
|
|
|
+ const element = config.treeTemplateJson[i];
|
|
|
|
+ element.defaultValue = nodeData[element.relationField] || ''
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //参数
|
|
|
|
+ let query = {
|
|
|
|
+ paramList: config.treeTemplateJson || [],
|
|
|
|
+ }
|
|
|
|
+ //接口
|
|
|
|
+ getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
|
|
|
|
+ let data = res.data
|
|
|
|
+ if (Array.isArray(data)) {
|
|
|
|
+ resolve(data);
|
|
|
|
+ } else {
|
|
|
|
+ resolve([]);
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getColumnList() {
|
|
|
|
+ // 没有开启权限
|
|
|
|
+ this.columnOptions = this.transformColumnList(this.columnList)
|
|
|
|
+ },
|
|
|
|
+ transformColumnList(columnList) {
|
|
|
|
+ let list = []
|
|
|
|
+ for (let i = 0; i < columnList.length; i++) {
|
|
|
|
+ const e = columnList[i];
|
|
|
|
+ if (!e.prop.includes('-')) {
|
|
|
|
+ list.push(e)
|
|
|
|
+ } else {
|
|
|
|
+ let prop = e.prop.split('-')[0]
|
|
|
|
+ let label = e.label.split('-')[0]
|
|
|
|
+ let vModel = e.prop.split('-')[1]
|
|
|
|
+ let newItem = {
|
|
|
|
+ align: "center",
|
|
|
|
+ jnpfKey: "table",
|
|
|
|
+ prop,
|
|
|
|
+ label,
|
|
|
|
+ children: []
|
|
|
|
+ }
|
|
|
|
+ e.vModel = vModel
|
|
|
|
+ if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
|
|
|
|
+ if (!list.some(o => o.prop === prop)) list.push(newItem)
|
|
|
|
+ for (let i = 0; i < list.length; i++) {
|
|
|
|
+ if (list[i].prop === prop) {
|
|
|
|
+ list[i].children.push(e)
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.getMergeList(list)
|
|
|
|
+ this.getExportList(list)
|
|
|
|
+ return list
|
|
|
|
+ },
|
|
|
|
+ arraySpanMethod({ column }) {
|
|
|
|
+ for (let i = 0; i < this.mergeList.length; i++) {
|
|
|
|
+ if (column.property == this.mergeList[i].prop) {
|
|
|
|
+ return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getMergeList(list) {
|
|
|
|
+ let newList = JSON.parse(JSON.stringify(list))
|
|
|
|
+ newList.forEach(item => {
|
|
|
|
+ if (item.children && item.children.length) {
|
|
|
|
+ let child = {
|
|
|
|
+ prop: item.prop + '-child-first'
|
|
|
|
+ }
|
|
|
|
+ item.children.unshift(child)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ newList.forEach(item => {
|
|
|
|
+ if (item.children && item.children.length) {
|
|
|
|
+ item.children.forEach((child, index) => {
|
|
|
|
+ if (index == 0) {
|
|
|
|
+ this.mergeList.push({
|
|
|
|
+ prop: child.prop,
|
|
|
|
+ rowspan: 1,
|
|
|
|
+ colspan: item.children.length
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ this.mergeList.push({
|
|
|
|
+ prop: child.prop,
|
|
|
|
+ rowspan: 0,
|
|
|
|
+ colspan: 0
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ this.mergeList.push({
|
|
|
|
+ prop: item.prop,
|
|
|
|
+ rowspan: 1,
|
|
|
|
+ colspan: 1
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ getExportList(list) {
|
|
|
|
+ let exportList = []
|
|
|
|
+ for (let i = 0; i < list.length; i++) {
|
|
|
|
+ if (list[i].jnpfKey === 'table') {
|
|
|
|
+ for (let j = 0; j < list[i].children.length; j++) {
|
|
|
|
+ exportList.push(list[i].children[j])
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ exportList.push(list[i])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.exportList = exportList.filter(o => !noGroupList.includes(o.__config__.jnpfKey))
|
|
|
|
+ },
|
|
|
|
+ getresStatusOptions() {
|
|
|
|
+ getDictionaryDataSelector('607214598059202629').then(res => {
|
|
|
|
+ this.resStatusOptions = res.data.list
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ sortChange({ column, prop, order }) {
|
|
|
|
+ this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
|
|
|
|
+ this.listQuery.sidx = !order ? '' : prop
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ async initSearchDataAndListData() {
|
|
|
|
+ await this.initSearchData()
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ //初始化查询的默认数据
|
|
|
|
+ async initSearchData() {
|
|
|
|
+ },
|
|
|
|
+ init(id) {
|
|
|
|
+ this.query.batchId = id
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ initData() {
|
|
|
|
+ // this.queryData = JSON.parse(JSON.stringify(this.query))导致重置失效
|
|
|
|
+ this.listLoading = true;
|
|
|
|
+ let _query = {
|
|
|
|
+ ...this.listQuery,
|
|
|
|
+ ...this.query,
|
|
|
|
+ ...this.defListQuery,
|
|
|
|
+ keyword: this.keyword,
|
|
|
|
+ dataType: 0,
|
|
|
|
+ menuId: this.menuId,
|
|
|
|
+ moduleId: '607243845716940933',
|
|
|
|
+ type: 1,
|
|
|
|
+ };
|
|
|
|
+ request({
|
|
|
|
+ url: `/api/jnpf/MdmUserDetail/getList`,
|
|
|
|
+ method: 'post',
|
|
|
|
+ data: _query
|
|
|
|
+ }).then(res => {
|
|
|
|
+ var _list = [];
|
|
|
|
+ for (let i = 0; i < res.data.list.length; i++) {
|
|
|
|
+ let _data = res.data.list[i];
|
|
|
|
+ _list.push(_data)
|
|
|
|
+ }
|
|
|
|
+ this.list = _list.map(o => ({
|
|
|
|
+ ...o,
|
|
|
|
+ ...this.expandObj,
|
|
|
|
+ }))
|
|
|
|
+ this.total = res.data.pagination.total
|
|
|
|
+ this.listLoading = false
|
|
|
|
+ this.visible = true
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ handleDel(id) {
|
|
|
|
+ this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
|
|
|
|
+ type: 'warning'
|
|
|
|
+ }).then(() => {
|
|
|
|
+ request({
|
|
|
|
+ url: `/api/jnpf/MdmUserDetail/${id}`,
|
|
|
|
+ method: 'DELETE'
|
|
|
|
+ }).then(res => {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'success',
|
|
|
|
+ message: res.msg,
|
|
|
|
+ onClose: () => {
|
|
|
|
+ this.initData()
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ })
|
|
|
|
+ }).catch(() => {
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ handelUpload() {
|
|
|
|
+ this.uploadBoxVisible = true
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.UploadBox.init("", "jnpf/MdmUserDetail", 0, this.flowList)
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ openSuperQuery() {
|
|
|
|
+ this.superQueryVisible = true
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.SuperQuery.init()
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ superQuery(queryJson) {
|
|
|
|
+ this.listQuery.superQueryJson = queryJson
|
|
|
|
+ this.listQuery.currentPage = 1
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ addOrUpdateHandle(row, isDetail) {
|
|
|
|
+ let id = row ? row.id : ""
|
|
|
|
+ this.formVisible = true
|
|
|
|
+ if (!this.treeActiveId) {
|
|
|
|
+ this.leftTreeActiveInfo = {}
|
|
|
|
+ }
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.JNPFForm.init(id, isDetail, this.list, this.leftTreeActiveInfo)
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ exportData() {
|
|
|
|
+ this.exportBoxVisible = true
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.ExportBox.init(this.exportList, this.multipleSelection)
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ download(data) {
|
|
|
|
+ let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
|
|
|
|
+ request({
|
|
|
|
+ url: `/api/jnpf/MdmUserDetail/Actions/Export`,
|
|
|
|
+ method: 'post',
|
|
|
|
+ data: query
|
|
|
|
+ }).then(res => {
|
|
|
|
+ if (!res.data.url) return
|
|
|
|
+ this.jnpf.downloadFile(res.data.url)
|
|
|
|
+ this.$refs.ExportBox.visible = false
|
|
|
|
+ this.exportBoxVisible = false
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ search() {
|
|
|
|
+ this.listQuery.currentPage = 1
|
|
|
|
+ this.listQuery.pageSize = 20
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ refresh(isrRefresh) {
|
|
|
|
+ this.formVisible = false
|
|
|
|
+ if (isrRefresh) this.reset()
|
|
|
|
+ },
|
|
|
|
+ reset() {
|
|
|
|
+ this.query = JSON.parse(JSON.stringify(this.queryData))
|
|
|
|
+ this.search()
|
|
|
|
+ },
|
|
|
|
+ colseFlow(isrRefresh) {
|
|
|
|
+ this.flowVisible = false
|
|
|
|
+ if (isrRefresh) this.reset()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //以下排序相关方法
|
|
|
|
+ setDefaultQuery(defaultSortList) {
|
|
|
|
+ const defaultSortConfig = (defaultSortList || []).map(o =>
|
|
|
|
+ (o.sort === 'desc' ? '-' : '') + o.field);
|
|
|
|
+ this.defListQuery.sidx = defaultSortConfig.join(',')
|
|
|
|
+ },
|
|
|
|
+ handleHeaderClass({ column }) {
|
|
|
|
+ column.order = column.multiOrder
|
|
|
|
+ },
|
|
|
|
+ handleTableSort({ column }) {
|
|
|
|
+ if (column.sortable !== 'custom') return
|
|
|
|
+ column.multiOrder = column.multiOrder === 'descending' ? 'ascending' : column.multiOrder ? '' : 'descending';
|
|
|
|
+ this.handleOrderChange(column.property, column.multiOrder)
|
|
|
|
+ },
|
|
|
|
+ handleOrderChange(orderColumn, orderState) {
|
|
|
|
+ let index = this.ordersList.findIndex(e => e.field === orderColumn);
|
|
|
|
+ let sort = orderState === 'ascending' ? 'asc' : orderState === 'descending' ? 'desc' : '';
|
|
|
|
+ if (index > -1) {
|
|
|
|
+ this.ordersList[index].sort = orderState;
|
|
|
|
+ } else {
|
|
|
|
+ this.ordersList.push({ field: orderColumn, sort });
|
|
|
|
+ }
|
|
|
|
+ this.ordersList = this.ordersList.filter(e => e.sort);
|
|
|
|
+ this.ordersList.length ? this.setDefaultQuery(this.ordersList) : this.setDefaultQuery(this.defaultSortConfig)
|
|
|
|
+ this.initData()
|
|
|
|
+ },
|
|
|
|
+ //以上排序相关方法
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
+::v-deep .el-dialog__body {
|
|
|
|
+ padding: 20px;
|
|
|
|
+}
|
|
|
|
+.tableContainer {
|
|
|
|
+ flex: 1;
|
|
|
|
+}
|
|
|
|
+.JNPF-common-search-box {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+}
|
|
|
|
+</style>
|