Commit 58e4e95b authored by 郝聪敏's avatar 郝聪敏

feature: 优化

parent ba42d8e6
......@@ -47,147 +47,155 @@ export default {
// todo: 对外接口需提供x-auth-token
// 购物车-添加商品
addShopCart(params) {
return http.post(`${config.kdspHost}/api/kdsp/shop-cart/add-update`, params);
return http.post(`${config.kdspHost}/api/kdsp/shop-cart/add-update`, params, {
hideToken: true,
headers: {
'x-auth-token': '7386386a-3a78-41f9-8584-14933823bf20'
}
});
},
// 商品组或专题查询
getGoods(params) {
// return http.post(`${config.kdspHost}/api/kdsp/activity/activity-goods-special/skus`, params);
return {
skus: [
{
skuNo: '100014565800',
skuName: '【自营】【自营】小米手机 陶瓷黑 8GB+128GB 官方标配',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 2.85,
marketPrice: 293
},
{
skuNo: '100014565820',
skuName: '【自营】[自营][自营]0',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 264,
marketPrice: 300
},
{
skuNo: '100014565820',
skuName: '【自营】[自营][自营]0',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 264,
marketPrice: 300
},
{
skuNo: '100014565800',
skuName: '【自营】【自营】小米手机 陶瓷黑 8GB+128GB 官方标配',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 2.85,
marketPrice: 293
},
{
skuNo: '100014565820',
skuName: '【自营】[自营][自营]0',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 264,
marketPrice: 300
},
{
skuNo: '100014565820',
skuName: '【自营】[自营][自营]0',
skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
salePrice: 264,
marketPrice: 300
}
]
};
return http.post(`${config.kdspHost}/api/kdsp/activity/activity-goods-special/skus`, params);
// return {
// skus: [
// {
// skuNo: '100014565800',
// skuName: '【自营】【自营】小米手机 陶瓷黑 8GB+128GB 官方标配',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 2.85,
// marketPrice: 293
// },
// {
// skuNo: '100014565820',
// skuName: '【自营】[自营][自营]0',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 264,
// marketPrice: 300
// },
// {
// skuNo: '100014565820',
// skuName: '【自营】[自营][自营]0',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 264,
// marketPrice: 300
// },
// {
// skuNo: '100014565800',
// skuName: '【自营】【自营】小米手机 陶瓷黑 8GB+128GB 官方标配',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 2.85,
// marketPrice: 293
// },
// {
// skuNo: '100014565820',
// skuName: '【自营】[自营][自营]0',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 264,
// marketPrice: 300
// },
// {
// skuNo: '100014565820',
// skuName: '【自营】[自营][自营]0',
// skuUrl: 'https://img14.360buyimg.com/n0/jfs/t1/141986/32/5318/98164/5f3236baE713fd239/5f2746db41f3e9c0.jpg',
// salePrice: 264,
// marketPrice: 300
// }
// ]
// };
},
// 根据id查询优惠券列表
getCoupons(params) {
// return http.post(`${config.kdspHost}/api/kdsp/coupon/list`, params, {
// hideToken: true,
// headers: {
// 'x-auth-token': '97466ed6-ec03-452e-be8f-763a8ffafefe'
// }
// });
return {
coupons: [
{
id: 1,
pickupId: 1,
name: '3C数码会场',
startDate: '2021-02-22',
endDate: '2021-02-22',
faceValue: 100,
limitAmount: 300,
limitDesc: '满300减100',
couponCategory: 1,
iconUrl: 'in esse',
description: 'officia do',
status: 19667180,
navUrl: 'exercitation est',
pickupAble: false,
publishCountFinished: false
},
{
id: 2,
pickupId: 1,
name: '3C数码会场',
startDate: '2021-02-22',
endDate: '2021-02-22',
faceValue: 100,
limitAmount: 300,
limitDesc: '满300减100',
couponCategory: 1,
iconUrl: 'oc',
description: 'minim dolore tempor',
status: 63205995,
navUrl: 'cupidat',
pickupAble: true,
publishCountFinished: false
},
{
id: 3,
pickupId: 1,
name: '3C数码会场',
startDate: '2021-02-22',
endDate: '2021-02-22',
faceValue: 100,
limitAmount: 300,
limitDesc: '满300减100',
couponCategory: 1,
iconUrl: 'eu fugiat commodo voluptate exercitation',
description: 'nisi',
status: 43999314,
navUrl: 'commodo in reprehenderit',
pickupAble: false,
publishCountFinished: true
},
{
id: 4,
pickupId: 1,
name: '3C数码会场',
startDate: '2021-02-22',
endDate: '2021-02-22',
faceValue: 100,
limitAmount: 300,
limitDesc: '满300减100',
couponCategory: 1,
iconUrl: 'eu fugiat commodo voluptate exercitation',
description: 'nisi',
status: 43999314,
navUrl: 'commodo in reprehenderit',
pickupAble: false,
publishCountFinished: true
}
]
};
return http.get(`${config.kdspHost}/api/kdsp/coupon/list`, {
params,
hideToken: true,
headers: {
'x-auth-token': '7386386a-3a78-41f9-8584-14933823bf20'
}
});
// return {
// coupons: [
// {
// id: 1,
// pickupId: 1,
// name: '3C数码会场',
// startDate: '2021-02-22',
// endDate: '2021-02-22',
// faceValue: 100,
// limitAmount: 300,
// limitDesc: '满300减100',
// couponCategory: 1,
// iconUrl: 'in esse',
// description: 'officia do',
// status: 19667180,
// navUrl: 'exercitation est',
// pickupAble: false,
// publishCountFinished: false
// },
// {
// id: 2,
// pickupId: 1,
// name: '3C数码会场',
// startDate: '2021-02-22',
// endDate: '2021-02-22',
// faceValue: 100,
// limitAmount: 300,
// limitDesc: '满300减100',
// couponCategory: 1,
// iconUrl: 'oc',
// description: 'minim dolore tempor',
// status: 63205995,
// navUrl: 'cupidat',
// pickupAble: true,
// publishCountFinished: false
// },
// {
// id: 3,
// pickupId: 1,
// name: '3C数码会场',
// startDate: '2021-02-22',
// endDate: '2021-02-22',
// faceValue: 100,
// limitAmount: 300,
// limitDesc: '满300减100',
// couponCategory: 1,
// iconUrl: 'eu fugiat commodo voluptate exercitation',
// description: 'nisi',
// status: 43999314,
// navUrl: 'commodo in reprehenderit',
// pickupAble: false,
// publishCountFinished: true
// },
// {
// id: 4,
// pickupId: 1,
// name: '3C数码会场',
// startDate: '2021-02-22',
// endDate: '2021-02-22',
// faceValue: 100,
// limitAmount: 300,
// limitDesc: '满300减100',
// couponCategory: 1,
// iconUrl: 'eu fugiat commodo voluptate exercitation',
// description: 'nisi',
// status: 43999314,
// navUrl: 'commodo in reprehenderit',
// pickupAble: false,
// publishCountFinished: true
// }
// ]
// };
},
// 领取优惠券
pickupCoupon(params) {
return http.post(`${config.kdspHost}/api/kdsp/coupon/pickup`, params, {
hideToken: true,
// todo: header里二者参数需特殊处理
headers: {
'x-user-terminal': 'H5',
'vccChannel': '',
}
'x-auth-token': ''
},
});
},
};
\ No newline at end of file
......@@ -9,5 +9,6 @@ export default {
shenceUrl: `${protocol}//bn.xyqb.com/sa?project=default`,
opapiHost: `https://opapi-vcc2.liangkebang.net`,
qiniuUpHost: `${protocol}//up-z0.qiniup.com`,
kdspHost: 'https://kdsp-api-vcc2.liangkebang.net',
// kdspHost: 'https://kdsp-api-vcc2.liangkebang.net',
kdspHost: 'https://talos-vcc2.liangkebang.net'
};
<template>
<div class="coupon" v-if="column === 1">
<div class="coupon-item_one" :style="style" :key="coupon.id" v-for="coupon in couponList">
<div class="coupon-item_one" :style="style" :key="index" v-for="(coupon, index) in couponList">
<div class="Gi_one-left">
<p>¥<span>{{ coupon.faceValue || '-' }}</span></p>
<p>{{coupon.limitDesc}}</p>
</div>
<div class="Gi_one-middle">
<p>{{ coupon.name }}</p>
<p>{{`${coupon.startDate} - ${coupon.endDate}`}}</p>
<p>{{ coupon.couponValidTime }}</p>
</div>
<cr-button class="Gi_one-right" type="primary" @click="getCoupon(coupon)">{{btnText(coupon.pickupAble)}}</cr-button>
<cr-button class="Gi_one-right" type="primary" @click="pickupCoupon(coupon)">{{btnText(coupon.pickupAble)}}</cr-button>
<div class="coupon-item-mask" v-if="!coupon.pickupAble && coupon.publishCountFinished">
<p>已抢空</p>
</div>
</div>
</div>
<div v-else :class="['coupon', {'coupon_two': column === 2, 'coupon_multiple': column === 3}]">
<div class="coupon-item" :style="style" :key="coupon.id" v-for="coupon in couponList">
<div class="coupon-item" :style="style" :key="index" v-for="(coupon, index) in couponList">
<p class="coupon-item-title">{{ coupon.name }}</p>
<p class="coupon-item-amount">¥<span>{{ coupon.faceValue || '-' }}</span></p>
<p class="coupon-item-amount">{{coupon.limitDesc}}</p>
<cr-button shape="circle" type="primary" @click="getCoupon(coupon)">
<cr-button shape="circle" type="primary" @click="pickupCoupon(coupon)">
{{btnText(coupon.pickupAble)}}
</cr-button>
<div class="coupon-item-mask" v-if="!coupon.pickupAble && coupon.publishCountFinished">
......@@ -67,22 +67,25 @@
watch: {
couponsList: {
handler: async function (newVal) {
const { coupons } = await operationApi.getCoupons({ couponIds: newVal.join(',') });
if(coupons && coupons.length) this.list = coupons;
// console.log('coupons', this.list);
if(newVal) this.getCoupons(newVal);
},
immediate: true
}
},
methods: {
async getCoupon(coupon) {
async pickupCoupon(coupon) {
if (!coupon.pickupAble) {
await operationApi.pickupCoupon({ couponId: coupon.couponId });
await operationApi.pickupCoupon({ couponId: coupon.id });
this.$toast.success('领取成功');
await this.getCoupons([coupon.id]);
} else {
window.location.href = coupon.navUrl;
}
},
async getCoupons(ids) {
const { coupons } = await operationApi.getCoupons({ couponIds: ids.join(',') });
if(coupons && coupons.length) this.list = coupons;
},
btnText(pickupAble) {
return pickupAble ? '去使用' : '立即领取';
}
......
......@@ -108,9 +108,9 @@
}
},
async addShopCart(goods) {
const { skuId, skuNum, skuSource } = goods;
const params = { skuId, skuNum, skuSource, type: 1 }
await operationApi.addShopCart(params);
const { skuNo, skuSource } = goods;
const params = [{ skuId: skuNo, skuNum: 1, skuSource, type: 1 }];
await operationApi.addShopCart({ shopCartBaseList: params });
this.$toast.success('添加成功');
}
}
......
......@@ -8,13 +8,13 @@
</div>
</template>
<script>
import Goods from '../Goods/index.vue';
import Coupon from '../Coupon/index.vue';
import CsGoods from '../Goods/index.vue';
import CsCoupon from '../Coupon/index.vue';
export default {
name: 'goods-tabs',
components: {
Goods,
Coupon
CsGoods,
CsCoupon
},
props: {
list: {
......
This diff is collapsed.
<template>
<div class="color-selector">
<Input class="color-selector-input" v-model="color" placeholder="请输入" @input="change"></Input>
<ColorPicker v-model="color" @on-change="change($event)" />
<ColorPicker placement="bottom-end" v-model="color" @on-change="change($event)" />
</div>
</template>
<script>
......
......@@ -110,8 +110,8 @@
}
&-button {
margin-top: 20px;
text-align: center;
// margin-top: 20px;
// text-align: center;
}
}
</style>
\ No newline at end of file
......@@ -40,7 +40,7 @@ export default class GoodsTableModal extends Vue {
async query(data) {
const { records, total } = await operationApi.skuInfo({ type: 'list', ...data });
records.forEach(record => {
records?.forEach(record => {
if (this.goods.ids.some(v => v === record.skuNo)) {
record._checked = true;
}
......@@ -64,8 +64,8 @@ export default class GoodsTableModal extends Vue {
},
async queryGroup(data) {
const { records, total } = await operationApi.specialPage(data);
records.forEach(record => {
if (this.goods.ids.some(v => v === record.skuNo)) {
records?.forEach(record => {
if (this.goods.ids.some(v => v === record.id)) {
record._checked = true;
}
});
......
......@@ -6,7 +6,7 @@
<template v-for="(item, index) in curElement.schame">
<div v-if="item.title">
<h3>{{ item.title }}</h3>
<FormItem :label="child.name" :key="child.key" v-for="child in item.children">
<FormItem :label="child.name" :key="curElement.id + child.key" v-for="child in item.children">
<component :is="getComponent(child.type)" :options="child.options" :formControl="child.formControl" v-model="form[child.key]" />
</FormItem>
</div>
......@@ -32,7 +32,7 @@
<ColorSelector v-else-if="item.label === '背景颜色'" v-model="commonStyle.backgroundColor" @input="updateStyle($event, 'backgroundColor')"></ColorSelector>
<template v-else>
<Tooltip placement="top" :content="child.content" v-for="child in item.list" :key="child.content">
<Button type="ghost" :icon="child.icon" @click="changeAlignType(...child.args)"></Button>
<Button type="ghost" :icon="child.icon" @click="changeAlignType(child.args)"></Button>
</Tooltip>
</template>
</FormItem>
......
import { Component, Prop, Mixins, Watch } from 'vue-property-decorator';
// import LoginForm from '@/lib/Form/index.vue';
import DownloadGuide from '@/lib/DownloadGuide/index.vue';
import CustomMarquee from '@/lib/Marquee/index.vue';
import ContextMenuMixin from '@editor/mixins/contextMenu.mixin';
import TransformStyleMixin from '@/page/mixins/transformStyle.mixin';
import { cloneDeep, pick, omit, throttle } from 'lodash';
import { Action, Mutation, State, Getter } from 'vuex-class';
import { convertPointStyle, getStyle } from '@/service/utils.service';
// import CsGuideCube from '@/lib/DownloadGuide/index.vue';
// import CsMarquee from '@/lib/Marquee/index.vue';
@Component({ components: { DownloadGuide, CustomMarquee }, name: 'FreedomContainer' })
@Component({ components: { }, name: 'FreedomContainer' })
export default class FreedomContainer extends Mixins(ContextMenuMixin, TransformStyleMixin) {
@Action('setDragable') setDragable;
@State(state => state.editor.curEleIndex) curEleIndex;
......@@ -76,7 +75,7 @@ export default class FreedomContainer extends Mixins(ContextMenuMixin, Transform
@Watch('commonStyle')
onCommonStyleChange(newVal) {
// console.log('onCommonStyleChange', newVal);
console.log('onCommonStyleChange', newVal);
if (newVal) {
this.setDotsStyle();
}
......@@ -96,10 +95,12 @@ export default class FreedomContainer extends Mixins(ContextMenuMixin, Transform
this.$nextTick(() => {
const points = ['lt', 'rt', 'lb', 'rb', 'l', 'r', 't', 'b'];
const [height, width] = this.getHW(this.curChildIndex);
this.dots[this.curChildIndex] = points.reduce((pre, cur) => {
const dots = points.reduce((pre, cur) => {
pre[cur] = convertPointStyle(cur, {height, width});
return pre;
}, {});
this.$set(this.dots, this.curChildIndex, dots);
console.log('setDotsStyle', this.dots[this.curChildIndex]);
});
}
......
......@@ -12,7 +12,7 @@ export default class GoodsTabsMixin extends Vue {
const goodsTabs = {};
const pageData = cloneDeep(this.pageData);
pageData.elements.forEach((element, idx) => {
if (element.name === 'goods-tabs' && element?.props?.list.length) {
if (element.name === 'cs-goods-tabs' && element?.props?.list.length) {
const childs = [];
const childIndexs = [];
element.props.list.forEach((data, index) => {
......@@ -40,7 +40,7 @@ export default class GoodsTabsMixin extends Vue {
parseGoodsTabs() {
const goodsTabs = {};
this.pageData.elements.forEach((element, idx) => {
if (element.name === 'goods-tabs' && element.child.length) {
if (element.name === 'cs-goods-tabs' && element?.child?.length) {
goodsTabs[idx] = cloneDeep(element.child);
// 逆向循环
for (let i = element.child.length - 1; i >= 0; i--) {
......
......@@ -6,26 +6,26 @@ import VueGridLayout from 'vue-grid-layout';
import FreedomContainer from '../../component/FreedomContainer/index.vue';
import DynamicForm from '../../component/DynamicForm/index.vue';
import DynamicPageForm from '../../component/DynamicPageForm/index.vue';
// import LoginForm from '@/lib/Form/index.vue';
import DownloadGuide from '@/lib/DownloadGuide/index.vue';
import GoodsTabs from '@/lib/GoodsTabs/index.vue';
import Goods from '@/lib/Goods/index.vue';
import Advertisement from '@/lib/Advertisement/index.vue';
import Coupon from '@/lib/Coupon/index.vue';
import Placeholder from '@/lib/Placeholder/index.vue';
import GuideCube from '@/lib/GuideCube/index.vue';
import Marquee from '@/lib/Marquee/index.vue';
import { basicComponents, businessComponents } from '@/lib/config';
import ContextMenuMixin from '@editor/mixins/contextMenu.mixin';
import GoodsTabsMixin from '@editor/mixins/goodsTabs.mixin';
import TransformStyleMixin from '@/page/mixins/transformStyle.mixin';
import BasicPageForm from '@editor/component/BasicPageForm/index.vue';
import { basicComponents, businessComponents } from '@/lib/config';
import config from '@/config/index';
import localStorage from '@/service/localStorage.service';
import EventBus from '@/service/eventBus.service';
// import CsLoginForm from '@/lib/Form/index.vue';
// import CsDownloadGuide from '@/lib/DownloadGuide/index.vue';
// import CsGoodsTabs from '@/lib/GoodsTabs/index.vue';
// import CsGoods from '@/lib/Goods/index.vue';
// import CsAdvertisement from '@/lib/Advertisement/index.vue';
// import CsCoupon from '@/lib/Coupon/index.vue';
// import CsPlaceholder from '@/lib/Placeholder/index.vue';
// import CsGuideCube from '@/lib/GuideCube/index.vue';
// import CsMarquee from '@/lib/Marquee/index.vue';
// CsLoginForm, CsDownloadGuide, CsGuideCube, CsGoodsTabs, CsCoupon, CsMarquee, CsAdvertisement, CsGoods, CsPlaceholder
@Component({components: { DynamicComponent, FreedomContainer, DynamicForm, GridLayout: VueGridLayout.GridLayout,
GridItem: VueGridLayout.GridItem, DownloadGuide, BasicPageForm, DynamicPageForm, GoodsTabs, Goods, Coupon, Advertisement, Placeholder, GuideCube, Marquee }, name: 'DashBoard'})
GridItem: VueGridLayout.GridItem, BasicPageForm, DynamicPageForm }, name: 'DashBoard'})
export default class DashBoard extends Mixins(ContextMenuMixin, GoodsTabsMixin, TransformStyleMixin) {
@Mutation('ADD_ELEMENTS') addElements;
@Mutation('SET_CUR_ELE_INDEX') setCurEleIndex;
......
......@@ -37,7 +37,7 @@ import Tabs from '@qg/cherry-ui/src/tabs';
import BackTop from '@qg/cherry-ui/src/back-top';
import Notify from '@qg/cherry-ui/src/notify';
import Toast from '@qg/cherry-ui/src/toast';
import { KaLoginForm } from '@qg/citrus-ui';
import citrusUi from '@qg/citrus-ui';
Vue.use(Button);
Vue.use(Image);
......@@ -66,7 +66,7 @@ Vue.use(Tabs);
// Vue.use(Swipe);
Vue.use(BackTop);
Vue.use(KaLoginForm);
Vue.use(citrusUi);
Vue.prototype.$notify = Notify;
Vue.prototype.$toast = Toast;
<!DOCTYPE html>
<html lang="en">
<html lang="en" >
<head>
<title>低代码平台</title>
<meta name="keywords">
......@@ -11,7 +11,7 @@
<link href="https://cdn.bootcss.com/iview/2.9.0/styles/iview.css" rel="stylesheet">
<style>
html {
font-size: 37.5Px;
font-size: 37.5Px !important;
}
html, body {
......
......@@ -1464,14 +1464,14 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
},
"@popperjs/core": {
"version": "2.8.4",
"resolved": "http://npmprivate.quantgroups.com/@popperjs%2fcore/-/core-2.8.4.tgz",
"integrity": "sha512-h0lY7g36rhjNV8KVHKS3/BEOgfsxu0AiRI8+ry5IFBGEsQFkpjxtcpVc9ndN8zrKUeMZXAWMc7eQMepfgykpxQ=="
"version": "2.9.0",
"resolved": "http://npmprivate.quantgroups.com/@popperjs%2fcore/-/core-2.9.0.tgz",
"integrity": "sha512-wjtKehFAIARq2OxK8j3JrggNlEslJfNuSm2ArteIbKyRMts2g0a7KzTxfRVNUM+O0gnBJ2hNV8nWPOYBgI1sew=="
},
"@qg/cherry-ui": {
"version": "2.18.66",
"resolved": "http://npmprivate.quantgroups.com/@qg%2fcherry-ui/-/cherry-ui-2.18.66.tgz",
"integrity": "sha512-JnpL3zuCeUzb11ji70KZ6fmt/XpjGwcxhHZsafQo7tiKpU9uAxZCJgUfiY0+XuyyBBqoBi/CRrWg7fvIFLewLA==",
"version": "2.18.75",
"resolved": "http://npmprivate.quantgroups.com/@qg%2fcherry-ui/-/cherry-ui-2.18.75.tgz",
"integrity": "sha512-F5a1iySaJ70IZ9/kdY7DoijR+Wa5nzJjhaGtv4n9wrujxwrIPJPJ7k+sgAmujJXWgzGoSVYqPT6AFhg4JJ1GCQ==",
"requires": {
"@popperjs/core": "^2.5.4",
"vue-lazyload": "^1.3.3",
......@@ -1479,16 +1479,17 @@
}
},
"@qg/citrus-ui": {
"version": "0.0.1-alpha.2",
"resolved": "http://npmprivate.quantgroups.com/@qg%2fcitrus-ui/-/citrus-ui-0.0.1-alpha.2.tgz",
"integrity": "sha512-lp8JAPaAdVtVq+jEnoRx/y64Usz4GM/IvYlvtGlxt3/d9/BBgYqhjwxW8diGy0zZ9QztAJXoC+4WEDbWZk0JMw==",
"version": "0.0.14",
"resolved": "http://npmprivate.quantgroups.com/@qg%2fcitrus-ui/-/citrus-ui-0.0.14.tgz",
"integrity": "sha512-DtffXRTjxtKebZ0ZsjDR8tQUZn57eMDZ/YkmUvUgs6qlEKulxiWQCVeCmQ8wWJtYcKE/qlp55R/XaJJ+BqY20Q==",
"requires": {
"@better-scroll/core": "^2.1.1",
"@qg/cherry-ui": "^2.18.66",
"@qg/cherry-ui": "^2.18.72",
"@qg/js-bridge": "^1.1.9",
"axios": "^0.21.1",
"js-cookie": "^2.2.1",
"sa-sdk-javascript": "^1.16.1",
"swiper": "^4.5.1",
"vuex": "^3.6.0"
}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment