This commit is contained in:
Paidax
2025-08-30 12:08:47 +08:00
parent d907d3eb92
commit 623f9375b7
18 changed files with 388 additions and 165 deletions
+4 -4
View File
@@ -76,6 +76,9 @@ public class User {
@Column @Column
private String education; private String education;
@Column
private String academicDegree;
@Column @Column
private String hometown; private String hometown;
@@ -125,10 +128,7 @@ public class User {
private String unioncode; private String unioncode;
@Column @Column
private String campusId; private String campus;
@Column
private String campusName;
@Column @Column
private String activityUnionId; private String activityUnionId;
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil; import cn.hutool.http.HtmlUtil;
import io.v.nutz.base.utils.ManyAddOrRenewUtil; import io.v.nutz.base.utils.ManyAddOrRenewUtil;
import io.v.nutz.base.utils.Roles; import io.v.nutz.base.utils.Roles;
@@ -534,6 +535,13 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) { if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) {
continue; continue;
} }
if (List.of("education", "campus", "academicDegree").contains(fieldName)) {
if (StrUtil.isBlank(sourceMap.getString(fieldName, "")) && StrUtil.isNotBlank(newMap.getString(fieldName, ""))) {
continue;
}
}
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
} }
if (Lang.isEmpty(changeList)) { if (Lang.isEmpty(changeList)) {
@@ -582,6 +590,12 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) { if (List.of("retireDate", "welfareStopDate", "idcard").contains(fieldName)) {
continue; continue;
} }
if (List.of("education", "campus", "academicDegree").contains(fieldName)) {
if (StrUtil.isBlank(sourceMap.getString(fieldName, "")) && StrUtil.isNotBlank(newMap.getString(fieldName, ""))) {
continue;
}
}
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
} }
if (Lang.isEmpty(changeList)) { if (Lang.isEmpty(changeList)) {
@@ -305,6 +305,9 @@ layout("/mobile/platform.html"){
}, },
}, },
created() { created() {
if (window.innerWidth > 768 && location.pathname === '/platform/member/apply/branchUnion/audit/h5') {
window.location.replace('/platform/member/apply/branchUnion/audit');
}
this.initData() this.initData()
} }
}) })
@@ -128,6 +128,15 @@ layout("/mobile/platform.html"){
<member-apply-audit-info ref="memberApplyAuditInfoRef"></member-apply-audit-info> <member-apply-audit-info ref="memberApplyAuditInfoRef"></member-apply-audit-info>
</van-popup> </van-popup>
</div> </div>
<!--<script>-->
<!-- (function() {-->
<!-- if (window.innerWidth > 768 && location.pathname === '/platform/member/apply/mine/h5') {-->
<!-- window.location.replace('/platform/member/apply/mine');-->
<!-- }-->
<!-- })();-->
<!--</script>-->
<script> <script>
<!--#include('../common/memberApplyAuditInfo.js'){}#--> <!--#include('../common/memberApplyAuditInfo.js'){}#-->
@@ -222,6 +231,10 @@ layout("/mobile/platform.html"){
}, },
}, },
created() { created() {
if (window.innerWidth > 768 && location.pathname === '/platform/member/apply/mine/h5') {
window.location.replace('/platform/member/apply/mine');
}
this.initData() this.initData()
} }
}) })
@@ -355,6 +355,9 @@ layout("/mobile/platform.html"){
}, },
}, },
created() { created() {
if (window.innerWidth > 768 && location.pathname === '/platform/member/apply/schoolUnion/audit/h5') {
window.location.replace('/platform/member/apply/schoolUnion/audit');
}
this.initData() this.initData()
} }
}) })
@@ -459,6 +459,10 @@ layout("/mobile/platform.html"){
} }
}, },
async created(){ async created(){
if (window.innerWidth > 768 && location.pathname === '/platform/member/apply/submit/h5') {
window.location.replace('/platform/member/apply/submit');
}
this.init() this.init()
await this.validateApply() await this.validateApply()
} }
@@ -113,6 +113,15 @@
</head> </head>
<body> <body>
<script>
(function() {
if (window.innerWidth > 768 && location.pathname === '/mobile/index') {
window.location.replace('/platform/home');
}
})();
</script>
<script> <script>
const APP_DOMAIN = "${AppDomain!}" const APP_DOMAIN = "${AppDomain!}"
const FILE_DOMAIN = "${AppFileDomain!}" const FILE_DOMAIN = "${AppFileDomain!}"
@@ -42,7 +42,7 @@ layout("/layouts/platform.html"){
<el-tag type="warning" v-else>暂无</el-tag> <el-tag type="warning" v-else>暂无</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="220"> <el-table-column label="操作" width="220" fixed="right">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button> <el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[50].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">审核</el-button> <el-button v-if="[50].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
@@ -203,6 +203,9 @@ layout("/layouts/platform.html"){
}, },
}, },
created(){ created(){
if (window.innerWidth < 768 && location.pathname === '/platform/member/apply/branchUnion/audit') {
window.location.replace('/platform/member/apply/branchUnion/audit/h5');
}
this.pageData() this.pageData()
} }
}) })
@@ -32,26 +32,28 @@ const MEMBER_APPLY_AUDIT_INFO = {
<!-- <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>--> <!-- <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>-->
<!-- <el-descriptions-item></el-descriptions-item>--> <!-- <el-descriptions-item></el-descriptions-item>-->
<el-descriptions-item label="家庭主要成员" :span="3"> <template v-if="viewData.loginname === storageUser.loginname">
<el-table v-if="viewData.families&&viewData.families.length" <el-descriptions-item label="家庭主要成员" :span="3">
:data="viewData.families" size="mini" border <el-table v-if="viewData.families&&viewData.families.length"
:header-cell-style="{background:'#eff3f6'}" :data="viewData.families" size="mini" border
style="width: 100%"> :header-cell-style="{background:'#eff3f6'}"
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center"> style="width: 100%">
</el-table-column> <el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
<el-table-column prop="name" label="姓名" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="name" label="姓名" align="center" header-align="center">
<el-table-column prop="unit" label="单位" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="unit" label="单位" align="center" header-align="center">
<el-table-column prop="remark" label="备注" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="remark" label="备注" align="center" header-align="center">
</el-table> </el-table-column>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty> </el-table>
</el-descriptions-item> <el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
<el-descriptions-item label="个人简况" :span="3"> </el-descriptions-item>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div> <el-descriptions-item label="个人简况" :span="3">
<el-tag type="warning" v-else>暂无</el-tag> <div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
</el-descriptions-item> <el-tag type="warning" v-else>暂无</el-tag>
</el-descriptions-item>
</template>
<el-descriptions-item label="签字信息" :span="3"> <el-descriptions-item label="签字信息" :span="3">
<el-image v-if="viewData.sign" <el-image v-if="viewData.sign"
@@ -96,7 +98,8 @@ const MEMBER_APPLY_AUDIT_INFO = {
activeName: "basicInfo", activeName: "basicInfo",
viewData: { viewData: {
schoolAudit: {}, schoolAudit: {},
branchAudit: {} branchAudit: {},
storageUser: {}
} }
} }
}, },
@@ -113,5 +116,8 @@ const MEMBER_APPLY_AUDIT_INFO = {
} }
} }
} }
},
created() {
this.storageUser = JSON.parse(window.sessionStorage.getItem('user'))
} }
} }
@@ -32,7 +32,7 @@ layout("/layouts/platform.html"){
<el-tag type="warning" v-else>暂无</el-tag> <el-tag type="warning" v-else>暂无</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="220"> <el-table-column label="操作" width="220" fixed="right">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button> <el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[10, 30, 60].includes(row.applyStateId) && row.userId == user.id" <el-button v-if="[10, 30, 60].includes(row.applyStateId) && row.userId == user.id"
@@ -125,6 +125,9 @@ layout("/layouts/platform.html"){
}, },
}, },
created(){ created(){
if (window.innerWidth < 768 && location.pathname === '/platform/member/apply/mine') {
window.location.replace('/platform/member/apply/mine/h5');
}
this.user = JSON.parse(window.sessionStorage.getItem('user')) this.user = JSON.parse(window.sessionStorage.getItem('user'))
this.pageData() this.pageData()
} }
@@ -42,7 +42,7 @@ layout("/layouts/platform.html"){
<el-tag type="warning" v-else>暂无</el-tag> <el-tag type="warning" v-else>暂无</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="220"> <el-table-column label="操作" width="220" fixed="right">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button> <el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[20, 70].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary"> <el-button v-if="[20, 70].includes(row.applyStateId)" @click="openAudit(row)" size="mini" type="primary">
@@ -241,6 +241,9 @@ layout("/layouts/platform.html"){
}, },
}, },
async created(){ async created(){
if (window.innerWidth < 768 && location.pathname === '/platform/member/apply/schoolUnion/audit') {
window.location.replace('/platform/member/apply/schoolUnion/audit/h5');
}
this.pageData() this.pageData()
this.unions = await getUnionList() this.unions = await getUnionList()
} }
@@ -428,6 +428,9 @@ layout("/layouts/platform.html"){
} }
}, },
async created(){ async created(){
if (window.innerWidth < 768 && location.pathname === '/platform/member/apply/submit') {
window.location.replace('/platform/member/apply/submit/h5');
}
this.init() this.init()
this.units = await getUnits() this.units = await getUnits()
await this.validateApply() await this.validateApply()
@@ -37,27 +37,30 @@ const MEMBER_ALL_CHANGE_INFO = {
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item> <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length" <template v-if="viewData.loginname === storageUser.loginname">
:data="viewData.families" size="mini" border <el-descriptions-item label="家庭主要成员" :span="3">
:header-cell-style="{background:'#eff3f6'}" <el-table v-if="viewData.families&&viewData.families.length"
style="width: 100%"> :data="viewData.families" size="mini" border
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center"> :header-cell-style="{background:'#eff3f6'}"
</el-table-column> style="width: 100%">
<el-table-column prop="name" label="姓名" align="center" header-align="center"> <el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
</el-table-column> </el-table-column>
<el-table-column prop="unit" label="单位" align="center" header-align="center"> <el-table-column prop="name" label="姓名" align="center" header-align="center">
</el-table-column> </el-table-column>
<el-table-column prop="remark" label="备注" align="center" header-align="center"> <el-table-column prop="unit" label="单位" align="center" header-align="center">
</el-table-column> </el-table-column>
</el-table> <el-table-column prop="remark" label="备注" align="center" header-align="center">
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty> </el-table-column>
</el-descriptions-item> </el-table>
<el-descriptions-item label="个人简况" :span="3"> <el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
<template slot="label">个人简况</template> </el-descriptions-item>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div> <el-descriptions-item label="个人简况" :span="3">
<span v-else>无数据</span> <template slot="label">个人简况</template>
</el-descriptions-item> <div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
<span v-else>无数据</span>
</el-descriptions-item>
</template>
</el-descriptions> </el-descriptions>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="历史变更记录" name="changeInfo" v-if="viewData.allChangeInfo"> <el-tab-pane label="历史变更记录" name="changeInfo" v-if="viewData.allChangeInfo">
@@ -91,7 +94,9 @@ const MEMBER_ALL_CHANGE_INFO = {
data(){ data(){
return{ return{
viewData: {}, viewData: {},
activeName: "basicInfo" activeName: "basicInfo",
storageUser: {}
} }
}, },
methods:{ methods:{
@@ -105,5 +110,8 @@ const MEMBER_ALL_CHANGE_INFO = {
} }
}) })
} }
},
created() {
this.storageUser = JSON.parse(window.sessionStorage.getItem('user'))
} }
} }
@@ -239,58 +239,60 @@ const MEMBER_CHANGE = {
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
</template> </template>
</template> </template>
<el-descriptions-item label="家庭主要成员" :span="3"> <template v-if="formData.loginname === storageUser.loginname">
<el-form-item prop="families"> <el-descriptions-item label="家庭主要成员" :span="3">
<el-table :data="formData.families" border size="small"> <el-form-item prop="families">
<el-table-column label="关系" prop="relation"> <el-table :data="formData.families" border size="small">
<template slot-scope="{row}"> <el-table-column label="关系" prop="relation">
<el-input v-model="row.relation" maxlength="50" <template slot-scope="{row}">
placeholder="请输入与本人关系"></el-input> <el-input v-model="row.relation" maxlength="50"
</template> placeholder="请输入与本人关系"></el-input>
</el-table-column> </template>
<el-table-column label="姓名" prop="name"> </el-table-column>
<template slot-scope="{row}"> <el-table-column label="姓名" prop="name">
<el-input v-model="row.name" maxlength="50" placeholder="请输入姓名"></el-input> <template slot-scope="{row}">
</template> <el-input v-model="row.name" maxlength="50" placeholder="请输入姓名"></el-input>
</el-table-column> </template>
<el-table-column label="工作单位" prop="unit"> </el-table-column>
<template slot-scope="{row}"> <el-table-column label="工作单位" prop="unit">
<el-input v-model="row.unit" maxlength="100" <template slot-scope="{row}">
placeholder="请输入工作单位"></el-input> <el-input v-model="row.unit" maxlength="100"
</template> placeholder="请输入工作单位"></el-input>
</el-table-column> </template>
<el-table-column label="备注" prop="remark"> </el-table-column>
<template slot-scope="{row}"> <el-table-column label="备注" prop="remark">
<el-input v-model="row.remark" maxlength="100" placeholder="请输入备注"></el-input> <template slot-scope="{row}">
</template> <el-input v-model="row.remark" maxlength="100" placeholder="请输入备注"></el-input>
</el-table-column> </template>
<el-table-column width="100px"> </el-table-column>
<template slot="header" slot-scope="scope"> <el-table-column width="100px">
<el-button type="primary" size="mini" :disabled="allowFields('families')" <template slot="header" slot-scope="scope">
@click="formData.families.push({})">添加 <el-button type="primary" size="mini" :disabled="allowFields('families')"
</el-button> @click="formData.families.push({})">添加
</template> </el-button>
<template slot-scope="scope"> </template>
<el-button <template slot-scope="scope">
type="danger" <el-button
icon="el-icon-delete" type="danger"
size="mini" icon="el-icon-delete"
:disabled="formData.families.length===0 || allowFields('families')" size="mini"
@click="formData.families.splice(scope.$index,1)" :disabled="formData.families.length===0 || allowFields('families')"
></el-button> @click="formData.families.splice(scope.$index,1)"
</template> ></el-button>
</el-table-column> </template>
</el-table> </el-table-column>
</el-form-item> </el-table>
</el-descriptions-item> </el-form-item>
</el-descriptions-item>
<el-descriptions-item label="个人简历" :span="3"> <el-descriptions-item label="个人简历" :span="3">
<el-form-item prop="vita"> <el-form-item prop="vita">
<text-editor v-model="formData.vita"></text-editor> <text-editor v-model="formData.vita"></text-editor>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
</template>
</el-descriptions> </el-descriptions>
</el-form> </el-form>
<el-row justify="end" type="flex" class="mt10"> <el-row justify="end" type="flex" class="mt10">
@@ -382,7 +384,9 @@ const MEMBER_CHANGE = {
] ]
}, },
welfareProjectList: [] welfareProjectList: [],
storageUser: {}
} }
}, },
methods: { methods: {
@@ -511,7 +515,8 @@ const MEMBER_CHANGE = {
} }
} }
}, },
created(){ created() {
this.init() this.init()
this.storageUser = JSON.parse(window.sessionStorage.getItem('user'))
} }
} }
@@ -38,27 +38,30 @@ const MEMBER_CHANGE_AUDIT_INFO = {
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item> <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length" <template v-if="viewData.loginname === storageUser.loginname">
:data="viewData.families" size="mini" border <el-descriptions-item label="家庭主要成员" :span="3">
:header-cell-style="{background:'#eff3f6'}" <el-table v-if="viewData.families&&viewData.families.length"
style="width: 100%"> :data="viewData.families" size="mini" border
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center"> :header-cell-style="{background:'#eff3f6'}"
</el-table-column> style="width: 100%">
<el-table-column prop="name" label="姓名" align="center" header-align="center"> <el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
</el-table-column> </el-table-column>
<el-table-column prop="unit" label="单位" align="center" header-align="center"> <el-table-column prop="name" label="姓名" align="center" header-align="center">
</el-table-column> </el-table-column>
<el-table-column prop="remark" label="备注" align="center" header-align="center"> <el-table-column prop="unit" label="单位" align="center" header-align="center">
</el-table-column> </el-table-column>
</el-table> <el-table-column prop="remark" label="备注" align="center" header-align="center">
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty> </el-table-column>
</el-descriptions-item> </el-table>
<el-descriptions-item label="个人简况" :span="3"> <el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
<template slot="label">个人简况</template> </el-descriptions-item>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div> <el-descriptions-item label="个人简况" :span="3">
<span v-else>无数据</span> <template slot="label">个人简况</template>
</el-descriptions-item> <div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
<span v-else>无数据</span>
</el-descriptions-item>
</template>
</el-descriptions> </el-descriptions>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="变更信息" name="changeInfo" v-if="viewData.changeInfos"> <el-tab-pane label="变更信息" name="changeInfo" v-if="viewData.changeInfos">
@@ -108,7 +111,9 @@ const MEMBER_CHANGE_AUDIT_INFO = {
viewData: { viewData: {
changeInfos: [], changeInfos: [],
schoolAudit: {}, schoolAudit: {},
branchAudit: {} branchAudit: {},
storageUser: {}
} }
} }
}, },
@@ -119,5 +124,8 @@ const MEMBER_CHANGE_AUDIT_INFO = {
this.viewData = resp.data this.viewData = resp.data
} }
} }
},
created() {
this.storageUser = JSON.parse(window.sessionStorage.getItem('user'))
} }
} }
@@ -38,22 +38,24 @@ const MEMBER_INFO = {
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item> <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3"> <template v-if="viewData.loginname === storageUser.loginname">
<el-table v-if="viewData.families&&viewData.families.length" <el-descriptions-item label="家庭主要成员" :span="3">
:data="viewData.families" size="mini" border <el-table v-if="viewData.families&&viewData.families.length"
:header-cell-style="{background:'#eff3f6'}" :data="viewData.families" size="mini" border
style="width: 100%"> :header-cell-style="{background:'#eff3f6'}"
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center"> style="width: 100%">
</el-table-column> <el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
<el-table-column prop="name" label="姓名" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="name" label="姓名" align="center" header-align="center">
<el-table-column prop="unit" label="单位" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="unit" label="单位" align="center" header-align="center">
<el-table-column prop="remark" label="备注" align="center" header-align="center"> </el-table-column>
</el-table-column> <el-table-column prop="remark" label="备注" align="center" header-align="center">
</el-table> </el-table-column>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty> </el-table>
</el-descriptions-item> <el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
</template>
<el-descriptions-item label="个人简况" :span="3"> <el-descriptions-item label="个人简况" :span="3">
<template slot="label">个人简况</template> <template slot="label">个人简况</template>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div> <div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
@@ -64,7 +66,8 @@ const MEMBER_INFO = {
`, `,
data() { data() {
return { return {
viewData: {} viewData: {},
storageUser: {}
} }
}, },
methods: { methods: {
@@ -76,5 +79,8 @@ const MEMBER_INFO = {
this.$message.warning(resp.msg) this.$message.warning(resp.msg)
} }
} }
},
created() {
this.storageUser = JSON.parse(window.sessionStorage.getItem('user'))
} }
} }
@@ -464,6 +464,9 @@ const USER_CHANGE_INFO = {
this.$message.warning('请在数据更新后信息中设置该教工的【福利享受截止日期】') this.$message.warning('请在数据更新后信息中设置该教工的【福利享受截止日期】')
return return
} }
if (this.formData.member === 1) {
this.$set(this.formData, "welfareMember", 1)
}
this.$confirm("提交后会改变人员基础数据,您确定要提交吗?", "提示", { type: "warning" }) this.$confirm("提交后会改变人员基础数据,您确定要提交吗?", "提示", { type: "warning" })
.then(() => { .then(() => {
this.$emit('do-submit', this.formData) this.$emit('do-submit', this.formData)
+153 -24
View File
@@ -5,35 +5,47 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.base.service.BaseService; import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.Roles; import io.v.nutz.base.utils.Roles;
import io.v.nutz.sys.models.Sys_unit; import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.models.Sys_user_role;
import io.v.nutz.sys.services.SysLocalProcessService;
import io.v.nutz.web.commons.base.Globals;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
import io.v.nutz.zhgh.data.model.UserSource; import io.v.nutz.zhgh.data.model.UserSource;
import io.v.nutz.zhgh.fitnessWalk.model.FitnessWalkActivity; import io.v.nutz.zhgh.fitnessWalk.model.FitnessWalkActivity;
import io.v.nutz.zhgh.fitnessWalk.model.FitnessWalkAwardUser;
import io.v.nutz.zhgh.fitnessWalk.model.FitnessWalkStep; import io.v.nutz.zhgh.fitnessWalk.model.FitnessWalkStep;
import io.v.nutz.zhgh.fitnessWalk.service.FitnessWalkCommonService; import io.v.nutz.zhgh.fitnessWalk.service.FitnessWalkCommonService;
import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund; import io.v.nutz.zhgh.medicalMutualAidFund.model.MedicalMutualAidFund;
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeConfig; import io.v.nutz.zhgh.proposal.constants.ProposalToDoHandler;
import io.v.nutz.zhgh.welfare.model.WelfareCourierNumber; import io.v.nutz.zhgh.proposal.models.ProposalReply;
import io.v.nutz.zhgh.proposal.services.ProposalCommonService;
import io.v.nutz.zhgh.welfare.model.WelfareList; import io.v.nutz.zhgh.welfare.model.WelfareList;
import io.v.nutz.zhgh.welfare.model.WelfareUserSelection;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.shiro.crypto.hash.Sha256Hash; import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.util.ByteSource; import org.apache.shiro.util.ByteSource;
import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.boot.NbApp;
import org.nutz.boot.starter.logback.exts.loglevel.LoglevelProperty;
import org.nutz.boot.test.junit4.NbJUnit4Runner; import org.nutz.boot.test.junit4.NbJUnit4Runner;
import org.nutz.dao.Chain; import org.nutz.dao.Chain;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos; import org.nutz.dao.util.Daos;
import org.nutz.integration.jedis.RedisService;
import org.nutz.ioc.aop.Aop; import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
@@ -42,14 +54,19 @@ import org.nutz.lang.Lang;
import org.nutz.lang.random.R; import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
import java.io.File; import java.io.*;
import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@IocBean @IocBean
@@ -481,29 +498,141 @@ public class JugTest {
@Test @Test
public void testThreeUnitId(){ public void testThreeUnitId(){
List<Sys_unit> list = dao.query(Sys_unit.class, Cnd.where("unionid", "=", "4c1e4f43474f4861a3abcd9ed517d692"));
List<Sys_unit> insertList = list.stream().map(v -> { String content = "叮~2025端午慰问满意度调查邀您参与";
Sys_unit unit = new Sys_unit(); String link = Globals.AppDomain + "/platform/h5/welfare/evaluate?id=%s&type=welfare".formatted("dbdc7ccf818d4318ae2094e62feb594d");
unit.setId(v.getId() + "SJDW"); // msgApi.sendMsg(List.of("DingTalk"), List.of("2020000035", "2020000098"), 2, "满意度调查", content, "", link);
unit.setParentId(v.getId());
unit.setName(v.getName());
unit.setUnitcode(v.getId() + "SJDW"); //// String inputFilePath = "F:\\mini-2025-07-08-5368.log";
unit.setUnitlevel(3); //// String outputFilePath = "F:\\extracted_inserts.log";
return unit; //
}).toList(); // String inputFilePath = "F:\\extracted_inserts.log";
dao.insert(insertList); // String outputFilePath = "F:\\formatted_inserts.sql";
//
// try {
// extractInsertStatements(inputFilePath, outputFilePath);
// System.out.println("提取完成,结果已保存到: " + outputFilePath);
// } catch (IOException e) {
// System.err.println("处理文件时出错: " + e.getMessage());
// e.printStackTrace();
// }
} }
public static void extractInsertStatements(String inputPath, String outputPath) throws IOException {
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(inputPath), StandardCharsets.UTF_8));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(outputPath), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
// 跳过空行
if (line.trim().isEmpty()) {
continue;
}
// 去除开头和结尾的引号
String formattedLine = line.replaceAll("^\"|\"$", "");
// 在行尾添加分号(如果还没有)
if (!formattedLine.trim().endsWith(";")) {
formattedLine += ";";
}
writer.write(formattedLine);
writer.newLine();
}
}
}
private static void processContent(StringBuilder content, Pattern pattern, BufferedWriter writer) throws IOException {
Matcher matcher = pattern.matcher(content.toString());
while (matcher.find()) {
String insertStatement = matcher.group();
writer.write(insertStatement);
writer.newLine();
writer.newLine(); // 每个INSERT语句之间空一行
}
}
@Inject
private MsgApi msgApi;
@Inject
private SysLocalProcessService localProcessService;
@Inject
private ProposalCommonService proposalCommonService;
@Test @Test
public void t10(){ public void t10(){
SourceChangeConfig config = dao.fetch(SourceChangeConfig.class, Cnd.NEW()); // List<String> list = List.of(
List<SourceChangeConfig.MemberSift> memberSiftList = config.getMemberSiftList(); // "9c166b8dc09343079b6af2e44455266c",
for (SourceChangeConfig.MemberSift sift : memberSiftList) { // "a7c47c306f0c41b38fd958a559888ccc",
Object siftValue = sift.getSiftValue(); // "17c751f77c33433eba9d1c19f03b553a",
System.out.println(siftValue); // "8c5391a82290470ca29ef7b5101b6100",
List<String> list = (List<String>) siftValue; // "8a338dbdab484a33af7d485ba840bb6e",
System.out.println(list); // "18ac213eddb44ac1af0178f78147f39d",
} // "c0b726dfc1de4773a91e65bf986f4dbc",
// "f87d24d2e99e4557a18e439cc0ff8fc8",
// "badd9c0bbe9a40feb7b00b80bb3aa770",
// "73543dedd0884d2ea536622c8343b4ee",
// "3b0607a9365243089d749ddde6d4654f",
// "8cd4d0bd05dd42aaaefca14dcc82e25f",
// "7921f4d9dad74ea99d0d4635abd665a3",
// "ff29bb6caf464386a3895a497fe000ad",
// "37b0d8ee75714a6cb6392ca6cdd5eba6",
// "26e1d548ec3b4182a7eda6cf3a45f34e",
// "53b4df702f62453d879b166dcfe2e4e5",
// "35bbb8a98cb2472d8ff5ce0644d4f68a",
// "af4e738d4b7049b1b535e682bfa5b91a",
// "877e03535b3f4f17b30eb66e76c7e2b2",
// "79f5511b9c8245e9b15d2939732c1075",
// "aa06d6a1dc9147c299323537f1ce77f7",
// "6e6af7d696d3457293673e530b8f0b33",
// "639a95df53dd4b3c934b8e15083f1ac5",
// "2fb25ba1a5734953a9b4e565b29284dc"
// );
//
//
// list.forEach(v -> {
// localProcessService.updateProcessNodeName(
// "proposal_info@" + v,
// "承办单位办理"
// );
//
// //查询主办、协办答复配置
// Sql sql = Sqls.fetchRecord(Sqls.create("SELECT t1.* FROM `proposal_config` t INNER JOIN proposal_reply_config t1 on t1.id = t.slaveUnitConfigId").toString());
// dao.execute(sql);
// Record slaveReplyConfig = (Record) sql.getResult();
// //协办需要答复吗
// boolean slaveNeedReply = slaveReplyConfig.getInt("isNeedReply") == 1;
//
// //查询最大一次的replyNumber
// int maxReplyNumber = dao.func(ProposalReply.class, "max", "replyNumber", Cnd.where("proposalId", "=", v));
//
// List<ProposalReply> replies = dao.query(ProposalReply.class, Cnd.where("proposalId", "=", v).and("replyNumber", "=", maxReplyNumber).and("undertakeType", "in", slaveNeedReply ? Lang.list(1, 2) : Lang.list(1)));
// for (ProposalReply reply : replies) {
// localProcessService.createTask("proposal_info@" + v, "proposal_reply@" + reply.getId(), "承办单位办理", "qcmlivs3oggfmrl0rnoqlcce8p", proposalCommonService.getUnderTakeLeader(reply.getReplyUnitId()), "/platform/proposal/transact/reply", "/platform/proposal/transact/reply", null, null);
// }
// });
// List<Sys_user> userList = dao.query(Sys_user.class, Cnd.where("loginname", "in", List.of("2005000019", "2010000010", "1992000003", "1998000001")));
//
// String linkUrl = "https://zhgh.hmc.edu.cn/mobile/proposal/seconded";
//
// for (Sys_user user : userList) {
// String template = "{}代表,您好,{}代表的提案《{}》邀请您作为附议人,请您点击此消息或登录“智慧工会”系统进行附议,感谢您对教代会提案工作的大力支持!";
// String content = StrUtil.format(template, user.getUsername(), "王黎芳", "关于进一步提升我校教职工归属感的若干举措建议");
// System.out.println(content);
//// msgApi.sendMsg(List.of("DingTalk"), user.getLoginname(), 2, "提案附议邀请", content, "", linkUrl);
// }
} }
} }