Ver código fonte

人力资源调整

sangwenwei 4 meses atrás
pai
commit
b2b03afe79

+ 1 - 1
src/views/human/enrollment/registration/EnrollmentRegistrationList.vue

@@ -352,7 +352,7 @@
 		  })
       },
 		refreshTree() {
-			officeService.treeDataPgAndKj().then((data) => {
+			officeService.treeData().then((data) => {
 				this.officeTreeData = data;
 			});
 		},

+ 277 - 147
src/views/human/practice/register/RegistrationList.vue

@@ -1,93 +1,178 @@
 <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="practiceOffice">
-			<SelectTree
-				ref="officeTree"
-				:props="{
-                value: 'id',             // ID字段名
-                label: 'name',         // 显示名称
-                children: 'children'    // 子级字段名
-              }"
-				:url="`/system-server/sys/office/treeData?type=2`"
-				:value="searchForm.practiceOffice"
-				:clearable="true"
-				:accordion="true"
-				size="default"
-				@getValue="(value,label) => {searchForm.practiceOffice=value}"/>
-		</el-form-item>
-		<el-form-item label="实习时间" prop="createDates">
-			<el-date-picker
-				placement="bottom-start"
-				format="YYYY-MM-DD"
-				value-format="YYYY-MM-DD"
-				v-model="searchForm.createDates"
-				type="datetimerange"
-				range-separator="至"
-				start-placeholder="开始日期"
-				end-placeholder="结束日期">
-			</el-date-picker>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="联系电话" prop="mobilePhone">
-			<el-input v-model="searchForm.mobilePhone" placeholder="请输入联系电话" clearable></el-input>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="性别" prop="sex">
-			<el-select v-model="searchForm.sex" placeholder="请选择" style="width:100%;" clearable>
-				<el-option
-					v-for="item in $dictUtils.getDictList('sex')"
-					:key="item.value"
-					:label="item.label"
-					:value="item.value">
-				</el-option>
-			</el-select>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="身份证号码" prop="idCard">
-			<el-input v-model="searchForm.idCard" placeholder="请输入身份证号码" clearable></el-input>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="就读/毕业院校" prop="graduatedFrom">
-			<el-input v-model="searchForm.graduatedFrom" placeholder="请输入就读/毕业院校" clearable></el-input>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="专业" prop="speciality">
-			<el-input v-model="searchForm.speciality" placeholder="请输入专业" clearable></el-input>
-		</el-form-item>
-		<!--<el-form-item v-if="showHideItem" label="QQ号/微信号" prop="qqNum">
-			<el-input v-model="searchForm.qqNum" placeholder="请输入QQ号/微信号" clearable></el-input>
-		</el-form-item>-->
-		<el-form-item v-if="showHideItem" label="实习单位名称" prop="practiceUnitName">
-			<el-input v-model="searchForm.practiceUnitName" placeholder="请输入实习单位名称" clearable></el-input>
-		</el-form-item>
-		<el-form-item v-if="showHideItem" label="项目经理" prop="projectManager">
-			<UserSelect2 :limit='1' :modelValue="searchForm.projectManager" @update:modelValue='(value, label) => {searchForm.projectManager = value}'></UserSelect2>
-		</el-form-item>
-      <el-form-item>
-		  <el-button type="default" @click="showHide" :icon="showHideIcon">{{showHideName}}</el-button>
-		  <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="add()">新建</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="{
+	<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="practiceOffice">-->
+<!--								<SelectTree-->
+<!--									ref="officeTree"-->
+<!--									:props="{-->
+<!--                value: 'id',             // ID字段名-->
+<!--                label: 'name',         // 显示名称-->
+<!--                children: 'children'    // 子级字段名-->
+<!--              }"-->
+<!--									:url="`/system-server/sys/office/treeData?type=2`"-->
+<!--									:value="searchForm.practiceOffice"-->
+<!--									:clearable="true"-->
+<!--									:accordion="true"-->
+<!--									size="default"-->
+<!--									@getValue="(value,label) => {searchForm.practiceOffice=value}"/>-->
+<!--							</el-form-item>-->
+							<el-form-item label="实习时间" prop="createDates">
+								<el-date-picker
+									style = "width: 300px"
+									placement="bottom-start"
+									format="YYYY-MM-DD"
+									value-format="YYYY-MM-DD"
+									v-model="searchForm.createDates"
+									type="datetimerange"
+									range-separator="至"
+									start-placeholder="开始日期"
+									end-placeholder="结束日期">
+								</el-date-picker>
+							</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 v-if="showHideItem" label="性别" prop="sex">
+								<el-select v-model="searchForm.sex" placeholder="请选择" style="width:100%;" clearable>
+									<el-option
+										v-for="item in $dictUtils.getDictList('sex')"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value">
+									</el-option>
+								</el-select>
+							</el-form-item>
+							<el-form-item v-if="showHideItem" label="身份证号码" prop="idCard">
+								<el-input v-model="searchForm.idCard" placeholder="请输入身份证号码" clearable></el-input>
+							</el-form-item>
+							<el-form-item v-if="showHideItem" label="就读/毕业院校" prop="graduatedFrom">
+								<el-input v-model="searchForm.graduatedFrom" placeholder="请输入就读/毕业院校" clearable></el-input>
+							</el-form-item>
+							<el-form-item v-if="showHideItem" label="专业" prop="speciality">
+								<el-input v-model="searchForm.speciality" placeholder="请输入专业" clearable></el-input>
+							</el-form-item>
+							<!--<el-form-item v-if="showHideItem" label="QQ号/微信号" prop="qqNum">
+								<el-input v-model="searchForm.qqNum" placeholder="请输入QQ号/微信号" clearable></el-input>
+							</el-form-item>-->
+							<el-form-item v-if="showHideItem" label="实习单位名称" prop="practiceUnitName">
+								<el-input v-model="searchForm.practiceUnitName" placeholder="请输入实习单位名称" clearable></el-input>
+							</el-form-item>
+							<el-form-item v-if="showHideItem" label="项目经理" prop="projectManager">
+								<UserSelect2 :limit='1' :modelValue="searchForm.projectManager" @update:modelValue='(value, label) => {searchForm.projectManager = value}'></UserSelect2>
+							</el-form-item>
+						</el-form>
+					</div>
+					<div class="right-panel">
+						<el-button type="default" @click="showHide" :icon="showHideIcon">{{showHideName}}</el-button>
+						<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: refreshList}" ref="toolbarRef" export custom>
+							<template #buttons>
+								<el-button type="primary" icon="el-icon-plus" @click="add()">新建</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: '实习登记信息',
@@ -95,69 +180,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="mobilePhone"></vxe-column>
-          <vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
-          <vxe-column min-width="160" align="center" title="所属部门" field="departmentName"></vxe-column>
-          <vxe-column min-width="160" align="center" title="项目经理" field="projectManagerName"></vxe-column>
-          <vxe-column min-width="160" align="center" title="实习开始时间" field="practiceStartDay"></vxe-column>
-          <vxe-column min-width="160" align="center" title="实习结束时间" field="practiceCompleteDay"></vxe-column>
-          <vxe-column min-width="160" align="center" title="实习状态" field="practiceStatus">
-			  <template #default="scope">
-				  {{$dictUtils.getDictLabel('practice_type', scope.row.practiceStatus, '')}}
-			  </template>
-		  </vxe-column>
-			<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
-				<template #default="scope">
-					<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("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="mobilePhone"></vxe-column>
+								<vxe-column min-width="160" align="center" title="毕业院校" field="graduatedFrom"></vxe-column>
+								<vxe-column min-width="160" align="center" title="所属公司" field="practiceUnitName"></vxe-column>
+								<vxe-column min-width="160" align="center" title="所属部门" field="departmentName"></vxe-column>
+								<vxe-column min-width="160" align="center" title="项目经理" field="projectManagerName"></vxe-column>
+								<vxe-column min-width="160" align="center" title="实习开始时间" field="practiceStartDay"></vxe-column>
+								<vxe-column min-width="160" align="center" title="实习结束时间" field="practiceCompleteDay"></vxe-column>
+								<vxe-column min-width="160" align="center" title="实习状态" field="practiceStatus">
+									<template #default="scope">
+										{{$dictUtils.getDictLabel('practice_type', scope.row.practiceStatus, '')}}
+									</template>
+								</vxe-column>
+								<vxe-column min-width="100" title="状态" fixed="right" align="center" field="type">
+									<template #default="scope">
+										<el-button @click="detail(scope.row)" :type="$dictUtils.getDictLabel('status_info', scope.row.type, '')" effect="dark" >{{$dictUtils.getDictLabel("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('register:edit')">-->
-                <el-button v-if="hasPermission('register:edit') &&(
+								<vxe-column title="操作" width="200px" fixed="right" align="center">
+									<template  #default="scope">
+										<!--              <div v-if="hasPermission('register:edit')">-->
+										<el-button v-if="hasPermission('register:edit') &&(
                       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="hasPermission('register:del') && (
+										<el-button v-if="hasPermission('register:del') && (
                       scope.row.type === '5' || scope.row.type === '4' || scope.row.type === '3')" text type="primary" @click="del(scope.row.id)">删除</el-button>
-<!--              </div>-->
-<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '1' || scope.row.type === '3' )" text type="primary"   @click="editForm(scope.row)">修改</el-button>-->
-<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '2')" text type="primary"  @click="reback(scope.row)">撤回</el-button>-->
-            </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>-->
+										<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '1' || scope.row.type === '3' )" text type="primary"   @click="editForm(scope.row)">修改</el-button>-->
+										<!--				<el-button v-if="hasPermission('reimburseRegister:edit') && scope.row.createById === $store.state.user.id && (scope.row.type === '2')" text type="primary"  @click="reback(scope.row)">撤回</el-button>-->
+									</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">-->
+
 	  <RegistrationEditForm ref="registrationEditForm" @refreshList="refreshList"></RegistrationEditForm>
