Bläddra i källkod

调整API文件

sgc 4 veckor sedan
förälder
incheckning
0d714b448f
41 ändrade filer med 0 tillägg och 3155 borttagningar
  1. 0 102
      src/api/activity.ts
  2. 0 49
      src/api/modules/Reconciliation.ts
  3. 0 27
      src/api/modules/aiCustomerService.ts
  4. 0 17
      src/api/modules/audit.ts
  5. 0 32
      src/api/modules/banner.ts
  6. 0 30
      src/api/modules/classification.ts
  7. 0 44
      src/api/modules/coBrandedCard.ts
  8. 0 25
      src/api/modules/course.ts
  9. 0 95
      src/api/modules/discount.ts
  10. 0 27
      src/api/modules/dynamic.ts
  11. 0 53
      src/api/modules/essentialModuleInformation.ts
  12. 0 60
      src/api/modules/groupPackage.ts
  13. 0 5
      src/api/modules/login.ts
  14. 0 81
      src/api/modules/masterManagemen.ts
  15. 0 26
      src/api/modules/order.ts
  16. 0 118
      src/api/modules/secondHandTrading.ts
  17. 0 34
      src/api/modules/staffConfig.ts
  18. 0 39
      src/api/modules/statistics.ts
  19. 0 25
      src/api/modules/storeCommentAppeal.ts
  20. 0 30
      src/api/modules/storeDictionary.ts
  21. 0 175
      src/api/modules/storeUser.ts
  22. 0 12
      src/api/modules/upgrade.ts
  23. 0 91
      src/api/modules/user.ts
  24. 0 24
      src/api/modules/violation.ts
  25. 0 11
      src/api/modules/vip.ts
  26. 0 6
      src/views/form/basicForm/index.scss
  27. 0 71
      src/views/form/basicForm/index.vue
  28. 0 6
      src/views/form/dynamicForm/index.scss
  29. 0 104
      src/views/form/dynamicForm/index.vue
  30. 0 4
      src/views/form/proForm/index.scss
  31. 0 84
      src/views/form/proForm/index.vue
  32. 0 6
      src/views/form/validateForm/index.scss
  33. 0 123
      src/views/form/validateForm/index.vue
  34. 0 183
      src/views/proTable/complexProTable/index.vue
  35. 0 191
      src/views/proTable/components/StoreUserDrawer.vue
  36. 0 216
      src/views/proTable/components/StoreUserDrawer_old.vue
  37. 0 119
      src/views/proTable/components/UserDrawer.vue
  38. 0 229
      src/views/proTable/components/banner.vue
  39. 0 255
      src/views/proTable/components/course.vue
  40. 0 142
      src/views/proTable/treeProTable/index.vue
  41. 0 184
      src/views/proTable/useSelectFilter/index.vue

+ 0 - 102
src/api/activity.ts

@@ -1,102 +0,0 @@
-import http from "@/api";
-import type { Activity } from "./interface/activity";
-
-// 获取活动详情
-export const getActivityDetail = (params: { id: string }) => {
-  return http.get<Activity.ActivityFormData>("/store-activity/detail", params);
-};
-
-// 保存活动
-export const saveActivity = (data: Activity.ActivityFormData) => {
-  return http.post<Activity.ActivityFormData>("/store-activity/saveActive", data);
-};
-
-// 更新活动
-export const updateActivity = (data: Activity.ActivityFormData) => {
-  return http.post<Activity.ActivityFormData>("/store-activity/editActive", data);
-};
-
-// web端根据关键字获取商家信息
-export const getMerchantInfo = (params: { keyword: string }) => {
-  return http.get<Activity.ActivityFormData>("/store-activity/getStoreInfoByKeyword", params);
-};
-
-// web端根据关键字获取用户端用户信息
-export const getUserInfo = (params: { keyword: string }) => {
-  return http.get<Activity.ActivityFormData>("/store-activity/getUserInfoByKeyword", params);
-};
-
-//web端获取活动列表
-export const getActiveList = (params: { keyword: string }) => {
-  return http.get<Activity.ActivityFormData>("/store-activity/getActiveList", params);
-};
-
-// 审批活动
-export const approvalActivities = (params: { id: string; approvalStatus: number; approvalOpinion: string }) => {
-  return http.post<Activity.ActivityFormData>("/store-activity/approvalActivities", params);
-};
-// 创建签到活动
-export const createOrUpdateActivity = data => {
-  return http.post<Activity.ActivityFormData>("/activity/createOrUpdateActivity", data);
-};
-// 签到活动列表
-export const getActivityConfigList = params => {
-  return http.get<Activity.ActivityFormData>("/activity/getActivityConfigList", params);
-};
-// 签到活动详情
-export const getActivitySignInConfigById = params => {
-  return http.get<Activity.ActivityFormData>("/activity/getActivitySignInConfigById", params);
-};
-// 修改活动状态
-export const updateActivityStatus = params => {
-  return http.get<Activity.ActivityFormData>("/activity/updateActivityStatus", params);
-};
-//删除活动
-export const deleteActivity = params => {
-  return http.get<Activity.ActivityFormData>("/activity/deleteActivity", params);
-};
-// 获取基础活动详情
-export const getDefaultActivitySignInConfigById = params => {
-  return http.get<Activity.ActivityFormData>("/activity/getDefaultActivitySignInConfigById", params);
-};
-// 校验活动日期是否重叠
-export const checkOverlapTime = params => {
-  return http.get<Activity.ActivityFormData>("/activity/checkOverlapTime", params);
-};
-// 邀请活动列表
-export const getInviteActivityConfigList = params => {
-  return http.get<Activity.ActivityFormData>("/activityInvite/getInviteActivityConfigList", params);
-};
-// 创建/编辑邀请活动列表
-export const createOrUpdateInviteActivity = params => {
-  return http.post<Activity.ActivityFormData>("/activityInvite/createOrUpdateInviteActivity", params);
-};
-// 获取详情
-export const getInviteActivitySignInConfigById = params => {
-  return http.get<Activity.ActivityFormData>("/activityInvite/getInviteActivitySignInConfigById", params);
-};
-// 删除邀请活动列表
-export const deleteInviteActivity = params => {
-  return http.get<Activity.ActivityFormData>("/activityInvite/deleteInviteActivity", params);
-};
-// 修改状态--邀请活动
-export const updateActivityStatus2 = params => {
-  return http.get<Activity.ActivityFormData>("/activityInvite/updateActivityStatus", params);
-};
-// 返回优惠券列表
-export const getPlatformCoupon = params => {
-  return http.get<Activity.ActivityFormData>("/life-discount-coupon/getPlatformCoupon", params);
-};
-// 邀请下载列表
-export const getInviteActivityLogList = params => {
-  return http.get<Activity.ActivityFormData>("/activityInvite/getInviteActivityLogList", params);
-};
-
-//活动管理页面导出excel
-export const exportExcel = (params: {}) => {
-  return http.get(
-    `/store-activity/exportExcel
-`,
-    params
-  );
-};

+ 0 - 49
src/api/modules/Reconciliation.ts

@@ -1,49 +0,0 @@
-import { ResPage, Reconciliation } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 对账结算模块
- */
-// 获取结算列表
-export const getReconciliationList = (params: Reconciliation.ReconciliationParams) => {
-  return http.get<ResPage<Reconciliation.ReconciliationParams>>(PORT_NONE + `/management_info/getManagementInfo`, params);
-};
-
-// 统计查询
-export const getStatistics = (params: { queryType: string }) => {
-  return http.get(PORT_NONE + `/management_info/storeBillingStatistics`, params);
-};
-
-// 查询详情
-export const getDetails = params => {
-  return http.get(PORT_NONE + `/management_info/getStoreOrderDetail`, params);
-};
-//详情统计
-export const getDetailStatis = params => {
-  return http.get(PORT_NONE + `/management_info/storeDetailBillingStatistics`, params);
-};
-//提现列表
-export const getWithdrawalList = params => {
-  return http.get(PORT_NONE + `/management_info/getApplicationForWithdrawal`, params);
-};
-//获取下载地址
-export const getDownloadUrl = params => {
-  return http.get(PORT_NONE + `/management_info/generateClearingReceipt`, params);
-};
-// 商户提现-提现审核
-export const approveCashOut = params => {
-  return http.get(PORT_NONE + `/storeIncomeDetailsRecord/approveCashOut`, params);
-};
-//获取提现详情
-export const getCashOutDetail = params => {
-  return http.get(PORT_NONE + `/management_info/getCashOutDetail`, params);
-};
-// 商户对账-冻结期设置
-export const editConfig = params => {
-  return http.put(PORT_NONE + `/dict/editConfig`, params);
-};
-// 商户对账-冻结期详情
-export const getConfig = params => {
-  return http.get(PORT_NONE + `/dict/getConfig`, params);
-};

+ 0 - 27
src/api/modules/aiCustomerService.ts

@@ -1,27 +0,0 @@
-import { ResPage, AiCustomerService } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-/**
- * @name AI智能客服
- */
-// 获取订单列表
-export const getList = (params: AiCustomerService.AiCustomerServiceParams) => {
-  // return http.get<ResPage<Order.OrderParams>>(PORT_NONE + `/userorder/getOrderListByStatus`, params);
-  return http.get<ResPage<AiCustomerService.AiCustomerServiceParams>>(PORT_NONE + `/storeCustomerService/getStoreCustomerServicePage`, params);
-};
-
-// 订单详情
-export const getDetail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeCustomerService/getById`, params);
-};
-
-// 新增问题
-export const saveStoreCustomerService = (params: AiCustomerService.AiCustomerServiceList) => {
-  return http.post(`/storeCustomerService/saveStoreCustomerService`, params);
-};
-
-// 订单详情
-export const delStoreCustomerService = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeCustomerService/delStoreCustomerService`, params);
-};
-

+ 0 - 17
src/api/modules/audit.ts

@@ -1,17 +0,0 @@
-import { ResPage, Audit } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 审核模块
- */
-
-// 获取审核列表
-export const getAuditList = (params: Audit.ReqAuditParams) => {
-  return http.get<ResPage<Audit.ResAuditList>>(`/webAudit/getAuditList`, params);
-};
-
-// 获取待审核Sum
-export const getAuditSum = (params: Audit.ReqAuditParams) => {
-  return http.get<ResPage<Audit.ResAuditList>>(`/webAudit/getAuditSum`, params);
-};

+ 0 - 32
src/api/modules/banner.ts

@@ -1,32 +0,0 @@
-import { ResPage, Banner } from "@/api/interface/index";
-import http from "@/api";
-
-/**
- * @name 课程banner管理
- */
-
-// 获取banner列表
-export const getBannerList = (params: Banner.ReqBannerParams) => {
-  return http.get<ResPage<Banner.ResBannerList>>(`/classes/getClassBannerPages`, params);
-};
-// 新增banner
-export const addBanner = (data: Banner.ResBannerList) => {
-  return http.post(`/classes/saveClassBanner`, data, {
-    headers: {
-      "Content-Type": "application/json"
-    }
-  });
-};
-
-// banner排序
-export const sortBanner = (data: Banner.ResBannerList[]) => {
-  return http.post(`/classes/updateSort`, data);
-};
-// 删除banner
-export const deleteBanner = (params: { id: String }) => {
-  return http.post(`/classes/delClassBanner`, params, {
-    headers: {
-      "Content-Type": "application/x-www-form-urlencoded"
-    }
-  });
-};

+ 0 - 30
src/api/modules/classification.ts

@@ -1,30 +0,0 @@
-import { ResPage, EssentialModuleClassification } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 商铺用户模块
- */
-// 获取商铺用户列表
-export const getList = (params: {}) => {
-  const data = http.get<ResPage<EssentialModuleClassification.ResClassificationList>>(
-    PORT_NONE + `/store/tag/getTagList`,
-    params
-  );
-  return data;
-};
-
-// 新增标签
-export const add = (params: {}) => {
-  return http.post(PORT_NONE + `/store/tag/createTag`, params);
-};
-
-// 编辑标签
-export const edit = (params: {}) => {
-  return http.post(PORT_NONE + `/store/tag/updateTagCategory`, params);
-};
-
-// 删除标签
-export const del = (params: {}) => {
-  return http.post(PORT_NONE + `/store/tag/deleteTagCategory`, params);
-};

+ 0 - 44
src/api/modules/coBrandedCard.ts

@@ -1,44 +0,0 @@
-import { ResPage, CoBrandedCard } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 联名卡管理模块
- */
-// 获取套餐列表
-export const getCoBrandedCardList = (params: CoBrandedCard.CoBrandedCardParams) => {
-  return http.get<ResPage<CoBrandedCard.CoBrandedCardParams>>(PORT_NONE + `/platformBrandedCard/getBrandedCardList`, params);
-};
-
-// 套餐详情
-export const getDeatail = (params: { id: string[] }) => {
-  return http.get(PORT_NONE + `/platformBrandedCard/getBrandedCardDetail`, params);
-};
-
-// 下架
-export const changeStatus = params => {
-  return http.get(PORT_NONE + `/platformBrandedCard/removeShelf`, params);
-};
-//添加联名卡
-export const addBrandedCard = params => {
-  return http.post(PORT_NONE + `/platformBrandedCard/saveBrandedCard`, params);
-};
-
-//获取店铺列表
-export const getStoreList = params => {
-  return http.get(PORT_NONE + `/platformBrandedCard/getStoreList`, params);
-};
-
-//获取套餐列表
-export const getQuanListByStoreId = params => {
-  return http.get(PORT_NONE + `/platformBrandedCard/getQuanListByStoreId`, params);
-};
-
-//删除联名卡
-export const deleteBrandedCard = params => {
-  return http.get(PORT_NONE + `/platformBrandedCard/deleteById`, params);
-};
-//上架联名卡
-export const reupBrandedCard = params => {
-  return http.get(PORT_NONE + `/platformBrandedCard/putawayShelf`, params);
-};

+ 0 - 25
src/api/modules/course.ts

@@ -1,25 +0,0 @@
-import { ResPage, Course } from "@/api/interface/index";
-import { PORT1 } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 课程管理模块
- */
-
-// 获取课程列表
-export const getCourseList = (params: Course.ReqCourseParams) => {
-  return http.get<ResPage<Course.ResCourseList>>(`/platformClass/getClassManageList`, params);
-};
-// 新增课程
-export const addCourse = (params: Course.ResCourseList) => {
-  return http.post(`/platformClass/addOrUpdateClassManage`, params);
-};
-// 修改课程状态
-export const editCourse = (params: Course.ResCourseList) => {
-  return http.post(PORT1 + `/platformClass/setClassState`, params);
-};
-// 删除课程
-export const deleteCourse = (params: Course.ResCourseList) => {
-  return http.get(`/platformClass/deleteClassById`, params);
-};
-

