Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
xiaocp2009 2025-10-29 10:46:17 +08:00
commit f10819bee8
12 changed files with 127 additions and 37 deletions

View File

@ -2,9 +2,9 @@
# if use a sub directory, it must be end with "/", like "/admin/" but not "/admin"
VITE_BASE_URL=/
VITE_APP_TITLE=全员营销计
VITE_APP_TITLE=分岗管户质效评
VITE_APP_DESC=全员营销计价系统
VITE_APP_DESC=分岗管户质效评价系统
# the prefix of the icon name
VITE_ICON_PREFIX=icon

View File

@ -26,7 +26,7 @@ const naiveDateLocale = computed(() => {
});
const watermarkProps = computed<WatermarkProps>(() => {
const appTitle = import.meta.env.VITE_APP_TITLE || '全员营销计价';
const appTitle = import.meta.env.VITE_APP_TITLE || '分岗管户质效评价';
const content =
themeStore.watermark.enableUserName && userInfo.user?.userName
? `${userInfo.user?.nickName}@${appTitle} ${userInfo.user?.userName}`

View File

@ -8,7 +8,7 @@ const local: App.I18n.Schema = {
sbkjh: '社保卡激活'
},
system: {
title: '全员营销计价',
title: '分岗管户质效评价',
updateTitle: '系统版本更新通知',
updateContent: '检测到系统有新版本发布,是否立即刷新页面?',
updateConfirm: '立即刷新',

View File

@ -70,9 +70,9 @@ export const views: Record<LastLevelRouteKey, RouteComponent | (() => Promise<Ro
oss_oss: () => import("@/views/oss/oss/index.vue"),
"report_detail-entry": () => import("@/views/report/detail-entry/index.vue"),
"report_payroll-records": () => import("@/views/report/payroll-records/index.vue"),
"report_performance-md": () => import("@/views/report/performance-MD/index.vue"),
"report_performance-h": () => import("@/views/report/performance-h/index.vue"),
"report_performance-m": () => import("@/views/report/performance-m/index.vue"),
"report_performance-md": () => import("@/views/report/performance-md/index.vue"),
"report_performance-q": () => import("@/views/report/performance-q/index.vue"),
"report_performance-y": () => import("@/views/report/performance-y/index.vue"),
report_performance: () => import("@/views/report/performance/index.vue"),

View File

@ -82,7 +82,7 @@ export const themeSettings: App.Theme.ThemeSetting = {
},
watermark: {
visible: import.meta.env.VITE_WATERMARK === 'Y',
text: '全员营销计价',
text: '分岗管户质效评价',
enableUserName: true
},
table: {

View File

@ -42,47 +42,76 @@ declare module 'vue' {
MenuTreeSelect: typeof import('./../components/custom/menu-tree-select.vue')['default']
MonacoEditor: typeof import('./../components/common/monaco-editor.vue')['default']
NA: typeof import('naive-ui')['NA']
NAlert: typeof import('naive-ui')['NAlert']
NAvatar: typeof import('naive-ui')['NAvatar']
NBadge: typeof import('naive-ui')['NBadge']
NBreadcrumb: typeof import('naive-ui')['NBreadcrumb']
NBreadcrumbItem: typeof import('naive-ui')['NBreadcrumbItem']
NButton: typeof import('naive-ui')['NButton']
NButtonGroup: typeof import('naive-ui')['NButtonGroup']
NCard: typeof import('naive-ui')['NCard']
NCheckbox: typeof import('naive-ui')['NCheckbox']
NCheckboxGroup: typeof import('naive-ui')['NCheckboxGroup']
NCode: typeof import('naive-ui')['NCode']
NCollapse: typeof import('naive-ui')['NCollapse']
NCollapseItem: typeof import('naive-ui')['NCollapseItem']
NColorPicker: typeof import('naive-ui')['NColorPicker']
NDataTable: typeof import('naive-ui')['NDataTable']
NDatePicker: typeof import('naive-ui')['NDatePicker']
NDescriptions: typeof import('naive-ui')['NDescriptions']
NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem']
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
NDivider: typeof import('naive-ui')['NDivider']
NDrawer: typeof import('naive-ui')['NDrawer']
NDrawerContent: typeof import('naive-ui')['NDrawerContent']
NDropdown: typeof import('naive-ui')['NDropdown']
NDynamicInput: typeof import('naive-ui')['NDynamicInput']
NEllipsis: typeof import('naive-ui')['NEllipsis']
NEmpty: typeof import('naive-ui')['NEmpty']
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
NFormItemGi: typeof import('naive-ui')['NFormItemGi']
NGi: typeof import('naive-ui')['NGi']
NGrid: typeof import('naive-ui')['NGrid']
NGridItem: typeof import('naive-ui')['NGridItem']
NInput: typeof import('naive-ui')['NInput']
NInputGroup: typeof import('naive-ui')['NInputGroup']
NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel']
NInputNumber: typeof import('naive-ui')['NInputNumber']
NLayout: typeof import('naive-ui')['NLayout']
NLayoutContent: typeof import('naive-ui')['NLayoutContent']
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
NLoadingBarProvider: typeof import('naive-ui')['NLoadingBarProvider']
NMenu: typeof import('naive-ui')['NMenu']
NMessageProvider: typeof import('naive-ui')['NMessageProvider']
NModal: typeof import('naive-ui')['NModal']
NNotificationProvider: typeof import('naive-ui')['NNotificationProvider']
NP: typeof import('naive-ui')['NP']
NPopconfirm: typeof import('naive-ui')['NPopconfirm']
NPopover: typeof import('naive-ui')['NPopover']
NRadio: typeof import('naive-ui')['NRadio']
NRadioButton: typeof import('naive-ui')['NRadioButton']
NRadioGroup: typeof import('naive-ui')['NRadioGroup']
NScrollbar: typeof import('naive-ui')['NScrollbar']
NSelect: typeof import('naive-ui')['NSelect']
NSpace: typeof import('naive-ui')['NSpace']
NSpin: typeof import('naive-ui')['NSpin']
NStatistic: typeof import('naive-ui')['NStatistic']
NSwitch: typeof import('naive-ui')['NSwitch']
NTab: typeof import('naive-ui')['NTab']
NTable: typeof import('naive-ui')['NTable']
NTabPane: typeof import('naive-ui')['NTabPane']
NTabs: typeof import('naive-ui')['NTabs']
NTag: typeof import('naive-ui')['NTag']
NTbody: typeof import('naive-ui')['NTbody']
NTd: typeof import('naive-ui')['NTd']
NText: typeof import('naive-ui')['NText']
NTh: typeof import('naive-ui')['NTh']
NThead: typeof import('naive-ui')['NThead']
NTooltip: typeof import('naive-ui')['NTooltip']
NTr: typeof import('naive-ui')['NTr']
NTree: typeof import('naive-ui')['NTree']
NTreeSelect: typeof import('naive-ui')['NTreeSelect']
NUpload: typeof import('naive-ui')['NUpload']
NUploadDragger: typeof import('naive-ui')['NUploadDragger']
NWatermark: typeof import('naive-ui')['NWatermark']
OssUpload: typeof import('./../components/custom/oss-upload.vue')['default']
PinToggler: typeof import('./../components/common/pin-toggler.vue')['default']

View File

@ -241,9 +241,9 @@ declare module "@elegant-router/types" {
| "oss_oss"
| "report_detail-entry"
| "report_payroll-records"
| "report_performance-md"
| "report_performance-h"
| "report_performance-m"
| "report_performance-md"
| "report_performance-q"
| "report_performance-y"
| "report_performance"
@ -339,7 +339,7 @@ declare module "@elegant-router/types" {
component: `view.${K}`;
}
: never;
/**
* the center level route
*/
@ -362,7 +362,7 @@ declare module "@elegant-router/types" {
children: (CenterLevelRoute<GetChildRouteKey<K>> | LastLevelRoute<GetChildRouteKey<K>>)[];
}
: never;
/**
* the custom first level route
*/

View File

@ -40,28 +40,28 @@ public interface MpsDetailEntryMapper extends BaseMapperPlus<MpsDetailEntry, Mps
@DataColumn(key = "deptName", value = "m.create_dept"),
@DataColumn(key = "userName", value = "m.create_by")
})
@Select({
"select " +
"c.old_card_no as oldCardNo , c.new_card_no as newCardNo, c.replace_method as affair ," +
"t.traffic_no as trafficNo ,t.traffic_amt as trafficAmt, " +
"m.* ," +
"d.dept_name AS yxDeptName ," +
"de.dept_name AS deptName ," +
" CASE " +
" WHEN m.traffic_id IS NOT NULL THEN t.check_flag " +
" WHEN m.magnetic_card_id IS NOT NULL THEN c.check_flag " +
" ELSE m.check_flag " +
" END AS checkFlag "+
"from mps_market m " +
" left join mps_traffic t on m.traffic_id = t.traffic_id " +
" left join mps_magneticcard c on m.magnetic_card_id = c.magnetic_card_id " +
" LEFT JOIN sys_user s ON m.yx_id = s.mkt_no and m.del_flag = '0'"+
" inner JOIN sys_dept d ON s.dept_id = d.dept_id "+
" inner JOIN sys_dept de ON m.dept_id = de.dept_id "+
"${ew.customSqlSegment}"+
"and m.del_flag = '0' order by m.entry_date desc"
})
// @Select({
// "select " +
// "c.old_card_no as oldCardNo , c.new_card_no as newCardNo, c.replace_method as affair ," +
// "t.traffic_no as trafficNo ,t.traffic_amt as trafficAmt, " +
//
// "m.* ," +
// "d.dept_name AS yxDeptName ," +
// "de.dept_name AS deptName ," +
// " CASE " +
// " WHEN m.traffic_id IS NOT NULL THEN t.check_flag " +
// " WHEN m.magnetic_card_id IS NOT NULL THEN c.check_flag " +
// " ELSE m.check_flag " +
// " END AS checkFlag "+
// "from mps_market m " +
// " left join mps_traffic t on m.traffic_id = t.traffic_id " +
// " left join mps_magneticcard c on m.magnetic_card_id = c.magnetic_card_id " +
// " LEFT JOIN sys_user s ON m.yx_id = s.mkt_no and m.del_flag = '0'"+
// " inner JOIN sys_dept d ON s.dept_id = d.dept_id "+
// " inner JOIN sys_dept de ON m.dept_id = de.dept_id "+
// "${ew.customSqlSegment}"+
// "and m.del_flag = '0' order by m.entry_date desc"
// })
List<MpsDetailEntryExportVo> selectMpsDetailEntryExportList(@Param(Constants.WRAPPER) Wrapper<MpsDetailEntry> queryWrapper);
}

View File

@ -107,7 +107,7 @@ public class MpsDetailEntryServiceImpl implements IMpsDetailEntryService {
@Override
public List<MpsDetailEntryExportVo> queryList(MpsDetailEntryBo bo) {
LambdaQueryWrapper<MpsDetailEntry> lqw = buildQueryWrapper(bo);
// lqw.eq(""MpsDetailEntry::getDelFlag"", '0');
lqw.eq(MpsDetailEntry::getDelFlag, '0');
return baseMapper.selectMpsDetailEntryExportList(lqw);
// return baseMapper.selectVoList(lqw);
}
@ -115,7 +115,7 @@ public class MpsDetailEntryServiceImpl implements IMpsDetailEntryService {
private LambdaQueryWrapper<MpsDetailEntry> buildQueryWrapper(MpsDetailEntryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<MpsDetailEntry> lqw = Wrappers.lambdaQuery();
// lqw.orderByAsc(MpsDetailEntry::getDataId);
lqw.orderByDesc(MpsDetailEntry::getDate);
lqw.eq(StringUtils.isNotBlank(bo.getSubcategoryId()), MpsDetailEntry::getSubcategoryId, bo.getSubcategoryId());
lqw.like(StringUtils.isNotBlank(bo.getSubcategoryName()), MpsDetailEntry::getSubcategoryName, bo.getSubcategoryName());
lqw.like(StringUtils.isNotBlank(bo.getYxName()), MpsDetailEntry::getYxName, bo.getYxName());

View File

@ -456,7 +456,7 @@ public class MpsMarketServiceImpl implements IMpsMarketService {
*/
String[] arr = new String[]{"62152109", "62169009", "62231909", "62232009", "62326591", "90010509"};
if (!Arrays.asList(arr).contains(entity.getCustAcctNo().substring(0, 8))) {
throw new ServiceException("银行卡前8位不支持");
throw new ServiceException("非本行开立银行卡!");
}
mpsMarket.setCustAcctNo(entity.getCustAcctNo());
mpsMarket.setSubcategoryId(entity.getSubcategoryId());

View File

@ -46,7 +46,7 @@ public class OriginalHntSgsInfoImportVo implements Serializable {
*/
@ExcelProperty(value = {
"签约ID"
}, index = 1)
})
@NotBlank(message = "签约ID不能为空")
private String contractId;

View File

@ -3,5 +3,66 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mps.mapper.MpsDetailEntryMapper">
<resultMap id="MarketResultMap" type="org.dromara.mps.domain.vo.MpsDetailEntryExportVo">
<!-- 基本字段映射 -->
<id column="market_id" property="marketId"/>
<result column="jb_name" property="jbName"/>
<result column="jb_id" property="jbId"/>
<result column="yx_name" property="yxName"/>
<result column="yx_id" property="yxId"/>
<result column="date" property="date"/>
<result column="cust_name" property="custName"/>
<result column="cust_type" property="custType"/>
<result column="subcategory_name" property="subcategoryName"/>
<result column="cust_phone_no" property="custPhoneNo"/>
<result column="cust_id" property="custId"/>
<result column="cust_acct_no" property="custAcctNo"/>
<result column="acquiring_name" property="acquiringName"/>
<result column="acquiring_id" property="acquiringId"/>
<result column="internet_channel" property="internetChannel"/>
<result column="workplace" property="workplace"/>
<result column="surplus_account_name" property="surplusAccountName"/>
<result column="heating_no" property="heatingNo"/>
<result column="branch_name" property="branchName"/>
<result column="check_msg" property="checkMsg"/>
<result column="del_flag" property="delFlag"/>
<!-- 关联表字段映射 -->
<result column="oldCardNo" property="oldCardNo"/>
<result column="newCardNo" property="newCardNo"/>
<result column="affair" property="affair"/>
<result column="trafficNo" property="trafficNo"/>
<result column="trafficAmt" property="trafficAmt"/>
<result column="yxDeptName" property="yxDeptName"/>
<result column="deptName" property="deptName"/>
<result column="checkFlag" property="checkFlag"/>
</resultMap>
<select id="selectMpsDetailEntryExportList" resultMap="MarketResultMap" parameterType="map">
select * from (
SELECT
c.old_card_no AS oldCardNo,
c.new_card_no AS newCardNo,
c.replace_method AS affair,
t.traffic_no AS trafficNo,
t.traffic_amt AS trafficAmt,
m.*,
d.dept_name AS yxDeptName,
de.dept_name AS deptName,
CASE
WHEN m.traffic_id IS NOT NULL THEN t.check_flag
WHEN m.magnetic_card_id IS NOT NULL THEN c.check_flag
ELSE m.check_flag
END AS checkFlag
FROM mps_market m
LEFT JOIN mps_traffic t ON m.traffic_id = t.traffic_id
LEFT JOIN mps_magneticcard c ON m.magnetic_card_id = c.magnetic_card_id
LEFT JOIN sys_user s ON m.yx_id = s.mkt_no
LEFT JOIN sys_dept d ON s.dept_id = d.dept_id
LEFT JOIN sys_dept de ON m.dept_id = de.dept_id
where m.del_flag='0'
) temp ${ew.customSqlSegment}
</select>
</mapper>