Browse Source

入职登记调整

sangwenwei 6 months ago
parent
commit
7a8f9aea16

+ 7 - 0
src/api/sys/officeService.js

@@ -41,6 +41,13 @@ export default {
 			params: params,
 		});
 	},
+	treeDataPgAndKj: function (params) {
+		return request({
+			url: prefix + "/sys/office/treeDataPgAndKj",
+			method: "get",
+			params: params,
+		});
+	},
 	allTreeData: function (params) {
 		return request({
 			url: prefix + "/sys/office/allTreeData",

+ 2 - 2
src/views/common/DigitalInvoiceUploadComponent.vue

@@ -324,8 +324,8 @@
 						const formBody = new FormData()
 						formBody.append('file', file)
 						await this.ossService.disposeXmlFile(formBody).then((data) => {
-							if(!data && JSON.stringify(data) === "{}"){
-								this.$message.warning('上传的数电发票格式错误');
+							if(JSON.stringify(data) === "{}"){
+								this.$message.warning('文件:'+file.name+'数电发票格式错误');
 								this.loading = false;
 								// 在验证失败时删除已经添加的行
 								const index = this.fileList.findIndex(item => item.name === file.name);

+ 227 - 99
src/views/human/enrollment/registration/EnrollmentRegistrationList.vue

@@ -1,53 +1,137 @@
 <template>
-  <div class="page">
-    <el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
-      <!-- 搜索框-->
-		<el-form-item label="姓名" prop="name">
-			<el-input v-model="searchForm.name" placeholder="请输入姓名" clearable></el-input>
-		</el-form-item>
-		<el-form-item label="所属部门" prop="department">
-			<SelectTree
-				ref="officeTree"
-				:props="{
-                value: 'id',             // ID字段名
-                label: 'name',         // 显示名称
-                children: 'children'    // 子级字段名
-              }"
-				:url="`/system-server/sys/office/treeData?type=2`"
-				:value="searchForm.department"
-				:clearable="true"
-				:accordion="true"
-				size="default"
-				@getValue="(value,label) => {searchForm.department=value}"/>
-		</el-form-item>
-		<el-form-item label="联系电话" prop="mobilePhone">
-			<el-input v-model="searchForm.mobilePhone" placeholder="请输入联系电话" clearable></el-input>
-		</el-form-item>
+	<splitpanes class="default-theme">
+		<pane size="20">
+			<el-container class="jp-container">
+				<el-header class="m-p-13-15">
+					<el-input
+						placeholder="请输入关键字过滤"
+						clearable
+						v-model="filterText"
+					>
+					</el-input>
+				</el-header>
+				<el-main class="nopadding">
+					<el-tree
+						class="filter-tree"
+						:data="officeTreeData"
+						:props="{
+							value: 'id', // ID字段名
+							label: 'name', // 显示名称
+							children: 'children', // 子级字段名
+						}"
+						node-key="id"
+						default-expand-all
+						:filter-node-method="filterNode"
+						:expand-on-click-node="false"
+						highlight-current
+						@node-click="handleNodeClick"
+						ref="officeTree"
+					>
+						<template #default="{ node, data }">
+							<span class="custom-tree-node el-tree-node__label">
+								<span class="label">
+									<el-icon class="m-r-5">
+										<qiye
+											v-if="data.type === '1'"
+											:style="{
+												color:
+													$TOOL.data.get(
+														'IS_PRIMARY_TENANT'
+													) &&
+													data.tenantDTO &&
+													$utils.getTenantColorById(
+														data.tenantDTO.id
+													),
+											}"
+										></qiye>
+										<bumen
+											v-else
+											:style="{
+												color:
+													$TOOL.data.get(
+														'IS_PRIMARY_TENANT'
+													) &&
+													data.tenantDTO &&
+													$utils.getTenantColorById(
+														data.tenantDTO.id
+													),
+											}"
+										></bumen>
+									</el-icon>
+									{{ node.label }}
+								</span>
+							</span>
+						</template>
+					</el-tree>
+				</el-main>
+			</el-container>
+		</pane>
+		<pane size="80">
+			<el-container class="jp-container">
+				<el-header v-if="searchVisible">
+					<div class="left-panel">
+						<el-form :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+							<!-- 搜索框-->
+							<el-form-item label="姓名" prop="name">
+								<el-input v-model="searchForm.name" placeholder="请输入姓名" clearable></el-input>
+							</el-form-item>
+<!--							<el-form-item label="所属部门" prop="department">-->
+<!--								<SelectTree-->
+<!--									ref="officeTree"-->
+<!--									:props="{-->
+<!--										value: 'id',             // ID字段名-->
+<!--										label: 'name',         // 显示名称-->
+<!--										children: 'children'    // 子级字段名-->
+<!--									  }"-->
+<!--									:url="`/system-server/sys/office/treeData?type=2`"-->
+<!--									:value="searchForm.department"-->
+<!--									:clearable="true"-->
+<!--									:accordion="true"-->
+<!--									size="default"-->
+<!--									@getValue="(value,label) => {searchForm.department=value}"/>-->
+<!--							</el-form-item>-->
+							<el-form-item label="联系电话" prop="mobilePhone">
+								<el-input v-model="searchForm.mobilePhone" placeholder="请输入联系电话" clearable></el-input>
+							</el-form-item>
 
-      <el-form-item>
-        <el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
-        <el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="jp-table top" style="">
-      <vxe-toolbar :refresh="{query: refreshList}" ref="toolbarRef" export custom>
-        <template #buttons>
-          <el-button type="primary" icon="el-icon-plus" @click="start()">新建</el-button>
-        </template>
-      </vxe-toolbar>
-      <div style="height: calc(100% - 90px)">
-        <vxe-table
-          border="inner"
-          auto-resize
-          resizable
-          height="auto"
-          :loading="loading"
-          ref="clientTable"
-          show-header-overflow
-          show-overflow
-          highlight-hover-row
-          :print-config="{}"
-          :export-config="{
+						</el-form>
+					</div>
+					<div class="right-panel">
+						<el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
+						<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
+					</div>
+				</el-header>
+				<el-main class="nopadding page2">
+					<div class="jp-table top" style="">
+						<vxe-toolbar :refresh="{query: resetSearch}" ref="toolbarRef" export custom>
+							<template #buttons>
+								<el-button type="primary" icon="el-icon-plus" @click="start()">新建</el-button>
+							</template>
+							<template #tools>
+								<vxe-button
+									type="text"
+									:title="
+										searchVisible ? '收起检索' : '展开检索'
+									"
+									icon="vxe-icon-search"
+									class="tool-btn"
+									@click="searchVisible = !searchVisible"
+								></vxe-button>
+							</template>
+						</vxe-toolbar>
+						<div style="height: calc(100% - 90px)">
+							<vxe-table
+								border="inner"
+								auto-resize
+								resizable
+								height="auto"
+								:loading="loading"
+								ref="clientTable"
+								show-header-overflow
+								show-overflow
+								highlight-hover-row
+								:print-config="{}"
+								:export-config="{
                     remote: true,
                     filename: `入职登记信息${moment(new Date()).format('YYYY-MM-DD')}`,
                     sheetName: '入职登记信息',
@@ -55,69 +139,78 @@
                     types: ['xlsx'],
                     modes: ['current', 'selected', 'all']
                   }"
-          :menu-config="{}"
-          @sort-change="sortChangeHandle"
-          :sort-config="{remote:true}"
-          :data="dataList"
-          :checkbox-config="{}">
-          <vxe-column type="seq" width="60" title="序号"></vxe-column>
-          <vxe-column min-width="160" align="center" title="姓名" field="name">
-			  <template #default="scope">
-				  <el-link  type="primary" :underline="false" @click="view(scope.row.id)">{{scope.row.name}}</el-link>
-			  </template>
-		  </vxe-column>
-          <vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook">
-			  <template #default="scope">
-				  {{$dictUtils.getDictLabel('political_outlook', scope.row.politicalOutlook, '')}}
-			  </template>
-		  </vxe-column>
-          <vxe-column min-width="160" align="center" title="民族" field="nation"></vxe-column>
-          <vxe-column min-width="160" align="center" title="所属部门" field="departmentName"></vxe-column>
-          <vxe-column min-width="160" align="center" title="联系电话" field="mobilePhone"></vxe-column>
-          <vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
-			<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
-				<template #default="scope">
-					<el-button v-if="scope.row.processType === '1'" @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.type, '未开始')}} </el-button>
-					<el-button v-else @click="detail(scope.row)" :type="$dictUtils.getDictLabel('human_status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("human_status", scope.row.type, '未开始')}} </el-button>
-				</template>
-			</vxe-column>
+								:menu-config="{}"
+								@sort-change="sortChangeHandle"
+								:sort-config="{remote:true}"
+								:data="dataList"
+								:checkbox-config="{}">
+								<vxe-column type="seq" width="60" title="序号"></vxe-column>
+								<vxe-column min-width="160" align="center" title="姓名" field="name">
+									<template #default="scope">
+										<el-link  type="primary" :underline="false" @click="view(scope.row.id)">{{scope.row.name}}</el-link>
+									</template>
+								</vxe-column>
+								<vxe-column min-width="160" align="center" title="政治面貌" field="politicalOutlook">
+									<template #default="scope">
+										{{$dictUtils.getDictLabel('political_outlook', scope.row.politicalOutlook, '')}}
+									</template>
+								</vxe-column>
+								<vxe-column min-width="160" align="center" title="民族" field="nation"></vxe-column>
+								<vxe-column min-width="160" align="center" title="所属部门" field="departmentName"></vxe-column>
+								<vxe-column min-width="160" align="center" title="联系电话" field="mobilePhone"></vxe-column>
+								<vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
+								<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
+									<template #default="scope">
+										<el-button v-if="scope.row.processType === '1'" @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("status", scope.row.type, '未开始')}} </el-button>
+										<el-button v-else @click="detail(scope.row)" :type="$dictUtils.getDictLabel('human_status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("human_status", scope.row.type, '未开始')}} </el-button>
+									</template>
+								</vxe-column>
 
