Merge remote-tracking branch 'origin/feature_民主管理、人员管理' into release_20261030问题整改
# Conflicts: # src/main/resources/static/components/plugins/sysSignature/pc.vue
This commit is contained in:
@@ -155,14 +155,13 @@ layout("/layouts/platform.html"){
|
||||
</el-button>
|
||||
<el-button @click="$refs.sortRef.onOpen()" size="medium" type="primary" icon="el-icon-sort">排序
|
||||
</el-button>
|
||||
<el-button v-if="$auth.hasPermission('sys.manager.role.user')" size="medium" type="primary"
|
||||
icon="el-icon-user" :loading="memberRoleLoading" @click="doSettingMemberRole">
|
||||
一键设置会员角色
|
||||
</el-button>
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<!-- <div class="pull-right offscreen-right mt5 ml5">-->
|
||||
<!-- <el-button size="medium" @click="doSettingMemberRole" type="primary"><i class="el-icon-s-tools"></i>-->
|
||||
<!-- 一键设会员角色-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="pull-right offscreen-right mt5 ml5">-->
|
||||
<!-- <el-button size="medium" @click="doPublic" type="primary">一键设置公共角色</el-button>-->
|
||||
<!-- </div>-->
|
||||
@@ -511,6 +510,7 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
return {
|
||||
memberRoleLoading: false,
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
roleDialogVisible: false,
|
||||
@@ -689,18 +689,30 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
doSettingMemberRole() {
|
||||
this.$confirm("是否确定一键设置会员角色?", "提示", {
|
||||
if (this.memberRoleLoading) {
|
||||
return
|
||||
}
|
||||
// 操作面向全部会员,忽略当前列表筛选;确认期间也锁定按钮,避免重复提交。
|
||||
this.$set(this, "memberRoleLoading", true)
|
||||
this.$confirm("确定为全部已标记为会员的人员设置会员角色吗?已有角色将保留。", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
.then(async () => {
|
||||
const {code, msg} = await this.$axios.post("/platform/sys/role/doSettingMemberRole")
|
||||
if (code === 0) {
|
||||
this.$message.success(msg)
|
||||
}
|
||||
.then(() => {
|
||||
return this.$axios.post("/platform/sys/role/doSettingMemberRole").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("设置完成:新增 " + res.data.addedCount
|
||||
+ " 条,恢复启用 " + res.data.enabledCount + " 条会员角色关联")
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
// 取消确认无需提示;请求异常由全局 axios 拦截器统一提示。
|
||||
})
|
||||
.finally(() => {
|
||||
this.$set(this, "memberRoleLoading", false)
|
||||
})
|
||||
},
|
||||
formatAt(val) {
|
||||
|
||||
+2
-2
@@ -9,8 +9,8 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="年度">
|
||||
<el-date-picker placeholder="请选择年度" style="width: 100%" type="year" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="会议名称">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入会议名称" v-model="pageForm.searchKeyword"></el-input>
|
||||
<search-item label="资料名称">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入资料名称" v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
@@ -403,6 +403,12 @@ const PROPOSAL_INFO = {
|
||||
},
|
||||
|
||||
openChart(){
|
||||
// 仅保存的提案尚未创建 WF 实例,按提案流程 KEY 预览流程定义图。
|
||||
if (!this.row.instanceId) {
|
||||
this.$refs.snakerChartRef.onOpen("JDHTA_NC")
|
||||
return
|
||||
}
|
||||
// 已提交提案使用实例对应的流程版本,保留实际办理节点和审批进度。
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||
}
|
||||
},
|
||||
|
||||
+2
-1
@@ -40,7 +40,8 @@
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
|
||||
style="width: 100%"></dict-select>
|
||||
</search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-if="userAttributeMultiple" v-model="pageForm.userAttributes" code="USER_ATTRIBUTE"
|
||||
multiple collapse-tags clearable style="width: 100%"></dict-select>
|
||||
<dict-select v-else v-model="pageForm.userAttribute" code="USER_ATTRIBUTE"
|
||||
|
||||
+3
-1
@@ -32,7 +32,9 @@ const COMMON_QUERY = {
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
this.$emit('search', pageForm)
|
||||
},
|
||||
async initData(){
|
||||
|
||||
@@ -124,7 +124,7 @@ layout("/layouts/platform.html"){
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="入职时间">
|
||||
<el-form-item prop="arrivalAtSchoolDate">
|
||||
<el-input v-model="formData.arrivalAtSchoolDate" placeholder="请输入入职时间"
|
||||
<el-input v-model="formData.arrivalAtSchoolDate" placeholder="暂无"
|
||||
disabled maxlength="50"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
@@ -256,7 +256,6 @@ layout("/layouts/platform.html"){
|
||||
personalData: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
specialty: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
marriage: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
arrivalAtSchoolDate: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
/*email: [
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
@@ -321,6 +320,14 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 缺失或非法日期回填为空,避免生成十二位 Invalid date;不使用当天日期补缺。
|
||||
formatArrivalAtSchoolDate(value) {
|
||||
if (value === null || value === undefined || String(value).trim() === '') {
|
||||
return ''
|
||||
}
|
||||
const date = this.$moment(value, this.$moment.ISO_8601, true)
|
||||
return date.isValid() ? date.format('YYYY-MM-DD') : ''
|
||||
},
|
||||
normalizeUnitField() {
|
||||
if (!this.formData || !this.formData.unitId) {
|
||||
return
|
||||
@@ -413,6 +420,7 @@ layout("/layouts/platform.html"){
|
||||
debugger
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.formatArrivalAtSchoolDate(res.data.arrivalAtSchoolDate))
|
||||
}
|
||||
} else {
|
||||
const {
|
||||
@@ -468,7 +476,7 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, "email", email)
|
||||
this.$set(this.formData, "families", families ? families : [])
|
||||
this.$set(this.formData, "personalData", personalData)
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.$moment(arrivalAtSchoolDate).format('YYYY-MM-DD'))
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.formatArrivalAtSchoolDate(arrivalAtSchoolDate))
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+2
-1
@@ -29,7 +29,8 @@
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-if="userAttributeMultiple" v-model="pageForm.userAttributes"
|
||||
placeholder="请选择人员属性" @change="doSearch" code="USER_ATTRIBUTE"
|
||||
multiple collapse-tags clearable></dict-select>
|
||||
|
||||
+4
-2
@@ -32,8 +32,10 @@ const COMMON_QUERY = {
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
// 多选人员属性沿用现有数组查询参数的JSON提交方式。
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 保持其他业务筛选条件,排除已屏蔽字段。
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
this.$emit('search', pageForm)
|
||||
},
|
||||
async initData(){
|
||||
|
||||
@@ -23,8 +23,9 @@ const INFO = {
|
||||
|
||||
<el-descriptions-item label="工作单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item v-if="showThreeUnit" label="三级单位">{{ viewData.threeUnitName || '暂无' }}</el-descriptions-item>
|
||||
<el-descriptions-item v-else label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
||||
<!-- 屏蔽三级单位展示,所属校区仍遵循原有显示条件。 -->
|
||||
<el-descriptions-item v-if="false" label="三级单位">{{ viewData.threeUnitName || '暂无' }}</el-descriptions-item>
|
||||
<el-descriptions-item v-if="!showThreeUnit" label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="身份证号码">{{ viewData.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
||||
@@ -74,7 +75,8 @@ const INFO = {
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="变更信息" name="changeInfo" v-if="viewData.changeInfos">
|
||||
<el-table :data="viewData.changeInfos" :size="tableSize" @sort-change="pageOrder" ref="table"
|
||||
<!-- 仅过滤展示数据,保留后台三级单位历史变更记录。 -->
|
||||
<el-table :data="(viewData.changeInfos || []).filter(item => item.field !== 'threeUnitId' && item.field !== 'threeUnitName' && item.fieldName !== '三级单位')" :size="tableSize" @sort-change="pageOrder" ref="table"
|
||||
row-key="id" style="width: 100%">
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center"
|
||||
label="序号" type="index" width="80px"></el-table-column>
|
||||
|
||||
+3
-1
@@ -67,7 +67,8 @@ const MEMBER_ALL_CHANGE_INFO = {
|
||||
:key="index" :timestamp="changeData.timestamp">
|
||||
<el-card>
|
||||
<h4>{{ changeData.changeOriginName }}</h4>
|
||||
<el-table :data="changeData.changeInfos" size="mini" ref="table" row-key="id" style="width: 100%">
|
||||
<!-- 仅过滤展示数据,保留后台三级单位历史变更记录。 -->
|
||||
<el-table :data="(changeData.changeInfos || []).filter(item => item.field !== 'threeUnitId' && item.field !== 'threeUnitName' && item.fieldName !== '三级单位')" size="mini" ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column align="center" header-align="center"
|
||||
label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column prop="fieldName" label="变更字段" header-align="center"></el-table-column>
|
||||
@@ -86,6 +87,7 @@ const MEMBER_ALL_CHANGE_INFO = {
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</el-tab-pane>
|
||||
<slot></slot>
|
||||
</el-tabs>
|
||||
`,
|
||||
store,
|
||||
|
||||
+6
-31
@@ -101,7 +101,8 @@ const MEMBER_CHANGE = {
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item v-if="showThreeUnit" label="三级单位">
|
||||
<!-- 屏蔽三级单位编辑,保留回填值,避免提交其他变更时清空历史数据。 -->
|
||||
<el-descriptions-item v-if="false" label="三级单位">
|
||||
<el-form-item prop="threeUnitId">
|
||||
<el-select v-model="formData.threeUnitId" clearable filterable
|
||||
placeholder="请选择三级单位" style="width: 100%">
|
||||
@@ -110,7 +111,7 @@ const MEMBER_CHANGE = {
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item v-else label="所属校区">
|
||||
<el-descriptions-item v-if="!showThreeUnit" label="所属校区">
|
||||
<el-form-item prop="campus">
|
||||
<dict-select style="width: 100%" placeholder="请选择所属校区" v-model="formData.campus"
|
||||
:disabled="allowFields('campus')" code="USER_CAMPUS"></dict-select>
|
||||
@@ -149,7 +150,8 @@ const MEMBER_CHANGE = {
|
||||
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="人员属性">
|
||||
<!-- 屏蔽人员属性展示和编辑,保留回填值以免保存时覆盖历史数据。 -->
|
||||
<el-descriptions-item label="人员属性" v-if="false">
|
||||
<el-form-item prop="userAttribute">
|
||||
<dict-select v-model="formData.userAttribute" code="USER_ATTRIBUTE"
|
||||
style="width: 100%"></dict-select>
|
||||
@@ -214,8 +216,6 @@ const MEMBER_CHANGE = {
|
||||
value-format="yyyy-MM-dd"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item></el-descriptions-item>
|
||||
<el-descriptions-item></el-descriptions-item>
|
||||
<template v-if="formData.loginname == $store.state.user.loginname">
|
||||
<el-descriptions-item label="家庭主要成员" :span="3">
|
||||
<el-form-item prop="families">
|
||||
@@ -392,31 +392,6 @@ const MEMBER_CHANGE = {
|
||||
allowFields(prop) {
|
||||
return !this.allowChangeFields.map(v => v.code).includes(prop)
|
||||
},
|
||||
// 管理页仅查询当前被编辑人员所属二级单位的直属三级单位,避免越级选择其他单位数据。
|
||||
initThreeUnits() {
|
||||
this.threeUnits = []
|
||||
if (!this.showThreeUnit) {
|
||||
return Promise.resolve()
|
||||
}
|
||||
if (!this.formData.unitId) {
|
||||
this.$message.warning("当前人员未配置所属单位,无法查询三级单位")
|
||||
return Promise.resolve()
|
||||
}
|
||||
return this.$axios.post("/platform/sys/unit/child", {pid: this.formData.unitId})
|
||||
.then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.threeUnits = resp.data || []
|
||||
if (this.threeUnits.length === 0) {
|
||||
this.$message.warning("当前所属单位未配置三级单位")
|
||||
}
|
||||
} else {
|
||||
this.$message.error(resp.msg || "三级单位查询失败")
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message.error("三级单位查询失败,请稍后重试")
|
||||
})
|
||||
},
|
||||
doSave(){
|
||||
this.$confirm("保存后可在我的申请里面再次编辑,您确定要保存吗?", "提示", { type: "warning" })
|
||||
.then(() => {
|
||||
@@ -460,7 +435,7 @@ const MEMBER_CHANGE = {
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
}
|
||||
this.normalizeUnitField()
|
||||
this.initThreeUnits()
|
||||
// 三级单位已屏蔽,不再加载选项或提示配置缺失;原值继续随表单回填。
|
||||
},
|
||||
async getUserById(userId){
|
||||
const resp = await $.post("/platform/member/change/apply/getUserByIdForMemberChange", { userId })
|
||||
|
||||
+18
-24
@@ -1,4 +1,4 @@
|
||||
<!--#
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
@@ -22,7 +22,8 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="三级单位">
|
||||
<!-- 三级单位已屏蔽,保留字段结构便于维护。 -->
|
||||
<search-item label="三级单位" v-if="false">
|
||||
<el-select clearable filterable placeholder="请选择三级单位" style="width: 100%"
|
||||
v-model="pageForm.threeUnitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
@@ -50,7 +51,8 @@ layout("/layouts/platform.html"){
|
||||
<!-- <dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"-->
|
||||
<!-- code="AIDFUND_MEMBER_USER_TYPE"></dict-select>-->
|
||||
<!-- </search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
</search-item>
|
||||
@@ -76,7 +78,7 @@ layout("/layouts/platform.html"){
|
||||
设置人员分类
|
||||
</el-button>
|
||||
|
||||
<el-button :disabled="!checkUsers.length" @click="openBatchEditUserAttribute" class="ml5" icon="el-icon-edit"
|
||||
<el-button v-if="false" :disabled="!checkUsers.length" @click="openBatchEditUserAttribute" class="ml5" icon="el-icon-edit"
|
||||
size="small" type="primary">
|
||||
设置人员属性
|
||||
</el-button>
|
||||
@@ -240,6 +242,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-drawer
|
||||
:before-close="handleClose"
|
||||
v-if="false"
|
||||
:visible.sync="batchEditUserAttributeVisible"
|
||||
size="1000px" title="批量设置人员属性">
|
||||
<el-timeline style="margin-right: 40px">
|
||||
@@ -569,7 +572,8 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "personType", label: "人员类型", width: 120, sortable: true },
|
||||
// 临时屏蔽“人员分类”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
// 屏蔽人员属性列,同时从导出可选列中排除。
|
||||
// { prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
@@ -597,13 +601,17 @@ layout("/layouts/platform.html"){
|
||||
"member-all-change": MEMBER_ALL_CHANGE_INFO,
|
||||
},
|
||||
methods: {
|
||||
// 分页和导出共用该参数构建方法,保证人员属性多选值始终按 JSON 数组提交。
|
||||
// 分页和导出共用查询参数,排除已屏蔽的人员属性条件。
|
||||
buildQueryPageForm(source = this.pageForm) {
|
||||
const pageForm = clone(source)
|
||||
pageForm.userAttributes = JSON.stringify(source.userAttributes || [])
|
||||
// 隐藏的三级单位不参与列表查询和导出筛选。
|
||||
pageForm.threeUnitId = ""
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
return pageForm
|
||||
},
|
||||
// 覆盖公共分页方法,使后端按人员属性集合执行查询。
|
||||
// 复用公共分页方法,提交已清理的业务查询参数。
|
||||
pageData(data = null) {
|
||||
return initTableMixins.methods.pageData.call(this, this.buildQueryPageForm(data || this.pageForm))
|
||||
},
|
||||
@@ -695,24 +703,10 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
}
|
||||
},
|
||||
// 所属单位变化时只加载其直属三级单位,避免跨单位筛选。
|
||||
flushThreeUnits(unitId) {
|
||||
// 三级单位已屏蔽,切换所属单位时仅清空旧筛选条件,不再请求子单位。
|
||||
flushThreeUnits() {
|
||||
this.$set(this.pageForm, "threeUnitId", null)
|
||||
this.threeUnits = []
|
||||
if (!unitId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/sys/unit/child", {pid: unitId})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.threeUnits = res.data || []
|
||||
} else {
|
||||
this.$message.error(res.msg || "三级单位查询失败")
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message.error("三级单位查询失败,请稍后重试")
|
||||
})
|
||||
},
|
||||
checkAll() {
|
||||
this.checkedFields = this.tableColumns.map(c => c.prop);
|
||||
|
||||
@@ -75,7 +75,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
{ prop: "changeTypes", label: "变更类型", sortable: true, width: 200 },
|
||||
{ prop: "applyDateTime", label: "申请时间", sortable: true },
|
||||
{ prop: "curTaskName", label: "当前节点"},
|
||||
{ prop: "taskName", label: "当前节点"},
|
||||
{ prop: "instanceState", label: "流程状态"}
|
||||
],
|
||||
changeTypeData: [],
|
||||
|
||||
@@ -42,7 +42,8 @@ layout("/layouts/platform.html"){
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
</search-item>
|
||||
@@ -198,8 +199,10 @@ layout("/layouts/platform.html"){
|
||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
|
||||
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
|
||||
// 人员属性为多选条件,提交前转换为后端可解析的 JSON 数组。
|
||||
pageForm.userAttributes = JSON.stringify(pageForm.userAttributes)
|
||||
// 人员属性已停用,不参与变更记录筛选。
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
|
||||
this.$axios.post(loc() + '/pageData', pageForm)
|
||||
.then(res => {
|
||||
|
||||
@@ -427,8 +427,10 @@
|
||||
|
||||
},
|
||||
getUnionName(val){
|
||||
const data = this.units.find(v => v.id === val)
|
||||
this.$set(this.formData, 'unionName', data ? data.unionname : '')
|
||||
// 切换目标单位时同步名称;ID 类型统一后匹配,避免提交原单位名称。
|
||||
const data = this.units.find(v => String(v.id) === String(val))
|
||||
this.$set(this.formData, 'unitName', data ? data.name : '')
|
||||
this.$set(this.formData, 'unionName', data ? (data.unionName || data.unionname || '') : '')
|
||||
},
|
||||
allowFields(prop) {
|
||||
return !this.allowChangeFields.map(v => v.code).includes(prop)
|
||||
|
||||
@@ -432,8 +432,10 @@ layout("/layouts/platform.html"){
|
||||
|
||||
// 获取表单工会名称
|
||||
getUnionName(val){
|
||||
const data = this.units.find(v => v.id === val)
|
||||
this.$set(this.formData, 'unionName', data ? data.unionName : '')
|
||||
// 切换目标单位时同步名称;ID 类型统一后匹配,避免提交原单位名称。
|
||||
const data = this.units.find(v => String(v.id) === String(val))
|
||||
this.$set(this.formData, 'unitName', data ? data.name : '')
|
||||
this.$set(this.formData, 'unionName', data ? (data.unionName || data.unionname || '') : '')
|
||||
},
|
||||
// 获取表单可编辑的字段信息
|
||||
allowFields(prop) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<el-descriptions-item label="学位">{{ viewData.academicDegree }}</el-descriptions-item>
|
||||
<el-descriptions-item label="党政职务">{{ viewData.position }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="工作单位">{{ viewData.unitname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="工作单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">{{ viewData.unionname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="变更信息" name="changeInfo" v-if="viewData.changeInfos">
|
||||
<el-table :data="viewData.changeInfos" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||
<!-- 仅过滤展示数据,保留后台三级单位历史变更记录。 -->
|
||||
<el-table :data="(viewData.changeInfos || []).filter(item => item.field !== 'threeUnitId' && item.field !== 'threeUnitName' && item.fieldName !== '三级单位')" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center"
|
||||
label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column prop="fieldName" label="变更字段" header-align="center"></el-table-column>
|
||||
|
||||
@@ -73,7 +73,8 @@ const MEMBER_INFO = {
|
||||
<el-descriptions-item label="人员类型">{{ viewData.personType }}</el-descriptions-item>
|
||||
|
||||
<!-- 第 4 行 -->
|
||||
<el-descriptions-item label="人员属性">{{ viewData.userAttribute }}</el-descriptions-item>
|
||||
<!-- 屏蔽人员属性展示和编辑,保留回填值以免保存时覆盖历史数据。 -->
|
||||
<el-descriptions-item label="人员属性" v-if="false">{{ viewData.userAttribute }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职称">{{ viewData.professionalTitle }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职级">{{ viewData.professionalLevel }}</el-descriptions-item>
|
||||
|
||||
@@ -85,6 +86,7 @@ const MEMBER_INFO = {
|
||||
<el-descriptions-item label="行政岗级">{{ viewData.administrativePositionLevel }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人员分类" v-if="false">{{ viewData.aidFundMemberUserType }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<slot></slot>
|
||||
</div>
|
||||
`,
|
||||
store,
|
||||
|
||||
+2
-1
@@ -43,7 +43,8 @@
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
</search-item>
|
||||
|
||||
+4
-2
@@ -37,8 +37,10 @@ const COMMON_QUERY = {
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
// 人员属性多选值按现有数组查询参数口径提交。
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 保持其他业务筛选条件,排除已屏蔽字段。
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
this.$emit('search', pageForm)
|
||||
},
|
||||
handleUnionChange() {
|
||||
|
||||
+2
-1
@@ -102,7 +102,8 @@
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="人员属性">
|
||||
<!-- 屏蔽人员属性展示和编辑,保留回填值以免保存时覆盖历史数据。 -->
|
||||
<el-descriptions-item label="人员属性" v-if="false">
|
||||
<el-form-item prop="userAttribute">
|
||||
<dict-select v-model="formData.userAttribute" code="USER_ATTRIBUTE"
|
||||
style="width: 100%"></dict-select>
|
||||
|
||||
@@ -49,7 +49,8 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="人员分类" v-if="false">
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
</search-item>
|
||||
@@ -133,13 +134,15 @@ layout("/layouts/platform.html"){
|
||||
"member-info": MEMBER_INFO
|
||||
},
|
||||
methods: {
|
||||
// 分页和导出共用该参数构建方法,保证人员属性多选值始终按 JSON 数组提交。
|
||||
// 分页和导出共用查询参数,排除已屏蔽的人员属性条件。
|
||||
buildQueryPageForm() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes || [])
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
return pageForm
|
||||
},
|
||||
// 覆盖公共分页方法,使后端按人员属性集合执行查询。
|
||||
// 复用公共分页方法,提交已清理的业务查询参数。
|
||||
pageData() {
|
||||
return initTableMixins.methods.pageData.call(this, this.buildQueryPageForm())
|
||||
},
|
||||
|
||||
@@ -49,7 +49,8 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="人员分类" v-if="false">
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员属性">
|
||||
<!-- 会员模块屏蔽人员属性查询入口。 -->
|
||||
<search-item label="人员属性" v-if="false">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
</search-item>
|
||||
@@ -141,10 +142,12 @@ layout("/layouts/platform.html"){
|
||||
"member-add-form": MEMBER_ADD_FORM
|
||||
},
|
||||
methods: {
|
||||
// 人员属性为多选条件,分页查询前统一转换为后端可接收的 JSON 数组。
|
||||
// 分页查询前排除已屏蔽的人员属性条件。
|
||||
pageData(data = null) {
|
||||
const pageForm = clone(data || this.pageForm)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes || [])
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
return initTableMixins.methods.pageData.call(this, pageForm)
|
||||
},
|
||||
openAdd() {
|
||||
|
||||
+4
-2
@@ -129,7 +129,7 @@ layout("/layouts/platform.html"){
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员属性:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag class="query-tag-item"
|
||||
@@ -280,7 +280,9 @@ layout("/layouts/platform.html"){
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
this.$axios.post(loc() + "/pageData", pageForm).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.tableData = res.data
|
||||
|
||||
+8
-3
@@ -165,7 +165,8 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||
// 临时屏蔽“人员分类”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
// 屏蔽人员属性列,同时从导出可选列中排除。
|
||||
// { prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
@@ -205,7 +206,9 @@ layout("/layouts/platform.html"){
|
||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => {
|
||||
return {prop: item.prop, label: item.label}
|
||||
@@ -230,7 +233,9 @@ layout("/layouts/platform.html"){
|
||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员属性:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
|
||||
+4
-2
@@ -129,7 +129,7 @@ layout("/layouts/platform.html"){
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员属性:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag class="query-tag-item"
|
||||
@@ -265,7 +265,9 @@ layout("/layouts/platform.html"){
|
||||
// 统计接口按 JSON 字符串接收多选条件,这里把人员分类和人员属性统一成同一提交口径。
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
// 人员属性已屏蔽,查询和导出均不再按该字段过滤。
|
||||
pageForm.userAttribute = ""
|
||||
pageForm.userAttributes = "[]"
|
||||
this.$axios.post(loc() + "/pageData", pageForm).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.tableData = res.data
|
||||
|
||||
+10
-1
@@ -404,6 +404,14 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 缺失或非法日期回填为空,避免生成十二位 Invalid date;不使用当天日期补缺。
|
||||
formatArrivalAtSchoolDate(value) {
|
||||
if (value === null || value === undefined || String(value).trim() === '') {
|
||||
return ''
|
||||
}
|
||||
const date = this.$moment(value, this.$moment.ISO_8601, true)
|
||||
return date.isValid() ? date.format('YYYY-MM-DD') : ''
|
||||
},
|
||||
handlePageBack() {
|
||||
if (window.h5HistoryLayerManager.stack.length) {
|
||||
window.h5HistoryLayerManager.close()
|
||||
@@ -592,6 +600,7 @@ layout("/layouts/platform_h5.html"){
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "formData", res.data)
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.formatArrivalAtSchoolDate(res.data.arrivalAtSchoolDate))
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -649,7 +658,7 @@ layout("/layouts/platform_h5.html"){
|
||||
this.$set(this.formData, "email", email)
|
||||
this.$set(this.formData, "families", families ? families : [])
|
||||
this.$set(this.formData, "personalData", personalData)
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.$moment(arrivalAtSchoolDate).format("YYYY-MM-DD"))
|
||||
this.$set(this.formData, "arrivalAtSchoolDate", this.formatArrivalAtSchoolDate(arrivalAtSchoolDate))
|
||||
|
||||
// 处理校区信息
|
||||
if (campus) {
|
||||
|
||||
@@ -133,6 +133,7 @@ const home = {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 暂停展示我的课堂,保留模板供后续恢复。
|
||||
<div class="classroom-section">
|
||||
<div class="classroom-section__head">
|
||||
<div class="classroom-section__title">我的课堂</div>
|
||||
@@ -192,6 +193,9 @@ const home = {
|
||||
<div v-else-if="!classroomLoading" class="classroom-empty">暂无课程</div>
|
||||
</div>
|
||||
|
||||
-->
|
||||
|
||||
<!-- 暂停展示政策文件,待接入内容后恢复。
|
||||
<div class="policy-panel">
|
||||
<div class="entry-panel__heading">
|
||||
<span class="entry-panel__icon entry-panel__icon--policy"><van-icon name="description"></van-icon></span>
|
||||
@@ -203,6 +207,8 @@ const home = {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
-->
|
||||
|
||||
<div class="act-list" v-if="showLatestActivity">
|
||||
<div class="section-title section-title--hidden">最新活动</div>
|
||||
<template v-if="activityOptions && activityOptions.length > 0">
|
||||
@@ -276,6 +282,7 @@ const home = {
|
||||
className: "feature-card--model",
|
||||
href: "/platform/honor/manage/h5"
|
||||
},
|
||||
/* 暂停展示普惠信息,保留入口配置供后续接入。
|
||||
{
|
||||
name: "普惠信息",
|
||||
desc: "普惠服务信息",
|
||||
@@ -284,6 +291,7 @@ const home = {
|
||||
className: "feature-card--inclusive",
|
||||
href: ""
|
||||
}
|
||||
*/
|
||||
],
|
||||
appLogo: "",
|
||||
appName: "",
|
||||
@@ -613,8 +621,9 @@ const home = {
|
||||
created() {
|
||||
this.listHomeBrand()
|
||||
this.listRecommendApp()
|
||||
this.listClassroomCourses()
|
||||
this.listClassroomRecommendOptions()
|
||||
// 我的课堂暂停展示,同步停用课程及推荐标签请求,恢复模块时再启用。
|
||||
// this.listClassroomCourses()
|
||||
// this.listClassroomRecommendOptions()
|
||||
this.listSpreadHomeContent()
|
||||
if (this.showLatestActivity) {
|
||||
this.listActivity()
|
||||
@@ -900,7 +909,8 @@ const home = {
|
||||
margin: 0 12px 7px;
|
||||
display: grid;
|
||||
grid-template-columns: 1.08fr 1fr;
|
||||
grid-template-rows: 86px 86px 92px;
|
||||
/* 普惠入口暂停展示,取消其第三行占位,避免留下空白。 */
|
||||
grid-template-rows: 86px 86px;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user