├── src
├── lang
│ ├── distribution
│ │ ├── set
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ ├── user
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ ├── distribution-user-income
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ └── notice
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── product
│ │ ├── spu-detail
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── spu-tag
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ ├── brand
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ ├── attr
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── spu
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ └── category
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── biz
│ │ ├── area
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── imgbox
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── videobox
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ └── notify
│ │ │ └── zh.js
│ ├── rbac
│ │ ├── menu-resource
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── role
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── menu-permission
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── menu
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ └── web-config
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── platform
│ │ ├── sys-user-account
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── hot-search
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── notice
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── sys-user
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ └── shop-addr
│ │ │ ├── en.js
│ │ │ └── zh.js
│ ├── printer
│ │ ├── zh.js
│ │ └── en.js
│ ├── delivery
│ │ ├── delivery-company
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ └── transport
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── outletConfig
│ │ ├── zh.js
│ │ └── en.js
│ ├── components
│ │ └── category-selector
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── station
│ │ ├── zh.js
│ │ └── en.js
│ ├── constant
│ │ ├── zh.js
│ │ └── en.js
│ ├── user
│ │ ├── score
│ │ │ ├── en.js
│ │ │ └── zh.js
│ │ ├── rights
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ ├── recharge
│ │ │ ├── zh.js
│ │ │ └── en.js
│ │ └── level
│ │ │ └── zh.js
│ ├── live
│ │ ├── zh.js
│ │ └── en.js
│ ├── seckill
│ │ ├── zh.js
│ │ └── en.js
│ ├── coupon
│ │ └── coupon
│ │ │ ├── zh.js
│ │ │ └── en.js
│ ├── index.js
│ ├── chat
│ │ ├── zh.js
│ │ └── en.js
│ └── discount
│ │ └── zh.js
├── utils
│ ├── $t.js
│ ├── debounce.js
│ ├── auth.js
│ ├── i18n.js
│ ├── excelRequest.js
│ ├── datetime.js
│ └── addr.js
├── assets
│ ├── chat
│ │ ├── msg.png
│ │ ├── upload.png
│ │ ├── userImg.jpg
│ │ ├── link-send.png
│ │ └── upload-on.png
│ ├── im_box
│ │ ├── msg.png
│ │ ├── upload.png
│ │ ├── userImg.jpg
│ │ ├── link-send.png
│ │ ├── upload-on.png
│ │ └── customer-service.png
│ ├── images
│ │ ├── car.png
│ │ ├── def.png
│ │ ├── Frame.png
│ │ ├── buyer.png
│ │ ├── horn.png
│ │ ├── logo.png
│ │ ├── login-bg.jpg
│ │ ├── number.png
│ │ ├── password.png
│ │ ├── success.png
│ │ ├── user_img.jpg
│ │ ├── Frame-view.png
│ │ ├── icon-tishi.png
│ │ └── login-img.jpg
│ ├── icon
│ │ ├── 699@2x.png
│ │ ├── 700@2x.png
│ │ ├── access@2x.png
│ │ ├── tips-icon.png
│ │ ├── upArrow@2x.png
│ │ ├── downArrow@2x.png
│ │ ├── conversion@2x.png
│ │ ├── slide-left-arrow@2x.png
│ │ ├── slide-right-arrow@2x.png
│ │ └── data-nalysis-ideas@2x.png
│ ├── 401_images
│ │ └── 401.gif
│ ├── 404_images
│ │ ├── 404.png
│ │ └── 404_cloud.png
│ ├── micro-page
│ │ ├── ad-1.png
│ │ ├── ad-2.png
│ │ ├── ad-3.png
│ │ ├── ad-4.png
│ │ ├── card.png
│ │ ├── def.png
│ │ ├── menu.png
│ │ ├── class.png
│ │ ├── notice.png
│ │ ├── p-link.png
│ │ ├── p-tabs.png
│ │ ├── p-text.png
│ │ ├── p-ad-def.png
│ │ ├── p-hotarea.png
│ │ ├── p-notice.png
│ │ ├── p-search.png
│ │ ├── p-image-ad.png
│ │ ├── p-prod-list.png
│ │ ├── p-promotion.png
│ │ ├── one-line-one.png
│ │ ├── p-link-active.png
│ │ ├── p-tabs-active.png
│ │ ├── p-text-active.png
│ │ ├── carousel-swiper.png
│ │ ├── goods-waterfall.png
│ │ ├── lateral-sliding.png
│ │ ├── p-hotarea-active.png
│ │ ├── p-notice-active.png
│ │ ├── p-search-active.png
│ │ ├── micro-create-header.png
│ │ ├── one-line-one-active.png
│ │ ├── p-image-ad-active.png
│ │ ├── p-prod-list-active.png
│ │ ├── p-promotion-active.png
│ │ ├── micro-create-header1.png
│ │ ├── carousel-swiper-active.png
│ │ ├── goods-waterfall-active.png
│ │ └── lateral-sliding-active.png
│ ├── empty
│ │ └── empty_contacts.png
│ ├── example-img
│ │ ├── idcard1.png
│ │ ├── idcard2.png
│ │ └── Business-license.png
│ ├── home
│ │ ├── goods-received.png
│ │ ├── ic-arrow-normal.png
│ │ ├── orde-management.png
│ │ ├── order-shipped.png
│ │ ├── publish-product.png
│ │ ├── return-address.png
│ │ ├── stock-warning.png
│ │ ├── store-settlement.png
│ │ ├── collection-account.png
│ │ ├── commodity-management.png
│ │ ├── commodity-reviewed.png
│ │ ├── ic-arrow-narrow-down.png
│ │ ├── ic-arrow-narrow-up.png
│ │ ├── refund-after-sales.png
│ │ ├── distribution-settings.png
│ │ ├── Illegal-goods-off-shelves.png
│ │ └── price-adjustment-record.png
│ ├── outlet-config
│ │ ├── jd-one.png
│ │ ├── jd-two.png
│ │ ├── sf-one.png
│ │ ├── sf-two.png
│ │ ├── ems-one.png
│ │ ├── ems-two.png
│ │ ├── htky-one.png
│ │ ├── sto-one.png
│ │ ├── yto-one.png
│ │ ├── yto-two.png
│ │ ├── zto-one.png
│ │ ├── zto-two.png
│ │ ├── yunda-one.png
│ │ └── yunda-two.png
│ ├── pc-micro-page
│ │ ├── has_end.png
│ │ ├── new_cart.png
│ │ ├── offlined.png
│ │ ├── pc-logo.png
│ │ ├── togger_icon.png
│ │ ├── been_shelves.png
│ │ ├── icons.88a567a.png
│ │ ├── pc_goods_list.png
│ │ ├── pc_modal_bulk.png
│ │ ├── pc_modal_cart.png
│ │ ├── pc_modal_live.png
│ │ ├── pc_modal_new.png
│ │ ├── pc_picture_by.png
│ │ ├── pc_shop_signs.png
│ │ ├── pc_store_list.png
│ │ ├── selected_link.png
│ │ ├── show-default.png
│ │ ├── goods_list_five.png
│ │ ├── goods_list_four.png
│ │ ├── goods_list_three.png
│ │ ├── goods_recommand.png
│ │ ├── pc-category_icon.png
│ │ ├── pc_floor_title.png
│ │ ├── pc_goods_module.png
│ │ ├── pc_limited_skill.png
│ │ ├── pc_modal_index.png
│ │ ├── pc_modal_members.png
│ │ ├── pc_modal_order.png
│ │ ├── pc_modal_profile.png
│ │ ├── pc_modal_skill.png
│ │ ├── pc_discount_coupon.png
│ │ ├── pc_modal_integral.png
│ │ ├── pc_auxiliary_interval.png
│ │ ├── pc_floor_title_active.png
│ │ ├── pc_goods_list_active.png
│ │ ├── pc_modal_collection.png
│ │ ├── pc_modal_distribution.png
│ │ ├── pc_modal_preferential.png
│ │ ├── pc_modal_securities.png
│ │ ├── pc_picture_by_active.png
│ │ ├── pc_shop_signs_active.png
│ │ ├── pc_store_list_active.png
│ │ ├── pc_universal_hotspot.png
│ │ ├── goods_list_five_active.png
│ │ ├── goods_list_four_active.png
│ │ ├── goods_list_three_active.png
│ │ ├── pc_goods_module_active.png
│ │ ├── pc_limited_skill_active.png
│ │ ├── pc_discount_coupon_active.png
│ │ ├── pc_auxiliary_interval_active.png
│ │ └── pc_universal_hotspot_active.png
│ └── website-config
│ │ ├── login-bg.jpg
│ │ ├── title-icon.png
│ │ └── menu-top-icon.png
├── stores
│ ├── index.js
│ └── modules
│ │ ├── cancel-focus-interval.js
│ │ ├── common.js
│ │ ├── app.js
│ │ └── web-config.js
├── components
│ ├── icons-select
│ │ ├── svg-icons.js
│ │ └── index.vue
│ ├── Verifition
│ │ ├── utils
│ │ │ ├── ase.js
│ │ │ ├── axios.js
│ │ │ └── util.js
│ │ └── api
│ │ │ └── index.js
│ ├── product-details
│ │ └── index.vue
│ ├── img-show
│ │ └── index.vue
│ ├── picture-preview
│ │ └── index.vue
│ └── pagination
│ │ └── index.vue
├── icons
│ ├── svg
│ │ ├── link.svg
│ │ ├── user.svg
│ │ ├── example.svg
│ │ ├── table.svg
│ │ ├── password.svg
│ │ ├── index-select.svg
│ │ ├── report.svg
│ │ ├── nested.svg
│ │ ├── order.svg
│ │ ├── index.svg
│ │ ├── distribution.svg
│ │ ├── live.svg
│ │ ├── group.svg
│ │ ├── eye.svg
│ │ ├── shop.svg
│ │ ├── analysis.svg
│ │ ├── icon-zhedie.svg
│ │ ├── language.svg
│ │ ├── promotion.svg
│ │ ├── product.svg
│ │ ├── eye-open.svg
│ │ ├── tree.svg
│ │ ├── dashboard.svg
│ │ └── form.svg
│ └── svg-icon.vue
├── App.vue
├── styles
│ ├── element-variables.scss
│ ├── variables.scss
│ ├── transition.scss
│ ├── mixin.scss
│ └── btn.scss
├── api
│ ├── auth
│ │ └── auth.js
│ ├── platform
│ │ ├── sys-config.js
│ │ ├── sys-user-account.js
│ │ ├── notice.js
│ │ ├── index-img.js
│ │ ├── hot-search.js
│ │ ├── sys-user.js
│ │ └── shop.js
│ ├── biz
│ │ ├── attach-file.js
│ │ └── oss.js
│ ├── product
│ │ ├── prod-info.js
│ │ ├── spu.js
│ │ ├── attr.js
│ │ ├── spu-detail.js
│ │ ├── brand.js
│ │ ├── category.js
│ │ └── list.js
│ ├── system
│ │ └── addr-manage.js
│ ├── discount
│ │ └── discount.js
│ ├── distribution-manage
│ │ └── transport.js
│ ├── delivery
│ │ ├── delivery-company.js
│ │ └── transport.js
│ └── rbac
│ │ ├── role.js
│ │ ├── menu-permission.js
│ │ └── menu.js
├── views
│ └── common
│ │ ├── redirect
│ │ └── index.vue
│ │ └── error-page
│ │ └── 401.vue
├── directive
│ ├── index.js
│ ├── rich
│ │ └── index.js
│ ├── cancelFocus
│ │ └── index.js
│ └── permission
│ │ └── index.js
├── layout
│ ├── components
│ │ ├── Sidebar
│ │ │ ├── Item.vue
│ │ │ └── main-sidebar-sub-menu.vue
│ │ └── AppMain.vue
│ └── index.vue
├── main.js
├── router
│ └── index.js
└── permission.js
├── Dockerfile
├── doc
└── img
│ └── readme
│ ├── 商务二维码.png
│ ├── image-20210705143529597.png
│ ├── image-20231130110522682.png
│ └── image-20231130110607548.png
├── .npmrc
├── .editorconfig
├── .eslintignore
├── tsconfig.json
├── platform.conf
├── nginx.conf
├── .gitignore
├── .env.production
├── .env.development
├── index.html
├── package.json
└── .eslintrc.cjs
/src/lang/distribution/set/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/lang/distribution/set/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/lang/distribution/user/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/lang/distribution/user/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/lang/product/spu-detail/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: '商品id',
3 | detail: '商品详情'
4 | }
5 |
--------------------------------------------------------------------------------
/src/utils/$t.js:
--------------------------------------------------------------------------------
1 | import { i18n } from '@/lang'
2 | const $t = i18n.global.t
3 | export default $t
4 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:1.20
2 | COPY ./dist /usr/share/nginx/html/dist
3 | COPY ./nginx.conf /etc/nginx/conf.d
--------------------------------------------------------------------------------
/src/lang/product/spu-detail/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: 'spu id',
3 | detail: 'detail'
4 | }
5 |
--------------------------------------------------------------------------------
/doc/img/readme/商务二维码.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/doc/img/readme/商务二维码.png
--------------------------------------------------------------------------------
/src/assets/chat/msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/chat/msg.png
--------------------------------------------------------------------------------
/src/assets/im_box/msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/msg.png
--------------------------------------------------------------------------------
/src/assets/images/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/car.png
--------------------------------------------------------------------------------
/src/assets/images/def.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/def.png
--------------------------------------------------------------------------------
/src/assets/chat/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/chat/upload.png
--------------------------------------------------------------------------------
/src/assets/chat/userImg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/chat/userImg.jpg
--------------------------------------------------------------------------------
/src/assets/icon/699@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/699@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/700@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/700@2x.png
--------------------------------------------------------------------------------
/src/assets/images/Frame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/Frame.png
--------------------------------------------------------------------------------
/src/assets/images/buyer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/buyer.png
--------------------------------------------------------------------------------
/src/assets/images/horn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/horn.png
--------------------------------------------------------------------------------
/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/logo.png
--------------------------------------------------------------------------------
/src/lang/distribution/distribution-user-income/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/lang/distribution/distribution-user-income/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | turnOn: '开启',
3 | close: '关闭'
4 | }
5 |
--------------------------------------------------------------------------------
/src/assets/401_images/401.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/401_images/401.gif
--------------------------------------------------------------------------------
/src/assets/404_images/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/404_images/404.png
--------------------------------------------------------------------------------
/src/assets/chat/link-send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/chat/link-send.png
--------------------------------------------------------------------------------
/src/assets/chat/upload-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/chat/upload-on.png
--------------------------------------------------------------------------------
/src/assets/icon/access@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/access@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/tips-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/tips-icon.png
--------------------------------------------------------------------------------
/src/assets/icon/upArrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/upArrow@2x.png
--------------------------------------------------------------------------------
/src/assets/im_box/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/upload.png
--------------------------------------------------------------------------------
/src/assets/im_box/userImg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/userImg.jpg
--------------------------------------------------------------------------------
/src/assets/images/login-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/login-bg.jpg
--------------------------------------------------------------------------------
/src/assets/images/number.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/number.png
--------------------------------------------------------------------------------
/src/assets/images/password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/password.png
--------------------------------------------------------------------------------
/src/assets/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/success.png
--------------------------------------------------------------------------------
/src/assets/images/user_img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/user_img.jpg
--------------------------------------------------------------------------------
/src/assets/micro-page/ad-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/ad-1.png
--------------------------------------------------------------------------------
/src/assets/micro-page/ad-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/ad-2.png
--------------------------------------------------------------------------------
/src/assets/micro-page/ad-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/ad-3.png
--------------------------------------------------------------------------------
/src/assets/micro-page/ad-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/ad-4.png
--------------------------------------------------------------------------------
/src/assets/micro-page/card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/card.png
--------------------------------------------------------------------------------
/src/assets/micro-page/def.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/def.png
--------------------------------------------------------------------------------
/src/assets/micro-page/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/menu.png
--------------------------------------------------------------------------------
/src/assets/icon/downArrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/downArrow@2x.png
--------------------------------------------------------------------------------
/src/assets/im_box/link-send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/link-send.png
--------------------------------------------------------------------------------
/src/assets/im_box/upload-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/upload-on.png
--------------------------------------------------------------------------------
/src/assets/images/Frame-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/Frame-view.png
--------------------------------------------------------------------------------
/src/assets/images/icon-tishi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/icon-tishi.png
--------------------------------------------------------------------------------
/src/assets/images/login-img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/images/login-img.jpg
--------------------------------------------------------------------------------
/src/assets/micro-page/class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/class.png
--------------------------------------------------------------------------------
/src/assets/micro-page/notice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/notice.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-link.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-tabs.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-text.png
--------------------------------------------------------------------------------
/src/assets/404_images/404_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/404_images/404_cloud.png
--------------------------------------------------------------------------------
/src/assets/empty/empty_contacts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/empty/empty_contacts.png
--------------------------------------------------------------------------------
/src/assets/example-img/idcard1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/example-img/idcard1.png
--------------------------------------------------------------------------------
/src/assets/example-img/idcard2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/example-img/idcard2.png
--------------------------------------------------------------------------------
/src/assets/home/goods-received.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/goods-received.png
--------------------------------------------------------------------------------
/src/assets/home/ic-arrow-normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/ic-arrow-normal.png
--------------------------------------------------------------------------------
/src/assets/home/orde-management.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/orde-management.png
--------------------------------------------------------------------------------
/src/assets/home/order-shipped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/order-shipped.png
--------------------------------------------------------------------------------
/src/assets/home/publish-product.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/publish-product.png
--------------------------------------------------------------------------------
/src/assets/home/return-address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/return-address.png
--------------------------------------------------------------------------------
/src/assets/home/stock-warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/stock-warning.png
--------------------------------------------------------------------------------
/src/assets/icon/conversion@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/conversion@2x.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-ad-def.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-ad-def.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-hotarea.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-hotarea.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-notice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-notice.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-search.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/jd-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/jd-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/jd-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/jd-two.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/sf-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/sf-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/sf-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/sf-two.png
--------------------------------------------------------------------------------
/src/assets/home/store-settlement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/store-settlement.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-image-ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-image-ad.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-prod-list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-prod-list.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-promotion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-promotion.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/ems-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/ems-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/ems-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/ems-two.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/htky-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/htky-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/sto-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/sto-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/yto-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/yto-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/yto-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/yto-two.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/zto-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/zto-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/zto-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/zto-two.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/has_end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/has_end.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/new_cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/new_cart.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/offlined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/offlined.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc-logo.png
--------------------------------------------------------------------------------
/src/lang/biz/area/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | areaId: '',
3 | areaName: '地址',
4 | parentId: '上级地址',
5 | level: '等级(从1开始)'
6 | }
7 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict = true
2 | shamefully-hoist = true
3 | strict-peer-dependencies = false
4 | registry = https://registry.npmmirror.com
5 |
--------------------------------------------------------------------------------
/src/assets/home/collection-account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/collection-account.png
--------------------------------------------------------------------------------
/src/assets/home/commodity-management.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/commodity-management.png
--------------------------------------------------------------------------------
/src/assets/home/commodity-reviewed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/commodity-reviewed.png
--------------------------------------------------------------------------------
/src/assets/home/ic-arrow-narrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/ic-arrow-narrow-down.png
--------------------------------------------------------------------------------
/src/assets/home/ic-arrow-narrow-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/ic-arrow-narrow-up.png
--------------------------------------------------------------------------------
/src/assets/home/refund-after-sales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/refund-after-sales.png
--------------------------------------------------------------------------------
/src/assets/icon/slide-left-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/slide-left-arrow@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/slide-right-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/slide-right-arrow@2x.png
--------------------------------------------------------------------------------
/src/assets/im_box/customer-service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/im_box/customer-service.png
--------------------------------------------------------------------------------
/src/assets/micro-page/one-line-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/one-line-one.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-link-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-link-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-tabs-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-tabs-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-text-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-text-active.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/yunda-one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/yunda-one.png
--------------------------------------------------------------------------------
/src/assets/outlet-config/yunda-two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/outlet-config/yunda-two.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/togger_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/togger_icon.png
--------------------------------------------------------------------------------
/src/assets/website-config/login-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/website-config/login-bg.jpg
--------------------------------------------------------------------------------
/src/assets/website-config/title-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/website-config/title-icon.png
--------------------------------------------------------------------------------
/doc/img/readme/image-20210705143529597.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/doc/img/readme/image-20210705143529597.png
--------------------------------------------------------------------------------
/doc/img/readme/image-20231130110522682.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/doc/img/readme/image-20231130110522682.png
--------------------------------------------------------------------------------
/doc/img/readme/image-20231130110607548.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/doc/img/readme/image-20231130110607548.png
--------------------------------------------------------------------------------
/src/assets/home/distribution-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/distribution-settings.png
--------------------------------------------------------------------------------
/src/assets/icon/data-nalysis-ideas@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/icon/data-nalysis-ideas@2x.png
--------------------------------------------------------------------------------
/src/assets/micro-page/carousel-swiper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/carousel-swiper.png
--------------------------------------------------------------------------------
/src/assets/micro-page/goods-waterfall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/goods-waterfall.png
--------------------------------------------------------------------------------
/src/assets/micro-page/lateral-sliding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/lateral-sliding.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-hotarea-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-hotarea-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-notice-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-notice-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-search-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-search-active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/been_shelves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/been_shelves.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/icons.88a567a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/icons.88a567a.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_goods_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_goods_list.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_bulk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_bulk.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_cart.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_live.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_live.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_new.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_picture_by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_picture_by.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_shop_signs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_shop_signs.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_store_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_store_list.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/selected_link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/selected_link.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/show-default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/show-default.png
--------------------------------------------------------------------------------
/src/assets/example-img/Business-license.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/example-img/Business-license.png
--------------------------------------------------------------------------------
/src/assets/home/Illegal-goods-off-shelves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/Illegal-goods-off-shelves.png
--------------------------------------------------------------------------------
/src/assets/home/price-adjustment-record.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/home/price-adjustment-record.png
--------------------------------------------------------------------------------
/src/assets/micro-page/micro-create-header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/micro-create-header.png
--------------------------------------------------------------------------------
/src/assets/micro-page/one-line-one-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/one-line-one-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-image-ad-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-image-ad-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-prod-list-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-prod-list-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/p-promotion-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/p-promotion-active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_five.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_five.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_four.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_four.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_three.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_three.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_recommand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_recommand.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc-category_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc-category_icon.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_floor_title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_floor_title.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_goods_module.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_goods_module.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_limited_skill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_limited_skill.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_index.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_members.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_members.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_order.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_profile.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_skill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_skill.png
--------------------------------------------------------------------------------
/src/assets/website-config/menu-top-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/website-config/menu-top-icon.png
--------------------------------------------------------------------------------
/src/assets/micro-page/micro-create-header1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/micro-create-header1.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_discount_coupon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_discount_coupon.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_integral.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_integral.png
--------------------------------------------------------------------------------
/src/lang/biz/area/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | areaId: 'area id',
3 | areaName: 'area name',
4 | parentId: 'parent id',
5 | level: 'level'
6 | }
7 |
--------------------------------------------------------------------------------
/src/assets/micro-page/carousel-swiper-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/carousel-swiper-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/goods-waterfall-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/goods-waterfall-active.png
--------------------------------------------------------------------------------
/src/assets/micro-page/lateral-sliding-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/micro-page/lateral-sliding-active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_auxiliary_interval.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_auxiliary_interval.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_floor_title_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_floor_title_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_goods_list_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_goods_list_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_collection.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_distribution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_distribution.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_preferential.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_preferential.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_modal_securities.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_modal_securities.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_picture_by_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_picture_by_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_shop_signs_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_shop_signs_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_store_list_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_store_list_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_universal_hotspot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_universal_hotspot.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_five_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_five_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_four_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_four_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/goods_list_three_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/goods_list_three_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_goods_module_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_goods_module_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_limited_skill_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_limited_skill_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_discount_coupon_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_discount_coupon_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_auxiliary_interval_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_auxiliary_interval_active.png
--------------------------------------------------------------------------------
/src/assets/pc-micro-page/pc_universal_hotspot_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gz-yami/mall4cloud-platform/HEAD/src/assets/pc-micro-page/pc_universal_hotspot_active.png
--------------------------------------------------------------------------------
/src/lang/rbac/menu-resource/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | platformsMenuResources: '平台菜单资源',
3 | suppliersMenuResources: '供应商菜单资源',
4 | merchantsMenuResources: '商家菜单资源'
5 | }
6 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 | [*]
3 | charset = utf-8
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | insert_final_newline = true
8 | trim_trailing_whitespace = true
9 |
--------------------------------------------------------------------------------
/src/lang/product/spu-tag/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: 'spu id',
3 | brandId: 'brand id',
4 | categoryId: 'category id',
5 | inputNotEmpty: 'Cannot be an empty string'
6 | }
7 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 | /src/components/verifition
6 | /test/unit/coverage/
7 | /src/icons/iconfont.js
8 | /components.d.ts
9 | /src/auto-import
10 |
--------------------------------------------------------------------------------
/src/lang/platform/sys-user-account/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | email: '邮箱',
3 | phone: '手机号',
4 | username: '用户名',
5 | password: '密码',
6 | mobileNumber: '手机号码',
7 | status: '状态'
8 | }
9 |
--------------------------------------------------------------------------------
/src/stores/index.js:
--------------------------------------------------------------------------------
1 | import { createPinia } from 'pinia'
2 | const store = createPinia()
3 | // 全局注册 store
4 | export function setupStore (app) {
5 | app.use(store)
6 | }
7 |
8 | export { store }
9 |
--------------------------------------------------------------------------------
/src/lang/rbac/role/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | roleId: '角色id',
3 | roleName: '角色名称',
4 | remark: '备注',
5 | createUserId: '创建者ID',
6 | bizType: '业务类型 0平台菜单 1 店铺菜单',
7 | tenantId: '所属租户'
8 | }
9 |
--------------------------------------------------------------------------------
/src/lang/distribution/notice/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | msgId: '公告表',
3 | msgTitle: '公告标题',
4 | startTime: '指定上线时间',
5 | endTime: '指定下线时间',
6 | isTop: '是否置顶(0 不置顶 1 置顶)',
7 | content: '公告内容'
8 | }
9 |
--------------------------------------------------------------------------------
/src/lang/distribution/notice/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | msgId: 'msg id',
3 | msgTitle: 'msg title',
4 | startTime: 'start time',
5 | endTime: 'end time',
6 | isTop: 'is top',
7 | content: 'content'
8 | }
9 |
--------------------------------------------------------------------------------
/src/lang/rbac/role/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | roleId: 'role id',
3 | roleName: 'role name',
4 | remark: 'remark',
5 | createUserId: 'create user id',
6 | bizType: 'biz type',
7 | tenantId: 'tenant id'
8 | }
9 |
--------------------------------------------------------------------------------
/src/lang/platform/hot-search/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | hotSearchId: '主键',
3 | shopId: '店铺ID',
4 | content: '热搜内容',
5 | createDate: '创建时间',
6 | seq: '顺序',
7 | status: '状态',
8 | title: '热搜标题'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/platform/sys-user-account/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | email: 'email',
3 | phone: 'phone',
4 | username: 'username',
5 | phoneNumber: 'phone number',
6 | password: 'password',
7 | status: 'status'
8 | }
9 |
--------------------------------------------------------------------------------
/src/lang/rbac/menu-resource/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | platformsMenuResources: 'platforms menu resources',
3 | suppliersMenuResources: 'suppliers menu resources',
4 | merchantsMenuResources: 'merchants menu resources'
5 | }
6 |
--------------------------------------------------------------------------------
/src/lang/platform/notice/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | id: '公告id',
3 | shopId: '店铺id',
4 | title: '公告标题',
5 | content: '公告内容',
6 | type: '类型',
7 | status: '状态',
8 | isTop: '是否置顶',
9 | publishTime: '发布时间'
10 | }
11 |
--------------------------------------------------------------------------------
/src/lang/printer/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | printerId: '打印机id',
3 | shopId: '店铺id',
4 | supplierId: '供应商id',
5 | printerName: '打印机名称',
6 | siid: '设备码',
7 | printerRemark: '打印机备注',
8 | isDefault: '是否默认'
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/icons-select/svg-icons.js:
--------------------------------------------------------------------------------
1 | const files = import.meta.glob('../../icons/svg/*.svg')
2 |
3 | const svgIcons = Object.keys(files).map((path) => {
4 | return path.match(/\/([^/]+)\.svg$/)[1]
5 | })
6 | export default svgIcons
7 |
--------------------------------------------------------------------------------
/src/lang/product/brand/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | brandId: 'brand id',
3 | name: 'name',
4 | desc: 'describe',
5 | imgUrl: 'logo',
6 | firstLetter: 'first letter',
7 | seq: 'seqencing',
8 | status: 'status'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/product/brand/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | brandId: 'brand_id',
3 | name: '品牌名称',
4 | desc: '品牌描述',
5 | imgUrl: '品牌logo',
6 | firstLetter: '检索首字母',
7 | seq: '排序',
8 | isTop: '置顶',
9 | status: '状态'
10 | }
11 |
--------------------------------------------------------------------------------
/src/lang/platform/hot-search/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | hotSearchId: 'hot search id',
3 | shopId: 'shop id',
4 | content: 'content',
5 | createDate: 'create date',
6 | seq: 'seq',
7 | status: 'status',
8 | title: 'title'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/platform/notice/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | id: 'id',
3 | shopId: 'shop id',
4 | title: 'title',
5 | content: 'content',
6 | type: 'type',
7 | status: 'status',
8 | isTop: 'is top',
9 | publishTime: 'publish time'
10 | }
11 |
--------------------------------------------------------------------------------
/src/lang/rbac/menu-permission/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | menuPermissionId: '菜单资源用户id',
3 | menuTitle: '资源关联菜单',
4 | bizType: '业务类型 0平台菜单 1 店铺菜单',
5 | permission: '权限对应的编码',
6 | name: '资源名称',
7 | uri: '资源对应服务器路径',
8 | method: '请求方法'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/printer/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | printerId: 'printer id',
3 | shopId: 'shop id',
4 | supplierId: 'supplier id',
5 | printerName: 'printer name',
6 | siid: 'siid',
7 | printerRemark: 'printer remark',
8 | isDefault: 'is default'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/rbac/menu-permission/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | menuPermissionId: 'menu permission id',
3 | menuTitle: 'menu title',
4 | bizType: 'biz type',
5 | permission: 'permission',
6 | name: 'name',
7 | uri: 'uri',
8 | method: 'method'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/delivery/delivery-company/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | deliveryCompanyId: 'delivery company id',
3 | name: 'name',
4 | homeUrl: 'home url',
5 | aliNo: 'ali no',
6 | birdNo: 'bird no',
7 | hundredNo: 'hundred no',
8 | otherNo: 'other no'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/delivery/delivery-company/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | deliveryCompanyId: 'ID',
3 | name: '物流公司名称',
4 | homeUrl: '公司主页',
5 | aliNo: '物流公司编号(阿里)',
6 | birdNo: '物流公司编号(快递鸟)',
7 | hundredNo: '物流公司编号(快递100)',
8 | otherNo: '物流公司编号(其他不知名公司)'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/platform/sys-user/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | shopUserId: '商家用户id',
3 | shopId: '关联店铺id',
4 | nickName: '昵称',
5 | avatar: '头像',
6 | status: '状态',
7 | code: '员工编号',
8 | phoneNum: '联系方式',
9 | mobileNumber: '手机号码',
10 | hasAccount: '是否已经设置账号'
11 | }
12 |
--------------------------------------------------------------------------------
/src/lang/outletConfig/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | deliveryCompanyType: '快递公司类型',
3 | shipper: '发货人',
4 | mobile: '发货人电话',
5 | partnerId: '电子面单客户账户或月结账号',
6 | partnerKey: '电子面单密码',
7 | net: '收件网点名称',
8 | paperSize: '纸张规格 1.一联面单 2.二联面单',
9 | isDefault: '是否默认'
10 | }
11 |
--------------------------------------------------------------------------------
/src/lang/components/category-selector/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | categorySelector: '分类选择器',
3 | chooseProdCateg: '选择商品分类',
4 | currCho: '你当前的选择是',
5 | isItAComtionPro: '是否为组合商品',
6 | generalMerchandise: '普通商品',
7 | combinationGoods: '组合商品',
8 | haveReadFol: '确认选择'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/product/attr/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | attrId: 'attr id',
3 | name: '属性名称',
4 | nameZh: '中文属性名称',
5 | nameEn: '英文属性名称',
6 | desc: '属性描述',
7 | descZh: '中文属性描述',
8 | descEn: '英文属性描述',
9 | searchType: '是否搜索',
10 | attrType: '属性类型',
11 | attrValue: '属性值'
12 | }
13 |
--------------------------------------------------------------------------------
/src/icons/svg/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/lang/outletConfig/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | deliveryCompanyType: 'delivery company type',
3 | shipper: 'shipper',
4 | mobile: 'mobile',
5 | partnerId: 'partner id',
6 | partnerKey: 'partner key',
7 | net: 'net',
8 | paperSize: 'paper size',
9 | isDefault: 'is default'
10 | }
11 |
--------------------------------------------------------------------------------
/src/lang/product/attr/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | attrId: 'attr id',
3 | name: 'name',
4 | nameZh: 'Chinese name',
5 | nameEn: 'English name',
6 | desc: 'desc',
7 | descZh: 'Chinese desc',
8 | descEn: 'English desc',
9 | searchType: 'search type',
10 | attrType: 'attr type'
11 | }
12 |
--------------------------------------------------------------------------------
/src/lang/platform/sys-user/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | shopUserId: 'shop user id',
3 | shopId: 'shop id',
4 | nickName: 'nick name',
5 | avatar: 'avatar',
6 | status: 'status',
7 | code: 'code',
8 | phoneNum: 'phone num',
9 | phoneNumber: 'phone number',
10 | hasAccount: 'has account'
11 | }
12 |
--------------------------------------------------------------------------------
/src/lang/station/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | stationName: '自提点',
3 | stationNames: '自提点名称',
4 | addr: '地址',
5 | number: '号码',
6 | account: '账号',
7 | close: '关闭',
8 | open: '开启',
9 | business: '营业',
10 | platformClosed: '平台关闭',
11 | underReview: '审核中',
12 | auditFailure: '审核失败'
13 | }
14 |
--------------------------------------------------------------------------------
/src/lang/constant/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | noNull: '不能为空',
3 | product: '商品',
4 | shop: '店铺',
5 | contactName: '联系人',
6 | contactTel: '联系电话',
7 | consignee: '收货人',
8 | mobilePhone: '手机号码',
9 | deliveryAddr: '收货地址',
10 | name: '名称',
11 | dollar: '元',
12 | piece: '件',
13 | normal: '正常'
14 | }
15 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es5",
5 | "sourceMap": true,
6 | "skipLibCheck": true
7 | },
8 | "exclude": [
9 | "node_modules"
10 | ],
11 | "include": [
12 | "src/auto-import/components.d.ts",
13 | "src/auto-import/imports.d.ts"
14 | ]
15 | }
--------------------------------------------------------------------------------
/src/styles/element-variables.scss:
--------------------------------------------------------------------------------
1 | // element-plus
2 | :root {
3 | --el-color-primary: #155BD4;
4 | --el-color-primary-light-3: #447cdd;
5 | --el-menu-item-height: 40px !important;
6 | --el-menu-sub-item-height: 40px !important;
7 | --el-button-hover-link-text-color: #155BD4;
8 | --el-color-primary-light-5: #155BD4;
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/api/auth/auth.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function login (data) {
4 | return request({
5 | url: '/mall4cloud_auth/ua/login',
6 | method: 'post',
7 | data
8 | })
9 | }
10 |
11 | export function logout () {
12 | return request({
13 | url: '/mall4cloud_auth/login_out',
14 | method: 'post'
15 | })
16 | }
17 |
--------------------------------------------------------------------------------
/platform.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name cloud-platform.mall4j.com;
4 |
5 | location / {
6 | root /usr/share/nginx/html/platform;
7 | }
8 |
9 | error_page 404 /404.html;
10 | location = /404-light.html {
11 | }
12 |
13 | error_page 500 502 503 504 /50x.html;
14 | location = /50x.html {
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/src/views/common/redirect/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
18 |
--------------------------------------------------------------------------------
/src/lang/station/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | stationName: 'Station name',
3 | stationNames: 'Station name',
4 | addr: 'Address',
5 | number: 'Number',
6 | account: 'Account',
7 | close: 'Close',
8 | open: 'Open',
9 | business: 'Business',
10 | platformClosed: 'Platform closed',
11 | underReview: 'Under review',
12 | auditFailure: 'Audit failure'
13 | }
14 |
--------------------------------------------------------------------------------
/src/lang/components/category-selector/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | categorySelector: 'Category selector',
3 | chooseProdCateg: 'Select product category',
4 | currCho: 'Your current choice is',
5 | isItAComtionPro: 'Is it a combination product ',
6 | generalMerchandise: 'General Product',
7 | combinationGoods: 'Combined product',
8 | haveReadFol: 'Confirm selection'
9 | }
10 |
--------------------------------------------------------------------------------
/src/lang/constant/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | noNull: 'No null',
3 | product: 'Product',
4 | shop: 'Shop',
5 | contactName: 'Contact person',
6 | contactTel: 'Contact number',
7 | consignee: 'consignee',
8 | mobilePhone: 'Mobile phone',
9 | deliveryAddr: ' delivery address',
10 | name: 'Name',
11 | dollar: ' Dollar ',
12 | piece: 'Pieces',
13 | normal: 'Normal'
14 | }
15 |
--------------------------------------------------------------------------------
/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name cloud-platform.mall4j.com;
4 |
5 | location / {
6 | try_files $uri $uri/ /;
7 | root /usr/share/nginx/html/dist;
8 | }
9 |
10 | error_page 404 /404.html;
11 | location = /404-light.html {
12 | }
13 |
14 | error_page 500 502 503 504 /50x.html;
15 | location = /50x.html {
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | **/*.log
8 |
9 | tests/**/coverage/
10 | tests/e2e/reports
11 | selenium-debug.log
12 |
13 | # Editor directories and files
14 | .idea
15 | .vscode
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.local
21 |
22 | package-lock.json
23 | yarn.lock
24 | pnpm-lock.yaml
25 |
26 | /src/auto-import
27 |
--------------------------------------------------------------------------------
/src/api/platform/sys-config.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function get (key) {
4 | return request({
5 | url: '/mall4cloud_platform/sys_config/info/' + key,
6 | method: 'get',
7 | params: ''
8 | })
9 | }
10 | export function save (data) {
11 | return request({
12 | url: '/mall4cloud_platform/sys_config/save/',
13 | method: 'post',
14 | data
15 | })
16 | }
17 |
--------------------------------------------------------------------------------
/.env.production:
--------------------------------------------------------------------------------
1 | # just a flag
2 | VITE_APP_ENV = 'production'
3 |
4 | # 环境变量必须以VITE_APP_为开头。如:VITE_APP_API、VITE_APP_TITLE
5 | # 你在代码中可以通过如下方式获取:
6 | # import.meta.env.VITE_APP_XXX
7 |
8 | # base api
9 | VITE_APP_BASE_API = 'http://192.168.1.80:8000'
10 |
11 | # 访问文件存储资源的url 对应阿里云的Bucket域名
12 | VITE_APP_RESOURCES_URL = 'http://192.168.1.80:9000/mall4cloud'
13 |
14 | # 文件上传类型 0.阿里云 1.minIo
15 | VITE_APP_RESOURCES_TYPE = '1'
16 |
--------------------------------------------------------------------------------
/.env.development:
--------------------------------------------------------------------------------
1 | # just a flag
2 | VITE_APP_ENV = 'development'
3 |
4 | # 环境变量必须以VITE_APP_为开头。如:VITE_APP_API、VITE_APP_TITLE
5 | # 你在代码中可以通过如下方式获取:
6 | # import.meta.env.VITE_APP_XXX
7 |
8 | # base api
9 | VITE_APP_BASE_API = 'http://192.168.1.80:8000'
10 |
11 | # 访问文件存储资源的url 对应阿里云的Bucket域名
12 | VITE_APP_RESOURCES_URL = 'http://192.168.1.80:9000/mall4cloud'
13 |
14 | # 文件上传类型 0.阿里云 1.minIo
15 | VITE_APP_RESOURCES_TYPE = '1'
16 |
--------------------------------------------------------------------------------
/src/utils/debounce.js:
--------------------------------------------------------------------------------
1 | // 防抖 防止表单重复提交
2 | export const Debounce = (fn, t) => {
3 | const delay = t || 1000
4 | let timer
5 | return function () {
6 | const args = arguments
7 | if (timer) {
8 | clearTimeout(timer)
9 | }
10 |
11 | const callNow = !timer
12 |
13 | timer = setTimeout(() => {
14 | timer = null
15 | }, delay)
16 |
17 | if (callNow) fn.apply(this, args)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/directive/index.js:
--------------------------------------------------------------------------------
1 | import { checkPermission } from './permission'
2 | import { cancelFocus } from './cancelFocus'
3 | import { richDirective } from './rich'
4 |
5 | // 全局注册 directive
6 | export function setupDirective (app) {
7 | // v-permission 挂载到全局
8 | app.directive('permission', checkPermission)
9 | // v-cancel-focus 挂载到全局
10 | app.directive('cancelFocus', cancelFocus)
11 | app.directive('rich', richDirective)
12 | }
13 |
--------------------------------------------------------------------------------
/src/icons/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/platform/shop-addr/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | shopRefundAddrId: 'shop refund id',
3 | shopId: 'shop id',
4 | mobile: 'mobile',
5 | isDefault: 'default',
6 | consignee: 'consignee',
7 | provinceId: 'province id',
8 | province: 'region',
9 | cityId: 'city id',
10 | city: 'city',
11 | areaId: 'area id',
12 | area: 'area',
13 | addr: 'addr',
14 | postCode: 'post code',
15 | lng: 'lng',
16 | lat: 'lat'
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/Verifition/utils/ase.js:
--------------------------------------------------------------------------------
1 | import CryptoJS from 'crypto-js'
2 | /**
3 | * @word 要加密的内容
4 | * @keyWord String 服务器随机返回的关键字
5 | * */
6 | export function aesEncrypt (word, keyWord = 'XwKsGlMcdPMEhR1B') {
7 | const key = CryptoJS.enc.Utf8.parse(keyWord)
8 | const srcs = CryptoJS.enc.Utf8.parse(word)
9 | const encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
10 | return encrypted.toString()
11 | }
12 |
--------------------------------------------------------------------------------
/src/lang/product/spu-tag/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | tagName: '分组名称',
3 | prodCount: '商品数量',
4 | seq: '排序号',
5 | list: '列表样式',
6 | type: '类型',
7 | defaultType: '默认类型',
8 | customType: '自定义类型',
9 | oneInARow: '一列一个',
10 | twoInARow: '一列两个',
11 | threeInARow: '一列三个',
12 | pleaseEnterALabelName: '请输入分组名称',
13 | prodManage: '商品管理',
14 | updateProdTagSeq: '修改商品分组排序',
15 | returnTagManage: '返回分组',
16 | serialNoEnter: '请输入排序值',
17 | inputNotEmpty: '不能为空字符串'
18 | }
19 |
--------------------------------------------------------------------------------
/src/icons/svg/example.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/user/score/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: 'spu id',
3 | brandId: 'brand id',
4 | categoryId: 'category id',
5 | name: 'name',
6 | sellingPoint: 'selling point',
7 | imgUrls: 'img urls',
8 | priceFee: 'price fee',
9 | priceScale: 'price scale',
10 | marketPriceFee: 'market price fee',
11 | marketPriceScale: 'market price scale',
12 | status: 'status',
13 | growthDescription: 'Member Benefits',
14 | memberBenefitsPageDisplaySet: 'Member benefits page display settings'
15 | }
16 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/utils/auth.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | import Cookies from 'vue-cookies'
11 |
12 | const TokenKey = 'Luck-platform-Token'
13 |
14 | export function getToken () {
15 | return Cookies.get(TokenKey)
16 | }
17 |
18 | export function setToken (token) {
19 | return Cookies.set(TokenKey, token, { sameSite: 'Lax' })
20 | }
21 |
22 | export function removeToken () {
23 | return Cookies.remove(TokenKey)
24 | }
25 |
--------------------------------------------------------------------------------
/src/utils/i18n.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 |
11 | import { i18n } from '@/lang'
12 |
13 | // translate router.meta.title, be used in breadcrumb sidebar tagsview
14 | export function generateTitle (title) {
15 | const hasKey = i18n.global.te('route.' + title)
16 | if (hasKey) {
17 | // $t :this method from vue-i18n, inject in @/lang/index.js
18 | return $t('route.' + title)
19 | }
20 | return title
21 | }
22 |
--------------------------------------------------------------------------------
/src/lang/product/spu/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: 'spu id',
3 | brandId: '品牌ID',
4 | categoryId: '分类ID',
5 | name: '商品名称',
6 | sellingPoint: '卖点',
7 | imgUrls: '图片',
8 | priceFee: '售价',
9 | priceScale: '售价',
10 | marketPriceFee: '市场价',
11 | marketPriceScale: '市场价',
12 | prodSelect: '商品选择',
13 | status: '状态',
14 | categoryName: '商品分类',
15 | fileSuccess: '文件导入成功',
16 | fileFail: '文件导入失败',
17 | fileUploadFail: '文件上传失败!',
18 | downloadTemplateTips1: '上传模板只能是 xls、xlsx格式!',
19 | downloadTemplateTips2: '上传模板大小不能超过 10MB!'
20 | }
21 |
--------------------------------------------------------------------------------
/src/components/Verifition/api/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 此处可直接引用自己项目封装好的 axios 配合后端联调
3 | */
4 |
5 | import request from './../utils/axios' // 组件内部封装的axios
6 | // import request from "@/api/axios.js" //调用项目封装的axios
7 |
8 | // 获取验证图片 以及token
9 | export function reqGet (data) {
10 | return request({
11 | url: '/mall4cloud_auth/ua/captcha/get',
12 | method: 'post',
13 | data
14 | })
15 | }
16 |
17 | // 滑动或者点选验证
18 | export function reqCheck (data) {
19 | return request({
20 | url: '/mall4cloud_auth/ua/captcha/check',
21 | method: 'post',
22 | data
23 | })
24 | }
25 |
--------------------------------------------------------------------------------
/src/icons/svg/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/rbac/menu/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | menuId: 'menu id',
3 | parentId: 'parent id',
4 | bizType: 'biz type',
5 | permission: 'permission',
6 | path: 'path',
7 | component: 'component',
8 | redirect: 'redirect',
9 | alwaysShow: 'always show',
10 | hidden: 'hidden',
11 | name: 'name',
12 | title: 'title',
13 | icon: 'icon',
14 | noCache: 'no cache',
15 | breadcrumb: 'breadcrumb',
16 | affix: 'affix',
17 | activeMenu: 'active menu',
18 | seq: 'seq',
19 | platformMenu: 'Platform side menu',
20 | supplierMenu: 'Supplier Side Menu',
21 | shopMenu: 'Merchant Side Menu'
22 | }
23 |
--------------------------------------------------------------------------------
/src/api/platform/sys-user-account.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function get (userId) {
4 | return request({
5 | url: '/mall4cloud_platform/sys_user/account',
6 | method: 'get',
7 | params: {
8 | userId
9 | }
10 | })
11 | }
12 |
13 | export function save (data) {
14 | return request({
15 | url: '/mall4cloud_platform/sys_user/account',
16 | method: 'post',
17 | data
18 | })
19 | }
20 |
21 | export function update (data) {
22 | return request({
23 | url: '/mall4cloud_platform/sys_user/account',
24 | method: 'put',
25 | data
26 | })
27 | }
28 |
--------------------------------------------------------------------------------
/src/icons/svg/password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/user/rights/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | rightsName: '权益名称',
3 | status: '状态',
4 | rightsIcon: '权益图标',
5 | rightsIntroduce: '权益简介',
6 | rightDetail: '权益详情',
7 | sequence: '顺序',
8 | customBenefits: '新建',
9 | enterContent: '请输入内容,长度不超过6个字符',
10 | errorIntegerTip: '请输入整数',
11 | nameCanNotEmpty: '权益名称不能为空',
12 | iconCanNotEmpty: '权益图标不能为空',
13 | intrCanNotEmpty: '权益简介不能为空',
14 | rightsType: '权益类型',
15 | customization: '自定义',
16 | rointsRebateMultiplier: '积分回馈倍率',
17 | coupons: '优惠券',
18 | bonusPoints: '积分赠送',
19 | discountRange: '会员折扣',
20 | memberDiscount: '会员折扣',
21 | packageType: '包邮'
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/components/Verifition/utils/axios.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 |
3 | axios.defaults.baseURL = import.meta.env.VITE_APP_BASE_API
4 |
5 | const service = axios.create({
6 | timeout: 40000,
7 | headers: {
8 | 'X-Requested-With': 'XMLHttpRequest',
9 | 'Content-Type': 'application/json; charset=UTF-8'
10 | }
11 | })
12 | service.interceptors.request.use(
13 | config => {
14 | return config
15 | },
16 | error => {
17 | Promise.reject(error)
18 | }
19 | )
20 |
21 | // response interceptor
22 | service.interceptors.response.use(
23 | response => {
24 | return response.data
25 | }
26 | )
27 | export default service
28 |
--------------------------------------------------------------------------------
/src/layout/components/Sidebar/Item.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
14 | {{ title }}
15 |
16 |
17 |
31 |
36 |
--------------------------------------------------------------------------------
/src/lang/product/category/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | categoryId: '分类ID',
3 | shopId: '店铺ID',
4 | parentId: '父分类ID',
5 | name: '分类名称',
6 | desc: '分类描述',
7 | path: '分类地址',
8 | status: '状态', // 1:enable, 0:disable, -1:deleted
9 | icon: '分类图标',
10 | imgUrl: '分类图片',
11 | level: '分类层级',
12 | deductionRate: '分类扣率',
13 | seq: '排序',
14 | normal: '正常',
15 | offline: '下架',
16 | disable: '禁用',
17 | recommImgSize: '建议图片尺寸为',
18 | categoryParent: '上级分类',
19 | categoryParentTip: '创建分类后,上级分类不支持修改',
20 | nameNotEmpty: '名称不能只有空格',
21 | categoryNoNull: '分类名称不能为空',
22 | imageNoNull: '图片不能为空',
23 | deductionRateNoNull: '分类扣率不能为空',
24 | enterCateName: '请输入分类名称'
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/directive/rich/index.js:
--------------------------------------------------------------------------------
1 | import DOMPurify from 'dompurify'
2 | // 记录旧数据
3 | let oldInnerHTML = ''
4 |
5 | function setHTML (el, value) {
6 | let innerHTML = value
7 | innerHTML = DOMPurify.sanitize(innerHTML, { ADD_ATTR: ['target'] })
8 | el.innerHTML = innerHTML
9 | }
10 |
11 | export const richDirective = {
12 | mounted (el, binding) {
13 | if (binding.value) {
14 | setHTML(el, binding.value)
15 | }
16 | },
17 | updated (el, binding) {
18 | // 如果旧数据跟新数据一样 直接 return
19 | if (binding.value === oldInnerHTML && !binding.value) {
20 | return
21 | }
22 | oldInnerHTML = binding.value
23 | if (binding.value) {
24 | setHTML(el, binding.value)
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/product-details/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
29 |
30 |
40 |
--------------------------------------------------------------------------------
/src/icons/svg/index-select.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
15 |
--------------------------------------------------------------------------------
/src/lang/product/spu/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | spuId: 'spu id',
3 | brandId: 'brand id',
4 | categoryId: 'category id',
5 | name: 'name',
6 | sellingPoint: 'selling point',
7 | imgUrls: 'img',
8 | priceFee: 'price fee',
9 | priceScale: 'price scale',
10 | marketPriceFee: 'market price fee',
11 | marketPriceScale: 'market price scale',
12 | prodSelect: 'Product selection',
13 | status: 'status',
14 | categoryName: 'Product Categories',
15 | fileSuccess: 'File imported successfully',
16 | fileFail: 'File import failed',
17 | fileUploadFail: 'File upload failed!',
18 | downloadTemplateTips1: 'Upload template can only be XLS, xlsx format!',
19 | downloadTemplateTips2: 'Upload template size cannot exceed 10MB!'
20 | }
21 |
--------------------------------------------------------------------------------
/src/lang/biz/imgbox/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | picManager: '图片管理器',
3 | choosePic: '选择图片',
4 | picName: '图片名称',
5 | query: '查询',
6 | uploadPic: '上传图片',
7 | selectLocalPic: '请选择本地图片上传:',
8 | confirmUpload: '确定上传',
9 | revisePicName: '修改图片名称和分组',
10 | oldName: '原名称',
11 | revName: '修改名称',
12 | inputNewName: '请输入新的图片名称',
13 | superiorLimit: '可选择照片数量已达上限',
14 | onlyPictures: '只支持图片格式、大小不能超过2m,其他文件已清除',
15 | onlySupported: '仅支持',
16 | pic: '图片',
17 | notExceed: '大小不能超过',
18 | alreadyExist: '已有',
19 | soonUpload: '即将上传',
20 | unit: '张图片',
21 | upload: '上传',
22 | remainder: '还可以选择',
23 | maxSelect: '当前最多只能选择',
24 | requestError: '服务器打了个盹^_^',
25 | PicMaxQuantity: '图片最大数量为:',
26 | groupEmpty: '分组名称不能为空'
27 | }
28 |
--------------------------------------------------------------------------------
/src/lang/platform/shop-addr/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | shopRefundAddrId: '商家退货地址id',
3 | shopId: '店铺id',
4 | mobile: '手机',
5 | isDefault: '默认地址',
6 | consignee: '收货人',
7 | provinceId: '省ID',
8 | province: '地区',
9 | cityId: '城市ID',
10 | city: '城市',
11 | areaId: '区ID',
12 | area: '区',
13 | addr: '地址',
14 | postCode: '邮编',
15 | lng: '经度',
16 | lat: '纬度',
17 | consigneeNotEmpty: '收货人不能为空',
18 | mobilePhoneNoNull: '手机号不能为空',
19 | mobileFormattingError: '请输入正确的手机号',
20 | cityCannotBeEmpty: '城市不能为空',
21 | provinceCannotBeEmpty: '省份不能为空',
22 | districtCounEmpty: '区/县不能为空',
23 | addressCannotBeEmpty: '地址不能为空',
24 | changeAddrTipTitle: '确认修改发货地址',
25 | changeAddrTip: '发货网点配置已引用该地址,修改后可能导致发货地址与网点账号信息错乱,请谨慎修改!'
26 | }
27 |
--------------------------------------------------------------------------------
/src/lang/biz/videobox/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | videoManager: '视频管理器',
3 | chooseVideo: '选择视频',
4 | videoName: '视频名称',
5 | query: '查询',
6 | uploadVideo: '上传视频',
7 | selectLocalVideo: '请选择本地视频上传:',
8 | confirmUpload: '确定上传',
9 | reviseVideoName: '修改视频名称与分组',
10 | oldName: '原名称',
11 | revName: '新名称',
12 | inputNewName: '请输入新的视频名称',
13 | superiorLimit: '可选择照片数量已达上限',
14 | onlyVideos: '只支持视频格式、大小不能超过20m,其他文件已清除',
15 | onlySupported: '仅支持',
16 | video: '视频',
17 | notExceed: '大小不能超过',
18 | alreadyExist: '已有',
19 | soonUpload: '即将上传',
20 | unit: '个视频',
21 | upload: '上传',
22 | remainder: '还可以选择',
23 | maxSelect: '当前最多只能选择',
24 | requestError: '服务器打了个盹^_^',
25 | VideoMaxQuantity: '视频最大数量为:',
26 | pleaseSelectGroup: '请选择视频'
27 | }
28 |
--------------------------------------------------------------------------------
/src/directive/cancelFocus/index.js:
--------------------------------------------------------------------------------
1 | import { useCancelFocusIntervalStore } from '@/stores/modules/cancel-focus-interval.js'
2 |
3 | /**
4 | * 元素被点击后一段时间自动取消聚焦
5 | * 主要用于解决 element-ui 按钮点击后高亮显示不会复原问题
6 | * binding.value 设定几秒后取消,尽可能不低于1000,防止定时器内存占用过大(单位:毫秒)
7 | */
8 | export const cancelFocus = {
9 | mounted: (el, binding) => {
10 | const btnInterval = useCancelFocusIntervalStore()
11 | let time = binding.value
12 | if (time < 1000 || !time) time = 1500
13 | el.addEventListener('click', ($event) => {
14 | btnInterval.createInterval($event, time)
15 | })
16 | },
17 | beforeUnmount: (el) => {
18 | const btnInterval = useCancelFocusIntervalStore()
19 | btnInterval.clearInterval()
20 | el.removeEventListener('click', () => {})
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/icons/svg/report.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
16 |
--------------------------------------------------------------------------------
/src/directive/permission/index.js:
--------------------------------------------------------------------------------
1 | import { useUserStore } from '@/stores/modules/user'
2 |
3 | /**
4 | * 按钮权限
5 | */
6 | export const checkPermission = {
7 | mounted (el, binding) {
8 | const { roles, isAdmin } = useUserStore()
9 | if (isAdmin) {
10 | return true
11 | }
12 | // 「其他角色」按钮权限校验
13 | const { value } = binding
14 | if (value) {
15 | const requiredPerms = value // DOM绑定需要的按钮权限标识
16 | const hasPerm = roles?.some(perm => {
17 | return requiredPerms.includes(perm)
18 | })
19 |
20 | if (!hasPerm) {
21 | el.parentNode && el.parentNode.removeChild(el)
22 | }
23 | } else {
24 | throw new Error(
25 | "need perms! Like v-has-perm=\"['sys:user:add','sys:user:edit']\""
26 | )
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/icons/svg/nested.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/user/recharge/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | title: '标题',
3 | rechargeAmount: '充值金额',
4 | bgImg: '背景图片',
5 | noPic: '暂无图片',
6 | sequence: '顺序',
7 | titleNoEnter: '请输入标题名称',
8 | enterRechargeAmount: '请输入充值金额',
9 | rewardAmount: '赠送金额',
10 | enterRewardAmount: '请输入赠送金额',
11 | reward: '赠送',
12 | rewardScore: '赠送积分',
13 | enterRewardScore: '请输入赠送积分',
14 | rewardGrowthValue: '赠送成长值',
15 | enterRewardGrowthValue: '请输入赠送成长值',
16 | rewardCoupon: '赠送优惠券',
17 | couponUpperLimit: '领券上限',
18 | amount: '金额',
19 | score: '积分',
20 | growth: '成长值',
21 | selectCoupons: '选择优惠券',
22 | couponName: '优惠券名称',
23 | titCanNoBlank: '标题不能为空',
24 | bgImgCannotEmpty: '背景图片不能为空',
25 | rechargeAmountLimited: '充值金额必须大于0',
26 | moreThan0: '充值金额必须大于0',
27 | quantity: '数量',
28 |
29 | end: 'end'
30 | }
31 |
--------------------------------------------------------------------------------
/src/stores/modules/cancel-focus-interval.js:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 |
3 | /**
4 | * 为解决element-ui按钮点击后,聚焦不会自动消失问题,
5 | * 定义统一定时器进行清除聚焦操作
6 | */
7 | export const useCancelFocusIntervalStore = defineStore('cancelFocus', {
8 | state: () => {
9 | return {
10 | value: null
11 | }
12 | },
13 | actions: {
14 | clearInterval () {
15 | clearInterval(this.value)
16 | },
17 | createInterval ($event, time) {
18 | if (this.value) {
19 | clearInterval(this.value)
20 | this.value = null
21 | }
22 | this.value = setInterval(() => {
23 | let target = $event.target
24 | if (target.nodeName === 'SPAN') {
25 | target = $event.target.parentNode
26 | }
27 | target.blur()
28 | }, time)
29 | }
30 | }
31 | })
32 |
--------------------------------------------------------------------------------
/src/icons/svg/order.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
17 |
--------------------------------------------------------------------------------
/src/api/biz/attach-file.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 保存上传文件记录
4 | export function save (data) {
5 | return request({
6 | url: '/mall4cloud_biz/m/attach_file',
7 | method: 'post',
8 | data
9 | })
10 | }
11 |
12 | // 获取上传文件记录表列表
13 | export function page (pageParam) {
14 | return request({
15 | url: '/mall4cloud_biz/m/attach_file/page',
16 | method: 'get',
17 | params: pageParam
18 | })
19 | }
20 |
21 | // 更新文件记录
22 | export function updateFileName (data) {
23 | return request({
24 | url: '/mall4cloud_biz/m/attach_file/update_file',
25 | method: 'put',
26 | data
27 | })
28 | }
29 |
30 | // 删除上传文件记录
31 | export function deleteFile (param) {
32 | return request({
33 | url: '/mall4cloud_biz/m/attach_file',
34 | method: 'delete',
35 | params: param
36 | })
37 | }
38 |
--------------------------------------------------------------------------------
/src/icons/svg/index.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
17 |
--------------------------------------------------------------------------------
/src/api/product/prod-info.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_product/m/spu/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function getProdInfoPage (spuId) {
12 | return request({
13 | url: '/mall4cloud_product/admin/spu',
14 | method: 'get',
15 | params: {
16 | spuId
17 | }
18 | })
19 | }
20 |
21 | export function deleteById (spuId) {
22 | return request({
23 | url: '/mall4cloud_product/m/spu',
24 | method: 'delete',
25 | params: {
26 | spuId
27 | }
28 | })
29 | }
30 |
31 | export function getAttrsByCategoryId (param) {
32 | return request({
33 | url: '/mall4cloud_product/admin/attr/get_attrs_by_category_id',
34 | method: 'get',
35 | params: param
36 | })
37 | }
38 |
--------------------------------------------------------------------------------
/src/lang/product/category/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | categoryId: 'category id',
3 | shopId: 'shop id',
4 | parentId: 'parent id',
5 | name: 'name',
6 | desc: 'desc',
7 | path: 'path',
8 | status: 'status',
9 | icon: 'icon',
10 | imgUrl: 'img url',
11 | level: 'level',
12 | deductionRate: 'Deduction Rate',
13 | seq: 'seq',
14 | normal: 'normal',
15 | offline: 'Off shelf',
16 | recommImgSize: 'Carousel pictures',
17 | categoryParent: 'Category parent',
18 | categoryParentTip: 'After you create a classification, the parent classification does not support modification',
19 | nameNotEmpty: 'The name cannot have only spaces',
20 | categoryNoNull: 'Category name cannot be empty',
21 | imageNoNull: 'Image cannot be empty',
22 | deductionRateNoNull: 'Deduction rate cannot be empty',
23 | enterCateName: 'Please enter the category name'
24 | }
25 |
--------------------------------------------------------------------------------
/src/lang/user/rights/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | rightsName: 'Name of rights',
3 | status: 'Status',
4 | rightsIcon: 'Equity Icons',
5 | rightsIntroduce: 'Benefits Introduction',
6 | rightDetail: 'Benefit Details',
7 | sequence: 'Seq',
8 | customBenefits: 'New',
9 | enterContent: 'Please enter the content, no more than six characters in length',
10 | errorIntegerTip: 'Please enter an integer',
11 | nameCanNotEmpty: 'Rights name cannot be blank',
12 | iconCanNotEmpty: 'The rights icon cannot be empty',
13 | intrCanNotEmpty: 'Rights introduction cannot be blank',
14 | rightsType: 'Type of interest',
15 | customization: 'Customization',
16 | rointsRebateMultiplier: 'Points rebate multiplier',
17 | coupons: 'Coupons',
18 | bonusPoints: 'Bonus Points',
19 | discountRange: 'Member Discount',
20 | memberDiscount: 'Member Discount',
21 | packageType: 'Package'
22 | }
23 |
--------------------------------------------------------------------------------
/src/icons/svg/distribution.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
18 |
--------------------------------------------------------------------------------
/src/icons/svg/live.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
19 |
--------------------------------------------------------------------------------
/src/icons/svg/group.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
18 |
--------------------------------------------------------------------------------
/src/lang/rbac/menu/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | menuId: '菜单id',
3 | parentId: '父菜单ID,一级菜单为0',
4 | bizType: '业务类型 0平台菜单 1 店铺菜单',
5 | permission: '权限,需要有哪个权限才能访问该菜单',
6 | path: '路径 就像uri',
7 | component: '组件如:1.layout/Layout 为布局,不会跳页面 2.views/components-demo/tinymce 跳转到该页面',
8 | redirect: '当设置 noRedirect 的时候该路由在面包屑导航中不可被点击',
9 | alwaysShow: '一直显示根路由',
10 | hidden: '当设置 true 的时候该路由不会在侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1',
11 | name: '设定路由的名字,一定要填写不然使用时会出现各种问题',
12 | title: '设置该路由在侧边栏和面包屑中展示的名字',
13 | icon: '设置该路由的图标,支持 svg-class,也支持 el-icon-x element-ui 的 icon',
14 | noCache: '如果设置为true,则不会被 缓存(默认 false)',
15 | breadcrumb: '如果设置为false,则不会在breadcrumb面包屑中显示(默认 true)',
16 | affix: '若果设置为true,它则会固定在tags-view中(默认 false)',
17 | activeMenu: '当路由设置了该属性,则会高亮相对应的侧边栏。',
18 | seq: '排序,越小越靠前',
19 | platformMenu: '平台端菜单',
20 | supplierMenu: '供应商端菜单',
21 | shopMenu: '商家端菜单'
22 | }
23 |
--------------------------------------------------------------------------------
/src/stores/modules/common.js:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 |
3 | export const useCommonStore = defineStore('common', {
4 | state: () => {
5 | return {
6 | // 侧边栏, 折叠状态
7 | sidebarFold: true,
8 | menuIds: [],
9 | selectLeftId: '',
10 | selectRightId: '',
11 | pathHeader: '',
12 | // 当前选择的标签
13 | selectMenu: [],
14 | routeList: []
15 | }
16 | },
17 | actions: {
18 | updateRouteList (list) {
19 | this.routeList = list
20 | },
21 | updatePathHeader (val) {
22 | this.pathHeader = val
23 | },
24 | updateSelectLeftId (id) {
25 | this.selectLeftId = id
26 | },
27 | updateSelectRightId (id) {
28 | this.selectRightId = id
29 | },
30 | updateSelectMenu (list) {
31 | this.selectMenu = list
32 | },
33 | updateSidebarFold (fold) {
34 | this.sidebarFold = fold
35 | }
36 | }
37 | })
38 |
--------------------------------------------------------------------------------
/src/api/system/addr-manage.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page () {
4 | return request({
5 | url: '/mall4cloud_delivery/m/area/list',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function get (areaId) {
11 | return request({
12 | url: '/mall4cloud_delivery/m/area',
13 | method: 'get',
14 | params: {
15 | areaId
16 | }
17 | })
18 | }
19 |
20 | export function save (data) {
21 | return request({
22 | url: '/mall4cloud_delivery/m/area',
23 | method: 'post',
24 | data
25 | })
26 | }
27 |
28 | export function update (data) {
29 | return request({
30 | url: '/mall4cloud_delivery/m/area',
31 | method: 'put',
32 | data
33 | })
34 | }
35 |
36 | export function deleteById (areaId) {
37 | return request({
38 | url: '/mall4cloud_delivery/m/area',
39 | method: 'delete',
40 | params: {
41 | areaId
42 | }
43 | })
44 | }
45 |
--------------------------------------------------------------------------------
/src/icons/svg/eye.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/views/common/error-page/401.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 | 返回
8 |
9 |
10 |
11 |
12 | 你没有权限去该页面 !
13 |
14 |
15 |
16 |
17 |
18 |
19 |
26 |
27 |
44 |
--------------------------------------------------------------------------------
/src/api/product/spu.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_product/m/spu/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (spuId) {
12 | return request({
13 | url: '/mall4cloud_product/m/spu',
14 | method: 'get',
15 | params: {
16 | spuId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_product/m/spu',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_product/m/spu',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (spuId) {
38 | return request({
39 | url: '/mall4cloud_product/m/spu',
40 | method: 'delete',
41 | params: {
42 | spuId
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/icons/svg/shop.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
19 |
--------------------------------------------------------------------------------
/src/lang/live/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | liveRoom: {
3 | view: '查看',
4 | viewLRoomInfo: '直播间信息',
5 | anchorName: '主播昵称',
6 | liveTime: '直播的时间',
7 | liveBackgroundImage: '直播背景图',
8 | anchorSharingPicture: '主播分享图',
9 | liveCoverImage: '直播封面图',
10 | prod: '直播商品',
11 | roomName: '直播间名称',
12 | over: '结束',
13 | anchorNickname: '主播昵称',
14 | anchorMobile: '主播手机号',
15 | liveRoomStatus: '直播间状态',
16 | whetherToTop: '是否置顶',
17 | liveBroadcastTime: '开播时间',
18 | LiveStartTime: '直播开始时间',
19 | LiveOverTime: '直播结束时间',
20 | live: '直播中',
21 | suspend: '暂停',
22 | notPinned: '未置顶',
23 | pinned: '已置顶',
24 | top: '置顶',
25 | cancelTopping: '取消置顶',
26 | violationOffShelf: '违规下架',
27 | reasonForOffline: '下线原因',
28 | offlineReasonTip1: '下线原因不能超过100字',
29 | offlineReasonTip: '下线原因不能为空',
30 | offlineTip: '确定对活动[ACTIVITYNAME]进行下线操作?如是,请填写下线理由',
31 | tips: '提示'
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/icons/svg-icon.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
30 |
31 |
48 |
--------------------------------------------------------------------------------
/src/api/product/attr.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_product/admin/attr/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (attrId) {
12 | return request({
13 | url: '/mall4cloud_product/admin/attr',
14 | method: 'get',
15 | params: {
16 | attrId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_product/admin/attr',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_product/admin/attr',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (attrId) {
38 | return request({
39 | url: '/mall4cloud_product/admin/attr',
40 | method: 'delete',
41 | params: {
42 | attrId
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/api/platform/notice.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_multishop/admin/notice/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (id) {
12 | return request({
13 | url: '/mall4cloud_multishop/admin/notice',
14 | method: 'get',
15 | params: {
16 | id
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_multishop/admin/notice',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_multishop/admin/notice',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (id) {
38 | return request({
39 | url: '/mall4cloud_multishop/admin/notice',
40 | method: 'delete',
41 | params: {
42 | id
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/api/discount/discount.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_discount/m/discount/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (discountId) {
12 | return request({
13 | url: `/mall4cloud_discount/m/discount/info/${discountId}`,
14 | method: 'get',
15 | params: {
16 | }
17 | })
18 | }
19 |
20 | export function save (data) {
21 | return request({
22 | url: '/mall4cloud_discount/m/discount',
23 | method: 'post',
24 | data
25 | })
26 | }
27 |
28 | export function update (data) {
29 | return request({
30 | url: '/mall4cloud_discount/m/discount',
31 | method: 'put',
32 | data
33 | })
34 | }
35 |
36 | export function deleteById (discountId) {
37 | return request({
38 | url: `/mall4cloud_discount/m/discount/${discountId}`,
39 | method: 'delete',
40 | params: {
41 | }
42 | })
43 | }
44 |
--------------------------------------------------------------------------------
/src/api/product/spu-detail.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_product/m/spu_detail/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (spuId) {
12 | return request({
13 | url: '/mall4cloud_product/m/spu_detail',
14 | method: 'get',
15 | params: {
16 | spuId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_product/m/spu_detail',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_product/m/spu_detail',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (spuId) {
38 | return request({
39 | url: '/mall4cloud_product/m/spu_detail',
40 | method: 'delete',
41 | params: {
42 | spuId
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/lang/seckill/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | actName: '活动名称',
3 | maxNum: '限购数量',
4 | actStartTime: '活动开始时间',
5 | selectedLot: '所选批次',
6 | maxCancelTime: '取消订单时间(分)',
7 | offViol: '违规下线',
8 | status: '状态',
9 | buyer: '买家',
10 | activTime: '活动时间',
11 | selectDate: '选择日期',
12 | inventory: '库存',
13 | product: '商品',
14 | unlimited: '不限',
15 | makeSurateTheAct: '确定使活动失效?',
16 | purcPerPerson: '每人限购',
17 | cancelTheOrder: '订单取消',
18 | unpaidnutes: '分钟未支付订单,订单取消',
19 | warning: '警告:秒杀商品采用独立库存请合理安排',
20 | price: '价格(元)',
21 | exisocks: '现有库存',
22 | pleaheyTime: '请选择活动时间',
23 | timeCanEmpty: '时间不可为空',
24 | evenBeEmpty: '活动名称不可为空',
25 | close: '关闭',
26 | invalidated: '已失效',
27 | open: '开启',
28 | theOrionEmpty: '订单取消时间不可为空',
29 | commoBeEmpty: '商品价格不能为空',
30 | commodiBeEmpty: '商品库存不能为空',
31 | enableMustOne: '请至少启用一个sku',
32 | pleaSenProc: '请选择活动商品',
33 | openPurchaseLimit: '开启限购',
34 | invalidActivity: '失效活动',
35 | canBePurcPer: '每人可购买'
36 | }
37 |
--------------------------------------------------------------------------------
/src/lang/rbac/web-config/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | chinese: '中文',
3 | english: '英文',
4 | platformSideConfiguration: '平台端配置',
5 | merchantSideConfiguration: '商家端配置',
6 | supplierSideConfiguration: '供应商端配置',
7 | pcConfiguration: 'pc端配置',
8 | h5Configuration: 'h5端配置',
9 | stationConfiguration: '门店端配置',
10 | open: '开启',
11 | close: '关闭',
12 | determine: '确定',
13 | cancellation: '取消',
14 | loginLogo: '登录logo',
15 | logo: 'Logo',
16 | loginBg: '登录背景',
17 | bsCopyright: '版权声明',
18 | bsTitleContent: '标题文本',
19 | bsTitleImg: '标题图标',
20 | bsMenuTitleOpen: '菜单展开文本',
21 | bsMenuTitleClose: '菜单收缩文本',
22 | pcQrcodeImg: '底部二维码',
23 | pcCompanyName: '公司名称',
24 | pcCompanyInfo: '底部扩展信息',
25 | pcTitleContent: '网站标题文本',
26 | uniTitleContent: '网站标题',
27 | pcTitleImg: '网站标题图标',
28 | pcLogoImgText: '图文Logo',
29 | pcWelcome: '导航欢迎语',
30 | h5Welcome: '商城欢迎语',
31 | activationStatus: '激活状态',
32 | canNotBeEmpty: '不能为空',
33 | TopIcon: '菜单栏顶部图标',
34 | save: '保存信息'
35 | }
36 |
--------------------------------------------------------------------------------
/src/api/distribution-manage/transport.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function transportPage () {
4 | return request({
5 | url: 'mall4cloud_delivery/m/transport/list',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function transportGet (attrId) {
11 | return request({
12 | url: '/mall4cloud_delivery/m/transport',
13 | method: 'get',
14 | params: {
15 | attrId
16 | }
17 | })
18 | }
19 |
20 | export function transportSave (data) {
21 | return request({
22 | url: '/mall4cloud_delivery/m/transport',
23 | method: 'post',
24 | data
25 | })
26 | }
27 |
28 | export function transportUpdate (data) {
29 | return request({
30 | url: '/mall4cloud_delivery/m/transport',
31 | method: 'put',
32 | data
33 | })
34 | }
35 |
36 | export function deleteTransportById (attrId) {
37 | return request({
38 | url: '/mall4cloud_delivery/m/transport',
39 | method: 'delete',
40 | params: {
41 | attrId
42 | }
43 | })
44 | }
45 |
--------------------------------------------------------------------------------
/src/api/platform/index-img.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_multishop/admin/index_img/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (imgId) {
12 | return request({
13 | url: '/mall4cloud_multishop/admin/index_img',
14 | method: 'get',
15 | params: {
16 | imgId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_multishop/admin/index_img',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_multishop/admin/index_img',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (imgId) {
38 | return request({
39 | url: '/mall4cloud_multishop/admin/index_img',
40 | method: 'delete',
41 | params: {
42 | imgId
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/lang/coupon/coupon/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | couponId: '优惠券ID',
3 | shopId: '店铺ID',
4 | couponName: '优惠券名称',
5 | subTitle: '优惠券副标题',
6 | couponType: '优惠券类型',
7 | suitableProdType: '适用商品',
8 | getWay: '获取方式',
9 | ways1: '用户领取',
10 | ways2: '系统发放',
11 | validTimeType: '生效类型',
12 | deliveryTime: '投放时间',
13 | cashCondition: '使用条件',
14 | reduceAmount: '减免金额',
15 | couponDiscount: '折扣额度',
16 | startTime: '开始时间',
17 | endTime: '结束时间',
18 | afterReceiveDays: '领券后',
19 | validDays: '有效天数',
20 | totalStock: '总库存',
21 | stocks: '库存',
22 | limitNum: '每人限领',
23 | status: '过期状态',
24 | putonStatus: '状态',
25 | version: '版本号',
26 | selectCoupons: '选择优惠券',
27 | couponDscription: '优惠券描述',
28 | couponUpperLimit: '领券上限',
29 | platformDistribution: '平台发放',
30 | userClaim: '用户领取',
31 | receiveDirectly: '直接领取',
32 | systemIssue: '系统发放',
33 | couponStatus: '优惠券状态',
34 | cashCoupon: '代金券',
35 | discountVoucher: '折扣券',
36 | coinCertificate: '兑换券',
37 | reduce: '减',
38 | full: '满'
39 | }
40 |
--------------------------------------------------------------------------------
/src/stores/modules/app.js:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 | import { getLanguage } from '@/lang'
3 | import Cookies from 'vue-cookies'
4 |
5 | export const useAppStore = defineStore('app', {
6 | state: () => {
7 | return {
8 | sidebar: {
9 | opened: Cookies.get('cloudSidebarStatus') ? !!+Cookies.get('cloudSidebarStatus') : true,
10 | withoutAnimation: false
11 | },
12 | language: getLanguage()
13 | }
14 | },
15 | actions: {
16 | toggleSideBar () {
17 | this.sidebar.opened = !this.sidebar.opened
18 | this.sidebar.withoutAnimation = false
19 | Cookies.set('cloudSidebarStatus', Number(this.sidebar.opened))
20 | },
21 | closeSideBar ({ withoutAnimation }) {
22 | Cookies.set('cloudSidebarStatus', 0)
23 | this.sidebar.opened = false
24 | this.sidebar.withoutAnimation = withoutAnimation
25 | },
26 | setLanguage (language) {
27 | this.language = language
28 | Cookies.set('cloudLanguage', language)
29 | }
30 | }
31 | })
32 |
--------------------------------------------------------------------------------
/src/api/delivery/delivery-company.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function list () {
4 | return request({
5 | url: '/mall4cloud_delivery/p/delivery_company/list',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function get (deliveryCompanyId) {
11 | return request({
12 | url: '/mall4cloud_delivery/p/delivery_company',
13 | method: 'get',
14 | params: {
15 | deliveryCompanyId
16 | }
17 | })
18 | }
19 |
20 | export function save (data) {
21 | return request({
22 | url: '/mall4cloud_delivery/p/delivery_company',
23 | method: 'post',
24 | data
25 | })
26 | }
27 |
28 | export function update (data) {
29 | return request({
30 | url: '/mall4cloud_delivery/p/delivery_company',
31 | method: 'put',
32 | data
33 | })
34 | }
35 |
36 | export function deleteById (deliveryCompanyId) {
37 | return request({
38 | url: '/mall4cloud_delivery/p/delivery_company',
39 | method: 'delete',
40 | params: {
41 | deliveryCompanyId
42 | }
43 | })
44 | }
45 |
--------------------------------------------------------------------------------
/src/api/platform/hot-search.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_multishop/admin/hot_search/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (hotSearchId) {
12 | return request({
13 | url: '/mall4cloud_multishop/admin/hot_search',
14 | method: 'get',
15 | params: {
16 | hotSearchId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_multishop/admin/hot_search',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_multishop/admin/hot_search',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (hotSearchId) {
38 | return request({
39 | url: '/mall4cloud_multishop/admin/hot_search',
40 | method: 'delete',
41 | params: {
42 | hotSearchId
43 | }
44 | })
45 | }
46 |
--------------------------------------------------------------------------------
/src/api/rbac/role.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_rbac/role/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function list () {
12 | return request({
13 | url: '/mall4cloud_rbac/role/list',
14 | method: 'get'
15 | })
16 | }
17 |
18 | export function get (roleId) {
19 | return request({
20 | url: '/mall4cloud_rbac/role',
21 | method: 'get',
22 | params: {
23 | roleId
24 | }
25 | })
26 | }
27 |
28 | export function save (data) {
29 | return request({
30 | url: '/mall4cloud_rbac/role',
31 | method: 'post',
32 | data
33 | })
34 | }
35 |
36 | export function update (data) {
37 | return request({
38 | url: '/mall4cloud_rbac/role',
39 | method: 'put',
40 | data
41 | })
42 | }
43 |
44 | export function deleteById (roleId) {
45 | return request({
46 | url: '/mall4cloud_rbac/role',
47 | method: 'delete',
48 | params: {
49 | roleId
50 | }
51 | })
52 | }
53 |
--------------------------------------------------------------------------------
/src/styles/variables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | // base color
11 | $blue:#324157;
12 | $light-blue:#3A71A8;
13 | $red:#C03639;
14 | $pink: #E65D6E;
15 | $green: #30B08F;
16 | $tiffany: #4AB7BD;
17 | $yellow:#FEC171;
18 | $panGreen: #30B08F;
19 |
20 | // sidebar
21 | $menuText:#333333;
22 | $menuActiveText:#409EFF;
23 | $subMenuActiveText:#333333; // https://github.com/ElemeFE/element/issues/12951
24 |
25 | $menuBg:#ffffff;
26 | $menuHover:#e7eefb;
27 |
28 | $subMenuBg:#ffffff;
29 | $subMenuHover:#e7eefb;
30 |
31 | $sideBarWidth: 230px;
32 |
33 | // the :export directive is the magic sauce for webpack
34 | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
35 | :export {
36 | menuText: $menuText;
37 | menuActiveText: $menuActiveText;
38 | subMenuActiveText: $subMenuActiveText;
39 | menuBg: $menuBg;
40 | menuHover: $menuHover;
41 | subMenuBg: $subMenuBg;
42 | subMenuHover: $subMenuHover;
43 | sideBarWidth: $sideBarWidth;
44 | }
45 |
--------------------------------------------------------------------------------
/src/styles/transition.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | // global transition css
11 |
12 | /* fade */
13 | .fade-enter-active,
14 | .fade-leave-active {
15 | transition: opacity 0.28s;
16 | }
17 |
18 | .fade-enter,
19 | .fade-leave-active {
20 | opacity: 0;
21 | }
22 |
23 | /* fade-transform */
24 | .fade-transform-leave-active,
25 | .fade-transform-enter-active {
26 | transition: all .5s;
27 | }
28 |
29 | .fade-transform-enter {
30 | opacity: 0;
31 | transform: translateX(-30px);
32 | }
33 |
34 | .fade-transform-leave-to {
35 | opacity: 0;
36 | transform: translateX(30px);
37 | }
38 |
39 | /* breadcrumb transition */
40 | .breadcrumb-enter-active,
41 | .breadcrumb-leave-active {
42 | transition: all .5s;
43 | }
44 |
45 | .breadcrumb-enter,
46 | .breadcrumb-leave-active {
47 | opacity: 0;
48 | transform: translateX(20px);
49 | }
50 |
51 | .breadcrumb-move {
52 | transition: all .5s;
53 | }
54 |
55 | .breadcrumb-leave-active {
56 | position: absolute;
57 | }
58 |
--------------------------------------------------------------------------------
/src/lang/biz/videobox/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | videoManager: 'Video Manager',
3 | chooseVideo: 'Select Video',
4 | videoName: 'Video name',
5 | query: 'query',
6 | uploadVideo: 'Upload videos',
7 | selectLocalVideo: 'Please select a local video to upload:',
8 | confirmUpload: 'Confirm upload',
9 | reviseVideoName: 'Modify video name',
10 | oldName: 'Old name',
11 | revName: 'Edit name',
12 | inputNewName: 'Please enter a new video name',
13 | superiorLimit: 'The number of selectable videos has reached the upper limit',
14 | onlyVideos: 'Only support videos format, size can not exceed 20m, other files have been cleared',
15 | onlySupported: 'Only supports',
16 | video: 'video',
17 | notExceed: 'Size cannot exceed',
18 | alreadyExist: 'Already existing',
19 | soonUpload: 'About to upload',
20 | unit: 'video',
21 | upload: 'Upload',
22 | remainder: 'There are also options',
23 | maxSelect: 'At present, you can only select at most',
24 | requestError: 'The server is dozing off^_^',
25 | VideoMaxQuantity: 'The maximum number of videos is:',
26 | pleaseSelectGroup: 'Please select video'
27 | }
28 |
--------------------------------------------------------------------------------
/src/icons/svg/analysis.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
22 |
--------------------------------------------------------------------------------
/src/lang/biz/imgbox/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | picManager: 'Picture Manager',
3 | choosePic: 'Select Picture',
4 | picName: 'Picture name',
5 | query: 'query',
6 | uploadPic: 'Upload pictures',
7 | selectLocalPic: 'Please select a local image to upload:',
8 | confirmUpload: 'Confirm upload',
9 | revisePicName: 'Modify picture name and grouping',
10 | oldName: 'Old name',
11 | revName: 'Edit name',
12 | inputNewName: 'Please enter a new picture name',
13 | superiorLimit: 'The number of selectable photos has reached the upper limit',
14 | onlyPictures: 'Only support image format, size can not exceed 2m, other files have been cleared',
15 | onlySupported: 'Only supports',
16 | pic: 'picture',
17 | notExceed: 'Size cannot exceed',
18 | alreadyExist: 'Already existing',
19 | soonUpload: 'About to upload',
20 | unit: 'picture',
21 | upload: 'Upload',
22 | remainder: 'There are also options',
23 | maxSelect: 'At present, you can only select at most',
24 | requestError: 'The server is dozing off^_^',
25 | PicMaxQuantity: 'The maximum number of pictures is:',
26 | groupEmpty: 'Group name cannot be empty'
27 | }
28 |
--------------------------------------------------------------------------------
/src/api/platform/sys-user.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function shopUserInfo () {
4 | return request({
5 | url: '/mall4cloud_platform/sys_user/info',
6 | method: 'get'
7 | })
8 | }
9 |
10 | export function page (pageParam) {
11 | return request({
12 | url: '/mall4cloud_platform/sys_user/page',
13 | method: 'get',
14 | params: pageParam
15 | })
16 | }
17 |
18 | export function get (sysUserId) {
19 | return request({
20 | url: '/mall4cloud_platform/sys_user',
21 | method: 'get',
22 | params: {
23 | sysUserId
24 | }
25 | })
26 | }
27 |
28 | export function save (data) {
29 | return request({
30 | url: '/mall4cloud_platform/sys_user',
31 | method: 'post',
32 | data
33 | })
34 | }
35 |
36 | export function update (data) {
37 | return request({
38 | url: '/mall4cloud_platform/sys_user',
39 | method: 'put',
40 | data
41 | })
42 | }
43 |
44 | export function deleteById (sysUserId) {
45 | return request({
46 | url: '/mall4cloud_platform/sys_user',
47 | method: 'delete',
48 | params: {
49 | sysUserId
50 | }
51 | })
52 | }
53 |
--------------------------------------------------------------------------------
/src/icons/svg/icon-zhedie.svg:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/src/lang/index.js:
--------------------------------------------------------------------------------
1 | import { createI18n } from 'vue-i18n'
2 | import en from './en'
3 | import zhCn from './zhCn'
4 | import Cookies from 'vue-cookies'
5 | const messages = {
6 | en: {
7 | ...en
8 | },
9 | zh: {
10 | ...zhCn
11 | }
12 | }
13 | export function getLanguage () {
14 | const chooseLanguage = Cookies.get('cloudLanguage')
15 | if (chooseLanguage) return chooseLanguage
16 | // if has not choose language
17 | const language = (navigator.language || navigator.browserLanguage).toLowerCase()
18 | const locales = Object.keys(messages)
19 | for (const locale of locales) {
20 | if (language.indexOf(locale) > -1) {
21 | return locale
22 | }
23 | }
24 | return 'zh'
25 | }
26 |
27 | const localeData = {
28 | globalInjection: true, // 如果设置true, $t() 函数将注册到全局
29 | legacy: false, // 如果想在composition api中使用需要设置为false
30 | // 默认语言
31 | // locale: settings.defaultLanguage,
32 | locale: localStorage.getItem('cloudLanguage') || 'zh',
33 | messages // set locale messages
34 | }
35 |
36 | export const i18n = createI18n(localeData)
37 | export const setupI18n = {
38 | install (app) {
39 | app.use(i18n)
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/lang/user/recharge/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | title: 'title',
3 | rechargeAmount: 'Recharge amount',
4 | bgImg: 'Background picture',
5 | noPic: 'No picture',
6 | sequence: 'sequence',
7 | titleNoEnter: 'Please enter a title name',
8 | enterRechargeAmount: 'Please enter the recharge amount',
9 | rewardAmount: 'Additional amount',
10 | enterRewardAmount: 'Please enter the reward amount',
11 | reward: 'Reward',
12 | rewardScore: 'Reward score',
13 | enterRewardScore: 'Please enter the reward score',
14 | rewardGrowthValue: 'Reward growth value',
15 | enterRewardGrowthValue: 'Please enter the reward growth value',
16 | rewardCoupon: 'Reward coupon',
17 | couponUpperLimit: 'Coupon upper limit',
18 | amount: 'Amount of money',
19 | score: 'score',
20 | growth: 'Growth value',
21 | selectCoupons: 'Select coupons',
22 | couponName: 'Coupon name',
23 | titCanNoBlank: 'Title cannot be empty',
24 | bgImgCannotEmpty: 'Background image cannot be empty',
25 | rechargeAmountLimited: 'RechargeAmount must be greater than 0',
26 | moreThan0: 'The recharge amount must be greater than 0',
27 | quantity: 'quantity',
28 | end: 'end'
29 | }
30 |
--------------------------------------------------------------------------------
/src/api/rbac/menu-permission.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_rbac/menu_permission/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (menuPermissionId) {
12 | return request({
13 | url: '/mall4cloud_rbac/menu_permission',
14 | method: 'get',
15 | params: {
16 | menuPermissionId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_rbac/menu_permission',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_rbac/menu_permission',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (menuPermissionId) {
38 | return request({
39 | url: '/mall4cloud_rbac/menu_permission',
40 | method: 'delete',
41 | params: {
42 | menuPermissionId
43 | }
44 | })
45 | }
46 |
47 | export function menuPermissionsList () {
48 | return request({
49 | url: '/mall4cloud_rbac/menu_permission/list',
50 | method: 'get'
51 | })
52 | }
53 |
--------------------------------------------------------------------------------
/src/api/product/brand.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_product/platform/brand/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (brandId) {
12 | return request({
13 | url: '/mall4cloud_product/platform/brand',
14 | method: 'get',
15 | params: {
16 | brandId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_product/platform/brand',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_product/platform/brand',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (brandId) {
38 | return request({
39 | url: '/mall4cloud_product/platform/brand',
40 | method: 'delete',
41 | params: {
42 | brandId
43 | }
44 | })
45 | }
46 |
47 | // 更新品牌状态(启用或禁用)
48 | export function enableOrDisable (data) {
49 | return request({
50 | url: '/mall4cloud_product/platform/brand/update_brand_status',
51 | method: 'put',
52 | data
53 | })
54 | }
55 |
--------------------------------------------------------------------------------
/src/icons/svg/language.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/svg/promotion.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/icons/svg/product.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/icons/svg/eye-open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lang/coupon/coupon/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | couponId: 'coupon id',
3 | shopId: 'shop id',
4 | couponName: 'coupon name',
5 | subTitle: 'coupon sub title',
6 | couponType: 'coupon type',
7 | suitableProdType: 'suitable prod type',
8 | getWay: 'get way',
9 | ways1: 'User pickup',
10 | ways2: 'Distributed in stores',
11 | validTimeType: 'valid time type',
12 | cashCondition: 'cash condition',
13 | reduceAmount: 'reduce amount',
14 | couponDiscount: 'coupon discount',
15 | startTime: 'start time',
16 | endTime: 'end time',
17 | afterReceiveDays: 'after receive days',
18 | validDays: 'valid days',
19 | totalStock: 'total stock',
20 | stocks: 'stocks',
21 | limitNum: 'limit num',
22 | status: 'overdue status',
23 | putonStatus: 'status',
24 | version: 'version',
25 | selectCoupons: 'Select coupons',
26 | couponDscription: 'Coupon description',
27 | couponUpperLimit: 'Coupon upper limit',
28 | platformDistribution: 'Platform distribution',
29 | userClaim: 'User claim',
30 | receiveDirectly: 'Receive directly',
31 | systemIssue: 'System issue',
32 | couponStatus: 'Coupon status',
33 | cashCoupon: 'Cash Coupon',
34 | discountVoucher: 'Discount Voucher',
35 | coinCertificate: 'Coin Certificate',
36 | reduce: 'Reduce',
37 | full: 'Full '
38 | }
39 |
--------------------------------------------------------------------------------
/src/lang/rbac/web-config/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | chinese: 'CN',
3 | english: 'EN',
4 | platformSideConfiguration: 'Platform side configuration',
5 | merchantSideConfiguration: 'Merchant side configuration',
6 | supplierSideConfiguration: 'Supplier side configuration',
7 | pcConfiguration: 'Pc configuration',
8 | h5Configuration: 'H5 configuration',
9 | stationConfiguration: 'Stores configuration',
10 | open: 'Open',
11 | close: 'Close',
12 | determine: 'determine',
13 | cancellation: 'cancellation',
14 | loginLogo: 'Login logo',
15 | logo: 'Logo',
16 | loginBg: 'Login background',
17 | bsCopyright: 'Copyright',
18 | bsTitleContent: 'Title content',
19 | bsTitleImg: 'Title img',
20 | bsMenuTitleOpen: 'Menu title open',
21 | bsMenuTitleClose: 'Menu title close',
22 | pcQrcodeImg: 'Qr code img',
23 | pcCompanyName: 'Company name',
24 | pcCompanyInfo: 'Company info',
25 | pcTitleContent: 'Title content',
26 | uniTitleContent: 'Title content',
27 | pcTitleImg: 'Title img',
28 | pcLogoImgText: 'Logo img Text',
29 | pcWelcome: 'Navigation welcome message',
30 | h5Welcome: 'Mall Welcome Message',
31 | activationStatus: 'Activation status',
32 | canNotBeEmpty: 'Cannot be empty',
33 | TopIcon: 'Menu bar top icon',
34 | save: 'Save the information'
35 | }
36 |
--------------------------------------------------------------------------------
/src/lang/live/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | liveRoom: {
3 | roomName: 'Live room name',
4 | view: 'View',
5 | viewLRoomInfo: 'View live room information',
6 | anchorName: 'Anchor Name',
7 | liveTime: 'Time of live broadcast',
8 | liveBackgroundImage: 'Live background image',
9 | prod: 'Live Prod',
10 | anchorSharingPicture: 'Anchor sharing picture',
11 | liveCoverImage: 'Live cover image',
12 | anchorNickname: 'Anchor nickname',
13 | anchorMobile: 'Anchor Mobile',
14 | liveRoomStatus: 'Live room status',
15 | whetherToTop: 'Whether to top',
16 | liveBroadcastTime: 'Broadcast time',
17 | live: 'Live',
18 | over: 'over',
19 | LiveStartTime: 'Live broadcast start time',
20 | LiveOverTime: 'Live broadcast end time',
21 | suspend: 'Time out',
22 | notPinned: 'Not pinned',
23 | pinned: 'Pinned',
24 | top: 'Top',
25 | cancelTopping: 'Cancel topping',
26 | violationOffShelf: 'Violation off shelf',
27 | reasonForOffline: 'Offline reason',
28 | offlineReasonTip1: 'The reason for going offline cannot exceed 100 words',
29 | offlineReasonTip: 'Offline reason cannot be empty',
30 | offlineTip: 'Are you sure to offline activity [ACTIVITYNAME]? If yes, please fill in the reason for offline',
31 | tips: 'Tips'
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/layout/components/Sidebar/main-sidebar-sub-menu.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
26 |
27 |
28 |
29 |
41 |
53 |
--------------------------------------------------------------------------------
/src/api/delivery/transport.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_delivery/m/transport/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (transportId) {
12 | return request({
13 | url: '/mall4cloud_delivery/m/transport',
14 | method: 'get',
15 | params: {
16 | transportId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_delivery/m/transport',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_delivery/m/transport',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteById (transportId) {
38 | return request({
39 | url: '/mall4cloud_delivery/m/transport',
40 | method: 'delete',
41 | params: {
42 | transportId
43 | }
44 | })
45 | }
46 |
47 | export function listArea () {
48 | return request({
49 | url: '/mall4cloud_delivery/m/area/list',
50 | method: 'get',
51 | params: {}
52 | })
53 | }
54 |
55 | export function listAreaInfo () {
56 | return request({
57 | url: '/mall4cloud_delivery/m/area/areaListInfo',
58 | method: 'get',
59 | params: {}
60 | })
61 | }
62 |
--------------------------------------------------------------------------------
/src/utils/excelRequest.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 | import { getToken } from '@/utils/auth'
3 |
4 | // create an axios instance
5 | const service = axios.create({
6 | baseURL: import.meta.env.VITE_APP_BASE_API, // url = base url + request url
7 | responseType: 'blob',
8 | // withCredentials: true, // send cookies when cross-domain requests
9 | timeout: 500000 // request timeout
10 | })
11 |
12 | // request interceptor
13 | service.interceptors.request.use(
14 | config => {
15 | const token = useUserStore().token
16 | // do something before request is sent
17 | if (token) {
18 | config.headers.Authorization = getToken()
19 | }
20 | return config
21 | },
22 | error => {
23 | // do something with request error
24 | // eslint-disable-next-line no-console
25 | console.log(error) // for debug
26 | return Promise.reject(error)
27 | }
28 | )
29 |
30 | // response interceptor
31 | service.interceptors.response.use(
32 | /**
33 | * If you want to get http information such as headers or status
34 | * Please return response => response
35 | */
36 |
37 | /**
38 | * Determine the request status by custom code
39 | * Here is just an example
40 | * You can also judge the status by HTTP Status Code
41 | */
42 | response => {
43 | return response.data
44 | }
45 | )
46 |
47 | export default service
48 |
--------------------------------------------------------------------------------
/src/api/rbac/menu.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_rbac/menu/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (menuId) {
12 | return request({
13 | url: '/mall4cloud_rbac/menu',
14 | method: 'get',
15 | params: {
16 | menuId
17 | }
18 | })
19 | }
20 |
21 | export function save (data) {
22 | return request({
23 | url: '/mall4cloud_rbac/menu',
24 | method: 'post',
25 | data
26 | })
27 | }
28 |
29 | export function update (data) {
30 | return request({
31 | url: '/mall4cloud_rbac/menu',
32 | method: 'put',
33 | data
34 | })
35 | }
36 |
37 | export function deleteByIdAndSysType (menuId, sysType) {
38 | return request({
39 | url: '/mall4cloud_rbac/menu',
40 | method: 'delete',
41 | params: {
42 | menuId, sysType
43 | }
44 | })
45 | }
46 |
47 | export function menuList (searchParam) {
48 | return request({
49 | url: '/mall4cloud_rbac/menu/route',
50 | method: 'get',
51 | params: searchParam
52 | })
53 | }
54 |
55 | export function listWithPermissions () {
56 | return request({
57 | url: '/mall4cloud_rbac/menu/list_with_permissions',
58 | method: 'get'
59 | })
60 | }
61 |
62 | export function listMenuIds () {
63 | return request({
64 | url: '/mall4cloud_rbac/menu/list_menu_ids',
65 | method: 'get'
66 | })
67 | }
68 |
--------------------------------------------------------------------------------
/src/lang/seckill/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | actName: 'Activity Name',
3 | maxNum: 'Limit number of purchases',
4 | actStartTime: 'Activity start time',
5 | selectedLot: 'Selected lot',
6 | maxCancelTime: 'Order cancellation time (minutes)',
7 | offViol: 'Offending offline',
8 | status: 'Status',
9 | buyer: 'buyer',
10 | activTime: 'Activity time',
11 | selectDate: 'Select date',
12 | inventory: 'inventory',
13 | product: 'product',
14 | unlimited: 'unlimited',
15 | makeSurateTheAct: 'OK to make the activity expire?',
16 | purcPerPerson: 'Limit per person',
17 | cancelTheOrder: 'Order cancellation',
18 | unpaidnutes: 'minutes unpaid order, order cancelled',
19 | warning: 'Warning: seconds are in separate inventory, please arrange reasonably',
20 | price: 'Price ($)',
21 | exisocks: 'Existing stock',
22 | pleaheyTime: 'Please choose the event time',
23 | timeCanEmpty: 'Time cannot be empty',
24 | evenBeEmpty: 'Activity name must not be empty',
25 | close: 'close',
26 | invalidated: 'Invalidated',
27 | open: 'open',
28 | theOrionEmpty: 'Order cancellation time must not be empty',
29 | commoBeEmpty: 'The price of the product cannot be empty',
30 | commodiBeEmpty: 'Product inventory cannot be empty',
31 | enableMustOne: 'Please enable at least one sku',
32 | pleaSenProc: 'Please select the active product',
33 | openPurchaseLimit: 'Open Purchase Limit',
34 | invalidActivity: 'Invalid activity',
35 | canBePurcPer: 'per person can buy'
36 | }
37 |
--------------------------------------------------------------------------------
/src/lang/delivery/transport/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: '模板名称',
3 | query: '查询',
4 | type: '模板类型',
5 | buyerPrice: '买家承担运费',
6 | shopPrice: '卖家包邮',
7 | setShopPrice: '设置包邮条件',
8 | chargePrice: '收费方式',
9 | byCount: '按件数',
10 | byWeight: '按重量',
11 | byVolume: '按体积',
12 | distributableArea: '可配送区域',
13 | allRegions: '所有地区',
14 | addPrice: '点击添加地区和运费',
15 | freePostage: '指定条件免邮费',
16 | selArea: '指定区域',
17 | selCity: '请选择指定包邮城市',
18 | fullPieces: '满件/重量/体积',
19 | fullAmount: '满金额',
20 | firstPiece: '首件(个)',
21 | transportationCost: '运费(元)',
22 | continuationPiece: '续件(个)',
23 | continuationCost: '续费(元)',
24 | firstWeight: '首重(kg)',
25 | continuedWeight: '续重(kg)',
26 | firstVolume: '首体积(m³)',
27 | continuedVolume: '续体积(m³)',
28 | freeShippCondi: '包邮条件',
29 | pwv: '件/重量/体积',
30 | chooseDeliveryArea: '选择配送区域',
31 | templateNameCannotBeEmpty: '模板名称不能为空',
32 | pleaseWriteInfo: '请填写模板信息',
33 | pleaseSelectADeliveryArea: '请选择可配送区域',
34 | deliveryArea: '配送区域',
35 | addAreaAndShipping: '点击添加可配送的区域和运费',
36 | freeShippingOnSpecifiedConditions: '指定条件包邮',
37 | pleaseSelectTheDesignatedShippingCity: '请选择指定包邮城市',
38 | clickToAddTheSpecifiedShippingConditions: '点击添加指定包邮条件',
39 | setRegionalConditions: '请设置指定区域包邮条件',
40 | shippinngs: '运费设置',
41 | shippingtBeEmpty: '运费模板不能为空',
42 | freeShipping: '包邮',
43 | further: '且',
44 | full: '满',
45 | dollar: '元',
46 | freeShiullAmount: '满金额包邮',
47 | freeippingR: '元金额包邮',
48 | pwvFree: '件/重量/体积包邮'
49 | }
50 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import { setupStore } from '@/stores'
3 | import App from './App.vue'
4 | import router from '@/router'
5 | // i18n
6 | import { setupI18n } from '@/lang'
7 | import 'virtual:svg-icons-register'
8 | import svgIcon from '@/icons/svg-icon.vue'
9 | import * as ElementPlusIconsVue from '@element-plus/icons-vue'
10 | import ElementPlus from 'element-plus'
11 | import 'element-plus/dist/index.css'
12 |
13 | // import 'default-passive-events'
14 | // 全局样式
15 | import '@/styles/index.scss'
16 | // 权限路由、菜单
17 | import '@/permission.js'
18 | // 自定义指令
19 | import { setupDirective } from '@/directive'
20 | import moment from 'moment'
21 |
22 | // element-plus 图标
23 | const app = createApp(App)
24 | for (const [key, component] of Object.entries(
25 | ElementPlusIconsVue)) {
26 | app.component(key, component)
27 | }
28 |
29 | // i18n
30 | app.use(setupI18n)
31 | // router
32 | app.use(router)
33 | // 状态管理
34 | setupStore(app)
35 | // 注册指令(directive)
36 | setupDirective(app)
37 |
38 | // svg
39 | app.component('SvgIcon', svgIcon)
40 |
41 | app.mount('#app')
42 |
43 | // element-plus
44 | app.use(ElementPlus)
45 |
46 | // 自定义moment(js时间组件)
47 | moment.locale('zh-cn', {
48 | longDateFormat: {
49 | LT: 'HH:mm',
50 | LTS: 'HH:mm:ss',
51 | L: 'YYYY-MM-DD',
52 | LL: 'YYYY-MM-DD HH:mm:ss'
53 | },
54 | week: {
55 | // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
56 | dow: 1, // 星期一, 是一个星期的第一天
57 | doy: 4 // 1月4日所在的的一周是一年的第一周
58 | }
59 | })
60 |
--------------------------------------------------------------------------------
/src/stores/modules/web-config.js:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 | export const useWebConfigStore = defineStore('webConfigStore', {
3 | state: () => {
4 | return {
5 | webConfig: {
6 | loginLogoImg: null,
7 | loginBgImg: null,
8 | copyrightCn: null,
9 | copyrightEn: null,
10 | titleContentCn: null,
11 | titleContentEn: null,
12 | titleImg: null,
13 | bsMenuTitleOpenCn: null,
14 | bsMenuTitleOpenEn: null,
15 | bsMenuTitleCloseCn: null,
16 | bsMenuTitleCloseEn: null
17 | }
18 | }
19 | },
20 | actions: {
21 | addData (webConfigDataForm) {
22 | localStorage.setItem('cloudPlatformWebConfigData', JSON.stringify(webConfigDataForm || '{}'))
23 | this.webConfig = webConfigDataForm
24 | const lang = localStorage.getItem('cloudLang')
25 | if (lang !== 'en') {
26 | document.title = webConfigDataForm.titleContentCn || 'Mall4j白洞版-平台端'
27 | } else {
28 | document.title = webConfigDataForm.titleContentEn || 'Mall4j White hole version Supplier side'
29 | }
30 |
31 | let facicon = document.querySelector('link[rel="icon"]')
32 | if (facicon !== null) {
33 | facicon.href = webConfigDataForm.titleImg
34 | } else {
35 | facicon = document.createElement('link')
36 | facicon.rel = 'icon'
37 | facicon.href = webConfigDataForm.titleImg
38 | document.head.appendChild(facicon)
39 | }
40 | }
41 | }
42 | })
43 |
--------------------------------------------------------------------------------
/src/lang/chat/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | userName: '用户名',
3 | official: '官方',
4 | stores: '店铺',
5 | clickToLoadMore: '点击加载更多',
6 | mallCustomerService: '商城客服',
7 | sendLink: '发送链接',
8 | send: '发送',
9 | inquiring: '正在查询',
10 | myOrders: '我的订单',
11 | recentlyViewed: '最近浏览',
12 | orderNumber: '订单号',
13 | loading: '加载中',
14 | noMore: '没有更多了',
15 | read: '已读',
16 | unRead: '未读',
17 | noRecord: '暂无记录',
18 | customerOffline: '当前客服不在线',
19 | loginOtherSide: '用户在别处登陆,请刷新页面',
20 | reLogin: '无法获取用户信息,请重新登录',
21 | sendOrderNumber: '发送订单号',
22 | pleaseLoginAgain: '账号已下线,请重新登录',
23 | paymentAmount: '支付金额',
24 | onlineCustomerService: '在线客服',
25 | selectOnlineCustomerService: '选择在线的其他客服',
26 | productLinks: '商品链接',
27 | none: '无',
28 | image: '图片',
29 | pleaseSelectAcustomerService: '请选择一个客服转接',
30 | messageBox: '消息盒子',
31 | pendingPayment: '待支付',
32 | pendingDelivery: '待发货',
33 | pendingReceipt: '待收货',
34 | pendinEvaluation: '待评价',
35 | evaluated: '已评价',
36 | shipped: '已发货',
37 | completed: '已完成',
38 | canceled: '已取消',
39 | sorryYouHaveBeenDisconnected: '对不起您已断开连接,正在重连',
40 | notYourResponsibility: '不是你负责的客户',
41 | transferToCustomerService: '转接客服',
42 | transferTips: '可设置多个客服,在后台[系统一管理员列表]添加有客服角色权限的账号,有其他客服账号在线时可进行转接。',
43 | connetBroken: '连接已断开,请刷新页面重试',
44 | otherParIsNoOL: '对方不在线',
45 | idIsLoginInElse: '账户已在别处登录',
46 | notification: '通知',
47 | haveANewUnreadMessage: '你有新的未读消息',
48 | tips: '提示',
49 | confirm: '确认',
50 | cancel: '取消'
51 | }
52 |
--------------------------------------------------------------------------------
/src/components/img-show/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
19 |
20 |
21 |
73 |
74 |
81 |
--------------------------------------------------------------------------------
/src/components/picture-preview/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
![]()
17 |
18 |
19 |
20 |
21 |
41 |
42 |
73 |
--------------------------------------------------------------------------------
/src/api/product/category.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取平台所有的分类信息
4 | export function categoryPage () {
5 | return request({
6 | url: '/mall4cloud_product/admin/category/platform_categories',
7 | method: 'get',
8 | params: {}
9 | })
10 | }
11 |
12 | // 获取店铺所有的分类信息
13 | export function shopCategoryPage () {
14 | return request({
15 | url: '/mall4cloud_product/admin/category/shop_categories',
16 | method: 'get',
17 | params: {}
18 | })
19 | }
20 |
21 | // 获取店铺中的销售属性
22 | export function getShopAttrs () {
23 | return request({
24 | url: '/mall4cloud_product/admin/attr/get_shop_attrs',
25 | method: 'get',
26 | params: {}
27 | })
28 | }
29 |
30 | export function get (categoryId) {
31 | return request({
32 | url: '/mall4cloud_product/admin/category',
33 | method: 'get',
34 | params: {
35 | categoryId
36 | }
37 | })
38 | }
39 |
40 | export function save (data) {
41 | return request({
42 | url: '/mall4cloud_product/admin/category',
43 | method: 'post',
44 | data
45 | })
46 | }
47 |
48 | export function update (data) {
49 | return request({
50 | url: '/mall4cloud_product/admin/category',
51 | method: 'put',
52 | data
53 | })
54 | }
55 |
56 | export function deleteById (categoryId) {
57 | return request({
58 | url: '/mall4cloud_product/admin/category',
59 | method: 'delete',
60 | params: {
61 | categoryId
62 | }
63 | })
64 | }
65 |
66 | export function enableOrDisable (data) {
67 | return request({
68 | url: '/mall4cloud_product/admin/category/category_enable_or_disable',
69 | method: 'put',
70 | data
71 | })
72 | }
73 |
--------------------------------------------------------------------------------
/src/components/Verifition/utils/util.js:
--------------------------------------------------------------------------------
1 | export function resetSize (vm) {
2 | let img_width, img_height, bar_width, bar_height // 图片的宽度、高度,移动条的宽度、高度
3 |
4 | const parentWidth = vm.$el.parentNode.offsetWidth || window.offsetWidth
5 | const parentHeight = vm.$el.parentNode.offsetHeight || window.offsetHeight
6 | if (vm.imgSize.width.indexOf('%') != -1) {
7 | img_width = parseInt(vm.imgSize.width) / 100 * parentWidth + 'px'
8 | } else {
9 | img_width = vm.imgSize.width
10 | }
11 |
12 | if (vm.imgSize.height.indexOf('%') != -1) {
13 | img_height = parseInt(vm.imgSize.height) / 100 * parentHeight + 'px'
14 | } else {
15 | img_height = vm.imgSize.height
16 | }
17 |
18 | if (vm.barSize.width.indexOf('%') != -1) {
19 | bar_width = parseInt(vm.barSize.width) / 100 * parentWidth + 'px'
20 | } else {
21 | bar_width = vm.barSize.width
22 | }
23 |
24 | if (vm.barSize.height.indexOf('%') != -1) {
25 | bar_height = parseInt(vm.barSize.height) / 100 * parentHeight + 'px'
26 | } else {
27 | bar_height = vm.barSize.height
28 | }
29 |
30 | return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height }
31 | }
32 |
33 | export const _code_chars = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
34 | export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0']
35 | export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC']
36 |
--------------------------------------------------------------------------------
/src/api/product/list.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function page (pageParam) {
4 | return request({
5 | url: '/mall4cloud_search/p/search/page',
6 | method: 'get',
7 | params: pageParam
8 | })
9 | }
10 |
11 | export function get (spuId) {
12 | return request({
13 | url: '/mall4cloud_product/admin/spu',
14 | method: 'get',
15 | params: {
16 | spuId
17 | }
18 | })
19 | }
20 |
21 | // 删除
22 | export function deleteById (spuId) {
23 | return request({
24 | url: '/mall4cloud_product/admin/spu',
25 | method: 'delete',
26 | params: {
27 | spuId
28 | }
29 | })
30 | }
31 |
32 | export function updateProdStatus (data) {
33 | return request({
34 | url: '/mall4cloud_product/m/spu/prod_status',
35 | method: 'put',
36 | data
37 | })
38 | }
39 |
40 | export function updatePartProdStatus (data) {
41 | return request({
42 | url: '/mall4cloud_product/m/spu/update_spu_data',
43 | method: 'put',
44 | data
45 | })
46 | }
47 |
48 | // 下线活动
49 | export function onOrOffTheShelf (data) {
50 | return request({
51 | url: '/mall4cloud_product/admin/product_offline_handle_event/offline',
52 | method: 'POST',
53 | data
54 | })
55 | }
56 |
57 | // 获取下线活动最新详情
58 | export function getOfflineDetailByProdId (prodId) {
59 | return request({
60 | url: `/mall4cloud_product/admin/product_offline_handle_event/get_offline_handle_event_by_prodId/${prodId}`,
61 | method: 'GET'
62 | })
63 | }
64 |
65 | // 审核
66 | export function examineProdOnShelfApply (data) {
67 | return request({
68 | url: '/mall4cloud_product/admin/product_offline_handle_event/spu_audit',
69 | method: 'POST',
70 | data
71 | })
72 | }
73 |
--------------------------------------------------------------------------------
/src/api/biz/oss.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function ossInfo (fileNum) {
4 | return request({
5 | url: '/mall4cloud_biz/oss/info',
6 | method: 'get',
7 | params: { fileNum }
8 | })
9 | }
10 |
11 | export function pageFileGroup () {
12 | return request({
13 | url: '/mall4cloud_biz/m/attach_file_group/list',
14 | method: 'get'
15 | })
16 | }
17 |
18 | export function getFileGroup (param) {
19 | return request({
20 | url: '/mall4cloud_biz/m/attach_file_group',
21 | method: 'get',
22 | params: param
23 | })
24 | }
25 |
26 | export function saveFileGroup (data) {
27 | return request({
28 | url: '/mall4cloud_biz/m/attach_file_group',
29 | method: 'post',
30 | data
31 | })
32 | }
33 |
34 | export function updateFileGroup (data) {
35 | return request({
36 | url: '/mall4cloud_biz/m/attach_file_group',
37 | method: 'put',
38 | data
39 | })
40 | }
41 |
42 | export function deleteFileGroup (param) {
43 | return request({
44 | url: '/mall4cloud_biz/m/attach_file_group',
45 | method: 'delete',
46 | params: param
47 | })
48 | }
49 |
50 | /**
51 | * minIo上传文件
52 | * @param url 请求的url
53 | * @param data 图片文件
54 | */
55 | export function minIoImgUpdate (url, data) {
56 | return request({
57 | headers: {
58 | 'Content-Type': data.type
59 | },
60 | url,
61 | method: 'put',
62 | data
63 | })
64 | }
65 |
66 | // aliOss上传文件
67 | /**
68 | * aliOss上传文件
69 | * @param url 请求的url
70 | * @param data 图片文件+请求的参数
71 | */
72 | export function aliImgUpdate (url, data) {
73 | return request({
74 | headers: {
75 | 'Content-Type': data.type
76 | },
77 | url,
78 | method: 'post',
79 | data
80 | })
81 | }
82 |
--------------------------------------------------------------------------------
/src/icons/svg/tree.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/styles/mixin.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | @mixin clearfix {
11 | &:after {
12 | content: "";
13 | display: table;
14 | clear: both;
15 | }
16 | }
17 |
18 | @mixin scrollBar {
19 | &::-webkit-scrollbar-track-piece {
20 | background: #d3dce6;
21 | }
22 |
23 | &::-webkit-scrollbar {
24 | width: 6px;
25 | }
26 |
27 | &::-webkit-scrollbar-thumb {
28 | background: #99a9bf;
29 | border-radius: 20px;
30 | }
31 | }
32 |
33 | @mixin relative {
34 | position: relative;
35 | width: 100%;
36 | height: 100%;
37 | }
38 |
39 | @mixin pct($pct) {
40 | width: #{$pct};
41 | position: relative;
42 | margin: 0 auto;
43 | }
44 |
45 | @mixin triangle($width, $height, $color, $direction) {
46 | $width: $width/2;
47 | $color-border-style: $height solid $color;
48 | $transparent-border-style: $width solid transparent;
49 | height: 0;
50 | width: 100px;
51 |
52 | @if $direction==up {
53 | border-bottom: $color-border-style;
54 | border-left: $transparent-border-style;
55 | border-right: $transparent-border-style;
56 | }
57 |
58 | @else if $direction==right {
59 | border-left: $color-border-style;
60 | border-top: $transparent-border-style;
61 | border-bottom: $transparent-border-style;
62 | }
63 |
64 | @else if $direction==down {
65 | border-top: $color-border-style;
66 | border-left: $transparent-border-style;
67 | border-right: $transparent-border-style;
68 | }
69 |
70 | @else if $direction==left {
71 | border-right: $color-border-style;
72 | border-top: $transparent-border-style;
73 | border-bottom: $transparent-border-style;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/api/platform/shop.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 审核列表
4 | export function page (pageParam) {
5 | return request({
6 | url: '/mall4cloud_multishop/platform/shop_auditing/page',
7 | method: 'GET',
8 | params: pageParam
9 | })
10 | }
11 |
12 | // 管理列表
13 | export function managePage (pageParam) {
14 | return request({
15 | url: '/mall4cloud_multishop/platform/shop_detail/page',
16 | method: 'GET',
17 | params: pageParam
18 | })
19 | }
20 |
21 | // 根据店铺id查询详情信息
22 | export function getDetail (shopId) {
23 | return request({
24 | url: '/mall4cloud_multishop/platform/shop_detail/info',
25 | method: 'GET',
26 | params: {
27 | shopId
28 | }
29 | })
30 | }
31 |
32 | // 校验店铺名
33 | export function examineShopName (param) {
34 | return request({
35 | url: '/mall4cloud_multishop/platform/shop_detail/check_shop_name',
36 | method: 'GET',
37 | params: param
38 | })
39 | }
40 |
41 | // 创建店铺
42 | export function creat (data) {
43 | return request({
44 | url: '/mall4cloud_multishop/platform/shop_detail',
45 | method: 'POST',
46 | data
47 | })
48 | }
49 |
50 | // 更新店铺
51 | export function update (data) {
52 | return request({
53 | url: '/mall4cloud_multishop/platform/shop_detail/update_shop',
54 | method: 'PUT',
55 | data
56 | })
57 | }
58 |
59 | // 管理-店铺详情
60 | export function getManageDetail (shopId) {
61 | return request({
62 | url: '/mall4cloud_multishop/platform/shop_detail/info',
63 | method: 'GET',
64 | params: {
65 | shopId
66 | }
67 | })
68 | }
69 |
70 | // 保存账号密码
71 | export function savaAccountAndPassword (data) {
72 | return request({
73 | url: '/mall4cloud_multishop/platform/shop_detail/save_username_and_password',
74 | method: 'POST',
75 | data
76 | })
77 | }
78 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from 'vue-router'
2 |
3 | export const Layout = () => import('@/layout/index.vue')
4 |
5 | /**
6 | * constantRoutes
7 | * a base page that does not have permission requirements
8 | * all roles can be accessed
9 | */
10 | export const constantRoutes = [
11 | { path: '/', redirect: '/product/list' },
12 | {
13 | path: '/redirect',
14 | component: Layout,
15 | hidden: true,
16 | children: [
17 | {
18 | path: '/redirect/:path(.*)',
19 | component: () => import('@/views/common/redirect/index.vue')
20 | }
21 | ]
22 | },
23 | {
24 | path: '/login',
25 | component: () => import('@/views/common/login/index.vue'),
26 | hidden: true
27 | },
28 | {
29 | path: '/401',
30 | component: () => import('@/views/common/error-page/401.vue'),
31 | hidden: true
32 | },
33 | {
34 | path: '/404',
35 | component: () => import('@/views/common/error-page/404.vue'),
36 | hidden: true
37 | }
38 | // {
39 | // path: '/',
40 | // component: Layout,
41 | // redirect: '/dashboard',
42 | // children: [
43 | // {
44 | // path: 'dashboard',
45 | // component: () => import('@/views/common/dashboard/index.vue'),
46 | // name: 'Dashboard',
47 | // meta: { title: 'dashboard', icon: 'index', affix: true }
48 | // }
49 | // ]
50 | // }
51 | ]
52 |
53 | const router = createRouter({
54 | history: createWebHistory(),
55 | isAddDynamicMenuRoutes: false,
56 | // 刷新时,滚动条位置还原
57 | scrollBehavior: () => ({ left: 0, top: 0 }),
58 | routes: constantRoutes
59 | })
60 |
61 | /**
62 | * 重置路由
63 | */
64 | export async function resetRouter () {
65 | router.options.isAddDynamicMenuRoutes = false
66 | await router.replace({ path: '/login' })
67 | }
68 | export default router
69 |
--------------------------------------------------------------------------------
/src/lang/discount/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | actName: '活动名称',
3 | status: '活动状态',
4 | turnOn: '开启',
5 | close: '关闭',
6 | subHeadings: '上级分类',
7 | shopName: '店铺名称',
8 | prodName: '商品名称',
9 | pic: '图片',
10 | viewProduct: '查看商品',
11 | startTimeCannotBeEmpty: '开始时间不能为空',
12 | endTimeCannotBeEmpty: '结束时间不能为空',
13 | endTimeIsTooSmall: '结束时间不能小于或等于开始时间',
14 | extendedEndTime: '结束时间只能延长,不能小于原本设定值',
15 | endTimeCheck: '活动结束时间不能少于当前时间',
16 | mobiltyDiagram: '移动端活动图',
17 | suggest1: '建议:移动端活动图尽量使用深色的图片',
18 | pcActivityListChart: 'PC活动列表图',
19 | pcActiviroundMap: 'PC活动背景图',
20 | activTime: '活动时间',
21 | chooseStartDate: '选择开始日期',
22 | chooseEndDate: '选择结束日期',
23 | typeOfActivity: '活动类型',
24 | fullMoneoney: '满钱减钱',
25 | fullMoneyDiscount: '满件打折',
26 | typeOfExemption: '减免类型',
27 | decreaseOestLevel: '按满足最高层级减一次',
28 | decreaeryTime: '每满一次减一次',
29 | offerContent: '优惠内容',
30 | activityLevel: '活动层级',
31 | everyFull: '每满',
32 | conditionsOfUseIn: '使用条件需要随活动层级的递增而递增',
33 | // pleaseEnteThan0: '请输入大于0的整数或者保留两位小数的正数',
34 | pleaseEnteThan0: '请输入大于等于1或保留两位小数的值',
35 | discountedPrice: '优惠金额',
36 | reducea: '减',
37 | dozen: '打',
38 | allProdsPar: '全部商品参与',
39 | participateInD: '指定商品参与',
40 | pleaseThan0: '请输入大于0的数字',
41 | pleaseEnterTheNumber010: '请输入大于0小于10的数字',
42 | maximumDiscountAmount: '优惠金额上限',
43 | applicableProductType: '适用商品类型',
44 | pleaseUploadAPicture: '请上传图片',
45 | item: '件',
46 | theConditierThan: '的使用条件需要大于',
47 | activimount: '活动条件金额必须大于优惠金额',
48 | activitytBeEmpty: '活动的使用条件不能为空',
49 | promotioBeEmpty: '活动的优惠金额不能为空',
50 | maximumDiscountAmountBig: '优惠金额上限必须大于或等于最小的优惠金额',
51 | pleaseSelectAProduct: '请选择商品',
52 | selectProd: '选择商品',
53 | eventEndanStartTime: '活动结束时间应该大于开始时间',
54 | addAct: '添加活动',
55 | conditionsOfUse: '使用条件',
56 | full: '满',
57 | fold: '折',
58 | fullDiscount: '满件打折'
59 | }
60 |
--------------------------------------------------------------------------------
/src/layout/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
15 |
16 |
17 |
18 |
22 |
27 |
28 |
29 |
30 |
47 |
48 |
80 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mall4cloud-platform",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "preinstall": "npx only-allow pnpm",
8 | "dev": "vite",
9 | "build": "vite build",
10 | "preview": "vite preview",
11 | "lint": "eslint --ext .js,.vue src",
12 | "lint:fix": "eslint --fix --ext .js,.vue src",
13 | "lint:staged": "lint-staged"
14 | },
15 | "dependencies": {
16 | "@element-plus/icons-vue": "2.1.0",
17 | "@tinymce/tinymce-vue": "5.1.0",
18 | "axios": "1.4.0",
19 | "big.js": "6.2.1",
20 | "browser-image-compression": "2.0.2",
21 | "clipboard": "2.0.11",
22 | "crypto-js": "4.1.1",
23 | "default-passive-events": "2.0.0",
24 | "dompurify": "3.0.3",
25 | "echarts": "5.4.2",
26 | "element-plus": "2.3.6",
27 | "js-base64": "3.7.5",
28 | "moment": "2.29.4",
29 | "pinia": "2.0.33",
30 | "pinia-plugin-persistedstate": "3.1.0",
31 | "qs": "6.11.2",
32 | "vue": "3.2.47",
33 | "vue-cookies": "1.8.3",
34 | "vue-draggable-next": "2.2.1",
35 | "vue-i18n": "9.2.2",
36 | "vue-router": "4.2.1",
37 | "vue-slicksort": "2.0.5",
38 | "vuedraggable": "2.24.3"
39 | },
40 | "devDependencies": {
41 | "@iconify-json/ep": "1.1.10",
42 | "@vitejs/plugin-vue": "4.1.0",
43 | "eslint": "8.38.0",
44 | "eslint-config-standard": "17.0.0",
45 | "eslint-plugin-import": "2.25.2",
46 | "eslint-plugin-n": "15.0.0",
47 | "eslint-plugin-promise": "6.0.0",
48 | "eslint-plugin-vue": "9.14.0",
49 | "eslint-plugin-vue-scoped-css": "2.4.0",
50 | "lint-staged": "13.2.2",
51 | "sass": "1.62.1",
52 | "unplugin-auto-import": "0.16.2",
53 | "unplugin-vue-components": "0.24.1",
54 | "vite": "4.3.9",
55 | "vite-plugin-compression": "0.5.1",
56 | "vite-plugin-eslint": "1.8.1",
57 | "vite-plugin-svg-icons": "2.0.1"
58 | },
59 | "engines": {
60 | "node": ">=16",
61 | "pnpm": ">7"
62 | },
63 | "lint-staged": {
64 | "*.{js,vue}": [
65 | "eslint --fix"
66 | ]
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/components/icons-select/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
13 |
14 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
28 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
56 |
57 |
83 |
--------------------------------------------------------------------------------
/src/styles/btn.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | @import './variables.scss';
11 |
12 | @mixin colorBtn($color) {
13 | background: $color;
14 |
15 | &:hover {
16 | color: $color;
17 |
18 | &:before,
19 | &:after {
20 | background: $color;
21 | }
22 | }
23 | }
24 |
25 | .blue-btn {
26 | @include colorBtn($blue)
27 | }
28 |
29 | .light-blue-btn {
30 | @include colorBtn($light-blue)
31 | }
32 |
33 | .red-btn {
34 | @include colorBtn($red)
35 | }
36 |
37 | .pink-btn {
38 | @include colorBtn($pink)
39 | }
40 |
41 | .green-btn {
42 | @include colorBtn($green)
43 | }
44 |
45 | .tiffany-btn {
46 | @include colorBtn($tiffany)
47 | }
48 |
49 | .yellow-btn {
50 | @include colorBtn($yellow)
51 | }
52 |
53 | .pan-btn {
54 | font-size: 14px;
55 | color: #fff;
56 | padding: 14px 36px;
57 | border-radius: 8px;
58 | border: none;
59 | outline: none;
60 | transition: 600ms ease all;
61 | position: relative;
62 | display: inline-block;
63 |
64 | &:hover {
65 | background: #fff;
66 |
67 | &:before,
68 | &:after {
69 | width: 100%;
70 | transition: 600ms ease all;
71 | }
72 | }
73 |
74 | &:before,
75 | &:after {
76 | content: '';
77 | position: absolute;
78 | top: 0;
79 | right: 0;
80 | height: 2px;
81 | width: 0;
82 | transition: 400ms ease all;
83 | }
84 |
85 | &::after {
86 | right: inherit;
87 | top: inherit;
88 | left: 0;
89 | bottom: 0;
90 | }
91 | }
92 |
93 | .custom-button {
94 | display: inline-block;
95 | line-height: 1;
96 | white-space: nowrap;
97 | cursor: pointer;
98 | background: #fff;
99 | color: #fff;
100 | -webkit-appearance: none;
101 | text-align: center;
102 | box-sizing: border-box;
103 | outline: 0;
104 | margin: 0;
105 | padding: 10px 15px;
106 | font-size: 14px;
107 | border-radius: 4px;
108 | }
109 |
--------------------------------------------------------------------------------
/src/utils/datetime.js:
--------------------------------------------------------------------------------
1 | // 日期格式化
2 | export function getParseTime (time = new Date().getTime(), pattern) {
3 | if (arguments.length === 0 || !time) {
4 | return null
5 | }
6 | const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
7 | let date
8 | if (typeof time === 'object') {
9 | date = time
10 | } else {
11 | if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
12 | time = parseInt(time)
13 | } else if (typeof time === 'string') {
14 | time = time.replace(/-/gm, '/').replace('T', ' ').replace(/\.[\d]{3}/gm, '')
15 | }
16 | if ((typeof time === 'number') && (time.toString().length === 10)) {
17 | time = time * 1000
18 | }
19 | date = new Date(time)
20 | }
21 | const formatObj = {
22 | y: date.getFullYear(),
23 | m: date.getMonth() + 1,
24 | d: date.getDate(),
25 | h: date.getHours(),
26 | i: date.getMinutes(),
27 | s: date.getSeconds(),
28 | a: date.getDay()
29 | }
30 | const timeStr = format.replace(/{([ymdhisa])+}/g, (result, key) => {
31 | let value = formatObj[key]
32 | // Note: getDay() returns 0 on Sunday
33 | if (key === 'a') {
34 | return ['日', '一', '二', '三', '四', '五', '六'][value]
35 | }
36 | if (result.length > 0 && value < 10) {
37 | value = '0' + value
38 | }
39 | return value || 0
40 | })
41 | return timeStr
42 | }
43 |
44 | export function getDateTimeRange () {
45 | let time = new Date().getTime()
46 | let currentHour = parseInt(getParseTime(time, '{h}'))
47 | let currentMinute = parseInt(getParseTime(time, '{i}'))
48 | if (currentMinute >= 30) {
49 | if (currentHour === 23) {
50 | currentHour = '00'
51 | currentMinute = ':00'
52 | time += 24 * 60 * 60 * 1000
53 | } else {
54 | currentHour = currentHour + 1
55 | currentMinute = ':00'
56 | }
57 | } else {
58 | currentMinute = ':30'
59 | }
60 | currentHour = currentHour < 10 ? '0' + currentHour : currentHour + ''
61 | const currentTime = currentHour + currentMinute
62 | return {
63 | startTime: getParseTime(time, '{y}-{m}-{d}'),
64 | endTime: getParseTime(time + 24 * 60 * 60 * 1000, '{y}-{m}-{d}'),
65 | currentTime
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/lang/chat/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | clickToLoadMore: 'Click to load more',
3 | mallCustomerService: 'Mall Customer Service',
4 | sendLink: 'Send link',
5 | send: 'Send',
6 | inquiring: 'Inquiring',
7 | myOrders: 'My Orders',
8 | recentlyViewed: 'Recently Viewed',
9 | orderNumber: 'Order number',
10 | loading: 'Loading',
11 | noMore: 'No more',
12 | read: 'Read',
13 | unRead: 'Un read',
14 | noRecord: 'No record',
15 | customerOffline: 'Current customer service is not online',
16 | loginOtherSide: 'The user is logged in elsewhere, please refresh the page',
17 | sendOrderNumber: 'Send orderNumber',
18 | pleaseLoginAgain: 'Account is offline, please login again',
19 | paymentAmount: 'Payment amount',
20 | onlineCustomerService: 'Online Customer Service',
21 | selectOnlineCustomerService: 'Select other customer service online',
22 | productLinks: 'Product links',
23 | none: 'None',
24 | image: 'Image',
25 | pleaseSelectAcustomerService: 'Please select a customer service transfer',
26 | messageBox: 'Message box',
27 | pendingPayment: 'Pending Payment',
28 | pendingDelivery: 'Pending Delivery',
29 | pendingReceipt: 'Pending Receipt',
30 | pendinEvaluation: 'Pending Evaluation',
31 | grouping: 'Grouping',
32 | evaluated: 'Evaluated',
33 | shipped: 'Shipped',
34 | completed: 'Completed',
35 | canceled: 'Canceled',
36 | sorryYouHaveBeenDisconnected: 'Sorry you have been disconnected, reconnecting now',
37 | notYourResponsibility: 'Customers who are not your responsibility',
38 | transferToCustomerService: 'Transfer to Customer Service',
39 | transferTips: 'Multiple customer service can be set up, add accounts with customer service role privileges in the background [system a administrator list], and transfer when there are other customer service accounts online.',
40 | connetBroken: 'The connection has been broken, please refresh the page and try again',
41 | otherParIsNoOL: 'The other party is not online',
42 | idIsLoginInElse: 'The account is already logged in elsewhere',
43 | notification: 'Notification',
44 | haveANewUnreadMessage: 'Have a new unreadMessage',
45 | tips: 'Tips',
46 | confirm: 'Confirm',
47 | cancel: 'Cancel'
48 | }
49 |
--------------------------------------------------------------------------------
/src/permission.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
3 | *
4 | * https://www.mall4j.com/
5 | *
6 | * 未经允许,不可做商业用途!
7 | *
8 | * 版权所有,侵权必究!
9 | */
10 | import router from './router'
11 | import { getToken } from '@/utils/auth' // get token from cookie
12 | import { useUserStore } from '@/stores/modules/user.js'
13 | import { usePermissionStore } from '@/stores/modules/permission.js'
14 |
15 | const whiteList = ['/login'] // no redirect whitelist
16 | router.beforeEach(async (to, from, next) => {
17 | const userStore = useUserStore()
18 | const permissionStore = usePermissionStore()
19 | const hasToken = getToken()
20 | if (hasToken) {
21 | if (to.path === '/login') {
22 | next({ path: '/' })
23 | } else {
24 | const hasRoles = userStore.roles && userStore.roles.length > 0
25 | if (hasRoles) {
26 | next()
27 | } else {
28 | try {
29 | // 获取用户信息
30 | const userInfo = await userStore.getUserInfo()
31 | // 获取权限信息
32 | await userStore.listPermissions()
33 | let menuIds = []
34 | if (!userInfo.isAdmin) {
35 | // 获取菜单信息
36 | menuIds = await userStore.listMenuIds()
37 | }
38 | const accessRoutes = await permissionStore.generateRoutes(menuIds)
39 | accessRoutes.forEach(route => {
40 | if (route.path[0] !== '/') {
41 | route.path = `/${route.path}`
42 | }
43 | router.addRoute(route)
44 | })
45 | // eslint-disable-next-line require-atomic-updates
46 | router.addRoute({ path: '/:pathMatch(.*)*', redirect: { path: '/404' } })
47 | router.options.isAddDynamicMenuRoutes = true
48 | next({ ...to, replace: true })
49 | } catch (error) {
50 | // eslint-disable-next-line no-console
51 | console.log('beforeEach error', error)
52 | await userStore.resetToken()
53 | next(`/login?redirect=${to.path}`)
54 | }
55 | }
56 | }
57 | } else {
58 | if (whiteList.indexOf(to.path) !== -1) {
59 | next()
60 | } else {
61 | next(`/login?redirect=${to.path}`)
62 | }
63 | }
64 | })
65 |
--------------------------------------------------------------------------------
/src/utils/addr.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 通过地址id获取省市区的地址名
3 | * @param {*} s
4 | */
5 | export function areaNameList (areaData, cityList) {
6 | // 插入数据
7 | cityList.forEach(element => {
8 | const city = element
9 | // 省
10 | for (let i = 0; i < areaData.length; i++) {
11 | // 市
12 | const cityIndex = areaData[i].areaIds.indexOf(city.parentId)
13 | if (cityIndex > -1) {
14 | // 区
15 | const areaIndex = areaData[i].areas[cityIndex].areaIds.indexOf(city.areaId)
16 | if (areaIndex > -1) {
17 | areaData[i].areas[cityIndex].areas[areaIndex].check = true
18 | }
19 | }
20 | }
21 | })
22 | // 获取区域名
23 | let addrNameList = []
24 | // 城市名
25 | let cityNameList = []
26 | // 地区名
27 | let areaNameList = []
28 | areaData.forEach(province => {
29 | const cityList = []
30 | let cityAll = true
31 | // 市
32 | province.areas.forEach(city => {
33 | const areaList = []
34 | let areaAll = true
35 | // 区
36 | city.areas.forEach(area => {
37 | if (area.check) {
38 | areaList.push(area.areaName)
39 | } else if (!areaAll) {
40 | // console.log(1)
41 | } else {
42 | areaAll = false
43 | cityAll = false
44 | }
45 | })
46 | // 区 END
47 | if (areaAll) {
48 | // 该市下的区已全部勾选,则添加城市名
49 | cityList.push(city.areaName)
50 | city.check = true
51 | } else if (areaList.length > 0) {
52 | // 仅勾选部分区,把勾选的区添加到地区名名的数组中
53 | areaNameList = areaNameList.concat(areaList)
54 | }
55 | if (!city.check) {
56 | cityAll = false
57 | }
58 | })
59 | // 市 END
60 | if (cityAll) {
61 | // 所有的城市都已勾选,则添加省名
62 | addrNameList.push(province.areaName)
63 | province.check = true
64 | } else if (cityList.length > 0) {
65 | // 只勾选部分城市,把勾选的城市添加到城市名的数组中
66 | cityNameList = cityNameList.concat(cityList)
67 | }
68 | })
69 | // 拼接省->市->区
70 | if (cityNameList.length > 0) {
71 | addrNameList = addrNameList.concat(cityNameList)
72 | }
73 | if (areaNameList.length > 0) {
74 | addrNameList = addrNameList.concat(areaNameList)
75 | }
76 | return addrNameList
77 | }
78 |
--------------------------------------------------------------------------------
/src/lang/user/score/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | growthSetting: '成长值获取设置',
3 | growthSwitch: '成长值开关:',
4 | perPurchase: '购买商品每消费:',
5 | rechargeGrowthValue: '充值赠送成长值',
6 | getOneGrowth: '获取一点成长值',
7 | completedOrderGet: '每完成一笔订单获取:',
8 | growth: '成长值',
9 | levelPageSet: '等级页展示设置',
10 | growthDescription: '会员权益',
11 | memberBenefitsPageDisplaySet: '会员权益页展示设置',
12 | displayContent: '展示内容:',
13 | levelPageConfiguration: '等级页展示配置',
14 | memberGrowthDescription: '会员中心成长值说明',
15 | consumptionGetGrowthCannotEmpty: '请输入正确的消费金额获取成长值',
16 | rechargeGetGrowthCannotEmpty: '充值赠送成长值不能为空',
17 | growthEarnSetting: '成长值获取设置',
18 | orderAcquisitionCannotEmpty: '请输入正确的订单获取成长值',
19 | pointsSet: '积分基础设置',
20 | pointsEarnOne: '连续签到1天可获取积分:',
21 | pointsEarnTwo: '连续签到2天可获取积分:',
22 | pointsEarnThree: '连续签到3天可获取积分:',
23 | pointsEarnFour: '连续签到4天可获取积分:',
24 | pointsEarnFive: '连续签到5天可获取积分:',
25 | pointsEarnSix: '连续签到6天可获取积分:',
26 | pointsEarnSeven: '连续签到7天可获取积分:',
27 | pointsForRegistration: '注册可获取的积分:',
28 | pointsSwitch: '购物使用积分开关:',
29 | earnOnePoint: '可获取1积分',
30 | pointsPurchase: '积分购买商品时每',
31 | pointsDeducted: '积分可抵扣1元',
32 | pointsEarnLimit: '积分获取上限',
33 | platformPercent: '全平台比例',
34 | categoryPercent: '商品分类比例',
35 | pointsUseLimit: '积分使用上限',
36 | getPercentLimit: '获取比例上限(%):',
37 | percent: '比例',
38 | usePercentLimit: '使用比例上限(%):',
39 | pointsOfRegistrationCannotEmpty: '注册积分获取不能为空',
40 | pointsOfShoppingCannotEmpty: '购物积分获取不能为空',
41 | shoppingPointsDeductedCannotEmpty: '购物积分抵扣不能为空',
42 | usePointsCannotEmpty: '使用积分上限百分比不能为零或者空',
43 | getPointsCannotEmpty: '获取积分上限百分比不能为零或者空',
44 | pointsExpirationSetting: '积分过期设置',
45 | expirationSwitch: '积分过期开关:',
46 | expiration: '积分过期时间:',
47 | year: '年',
48 | expirationDes: '配置的为最长的过期时间,即从获取积分开始,自最长的n-1年的年底会将积分清空。',
49 | expirationConfiguration: '积分过期配置',
50 | enterExpiration: '请输入过期时间',
51 | pointsDesSetting: '积分说明设置',
52 | pointsDes: '积分说明',
53 | pointsEarnSetting: '积分基础设置',
54 | otherConfiguration: '其他配置',
55 | pointsQuestionSetting: '积分常见问题设置:',
56 | pointsQusetion: '常见问题:',
57 | registerScore: '注册送积分',
58 | shopping: '购物',
59 | shoppingDeducteScore: '购物抵扣积分',
60 | scoreExpired: '积分过期',
61 | score: '积分',
62 | content: '请输入内容'
63 | }
64 |
--------------------------------------------------------------------------------
/src/layout/components/AppMain.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
15 |
19 |
20 |
25 | {{ item }}
26 |
27 |
28 |
29 |
38 |
39 |
40 |
41 |
53 |
54 |
88 |
--------------------------------------------------------------------------------
/src/lang/user/level/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | addLevel: '添加等级',
3 | removeColumnTip: '默认等级不可移除',
4 | levelNameNotNull: '等级名称不能为空',
5 | levelConditionNotNull: '请至少选择一个等级条件',
6 | removeColumnTip2: '最多只能添加4个等级',
7 | conditionThan0: '至少选择一个等级条件',
8 | grade: '等级',
9 | ordinaryMember: '普通会员',
10 | paidMembership: '付费会员',
11 | ordinaryMemberSet: '普通会员设置',
12 | paidMembershipSet: '付费会员设置',
13 | generalConfiguration: '常规配置',
14 | noPictures: '暂无图片',
15 | off: '折',
16 | growth: '成长值',
17 | isDeleOper: '确定进行删除操作?',
18 | enterGradeName: '请输入等级名称',
19 | bgImg: '背景图片',
20 | paidMemberPrice: '付费会员价格',
21 | enterInteger: '请输入整数',
22 | timeType: '时间类型',
23 | week: '周',
24 | month: '月',
25 | season: '季',
26 | time: '时间',
27 | year: '年',
28 | requiredGrowthValue: '所需成长值',
29 | equityAllocation: '权益配置',
30 | selfFreeShipping: '自营店包邮',
31 | pointFeedbackRate: '积分回馈倍率',
32 | enterMagnification: '请输入倍率数',
33 | coupons: '优惠券',
34 | selectCoupons: '选择优惠券',
35 | etcCoupons: '等优惠券',
36 | bonusPoints: '赠送积分',
37 | discount: '折扣',
38 | discountTip1: '此处的折扣权益可以自定义适用范围',
39 | discountTip2: '此处的折扣权益整个平台的全部商品均适用,勾选之后会一并赠送给该等级的用户',
40 | discountRange: '请输入折扣范围',
41 | platform: '全平台',
42 | selfShop: '自营店',
43 | allProducts: '全部商品',
44 | categoryGoods: '分类下的商品',
45 | otherRights: '其他权益',
46 | bgImgCannotEmpty: '背景图片不能为空',
47 | selectCategory: '请选择分类',
48 | gradeNmaeCannotEmpty: '等级名称不能为空',
49 | feedback1: '积分回馈倍率必须大于1',
50 | bonus0: '赠送积分必须大于0',
51 | discountRangeValue: '折扣的取值范围为0.01-9.99',
52 | updateUserData: '更新用户数据',
53 | updateSoon: '用户等级更新后仅对新用户有效,老用户未生效,请尽快更新',
54 | growthRange: '等级成长值范围',
55 | memberDiscount: '会员折扣',
56 | someProducts: '部分商品',
57 | remove: '移除',
58 | atMost: '最多只能添加4个等级',
59 | saveFirst: '先保存上个等级才能创建新的等级',
60 | membershipLevel: '会员等级',
61 | level: '等级',
62 | levelName: '等级名称',
63 | noPic: '暂无图片',
64 | needGrowth: '购买VIP所需成长值',
65 | within: '内',
66 | vipLevel: 'VIP等级',
67 | memberType: '会员类型',
68 | userScore: '用户积分',
69 | stopRecruit: '停止招募',
70 | startRecruit: '开始招募',
71 | stopRecruitTip: '停止招募会员,现有的付费会员仍可享受权益至有效期结束,确定停止招募?',
72 | startRecruitTip: '开始招募会员后,如果要删除该等级,需要等到现有的付费会员享受权益至有效期结束,该等级下无会员后,才可以删除该等级',
73 | tips1: '会员权益不能为空',
74 | tips2: '请输入成长值'
75 | }
76 |
--------------------------------------------------------------------------------
/src/icons/svg/dashboard.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | es2021: true
5 | },
6 | extends: [
7 | 'standard',
8 | './.eslintrc-auto-import.json',
9 | 'plugin:vue/vue3-recommended',
10 | 'plugin:vue-scoped-css/vue3-recommended'
11 | ],
12 | overrides: [
13 | ],
14 | parserOptions: {
15 | ecmaVersion: 'latest',
16 | sourceType: 'module'
17 | },
18 | plugins: [
19 | 'vue'
20 | ],
21 | rules: {
22 | // Possible Errors
23 | // 要求使用 let 或 const 而不是 var
24 | 'no-var': 'error',
25 | // 强制 "for" 循环中更新子句的计数器朝着正确的方向移动
26 | 'for-direction': 'error',
27 | // 强制 getter 函数中出现 return 语句
28 | 'getter-return': 'error',
29 | // 禁止在嵌套的块中出现变量声明或 function 声明
30 | 'no-inner-declarations': 'error',
31 | // 禁止由于 await 或 yield的使用而可能导致出现竞态条件的赋值
32 | 'require-atomic-updates': 'error',
33 | // console 警告
34 | 'no-console': 'warn',
35 | // 禁止出现未使用过的变量
36 | 'no-unused-vars': [
37 | 'warn',
38 | {
39 | args: 'all',
40 | caughtErrors: 'none',
41 | ignoreRestSiblings: true,
42 | vars: 'all',
43 | // 符合规则的参数名将会忽略
44 | argsIgnorePattern: '^[rule, value, i, to, from]'
45 | }
46 | ],
47 | // 关闭名称校验
48 | 'vue/multi-word-component-names': 'off',
49 | // 非生产环境启用 debugger
50 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
51 |
52 | // Best Practices
53 | eqeqeq: 'off',
54 |
55 | // Stylistic Issues
56 | // 强制可嵌套的块的最大深度
57 | 'max-depth': ['error', 5],
58 | // 强制函数最大代码行数
59 | 'max-lines-per-function': [
60 | 'error',
61 | {
62 | max: 150,
63 | skipBlankLines: true
64 | }
65 | ],
66 | // 强制回调函数最大嵌套深度
67 | 'max-nested-callbacks': ['error', { max: 10 }],
68 | // 强制函数定义中最多允许的参数数量
69 | 'max-params': ['error', { max: 5 }],
70 | // 强制每一行中所允许的最大语句数量
71 | 'max-statements-per-line': ['error', { max: 1 }],
72 | // 三目运算符换行
73 | 'multiline-ternary': ['error', 'never'],
74 | // 传值给组件时的使用 kebab-case
75 | 'vue/v-on-event-hyphenation': ['warn', 'always', {
76 | autofix: true,
77 | ignore: []
78 | }],
79 | // 允许 promise.reject()
80 | 'prefer-promise-reject-errors': ['error', {
81 | allowEmptyReject: true
82 | }]
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/lang/delivery/transport/en.js:
--------------------------------------------------------------------------------
1 | export default {
2 | query: 'query',
3 | name: 'Template name',
4 | type: 'Template Type',
5 | buyerPrice: 'Buyers bear the freight',
6 | shopPrice: 'Seller postage',
7 | chargePrice: 'Way of collecting money',
8 | byCount: 'By number of pieces',
9 | byWeight: 'By weight',
10 | byVolume: 'By volume',
11 | distributableArea: 'Distributable area',
12 | allRegions: 'All regions',
13 | addPrice: 'Click to add the area and shipping cost',
14 | freePostage: 'Designated conditions free postage',
15 | selArea: 'Designated Area',
16 | selCity: 'Please select a designated postage free city',
17 | fullPieces: 'Cumulative number of pieces/weight/volume',
18 | fullAmount: 'Cantidad de consumo alcanzada',
19 | setShopPrice: 'Set postage free conditions',
20 | firstPiece: 'First piece(piece)',
21 | transportationCost: 'Transportation cost(cost)',
22 | continuationPiece: 'Continuation piece(piece)',
23 | continuationCost: 'Costo de continuación(costo)',
24 | firstWeight: 'Firest weight(kg)',
25 | continuedWeight: 'Continued weight(kg)',
26 | firstVolume: 'First volume(m³)',
27 | continuedVolume: 'Continued volume(m³)',
28 | freeShippCondi: 'Free shipping conditions',
29 | pwv: 'Pieces/weight/volume',
30 | chooseDeliveryArea: 'Select delivery area',
31 | templateNameCannotBeEmpty: 'Template name cannot be empty',
32 | pleaseWriteInfo: 'Please fill in the template information',
33 | pleaseSelectADeliveryArea: 'Please select a delivery area',
34 | addAreaAndShipping: 'Click to add a delivery area and freight',
35 | freeShippingOnSpecifiedConditions: 'Designated shipping conditions',
36 | pleaseSelectTheDesignatedShippingCity: 'Please select a designated shipping city',
37 | clickToAddTheSpecifiedShippingConditions: 'Click to add designated shipping conditions',
38 | setRegionalConditions: 'Please set up shipping conditions in a designated area',
39 | shippinngs: 'Shipping fee setting',
40 | shippingtBeEmpty: 'Shipping template cannot be empty',
41 | deliveryArea: 'Delivery area',
42 | freeShipping: ' free shipping',
43 | further: ' And ',
44 | full: 'Full ',
45 | dollar: ' dollar ',
46 | freeShiullAmount: 'Free shipping with full amount',
47 | freeippingR: '$ free shipping amount',
48 | pwvFree: 'Pieces/weight/volume Free shipping'
49 | }
50 |
--------------------------------------------------------------------------------
/src/components/pagination/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 |
94 |
95 |
105 |
--------------------------------------------------------------------------------
/src/lang/biz/notify/zh.js:
--------------------------------------------------------------------------------
1 | export default {
2 | officialAccount: '公众号',
3 | shortMessage: '短信',
4 | msgRemSet: '消息提醒设置',
5 | sendMsgRecord: '推送消息记录',
6 | smsSendRecord: '短信发送记录',
7 | success: '发送成功',
8 | fail: '发送失败',
9 | shopName: '店铺名称',
10 | sendTime: '发送时间',
11 | receiveName: '接收用户昵称',
12 | receivePhone: '接收手机号',
13 | sendStatus: '发送状态',
14 | msgSet: '短信设置',
15 | msgType: '消息类型',
16 | selectTag: '选择标签',
17 | smsNotifyContent: '短信通知内容',
18 | notifyContent: '通知内容',
19 | notifyType: '通知类型',
20 | msgNotify: '短信通知(计费发送)',
21 | canUseNotice: '通知方式',
22 | smsTemplateCode: '短信模板code',
23 | publicTemplateCode: '公众号模板code',
24 | tagList: '标签列表',
25 | smsTip1: '新增的短信模板并不会马上生效,需要技术人员配合开发。',
26 | errorTip1: '请至少选择一种通知方式!',
27 | selTagError: '请至少选择一个标签!',
28 | errorTip2: '公众号模板code不能为空',
29 | msgNotifyFree: '短信通知',
30 | publicNotify: '公众号通知',
31 | appletMessage: '站内信通知',
32 | applet: '站内信',
33 | sendType: '发送类型',
34 | seleMsgType: '请选择消息类型',
35 | notifyContenNoNull: '通知内容不能为空',
36 | seleNotifyType: '请至少选择一种通知方式',
37 | notifyTempNoNull: '短信模板code不能为空',
38 | status: '状态',
39 | orderPay: '订单催付',
40 | paySuccNotify: '付款成功通知',
41 | refusedRefund: '商家拒绝退款',
42 | merAgreeRefund: '商家同意退款',
43 | merRefuseRefund: '商家拒绝退款',
44 | wriOffRem: '核销提醒',
45 | shipRem: '发货提醒',
46 | groupFailRem: '拼团失败提醒',
47 | groupSuccRem: '拼团成功提醒',
48 | startGroupRem: '拼团开团提醒',
49 | memUpRem: '会员升级提醒',
50 | timeoutRem: '退款临近超时提醒',
51 | register: '用户注册验证码',
52 | login: '发送登录验证码',
53 | updatePassword: '修改密码验证码',
54 | vaild: '身份验证验证码',
55 | confirmReceRem: '确认收货提醒',
56 | buyerRefundRem: '买家发起退款提醒',
57 | buyerReturnRem: '买家已退货提醒',
58 | userPaymentSuccessReminder: '用户支付成功提醒',
59 | mallTranRem: '商城交易提醒',
60 | sendToShop: '发送给商家',
61 | sendToUser: '发送给用户',
62 | sendToCustom: '自定义消息',
63 | sendToSupplier: '发送给供应商',
64 | distributionApplySuccess: '分销员申请成功提醒',
65 | productRemovalReminder: '商品下架提醒',
66 | commodityAuditResultReminder: '商品审核结果提醒',
67 | commissionCommodityChangeReminder: '代销商品变更提醒',
68 | userConfirmsReceiptNotification: '用户确认收货通知',
69 | reminderOfPendingShipment: '待发货提醒',
70 | reminderToBePurchased: '待采购提醒',
71 | reminderOfPendingRefund: '待退款提醒',
72 | reminderToNeReceived: '买家已退货提醒',
73 | marketingCampaignRemovalReminder: '营销活动下架提醒',
74 | activityAuditResultReminder: '活动审核结果提醒'
75 | }
76 |
--------------------------------------------------------------------------------
/src/icons/svg/form.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------