+ 0 - 95
src/api/modules/discount.ts

@@ -1,95 +0,0 @@
-import { ResPage, Course, Discount } from "@/api/interface/index";
-import http from "@/api";
-
-/**
- * 获取平台优惠券列表
- * @param params
- * @returns
- */
-export const getPlatformCouponList = (params: Course.ReqCourseParams) => {
-  return http.get<ResPage<Course.ResCourseList>>(`/life-discount-coupon/getPlatformCouponList`, params);
-};
-
-/**
- * 新增优惠券
- * @param params
- * @returns
- */
-export const addDiscountCoupon = (params: Course.ResCourseList) => {
-  return http.post(`/life-discount-coupon/addPlatformCoupon`, params);
-};
-
-/**
- * 删除优惠券
- * @param params
- * @returns
- */
-export const deleteDiscountCoupon = (params: Course.ResCourseList) => {
-  return http.delete(`/life-discount-coupon/deleteDiscountCoupon/${params.id}`, params);
-};
-
-/**
- * 删除平台优惠券
- * @param params
- * @returns
- */
-export const deletePlatformCoupon = (params: Course.ResCourseList) => {
-  return http.get(`/life-discount-coupon/deletePlatformCoupon`, params);
-};
-
-/**
- * 获取优惠券详情
- * @param params
- * @returns
- */
-export const getPlatformCouponDetail = (params: Course.ResCourseList) => {
-  return http.get(`/life-discount-coupon/getOnePlatformCoupon`, params);
-};
-
-/**
- * 发放优惠券
- * @param params
- * @returns
- */
-export const distributePlatformCoupon = (params: Course.ResCourseList) => {
-  return http.get(`/life-discount-coupon/issuePlatformCoupon`, params);
-};
-
-/**
- * 暂停发放优惠券
- * @param params
- * @returns
- */
-export const pauseDistributePlatformCoupon = (params: Course.ResCourseList) => {
-  return http.post(`/life-discount-coupon/pauseDistributePlatformCoupon`, params);
-};
-
-/**
- * 收回平台优惠券, 删除已经发放的,并getStatus为0
- * @param params
- * @returns
- */
-export const recoverPlatformCoupon = (params: Course.ResCourseList) => {
-  return http.get(`/life-discount-coupon/recoverPlatformCoupon`, params);
-};
-
-/**
- * 分页查询该券发放记录
- * @param params
- * @returns
- */
-export const getPlatformCouponLogList = (params: Discount.ReqPlatformCouponLogParams) => {
-  return http.get(`/life-discount-coupon/getPlatformCouponLogList`, params);
-};
-
-export default {
-  addDiscountCoupon,
-  getPlatformCouponList,
-  getPlatformCouponDetail,
-  distributePlatformCoupon,
-  pauseDistributePlatformCoupon,
-  deleteDiscountCoupon,
-  deletePlatformCoupon,
-  recoverPlatformCoupon,
-  getPlatformCouponLogList
-};

+ 0 - 27
src/api/modules/dynamic.ts

@@ -1,27 +0,0 @@
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-// 动态列表
-export const getDynamicsList = (params: any) => {
-  return http.get(PORT_NONE + `/userDynamics/getDynamicsList`, params);
-};
-
-// 动态详情
-export const getDynamicsDetail = (params: any) => {
-  return http.get(PORT_NONE + `/userDynamics/getDynamicsDetail`, params);
-};
-
-// 动态启用禁用
-export const setEnableStatus = (data: any) => {
-  return http.post(PORT_NONE + `/userDynamics/setEnableStatus`, data);
-};
-
-// 置顶/取消功能
-export const setTopStatus = (data: any) => {
-  return http.post(PORT_NONE + `/userDynamics/setTopStatus`, data);
-};
-
-// 删除动态
-export const deleteDynamicsById = (id: String) => {
-  return http.get(PORT_NONE + `/userDynamics/deleteDynamicsById`, { id: id });
-};

+ 0 - 53
src/api/modules/essentialModuleInformation.ts

@@ -1,53 +0,0 @@
-import { ResPage, EssentialModuleInformation } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 商铺用户模块
- */
-// 获取商铺用户列表
-export const getList = (params: EssentialModuleInformation.ReqInformationParams) => {
-  const data = http.get<ResPage<EssentialModuleInformation.ResInformationList>>(
-    PORT_NONE + `/essential-module-information/getList`,
-    params
-  );
-  return data;
-};
-
-//获取一级数据
-export const getFirstLevelData = (params: EssentialModuleInformation.ReqInformationParams) => {
-  const data = http.get<ResPage<EssentialModuleInformation.ResInformationList>>(
-    PORT_NONE + `/essential-module-information/getPrimaryData`,
-    params
-  );
-  return data;
-};
-
-//根据id获取二级数据
-export const getSecondLevelData = (params: EssentialModuleInformation.ReqInformationParams) => {
-  const data = http.get<ResPage<EssentialModuleInformation.ResInformationList>>(
-    PORT_NONE + `/essential-module-information/getChildByParentId`,
-    params
-  );
-  return data;
-};
-// 新增商铺用户
-export const addInformation = (params: {}) => {
-  console.log(params);
-  return http.post(PORT_NONE + `/essential-module-information/addInformation`, params);
-};
-
-// 修改商铺用户
-export const editInformation = (params: {}) => {
-  return http.put(PORT_NONE + `/essential-module-information/editInformation`, params);
-};
-
-// 删除商铺用户
-export const deleteInformation = (params: { id: string }) => {
-  return http.delete(PORT_NONE + `/essential-module-information/deleteInformation`, params);
-};
-
-// // 重置商户或者用户密码
-// export const resetStoreUserPassWord = (params: { id: string }) => {
-//   return http.post(PORT_NONE + `/store/info/restPassword`, params);
-// };

+ 0 - 60
src/api/modules/groupPackage.ts

@@ -1,60 +0,0 @@
-import { ResPage, GroupPackage } from "@/api/interface/index";
-import { PORT1, PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 套餐管理模块
- */
-// 获取套餐列表
-export const getGroupPackageList = (params: GroupPackage.GroupPackageParams) => {
-  return http.get<ResPage<GroupPackage.GroupPackageParams>>(PORT_NONE + `/platformLifeUser/getCouponList`, params);
-};
-
-// new获取套餐列表
-export const getLifeGroupBuyMainList = (params: GroupPackage.GroupPackageParams) => {
-  return http.get<ResPage<GroupPackage.GroupPackageParams>>(PORT_NONE + `/platformLifeUser/getLifeGroupBuyMainList`, params);
-};
-
-/**
- * 获取套餐状态列表
- * @param params 参数
- * @returns 套餐状态列表
- */
-export const getCouponStatusList = (params: GroupPackage.GroupPackageParams) => {
-  return http.get<ResPage<GroupPackage.GroupPackageParams>>(PORT_NONE + `/platformLifeUser/getCouponStatusList`, params);
-};
-
-// 套餐详情
-export const getDeatail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/platformLifeUser/getCouponById`, params);
-};
-
-// 新套餐详情
-export const getLifeGroupBuyMainByDetail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/platformLifeUser/getLifeGroupBuyMainByDetail`, params);
-};
-
-// 切换套餐状态
-export const changeStatus = params => {
-  return http.get(PORT_NONE + `/platformLifeUser/approvalCoupon`, params);
-};
-
-// 切换套餐状态
-export const updateStatus = params => {
-  return http.get(PORT_NONE + `/groupBuy/updateStatus`, params);
-};
-
-//套餐过期查询页面导出excel
-export const exportExcelExpirationTime = async (params: { status?: string; expiredState?: string }) => {
-  return http.get(PORT_NONE + `/platformLifeUser/couponStatusExport`, params);
-};
-
-// 删除套餐状态
-export const deleteStatus = params => {
-  return http.get(PORT_NONE + `/platformLifeUser/deleteCouponStatus`, params);
-};
-
-// 套餐详情
-export const getCouponStatusDeatail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/groupPackage/getGroupPackageDetail`, params);
-};

+ 0 - 5
src/api/modules/login.ts

@@ -16,11 +16,6 @@ export const loginApi = (params: Login.ReqLoginForm): Promise<{ data: Login.ResL
   // return http.get<Login.ResLogin>(PORT1 + `/login?${qs.stringify(params, { arrayFormat: "repeat" })}`); // get 请求可以携带数组等复杂参数
 };
 
-// 用户注册
-export const registerApi = (params: Login.ReqRegisterForm): Promise<{ data: Login.ResRegister }> => {
-  return httpLogin.post<Login.ResRegister>(PORT1 + `/register`, params, { loading: false });
-};
-
 // 获取菜单列表
 export const getAuthMenuListApi = () => {
   // return http.get<Menu.MenuOptions[]>(PORT1 + `/menu/list`, {}, { loading: false });

+ 0 - 81
src/api/modules/masterManagemen.ts

@@ -1,81 +0,0 @@
-import { ResPage, Talent } from "@/api/interface/index";
-import http from "@/api";
-
-/**
- * @name 达人管理模块
- */
-
-// 获取达人列表
-export const getTalentList = (params: Talent.ReqTalentParams) => {
-  return http.get<ResPage<Talent.ResTalentList>>(`/lifeUserExpert/getUserExpertList`, params);
-};
-// 合作商家
-export const getCooperateStore = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getCooperateStore`, params);
-};
-// 订单列表
-export const getExpertOrderList = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getExpertOrderList`, params);
-};
-// 占比信息
-export const getExpertOrderRatio = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getPercentageInfo`, params);
-};
-// 作品信息
-export const getExpertWorkInfo = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getWorksInfo`, params);
-};
-// 带货类型
-export const getExpertGoodsType = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/greatGoodsType`, params);
-};
-
-// 达人申请列表
-export const getApplicationExpertList = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getApplicationExpertList`, params);
-};
-
-// 达人申请列表详情
-export const getViewDetails = (userId: string | number) => {
-  return http.get(`/lifeUserExpert/getViewDetails`, { userId });
-};
-
-// 预付款列表
-export const getAdvancePaymentList = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getAdvancePaymentList`, params);
-};
-
-// 预付款审核
-export const getAdvancePaymentReview = (params: any) => {
-  return http.get(`/lifeUserExpert/getAdvancePaymentReview`, params);
-};
-
-// 尾款列表
-export const getFinalPaymentList = (params: Talent.ResTalentList) => {
-  return http.get(`/lifeUserExpert/getFinalPaymentList`, params);
-};
-// 尾款审核
-export const getFinalPaymentReview = (params: any) => {
-  return http.get(`/lifeUserExpert/getFinalPaymentReview`, params);
-};
-
-// 达人审核通过时=>设置佣金比例
-export const updateCommission = (params: any) => {
-  return http.get(`/lifeUserExpert/updateCommission`, params);
-};
-// 已经成为达人=>重设佣金比例
-export const updateProportion = (params: any) => {
-  return http.get(`/lifeUserExpert/updateProportion`, params);
-};
-// 达人用户列表
-export const getUserExpertList = (params: any) => {
-  return http.get(`/lifeUserExpert/getUserExpertList`, params);
-};
-// 达人订单列表
-export const getOrderList = (params: any) => {
-  return http.get(`/lifeUserExpert/getOrderList`, params);
-};
-// 查看数据明细
-export const getDataDetails = (params: any) => {
-  return http.get(`/lifeUserExpert/getDataDetails`, params);
-};

+ 0 - 26
src/api/modules/order.ts

@@ -1,26 +0,0 @@
-import { ResPage, Order } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-/**
- * @name 订单管理模块
- */
-// 获取订单列表
-export const getOrderList = (params: Order.OrderParams) => {
-  // return http.get<ResPage<Order.OrderParams>>(PORT_NONE + `/userorder/getOrderListByStatus`, params);
-  return http.get<ResPage<Order.OrderParams>>(PORT_NONE + `/platformLifeUserOrder/queryOrderList`, params);
-};
-// 获取订单列表2
-export const queryPlatformOrderList = (params: Order.OrderParams) => {
-  // return http.get<ResPage<Order.OrderParams>>(PORT_NONE + `/userorder/getOrderListByStatus`, params);
-  return http.get<ResPage<Order.OrderParams>>(PORT_NONE + `/platformLifeUserOrder/queryPlatformOrderList`, params);
-};
-// 订单详情
-export const getOrderDeatail = (params: { orderId: string }) => {
-  // return http.get(PORT_NONE + `/userorder/getOrderByOrderId`, params);
-  return http.get(PORT_NONE + `/platformLifeUserOrder/queryOrderDetail`, params);
-};
-
-//订单页面导出excel
-export const exportExcel = (params: {}) => {
-  return http.get(PORT_NONE + `/userorder/exportExcel`, params);
-};

+ 0 - 118
src/api/modules/secondHandTrading.ts

