change
This commit is contained in:
@@ -28,7 +28,7 @@ SELECT
|
||||
1,
|
||||
0,
|
||||
'staff.sourcechange.pending',
|
||||
'全量人员数据差异待人工确认记录',
|
||||
'系统用户待确认和已确认人员记录',
|
||||
source_menu.location + 1,
|
||||
0,
|
||||
'',
|
||||
@@ -49,7 +49,7 @@ WHERE source_menu.permission = 'staff.sourcechange.manage'
|
||||
FROM (SELECT id FROM sys_menu WHERE permission = 'staff.sourcechange.pending') existing_menu
|
||||
);
|
||||
|
||||
-- 原先能够查看“变更记录”的角色默认拥有“待确认人员记录”权限,避免新页面上线后无人可见。
|
||||
-- 原先能够查看“变更记录”的角色默认拥有待确认人员记录权限。
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT source_role.roleId, pending_menu.id
|
||||
FROM sys_role_menu source_role
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
-- 待确认人员人工确认备注字段。已有字段的环境重复执行不会改变表结构。
|
||||
SET @pending_remark_column_count = (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'sys_user_history'
|
||||
AND COLUMN_NAME = 'remark'
|
||||
);
|
||||
|
||||
SET @pending_remark_ddl = IF(
|
||||
@pending_remark_column_count = 0,
|
||||
'ALTER TABLE sys_user_history ADD COLUMN remark TEXT NULL COMMENT ''备注'' AFTER changeReason',
|
||||
'SELECT 1'
|
||||
);
|
||||
|
||||
PREPARE pending_remark_stmt FROM @pending_remark_ddl;
|
||||
EXECUTE pending_remark_stmt;
|
||||
DEALLOCATE PREPARE pending_remark_stmt;
|
||||
+9
-7
@@ -1,7 +1,7 @@
|
||||
const MEMBER_CHANGE = {
|
||||
template: /*language=HTML*/ `
|
||||
<el-card shadow="never">
|
||||
<snaker-start slot="header" label="会员变更" define_key="HYBG"></snaker-start>
|
||||
<snaker-start v-if="showFlowHeader" slot="header" label="会员变更" define_key="HYBG"></snaker-start>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-descriptions :column="3" border>
|
||||
@@ -155,12 +155,12 @@ const MEMBER_CHANGE = {
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="人员分类">
|
||||
<el-form-item prop="aidFundMemberUserType">
|
||||
<dict-select v-model="formData.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="人员分类">-->
|
||||
<!-- <el-form-item prop="aidFundMemberUserType">-->
|
||||
<!-- <dict-select v-model="formData.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"-->
|
||||
<!-- style="width: 100%"></dict-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<template v-if="formData.userState == '退休'">
|
||||
<el-descriptions-item label="退休日期">
|
||||
@@ -288,6 +288,8 @@ const MEMBER_CHANGE = {
|
||||
props: {
|
||||
id: { type: String, default: '' },
|
||||
showThreeUnit: { type: Boolean, default: false },
|
||||
// 控制公共变更组件的标题及流程图入口,默认保留原会员变更页面样式。
|
||||
showFlowHeader: { type: Boolean, default: true },
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
store,
|
||||
|
||||
+130
-177
@@ -2,145 +2,116 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名/工号">
|
||||
<el-input v-model="pageForm.searchKeyword" clearable placeholder="请输入姓名或工号"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" clearable filterable placeholder="请选择所属工会"
|
||||
style="width: 100%" @change="flushUnits" @clear="flushUnits">
|
||||
<el-option v-for="item in unions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" clearable filterable placeholder="请选择所属单位" style="width: 100%">
|
||||
<el-option v-for="item in units" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态">
|
||||
<dict-select v-model="pageForm.userState" code="USER_STATE" clearable placeholder="请选择在职状态"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
<dict-select v-model="pageForm.personType" code="USER_PERSON_TYPE" clearable placeholder="请选择人员类型"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="变更来源">
|
||||
<el-select v-model="pageForm.changeOrigin" clearable filterable placeholder="请选择变更来源" style="width: 100%">
|
||||
<el-option v-for="item in changeOriginData" :key="item.name"
|
||||
:label="item.changeOriginName" :value="item.name"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="变更日期">
|
||||
<el-date-picker v-model="pageForm.changeDateRange" type="daterange" value-format="yyyy-MM-dd"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="-"
|
||||
style="width: 100%" @change="changeDateRangeChange"></el-date-picker>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名/工号">
|
||||
<el-input clearable placeholder="请输入姓名或工号"
|
||||
v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
|
||||
placeholder="请选择所属工会" style="width: 100%"
|
||||
v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select clearable filterable placeholder="请选择所属单位" style="width: 100%"
|
||||
v-model="pageForm.unitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
<dict-select @change="doSearch" code="USER_PERSON_TYPE" placeholder="请选择人员类型"
|
||||
v-model="pageForm.personType"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态">
|
||||
<dict-select @change="doSearch" code="USER_STATE" placeholder="请选择在职状态"
|
||||
v-model="pageForm.userState"></dict-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="待确认人员记录"></table-tool>
|
||||
<el-table ref="table" :data="tableData" :size="tableSize" row-key="id"
|
||||
style="width: 100%" @sort-change="pageOrder">
|
||||
<el-table-column type="index" label="序号" width="70" align="center" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="loginname" label="工号" min-width="110" sortable="custom" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="username" label="姓名" min-width="100" sortable="custom" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="sex" label="性别" width="80" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<dict-tag code="USER_SEX" :value="row.sex"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="userState" label="在职状态" min-width="100">
|
||||
<template slot-scope="{row}">
|
||||
<dict-tag code="USER_STATE" :value="row.userState"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="personType" label="人员类型" min-width="110">
|
||||
<template slot-scope="{row}">
|
||||
<dict-tag code="USER_PERSON_TYPE" :value="row.personType"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会" min-width="150" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="unitName" label="所属单位" min-width="160" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="changeTime" label="待确认时间" width="170" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="changeOrigin" label="变更来源" min-width="120">
|
||||
<template slot-scope="{row}">{{ getChangeOrigin(row.changeOrigin) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-button type="primary" size="mini" @click="openConfirm(row)">确认人员</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool label="待确认人员记录">
|
||||
<el-radio-group @change="doSearch" size="small" v-model="pageForm.pendingConfirmStatus">
|
||||
<el-radio-button :label="1">待确认</el-radio-button>
|
||||
<el-radio-button :label="2">已确认</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
|
||||
<el-dialog title="确认人员" :visible.sync="confirmVisible" width="520px" append-to-body
|
||||
:close-on-click-modal="false" @closed="resetConfirmForm">
|
||||
<el-form ref="confirmFormRef" :model="confirmForm" :rules="confirmRules" label-width="100px">
|
||||
<el-form-item label="异动类型" prop="changeType">
|
||||
<el-select v-model="confirmForm.changeType" filterable placeholder="请选择异动类型" style="width: 100%">
|
||||
<el-option v-for="item in finalChangeTypeData" :key="item.code"
|
||||
:label="item.changeTypeName" :value="item.code"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="confirmForm.remark" type="textarea" :rows="4" maxlength="1000"
|
||||
show-word-limit placeholder="请输入备注"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template slot="footer">
|
||||
<el-button @click="confirmVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="confirmLoading" @click="submitConfirm">确定</el-button>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
class="vi-table" ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column :index="indexMethod" align="center" fixed="left"
|
||||
header-align="center" label="序号" type="index" width="80"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="工号" min-width="120"
|
||||
prop="loginname" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="姓名" min-width="100"
|
||||
prop="username" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="性别" min-width="80"
|
||||
prop="sex" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属工会" min-width="150"
|
||||
prop="unionName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属单位" min-width="180"
|
||||
prop="unitName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="人员类型" min-width="120"
|
||||
prop="personType" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="在职状态" min-width="100"
|
||||
prop="userState" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="确认状态" min-width="100"
|
||||
prop="pendingConfirmStatus">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag type="warning" v-if="row.pendingConfirmStatus === 1">待确认</el-tag>
|
||||
<el-tag type="success" v-else-if="row.pendingConfirmStatus === 2">已确认</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openChange(row.id)" size="mini" type="primary">变更</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #public>
|
||||
<member-change ref="memberChangeRef" :show-three-unit="true" :show-flow-header="false"
|
||||
@do-back="closeChange" @do-submit="doSubmit"></member-change>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include("../../member/change/common/memberChange.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"member-change": MEMBER_CHANGE
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
searchKeyword: "",
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
userState: "",
|
||||
personType: "",
|
||||
changeOrigin: "",
|
||||
changeDateRange: [],
|
||||
changeDateBefore: "",
|
||||
changeDateEnd: ""
|
||||
userState: "",
|
||||
pendingConfirmStatus: 1
|
||||
},
|
||||
unions: [],
|
||||
units: [],
|
||||
changeOriginData: [],
|
||||
changeTypeData: [],
|
||||
confirmVisible: false,
|
||||
confirmLoading: false,
|
||||
confirmForm: {
|
||||
id: "",
|
||||
changeType: "",
|
||||
remark: ""
|
||||
},
|
||||
confirmRules: {
|
||||
changeType: [{required: true, message: "请选择异动类型", trigger: "change"}],
|
||||
remark: [{max: 1000, message: "备注不能超过1000个字符", trigger: "blur"}]
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
finalChangeTypeData() {
|
||||
return this.changeTypeData.filter((item) => item.code !== "PENDING_CONFIRM")
|
||||
units: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 分页加载待确认人员,查询参数沿用人员变更记录页面。 */
|
||||
/** 分页查询待确认或已确认人员。 */
|
||||
pageData() {
|
||||
this.$axios.post("/platform/sourcechange/pending/pageData", this.pageForm).then((resp) => {
|
||||
return $.post("/platform/sourcechange/pending/pageData", this.pageForm).then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
@@ -149,81 +120,63 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 工会变更时重新加载其下属单位,避免带入其他工会的单位条件。 */
|
||||
/** 切换工会时重新加载所属单位。 */
|
||||
flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if (!this.pageForm.unionId) {
|
||||
this.units = []
|
||||
if (this.pageForm.unionId) {
|
||||
this.$businessTool.listUnit(this.pageForm.unionId).then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
} else {
|
||||
this.$businessTool.listUnit().then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$businessTool.listUnit(this.pageForm.unionId).then((data) => {
|
||||
this.units = data
|
||||
},
|
||||
/** 打开人员变更组件并加载当前人员信息。 */
|
||||
openChange(userId) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.memberChangeRef.init(userId)
|
||||
})
|
||||
},
|
||||
/** 将日期组件值转换成后台通用的起止日期参数。 */
|
||||
changeDateRangeChange(value) {
|
||||
this.pageForm.changeDateBefore = value && value.length ? value[0] : ""
|
||||
this.pageForm.changeDateEnd = value && value.length ? value[1] : ""
|
||||
/** 关闭变更页面并刷新列表。 */
|
||||
closeChange() {
|
||||
this.$refs.guava.index()
|
||||
this.pageData()
|
||||
},
|
||||
/** 根据枚举数据展示变更来源名称。 */
|
||||
getChangeOrigin(value) {
|
||||
const option = this.changeOriginData.find((item) => item.name === value)
|
||||
return option ? option.changeOriginName : value
|
||||
/** 复用人员变更提交接口,成功后刷新待确认状态。 */
|
||||
doSubmit(data) {
|
||||
const loading = createLoading("正在提交中")
|
||||
this.$axios.post("/platform/member/change/manage/doSubmitChange", data).then((resp) => {
|
||||
loading.close()
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.closeChange()
|
||||
} else {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
this.$message.error("提交失败,请稍后重试")
|
||||
})
|
||||
},
|
||||
/** 打开确认弹窗并绑定当前待确认历史记录。 */
|
||||
openConfirm(row) {
|
||||
this.confirmForm.id = row.id
|
||||
this.confirmForm.changeType = ""
|
||||
this.confirmForm.remark = row.remark || ""
|
||||
this.confirmVisible = true
|
||||
},
|
||||
/** 提交最终异动类型,成功后刷新列表使已确认人员立即移除。 */
|
||||
submitConfirm() {
|
||||
this.$refs.confirmFormRef.validate((valid) => {
|
||||
if (!valid) return
|
||||
this.confirmLoading = true
|
||||
this.$axios.post("/platform/sourcechange/pending/confirm", {
|
||||
data: JSON.stringify(this.confirmForm)
|
||||
}).then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success("人员确认成功")
|
||||
this.confirmVisible = false
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.confirmLoading = false
|
||||
/** 初始化工会和单位查询选项。 */
|
||||
initData() {
|
||||
return Promise.all([
|
||||
this.$businessTool.listUnion().then((data) => {
|
||||
this.unions = data
|
||||
}),
|
||||
this.$businessTool.listUnit().then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
})
|
||||
},
|
||||
/** 关闭弹窗后清理表单校验状态及业务字段。 */
|
||||
resetConfirmForm() {
|
||||
this.confirmForm = {id: "", changeType: "", remark: ""}
|
||||
if (this.$refs.confirmFormRef) {
|
||||
this.$refs.confirmFormRef.clearValidate()
|
||||
}
|
||||
},
|
||||
/** 加载当前登录人可用的组织及异动枚举数据。 */
|
||||
initOptions() {
|
||||
Promise.all([
|
||||
this.$businessTool.listUnion(),
|
||||
this.$businessTool.listUnit(),
|
||||
this.$businessTool.getEnumOptions("MemberChangeType"),
|
||||
this.$businessTool.getEnumOptions("MemberChangeOrigin")
|
||||
]).then((result) => {
|
||||
this.unions = result[0]
|
||||
this.units = result[1]
|
||||
this.changeTypeData = result[2]
|
||||
this.changeOriginData = result[3]
|
||||
this.pageData()
|
||||
})
|
||||
])
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.initOptions()
|
||||
this.initData().then(() => {
|
||||
this.pageData()
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user