commit
						7c87f94985
					
				| 
						 | 
				
			
			@ -125,6 +125,7 @@
 | 
			
		|||
    "vite-plugin-purge-icons": "^0.9.2",
 | 
			
		||||
    "vite-plugin-svg-icons": "^2.0.1",
 | 
			
		||||
    "vite-plugin-top-level-await": "^1.3.1",
 | 
			
		||||
    "vue-eslint-parser": "^9.3.1",
 | 
			
		||||
    "vue-tsc": "^1.8.8"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,6 @@
 | 
			
		|||
import request from '@/config/axios'
 | 
			
		||||
import { Sku, Spu } from '@/api/mall/product/spu'
 | 
			
		||||
 | 
			
		||||
// TODO @puhui999: combinationActivity.ts
 | 
			
		||||
 | 
			
		||||
export interface CombinationActivityVO {
 | 
			
		||||
  id?: number
 | 
			
		||||
  name?: string
 | 
			
		||||
| 
						 | 
				
			
			@ -2,7 +2,7 @@ import { defineStore } from 'pinia'
 | 
			
		|||
import { store } from '../index'
 | 
			
		||||
import { cloneDeep } from 'lodash-es'
 | 
			
		||||
import remainingRouter from '@/router/modules/remaining'
 | 
			
		||||
import { generateRoute, flatMultiLevelRoutes } from '@/utils/routerHelper'
 | 
			
		||||
import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper'
 | 
			
		||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 | 
			
		||||
 | 
			
		||||
const { wsCache } = useCache()
 | 
			