@@ -1,118 +0,0 @@
-import { ResPage, SecondHandTrading } from "@/api/interface/index";
-import { PORT1, PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api/indexSecond";
-import storeHttp from "@/api/index";
-
-// 获取交易列表
-export const getTransactionList = (params: SecondHandTrading.SecondHandTradingTransactionParams) => {
-  return http.post<ResPage<SecondHandTrading.SecondHandTradingTransactionList>>(
-    PORT_NONE + `/platformSecondTrade/getTradeRecordPage`,
-    params
-  );
-};
-// 交易详情
-export const getTransactionDetail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/platformSecondTrade/getTradeRecordById`, params);
-};
-// 获取分类管理列表
-export const getCategoryList = (params: SecondHandTrading.SecondHandTradingCategoryParams) => {
-  return http.get<ResPage<SecondHandTrading.SecondHandTradingCategoryList>>(
-    PORT_NONE + `/platformLifeUser/getLifeGroupBuyMainList`,
-    params
-  );
-};
-// 获取二手商品列表
-export const getProductList = params => {
-  return http.post(PORT_NONE + `/admin/secondGoods/list`, params);
-};
-// 获取二手商品详情
-export const getProductDetail = params => {
-  return http.get(PORT_NONE + `/admin/secondGoods/detail`, params);
-};
-// 获取二手商品记录详情
-export const getProductOperationLog = params => {
-  return http.get(PORT_NONE + `/admin/secondGoods/record/detail`, params);
-};
-// 二手商品下架
-export const secondHandTakeDown = data => {
-  return http.post(PORT_NONE + `/secondGoods/shelve`, data);
-};
-
-//添加分类
-export const insertSecondGoodsCategory = params => {
-  return http.post(`/second/goodsCategory/insertSecondGoodsCategory`, params, { loading: false });
-};
-
-// 查询
-export const querySecondGoodsByParentId_p = () => {
-  return http.post(`/second/goodsCategory/querySecondGoodsTree`);
-};
-// export const querySecondGoodsByParentId_p = param => {
-//   return http.post(`/second/goodsCategory/querySecondGoodsByParentId`, param,{
-//     headers: {
-//       "Content-Type": "application/x-www-form-urlencoded"
-//     }
-//   });
-// };
-export const querySecondGoodsByParentId = (params: { parentId: number; categoryState?: number }) => {
-  // 将参数作为查询字符串拼接在URL上
-  const queryString = new URLSearchParams(params as any).toString();
-  return http.post(`/second/goodsCategory/querySecondGoodsByParentId?${queryString}`, {}, { loading: false });
-};
-//编辑
-export const updateSecondGoodsCategory = params => {
-  return http.post(`/second/goodsCategory/updateSecondGoodsCategory`, params, { loading: false });
-};
-// 获取聊天人
-export const getUserMessageList = params => {
-  return storeHttp.get("platformLifeMessage/getMessageList", params);
-};
-// 获取与其的聊天记录
-export const getUserRecord = params => {
-  return storeHttp.get("/message/getMessageListByReceiverId", params);
-};
-// 获取二手交易举报列表
-export const getReportList = (params: SecondHandTrading.SecondHandTradingReportParams) => {
-  return http.post<ResPage<SecondHandTrading.SecondHandTradingReportList>>(
-    PORT_NONE + `/platformUserViolation/queryUserViolationByPage`,
-    params
-  );
-};
-// 二手交易举报详情
-export const getReportDetail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/platformUserViolation/queryUserViolationDetail`, params);
-};
-// 二手交易举报通过驳回
-export const passOrRejectReport = params => {
-  return http.post(PORT_NONE + `/platformUserViolation/updateUserViolation`, params);
-};
-
-//排行榜
-export const getRankingList = params => {
-  return http.get("platformSecondTrade/getRankingList", params);
-};
-
-//排行榜详情
-export const getRankingDetail = params => {
-  return http.get("platformSecondTrade/getTradeRecordList", params);
-};
-
-//排行榜详情 交易有效性提交
-export const submitRanking = params => {
-  return http.get("platformSecondTrade/setTradeFailure", params);
-};
-
-// 获取二手交易安全管控
-export const securityControl = params => {
-  return http.post<ResPage<SecondHandTrading.SecondHandTradingReportList>>(
-    PORT_NONE + `/riskControl/queryRiskControlRecords`,
-    params
-  );
-};
-export const securityControlDetail = params => {
-  return http.post(PORT_NONE + `/riskControl/queryRiskControlRecordsDetail`, params);
-};
-
-export const securityControlDev = params => {
-  return http.post(PORT_NONE + `/riskControl/accountBan`, params);
-};

+ 0 - 34
src/api/modules/staffConfig.ts

@@ -1,34 +0,0 @@
-import { ResPage, StaffConfig } from "@/api/interface/index";
-import { PORT1, PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-/**
- * @name 套餐管理模块
- */
-// 获取套餐列表
-export const getStaffConfigList = (params: StaffConfig.StaffConfigParams) => {
-  return http.get<ResPage<StaffConfig.StaffConfigParams>>(PORT_NONE + `/storeStaffConfig/getStaffConfigList`, params);
-};
-
-export const audit = params => {
-  return http.get<ResPage<StaffConfig.StaffConfigParams>>(PORT_NONE + `/storeStaffConfig/audit`, params);
-};
-
-// 员工详情
-export const getStaffConfigDeatail = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeStaffConfig/getStaffConfigDeatail`, params);
-};
-
-//员工信息查询页面导出excel
-export const exportExcelStaffConfig = (params: { status?: string }) => {
-  return http.get(PORT_NONE + `/storeStaffConfig/staffConfigExport`, params);
-};
-
-// 员工修改
-export const addOrUpdateStaffConfig = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeStaffConfig/addOrUpdateStaffConfig`, params);
-};
-
-//新增商铺信息
-export const saveStoreInfo = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/saveStoreInfo`, params);
-};

+ 0 - 39
src/api/modules/statistics.ts

@@ -1,39 +0,0 @@
-import { ResPage, StoreUser } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 数据可视化统计模块
- */
-// export const getBasicStatistics = (params: StoreUser.ReqUserParams) => {
-//   return http.get<ResPage<StoreUser.ResStoreUserList>>(PORT_NONE + `/management_info/getBasicStatistics`, params);
-// };
-// 数据可视化-获取基础统计数据 ---(今日平台净利润、平台总计净利润、今日订单量、总订单量、今日成交金额、总成交金额)
-export const getBasicStatistics = params => {
-  return http.get(PORT_NONE + `/management_info/getBasicStatistics`, params);
-};
-// 数据可视化-获取净利润
-export const getQueryNetProfit = params => {
-  return http.get(PORT_NONE + `/management_info/getQueryNetProfit`, params);
-};
-// 数据可视化-获取成交金额
-export const getTradingVolume = params => {
-  return http.get(PORT_NONE + `/management_info/getTradingVolume`, params);
-};
-// 数据可视化-获取订单量
-export const getOrderQuantity = params => {
-  return http.get(PORT_NONE + `/management_info/getOrderQuantity`, params);
-};
-// 数据可视化-商铺订单销量排行(单)TOP 10
-export const getSalesVolume = params => {
-  return http.get(PORT_NONE + `/management_info/getSalesVolume`, params);
-};
-// 数据可视化-平台净利润(¥) 详情
-export const getStorePlatformProfitDetails = params => {
-  return http.get(PORT_NONE + `/management_info/getStorePlatformProfitDetails`, params);
-};
-
-// 数据可视化-订单量详情
-export const getStorePlatformOrderVolume = params => {
-  return http.get(PORT_NONE + `/management_info/getStorePlatformOrderVolume`, params);
-};

+ 0 - 25
src/api/modules/storeCommentAppeal.ts

@@ -1,25 +0,0 @@
-import { ResPage, StoreCommentAppeal } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 获取申诉列表
- */
-// 获取申诉列表
-export const getStoreCommentAppealList = (params: StoreCommentAppeal.ReqStoreCommentAppealParams) => {
-  return http.get<ResPage<StoreCommentAppeal.ResStoreCommentAppealList>>(PORT_NONE + `/appeals/getAppeals`, params);
-};
-
-// 驳回审批
-export const rejectClaimFun = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeCommentAppeal/setAppealStatus`, params);
-};
-// 同意申诉
-export const consentComplaintFun = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/storeCommentAppeal/setAppealStatus`, params);
-};
-
-//申诉管理查询页面导出excel
-export const exportExcelClaim = async (params: { appealType?: string; storeName?: string; storePhone?: string }) => {
-  return http.get(PORT_NONE + `/appeals/appealsExport`, params);
-};

+ 0 - 30
src/api/modules/storeDictionary.ts

@@ -1,30 +0,0 @@
-import { ResPage, StoreDictionary } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-//获取一级数据
-export const getFirstLevelData = (params: StoreDictionary.ReqDictionaryParams) => {
-  const data = http.get<ResPage<StoreDictionary.ReqDictionaryParams>>(PORT_NONE + `/dict/getPrimaryData`, params);
-  return data;
-};
-
-//根据id获取二级数据
-export const getSecondLevelData = (params: StoreDictionary.ReqDictionaryParams) => {
-  const data = http.get<ResPage<StoreDictionary.ResDictionaryList>>(PORT_NONE + `/dict/getChildByParentId`, params);
-  return data;
-};
-// 新增词典信息
-export const addInformation = (params: {}) => {
-  console.log(params);
-  return http.post(PORT_NONE + `/dict/addInformation`, params);
-};
-
-// 修改词典信息
-export const editInformation = (params: {}) => {
-  return http.put(PORT_NONE + `/dict/editInformation`, params);
-};
-
-// 删除词典信息
-export const deleteInformation = (params: { id: string }) => {
-  return http.delete(PORT_NONE + `/dict/deleteInformation`, params);
-};

+ 0 - 175
src/api/modules/storeUser.ts

@@ -1,175 +0,0 @@
-import { ResPage, StoreUser } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 商铺用户模块
- */
-// 获取商铺用户列表
-export const getStoreUserList = (params: StoreUser.ReqUserParams) => {
-  return http.get<ResPage<StoreUser.ResStoreUserList>>(PORT_NONE + `/store/user/getStoreUserList`, params);
-};
-
-// 新增商家端用户
-export const addStoreUser = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/user/addStoreUser`, params);
-};
-
-// 修改商家端用户
-export const editStoreUser = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/user/editStoreUser`, params);
-};
-
-// 重置商家端用户密码及支付密码
-export const resetStoreUserPassword = (params: { id: string }) => {
-  return http.put(PORT_NONE + `/store/user/resetStoreUserPassword`, params);
-};
-
-// 删除商家端用户
-export const deleteStoreUser = (params: { id: string }) => {
-  return http.delete(PORT_NONE + `/store/user/deleteStoreUser`, params);
-};
-
-// 切换商家端用户状态
-export const switchingStates = (params: { id: string }) => {
-  return http.put(PORT_NONE + `/store/user/switchingStates`, params);
-};
-
-// 获取商铺列表
-export const getStoreInfoList = (params: StoreUser.ReqUserParams) => {
-  return http.get<ResPage<StoreUser.ResStoreUserList>>(PORT_NONE + `/store/info/getStorePage`, params);
-};
-
-//获取商铺经营板块列表
-export const getBusinessSection = () => {
-  return http.get(PORT_NONE + `/store/info/getBusinessSection`);
-};
-
-//获取商铺经营种类列表
-export const getBusinessSectionTypes = (params: { parentId: string }) => {
-  return http.get<ResPage<StoreUser.ResStoreUserList>>(PORT_NONE + `/store/info/getBusinessSectionTypes`, params);
-};
-
-//获取未绑定的商家端账号
-export const getUnboundAccountList = (params: { id: string }) => {
-  return http.get(PORT_NONE + `/store/info/getUnboundAccountList`, params);
-};
-
-//新增经营板块
-export const addBusinessSectionAndTypes = (params: {
-  businessSectionName: string;
-  businessTypeValue: string;
-  businessTypesList: [];
-}) => {
-  return http.post(PORT_NONE + `/store/info/addBusinessSectionAndTypes`, params);
-};
-
-//新增商铺信息
-export const saveStoreInfo = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/saveStoreInfo`, params);
-};
-
-//获取商铺明细信息
-export const getStoreDetail = (params: StoreUser.ReqUserParams) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/store/info/getStoreDetail`, params);
-};
-
-//新增商铺信息
-export const editStoreInfo = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/editStoreInfo`, params);
-};
-
-// 修改商铺用户
-// export const editStoreUser1 = (params: { id: string }) => {
-//   return http.post(PORT_NONE + `/store/info/editStoreInfo`, params);
-// };
-
-// 删除商铺信息
-export const deleteStoreInfo = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/deleteStoreInfo`, params);
-};
-
-//审批商户
-export const approveStoreInfo = (params: { id: string; approvalStatus: number; reason: string }) => {
-  return http.get(PORT_NONE + `/store/info/approveStoreInfo`, params);
-};
-
-//审批商户续约
-export const updateContractImageStatus = (params: { id: string; approvalStatus: number }) => {
-  return http.post(PORT_NONE + `/store/info/updateContractImageStatus`, params);
-};
-//审批经营许可证变更
-export const updatefoodLicenceImageStatus = (params: { id: string; approvalStatus: number }) => {
-  return http.post(PORT_NONE + `/store/info/updatefoodLicenceImageStatus`, params);
-};
-
-// 重置商户或者用户密码
-export const resetStoreUserPassWord = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/restPassword`, params);
-};
-
-// 获取店铺状态
-export const getStoreAuditStatus = (params: { id: string }) => {
-  return http.post(PORT_NONE + `/store/info/getStoreAuditStatus`, params);
-};
-
-//商铺页面导出excel
-export const exportExcel = (params: {}) => {
-  return http.get(PORT_NONE + `/store/info/exportExcel`, params);
-};
-//商铺过期查询页面导出excel
-export const exportExcelExpirationTime = (params: {}) => {
-  return http.get(
-    PORT_NONE +
-      `/store/info/exportExcelExpirationTime
-`,
-    params
-  );
-};
-//商铺用户页面导出excel
-export const exportUserExcel = (params: {}) => {
-  return http.get(
-    PORT_NONE +
-      `/store/user/exportExcel
-`,
-    params
-  );
-};
-//根据详细信息获取经纬度名称
-export const getInputPrompt = (params: StoreUser.ReqUserParams) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/gaode/getInputPrompt`, params);
-};
-
-//获取行政区域信息
-export const getDistrict = (params: StoreUser.ReqUserParams) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/gaode/getDistrict`, params);
-};
-// 更改店铺抽成百分比
-export const updateStoreCommissionRate = (params: { id: string; commissionRate: any }) => {
-  return http.post(PORT_NONE + `/store/info/updateStoreCommissionRate`, params);
-};
-
-// 节假日列表
-export const getHolidayList = (params: any) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/coupon/getHolidayList`, params);
-};
-
-// 节假日列表
-export const saveHoliday = (params: any) => {
-  return http.post<StoreUser.ResStoreUserList>(PORT_NONE + `/coupon/saveHoliday`, params);
-};
-
-//删除节假日
-export const delHoliday = (params: any) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/coupon/delHoliday`, params);
-};
-
-// 按年份删除节假日
-export const delHolidayByYear = (params: any) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/coupon/delHolidayByYear`, params);
-};
-
-//启用禁用节假日
-export const openCloseHoliday = (params: any) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/coupon/openCloseHoliday`, params);
-};

+ 0 - 12
src/api/modules/upgrade.ts

