💩 产品模块代码
This commit is contained in:
parent
3440601a3b
commit
00cf10f69e
@ -14,16 +14,7 @@
|
|||||||
<el-menu-item index="index">首页</el-menu-item>
|
<el-menu-item index="index">首页</el-menu-item>
|
||||||
<el-menu-item index="topic">专题</el-menu-item>
|
<el-menu-item index="topic">专题</el-menu-item>
|
||||||
<el-menu-item index="portfolios">作品集</el-menu-item>
|
<el-menu-item index="portfolios">作品集</el-menu-item>
|
||||||
<el-submenu index="store">
|
<el-menu-item index="products">产品</el-menu-item>
|
||||||
<template slot="title">RYMCU Store</template>
|
|
||||||
<el-menu-item index="taobao">淘宝店铺</el-menu-item>
|
|
||||||
<el-submenu index="weixin">
|
|
||||||
<template slot="title">微信</template>
|
|
||||||
<el-menu-item index="mini" style="height: 200px;">
|
|
||||||
<img src="@/assets/weixinStore.jpg" style="width: 200px;"/>
|
|
||||||
</el-menu-item>
|
|
||||||
</el-submenu>
|
|
||||||
</el-submenu>
|
|
||||||
<el-menu-item index="open-data">开放数据</el-menu-item>
|
<el-menu-item index="open-data">开放数据</el-menu-item>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -245,6 +236,11 @@ export default {
|
|||||||
path: '/portfolios?page=1'
|
path: '/portfolios?page=1'
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
case 'products':
|
||||||
|
_ts.$router.push({
|
||||||
|
path: '/products?page=1'
|
||||||
|
})
|
||||||
|
break;
|
||||||
case 'github':
|
case 'github':
|
||||||
window.open("https://github.com/rymcu");
|
window.open("https://github.com/rymcu");
|
||||||
break;
|
break;
|
||||||
|
@ -159,7 +159,10 @@ export default {
|
|||||||
this.$store.commit('admin/updateTags', tabs.filter(tab => tab.name !== targetName))
|
this.$store.commit('admin/updateTags', tabs.filter(tab => tab.name !== targetName))
|
||||||
|
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: activeName
|
name: activeName,
|
||||||
|
params: {
|
||||||
|
reset: '0'
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleClick(item) {
|
handleClick(item) {
|
||||||
@ -175,12 +178,16 @@ export default {
|
|||||||
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
||||||
}
|
}
|
||||||
_ts.$router.push({
|
_ts.$router.push({
|
||||||
name: item.name
|
name: item.name,
|
||||||
|
params: {
|
||||||
|
reset: '0'
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleSelectTab(item) {
|
handleSelectTab(item) {
|
||||||
let _ts = this
|
let _ts = this
|
||||||
this.$store.commit('admin/updateActiveTab', item);
|
this.$store.commit('admin/updateActiveTab', item);
|
||||||
|
let reset = '0'
|
||||||
let result = _.findIndex(_ts.editableTabs, function (tab) {
|
let result = _.findIndex(_ts.editableTabs, function (tab) {
|
||||||
return tab.name === item;
|
return tab.name === item;
|
||||||
})
|
})
|
||||||
@ -189,9 +196,13 @@ export default {
|
|||||||
return menu.name === item;
|
return menu.name === item;
|
||||||
})
|
})
|
||||||
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
||||||
|
reset = '1'
|
||||||
}
|
}
|
||||||
_ts.$router.push({
|
_ts.$router.push({
|
||||||
name: item
|
name: item,
|
||||||
|
params: {
|
||||||
|
reset: reset
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleSelectMenu(item) {
|
handleSelectMenu(item) {
|
||||||
|
162
pages/admin/currency-rules.vue
Normal file
162
pages/admin/currency-rules.vue
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
<template>
|
||||||
|
<el-row style="margin-top: 20px;">
|
||||||
|
<el-col style="margin-bottom: 1rem;">
|
||||||
|
<el-breadcrumb separator-class="el-icon-arrow-right">
|
||||||
|
<el-breadcrumb-item :to="{ path: '/admin/dashboard' }">首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>货币规则管理</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</el-col>
|
||||||
|
<el-col>
|
||||||
|
<el-table
|
||||||
|
:data="rules"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
label="规则名称"
|
||||||
|
width="180"
|
||||||
|
prop="ruleName">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="奖励/消耗(巴旦木)"
|
||||||
|
width="180"
|
||||||
|
prop="money">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.awardStatus === '0'" style="color: limegreen;font-weight: bold;">+{{ scope.row.money }}</span>
|
||||||
|
<span v-else style="color: red;font-weight: bold;">-{{ scope.row.money }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="上限(巴旦木)"
|
||||||
|
width="180"
|
||||||
|
prop="maximumMoney">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="重复(天/次)"
|
||||||
|
width="180"
|
||||||
|
prop="repeatDays">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="规则说明"
|
||||||
|
prop="ruleDescription">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
<el-col>
|
||||||
|
<el-pagination
|
||||||
|
:hide-on-single-page="true"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="pagination.currentPage"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pagination.pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="pagination.total">
|
||||||
|
</el-pagination>
|
||||||
|
</el-col>
|
||||||
|
<el-col>
|
||||||
|
<el-dialog :visible.sync="dialogVisible">
|
||||||
|
<el-form label-width="180px">
|
||||||
|
<el-form-item label="转账账户">
|
||||||
|
<el-input v-model="toBankAccount" style="width: 300px;"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="转账金额">
|
||||||
|
<el-input-number v-model="money" :min="1" :step="1" :step-strictly="true"
|
||||||
|
style="width: 300px;"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="款项">
|
||||||
|
<el-input v-model="funds" style="width: 300px;"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button v-if="money && toBankAccount" type="primary" @click="transfer">确 定</el-button>
|
||||||
|
<el-button v-else type="primary" :disabled="true">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapState} from 'vuex';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "currency-rules",
|
||||||
|
fetch({store, params, error}) {
|
||||||
|
return Promise.all([
|
||||||
|
store
|
||||||
|
.dispatch('currency-rule/fetchList', params)
|
||||||
|
.catch(err => error({statusCode: 404}))
|
||||||
|
])
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState({
|
||||||
|
rules: state => state["currency-rule"].list.data.rules,
|
||||||
|
pagination: state => state["currency-rule"].list.data.pagination
|
||||||
|
})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
order: 'desc',
|
||||||
|
formBankAccount: '',
|
||||||
|
toBankAccount: '',
|
||||||
|
money: 1,
|
||||||
|
dialogVisible: false,
|
||||||
|
funds: '财政划拨',
|
||||||
|
transactionType: '0'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onRouter(name, data) {
|
||||||
|
this.$router.push({
|
||||||
|
path: `/${name}/${data}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(pageSize) {
|
||||||
|
let _ts = this;
|
||||||
|
_ts.$store.dispatch('bank/fetchList', {
|
||||||
|
page: _ts.pagination.currentPage,
|
||||||
|
rows: pageSize
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCurrentChange(page) {
|
||||||
|
let _ts = this;
|
||||||
|
_ts.$store.dispatch('bank/fetchList', {
|
||||||
|
page: page,
|
||||||
|
rows: _ts.pagination.pageSize
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showTransfer(index, bank) {
|
||||||
|
let _ts = this;
|
||||||
|
_ts.$set(_ts, 'formBankAccount', bank.bankAccount);
|
||||||
|
_ts.$set(_ts, 'dialogVisible', true);
|
||||||
|
},
|
||||||
|
transfer() {
|
||||||
|
let _ts = this;
|
||||||
|
_ts.$axios.$post("/api/transaction/transfer", {
|
||||||
|
formBankAccount: _ts.formBankAccount,
|
||||||
|
toBankAccount: _ts.toBankAccount,
|
||||||
|
money: _ts.money,
|
||||||
|
funds: _ts.funds
|
||||||
|
}).then(function (res) {
|
||||||
|
if (res) {
|
||||||
|
if (res.idTransactionRecord) {
|
||||||
|
_ts.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: '划转成功!'
|
||||||
|
});
|
||||||
|
_ts.$set(_ts, 'dialogVisible', false);
|
||||||
|
_ts.handleCurrentChange(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$store.commit("setActiveMenu", "admin-currency-rules");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -256,11 +256,11 @@ export default {
|
|||||||
store
|
store
|
||||||
.dispatch('dashboard/fetchDashboard', params)
|
.dispatch('dashboard/fetchDashboard', params)
|
||||||
.catch(err => error({statusCode: 404})),
|
.catch(err => error({statusCode: 404})),
|
||||||
store.dispatch("dashboard/fetchLastThirtyDays"),
|
store.dispatch("dashboard/fetchLastThirtyDays", params),
|
||||||
store.dispatch("dashboard/fetchHistory"),
|
store.dispatch("dashboard/fetchHistory", params),
|
||||||
store.dispatch("dashboard/fetchNewUsers"),
|
store.dispatch("dashboard/fetchNewUsers", params),
|
||||||
store.dispatch("dashboard/fetchNewBankAccounts"),
|
store.dispatch("dashboard/fetchNewBankAccounts", params),
|
||||||
store.dispatch("dashboard/fetchNewArticles")
|
store.dispatch("dashboard/fetchNewArticles", params)
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
37
pages/nebula-pi.vue
Normal file
37
pages/nebula-pi.vue
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<template>
|
||||||
|
<el-row class="product__wrapper">
|
||||||
|
<el-col>
|
||||||
|
<el-card :body-style="{ padding: '15px' }">
|
||||||
|
<h2>Nebula Pi 主板结构及布局</h2>
|
||||||
|
<p>
|
||||||
|
<img src="https://static.rymcu.com/article/1640531590844"
|
||||||
|
class="image">
|
||||||
|
</p>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "nebula-pi"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.product__wrapper {
|
||||||
|
max-width: 980px;
|
||||||
|
margin: 20px auto;
|
||||||
|
display: block;
|
||||||
|
padding-left: 1rem;
|
||||||
|
padding-right: 1rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
78
pages/products.vue
Normal file
78
pages/products.vue
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<template>
|
||||||
|
<el-row class="product__wrapper">
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-card :body-style="{ padding: '0px' }">
|
||||||
|
<img src="https://static.rymcu.com/article/1648960741563.jpg"
|
||||||
|
class="image">
|
||||||
|
<div style="padding: 14px;">
|
||||||
|
<span>Nebula Pi</span>
|
||||||
|
<div class="bottom clearfix">
|
||||||
|
<el-button type="text" class="button">立即购买</el-button>
|
||||||
|
<el-button type="text" class="button" @click="handleClick">相关内容</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "products",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
currentDate: new Date().toLocaleString()
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleClick() {
|
||||||
|
this.$router.push({
|
||||||
|
path: "/nebula-pi"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.product__wrapper {
|
||||||
|
max-width: 980px;
|
||||||
|
margin: 20px auto;
|
||||||
|
display: block;
|
||||||
|
padding-left: 1rem;
|
||||||
|
padding-right: 1rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
margin-top: 13px;
|
||||||
|
line-height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
padding: 0;
|
||||||
|
float: right;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
</style>
|
@ -2,8 +2,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :xs="24" :xl="24">
|
<el-col :xs="24" :xl="24">
|
||||||
<div class="card card-profile">
|
<div class="card card-profile">
|
||||||
<div v-if="user.userHomeBImgURL" class="card-header"
|
<div v-if="user.bgImgUrl" class="card-header"
|
||||||
:style="{backgroundImage:'url('+user.userHomeBImgURL+')', backgroundSize:'percentage', backgroundPosition:'50%'}"></div>
|
:style="{backgroundImage:'url('+user.bgImgUrl+')', backgroundSize:'cover', backgroundPosition:'50%'}"></div>
|
||||||
<div v-else class="card-header"
|
<div v-else class="card-header"
|
||||||
:style="{backgroundImage:'url(' + backgroundImage + ')', backgroundSize:'800px auto', backgroundPosition:'50%'}"></div>
|
:style="{backgroundImage:'url(' + backgroundImage + ')', backgroundSize:'800px auto', backgroundPosition:'50%'}"></div>
|
||||||
<div class="card-body text-center">
|
<div class="card-body text-center">
|
||||||
|
@ -21,6 +21,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col>
|
||||||
|
<h1>双重验证</h1>
|
||||||
|
</el-col>
|
||||||
|
<el-col>
|
||||||
|
<el-button type="primary" round plain @click="open2FA">开启</el-button>
|
||||||
|
</el-col>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="更换邮箱"
|
title="更换邮箱"
|
||||||
:visible.sync="dialogVisible"
|
:visible.sync="dialogVisible"
|
||||||
@ -48,12 +54,27 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<el-dialog
|
||||||
|
title="双重验证"
|
||||||
|
:visible.sync="secretKeyDialogVisible"
|
||||||
|
width="475px"
|
||||||
|
:before-close="hideSecretKeyDialog"
|
||||||
|
center>
|
||||||
|
<el-row style="text-align: center;">
|
||||||
|
<el-col>
|
||||||
|
<qrcode :value="secretKey" :options="{ width: 20 }"></qrcode>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Vue from 'vue';
|
||||||
import {mapState} from 'vuex';
|
import {mapState} from 'vuex';
|
||||||
|
import VueQrCode from '@chenfengyuan/vue-qrcode';
|
||||||
|
|
||||||
|
Vue.component(VueQrCode.name, VueQrCode);
|
||||||
export default {
|
export default {
|
||||||
name: "security",
|
name: "security",
|
||||||
computed: {
|
computed: {
|
||||||
@ -74,7 +95,9 @@ export default {
|
|||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
loading: false,
|
loading: false,
|
||||||
loadText: '发送验证码',
|
loadText: '发送验证码',
|
||||||
btnLoading: false
|
btnLoading: false,
|
||||||
|
secretKeyDialogVisible: false,
|
||||||
|
secretKey: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -183,6 +206,18 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
open2FA () {
|
||||||
|
let _ts = this;
|
||||||
|
_ts.$axios.$get('/api/auth/tow-factor/gen-key').then(function (res) {
|
||||||
|
if (res) {
|
||||||
|
_ts.secretKey = res.secretKey
|
||||||
|
_ts.$set(_ts, 'secretKeyDialogVisible', true);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hideSecretKeyDialog () {
|
||||||
|
this.$set(this, 'secretKeyDialogVisible', false);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -88,6 +88,9 @@ export const mutations = {
|
|||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
fetchUsers({commit}, params = {}) {
|
fetchUsers({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateUsersData', getDefaultUsersData())
|
commit('updateUsersData', getDefaultUsersData())
|
||||||
commit('updateFetching', true)
|
commit('updateFetching', true)
|
||||||
@ -111,6 +114,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchRoles({commit}, params = {}) {
|
fetchRoles({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateRolesData', getDefaultRolesData())
|
commit('updateRolesData', getDefaultRolesData())
|
||||||
commit('updateFetching', true)
|
commit('updateFetching', true)
|
||||||
@ -134,6 +140,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchArticles({commit}, params = {}) {
|
fetchArticles({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateArticlesData', getDefaultArticlesData())
|
commit('updateArticlesData', getDefaultArticlesData())
|
||||||
commit('updateFetching', true)
|
commit('updateFetching', true)
|
||||||
@ -158,6 +167,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchComments({commit}, params = {}) {
|
fetchComments({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateCommentsData', getDefaultArticlesData())
|
commit('updateCommentsData', getDefaultArticlesData())
|
||||||
commit('updateFetching', true)
|
commit('updateFetching', true)
|
||||||
|
@ -44,6 +44,9 @@ export const mutations = {
|
|||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
fetchList({commit}, params = {}) {
|
fetchList({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateListData', getDefaultListData())
|
commit('updateListData', getDefaultListData())
|
||||||
commit('updateListFetching', true)
|
commit('updateListFetching', true)
|
||||||
|
@ -27,6 +27,9 @@ export const mutations = {
|
|||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
fetchList({commit}, params = {}) {
|
fetchList({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateListData', getDefaultListData())
|
commit('updateListData', getDefaultListData())
|
||||||
commit('updateListFetching', true)
|
commit('updateListFetching', true)
|
||||||
|
48
store/currency-rule.js
Normal file
48
store/currency-rule.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
export const RULE_API_PATH = '/api/admin/rule/currency'
|
||||||
|
|
||||||
|
const getDefaultListData = () => {
|
||||||
|
return {
|
||||||
|
rules: [],
|
||||||
|
pagination: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const state = () => {
|
||||||
|
return {
|
||||||
|
list: {
|
||||||
|
fetching: false,
|
||||||
|
data: getDefaultListData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const mutations = {
|
||||||
|
updateListFetching(state, action) {
|
||||||
|
state.list.fetching = action
|
||||||
|
},
|
||||||
|
updateListData(state, action) {
|
||||||
|
state.list.data = action
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const actions = {
|
||||||
|
fetchList({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 清空已有数据
|
||||||
|
commit('updateListData', [])
|
||||||
|
commit('updateListFetching', true)
|
||||||
|
|
||||||
|
return this.$axios
|
||||||
|
.$get(`${RULE_API_PATH}/list`)
|
||||||
|
.then(response => {
|
||||||
|
commit('updateListFetching', false);
|
||||||
|
commit('updateListData', response);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
commit('updateListFetching', false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -75,6 +75,9 @@ export const mutations = {
|
|||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
fetchDashboard({commit}, params = {}) {
|
fetchDashboard({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateDashboardData', getDefaultDashboardData())
|
commit('updateDashboardData', getDefaultDashboardData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
@ -91,6 +94,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchLastThirtyDays({commit}, params = {}) {
|
fetchLastThirtyDays({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateLastThirtyDaysData', getDefaultLastThirtyDaysData())
|
commit('updateLastThirtyDaysData', getDefaultLastThirtyDaysData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
@ -107,6 +113,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchHistory({commit}, params = {}) {
|
fetchHistory({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateHistoryData', getDefaultLastThirtyDaysData())
|
commit('updateHistoryData', getDefaultLastThirtyDaysData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
@ -123,6 +132,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchNewUsers({commit}, params = {}) {
|
fetchNewUsers({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateNewUsersData', getDefaultNewUserData())
|
commit('updateNewUsersData', getDefaultNewUserData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
@ -139,6 +151,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchNewBankAccounts({commit}, params = {}) {
|
fetchNewBankAccounts({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateNewBankAccountsData', getDefaultNewBankAccountData())
|
commit('updateNewBankAccountsData', getDefaultNewBankAccountData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
@ -155,6 +170,9 @@ export const actions = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchNewArticles({commit}, params = {}) {
|
fetchNewArticles({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateNewArticlesData', getDefaultNewBankAccountData())
|
commit('updateNewArticlesData', getDefaultNewBankAccountData())
|
||||||
commit('updateDashboardFetching', true)
|
commit('updateDashboardFetching', true)
|
||||||
|
0
store/product.js
Normal file
0
store/product.js
Normal file
@ -68,6 +68,9 @@ export const mutations = {
|
|||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
fetchList({commit}, params = {}) {
|
fetchList({commit}, params = {}) {
|
||||||
|
if (params && params.reset === '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// 清空已有数据
|
// 清空已有数据
|
||||||
commit('updateListData', getDefaultListData())
|
commit('updateListData', getDefaultListData())
|
||||||
commit('updateListFetching', true)
|
commit('updateListFetching', true)
|
||||||
|
38
yarn.lock
38
yarn.lock
@ -2670,7 +2670,7 @@ cookie-signature@1.0.6:
|
|||||||
|
|
||||||
cookie@0.5.0:
|
cookie@0.5.0:
|
||||||
version "0.5.0"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
||||||
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
||||||
|
|
||||||
cookie@^0.3.1:
|
cookie@^0.3.1:
|
||||||
@ -3114,7 +3114,7 @@ defu@^5.0.0:
|
|||||||
|
|
||||||
depd@2.0.0:
|
depd@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
||||||
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
||||||
|
|
||||||
depd@~1.1.2:
|
depd@~1.1.2:
|
||||||
@ -3137,7 +3137,7 @@ destr@^1.0.0, destr@^1.1.0:
|
|||||||
|
|
||||||
destroy@1.2.0:
|
destroy@1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||||
|
|
||||||
destroy@^1.0.4, destroy@~1.0.4:
|
destroy@^1.0.4, destroy@~1.0.4:
|
||||||
@ -3561,7 +3561,7 @@ expand-brackets@^2.1.4:
|
|||||||
|
|
||||||
express@^4.18.1:
|
express@^4.18.1:
|
||||||
version "4.18.1"
|
version "4.18.1"
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
|
resolved "https://registry.npmmirror.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
|
||||||
integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
|
integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
accepts "~1.3.8"
|
accepts "~1.3.8"
|
||||||
@ -3748,7 +3748,7 @@ finalhandler@1.1.2:
|
|||||||
|
|
||||||
finalhandler@1.2.0:
|
finalhandler@1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
|
resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
|
||||||
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
|
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "2.6.9"
|
debug "2.6.9"
|
||||||
@ -4241,7 +4241,7 @@ htmlparser2@^6.1.0:
|
|||||||
|
|
||||||
http-errors@2.0.0:
|
http-errors@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
|
||||||
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
|
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
depd "2.0.0"
|
depd "2.0.0"
|
||||||
@ -4857,9 +4857,9 @@ kind-of@^6.0.0, kind-of@^6.0.2:
|
|||||||
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
|
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
|
||||||
|
|
||||||
klona@^2.0.4:
|
klona@^2.0.4:
|
||||||
version "2.0.5"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
|
resolved "https://registry.npm.taobao.org/klona/download/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
|
||||||
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
|
integrity sha1-e7Hjr/sMuGJFR+9+j2cI6i4538A=
|
||||||
|
|
||||||
last-call-webpack-plugin@^3.0.0:
|
last-call-webpack-plugin@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
@ -5680,7 +5680,7 @@ object.values@^1.1.0:
|
|||||||
|
|
||||||
on-finished@2.4.1:
|
on-finished@2.4.1:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
|
resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
|
||||||
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
|
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
|
||||||
dependencies:
|
dependencies:
|
||||||
ee-first "1.1.1"
|
ee-first "1.1.1"
|
||||||
@ -6789,7 +6789,7 @@ qrcode@^1.4.4:
|
|||||||
|
|
||||||
qs@6.10.3:
|
qs@6.10.3:
|
||||||
version "6.10.3"
|
version "6.10.3"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
|
resolved "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
|
||||||
integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
|
integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
side-channel "^1.0.4"
|
side-channel "^1.0.4"
|
||||||
@ -6866,7 +6866,7 @@ range-parser@^1.2.1, range-parser@~1.2.1:
|
|||||||
|
|
||||||
raw-body@2.5.1:
|
raw-body@2.5.1:
|
||||||
version "2.5.1"
|
version "2.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
|
resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
|
||||||
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
|
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
|
||||||
dependencies:
|
dependencies:
|
||||||
bytes "3.1.2"
|
bytes "3.1.2"
|
||||||
@ -7259,7 +7259,7 @@ send@0.17.1:
|
|||||||
|
|
||||||
send@0.18.0:
|
send@0.18.0:
|
||||||
version "0.18.0"
|
version "0.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
||||||
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
|
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "2.6.9"
|
debug "2.6.9"
|
||||||
@ -7306,7 +7306,7 @@ serve-placeholder@^1.2.3:
|
|||||||
|
|
||||||
serve-static@1.15.0:
|
serve-static@1.15.0:
|
||||||
version "1.15.0"
|
version "1.15.0"
|
||||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
|
resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
|
||||||
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
|
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
|
||||||
dependencies:
|
dependencies:
|
||||||
encodeurl "~1.0.2"
|
encodeurl "~1.0.2"
|
||||||
@ -7400,7 +7400,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3:
|
|||||||
|
|
||||||
simple-icons@^6.23.0:
|
simple-icons@^6.23.0:
|
||||||
version "6.23.0"
|
version "6.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/simple-icons/-/simple-icons-6.23.0.tgz#6e3bcec7537b0765d245f3ec9be3115fcd48c429"
|
resolved "https://registry.npmmirror.com/simple-icons/-/simple-icons-6.23.0.tgz#6e3bcec7537b0765d245f3ec9be3115fcd48c429"
|
||||||
integrity sha512-9ql+6OdW5Dnfx1/z5z8MYO2y+OM4Oj4XBvQY5Nlye4eW+Nf5igHzHIKKtTmFkvCmR0lrddZpe1F/89chgoUXhg==
|
integrity sha512-9ql+6OdW5Dnfx1/z5z8MYO2y+OM4Oj4XBvQY5Nlye4eW+Nf5igHzHIKKtTmFkvCmR0lrddZpe1F/89chgoUXhg==
|
||||||
|
|
||||||
simple-swizzle@^0.2.2:
|
simple-swizzle@^0.2.2:
|
||||||
@ -7584,7 +7584,7 @@ static-extend@^0.1.1:
|
|||||||
|
|
||||||
statuses@2.0.1:
|
statuses@2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
||||||
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
||||||
|
|
||||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
||||||
@ -8287,9 +8287,9 @@ vary@^1.1.2, vary@~1.1.2:
|
|||||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||||
|
|
||||||
vditor@^3.8.14:
|
vditor@^3.8.14:
|
||||||
version "3.8.14"
|
version "3.8.15"
|
||||||
resolved "https://registry.yarnpkg.com/vditor/-/vditor-3.8.14.tgz#634c43d5c0c994e80d0dfe555b284d6dd78780c2"
|
resolved "https://registry.npmmirror.com/vditor/-/vditor-3.8.15.tgz#de340bdaa33264e7a5c303d9e97dd99fd043fec9"
|
||||||
integrity sha512-vJ6Fb89bgp5s2mbLwAOSVH4tXC+bmhd1XUWgO/s91KR3vqBn5mr6mJkMJeqM1/9IEUC1I4H6+d/Bd4yphqFhwA==
|
integrity sha512-BYSBNUuhtvOfu1OU+NhS7R6TcrNP0UmQ8Vtbzq9BnLoG1uIHPZaTjtJIv00OPqHEcZa4KpR7mU+n9P+i+9SHuA==
|
||||||
dependencies:
|
dependencies:
|
||||||
diff-match-patch "^1.0.5"
|
diff-match-patch "^1.0.5"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user