-  </div>
+<!--  </div>-->
 </template>
 
 <script>
+	import { Splitpanes, Pane } from "splitpanes";
+	import "splitpanes/dist/splitpanes.css";
 	import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import registerService from '@/api/human/register/RegisterService'
   import processService from '@/api/flowable/ProcessService'
@@ -166,6 +260,7 @@
   import RegistrationEditForm from './RegistrationEditForm'
   import pick from "lodash.pick";
 	import UserSelect2 from '@/components/userSelect'
+	import officeService from "@/api/sys/officeService";
   export default {
     data () {
       return {
@@ -185,6 +280,7 @@
 			practiceUnitName:'',
 			projectManager:'',
 			createDates: [],
+			companyId:"",
         },
         dataList: [],
         tablePage: {
@@ -199,7 +295,10 @@
         procDefAuditKey: '',
         isAdmin: false,
         create: '',
-        haveProjectIds: ''
+        haveProjectIds: '',
+		  filterText: "",
+		  officeTreeData: [],
+		  searchVisible: true,
       }
     },
     created () {
@@ -207,8 +306,15 @@
     components: {
 		SelectTree,
 		RegistrationEditForm,
-		UserSelect2
+		UserSelect2,
+		Splitpanes,
+		Pane,
     },
+	  watch: {
+		  filterText(val) {
+			  this.$refs.officeTree.filter(val);
+		  },
+	  },
     computed: {
       userName () {
         return this.$store.state.user.name
@@ -226,11 +332,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.practiceOffice = "";
+			} else {
+				this.searchForm.companyId = "";
+				this.searchForm.practiceOffice = data.id;
+			}
+			this.refreshList();
+		},
 		showHide () {
 			if (this.showHideItem === false) {
 				this.showHideItem = true
@@ -263,6 +384,11 @@
           this.isAdmin = data
         })
       },
+		refreshTree() {
+			officeService.treeData().then((data) => {
+				this.officeTreeData = data;
+			});
+		},
       // 获取数据列表
       refreshList () {
         this.loading = true
@@ -300,6 +426,10 @@
         this.refreshList()
       },
       resetSearch () {
+		  this.searchForm.practiceOffice = "";
+		  this.searchForm.companyId = "";
+		  this.filterText = "";
+		  this.$refs.officeTree.setCurrentKey(null);
         this.$refs.searchForm.resetFields()
         this.refreshList()
       },

+ 6 - 5
src/views/sys/user/UserForm.vue

@@ -695,12 +695,13 @@ export default {
 								department:this.inputForm.officeDTO.id,
 								userId: data.userId,
 							}
+							enrollmentRegistrationService.saveInfo(param)
+
 							//会计公司和评估公司的人可以将信息添加到入职登记中
-							officeService.queryById(this.inputForm.companyDTO.id).then((byId) => {
-								if (byId.code === 'xgkjssws' || byId.code === 'xgzcpg'){
-									enrollmentRegistrationService.saveInfo(param)
-								}
-							})
+							// officeService.queryById(this.inputForm.companyDTO.id).then((byId) => {
+							// 	if (byId.code === 'xgkjssws' || byId.code === 'xgzcpg'){
+							// 	}
+							// })
 
 						})
 						.catch(() => {