@@ -1,12 +0,0 @@
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-// 获取按钮权限
-export const getVersionList = (params: any) => {
-  return http.get(PORT_NONE + `/version/getList`, params);
-};
-
-// 用户退出登录
-export const saveVersion = (data : any) => {
-  return http.post(PORT_NONE + `/version/saveVersionInfo`,data);
-};

+ 0 - 91
src/api/modules/user.ts

@@ -1,91 +0,0 @@
-import { ResPage, User } from "@/api/interface/index";
-import { PORT1, PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-/**
- * @name 用户管理模块
- */
-// 获取用户列表
-export const getUserList = (params: User.ReqUserParams) => {
-  return http.get<ResPage<User.ReqUserParams>>(PORT_NONE + `/platformLifeUser/getUserList`, params);
-};
-
-// 获取用户列表
-export const getUserDetail = (params: User.ReqUserParams) => {
-  return http.get<ResPage<User.ReqUserParams>>(PORT_NONE + `/userOrder/queryUserOrderList`, params);
-};
-
-// 设置达人
-export const becomeExpert = (params: any) => {
-  return http.get(PORT_NONE + `/lifeUserExpert/becomeExpert`, params);
-};
-
-// 取消达人
-export const cancelExpert = (params: User.ReqUserParams) => {
-  return http.get<ResPage<User.ReqUserParams>>(PORT_NONE + `/lifeUserExpert/cancelExpert`, params);
-};
-
-// 获取树形用户列表
-export const getUserTreeList = (params: User.ReqUserParams) => {
-  return http.post<ResPage<User.ResUserList>>(PORT1 + `/user/tree/list`, params);
-};
-
-// 新增用户
-export const addUser = (params: Record<string, any>) => {
-  return http.post(PORT1 + `/user/add`, params);
-};
-
-// 批量添加用户
-export const BatchAddUser = (params: FormData) => {
-  return http.post(PORT1 + `/user/import`, params);
-};
-
-// 编辑用户
-export const editUser = (params: Record<string, any>) => {
-  return http.post(PORT1 + `/user/edit`, params);
-};
-
-// 删除用户
-export const deleteUser = (params: { id: string[] }) => {
-  return http.post(PORT1 + `/user/delete`, params);
-};
-
-// 切换用户状态
-export const changeUserStatus = (params: { id: string; status: number }) => {
-  return http.post(PORT1 + `/user/change`, params);
-};
-
-// 重置用户密码
-export const resetUserPassWord = (params: { id: string }) => {
-  return http.post(PORT1 + `/user/rest_password`, params);
-};
-
-// 导出用户数据
-export const exportUserInfo = (params: User.ReqUserParams) => {
-  return http.download(PORT1 + `/user/export`, params);
-};
-
-// 获取用户状态字典
-export const getUserStatus = () => {
-  return http.get<User.ResStatus[]>(PORT1 + `/user/status`);
-};
-
-// 获取用户性别字典
-export const getUserGender = () => {
-  return http.get<User.ResGender[]>(PORT1 + `/user/gender`);
-};
-
-// 获取用户部门列表
-export const getUserDepartment = () => {
-  return http.get<User.ResDepartment[]>(PORT1 + `/user/department`, {}, { cancel: false });
-};
-
-// 获取用户角色字典
-export const getUserRole = () => {
-  return http.get<User.ResRole[]>(PORT1 + `/user/role`);
-};
-
-// 获取用户详情
-export const getUserById = (params: User.ReqUserParams) => {
-  return http.get<ResPage<User.ReqUserParams>>(PORT_NONE + `/platformLifeUser/getUserById`, params);
-};

+ 0 - 24
src/api/modules/violation.ts

@@ -1,24 +0,0 @@
-import { ResPage, lifeUserViolation } from "@/api/interface/index";
-import { PORT_NONE } from "@/api/config/servicePort";
-import http from "@/api";
-
-// 获取举报列表
-export const getViolationPage = (params: lifeUserViolation.lifeUserViolationParam) => {
-  return http.get<ResPage<lifeUserViolation.lifeUserViolationParam>>(PORT_NONE + `/user-violation/page`, params);
-};
-
-//审批
-export const violationApprove = (params: { id: number; processingStatus: string; reportResult: string }) => {
-  return http.get(PORT_NONE + `/user-violation/approve`, params);
-};
-
-//详情
-
-export const byId = (params: any) => {
-  return http.get<lifeUserViolation.lifeUserViolationParam>(PORT_NONE + `/user-violation/byId`, params);
-};
-
-//导出excel
-export const exportExcel = (params: {}) => {
-  return http.get(PORT_NONE + `/user-violation/exportExcel`, params);
-};

+ 0 - 11
src/api/modules/vip.ts

@@ -1,11 +0,0 @@
-import { ResPage, Vip } from "@/api/interface/index";
-import http from "@/api";
-
-/**
- * @name 会员管理模块
- */
-
-// 获取会员列表
-export const getVipList = (params: Vip.ReqVipParams) => {
-  return http.get<ResPage<Vip.ReqVipParams>>(`/store-membership-card-order/getStoreMembershipCardOrder`, params);
-};

+ 0 - 6
src/views/form/basicForm/index.scss

@@ -1,6 +0,0 @@
-.el-form {
-  width: 100%;
-  .text-center {
-    text-align: center;
-  }
-}

+ 0 - 71
src/views/form/basicForm/index.vue

@@ -1,71 +0,0 @@
-<template>
-  <div class="card content-box">
-    <el-form :model="formData" label-width="140px">
-      <el-form-item label="Activity name :">
-        <el-input v-model="formData.name" />
-      </el-form-item>
-      <el-form-item label="Activity zone :">
-        <el-select v-model="formData.region" placeholder="please select your zone">
-          <el-option label="Zone one" value="shanghai" />
-          <el-option label="Zone two" value="beijing" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="Activity time :">
-        <el-date-picker v-model="formData.date1" type="date" placeholder="Pick a date" />
-        <el-col :span="1" class="text-center">
-          <span class="text-gray-500">-</span>
-        </el-col>
-        <el-time-picker v-model="formData.date2" placeholder="Pick a time" />
-      </el-form-item>
-      <el-form-item label="Instant delivery :">
-        <el-switch v-model="formData.delivery" />
-      </el-form-item>
-      <el-form-item label="Activity type :">
-        <el-checkbox-group v-model="formData.type">
-          <el-checkbox value="Online activities" name="type"> Online activities </el-checkbox>
-          <el-checkbox value="Promotion activities" name="type"> Promotion activities </el-checkbox>
-          <el-checkbox value="Offline activities" name="type"> Offline activities </el-checkbox>
-          <el-checkbox value="Simple brand exposure" name="type"> Simple brand exposure </el-checkbox>
-        </el-checkbox-group>
-      </el-form-item>
-      <el-form-item label="Resources :">
-        <el-radio-group v-model="formData.resource">
-          <el-radio value="Sponsor">Sponsor</el-radio>
-          <el-radio value="Venue">Venue</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="Activity form :">
-        <el-input v-model="formData.desc" type="textarea" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="onSubmit"> Create </el-button>
-        <el-button>Cancel</el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script setup lang="ts" name="basicForm">
-import { ElMessage } from "element-plus";
-import { reactive } from "vue";
-
-// do not use same name with ref
-const formData = reactive({
-  name: "",
-  region: "",
-  date1: "",
-  date2: "",
-  delivery: false,
-  type: [],
-  resource: "",
-  desc: ""
-});
-
-const onSubmit = () => {
-  ElMessage.success("提交的数据为 : " + JSON.stringify(formData));
-};
-</script>
-
-<style scoped lang="scss">
-@import "./index.scss";
-</style>

+ 0 - 6
src/views/form/dynamicForm/index.scss

@@ -1,6 +0,0 @@
-.el-form {
-  width: 100%;
-}
-.add {
-  margin-bottom: 20px;
-}

+ 0 - 104
src/views/form/dynamicForm/index.vue

@@ -1,104 +0,0 @@
-<template>
-  <div class="card content-box">
-    <el-button class="add" type="primary" plain @click="addDomain"> Add Input </el-button>
-    <el-form ref="formRef" :model="dynamicValidateForm" label-width="100px" class="demo-dynamic">
-      <el-form-item
-        prop="email"
-        label="Email"
-        :rules="[
-          {
-            required: true,
-            message: 'Please input email address',
-            trigger: 'blur'
-          },
-          {
-            type: 'email',
-            message: 'Please input correct email address',
-            trigger: ['blur', 'change']
-          }
-        ]"
-      >
-        <el-input v-model="dynamicValidateForm.email" />
-      </el-form-item>
-      <el-form-item
-        v-for="(domain, index) in dynamicValidateForm.domains"
-        :key="domain.key"
-        :label="'Domain' + index"
-        :prop="'domains.' + index + '.value'"
-        :rules="{
-          required: true,
-          message: 'domain can not be null',
-          trigger: 'blur'
-        }"
-      >
-        <el-input v-model="domain.value">
-          <template #append>
-            <el-button type="danger" plain class="mt-2" @click.prevent="removeDomain(domain)"> Delete </el-button>
-          </template>
-        </el-input>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="submitForm(formRef)"> Submit </el-button>
-        <el-button @click="resetForm(formRef)"> Reset </el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script setup lang="ts" name="dynamicForm">
-import { reactive, ref } from "vue";
-import type { FormInstance } from "element-plus";
-
-const formRef = ref<FormInstance>();
-const dynamicValidateForm = reactive<{
-  domains: DomainItem[];
-  email: string;
-}>({
-  domains: [
-    {
-      key: 1,
-      value: ""
-    }
-  ],
-  email: ""
-});
-
-interface DomainItem {
-  key: number;
-  value: string;
-}
-
-const removeDomain = (item: DomainItem) => {
-  const index = dynamicValidateForm.domains.indexOf(item);
-  if (index !== -1) {
-    dynamicValidateForm.domains.splice(index, 1);
-  }
-};
-
-const addDomain = () => {
-  dynamicValidateForm.domains.push({
-    key: Date.now(),
-    value: ""
-  });
-};
-
-const submitForm = async (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  await formEl.validate((valid, fields) => {
-    if (valid) {
-      console.log("submit!");
-    } else {
-      console.log("error submit!", fields);
-    }
-  });
-};
-
-const resetForm = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-};
-</script>
-
-<style scoped lang="scss">
-@import "./index.scss";
-</style>

+ 0 - 4
src/views/form/proForm/index.scss

@@ -1,4 +0,0 @@
-.el-form {
-  width: 100%;
-  margin-top: 20px;
-}

+ 0 - 84
src/views/form/proForm/index.vue

@@ -1,84 +0,0 @@
-<template>
-  <div class="card content-box">
-    <el-alert
-      title="通过 component :is 组件属性 && v-bind 属性透传,可以将 template 中的 html 代码全部改变为 columns 配置项,具体配置请看代码。"
-      type="warning"
-      :closable="false"
-    />
-    <component :is="'el-form'" v-bind="options.form" ref="proFormRef" :model="model">
-      <template v-for="item in options.columns" :key="item.prop">
-        <component :is="'el-form-item'" v-bind="item.formItem">
-          <component :is="`el-${item.attrs.typeName}`" v-bind="item.attrs" v-model="model[item.formItem.prop]" />
-        </component>
-      </template>
-      <el-form-item>
-        <slot name="operation"></slot>
-      </el-form-item>
-    </component>
-  </div>
-</template>
-
-<script setup lang="ts" name="proForm">
-import { ref } from "vue";
-
-let model = ref<any>({});
-
-const options = ref({
-  // 表单整体配置项
-  form: {
-    inline: false,
-    labelPosition: "right",
-    labelWidth: "80px",
-    size: "default",
-    disabled: false,
-    labelSuffix: " :"
-  },
-  // 表单列配置项 (formItem 代表 item 配置项,attrs 代表 输入、选择框 配置项)
-  columns: [
-    {
-      formItem: {
-        label: "用户名",
-        prop: "username",
-        labelWidth: "80px",
-        required: true
-      },
-      attrs: {
-        typeName: "input",
-        clearable: true,
-        placeholder: "请输入用户名",
-        disabled: true
-      }
-    },
-    {
-      formItem: {
-        label: "密码",
-        prop: "password",
-        class: "data"
-      },
-      attrs: {
-        typeName: "input",
-        clearable: true,
-        autofocus: true,
-        placeholder: "请输入密码",
-        type: "password"
-      }
-    },
-    {
-      formItem: {
-        label: "邮箱",
-        prop: "email"
-      },
-      attrs: {
-        typeName: "input",
-        placeholder: "请输入邮箱",
-        clearable: true,
-        style: "width:500px"
-      }
-    }
-  ]
-});
-</script>
-
-<style scoped lang="scss">
-@import "./index.scss";
-</style>

+ 0 - 6
src/views/form/validateForm/index.scss

@@ -1,6 +0,0 @@
-.el-form {
-  width: 100%;
-  .text-center {
-    text-align: center;
-  }
-}

+ 0 - 123
src/views/form/validateForm/index.vue