-          <vxe-column title="操作" width="200px" fixed="right" align="center">
-            <template  #default="scope">
-              <div v-if="hasPermission('enrollmentRegistration:edit')">
-                <el-button v-if="
+								<vxe-column title="操作" width="200px" fixed="right" align="center">
+									<template  #default="scope">
+										<div v-if="hasPermission('enrollmentRegistration:edit')">
+											<el-button v-if="
                       scope.row.type === '5' || scope.row.type === '4' || scope.row.type === '3'" text type="primary" @click="edit(scope.row.id)">修改</el-button>
-                <el-button v-if="
+											<el-button v-if="
                       scope.row.type === '5' || scope.row.type === '4' || scope.row.type === '3'" text type="primary" @click="del(scope.row.id)">删除</el-button>
-				  <el-button v-if="
+											<el-button v-if="
                       scope.row.type === '5' || scope.row.type === '4' || scope.row.type === '3'" text type="primary" @click="removeRedis(scope.row.userId)">清除登录缓存</el-button>
-			  </div>
-            </template>
-          </vxe-column>
-        </vxe-table>
-        <vxe-pager
-          background
-          :current-page="tablePage.currentPage"
-          :page-size="tablePage.pageSize"
-          :total="tablePage.total"
-          :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
-          :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
-          @page-change="currentChangeHandle">
-        </vxe-pager>
-      </div>
-    </div>
+										</div>
+									</template>
+								</vxe-column>
+							</vxe-table>
+							<vxe-pager
+								background
+								:current-page="tablePage.currentPage"
+								:page-size="tablePage.pageSize"
+								:total="tablePage.total"
+								:page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+								:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+								@page-change="currentChangeHandle">
+							</vxe-pager>
+						</div>
+					</div>
+				</el-main>
+			</el-container>
+		</pane>
+	</splitpanes>
+<!--  <div class="page">-->
+
 	  <EnrollmentRegistrationEditForm ref="enrollmentRegistrationEditForm" @refreshDataList="refreshList"></EnrollmentRegistrationEditForm>