		||||
| 
						 | 
				
			
			@ -34,11 +34,11 @@ export const usePermissionStore = defineStore('permission', {
 | 
			
		|||
    async generateRoutes(): Promise<unknown> {
 | 
			
		||||
      return new Promise<void>(async (resolve) => {
 | 
			
		||||
        // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取
 | 
			
		||||
        let res: AppCustomRouteRecordRaw[]
 | 
			
		||||
        let res: AppCustomRouteRecordRaw[] = []
 | 
			
		||||
        if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) {
 | 
			
		||||
          res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[]
 | 
			
		||||
        }
 | 
			
		||||
        const routerMap: AppRouteRecordRaw[] = generateRoute(res as AppCustomRouteRecordRaw[])
 | 
			
		||||
        const routerMap: AppRouteRecordRaw[] = generateRoute(res)
 | 
			
		||||
        // 动态路由,404一定要放到最后面
 | 
			
		||||
        this.addRouters = routerMap.concat([
 | 
			
		||||
          {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
      :is-col="true"
 | 
			
		||||
      :rules="rules"
 | 
			
		||||
      :schema="allSchemas.formSchema"
 | 
			
		||||
      class="mt-10px"
 | 
			
		||||
    >
 | 
			
		||||
      <template #spuId>
 | 
			
		||||
        <el-button @click="spuSelectRef.open()">选择商品</el-button>
 | 
			
		||||
| 
						 | 
				
			
			@ -37,8 +38,8 @@
 | 
			
		|||
  <SpuSelect ref="spuSelectRef" :isSelectSku="true" @confirm="selectSpu" />
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationactivity'
 | 
			
		||||
import { CombinationProductVO } from '@/api/mall/promotion/combination/combinationactivity'
 | 
			
		||||
import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationActivity'
 | 
			
		||||
import { CombinationProductVO } from '@/api/mall/promotion/combination/combinationActivity'
 | 
			
		||||
import { allSchemas, rules } from './combinationActivity.data'
 | 
			
		||||
import { SpuAndSkuList, SpuProperty, SpuSelect } from '@/views/mall/promotion/components'
 | 
			
		||||
import { getPropertyList, RuleConfig } from '@/views/mall/product/spu/components'
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
 | 
			
		||||
import { dateFormatter, getNowDateTime } from '@/utils/formatTime'
 | 
			
		||||
import { dateFormatter2 } from '@/utils/formatTime'
 | 
			
		||||
 | 
			
		||||
// 表单校验
 | 
			
		||||
export const rules = reactive({
 | 
			
		||||
| 
						 | 
				
			
			@ -9,11 +9,6 @@ export const rules = reactive({
 | 
			
		|||
  startTime: [required],
 | 
			
		||||
  endTime: [required],
 | 
			
		||||
  userSize: [required],
 | 
			
		||||
  totalNum: [required],
 | 
			
		||||
  successNum: [required],
 | 
			
		||||
  orderUserCount: [required],
 | 
			
		||||
  virtualGroup: [required],
 | 
			
		||||
  status: [required],
 | 
			
		||||
  limitDuration: [required]
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,34 +26,54 @@ const crudSchemas = reactive<CrudSchema[]>([
 | 
			
		|||
    }
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    label: '活动时间',
 | 
			
		||||
    field: 'activityTime',
 | 
			
		||||
    formatter: dateFormatter,
 | 
			
		||||
    label: '活动开始时间',
 | 
			
		||||
    field: 'startTime',
 | 
			
		||||
    formatter: dateFormatter2,
 | 
			
		||||
    isSearch: true,
 | 
			
		||||
    search: {
 | 
			
		||||
      show: true,
 | 
			
		||||
      component: 'DatePicker',
 | 
			
		||||
      componentProps: {
 | 
			
		||||
        valueFormat: 'x',
 | 
			
		||||
        type: 'datetimerange',
 | 
			
		||||
        rangeSeparator: '至'
 | 
			
		||||
        valueFormat: 'YYYY-MM-DD',
 | 
			
		||||
        type: 'daterange'
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    form: {
 | 
			
		||||
      component: 'DatePicker',
 | 
			
		||||
      componentProps: {
 | 
			
		||||
        valueFormat: 'x',
 | 
			
		||||
        type: 'datetimerange',
 | 
			
		||||
        rangeSeparator: '至'
 | 
			
		||||
      },
 | 
			
		||||
      value: [getNowDateTime().valueOf(), getNowDateTime().valueOf()],
 | 
			
		||||
      colProps: {
 | 
			
		||||
        span: 24
 | 
			
		||||
        type: 'date',
 | 
			
		||||
        valueFormat: 'x'
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    table: {
 | 
			
		||||
      width: 120
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    label: '活动结束时间',
 | 
			
		||||
    field: 'endTime',
 | 
			
		||||
    formatter: dateFormatter2,
 | 
			
		||||
    isSearch: true,
 | 
			
		||||
    search: {
 | 
			
		||||
      component: 'DatePicker',
 | 
			
		||||
      componentProps: {
 | 
			
		||||
        valueFormat: 'YYYY-MM-DD',
 | 
			
		||||
        type: 'daterange'
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    form: {
 | 
			
		||||
      component: 'DatePicker',
 | 
			
		||||
      componentProps: {
 | 
			
		||||
        type: 'date',
 | 
			
		||||
        valueFormat: 'x'
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    table: {
 | 
			
		||||
      width: 120
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    label: '参与人数',
 | 
			
		||||
    field: 'orderUserCount',
 | 
			
		||||
    field: 'userSize',
 | 
			
		||||
    isSearch: false,
 | 
			
		||||
    form: {
 | 
			
		||||
      component: 'InputNumber',
 | 
			
		||||
| 
						 | 
				
			
			@ -117,13 +132,6 @@ const crudSchemas = reactive<CrudSchema[]>([
 | 
			
		|||
    isSearch: false,
 | 
			
		||||
    isForm: false
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    label: '虚拟成团',
 | 
			
		||||
    field: 'virtualGroup',
 | 
			
		||||
    isSearch: false,
 | 
			
		||||
    isTable: false,
 | 
			
		||||
    isForm: false
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    label: '活动状态',
 | 
			
		||||
    field: 'status',
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { allSchemas } from './combinationActivity.data'
 | 
			
		||||
import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationactivity'
 | 
			
		||||
import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationActivity'
 | 
			
		||||
import CombinationActivityForm from './CombinationActivityForm.vue'
 | 
			
		||||
import { cloneDeep } from 'lodash-es'
 | 
			
		||||
import { createImageViewer } from '@/components/ImageViewer'
 | 
			
		||||
		Loading…
	
		Reference in New Issue