@@ -1,123 +0,0 @@
-<template>
-  <div class="card content-box">
-    <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="140px">
-      <el-form-item label="Activity name" prop="name">
-        <el-input v-model="ruleForm.name" />
-      </el-form-item>
-      <el-form-item label="Activity phone" prop="phone">
-        <el-input v-model="ruleForm.phone" placeholder="Activity phone" />
-      </el-form-item>
-      <el-form-item label="Activity zone" prop="region">
-        <el-select v-model="ruleForm.region" placeholder="Activity zone">
-          <el-option label="Zone one" value="shanghai" />
-          <el-option label="Zone two" value="beijing" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="Activity time" required>
-        <el-form-item prop="date1">
-          <el-date-picker v-model="ruleForm.date1" type="date" placeholder="Pick a date" style="width: 100%" />
-        </el-form-item>
-        <el-col class="text-center" :span="1">
-          <span class="text-gray-500">-</span>
-        </el-col>
-        <el-form-item prop="date2">
-          <el-time-picker v-model="ruleForm.date2" placeholder="Pick a time" style="width: 100%" />
-        </el-form-item>
-      </el-form-item>
-      <el-form-item label="Instant delivery" prop="delivery">
-        <el-switch v-model="ruleForm.delivery" />
-      </el-form-item>
-      <el-form-item label="Resources" prop="resource">
-        <el-radio-group v-model="ruleForm.resource">
-          <el-radio label="Sponsorship" />
-          <el-radio label="Venue" />
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="Activity form" prop="desc">
-        <el-input v-model="ruleForm.desc" type="textarea" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="submitForm(ruleFormRef)"> Create </el-button>
-        <el-button @click="resetForm(ruleFormRef)"> Reset </el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script setup lang="ts" name="dynamicForm">
-import { reactive, ref } from "vue";
-import { checkPhoneNumber } from "@/utils/eleValidate";
-import type { FormInstance, FormRules } from "element-plus";
-import { ElMessage } from "element-plus";
-
-const ruleFormRef = ref<FormInstance>();
-const ruleForm = reactive({
-  name: "alien-store-admin",
-  phone: "",
-  region: "",
-  date1: "",
-  date2: "",
-  delivery: false,
-  resource: "",
-  desc: ""
-});
-
-const rules = reactive<FormRules>({
-  name: [
-    { required: true, message: "Please input Activity name", trigger: "blur" },
-    { min: 3, max: 5, message: "Length should be 3 to 5", trigger: "blur" }
-  ],
-  phone: [{ required: true, validator: checkPhoneNumber, trigger: "blur" }],
-  region: [
-    {
-      required: true,
-      message: "Please select Activity zone",
-      trigger: "change"
-    }
-  ],
-  date1: [
-    {
-      type: "date",
-      required: true,
-      message: "Please pick a date",
-      trigger: "change"
-    }
-  ],
-  date2: [
-    {
-      type: "date",
-      required: true,
-      message: "Please pick a time",
-      trigger: "change"
-    }
-  ],
-  resource: [
-    {
-      required: true,
-      message: "Please select activity resource",
-      trigger: "change"
-    }
-  ],
-  desc: [{ required: true, message: "Please input activity form", trigger: "blur" }]
-});
-
-const submitForm = async (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  await formEl.validate((valid, fields) => {
-    if (valid) {
-      ElMessage.success("提交的数据为 : " + JSON.stringify(ruleForm));
-    } else {
-      console.log("error submit!", fields);
-    }
-  });
-};
-
-const resetForm = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-};
-</script>
-
-<style scoped lang="scss">
-@import "./index";
-</style>

+ 0 - 183
src/views/proTable/complexProTable/index.vue

