server_commit

This commit is contained in:
zhengziru
2025-09-18 20:56:54 +08:00
parent 7073e87dec
commit d650fd9231
13 changed files with 268 additions and 175 deletions
@@ -511,4 +511,29 @@ public class SysUserController {
resultMap.put("isShow", count > 0);
return Result.success(resultMap);
}
@At
@Ok("json")
@RequiresAuthentication
public Object doEditUser(Sys_user user){
try {
if(Strings.isBlank(user.getCardNum())) return Result.error("请填写会员服务卡卡号!");
int update = sysUserService.update(Chain.make("cardNum", user.getCardNum()), Cnd.where("id", "=", ShiroUtil.getUserId()));
return update>0 ? Result.success() : Result.error();
} catch (Exception e) {
return Result.error();
}
}
@At
@Ok("json")
@ViReturn
@RequiresAuthentication
public Object judgeIdCard(){
return sysUserService.count(Cnd.where("id","=", ShiroUtil.getUserId())
.and("member","=",1).and("userState","=","在职")
.and(Cnd.exps("cardNum","is",null).or("cardNum","=","")));
}
}
@@ -308,7 +308,7 @@ public class ActivityBasicScopeController {
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND TABLE_SCHEMA = 'zhgh_hmc'
AND TABLE_SCHEMA = 'zhgh_ecgtu'
""");
List<NutMap> sqlDataList = activityBasicScopeService.listMap(sql);
// sqlDataList.forEach(v -> v.put("DATA_TYPE", new String((byte[]) v.get("DATA_TYPE"))));
@@ -302,7 +302,7 @@ public class MemberCommonController {
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND TABLE_SCHEMA = 'zhgh_hmc'
AND TABLE_SCHEMA = 'zhgh_ecgtu'
""");
List<NutMap> userTableColumnInfos = sysUserService.listMap(userColumnSql);
@@ -87,6 +87,12 @@ public class MemberChangeRecord {
@Size(max = 30)
private String idCard;
@Column
@Comment("会员服务卡卡号")
@ColDefine(type = ColType.VARCHAR, width = 30)
@Size(max = 30)
private String cardNum;
@Column
@Comment("民族")
@ColDefine(type = ColType.VARCHAR, width = 20)
+57 -57
View File
@@ -7,104 +7,104 @@
<title>${AppName!}</title>
<meta charset="UTF-8">
<!-- import CSS -->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/myframe/css/myframe.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/main.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/elmain.css?v=1.0.0">
<link rel="stylesheet" href="${base!}/assets/platform/css/panel.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/myframe/css/myframe.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/main.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/elmain.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/panel.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wangeditor/wangEditor.css">
<link rel="stylesheet" type="text/css" href="${base!}/assets/platform/plugins/viewer/viewer.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wp-upload-vue/css/wpupload.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/vivify.min.css">
<link href="${base!}/assets/platform/plugins/vue-cron/vcrontab.css" rel="stylesheet"/>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wangeditor/wangEditor.css?v=1.0.1">
<link rel="stylesheet" type="text/css" href="${base!}/assets/platform/plugins/viewer/viewer.min.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wp-upload-vue/css/wpupload.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/vivify.min.css?v=1.0.1">
<link href="${base!}/assets/platform/plugins/vue-cron/vcrontab.css?v=1.0.1" rel="stylesheet"/>
<script src="${base!}/assets/platform/plugins/vue-cron/vcrontab.umd.min.js"></script>
<script src="${base!}/assets/platform/plugins/vue-cron/vcrontab.umd.min.js?v=1.0.1"></script>
<!-- import Vue before Element -->
<script src="${base!}/assets/platform/plugins/vue/vue.min.js"></script>
<script src="${base!}/assets/platform/plugins/vue/vue.min.js?v=1.0.1"></script>
<!-- vue-count-to -->
<script src="${base!}/assets/platform/plugins/vue-count-to/vue-count-to.min.js"></script>
<script src="${base!}/assets/platform/plugins/vue-count-to/vue-count-to.min.js?v=1.0.1"></script>
<!-- wpupload -->
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/js/axios.min.js"></script>
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.js"></script>
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/js/wpupload.js"></script>
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/js/axios.min.js?v=1.0.1"></script>
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/font/iconfont.js?v=1.0.1"></script>
<script type="text/javascript" src="${base!}/assets/platform/plugins/wp-upload-vue/js/wpupload.js?v=1.0.1"></script>
<!-- import JavaScript -->
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
<script src="${base!}/assets/platform/plugins/element-ui/lib/i18n/${lang,escape}.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery-1.11.1.min.js"></script>
<script src="${base!}/assets/platform/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/element-ui/lib/i18n/${lang,escape}.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery-1.11.1.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/slimscroll/jquery.slimscroll.min.js?v=1.0.1"></script>
<!--后面就改这一段吧-->
<script src="${base!}/assets/platform/plugins/dd3s/dd3s.js"></script>
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<!--g2-->
<script src="/assets/platform/plugins/g2/g2.min.js?v=4.1.9"></script>
<script src="/assets/platform/plugins/g2/data-set.js"></script>
<script src="/assets/platform/plugins/g2/g2plot.js?v=1.0.0"></script>
<script src="/assets/platform/plugins/g2/g2.min.js?v=4.1.10"></script>
<script src="/assets/platform/plugins/g2/data-set.js?v=1.0.1"></script>
<script src="/assets/platform/plugins/g2/g2plot.js?v=1.0.1"></script>
<!--echars-->
<script src="${base!}/assets/platform/plugins/echarts/echarts.min.js"></script>
<script src="${base!}/assets/platform/plugins/echarts/infographic.js"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/westeros.js"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/walden.js"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/macarons.js"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/echarts.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/echarts/infographic.js?v=1.0.1"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/westeros.js?v=1.0.1"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/walden.js?v=1.0.1"></script><!--主题-->
<script src="${base!}/assets/platform/plugins/echarts/macarons.js?v=1.0.1"></script><!--主题-->
<!-- <script src="https://cdn.staticfile.org/echarts/5.2.2/echarts.js"></script>-->
<!-- <script src="https://cdn.staticfile.org/echarts/5.2.2/i18n/langZH.js"></script>-->
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.3"></script>
<script src="${base!}/assets/platform/module/mixins/styleMixin.js"></script>
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.5"></script>
<script src="${base!}/assets/platform/js/component.js?v=1.0.2"></script>
<script src="${base!}/assets/platform/js/v.js?v=1.0.5"></script>
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.4"></script>
<script src="${base!}/assets/platform/module/mixins/styleMixin.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.6"></script>
<script src="${base!}/assets/platform/js/component.js?v=1.0.3"></script>
<script src="${base!}/assets/platform/js/v.js?v=1.0.6"></script>
<script src="${base!}/assets/platform/plugins/wangeditor/wangEditor.js"></script>
<!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/wangeditor@4.6.15/dist/wangEditor.min.js"></script>-->
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=1.4.15&key=6ab3452804ba35050880b5e047436853&plugin=AMap.PolyEditor,AMap.PlaceSearch"></script>
<!--viewer-->
<script src="${base!}/assets/platform/plugins/viewer/viewer.min.js"></script>
<script src="${base!}/assets/platform/plugins/viewer/jquery-viewer.min.js"></script>
<script src="${base!}/assets/platform/plugins/vue-loader/httpVueLoader.js"></script>
<script src="${base!}/assets/platform/plugins/vue-qrcode/vue-qrcode.min.js"></script>
<script src="${base!}/assets/platform/plugins/viewer/viewer.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/viewer/jquery-viewer.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/vue-loader/httpVueLoader.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/vue-qrcode/vue-qrcode.min.js?v=1.0.1"></script>
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script>
<script src="${base!}/assets/platform/plugins/myframe/js/myframe.js"></script>
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/myframe/js/myframe.js?v=1.0.1"></script>
<!-- Array数组增加findIndex等方法,TreeTable用得到,兼容IE8 -->
<script src="${base!}/assets/platform/plugins/polyfill/polyfill.js"></script>
<script src="${base!}/assets/platform/plugins/polyfill/polyfill.js?v=1.0.1"></script>
<!-- 时间日期处理工具类 -->
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/moment/moment.min.js?v=1.0.1"></script>
<!-- 浏览器通知 -->
<script src="${base!}/assets/platform/plugins/push/push.min.js"></script>
<script src="${base!}/assets/platform/js/main.js?v=1.0.0"></script>
<script src="${base!}/assets/platform/js/offscreen.js"></script>
<script src="${base!}/assets/platform/plugins/push/push.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/main.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/offscreen.js?v=1.0.1"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/vue-echarts@4.0.2"></script>-->
<script src="${base!}/assets/platform/plugins/vue-charts/echartTheme.js"></script>
<script src="${base!}/assets/platform/plugins/vue-charts/echartTheme.js?v=1.0.1"></script>
<!--拖拽js-->
<script src="${base!}/assets/platform/js/directive/v-sticky.js"></script>
<script src="${base!}/assets/platform/js/directive/v-sticky.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/jquery.qrcode.min.js"></script>
<script src="${base!}/assets/platform/js/jquery.qrcode.min.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/jr-qrcode.js"></script>
<script src="${base!}/assets/platform/js/jr-qrcode.js?v=1.0.1"></script>
<!--字典混入-->
<script src="${base!}/components/plugins/sysDict/DictData.js"></script>
<script src="${base!}/components/plugins/sysDict/DictData.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/chengSh.js"></script>
<script src="${base!}/assets/platform/js/util/commonUtil.js"></script>
<script src="${base!}/assets/platform/plugins/xlsx/xlsx.full.min.js"></script>
<script src="${base!}/assets/platform/js/chengSh.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/js/util/commonUtil.js?v=1.0.1"></script>
<script src="${base!}/assets/platform/plugins/xlsx/xlsx.full.min.js?v=1.0.1"></script>
<!-- <script src="${base!}/assets/platform/js/chengSh.js"></script>-->
@@ -29,10 +29,10 @@ const MEMBER_APPLY_AUDIT_INFO = {
<el-descriptions-item></el-descriptions-item>
<!-- <el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>-->
<!-- <el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>-->
<!-- <el-descriptions-item label="会员服务卡号">{{ viewData.cardNum }}</el-descriptions-item>-->
<!-- <el-descriptions-item></el-descriptions-item>-->
<el-descriptions-item label="家庭主要成员" :span="3">
<!--<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length"
:data="viewData.families" size="mini" border
:header-cell-style="{background:'#eff3f6'}"
@@ -47,7 +47,7 @@ const MEMBER_APPLY_AUDIT_INFO = {
</el-table-column>
</el-table>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
</el-descriptions-item>-->
<el-descriptions-item label="个人简况" :span="3">
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
<el-tag type="warning" v-else>暂无</el-tag>
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
#-->
<style>
.el-descriptions-item__label {
width: 15% !important;
/*width: 15% !important;*/
text-align: center !important;
}
</style>
@@ -229,13 +229,6 @@ layout("/layouts/platform.html"){
sex: [{required: false, message: "必填", trigger: ["change", "blur"]}],
isVoluntary: [{required: true, message: "必填", trigger: ["change", "blur"]}],
sign: [{required: true, message: "必填", trigger: ["change", "blur"]}],
phone: [
{
validator: (rule, value, callback) => {
},
trigger: ["change", "blur"]
}
],
email: [
{
validator: (rule, value, callback) => {
@@ -250,52 +243,52 @@ layout("/layouts/platform.html"){
trigger: ["change", "blur"]
}
],
idCard: [
{
validator: (rule, value, callback) => {
if (!value) {
// 如果值为空,直接通过校验
callback();
} else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/.test(value)) {
// 18位身份证号码格式正确
callback();
} else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 15位身份证号码格式正确
callback();
} else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 外国人身份证号码格式正确(18位)
callback();
} else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 外国人身份证号码格式正确(15位)
callback();
} else {
// 格式错误,返回错误信息
callback(new Error("身份证号码格式错误"));
}
},
trigger: ["change", "blur"]
}
],
mobile: [
{
validator: (rule, value, callback) => {
if (!value) {
// 如果值为空,直接通过校验
callback();
} else if (/^[1][345789][0-9]{9}$/.test(value)) {
// 手机号格式正确
callback();
} else if (/^\d+-\d+$/.test(value) && value.length <= 16) {
// 座机号格式正确
callback();
} else {
// 格式错误,返回错误信息
callback(new Error(value.includes('-') ? '座机号码格式错误' : '手机号码格式错误'));
}
},
trigger: ["change", "blur"]
}
]
// idCard: [
// {
// validator: (rule, value, callback) => {
// if (!value) {
// // 如果值为空,直接通过校验
// callback();
// } else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/.test(value)) {
// // 18位身份证号码格式正确
// callback();
// } else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 15位身份证号码格式正确
// callback();
// } else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 外国人身份证号码格式正确(18位)
// callback();
// } else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 外国人身份证号码格式正确(15位)
// callback();
// } else {
// // 格式错误,返回错误信息
// callback(new Error("身份证号码格式错误"));
// }
// },
// trigger: ["change", "blur"]
// }
// ],
// mobile: [
// {
// validator: (rule, value, callback) => {
// if (!value) {
// // 如果值为空,直接通过校验
// callback();
// } else if (/^[1][345789][0-9]{9}$/.test(value)) {
// // 手机号格式正确
// callback();
// } else if (/^\d+-\d+$/.test(value) && value.length <= 16) {
// // 座机号格式正确
// callback();
// } else {
// // 格式错误,返回错误信息
// callback(new Error(value.includes('-') ? '座机号码格式错误' : '手机号码格式错误'));
// }
// },
// trigger: ["change", "blur"]
// }
// ]
},
}
},
@@ -32,10 +32,10 @@ const MEMBER_ALL_CHANGE_INFO = {
<el-descriptions-item label="离校日期">{{ viewData.leaveSchoolDate ? moment(viewData.leaveSchoolDate).format("YYYY-MM-DD") : '暂无' }}</el-descriptions-item>
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item label="会员服务卡号">{{ viewData.cardNum }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
<!--<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length"
:data="viewData.families" size="mini" border
:header-cell-style="{background:'#eff3f6'}"
@@ -50,7 +50,7 @@ const MEMBER_ALL_CHANGE_INFO = {
</el-table-column>
</el-table>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
</el-descriptions-item>-->
<el-descriptions-item label="个人简况" :span="3">
<template slot="label">个人简况</template>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
@@ -234,52 +234,52 @@ const MEMBER_CHANGE = {
trigger: ["change", "blur"]
}
],
idCard: [
{
validator: (rule, value, callback) => {
if (!value) {
// 如果值为空,直接通过校验
callback();
} else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/.test(value)) {
// 18位身份证号码格式正确
callback();
} else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 15位身份证号码格式正确
callback();
} else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 外国人身份证号码格式正确(18位)
callback();
} else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// 外国人身份证号码格式正确(15位)
callback();
} else {
// 格式错误,返回错误信息
callback(new Error("身份证号码格式错误"));
}
},
trigger: ["change", "blur"]
}
],
mobile: [
{
validator: (rule, value, callback) => {
if (!value) {
// 如果值为空,直接通过校验
callback();
} else if (/^[1][345789][0-9]{9}$/.test(value)) {
// 手机号格式正确
callback();
} else if (/^\d+-\d+$/.test(value) && value.length <= 16) {
// 座机号格式正确
callback();
} else {
// 格式错误,返回错误信息
callback(new Error(value.includes('-') ? '座机号码格式错误' : '手机号码格式错误'));
}
},
trigger: ["change", "blur"]
}
],
// idCard: [
// {
// validator: (rule, value, callback) => {
// if (!value) {
// // 如果值为空,直接通过校验
// callback();
// } else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/.test(value)) {
// // 18位身份证号码格式正确
// callback();
// } else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 15位身份证号码格式正确
// callback();
// } else if (/^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 外国人身份证号码格式正确(18位)
// callback();
// } else if (/^[1-9]\d{7}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/.test(value)) {
// // 外国人身份证号码格式正确(15位)
// callback();
// } else {
// // 格式错误,返回错误信息
// callback(new Error("身份证号码格式错误"));
// }
// },
// trigger: ["change", "blur"]
// }
// ],
// mobile: [
// {
// validator: (rule, value, callback) => {
// if (!value) {
// // 如果值为空,直接通过校验
// callback();
// } else if (/^[1][345789][0-9]{9}$/.test(value)) {
// // 手机号格式正确
// callback();
// } else if (/^\d+-\d+$/.test(value) && value.length <= 16) {
// // 座机号格式正确
// callback();
// } else {
// // 格式错误,返回错误信息
// callback(new Error(value.includes('-') ? '座机号码格式错误' : '手机号码格式错误'));
// }
// },
// trigger: ["change", "blur"]
// }
// ],
cardNum: [{ required: false, message: "请填写会员服务卡卡号", trigger: ["change", "blur"] },
{ pattern: /^\d{19}$/, message: "会员服务卡卡号必须为19位数字", trigger: ["change", "blur"] }]
},
@@ -381,6 +381,7 @@ const MEMBER_CHANGE = {
mobile,
email,
families,
cardNum,
vita
} = this.user
@@ -391,6 +392,7 @@ const MEMBER_CHANGE = {
this.$set(this.formData, "sex", sex)
this.$set(this.formData, "member", member === 1)
this.$set(this.formData, "welfareMember", welfareMember === 1)
this.$set(this.formData, "cardNum", cardNum)
this.$set(this.formData, "idCard", idCard)
this.$set(this.formData, "nation", nation)
this.$set(this.formData, "political", political)
@@ -418,7 +420,7 @@ const MEMBER_CHANGE = {
},
style: /* language=CSS */ `
.el-descriptions-item__label {
width: 15% !important;
/*width: 15% !important;*/
text-align: center !important;
}
`
@@ -33,10 +33,10 @@ const MEMBER_CHANGE_AUDIT_INFO = {
<el-descriptions-item label="离校日期">{{ viewData.leaveSchoolDate ? moment(viewData.leaveSchoolDate).format("YYYY-MM-DD") : '暂无' }}</el-descriptions-item>
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item label="会员服务卡号">{{ viewData.cardNum }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
<!--<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length"
:data="viewData.families" size="mini" border
:header-cell-style="{background:'#eff3f6'}"
@@ -51,7 +51,7 @@ const MEMBER_CHANGE_AUDIT_INFO = {
</el-table-column>
</el-table>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
</el-descriptions-item>-->
<el-descriptions-item label="个人简况" :span="3">
<template slot="label">个人简况</template>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
@@ -33,10 +33,10 @@ const MEMBER_INFO = {
<el-descriptions-item label="离校日期">{{ viewData.leaveSchoolDate ? moment(viewData.leaveSchoolDate).format("YYYY-MM-DD") : '暂无' }}</el-descriptions-item>
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item label="会员服务卡号">{{ viewData.cardNum }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
<!--<el-descriptions-item label="家庭主要成员" :span="3">
<el-table v-if="viewData.families&&viewData.families.length"
:data="viewData.families" size="mini" border
:header-cell-style="{background:'#eff3f6'}"
@@ -51,7 +51,7 @@ const MEMBER_INFO = {
</el-table-column>
</el-table>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
</el-descriptions-item>-->
<el-descriptions-item label="个人简况" :span="3">
<template slot="label">个人简况</template>
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
@@ -29,7 +29,7 @@ const USER_CHANGE_INFO = {
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="会员状态">{{ viewData.member ? '会员' : '非会员' }}</el-descriptions-item>
<el-descriptions-item label="福利会员状态">{{ viewData.welfareMember ? '福利会员' : '非福利会员' }}</el-descriptions-item>
<el-descriptions-item label="会员服务卡号">{{ viewData.cardNum }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭主要成员" :span="3">
@@ -303,6 +303,39 @@ layout("/layouts/platform.html"){
<todo class="todo-grid grid-item"></todo>
<user-info class="user-grid grid-item"></user-info>
</div>
<el-dialog :visible.sync="editUserDialog"
:show-close="true"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="40%"
title="会员服务卡信息">
<el-form :model="editUserData" :rules="editUserRules" label-width="120px" ref="editUserForm">
<div style="margin:-20px 0 15px 80px">
<span style="color: red;font-size: 15px">请您完善会员服务卡信息,提交后将不会弹出此页面</span>
</div>
<el-form-item prop="loginname" label="工号">
<el-input type="text" maxlength="18"
value="${@shiro.getPrincipalProperty('loginname')}"></el-input>
</el-form-item>
<el-form-item prop="username" label="姓名">
<el-input type="text" maxlength="18"
value="${@shiro.getPrincipalProperty('username')}"></el-input>
</el-form-item>
<el-form-item prop="cardNum" label="会员服务卡卡号">
<el-input type="text" maxlength="19"
placeholder="请输入会员服务卡卡号"
oninput="value = value.replace(/\s/g, '')"
v-model.trim="editUserData.cardNum"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<!-- <el-button @click="editDialogVisible = false">取 消</el-button>-->
<el-button type="primary" @click="doEditUser">确 定</el-button>
</span>
</el-dialog>
</div>
<script>
<!--#include("userInfo.js"){}#-->
@@ -328,10 +361,43 @@ layout("/layouts/platform.html"){
activityOptions: [],
processInstanceOptions: [],
icon: "alipay"
icon: "alipay",
editUserDialog: false,
editUserData: {},
editUserRules: {
cardNum: [{required: true, message: '请填写会员服务卡卡号', trigger: ['blur', 'change']}],
}
}
},
methods: {
async judgeIdCard(){
const resp = await $.get('/platform/sys/user/judgeIdCard')
if (resp.code === 0 && resp.data > 0){
this.editUserDialog = true
}
},
async doEditUser(){
this.$refs["editUserForm"].validate(async (valid) => {
if (valid) {
const confirm = await this.$confirm('请确保会员服务卡信息无误后点击确定,是否确定?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/user/doEditUser',this.editUserData)
if (resp.code === 0){
this.editUserDialog = false
this.$message.success(resp.msg)
} else {
this.$message.error(resp.msg)
}
}
}
})
},
listQuickEntry() {
$.post("/platform/home/listQuickEntry").then((res) => {
if (res.code === 0) {
@@ -363,7 +429,8 @@ layout("/layouts/platform.html"){
})
}
},
created() {
async created() {
await this.judgeIdCard()
}
})
</script>