From 9a3253ad20fd384c3692941ea2fb44323bf6db00 Mon Sep 17 00:00:00 2001 From: dongshanshan Date: Tue, 31 Oct 2023 16:53:44 +0800 Subject: [PATCH 01/37] =?UTF-8?q?feat:=20=E4=BC=9A=E5=91=98=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/mall/product/favorite.ts | 28 +++ src/hooks/web/useMessage.ts | 12 ++ src/locales/en.ts | 8 +- src/locales/zh-CN.ts | 8 +- .../member/user/detail/UserFavoriteList.vue | 195 ++++++++++++++++++ src/views/member/user/detail/index.vue | 5 +- 6 files changed, 253 insertions(+), 3 deletions(-) create mode 100644 src/api/mall/product/favorite.ts create mode 100644 src/views/member/user/detail/UserFavoriteList.vue diff --git a/src/api/mall/product/favorite.ts b/src/api/mall/product/favorite.ts new file mode 100644 index 00000000..2e54ec78 --- /dev/null +++ b/src/api/mall/product/favorite.ts @@ -0,0 +1,28 @@ +import request from '@/config/axios' + +export interface Favorite { + id?: number + userId?: string // 用户编号 + spuId?: number | null // 商品 SPU 编号 +} + +// 获得 ProductFavorite 列表 +export const getFavoritePage = (params: PageParam) => { + params.keyword = params.name + return request.get({ url: '/product/favorite/page', params }) +} + +// 收藏商品 Favorite +export const createFavorite = (data: Favorite) => { + return request.post({ url: '/product/favorite/create', data }) +} + +// 取消商品收藏 Favorite +export const delFavorite = (data: Favorite) => { + return request.delete({ url: '/product/favorite/delete', data }) +} + +// 是否收藏过商品 Favorite +export const exitsFavorite = (data: Favorite) => { + return request.post({ url: '/product/favorite/exits', data }) +} diff --git a/src/hooks/web/useMessage.ts b/src/hooks/web/useMessage.ts index ac2b552e..9bfb7a3a 100644 --- a/src/hooks/web/useMessage.ts +++ b/src/hooks/web/useMessage.ts @@ -90,6 +90,18 @@ export const useMessage = () => { cancelButtonText: t('common.cancel'), type: 'warning' }) + }, + // 取消收藏窗体 + delStarConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.confirmDelStar'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) } } } diff --git a/src/locales/en.ts b/src/locales/en.ts index 4f4d4895..d82e616e 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -54,7 +54,13 @@ export default { updateTime: 'Update Time', copy: 'Copy', copySuccess: 'Copy Success', - copyError: 'Copy Error' + copyError: 'Copy Error', + confirmDelStar: 'Delete the Star?', + starSuccess: 'Star Success', + starFail: 'Star Error', + delStarSuccess: 'Del Star Success', + delStarFail: 'Del Star Error', + existStar: 'exist Star' }, error: { noPermission: `Sorry, you don't have permission to access this page.`, diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 4f95852f..49a3f895 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -54,7 +54,13 @@ export default { updateTime: '更新时间', copy: '复制', copySuccess: '复制成功', - copyError: '复制失败' + copyError: '复制失败', + confirmDelStar: '是否取消收藏?', + starSuccess: '收藏成功', + starFail: '收藏失败', + delStarSuccess: '取消收藏成功', + delStarFail: '取消收藏失败', + existStar: '收藏已存在' }, error: { noPermission: `抱歉,您无权访问此页面。`, diff --git a/src/views/member/user/detail/UserFavoriteList.vue b/src/views/member/user/detail/UserFavoriteList.vue new file mode 100644 index 00000000..009a8b10 --- /dev/null +++ b/src/views/member/user/detail/UserFavoriteList.vue @@ -0,0 +1,195 @@ + + + diff --git a/src/views/member/user/detail/index.vue b/src/views/member/user/detail/index.vue index 1bac010e..6237cca6 100644 --- a/src/views/member/user/detail/index.vue +++ b/src/views/member/user/detail/index.vue @@ -48,7 +48,9 @@ 售后管理(WIP) - 收藏记录(WIP) + + + @@ -76,6 +78,7 @@ import UserExperienceRecordList from './UserExperienceRecordList.vue' import UserOrderList from './UserOrderList.vue' import UserPointList from './UserPointList.vue' import UserSignList from './UserSignList.vue' +import UserFavoriteList from './UserFavoriteList.vue' import { CardTitle } from '@/components/Card/index' import { ElMessage } from 'element-plus' From f2c71d5836895b7d4ff6520388709f5426d88559 Mon Sep 17 00:00:00 2001 From: niou233 <2922564446@qq.com> Date: Wed, 8 Nov 2023 17:29:57 +0800 Subject: [PATCH 02/37] =?UTF-8?q?refactor:=20=E4=BC=9A=E5=91=98=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/mall/product/favorite.ts | 16 --- .../member/user/detail/UserFavoriteList.vue | 99 ------------------- 2 files changed, 115 deletions(-) diff --git a/src/api/mall/product/favorite.ts b/src/api/mall/product/favorite.ts index 2e54ec78..3834eed0 100644 --- a/src/api/mall/product/favorite.ts +++ b/src/api/mall/product/favorite.ts @@ -8,21 +8,5 @@ export interface Favorite { // 获得 ProductFavorite 列表 export const getFavoritePage = (params: PageParam) => { - params.keyword = params.name return request.get({ url: '/product/favorite/page', params }) } - -// 收藏商品 Favorite -export const createFavorite = (data: Favorite) => { - return request.post({ url: '/product/favorite/create', data }) -} - -// 取消商品收藏 Favorite -export const delFavorite = (data: Favorite) => { - return request.delete({ url: '/product/favorite/delete', data }) -} - -// 是否收藏过商品 Favorite -export const exitsFavorite = (data: Favorite) => { - return request.post({ url: '/product/favorite/exits', data }) -} diff --git a/src/views/member/user/detail/UserFavoriteList.vue b/src/views/member/user/detail/UserFavoriteList.vue index 009a8b10..afab9a08 100644 --- a/src/views/member/user/detail/UserFavoriteList.vue +++ b/src/views/member/user/detail/UserFavoriteList.vue @@ -1,46 +1,4 @@ - - - { handleQuery() } -/** 取消收藏按钮操作 */ -const handleDelete = async (row: object) => { - try { - console.log(row) - // 取消的二次确认 - await message.delStarConfirm() - // 发起取消 - await FavoriteApi.delFavorite({ userId: queryParams.userId, spuId: row.spuId }) - message.success(t('common.delStarSuccess')) - row.favoriteStatus = 0 - // 刷新列表 - // await getList() - } catch {} -} - -/** 收藏按钮操作 */ -const handleAdd = async (row: object) => { - try { - const data = { userId: queryParams.userId, spuId: row.spuId } - // 发起收藏 - const result = await FavoriteApi.exitsFavorite(data) - if (result === false) { - // 发起收藏 - await FavoriteApi.createFavorite(data) - message.success(t('common.starSuccess')) - row.favoriteStatus = 1 - // 刷新列表 - // await getList() - } else { - message.warning(t('common.existStar')) - row.favoriteStatus = 1 - } - } catch {} -} - const { userId } = defineProps({ userId: { type: Number, From 2ff97758fd720b281e2b76afa56f2fc637476916 Mon Sep 17 00:00:00 2001 From: niou233 <2922564446@qq.com> Date: Fri, 10 Nov 2023 11:34:32 +0000 Subject: [PATCH 03/37] update src/hooks/web/useMessage.ts. Signed-off-by: niou233 <2922564446@qq.com> --- src/hooks/web/useMessage.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/hooks/web/useMessage.ts b/src/hooks/web/useMessage.ts index 9bfb7a3a..ac2b552e 100644 --- a/src/hooks/web/useMessage.ts +++ b/src/hooks/web/useMessage.ts @@ -90,18 +90,6 @@ export const useMessage = () => { cancelButtonText: t('common.cancel'), type: 'warning' }) - }, - // 取消收藏窗体 - delStarConfirm(content?: string, tip?: string) { - return ElMessageBox.confirm( - content ? content : t('common.confirmDelStar'), - tip ? tip : t('common.confirmTitle'), - { - confirmButtonText: t('common.ok'), - cancelButtonText: t('common.cancel'), - type: 'warning' - } - ) } } } From 1ab5b44254415e050615d91128df0afb703ccc1d Mon Sep 17 00:00:00 2001 From: niou233 <2922564446@qq.com> Date: Fri, 10 Nov 2023 11:35:54 +0000 Subject: [PATCH 04/37] update src/locales/en.ts. Signed-off-by: niou233 <2922564446@qq.com> --- src/locales/en.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/locales/en.ts b/src/locales/en.ts index d82e616e..4f4d4895 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -54,13 +54,7 @@ export default { updateTime: 'Update Time', copy: 'Copy', copySuccess: 'Copy Success', - copyError: 'Copy Error', - confirmDelStar: 'Delete the Star?', - starSuccess: 'Star Success', - starFail: 'Star Error', - delStarSuccess: 'Del Star Success', - delStarFail: 'Del Star Error', - existStar: 'exist Star' + copyError: 'Copy Error' }, error: { noPermission: `Sorry, you don't have permission to access this page.`, From af5d1cf25ee8898cab5e1d1b520b288021d982bc Mon Sep 17 00:00:00 2001 From: niou233 <2922564446@qq.com> Date: Fri, 10 Nov 2023 11:36:11 +0000 Subject: [PATCH 05/37] update src/locales/zh-CN.ts. Signed-off-by: niou233 <2922564446@qq.com> --- src/locales/zh-CN.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 49a3f895..4f95852f 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -54,13 +54,7 @@ export default { updateTime: '更新时间', copy: '复制', copySuccess: '复制成功', - copyError: '复制失败', - confirmDelStar: '是否取消收藏?', - starSuccess: '收藏成功', - starFail: '收藏失败', - delStarSuccess: '取消收藏成功', - delStarFail: '取消收藏失败', - existStar: '收藏已存在' + copyError: '复制失败' }, error: { noPermission: `抱歉,您无权访问此页面。`, From f74ddf46ae518c02ebcb1900ca39e39f97b524af Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 21 Nov 2023 22:53:49 +0800 Subject: [PATCH 06/37] =?UTF-8?q?sms=EF=BC=9A=E7=A7=BB=E9=99=A4=20sendCode?= =?UTF-8?q?=E3=80=81sendMsg=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/sms/smsLog/index.ts | 2 -- src/views/system/sms/log/SmsLogDetail.vue | 3 --- 2 files changed, 5 deletions(-) diff --git a/src/api/system/sms/smsLog/index.ts b/src/api/system/sms/smsLog/index.ts index 3d54fac1..f9891716 100644 --- a/src/api/system/sms/smsLog/index.ts +++ b/src/api/system/sms/smsLog/index.ts @@ -15,8 +15,6 @@ export interface SmsLogVO { userType: number | null sendStatus: number | null sendTime: Date | null - sendCode: number | null - sendMsg: string apiSendCode: string apiSendMsg: string apiRequestId: string diff --git a/src/views/system/sms/log/SmsLogDetail.vue b/src/views/system/sms/log/SmsLogDetail.vue index 34c5e58e..b0d22c2d 100644 --- a/src/views/system/sms/log/SmsLogDetail.vue +++ b/src/views/system/sms/log/SmsLogDetail.vue @@ -37,9 +37,6 @@ {{ formatDate(detailData.sendTime) }} - - {{ detailData.sendCode }} | {{ detailData.sendMsg }} - {{ detailData.apiSendCode }} | {{ detailData.apiSendMsg }} From 19a0a83054f73c84a2d5600ef6a1c22e1c68e134 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Wed, 22 Nov 2023 15:44:42 +0800 Subject: [PATCH 07/37] =?UTF-8?q?crm-=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E5=96=84=E5=9B=A2=E9=98=9F=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/crm/permission/index.ts | 6 +- src/utils/dict.ts | 278 +++++++++--------- .../crm/components/CrmPermissionForm.vue | 14 +- ...{CrmTeamList.vue => CrmPermissionList.vue} | 80 ++--- src/views/crm/components/index.ts | 8 +- 5 files changed, 188 insertions(+), 198 deletions(-) rename src/views/crm/components/{CrmTeamList.vue => CrmPermissionList.vue} (63%) diff --git a/src/api/crm/permission/index.ts b/src/api/crm/permission/index.ts index 1292f29a..79f69451 100644 --- a/src/api/crm/permission/index.ts +++ b/src/api/crm/permission/index.ts @@ -6,9 +6,9 @@ export interface PermissionVO { bizType: number | undefined // Crm 类型 bizId: number | undefined // Crm 类型数据编号 level: number | undefined // 权限级别 - deptName?: string // 部门名称 // 岗位名称数组 TODO @puhui999:数组? + deptName?: string // 部门名称 nickname?: string // 用户昵称 - postNames?: string // 岗位名称数组 TODO @puhui999:数组? + postNames?: string[] // 岗位名称数组 createTime?: Date } @@ -19,7 +19,7 @@ export const getPermissionList = async (params) => { // 新增团队成员 export const createPermission = async (data: PermissionVO) => { - return await request.post({ url: `/crm/permission/add`, data }) + return await request.post({ url: `/crm/permission/create`, data }) } // 修改团队成员权限级别 diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 9fe429e9..e551a5ef 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -1,8 +1,8 @@ /** * 数据字典工具类 */ -import { useDictStoreWithOut } from '@/store/modules/dict' -import { ElementPlusInfoType } from '@/types/elementPlus' +import {useDictStoreWithOut} from '@/store/modules/dict' +import {ElementPlusInfoType} from '@/types/elementPlus' const dictStore = useDictStoreWithOut() @@ -13,51 +13,51 @@ const dictStore = useDictStoreWithOut() * @returns {*|Array} 数据字典数组 */ export interface DictDataType { - dictType: string - label: string - value: string | number | boolean - colorType: ElementPlusInfoType | '' - cssClass: string + dictType: string + label: string + value: string | number | boolean + colorType: ElementPlusInfoType | '' + cssClass: string } export const getDictOptions = (dictType: string) => { - return dictStore.getDictByType(dictType) || [] + return dictStore.getDictByType(dictType) || [] } export const getIntDictOptions = (dictType: string): DictDataType[] => { - const dictOption: DictDataType[] = [] - const dictOptions: DictDataType[] = getDictOptions(dictType) - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - value: parseInt(dict.value + '') + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: parseInt(dict.value + '') + }) }) - }) - return dictOption + return dictOption } export const getStrDictOptions = (dictType: string) => { - const dictOption: DictDataType[] = [] - const dictOptions: DictDataType[] = getDictOptions(dictType) - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - value: dict.value + '' + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' + }) }) - }) - return dictOption + return dictOption } export const getBoolDictOptions = (dictType: string) => { - const dictOption: DictDataType[] = [] - const dictOptions: DictDataType[] = getDictOptions(dictType) - dictOptions.forEach((dict: DictDataType) => { - dictOption.push({ - ...dict, - value: dict.value + '' === 'true' + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' === 'true' + }) }) - }) - return dictOption + return dictOption } /** @@ -67,12 +67,12 @@ export const getBoolDictOptions = (dictType: string) => { * @return DictDataType 字典对象 */ export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { - const dictOptions: DictDataType[] = getDictOptions(dictType) - for (const dict of dictOptions) { - if (dict.value === value + '') { - return dict + const dictOptions: DictDataType[] = getDictOptions(dictType) + for (const dict of dictOptions) { + if (dict.value === value + '') { + return dict + } } - } } /** @@ -83,117 +83,121 @@ export const getDictObj = (dictType: string, value: any): DictDataType | undefin * @return 字典名称 */ export const getDictLabel = (dictType: string, value: any): string => { - const dictOptions: DictDataType[] = getDictOptions(dictType) - const dictLabel = ref('') - dictOptions.forEach((dict: DictDataType) => { - if (dict.value === value + '') { - dictLabel.value = dict.label - } - }) - return dictLabel.value + const dictOptions: DictDataType[] = getDictOptions(dictType) + const dictLabel = ref('') + dictOptions.forEach((dict: DictDataType) => { + if (dict.value === value + '') { + dictLabel.value = dict.label + } + }) + return dictLabel.value } export enum DICT_TYPE { - USER_TYPE = 'user_type', - COMMON_STATUS = 'common_status', - SYSTEM_TENANT_PACKAGE_ID = 'system_tenant_package_id', - TERMINAL = 'terminal', // 终端 + USER_TYPE = 'user_type', + COMMON_STATUS = 'common_status', + SYSTEM_TENANT_PACKAGE_ID = 'system_tenant_package_id', + TERMINAL = 'terminal', // 终端 - // ========== SYSTEM 模块 ========== - SYSTEM_USER_SEX = 'system_user_sex', - SYSTEM_MENU_TYPE = 'system_menu_type', - SYSTEM_ROLE_TYPE = 'system_role_type', - SYSTEM_DATA_SCOPE = 'system_data_scope', - SYSTEM_NOTICE_TYPE = 'system_notice_type', - SYSTEM_OPERATE_TYPE = 'system_operate_type', - SYSTEM_LOGIN_TYPE = 'system_login_type', - SYSTEM_LOGIN_RESULT = 'system_login_result', - SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', - SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', - SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', - SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', - SYSTEM_ERROR_CODE_TYPE = 'system_error_code_type', - SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', - SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', - SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', - SYSTEM_SOCIAL_TYPE = 'system_social_type', + // ========== SYSTEM 模块 ========== + SYSTEM_USER_SEX = 'system_user_sex', + SYSTEM_MENU_TYPE = 'system_menu_type', + SYSTEM_ROLE_TYPE = 'system_role_type', + SYSTEM_DATA_SCOPE = 'system_data_scope', + SYSTEM_NOTICE_TYPE = 'system_notice_type', + SYSTEM_OPERATE_TYPE = 'system_operate_type', + SYSTEM_LOGIN_TYPE = 'system_login_type', + SYSTEM_LOGIN_RESULT = 'system_login_result', + SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', + SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', + SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', + SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', + SYSTEM_ERROR_CODE_TYPE = 'system_error_code_type', + SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', + SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', + SYSTEM_SOCIAL_TYPE = 'system_social_type', - // ========== INFRA 模块 ========== - INFRA_BOOLEAN_STRING = 'infra_boolean_string', - INFRA_JOB_STATUS = 'infra_job_status', - INFRA_JOB_LOG_STATUS = 'infra_job_log_status', - INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', - INFRA_CONFIG_TYPE = 'infra_config_type', - INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', - INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', - INFRA_CODEGEN_SCENE = 'infra_codegen_scene', - INFRA_FILE_STORAGE = 'infra_file_storage', + // ========== INFRA 模块 ========== + INFRA_BOOLEAN_STRING = 'infra_boolean_string', + INFRA_JOB_STATUS = 'infra_job_status', + INFRA_JOB_LOG_STATUS = 'infra_job_log_status', + INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', + INFRA_CONFIG_TYPE = 'infra_config_type', + INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', + INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', + INFRA_CODEGEN_SCENE = 'infra_codegen_scene', + INFRA_FILE_STORAGE = 'infra_file_storage', - // ========== BPM 模块 ========== - BPM_MODEL_CATEGORY = 'bpm_model_category', - BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', - BPM_TASK_ASSIGN_RULE_TYPE = 'bpm_task_assign_rule_type', - BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status', - BPM_PROCESS_INSTANCE_RESULT = 'bpm_process_instance_result', - BPM_TASK_ASSIGN_SCRIPT = 'bpm_task_assign_script', - BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', + // ========== BPM 模块 ========== + BPM_MODEL_CATEGORY = 'bpm_model_category', + BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', + BPM_TASK_ASSIGN_RULE_TYPE = 'bpm_task_assign_rule_type', + BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status', + BPM_PROCESS_INSTANCE_RESULT = 'bpm_process_instance_result', + BPM_TASK_ASSIGN_SCRIPT = 'bpm_task_assign_script', + BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', - // ========== PAY 模块 ========== - PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型 - PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态 - PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态 - PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态 - PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态 - PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态 - PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态 + // ========== PAY 模块 ========== + PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型 + PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态 + PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态 + PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态 + PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态 + PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态 + PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态 - // ========== MP 模块 ========== - MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型 - MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型 + // ========== MP 模块 ========== + MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型 + MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型 - // ========== MALL - 会员模块 ========== - MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型 - MEMBER_EXPERIENCE_BIZ_TYPE = 'member_experience_biz_type', // 会员经验业务类型 + // ========== MALL - 会员模块 ========== + MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型 + MEMBER_EXPERIENCE_BIZ_TYPE = 'member_experience_biz_type', // 会员经验业务类型 - // ========== MALL - 商品模块 ========== - PRODUCT_UNIT = 'product_unit', // 商品单位 - PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态 - PROMOTION_TYPE_ENUM = 'promotion_type_enum', // 营销类型枚举 + // ========== MALL - 商品模块 ========== + PRODUCT_UNIT = 'product_unit', // 商品单位 + PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态 + PROMOTION_TYPE_ENUM = 'promotion_type_enum', // 营销类型枚举 - // ========== MALL - 交易模块 ========== - EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式 - TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态 - TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式 - TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型 - TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 - TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 - TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 - TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式 - BROKERAGE_ENABLED_CONDITION = 'brokerage_enabled_condition', // 分佣模式 - BROKERAGE_BIND_MODE = 'brokerage_bind_mode', // 分销关系绑定模式 - BROKERAGE_BANK_NAME = 'brokerage_bank_name', // 佣金提现银行 - BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金提现类型 - BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型 - BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态 - BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态 + // ========== MALL - 交易模块 ========== + EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式 + TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态 + TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式 + TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型 + TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 + TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 + TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 + TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式 + BROKERAGE_ENABLED_CONDITION = 'brokerage_enabled_condition', // 分佣模式 + BROKERAGE_BIND_MODE = 'brokerage_bind_mode', // 分销关系绑定模式 + BROKERAGE_BANK_NAME = 'brokerage_bank_name', // 佣金提现银行 + BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金提现类型 + BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型 + BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态 + BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态 - // ========== MALL - 营销模块 ========== - PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型 - PROMOTION_PRODUCT_SCOPE = 'promotion_product_scope', // 营销的商品范围 - PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE = 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型 - PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 - PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 - PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 - PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 - PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态 - PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态 - PROMOTION_BANNER_POSITION = 'promotion_banner_position', // banner 定位 + // ========== MALL - 营销模块 ========== + PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型 + PROMOTION_PRODUCT_SCOPE = 'promotion_product_scope', // 营销的商品范围 + PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE = 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型 + PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 + PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 + PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 + PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 + PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态 + PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态 + PROMOTION_BANNER_POSITION = 'promotion_banner_position', // banner 定位 - // ========== CRM - 客户管理模块 ========== - CRM_RECEIVABLE_CHECK_STATUS = 'crm_receivable_check_status', - CRM_RETURN_TYPE = 'crm_return_type', - CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', - CRM_CUSTOMER_LEVEL = 'crm_customer_level', - CRM_CUSTOMER_SOURCE = 'crm_customer_source', - CRM_PRODUCT_STATUS = 'crm_product_status' + // ========== CRM - 客户管理模块 ========== + CRM_RECEIVABLE_CHECK_STATUS = 'crm_receivable_check_status', + CRM_RETURN_TYPE = 'crm_return_type', + CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', + CRM_CUSTOMER_LEVEL = 'crm_customer_level', + CRM_CUSTOMER_SOURCE = 'crm_customer_source', + CRM_PRODUCT_STATUS = 'crm_product_status', + + // ========== CRM - 数据权限模块 ========== + CRM_BIZ_TYPE = 'crm_biz_type', // 数据模块类型 + CRM_PERMISSION_LEVEL = 'crm_permission_level' // 用户数据权限类型 } diff --git a/src/views/crm/components/CrmPermissionForm.vue b/src/views/crm/components/CrmPermissionForm.vue index 838aa68d..ad6ae588 100644 --- a/src/views/crm/components/CrmPermissionForm.vue +++ b/src/views/crm/components/CrmPermissionForm.vue @@ -19,9 +19,14 @@ - - 只读 - 读写 + @@ -34,7 +39,8 @@ diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue index dc776d3a..f482f91c 100644 --- a/src/views/system/notice/index.vue +++ b/src/views/system/notice/index.vue @@ -87,6 +87,9 @@ > 删除 + + 推送 + @@ -168,6 +171,17 @@ const handleDelete = async (id: number) => { } catch {} } +/** 推送按钮操作 */ +const handlePush = async (id: number) => { + try { + // 推送的二次确认 + await message.confirm('是否推送所选中通知?') + // 发起推送 + await NoticeApi.pushNotice(id) + message.success(t('推送成功')) + } catch {} +} + /** 初始化 **/ onMounted(() => { getList() From 2700b08c6978dc2f921b4b4f8088e315dc7e8084 Mon Sep 17 00:00:00 2001 From: ljlleo Date: Fri, 24 Nov 2023 14:21:21 +0800 Subject: [PATCH 11/37] =?UTF-8?q?=E5=95=86=E6=9C=BA=E3=80=81=E5=95=86?= =?UTF-8?q?=E6=9C=BA=E7=8A=B6=E6=80=81=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/crm/business/index.ts | 52 ++++ src/api/crm/businessStatusType/index.ts | 48 +++ src/views/crm/business/BusinessForm.vue | 281 ++++++++++++++++++ src/views/crm/business/index.vue | 207 +++++++++++++ .../BusinessStatusTypeForm.vue | 173 +++++++++++ src/views/crm/businessStatusType/index.vue | 171 +++++++++++ 6 files changed, 932 insertions(+) create mode 100644 src/api/crm/business/index.ts create mode 100644 src/api/crm/businessStatusType/index.ts create mode 100644 src/views/crm/business/BusinessForm.vue create mode 100644 src/views/crm/business/index.vue create mode 100644 src/views/crm/businessStatusType/BusinessStatusTypeForm.vue create mode 100644 src/views/crm/businessStatusType/index.vue diff --git a/src/api/crm/business/index.ts b/src/api/crm/business/index.ts new file mode 100644 index 00000000..89cd871f --- /dev/null +++ b/src/api/crm/business/index.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' + +export interface BusinessVO { + id: number + name: string + statusTypeId: number + statusId: number + contactNextTime: Date + customerId: number + dealTime: Date + price: number + discountPercent: number + productPrice: number + remark: string + ownerUserId: number + roUserIds: string + rwUserIds: string + endStatus: number + endRemark: string + contactLastTime: Date + followUpStatus: number +} + +// 查询商机列表 +export const getBusinessPage = async (params) => { + return await request.get({ url: `/crm/business/page`, params }) +} + +// 查询商机详情 +export const getBusiness = async (id: number) => { + return await request.get({ url: `/crm/business/get?id=` + id }) +} + +// 新增商机 +export const createBusiness = async (data: BusinessVO) => { + return await request.post({ url: `/crm/business/create`, data }) +} + +// 修改商机 +export const updateBusiness = async (data: BusinessVO) => { + return await request.put({ url: `/crm/business/update`, data }) +} + +// 删除商机 +export const deleteBusiness = async (id: number) => { + return await request.delete({ url: `/crm/business/delete?id=` + id }) +} + +// 导出商机 Excel +export const exportBusiness = async (params) => { + return await request.download({ url: `/crm/business/export-excel`, params }) +} diff --git a/src/api/crm/businessStatusType/index.ts b/src/api/crm/businessStatusType/index.ts new file mode 100644 index 00000000..cc4b46aa --- /dev/null +++ b/src/api/crm/businessStatusType/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface BusinessStatusTypeVO { + id: number + name: string + deptIds: number[] + status: boolean +} + +// 查询商机状态类型列表 +export const getBusinessStatusTypePage = async (params) => { + return await request.get({ url: `/crm/business-status-type/page`, params }) +} + +// 查询商机状态类型详情 +export const getBusinessStatusType = async (id: number) => { + return await request.get({ url: `/crm/business-status-type/get?id=` + id }) +} + +// 新增商机状态类型 +export const createBusinessStatusType = async (data: BusinessStatusTypeVO) => { + return await request.post({ url: `/crm/business-status-type/create`, data }) +} + +// 修改商机状态类型 +export const updateBusinessStatusType = async (data: BusinessStatusTypeVO) => { + return await request.put({ url: `/crm/business-status-type/update`, data }) +} + +// 删除商机状态类型 +export const deleteBusinessStatusType = async (id: number) => { + return await request.delete({ url: `/crm/business-status-type/delete?id=` + id }) +} + +// 导出商机状态类型 Excel +export const exportBusinessStatusType = async (params) => { + return await request.download({ url: `/crm/business-status-type/export-excel`, params }) +} + +// 获取商机状态类型信息列表 +export const getBusinessStatusTypeList = async () => { + return await request.get({ url: `/crm/business-status-type/get-simple-list` }) +} + +// 根据类型ID获取商机状态信息列表 +export const getBusinessStatusListByTypeId = async (typeId: number) => { + return await request.get({ url: `/crm/business-status-type/get-status-list?typeId=` + typeId }) +} diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue new file mode 100644 index 00000000..04f1cf5d --- /dev/null +++ b/src/views/crm/business/BusinessForm.vue @@ -0,0 +1,281 @@ + + diff --git a/src/views/crm/business/index.vue b/src/views/crm/business/index.vue new file mode 100644 index 00000000..c1c63fa1 --- /dev/null +++ b/src/views/crm/business/index.vue @@ -0,0 +1,207 @@ + + + diff --git a/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue new file mode 100644 index 00000000..2ba71128 --- /dev/null +++ b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue @@ -0,0 +1,173 @@ + + diff --git a/src/views/crm/businessStatusType/index.vue b/src/views/crm/businessStatusType/index.vue new file mode 100644 index 00000000..7b2725f3 --- /dev/null +++ b/src/views/crm/businessStatusType/index.vue @@ -0,0 +1,171 @@ + + + From b95b8008f7356aac7c57a0548e1e7d6c605bf987 Mon Sep 17 00:00:00 2001 From: Marvin <454846659@qq.com> Date: Sat, 25 Nov 2023 03:52:59 +0800 Subject: [PATCH 12/37] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E5=8F=B3?= =?UTF-8?q?=E4=B8=8A=E8=A7=92=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/RouterSearch/index.vue | 32 ++++++++++++++++++++++++++- src/layout/components/ToolHeader.vue | 5 +++++ src/store/modules/app.ts | 2 ++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/components/RouterSearch/index.vue b/src/components/RouterSearch/index.vue index c12385af..2499dafe 100644 --- a/src/components/RouterSearch/index.vue +++ b/src/components/RouterSearch/index.vue @@ -1,5 +1,5 @@ diff --git a/src/views/crm/customerPoolConf/index.vue b/src/views/crm/config/customerPoolConfig/index.vue similarity index 70% rename from src/views/crm/customerPoolConf/index.vue rename to src/views/crm/config/customerPoolConfig/index.vue index 5fa98711..c7db3301 100644 --- a/src/views/crm/customerPoolConf/index.vue +++ b/src/views/crm/config/customerPoolConfig/index.vue @@ -23,7 +23,7 @@ - + 不启用 启用 @@ -36,7 +36,11 @@ 天未成交 - + 不提醒 提醒 @@ -52,11 +56,10 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index c88137fa..59b18c5b 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,69 +1,5 @@ From cec8582a90e1c6fd3e0ae22aca60093c70768a9b Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 26 Nov 2023 20:18:33 +0800 Subject: [PATCH 16/37] =?UTF-8?q?crm=EF=BC=9Acode=20review=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/clue/ClueForm.vue | 1 + .../customerLimitConfig/customerLimitConfig.ts | 4 ---- .../crm/customer/detail/CustomerBasicInfo.vue | 4 +++- .../crm/customer/detail/CustomerDetails.vue | 4 +++- ...rDetailsTop.vue => CustomerDetailsHeader.vue} | 16 ++++++++++------ src/views/crm/customer/detail/index.vue | 4 ++-- 6 files changed, 19 insertions(+), 14 deletions(-) delete mode 100644 src/views/crm/config/customerLimitConfig/customerLimitConfig.ts rename src/views/crm/customer/detail/{CustomerDetailsTop.vue => CustomerDetailsHeader.vue} (90%) diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index f0cfcab6..1b2637c9 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -10,6 +10,7 @@ + import * as CustomerApi from '@/api/crm/customer' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() diff --git a/src/views/crm/customer/detail/CustomerDetails.vue b/src/views/crm/customer/detail/CustomerDetails.vue index 67beae94..f7c92ca2 100644 --- a/src/views/crm/customer/detail/CustomerDetails.vue +++ b/src/views/crm/customer/detail/CustomerDetails.vue @@ -87,7 +87,9 @@ import * as CustomerApi from '@/api/crm/customer' import { DICT_TYPE } from '@/utils/dict' import { formatDate } from '@/utils/formatTime' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() // 展示的折叠面板 const activeNames = ref(['basicInfo', 'systemInfo']) diff --git a/src/views/crm/customer/detail/CustomerDetailsTop.vue b/src/views/crm/customer/detail/CustomerDetailsHeader.vue similarity index 90% rename from src/views/crm/customer/detail/CustomerDetailsTop.vue rename to src/views/crm/customer/detail/CustomerDetailsHeader.vue index 509d0a27..6e14c829 100644 --- a/src/views/crm/customer/detail/CustomerDetailsTop.vue +++ b/src/views/crm/customer/detail/CustomerDetailsHeader.vue @@ -7,7 +7,7 @@
- + 编辑 更改成交状态 @@ -70,16 +70,20 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 59b18c5b..e6c9e9a9 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,5 +1,5 @@ diff --git a/src/views/crm/business/index.vue b/src/views/crm/business/index.vue new file mode 100644 index 00000000..c1c63fa1 --- /dev/null +++ b/src/views/crm/business/index.vue @@ -0,0 +1,207 @@ + + + diff --git a/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue new file mode 100644 index 00000000..2ba71128 --- /dev/null +++ b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue @@ -0,0 +1,173 @@ + + diff --git a/src/views/crm/businessStatusType/index.vue b/src/views/crm/businessStatusType/index.vue new file mode 100644 index 00000000..7b2725f3 --- /dev/null +++ b/src/views/crm/businessStatusType/index.vue @@ -0,0 +1,171 @@ + + + From 3c19cb1a85b8bec70ce07da17eed2829c632c500 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 25 Nov 2023 12:01:35 +0800 Subject: [PATCH 21/37] =?UTF-8?q?crm=EF=BC=9Acode=20review=20=E5=95=86?= =?UTF-8?q?=E6=9C=BA=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/business/BusinessForm.vue | 20 ++++----- .../BusinessStatusTypeForm.vue | 44 ++++++++----------- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue index 04f1cf5d..53f5cb8d 100644 --- a/src/views/crm/business/BusinessForm.vue +++ b/src/views/crm/business/BusinessForm.vue @@ -10,6 +10,7 @@ + - + import * as BusinessApi from '@/api/crm/business' import * as BusinessStatusTypeApi from '@/api/crm/businessStatusType' -import * as CustomerApi from "@/api/crm/customer"; +import * as CustomerApi from '@/api/crm/customer' import { DICT_TYPE } from '@/utils/dict' -import {ElTable} from "element-plus"; +import { ElTable } from 'element-plus' const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -233,10 +229,12 @@ const resetForm = () => { } formRef.value?.resetFields() } -const changeBusinessStatusType = async (id) => { - // 加载商机状态列表 - businessStatusList.value = await BusinessStatusTypeApi.getBusinessStatusListByTypeId(id) + +/** 加载商机状态列表 */ +const changeBusinessStatusType = async (typeId: number) => { + businessStatusList.value = await BusinessStatusTypeApi.getBusinessStatusListByTypeId(typeId) } + const queryParams = reactive({ pageNo: 1, pageSize: 10, diff --git a/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue index 2ba71128..edf41966 100644 --- a/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue +++ b/src/views/crm/businessStatusType/BusinessStatusTypeForm.vue @@ -23,22 +23,12 @@ - + - + @@ -50,10 +40,13 @@ @@ -69,8 +62,8 @@ diff --git a/src/views/crm/customerPoolConf/index.vue b/src/views/crm/config/customerPoolConfig/index.vue similarity index 70% rename from src/views/crm/customerPoolConf/index.vue rename to src/views/crm/config/customerPoolConfig/index.vue index 5fa98711..c7db3301 100644 --- a/src/views/crm/customerPoolConf/index.vue +++ b/src/views/crm/config/customerPoolConfig/index.vue @@ -23,7 +23,7 @@ - + 不启用 启用 @@ -36,7 +36,11 @@ 天未成交 - + 不提醒 提醒 @@ -52,11 +56,10 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index c88137fa..59b18c5b 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,69 +1,5 @@ From 24773a6eaae8bcd91c83de5c1753c26b20725f27 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 26 Nov 2023 20:18:33 +0800 Subject: [PATCH 23/37] =?UTF-8?q?crm=EF=BC=9Acode=20review=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/clue/ClueForm.vue | 1 + .../customerLimitConfig/customerLimitConfig.ts | 4 ---- .../crm/customer/detail/CustomerBasicInfo.vue | 4 +++- .../crm/customer/detail/CustomerDetails.vue | 4 +++- ...rDetailsTop.vue => CustomerDetailsHeader.vue} | 16 ++++++++++------ src/views/crm/customer/detail/index.vue | 4 ++-- 6 files changed, 19 insertions(+), 14 deletions(-) delete mode 100644 src/views/crm/config/customerLimitConfig/customerLimitConfig.ts rename src/views/crm/customer/detail/{CustomerDetailsTop.vue => CustomerDetailsHeader.vue} (90%) diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index f0cfcab6..1b2637c9 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -10,6 +10,7 @@ + import * as CustomerApi from '@/api/crm/customer' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() diff --git a/src/views/crm/customer/detail/CustomerDetails.vue b/src/views/crm/customer/detail/CustomerDetails.vue index 67beae94..f7c92ca2 100644 --- a/src/views/crm/customer/detail/CustomerDetails.vue +++ b/src/views/crm/customer/detail/CustomerDetails.vue @@ -87,7 +87,9 @@ import * as CustomerApi from '@/api/crm/customer' import { DICT_TYPE } from '@/utils/dict' import { formatDate } from '@/utils/formatTime' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() // 展示的折叠面板 const activeNames = ref(['basicInfo', 'systemInfo']) diff --git a/src/views/crm/customer/detail/CustomerDetailsTop.vue b/src/views/crm/customer/detail/CustomerDetailsHeader.vue similarity index 90% rename from src/views/crm/customer/detail/CustomerDetailsTop.vue rename to src/views/crm/customer/detail/CustomerDetailsHeader.vue index 509d0a27..6e14c829 100644 --- a/src/views/crm/customer/detail/CustomerDetailsTop.vue +++ b/src/views/crm/customer/detail/CustomerDetailsHeader.vue @@ -7,7 +7,7 @@
- + 编辑 更改成交状态 @@ -70,16 +70,20 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 59b18c5b..e6c9e9a9 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,5 +1,5 @@ - + 不启用 启用 @@ -36,7 +36,11 @@ 天未成交 - + 不提醒 提醒 @@ -52,11 +56,10 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index c88137fa..59b18c5b 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,69 +1,5 @@ From ae8cb9218cc4b236daecf9361c8cea74bffc9fad Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 26 Nov 2023 20:18:33 +0800 Subject: [PATCH 30/37] =?UTF-8?q?crm=EF=BC=9Acode=20review=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/clue/ClueForm.vue | 1 + .../customerLimitConfig/customerLimitConfig.ts | 4 ---- .../crm/customer/detail/CustomerBasicInfo.vue | 4 +++- .../crm/customer/detail/CustomerDetails.vue | 4 +++- ...rDetailsTop.vue => CustomerDetailsHeader.vue} | 16 ++++++++++------ src/views/crm/customer/detail/index.vue | 4 ++-- 6 files changed, 19 insertions(+), 14 deletions(-) delete mode 100644 src/views/crm/config/customerLimitConfig/customerLimitConfig.ts rename src/views/crm/customer/detail/{CustomerDetailsTop.vue => CustomerDetailsHeader.vue} (90%) diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index f0cfcab6..1b2637c9 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -10,6 +10,7 @@ + import * as CustomerApi from '@/api/crm/customer' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() diff --git a/src/views/crm/customer/detail/CustomerDetails.vue b/src/views/crm/customer/detail/CustomerDetails.vue index 67beae94..f7c92ca2 100644 --- a/src/views/crm/customer/detail/CustomerDetails.vue +++ b/src/views/crm/customer/detail/CustomerDetails.vue @@ -87,7 +87,9 @@ import * as CustomerApi from '@/api/crm/customer' import { DICT_TYPE } from '@/utils/dict' import { formatDate } from '@/utils/formatTime' -const { customer } = defineProps<{ customer: CustomerApi.CustomerVO }>() +const { customer } = defineProps<{ + customer: CustomerApi.CustomerVO +}>() // 展示的折叠面板 const activeNames = ref(['basicInfo', 'systemInfo']) diff --git a/src/views/crm/customer/detail/CustomerDetailsTop.vue b/src/views/crm/customer/detail/CustomerDetailsHeader.vue similarity index 90% rename from src/views/crm/customer/detail/CustomerDetailsTop.vue rename to src/views/crm/customer/detail/CustomerDetailsHeader.vue index 509d0a27..6e14c829 100644 --- a/src/views/crm/customer/detail/CustomerDetailsTop.vue +++ b/src/views/crm/customer/detail/CustomerDetailsHeader.vue @@ -7,7 +7,7 @@
- + 编辑 更改成交状态 @@ -70,16 +70,20 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 59b18c5b..e6c9e9a9 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,5 +1,5 @@ diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 13d33972..4a115a7f 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -1,16 +1,16 @@ - diff --git a/src/views/crm/customer/index.vue b/src/views/crm/customer/index.vue index 210691b9..edad31b1 100644 --- a/src/views/crm/customer/index.vue +++ b/src/views/crm/customer/index.vue @@ -72,17 +72,10 @@ - - - 搜索 - - - - 重置 - + 搜索 + 重置 - - 新增 + 新增 - - 导出 + 导出 @@ -102,7 +94,13 @@ - + + +