|
@@ -1,4 +1,4 @@
|
|
|
-import request from '@/router/axios';
|
|
|
|
|
|
|
+import request from "@/router/axios";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 营销活动查询参数类型定义
|
|
* 营销活动查询参数类型定义
|
|
@@ -140,6 +140,31 @@ import request from '@/router/axios';
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 审批记录修改参数类型定义
|
|
|
|
|
+ * @typedef {Object} ApprovalRecordUpdateParams
|
|
|
|
|
+ * @property {string|number} id - 审批记录ID
|
|
|
|
|
+ * @property {string|number} activityId - 活动ID
|
|
|
|
|
+ * @property {string} activityCode - 活动编码
|
|
|
|
|
+ * @property {number} approvalStatus - 审批状态 1-待审批 2-审批通过 3-审批拒绝
|
|
|
|
|
+ * @property {string} approvalRemark - 审批备注
|
|
|
|
|
+ * @property {string|number} approverId - 审批人ID
|
|
|
|
|
+ * @property {string} approverName - 审批人姓名
|
|
|
|
|
+ * @property {string} approvalTime - 审批时间
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 审批记录添加参数类型定义
|
|
|
|
|
+ * @typedef {Object} ApprovalRecordAddParams
|
|
|
|
|
+ * @property {string|number} activityId - 活动ID
|
|
|
|
|
+ * @property {string} activityCode - 活动编码
|
|
|
|
|
+ * @property {number} approvalStatus - 审批状态 1-待审批 2-审批通过 3-审批拒绝
|
|
|
|
|
+ * @property {string} approvalRemark - 审批备注
|
|
|
|
|
+ * @property {string|number} approverId - 审批人ID
|
|
|
|
|
+ * @property {string} approverName - 审批人姓名
|
|
|
|
|
+ * @property {string} approvalTime - 审批时间
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
* 营销活动分页查询
|
|
* 营销活动分页查询
|
|
|
* @param {number} current - 当前页码
|
|
* @param {number} current - 当前页码
|
|
|
* @param {number} size - 每页大小
|
|
* @param {number} size - 每页大小
|
|
@@ -147,68 +172,113 @@ import request from '@/router/axios';
|
|
|
* @returns {Promise<ApiResponse<PageResult<MarketingActivityItem>>>} 分页查询结果
|
|
* @returns {Promise<ApiResponse<PageResult<MarketingActivityItem>>>} 分页查询结果
|
|
|
*/
|
|
*/
|
|
|
export const getList = (current, size, params = {}) => {
|
|
export const getList = (current, size, params = {}) => {
|
|
|
- return request({
|
|
|
|
|
- url: '/api/blade-factory/api/factory/marketing-activity',
|
|
|
|
|
- method: 'get',
|
|
|
|
|
- params: {
|
|
|
|
|
- ...params,
|
|
|
|
|
- current,
|
|
|
|
|
- size
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: "/api/blade-factory/api/factory/marketing-activity",
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ params: {
|
|
|
|
|
+ ...params,
|
|
|
|
|
+ current,
|
|
|
|
|
+ size
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取营销活动详情
|
|
* 获取营销活动详情
|
|
|
* @param {string|number} activityId - 活动ID
|
|
* @param {string|number} activityId - 活动ID
|
|
|
* @returns {Promise<ApiResponse<MarketingActivityItem>>} 活动详情
|
|
* @returns {Promise<ApiResponse<MarketingActivityItem>>} 活动详情
|
|
|
*/
|
|
*/
|
|
|
-export const getDetail = (activityId) => {
|
|
|
|
|
- return request({
|
|
|
|
|
- url: `/api/blade-factory/api/factory/marketing-activity/${activityId}`,
|
|
|
|
|
- method: 'get'
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+export const getDetail = activityId => {
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: `/api/blade-factory/api/factory/marketing-activity/${activityId}`,
|
|
|
|
|
+ method: "get"
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 修改营销活动(主要用于审批操作)
|
|
* 修改营销活动(主要用于审批操作)
|
|
|
* @param {MarketingActivityForm} row - 活动数据
|
|
* @param {MarketingActivityForm} row - 活动数据
|
|
|
* @returns {Promise<ApiResponse<boolean>>} 修改结果
|
|
* @returns {Promise<ApiResponse<boolean>>} 修改结果
|
|
|
*/
|
|
*/
|
|
|
-export const update = (row) => {
|
|
|
|
|
- return request({
|
|
|
|
|
- url: '/api/blade-factory/api/factory/marketing-activity',
|
|
|
|
|
- method: 'put',
|
|
|
|
|
- data: row
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+export const update = row => {
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: "/api/blade-factory/api/factory/marketing-activity",
|
|
|
|
|
+ method: "put",
|
|
|
|
|
+ data: row
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 审批营销活动
|
|
* 审批营销活动
|
|
|
* @param {ApprovalParams} params - 审批参数
|
|
* @param {ApprovalParams} params - 审批参数
|
|
|
|
|
+ * @param {Object} userInfo - 当前用户信息
|
|
|
|
|
+ * @param {string|number} userInfo.userId - 用户ID
|
|
|
|
|
+ * @param {string} userInfo.userName - 用户姓名
|
|
|
* @returns {Promise<ApiResponse<boolean>>} 审批结果
|
|
* @returns {Promise<ApiResponse<boolean>>} 审批结果
|
|
|
*/
|
|
*/
|
|
|
-export const approve = async (params) => {
|
|
|
|
|
- const { id, approvalStatus, approvalRemark } = params
|
|
|
|
|
-
|
|
|
|
|
- // 先获取活动详情
|
|
|
|
|
- const detailRes = await getDetail(id)
|
|
|
|
|
- if (!detailRes.data.success) {
|
|
|
|
|
- throw new Error('获取活动详情失败')
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- const activityData = detailRes.data.data
|
|
|
|
|
-
|
|
|
|
|
- // 构建更新数据
|
|
|
|
|
- const updateData = {
|
|
|
|
|
- ...activityData,
|
|
|
|
|
- approvalStatus,
|
|
|
|
|
- approvalRemark,
|
|
|
|
|
- approvalTime: new Date().toISOString().replace('T', ' ').substring(0, 19)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return update(updateData)
|
|
|
|
|
-}
|
|
|
|
|
|
|
+export const approveWithSmartRecord = async (params, userInfo) => {
|
|
|
|
|
+ const { id, approvalStatus, approvalRemark } = params;
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 先获取活动详情
|
|
|
|
|
+ const detailRes = await getDetail(id);
|
|
|
|
|
+ if (!detailRes.data.success) {
|
|
|
|
|
+ throw new Error("获取活动详情失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const activityData = detailRes.data.data;
|
|
|
|
|
+ const currentTime = new Date()
|
|
|
|
|
+ .toISOString()
|
|
|
|
|
+ .replace("T", " ")
|
|
|
|
|
+ .substring(0, 19);
|
|
|
|
|
+
|
|
|
|
|
+ // 构建更新数据
|
|
|
|
|
+ const updateData = {
|
|
|
|
|
+ ...activityData,
|
|
|
|
|
+ approvalStatus,
|
|
|
|
|
+ approvalRemark,
|
|
|
|
|
+ approvalTime: currentTime,
|
|
|
|
|
+ approverId: userInfo.userId,
|
|
|
|
|
+ approverName: userInfo.userName
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 执行审批更新
|
|
|
|
|
+ const updateResult = await update(updateData);
|
|
|
|
|
+
|
|
|
|
|
+ if (updateResult.data.success) {
|
|
|
|
|
+ // 审批成功后,智能保存审批记录
|
|
|
|
|
+ const approvalRecordData = {
|
|
|
|
|
+ activityId: activityData.id,
|
|
|
|
|
+ activityCode: activityData.activityCode,
|
|
|
|
|
+ approvalStatus,
|
|
|
|
|
+ approvalRemark,
|
|
|
|
|
+ approverId: userInfo.userId,
|
|
|
|
|
+ approverName: userInfo.userName,
|
|
|
|
|
+ approvalTime: currentTime
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const recordResult = await saveApprovalRecord(
|
|
|
|
|
+ activityData.id,
|
|
|
|
|
+ userInfo.userId,
|
|
|
|
|
+ approvalRecordData
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ if (!recordResult.data.success) {
|
|
|
|
|
+ console.warn("审批记录保存失败:", recordResult.data.msg);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (recordError) {
|
|
|
|
|
+ console.error("保存审批记录失败:", recordError);
|
|
|
|
|
+ // 审批记录保存失败不影响主流程,只记录错误日志
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return updateResult;
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error("审批操作失败:", error);
|
|
|
|
|
+ throw error;
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取营销活动审批记录列表
|
|
* 获取营销活动审批记录列表
|
|
@@ -218,25 +288,90 @@ export const approve = async (params) => {
|
|
|
* @returns {Promise<ApiResponse<PageResult<ApprovalRecordItem>>>} 审批记录分页查询结果
|
|
* @returns {Promise<ApiResponse<PageResult<ApprovalRecordItem>>>} 审批记录分页查询结果
|
|
|
*/
|
|
*/
|
|
|
export const getApprovalRecords = (current, size, activityId) => {
|
|
export const getApprovalRecords = (current, size, activityId) => {
|
|
|
- return request({
|
|
|
|
|
- url: '/api/blade-factory/api/factory/activity-approval',
|
|
|
|
|
- method: 'get',
|
|
|
|
|
- params: {
|
|
|
|
|
- current,
|
|
|
|
|
- size,
|
|
|
|
|
- activityId
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: "/api/blade-factory/api/factory/activity-approval",
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ params: {
|
|
|
|
|
+ current,
|
|
|
|
|
+ size,
|
|
|
|
|
+ activityId
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取单条审批记录详情
|
|
* 获取单条审批记录详情
|
|
|
* @param {string|number} activityApprovalId - 审批记录ID
|
|
* @param {string|number} activityApprovalId - 审批记录ID
|
|
|
* @returns {Promise<ApiResponse<ApprovalRecordItem>>} 审批记录详情
|
|
* @returns {Promise<ApiResponse<ApprovalRecordItem>>} 审批记录详情
|
|
|
*/
|
|
*/
|
|
|
-export const getApprovalRecordDetail = (activityApprovalId) => {
|
|
|
|
|
- return request({
|
|
|
|
|
- url: `/api/blade-factory/api/factory/activity-approval/${activityApprovalId}`,
|
|
|
|
|
- method: 'get'
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+export const getApprovalRecordDetail = activityApprovalId => {
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: `/api/blade-factory/api/factory/activity-approval/${activityApprovalId}`,
|
|
|
|
|
+ method: "get"
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 添加审批记录
|
|
|
|
|
+ * @param {ApprovalRecordAddParams} params - 审批记录参数
|
|
|
|
|
+ * @returns {Promise<ApiResponse<boolean>>} 添加结果
|
|
|
|
|
+ */
|
|
|
|
|
+export const addApprovalRecord = params => {
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: "/api/blade-factory/api/factory/activity-approval",
|
|
|
|
|
+ method: "post",
|
|
|
|
|
+ data: params
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 修改审批记录
|
|
|
|
|
+ * @param {ApprovalRecordUpdateParams} params - 审批记录修改参数
|
|
|
|
|
+ * @returns {Promise<ApiResponse<boolean>>} 修改结果
|
|
|
|
|
+ */
|
|
|
|
|
+export const updateApprovalRecord = params => {
|
|
|
|
|
+ return request({
|
|
|
|
|
+ url: "/api/blade-factory/api/factory/activity-approval",
|
|
|
|
|
+ method: "put",
|
|
|
|
|
+ data: params
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 保存审批记录(如果存在则修改,不存在则添加)
|
|
|
|
|
+ * @param {string|number} activityId - 活动ID
|
|
|
|
|
+ * @param {string|number} approverId - 审批人ID
|
|
|
|
|
+ * @param {ApprovalRecordAddParams} approvalData - 审批记录数据
|
|
|
|
|
+ * @returns {Promise<ApiResponse<boolean>>} 保存结果
|
|
|
|
|
+ */
|
|
|
|
|
+export const saveApprovalRecord = async (
|
|
|
|
|
+ activityId,
|
|
|
|
|
+ approverId,
|
|
|
|
|
+ approvalData
|
|
|
|
|
+) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 先查询是否已有该活动的审批记录
|
|
|
|
|
+ const recordsResponse = await getApprovalRecords(1, 100, activityId);
|
|
|
|
|
+
|
|
|
|
|
+ if (
|
|
|
|
|
+ recordsResponse.data.success &&
|
|
|
|
|
+ recordsResponse.data.data.records.length > 0
|
|
|
|
|
+ ) {
|
|
|
|
|
+ const existingRecord = recordsResponse.data.data.records[0];
|
|
|
|
|
+
|
|
|
|
|
+ const updateParams = {
|
|
|
|
|
+ ...approvalData,
|
|
|
|
|
+ id: existingRecord.id,
|
|
|
|
|
+ approverId: existingRecord.approverId
|
|
|
|
|
+ };
|
|
|
|
|
+ return await updateApprovalRecord(updateParams);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 如果查询失败或没有记录,则添加新记录
|
|
|
|
|
+ return await addApprovalRecord(approvalData);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error("保存审批记录失败:", error);
|
|
|
|
|
+ // 如果查询失败,尝试添加新记录
|
|
|
|
|
+ return await addApprovalRecord(approvalData);
|
|
|
|
|
+ }
|
|
|
|
|
+};
|