@@ -1,183 +0,0 @@
-<template>
-  <div class="table-box">
-    <ProTable
-      ref="proTable"
-      title="用户列表"
-      highlight-current-row
-      :columns="columns"
-      :request-api="getUserList"
-      :row-class-name="tableRowClassName"
-      :span-method="objectSpanMethod"
-      :show-summary="true"
-      :summary-method="getSummaries"
-      @row-click="rowClick"
-    >
-      <!-- 表格 header 按钮 -->
-      <template #tableHeader="scope">
-        <el-button type="primary" :icon="CirclePlus" @click="proTable?.element?.toggleAllSelection">全选 / 全不选</el-button>
-        <el-button type="primary" :icon="Pointer" plain @click="setCurrent">选中第五行</el-button>
-        <el-button type="danger" :icon="Delete" plain :disabled="!scope.isSelected" @click="batchDelete(scope.selectedListIds)">
-          批量删除用户
-        </el-button>
-      </template>
-      <!-- Expand -->
-      <template #expand="scope">
-        {{ scope.row }}
-      </template>
-      <!-- 表格操作 -->
-      <template #operation="scope">
-        <el-button type="primary" link :icon="Refresh" @click="resetPass(scope.row)">重置密码</el-button>
-        <el-button type="primary" link :icon="Delete" @click="deleteAccount(scope.row)">删除</el-button>
-      </template>
-      <template #append>
-        <span style="color: var(--el-color-primary)">我是插入在表格最后的内容。若表格有合计行,该内容会位于合计行之上。</span>
-      </template>
-    </ProTable>
-  </div>
-</template>
-
-<script setup lang="tsx" name="complexProTable">
-import { reactive, ref } from "vue";
-import { ElMessage } from "element-plus";
-import { User } from "@/api/interface";
-import { useHandleData } from "@/hooks/useHandleData";
-import ProTable from "@/components/ProTable/index.vue";
-import { CirclePlus, Pointer, Delete, Refresh } from "@element-plus/icons-vue";
-import type { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults";
-import { ProTableInstance, ColumnProps, HeaderRenderScope } from "@/components/ProTable/interface";
-import { getUserList, deleteUser, resetUserPassWord, getUserStatus, getUserGender } from "@/api/modules/user";
-
-// ProTable 实例
-const proTable = ref<ProTableInstance>();
-
-// 自定义渲染表头(使用tsx语法)
-const headerRender = (scope: HeaderRenderScope<User.ResUserList>) => {
-  return (
-    <el-button type="primary" onClick={() => ElMessage.success("我是通过 tsx 语法渲染的表头")}>
-      {scope.column.label}
-    </el-button>
-  );
-};
-
-// 表格配置项
-const columns = reactive<ColumnProps<User.ResUserList>[]>([
-  { type: "selection", width: 80 },
-  { type: "index", label: "#", width: 80 },
-  { type: "expand", label: "Expand", width: 100 },
-  {
-    prop: "base",
-    label: "基本信息",
-    headerRender,
-    _children: [
-      { prop: "username", label: "用户姓名", width: 110 },
-      { prop: "user.detail.age", label: "年龄", width: 100 },
-      {
-        prop: "gender",
-        label: "性别",
-        width: 100,
-        enum: getUserGender,
-        fieldNames: { label: "genderLabel", value: "genderValue" }
-      },
-      {
-        prop: "details",
-        label: "详细资料",
-        _children: [
-          { prop: "idCard", label: "身份证号" },
-          { prop: "email", label: "邮箱" },
-          { prop: "address", label: "居住地址" }
-        ]
-      }
-    ]
-  },
-  {
-    prop: "status",
-    label: "用户状态",
-    tag: true,
-    enum: getUserStatus,
-    fieldNames: { label: "userLabel", value: "userStatus" }
-  },
-  { prop: "createTime", label: "创建时间", width: 200 },
-  { prop: "operation", label: "操作", fixed: "right", width: 230 }
-]);
-
-// 选择行
-const setCurrent = () => {
-  proTable.value?.element?.setCurrentRow(proTable.value?.tableData[4]);
-  proTable.value?.element?.toggleRowSelection(proTable.value?.tableData[4], true);
-};
-
-// 表尾合计行(自行根据条件计算)
-interface SummaryMethodProps<T = User.ResUserList> {
-  columns: TableColumnCtx<T>[];
-  data: T[];
-}
-const getSummaries = (param: SummaryMethodProps) => {
-  const { columns } = param;
-  const sums: string[] = [];
-  columns.forEach((column, index) => {
-    if (index === 0) return (sums[index] = "合计");
-    else sums[index] = "N/A";
-  });
-  return sums;
-};
-
-// 列合并
-interface SpanMethodProps {
-  row: User.ResUserList;
-  column: TableColumnCtx<User.ResUserList>;
-  rowIndex: number;
-  columnIndex: number;
-}
-const objectSpanMethod = ({ rowIndex, columnIndex }: SpanMethodProps) => {
-  if (columnIndex === 3) {
-    if (rowIndex % 2 === 0) return { rowspan: 2, colspan: 1 };
-    else return { rowspan: 0, colspan: 0 };
-  }
-};
-
-// 设置列样式
-const tableRowClassName = ({ rowIndex }: { row: User.ResUserList; rowIndex: number }) => {
-  if (rowIndex === 2) return "warning-row";
-  if (rowIndex === 6) return "success-row";
-  return "";
-};
-
-// 单击行
-const rowClick = (row: User.ResUserList, column: TableColumnCtx<User.ResUserList>) => {
-  if (column.property == "radio" || column.property == "operation") return;
-  console.log(row);
-  ElMessage.success("当前行被点击了!");
-};
-
-// 删除用户信息
-const deleteAccount = async (params: User.ResUserList) => {
-  await useHandleData(deleteUser, { id: [params.id] }, `删除【${params.username}】用户`);
-  proTable.value?.getTableList();
-};
-
-// 批量删除用户信息
-const batchDelete = async (id: string[]) => {
-  await useHandleData(deleteUser, { id }, "删除所选用户信息");
-  proTable.value?.clearSelection();
-  proTable.value?.getTableList();
-};
-
-// 重置用户密码
-const resetPass = async (params: User.ResUserList) => {
-  await useHandleData(resetUserPassWord, { id: params.id }, `重置【${params.username}】用户密码`);
-  proTable.value?.getTableList();
-};
-</script>
-
-<style lang="scss">
-.el-table .warning-row,
-.el-table .warning-row .el-table-fixed-column--right,
-.el-table .warning-row .el-table-fixed-column--left {
-  background-color: var(--el-color-warning-light-9);
-}
-.el-table .success-row,
-.el-table .success-row .el-table-fixed-column--right,
-.el-table .success-row .el-table-fixed-column--left {
-  background-color: var(--el-color-success-light-9);
-}
-</style>

+ 0 - 191
src/views/proTable/components/StoreUserDrawer.vue

@@ -1,191 +0,0 @@
-<template>
-  <el-dialog v-model="drawerVisible" :destroy-on-close="true" size="650px" :title="`${drawerProps.title}账号`">
-    <el-form
-      ref="ruleFormRef"
-      label-width="100px"
-      label-suffix=" :"
-      :rules="rules"
-      :disabled="drawerProps.isView"
-      :model="drawerProps.row"
-      :hide-required-asterisk="drawerProps.isView"
-    >
-      <!-- <span>商铺管理员d信息:</span> -->
-      <el-form-item label="联系人" prop="nickName">
-        <el-input v-model="drawerProps.row!.nickName" maxlength="50" minlength="1" placeholder="请填写联系人" clearable />
-      </el-form-item>
-      <el-form-item label="联系人电话" prop="phone">
-        <el-input
-          v-model="drawerProps.row!.phone"
-          maxlength="11"
-          placeholder="请填写联系人电话"
-          clearable
-          @input="drawerProps.row!.phone = drawerProps.row!.phone.replace(/\D/g, '')"
-        />
-      </el-form-item>
-      <el-form-item label="身份证号码" prop="idCard">
-        <el-input
-          maxlength="18"
-          v-model="drawerProps.row!.idCard"
-          placeholder="请填写联系人身份证号"
-          clearable
-          @input="drawerProps.row!.idCard = drawerProps.row!.idCard.replace(/\D/g, '')"
-        />
-      </el-form-item>
-      <el-form-item v-if="drawerProps.title == '新增'" label="密码" prop="password">
-        <el-input maxlength="6" type="password" v-model="drawerProps.row!.password" placeholder="请填写密码" clearable />
-      </el-form-item>
-      <el-form-item label="是否启用">
-        <el-switch
-          v-model="drawerProps.row!.switchStatus"
-          class="ml-2"
-          style="
-
---el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
-        />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <el-button @click="drawerVisible = false"> 取消 </el-button>
-      <el-button v-show="!drawerProps.isView" type="primary" @click="handleSubmit"> 确定 </el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts" name="UserDrawer">
-import { ref, reactive, onMounted } from "vue";
-import { ElMessage, FormInstance } from "element-plus";
-import { StoreUser } from "@/api/interface";
-
-// 门店面积列表
-const storeAreaList = ref<any[]>([
-  { value: 1, label: "小于20平米" },
-  { value: 2, label: "20~50平米" },
-  { value: 3, label: "50~100平米" },
-  { value: 4, label: "100~300平米" },
-  { value: 5, label: "500~1000平米" },
-  { value: 6, label: "大于1000平米" }
-]);
-
-// 门店类型列表
-const storeTypeList = ref<any[]>([
-  { value: "1", label: "中餐" },
-  { value: "2", label: "烧烤" },
-  { value: "3", label: "饮品" },
-  { value: "4", label: "甜点" },
-  { value: "5", label: "火锅" },
-  { value: "6", label: "宵夜" },
-  { value: "7", label: "西餐" },
-  { value: "8", label: "轻食" },
-  { value: "9", label: "水果" }
-]);
-
-// 门店状态列表
-const storeStatusList = ref<any[]>([
-  { value: 0, label: "正常" },
-  { value: 1, label: "禁用" }
-]);
-
-// 门店营业状态列表
-const businessStatusList = ref<any[]>([
-  { value: 0, label: "正常营业" },
-  { value: 1, label: "暂停营业" },
-  { value: 2, label: "筹建中" },
-  { value: 99, label: "永久关门" }
-]);
-
-const rules = reactive({
-  storeName: [{ required: true, message: "请填写商户名称" }],
-  storeContact: [{ required: true, message: "请填写联系人" }],
-  name: [{ required: true, message: "请填写联系人" }],
-  nickName: [
-    { required: true, message: "请填写联系人" },
-    { min: 1, max: 50, message: "联系人长度应在1到50个字符之间", trigger: "blur" }
-  ],
-  storePhone: [{ required: true, message: "请填写联系人电话" }],
-  phone: [
-    { required: true, message: "请填写联系人电话" },
-    { max: 11, pattern: /^1\d{10}$/, message: "请输入11位有效手机号", trigger: "blur" }
-  ],
-  password: [{ required: true, message: "请填写密码" }],
-  payPassword: [{ required: true, message: "请填写支付密码" }],
-  storeCapacity: [{ required: true, message: "请填写容纳人数" }],
-  storeTel: [{ required: true, message: "请填写门店电话" }],
-  isChain: [{ required: true, message: "请选择是否连锁" }],
-  storeAddress: [{ required: true, message: "请输入详细地址" }],
-  storeBlurb: [{ required: true, message: "请输入门店简介" }],
-  storeTypeList: [{ required: true, message: "请选择经营种类" }],
-  storeStatus: [{ required: true, message: "请选择门店状态" }],
-  businessStatus: [{ required: true, message: "请选择门店营业状态" }],
-  storePositionLongitude: [{ required: true, message: "请选择门店经度" }],
-  storePositionLatitude: [{ required: true, message: "请选择门店纬度" }],
-  expirationTime: [{ required: true, message: "请选择门店到期时间" }],
-  storePass: [{ required: true, message: "请输入门店密码" }],
-  storeArea: [{ required: true, message: "请选择门店面积" }],
-  idCard: [{ required: true, message: "请填写联系人身份证号" }]
-});
-
-interface DrawerProps {
-  title: string;
-  isView: boolean;
-  row: Partial<StoreUser.ResStoreUserList>;
-  api?: (params: any) => Promise<any>;
-  getTableList?: () => void;
-}
-
-const drawerVisible = ref(false);
-const drawerProps = ref<DrawerProps>({
-  isView: false,
-  title: "",
-  row: {}
-});
-
-// 接收父组件传过来的参数
-const acceptParams = (params: DrawerProps) => {
-  if (params.row.updatedTime) {
-    delete params.row.updatedTime;
-  }
-  if (params.row.createTime) {
-    delete params.row.createTime;
-  }
-  drawerProps.value = params;
-  if (drawerProps.value.row.status == undefined || drawerProps.value.row.status == null) {
-    drawerProps.value.row.switchStatus = true;
-  } else {
-    drawerProps.value.row.status == "0"
-      ? (drawerProps.value.row.switchStatus = true)
-      : (drawerProps.value.row.switchStatus = false);
-  }
-  drawerVisible.value = true;
-};
-
-// 提交数据(新增/编辑)
-const ruleFormRef = ref<FormInstance>();
-const handleSubmit = () => {
-  ruleFormRef.value!.validate(async valid => {
-    if (!valid) return;
-    try {
-      drawerProps.value.row.switchStatus == true ? (drawerProps.value.row.status = "0") : (drawerProps.value.row.status = "1");
-      await drawerProps.value.api!(drawerProps.value.row);
-      ElMessage.success({ message: `${drawerProps.value.title}用户成功!` });
-      drawerProps.value.getTableList!();
-      drawerVisible.value = false;
-    } catch (error) {
-      console.log(error);
-    }
-  });
-};
-
-const handleSuccess = (response: any, uploadFile: UploadUserFile) => {
-  ElMessage.success("视频上传成功");
-  console.log(response);
-  if (response.data) {
-    videoUrl.value = response.data;
-  }
-};
-
-defineExpose({
-  acceptParams
-});
-
-onMounted(async () => {});
-</script>

+ 0 - 216
src/views/proTable/components/StoreUserDrawer_old.vue

@@ -1,216 +0,0 @@
-<template>
-  <el-dialog v-model="drawerVisible" :destroy-on-close="true" size="650px" :title="`${drawerProps.title}账号`">
-    <el-form
-      ref="ruleFormRef"
-      label-width="100px"
-      label-suffix=" :"
-      :rules="rules"
-      :disabled="drawerProps.isView"
-      :model="drawerProps.row"
-      :hide-required-asterisk="drawerProps.isView"
-    >
-      <!-- <span>商铺管理员信息:</span> -->
-      <el-form-item label="联系人" prop="storeContact">
-        <el-input v-model="drawerProps.row!.storeContact" placeholder="请填写联系人" clearable />
-      </el-form-item>
-      <el-form-item label="联系人电话" prop="storePhone">
-        <el-input v-model="drawerProps.row!.storePhone" placeholder="请填写联系人电话" clearable />
-      </el-form-item>
-      <el-form-item label="身份证号" prop="idCard">
-        <el-input v-model="drawerProps.row!.idCard" placeholder="请填写联系人身份证号" clearable />
-      </el-form-item>
-      <el-form-item label="密码" prop="password">
-        <el-input type="password" v-model="drawerProps.row!.password" placeholder="请填写密码" clearable />
-      </el-form-item>
-      <!-- <br />
-      <span>商铺信息:</span>
-      <el-form-item label="商店名称" prop="storeName">
-        <el-input v-model="drawerProps.row!.storeName" placeholder="请填写商店名称" clearable />
-      </el-form-item>
-      <el-form-item label="容纳人数" prop="storeCapacity">
-        <el-input-number
-          type="storeCapacity"
-          v-model="drawerProps.row!.storeCapacity"
-          placeholder="容纳人数"
-          clearable
-          :min="0"
-        />
-      </el-form-item>
-      <el-form-item label="门店电话" prop="storeTel">
-        <el-input v-model="drawerProps.row!.storeTel" placeholder="请填写门店电话" clearable />
-      </el-form-item>
-      <el-form-item label="门店面积" prop="storeArea">
-        <el-radio-group v-model="drawerProps.row!.storeArea" class="ml-4">
-          <el-radio v-for="storeArea in storeAreaList" :value="storeArea.value" :key="storeArea.value">
-            {{ storeArea.label }}
-          </el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="是否连锁" prop="isChain">
-        <el-radio-group v-model="drawerProps.row!.isChain" class="ml-4">
-          <el-radio label="0" :value="0"> 否 </el-radio>
-          <el-radio label="1" :value="1"> 是 </el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="详细地址" prop="storeAddress">
-        <el-input v-model="drawerProps.row!.storeAddress" :rows="2" type="textarea" placeholder="请输入详细地址" />
-      </el-form-item>
-      <el-form-item label="门店简介" prop="storeBlurb">
-        <el-input v-model="drawerProps.row!.storeBlurb" :rows="2" type="textarea" placeholder="请输入门店简介" />
-      </el-form-item>
-      <el-form-item label="经营种类" prop="storeTypeList">
-        <el-checkbox-group v-model="drawerProps.row!.storeTypeList">
-          <el-checkbox v-for="type in storeTypeList" :key="type.value" :value="type.value">
-            {{ type.label }}
-          </el-checkbox>
-        </el-checkbox-group>
-      </el-form-item>
-      <el-form-item label="门店状态" prop="storeStatus">
-        <el-radio-group v-model="drawerProps.row!.storeStatus" class="ml-4">
-          <el-radio v-for="status in storeStatusList" :value="status.value" :key="status.value">
-            {{ status.label }}
-          </el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="门店营业状态" prop="businessStatus">
-        <el-radio-group v-model="drawerProps.row!.businessStatus" class="ml-4">
-          <el-radio v-for="status in businessStatusList" :value="status.value" :key="status.value">
-            {{ status.label }}
-          </el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="经度" prop="storePositionLongitude">
-        <el-input v-model="drawerProps.row!.storePositionLongitude" placeholder="请填写经度" clearable />
-      </el-form-item>
-      <el-form-item label="纬度" prop="storePositionLatitude">
-        <el-input v-model="drawerProps.row!.storePositionLatitude" placeholder="请填写纬度" clearable />
-      </el-form-item>
-      <el-form-item label="到期时间" prop="expirationTime">
-        <el-date-picker
-          v-model="drawerProps.row!.expirationTime"
-          format="YYYY/MM/DD hh:mm:ss"
-          value-format="YYYY-MM-DD h:m:s"
-          type="datetime"
-          placeholder="请选择到期时间"
-        />
-      </el-form-item>
-      <el-form-item label="门店密码" prop="storePass">
-        <el-input type="password" v-model="drawerProps.row!.storePass" placeholder="请填写门店密码" clearable />
-      </el-form-item> -->
-    </el-form>
-    <template #footer>
-      <el-button @click="drawerVisible = false"> 取消 </el-button>
-      <el-button v-show="!drawerProps.isView" type="primary" @click="handleSubmit"> 确定 </el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup lang="ts" name="UserDrawer">
-import { ref, reactive } from "vue";
-import { ElMessage, FormInstance } from "element-plus";
-import { StoreUser } from "@/api/interface";
-
-// 门店面积列表
-const storeAreaList = ref<any[]>([
-  { value: 1, label: "小于20平米" },
-  { value: 2, label: "20~50平米" },
-  { value: 3, label: "50~100平米" },
-  { value: 4, label: "100~300平米" },
-  { value: 5, label: "500~1000平米" },
-  { value: 6, label: "大于1000平米" }
-]);
-
-// 门店类型列表
-const storeTypeList = ref<any[]>([
-  { value: "1", label: "中餐" },
-  { value: "2", label: "烧烤" },
-  { value: "3", label: "饮品" },
-  { value: "4", label: "甜点" },
-  { value: "5", label: "火锅" },
-  { value: "6", label: "宵夜" },
-  { value: "7", label: "西餐" },
-  { value: "8", label: "轻食" },
-  { value: "9", label: "水果" }
-]);
-
-// 门店状态列表
-const storeStatusList = ref<any[]>([
-  { value: 0, label: "正常" },
-  { value: 1, label: "禁用" }
-]);
-
-// 门店营业状态列表
-const businessStatusList = ref<any[]>([
-  { value: 0, label: "正常营业" },
-  { value: 1, label: "暂停营业" },
-  { value: 2, label: "筹建中" },
-  { value: 99, label: "永久关门" }
-]);
-
-const rules = reactive({
-  storeName: [{ required: true, message: "请填写商户名称" }],
-  storeContact: [{ required: true, message: "请填写联系人" }],
-  storePhone: [{ required: true, message: "请填写联系人电话" }],
-  password: [{ required: true, message: "请填写密码" }],
-  storeCapacity: [{ required: true, message: "请填写容纳人数" }],
-  storeTel: [{ required: true, message: "请填写门店电话" }],
-  isChain: [{ required: true, message: "请选择是否连锁" }],
-  storeAddress: [{ required: true, message: "请输入详细地址" }],
-  storeBlurb: [{ required: true, message: "请输入门店简介" }],
-  storeTypeList: [{ required: true, message: "请选择经营种类" }],
-  storeStatus: [{ required: true, message: "请选择门店状态" }],
-  businessStatus: [{ required: true, message: "请选择门店营业状态" }],
-  storePositionLongitude: [{ required: true, message: "请选择门店经度" }],
-  storePositionLatitude: [{ required: true, message: "请选择门店纬度" }],
-  expirationTime: [{ required: true, message: "请选择门店到期时间" }],
-  storePass: [{ required: true, message: "请输入门店密码" }],
-  storeArea: [{ required: true, message: "请选择门店面积" }]
-});
-
-interface DrawerProps {
-  title: string;
-  isView: boolean;
-  row: Partial<StoreUser.ResStoreUserList>;
-  api?: (params: any) => Promise<any>;
-  getTableList?: () => void;
-}
-
-const drawerVisible = ref(false);
-const drawerProps = ref<DrawerProps>({
-  isView: false,
-  title: "",
-  row: {}
-});
-
-// 接收父组件传过来的参数
-const acceptParams = (params: DrawerProps) => {
-  if (params.row.updatedTime) {
-    delete params.row.updatedTime;
-  }
-  if (params.row.createTime) {
-    delete params.row.createTime;
-  }
-  drawerProps.value = params;
-  drawerVisible.value = true;
-};
-
-// 提交数据(新增/编辑)
-const ruleFormRef = ref<FormInstance>();
-const handleSubmit = () => {
-  ruleFormRef.value!.validate(async valid => {
-    if (!valid) return;
-    try {
-      await drawerProps.value.api!(drawerProps.value.row);
-      ElMessage.success({ message: `${drawerProps.value.title}用户成功!` });
-      drawerProps.value.getTableList!();
-      drawerVisible.value = false;
-    } catch (error) {
-      console.log(error);
-    }
-  });
-};
-
-defineExpose({
-  acceptParams
-});
-</script>

+ 0 - 119
src/views/proTable/components/UserDrawer.vue

@@ -1,119 +0,0 @@
-<template>
-  <el-drawer v-model="drawerVisible" :destroy-on-close="true" size="450px" :title="`${drawerProps.title}用户`">
-    <el-form
-      ref="ruleFormRef"
-      label-width="100px"
-      label-suffix=" :"
-      :rules="rules"
-      :disabled="drawerProps.isView"
-      :model="drawerProps.row"
-      :hide-required-asterisk="drawerProps.isView"
-    >
-      <el-form-item label="用户头像" prop="avatar">
-        <UploadImg v-model:image-url="drawerProps.row!.avatar as string" width="135px" height="135px" :file-size="3">
-          <template #empty>
-            <el-icon><Avatar /></el-icon>
-            <span>请上传头像</span>
-          </template>
-          <template #tip> 头像大小不能超过 3M </template>
-        </UploadImg>
-      </el-form-item>
-      <el-form-item label="用户照片" prop="photo">
-        <UploadImgs
-          v-model:file-list="drawerProps.row!.photo as UploadUserFile[]"
-          height="140px"
-          width="140px"
-          border-radius="50%"
-        >
-          <template #empty>
-            <el-icon><Picture /></el-icon>
-            <span>请上传照片</span>
-          </template>
-          <template #tip> 照片大小不能超过 5M </template>
-        </UploadImgs>
-      </el-form-item>
-      <el-form-item label="用户姓名" prop="username">
-        <el-input v-model="drawerProps.row!.username" placeholder="请填写用户姓名" clearable></el-input>
-      </el-form-item>
-      <el-form-item label="性别" prop="gender">
-        <el-select v-model="drawerProps.row!.gender" placeholder="请选择性别" clearable>
-          <el-option v-for="item in genderType" :key="item.value" :label="item.label" :value="item.value" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="身份证号" prop="idCard">
-        <el-input v-model="drawerProps.row!.idCard" placeholder="请填写身份证号" clearable></el-input>
-      </el-form-item>
-      <el-form-item label="邮箱" prop="email">
-        <el-input v-model="drawerProps.row!.email" placeholder="请填写邮箱" clearable></el-input>
-      </el-form-item>
-      <el-form-item label="居住地址" prop="address">
-        <el-input v-model="drawerProps.row!.address" placeholder="请填写居住地址" clearable></el-input>
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <el-button @click="drawerVisible = false">取消</el-button>
-      <el-button v-show="!drawerProps.isView" type="primary" @click="handleSubmit">确定</el-button>
-    </template>
-  </el-drawer>
-</template>
-
-<script setup lang="ts" name="UserDrawer">
-import type { UploadUserFile } from "element-plus";
-import { ref, reactive } from "vue";
-import { genderType } from "@/utils/dict";
-import { ElMessage, FormInstance } from "element-plus";
-import { User } from "@/api/interface";
-import UploadImg from "@/components/Upload/Img.vue";
-import UploadImgs from "@/components/Upload/Imgs.vue";
-
-const rules = reactive({
-  avatar: [{ required: true, message: "请上传用户头像" }],
-  photo: [{ required: true, message: "请上传用户照片" }],
-  username: [{ required: true, message: "请填写用户姓名" }],
-  gender: [{ required: true, message: "请选择性别" }],
-  idCard: [{ required: true, message: "请填写身份证号" }],
-  email: [{ required: true, message: "请填写邮箱" }],
-  address: [{ required: true, message: "请填写居住地址" }]
-});
-
-interface DrawerProps {
-  title: string;
-  isView: boolean;
-  row: Partial<User.ResUserList>;
-  api?: (params: any) => Promise<any>;
-  getTableList?: () => void;
-}
-
-const drawerVisible = ref(false);
-const drawerProps = ref<DrawerProps>({
-  isView: false,
-  title: "",
-  row: {}
-});
-
-// 接收父组件传过来的参数
-const acceptParams = (params: DrawerProps) => {
-  drawerProps.value = params;
-  drawerVisible.value = true;
-};
-
-// 提交数据(新增/编辑)
-const ruleFormRef = ref<FormInstance>();
-const handleSubmit = () => {
-  ruleFormRef.value!.validate(async valid => {
-    if (!valid) return;
-    try {
-      await drawerProps.value.api!(drawerProps.value.row);
-      ElMessage.success({ message: `${drawerProps.value.title}用户成功!` });
-      drawerProps.value.getTableList!();
-      drawerVisible.value = false;
-    } catch (error) {
-      console.log(error);
-    }
-  });
-};
-
-defineExpose({
-  acceptParams
-});
-</script>

+ 0 - 229
src/views/proTable/components/banner.vue

@@ -1,229 +0,0 @@
-<template>
-  <el-drawer v-model="drawerVisible" :destroy-on-close="true" size="650px" :title="`${form.name}课程`">
-    <el-form :model="form" label-width="auto" style="max-width: 600px">
-      <el-form-item label="课程名称">
-        <el-input v-model="form.name" max="20" />
-      </el-form-item>
-      <el-form-item label="上传封面">
-        <el-upload
-          v-model:file-list="fileList"
-          :action="uploadUrl"
-          class="upload-demo"
-          :multiple="false"
-          :limit="1"
-          :accept="'.jpg,.jpeg,.png,.gif,.bmp,.webp'"
-          :before-upload="beforeUpload"
-          :on-success="handleSuccess"
-          :on-preview="handlePreview"
-          :show-file-list="false"
-        >
-          <img v-if="imgUrl" :src="imgUrl" class="avatar" />
-          <el-icon v-else class="avatar-uploader-icon">
-            <Plus />
-          </el-icon>
-          <template #tip>
-            <div class="el-upload__tip">支持jpg、png、gif、bmp、jpeg格式</div>
-          </template>
-        </el-upload>
-      </el-form-item>
-      <el-form-item label="banner简介">
-        <Editor v-model:value="form.introduce" :max-length="2000" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="save">
-          {{ saveText }}
-        </el-button>
-        <el-button>取消</el-button>
-      </el-form-item>
-    </el-form>
-  </el-drawer>
-</template>
-
-<script lang="ts" setup>
-import { reactive, defineExpose, ref, defineProps, nextTick } from "vue";
-import { addBanner } from "@/api/modules/banner";
-import Editor from "@/components/Editor/index.vue";
-import { ElMessage } from "element-plus";
-import { ProTableInstance } from "@/components/ProTable/interface";
-import type { UploadProps, UploadUserFile } from "element-plus";
-import type { PropType } from "vue";
-
-const fileList = ref<UploadUserFile[]>([]);
-const uploadUrl = ref(`${import.meta.env.VITE_API_URL}/file/upload`);
-const drawerVisible = ref(false);
-const previewUrl = ref("");
-const imgUrl = ref("");
-const videoPlayer = ref<HTMLVideoElement>();
-const props = defineProps({
-  proTable: {
-    type: Object as PropType<ProTableInstance>,
-    required: true
-  }
-});
-const saveText = ref("添加");
-interface CourseForm {
-  id?: number | string;
-  name: string;
-  imgUrl: string;
-  introduce: string;
-}
-
-const form = reactive<CourseForm>({
-  name: "",
-  imgUrl: "",
-  introduce: ""
-});
-
-const validateForm = () => {
-  const requiredFields = [
-    { field: form.name, message: "请输入" },
-    {
-      field: imgUrl.value || fileList.value[0]?.url,
-      message: "请上传封面"
-    }
-  ];
-
-  for (const { field, message } of requiredFields) {
-    if (!field?.trim()) {
-      ElMessage.error(message);
-      return false;
-    }
-  }
-  return true;
-};
-
-const acceptParams = (params: any) => {
-  if (params.title === "新增") {
-    Object.assign(form, {
-      id: undefined,
-      name: "",
-      imgUrl: "",
-      introduce: ""
-    });
-    imgUrl.value = "";
-    fileList.value = [];
-    saveText.value = "创建";
-  } else {
-    saveText.value = "修改";
-    Object.assign(form, {
-      id: params.row.id,
-      name: params.row.bannerTitle,
-      imgUrl: params.row.bannerImg,
-      introduce: params.row.bannerIntroduce
-    });
-    imgUrl.value = params.row.bannerImg;
-    fileList.value = [
-      {
-        url: params.row.bannerImg,
-        name: params.row.bannerTitle
-      }
-    ];
-  }
-  drawerVisible.value = true;
-};
-
-const handlePreview: UploadProps["onPreview"] = uploadFile => {
-  if (previewUrl.value.startsWith("blob:")) {
-    URL.revokeObjectURL(previewUrl.value);
-  }
-
-  previewUrl.value = uploadFile.url || URL.createObjectURL(uploadFile.raw!);
-  console.log(previewUrl.value);
-
-  nextTick(() => {
-    videoPlayer.value?.load();
-  });
-};
-
-const beforeUpload = (rawFile: File) => {
-  console.log(rawFile);
-  const validTypes = [
-    "image/jpeg",
-    "image/png",
-    "image/gif",
-    "image/bmp",
-    "image/webp",
-    "image/svg+xml",
-    "image/tiff",
-    "image/x-icon",
-    "image/heic",
-    "image/heif"
-  ];
-
-  if (!validTypes.includes(rawFile.type)) {
-    ElMessage.error("不支持该图片格式");
-    return false;
-  }
-
-  const isLt500M = rawFile.size / 1024 / 1024 < 500;
-  if (!isLt500M) {
-    ElMessage.error("图片大小不能超过500MB");
-    return false;
-  }
-
-  return true;
-};
-const save = async () => {
-  if (!validateForm()) return;
-
-  const params = {
-    ...(form.id && { id: form.id }),
-    bannerTitle: form.name,
-    bannerImg: imgUrl.value || fileList.value[0]?.url,
-    bannerIntroduce: form.introduce,
-    playFlag: 0
-  };
-
-  try {
-    const api = form.id ? addBanner : addBanner;
-    const res = await api(params as any);
-    ElMessage.success(form.id ? "修改成功" : "新增成功");
-    drawerVisible.value = false;
-    if (window.parent.proTable) {
-      window.parent.proTable.getTableList();
-    } else {
-      location.reload();
-    }
-  } catch (error) {
-    ElMessage.error(form.id ? "修改失败" : "新增失败");
-  }
-};
-
-const handleSuccess = (response: any, uploadFile: UploadUserFile) => {
-  ElMessage.success("封面上传成功");
-  console.log(response);
-  if (response.data) {
-    imgUrl.value = response.data;
-  }
-};
-
-defineExpose({
-  acceptParams
-});
-</script>
-
-<style lang="scss" scoped>
-.avatar-uploader .avatar {
-  display: block;
-  width: 178px;
-  height: 178px;
-}
-.avatar-uploader .el-upload {
-  position: relative;
-  overflow: hidden;
-  cursor: pointer;
-  border: 1px dashed var(--el-border-color);
-  border-radius: 6px;
-  transition: var(--el-transition-duration-fast);
-}
-.avatar-uploader .el-upload:hover {
-  border-color: var(--el-color-primary);
-}
-.el-icon.avatar-uploader-icon {
-  width: 178px;
-  height: 178px;
-  font-size: 28px;
-  color: #8c939d;
-  text-align: center;
-}
-</style>

+ 0 - 255
src/views/proTable/components/course.vue

@@ -1,255 +0,0 @@
-<template>
-  <el-drawer v-model="drawerVisible" :destroy-on-close="true" size="650px" :title="`${form.title}课程`">
-    <el-form :model="form" label-width="auto" style="max-width: 600px">
-      <el-form-item label="课程名称">
-        <el-input v-model="form.name" />
-      </el-form-item>
-      <el-form-item label="讲师">
-        <el-input v-model="form.teacher" />
-      </el-form-item>
-      <el-form-item label="课程类型">
-        <el-select v-model="form.region" placeholder="请选择课程类型">
-          <el-option label="线上经营" value="线上经营" />
-          <el-option label="线下经营" value="线下经营" />
-          <el-option label="精品课堂" value="精品课堂" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="课程分类">
-        <el-select v-model="form.classify" placeholder="请选择课程分类">
-          <el-option label="新手开店" value="新手开店" />
-          <el-option label="规则掌握" value="规则掌握" />
-          <el-option label="商品促销" value="商品促销" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="上传视频">
-        <el-upload
-          v-model:file-list="fileList"
-          class="upload-demo"
-          :action="uploadUrl"
-          :multiple="false"
-          :limit="1"
-          :accept="'.mp4,.avi,.mov,.wmv,.flv,.mpeg,.mpg,.m4v,.3gp,.webm'"
-          :before-upload="beforeUpload"
-          :on-success="handleSuccess"
-          :on-preview="handlePreview"
-          :show-file-list="true"
-        >
-          <el-button type="primary"> 点击上传视频 </el-button>
-          <template #tip>
-            <div class="el-upload__tip">支持mp4、avi、mov、wmv、flv、mpeg、mpg、3gp、webm格式</div>
-          </template>
-        </el-upload>
-      </el-form-item>
-      <el-form-item label="视频时长">
-        <el-input type="number" v-model="form.classLength" placeholder="填写课程时长(分钟)" />
-      </el-form-item>
-      <el-form-item label="视频课程简介">
-        <Editor v-model:value="form.introduce" />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="save">
-          {{ saveText }}
-        </el-button>
-        <el-button>取消</el-button>
-      </el-form-item>
-    </el-form>
-  </el-drawer>
-  <el-dialog v-model="previewVisible" title="视频预览" width="60%">
-    <video ref="videoPlayer" controls style="width: 100%; max-height: 60vh" :src="previewUrl">您的浏览器不支持视频播放</video>
-  </el-dialog>
-</template>
-
-<script lang="ts" setup>
-import { reactive, defineExpose, ref, defineProps, nextTick, onUnmounted, onMounted } from "vue";
-import { addCourse } from "@/api/modules/course";
-import Editor from "@/components/Editor/index.vue";
-import { ElMessage } from "element-plus";
-import { ProTableInstance } from "@/components/ProTable/interface";
-import type { UploadProps, UploadUserFile } from "element-plus";
-import type { PropType } from "vue";
-
-const fileList = ref<UploadUserFile[]>([]);
-const uploadUrl = ref(`${import.meta.env.VITE_API_URL}/file/upload`);
-const drawerVisible = ref(false);
-const previewVisible = ref(false);
-const previewUrl = ref("");
-const videoUrl = ref("");
-const videoPlayer = ref<HTMLVideoElement>();
-const props = defineProps({
-  proTable: {
-    type: Object as PropType<ProTableInstance>,
-    required: true
-  }
-});
-const saveText = ref("创建");
-interface CourseForm {
-  id?: number | string;
-  title: string;
-  name: string;
-  teacher: string;
-  region: string;
-  classify: string;
-  videoUrl: string;
-  introduce: string;
-  classLength: string;
-}
-
-const form = reactive<CourseForm>({
-  title: "",
-  name: "",
-  teacher: "",
-  region: "",
-  classify: "",
-  videoUrl: "",
-  introduce: "",
-  classLength: ""
-});
-
-const validateForm = () => {
-  const requiredFields = [
-    { field: form.name, message: "请输入课程名称" },
-    { field: form.teacher, message: "请输入授课老师" },
-    { field: form.region, message: "请选择课程类型" },
-    { field: form.classify, message: "请选择课程分类" },
-    {
-      field: videoUrl.value || fileList.value[0]?.url,
-      message: "请上传课程视频"
-    },
-    { field: form.classLength, message: "填写课程时长(分钟)" }
-  ];
-
-  for (const { field, message } of requiredFields) {
-    if (!field?.trim()) {
-      ElMessage.error(message);
-      return false;
-    }
-  }
-  return true;
-};
-
-const acceptParams = (params: any) => {
-  if (params.title === "新增") {
-    Object.assign(form, {
-      id: undefined,
-      title: "新增",
-      name: "",
-      teacher: "",
-      region: "",
-      classify: "",
-      videoUrl: "",
-      introduce: "",
-      classLength: ""
-    });
-    videoUrl.value = "";
-    fileList.value = [];
-    saveText.value = "创建";
-  } else {
-    saveText.value = "修改";
-    Object.assign(form, {
-      id: params.row.id,
-      title: params.row.className,
-      name: params.row.className,
-      teacher: params.row.classTeacher,
-      region: params.row.classBigType,
-      classify: params.row.classSmallType,
-      videoUrl: params.row.videoPath,
-      introduce: params.row.classIntroduce,
-      classLength: params.row.classLength
-    });
-    videoUrl.value = params.row.videoPath;
-    fileList.value = [
-      {
-        url: params.row.videoPath,
-        name: params.row.fileName
-      }
-    ];
-  }
-  drawerVisible.value = true;
-};
-
-const handleRemove: UploadProps["onRemove"] = (file, uploadFiles) => {
-  console.log(file, uploadFiles);
-};
-
-const handlePreview: UploadProps["onPreview"] = uploadFile => {
-  if (previewUrl.value.startsWith("blob:")) {
-    URL.revokeObjectURL(previewUrl.value);
-  }
-
-  previewUrl.value = uploadFile.url || URL.createObjectURL(uploadFile.raw!);
-  previewVisible.value = true;
-  console.log(previewUrl.value);
-
-  nextTick(() => {
-    videoPlayer.value?.load();
-  });
-};
-
-const beforeUpload = (rawFile: File) => {
-  const validTypes = [
-    "video/mp4",
-    "video/avi",
-    "video/quicktime",
-    "video/x-ms-wmv",
-    "video/x-flv",
-    "video/mpeg",
-    "video/mp2t",
-    "video/3gpp",
-    "video/webm"
-  ];
-
-  if (!validTypes.includes(rawFile.type)) {
-    ElMessage.error("不支持该视频格式");
-    return false;
-  }
-
-  const isLt500M = rawFile.size / 1024 / 1024 < 500;
-  if (!isLt500M) {
-    ElMessage.error("视频大小不能超过500MB");
-    return false;
-  }
-
-  return true;
-};
-const save = async () => {
-  if (!validateForm()) return;
-
-  const params = {
-    ...(form.id && { id: form.id }),
-    className: form.name,
-    classState: 1,
-    classBigType: form.region,
-    classSmallType: form.classify,
-    classTeacher: form.teacher,
-    videoPath: videoUrl.value || fileList.value[0]?.url,
-    classIntroduce: form.introduce,
-    classLength: form.classLength
-  };
-
-  try {
-    const api = form.id ? addCourse : addCourse;
-    const res = await api(params as any);
-    ElMessage.success(form.id ? "修改成功" : "新增成功");
-    drawerVisible.value = false;
-    if (window.parent.proTable) {
-      window.parent.proTable.getTableList();
-    } else {
-      location.reload();
-    }
-  } catch (error) {
-    ElMessage.error(form.id ? "修改失败" : "新增失败");
-  }
-};
-
-const handleSuccess = (response: any, uploadFile: UploadUserFile) => {
-  ElMessage.success("视频上传成功");
-  console.log(response);
-  if (response.data) {
-    videoUrl.value = response.data;
-  }
-};
-
-defineExpose({
-  acceptParams
-});
-</script>

+ 0 - 142
src/views/proTable/treeProTable/index.vue

@@ -1,142 +0,0 @@
-<template>
-  <div class="main-box">
-    <TreeFilter
-      label="name"
-      title="部门列表(单选)"
-      :data="treeFilterData"
-      :default-value="initParam.departmentId"
-      @change="changeTreeFilter"
-    />
-    <div class="table-box">
-      <ProTable
-        ref="proTable"
-        row-key="id"
-        :indent="20"
-        :columns="columns"
-        :request-api="getUserTreeList"
-        :request-auto="false"
-        :init-param="initParam"
-        :search-col="{ xs: 1, sm: 1, md: 2, lg: 3, xl: 3 }"
-      >
-        <!-- 表格 header 按钮 -->
-        <template #tableHeader>
-          <el-button type="primary" :icon="CirclePlus" @click="openDrawer('新增')">新增用户</el-button>
-        </template>
-        <!-- 表格操作 -->
-        <template #operation="scope">
-          <el-button type="primary" link :icon="View" @click="openDrawer('查看', scope.row)">查看</el-button>
-          <el-button type="primary" link :icon="EditPen" @click="openDrawer('编辑', scope.row)">编辑</el-button>
-          <el-button type="primary" link :icon="Delete" @click="deleteAccount(scope.row)">删除</el-button>
-        </template>
-      </ProTable>
-      <UserDrawer ref="drawerRef" />
-      <ImportExcel ref="dialogRef" />
-    </div>
-  </div>
-</template>
-
-<script setup lang="tsx" name="treeProTable">
-import { onMounted, reactive, ref } from "vue";
-import { User } from "@/api/interface";
-import { genderType } from "@/utils/dict";
-import { useHandleData } from "@/hooks/useHandleData";
-import { ElMessage, ElNotification } from "element-plus";
-import ProTable from "@/components/ProTable/index.vue";
-import TreeFilter from "@/components/TreeFilter/index.vue";
-import ImportExcel from "@/components/ImportExcel/index.vue";
-import UserDrawer from "@/views/proTable/components/UserDrawer.vue";
-import { CirclePlus, Delete, EditPen, View } from "@element-plus/icons-vue";
-import { ColumnProps, ProTableInstance } from "@/components/ProTable/interface";
-import { getUserTreeList, deleteUser, editUser, addUser, getUserStatus, getUserDepartment } from "@/api/modules/user";
-
-onMounted(() => {
-  getTreeFilter();
-  ElNotification();
-});
-
-// ProTable 实例
-const proTable = ref<ProTableInstance>();
-
-// 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
-const initParam = reactive({ departmentId: "" });
-
-// 获取 treeFilter 数据
-// 当 proTable 的 requestAuto 属性为 false,不会自动请求表格数据,等待 treeFilter 数据回来之后,更改 initParam.departmentId 的值,才会触发请求 proTable 数据
-const treeFilterData = ref<any>([]);
-const getTreeFilter = async () => {
-  const { data } = await getUserDepartment();
-  treeFilterData.value = data;
-  initParam.departmentId = treeFilterData.value[1].id;
-};
-
-// 树形筛选切换
-const changeTreeFilter = (val: string) => {
-  ElMessage.success("请注意查看请求参数变化 🤔");
-  proTable.value!.pageable.pageNum = 1;
-  initParam.departmentId = val;
-};
-
-// 模拟远程加载性别搜索框数据
-const loading = ref(false);
-const filterGenderEnum = ref<typeof genderType>([]);
-const remoteMethod = (query: string) => {
-  filterGenderEnum.value = [];
-  if (!query) return;
-  loading.value = true;
-  setTimeout(() => {
-    loading.value = false;
-    filterGenderEnum.value = genderType.filter(item => item.label.includes(query));
-  }, 500);
-};
-
-// 表格配置项
-const columns = reactive<ColumnProps<User.ResUserList>[]>([
-  { type: "index", label: "#", width: 80 },
-  { prop: "username", label: "用户姓名" },
-  {
-    prop: "gender",
-    label: "性别",
-    sortable: true,
-    isFilterEnum: false,
-    enum: filterGenderEnum,
-    search: {
-      el: "select",
-      props: { placeholder: "请输入性别查询", filterable: true, remote: true, reserveKeyword: true, loading, remoteMethod }
-    },
-    render: scope => <>{scope.row.gender === 1 ? "男" : "女"}</>
-  },
-  { prop: "idCard", label: "身份证号" },
-  { prop: "email", label: "邮箱" },
-  { prop: "address", label: "居住地址" },
-  {
-    prop: "status",
-    label: "用户状态",
-    sortable: true,
-    tag: true,
-    enum: getUserStatus,
-    search: { el: "tree-select" },
-    fieldNames: { label: "userLabel", value: "userStatus" }
-  },
-  { prop: "createTime", label: "创建时间", width: 180 },
-  { prop: "operation", label: "操作", width: 300, fixed: "right" }
-]);
-
-// 删除用户信息
-const deleteAccount = async (params: User.ResUserList) => {
-  await useHandleData(deleteUser, { id: [params.id] }, `删除【${params.username}】用户`);
-  proTable.value?.getTableList();
-};
-
-// 打开 drawer(新增、查看、编辑)
-const drawerRef = ref<InstanceType<typeof UserDrawer> | null>(null);
-const openDrawer = (title: string, row: Partial<User.ResUserList> = {}) => {
-  const params = {
-    title,
-    row: { ...row },
-    isView: title === "查看",
-    api: title === "新增" ? addUser : title === "编辑" ? editUser : undefined,
-    getTableList: proTable.value?.getTableList
-  };
-  drawerRef.value?.acceptParams(params);
-};
-</script>

+ 0 - 184
src/views/proTable/useSelectFilter/index.vue

@@ -1,184 +0,0 @@
-<template>
-  <div class="main-box">
-    <TreeFilter
-      title="部门列表(多选)"
-      multiple
-      label="name"
-      :request-api="getUserDepartment"
-      :default-value="treeFilterValues.departmentId"
-      @change="changeTreeFilter"
-    />
-    <div class="table-box">
-      <div class="card mb10 pt0 pb0">
-        <SelectFilter :data="selectFilterData" :default-values="selectFilterValues" @change="changeSelectFilter" />
-      </div>
-      <ProTable
-        ref="proTable"
-        highlight-current-row
-        :columns="columns"
-        :request-api="getUserList"
-        :init-param="Object.assign(treeFilterValues, selectFilterValues)"
-      >
-        <!-- 表格 header 按钮 -->
-        <template #tableHeader>
-          <el-button type="primary" :icon="CirclePlus" @click="openDrawer('新增')">新增用户</el-button>
-          <el-button type="primary" :icon="Upload" plain @click="batchAdd">批量添加用户</el-button>
-          <el-button type="primary" :icon="Download" plain @click="downloadFile">导出用户数据</el-button>
-          <el-button type="primary" :icon="Pointer" plain @click="setCurrent">选中第四行</el-button>
-        </template>
-        <!-- 表格操作 -->
-        <template #operation="scope">
-          <el-button type="primary" link :icon="View" @click="openDrawer('查看', scope.row)">查看</el-button>
-          <el-button type="primary" link :icon="EditPen" @click="openDrawer('编辑', scope.row)">编辑</el-button>
-          <el-button type="primary" link :icon="Refresh" @click="resetPass(scope.row)">重置密码</el-button>
-          <el-button type="primary" link :icon="Delete" @click="deleteAccount(scope.row)">删除</el-button>
-        </template>
-      </ProTable>
-      <UserDrawer ref="drawerRef" />
-      <ImportExcel ref="dialogRef" />
-    </div>
-  </div>
-</template>
-<script setup lang="ts" name="useSelectFilter">
-import { ref, reactive, onMounted, watch } from "vue";
-import { User } from "@/api/interface";
-import { ElMessage, ElMessageBox } from "element-plus";
-import { useHandleData } from "@/hooks/useHandleData";
-import { useDownload } from "@/hooks/useDownload";
-import { genderType, userStatus } from "@/utils/dict";
-import ProTable from "@/components/ProTable/index.vue";
-import TreeFilter from "@/components/TreeFilter/index.vue";
-import ImportExcel from "@/components/ImportExcel/index.vue";
-import UserDrawer from "@/views/proTable/components/UserDrawer.vue";
-import SelectFilter from "@/components/SelectFilter/index.vue";
-import { ProTableInstance, ColumnProps } from "@/components/ProTable/interface";
-import { CirclePlus, Delete, EditPen, Pointer, Download, Upload, View, Refresh } from "@element-plus/icons-vue";
-import {
-  getUserList,
-  deleteUser,
-  editUser,
-  addUser,
-  resetUserPassWord,
-  exportUserInfo,
-  BatchAddUser,
-  getUserDepartment,
-  getUserRole
-} from "@/api/modules/user";
-
-// ProTable 实例
-const proTable = ref<ProTableInstance>();
-
-// 表格配置项
-const columns = reactive<ColumnProps<User.ResUserList>[]>([
-  { type: "radio", label: "单选", width: 80 },
-  { type: "index", label: "#", width: 80 },
-  { prop: "username", label: "用户姓名", width: 120 },
-  { prop: "gender", label: "性别", width: 120, sortable: true, enum: genderType },
-  { prop: "idCard", label: "身份证号" },
-  { prop: "email", label: "邮箱" },
-  { prop: "address", label: "居住地址" },
-  { prop: "status", label: "用户状态", width: 120, sortable: true, tag: true, enum: userStatus },
-  { prop: "createTime", label: "创建时间", width: 180, sortable: true },
-  { prop: "operation", label: "操作", width: 330, fixed: "right" }
-]);
-
-// selectFilter 数据(用户角色为后台数据)
-const selectFilterData = reactive([
-  {
-    title: "用户状态(单)",
-    key: "userStatus",
-    options: [
-      { label: "全部", value: "" },
-      { label: "在职", value: "1", icon: "User" },
-      { label: "待培训", value: "2", icon: "Bell" },
-      { label: "待上岗", value: "3", icon: "Clock" },
-      { label: "已离职", value: "4", icon: "CircleClose" },
-      { label: "已退休", value: "5", icon: "CircleCheck" }
-    ]
-  },
-  {
-    title: "用户角色(多)",
-    key: "userRole",
-    multiple: true,
-    options: []
-  }
-]);
-
-// 获取用户角色字典
-onMounted(() => getUserRoleDict());
-const getUserRoleDict = async () => {
-  const { data } = await getUserRole();
-  selectFilterData[1].options = data as any;
-};
-
-// 默认 selectFilter 参数
-const selectFilterValues = ref({ userStatus: "2", userRole: ["1", "3"] });
-const changeSelectFilter = (value: typeof selectFilterValues.value) => {
-  ElMessage.success("请注意查看请求参数变化 🤔");
-  proTable.value!.pageable.pageNum = 1;
-  selectFilterValues.value = value;
-};
-
-// 默认 treeFilter 参数
-const treeFilterValues = reactive({ departmentId: ["11"] });
-const changeTreeFilter = (val: string[]) => {
-  ElMessage.success("请注意查看请求参数变化 🤔");
-  proTable.value!.pageable.pageNum = 1;
-  treeFilterValues.departmentId = val;
-};
-
-// 选择行
-const setCurrent = () => {
-  proTable.value!.radio = proTable.value?.tableData[3].id;
-  proTable.value?.element?.setCurrentRow(proTable.value?.tableData[3]);
-};
-
-watch(
-  () => proTable.value?.radio,
-  () => proTable.value?.radio && ElMessage.success(`选中 id 为【${proTable.value?.radio}】的数据`)
-);
-
-// 删除用户信息
-const deleteAccount = async (params: User.ResUserList) => {
-  await useHandleData(deleteUser, { id: [params.id] }, `删除【${params.username}】用户`);
-  proTable.value?.getTableList();
-};
-
-// 重置用户密码
-const resetPass = async (params: User.ResUserList) => {
-  await useHandleData(resetUserPassWord, { id: params.id }, `重置【${params.username}】用户密码`);
-  proTable.value?.getTableList();
-};
-
-// 导出用户列表
-const downloadFile = async () => {
-  ElMessageBox.confirm("确认导出用户数据?", "温馨提示", { type: "warning" }).then(() =>
-    useDownload(exportUserInfo, "用户列表", proTable.value?.searchParam)
-  );
-};
-
-// 批量添加用户
-const dialogRef = ref<InstanceType<typeof ImportExcel> | null>(null);
-const batchAdd = () => {
-  const params = {
-    title: "用户",
-    tempApi: exportUserInfo,
-    importApi: BatchAddUser,
-    getTableList: proTable.value?.getTableList
-  };
-  dialogRef.value?.acceptParams(params);
-};
-
-// 打开 drawer(新增、查看、编辑)
-const drawerRef = ref<InstanceType<typeof UserDrawer> | null>(null);
-const openDrawer = (title: string, row: Partial<User.ResUserList> = {}) => {
-  const params = {
-    title,
-    isView: title === "查看",
-    row: { ...row },
-    api: title === "新增" ? addUser : title === "编辑" ? editUser : undefined,
-    getTableList: proTable.value?.getTableList
-  };
-  drawerRef.value?.acceptParams(params);
-};
-</script>