-  </div>
+<!--  </div>-->
 </template>
 
 <script>
-	import SelectTree from '@/components/treeSelect/treeSelect.vue'
-	import EnrollmentRegistrationEditForm from './EnrollmentRegistrationEditForm'
+  import { Splitpanes, Pane } from "splitpanes";
+  import "splitpanes/dist/splitpanes.css";
+  import SelectTree from '@/components/treeSelect/treeSelect.vue'
+  import EnrollmentRegistrationEditForm from './EnrollmentRegistrationEditForm'
   import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
   import processService from '@/api/flowable/ProcessService'
   import userService from '@/api/sys/UserService'
   import taskService from '@/api/flowable/TaskService'
   import pick from "lodash.pick";
+  import officeService from "@/api/sys/officeService";
   export default {
     data () {
       return {
@@ -126,6 +219,7 @@
           name: '',
 			mobilePhone: '',
 			department: '',
+			companyId:'',
         },
         dataList: [],
         tablePage: {
@@ -142,7 +236,10 @@
         procDefAuditKey2: '',
         isAdmin: false,
         create: '',
-        haveProjectIds: ''
+        haveProjectIds: '',
+		searchVisible: true,
+		  officeTreeData: [],
+		  filterText: "",
       }
     },
     created () {
@@ -150,7 +247,14 @@
     components: {
 		SelectTree,
 		EnrollmentRegistrationEditForm,
+		Splitpanes,
+		Pane,
     },
+	  watch: {
+		  filterText(val) {
+			  this.$refs.officeTree.filter(val);
+		  },
+	  },
     computed: {
       userName () {
         return this.$store.state.user.name
@@ -168,11 +272,26 @@
 			$table.connect($toolbar);
 		})
       this.refreshList()
+	  this.refreshTree();
     },
     activated () {
       this.refreshList()
     },
     methods: {
+		filterNode(value, data) {
+			if (!value) return true;
+			return data.name.indexOf(value) !== -1;
+		},
+		handleNodeClick(data) {
+			if (data.type === "1") {
+				this.searchForm.companyId = data.id;
+				this.searchForm.department = "";
+			} else {
+				this.searchForm.companyId = "";
+				this.searchForm.department = data.id;
+			}
+			this.refreshList();
+		},
       // 新增
       add () {
       },
@@ -221,6 +340,11 @@
 			  }
 		  })
       },
+		refreshTree() {
+			officeService.treeDataPgAndKj().then((data) => {
+				this.officeTreeData = data;
+			});
+		},
       // 当前页
       currentChangeHandle ({ currentPage, pageSize }) {
         this.tablePage.currentPage = currentPage
@@ -236,6 +360,10 @@
         this.refreshList()
       },
       resetSearch () {
+	    this.searchForm.department = "";
+	    this.searchForm.companyId = "";
+	    this.filterText = "";
+	    this.$refs.officeTree.setCurrentKey(null);
         this.$refs.searchForm.resetFields()
         this.refreshList()
       },