💩 产品模块代码
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="topic">专题</el-menu-item>
|
||||
<el-menu-item index="portfolios">作品集</el-menu-item>
|
||||
<el-submenu index="store">
|
||||
<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="products">产品</el-menu-item>
|
||||
<el-menu-item index="open-data">开放数据</el-menu-item>
|
||||
</el-menu>
|
||||
</el-col>
|
||||
@ -245,6 +236,11 @@ export default {
|
||||
path: '/portfolios?page=1'
|
||||
})
|
||||
break;
|
||||
case 'products':
|
||||
_ts.$router.push({
|
||||
path: '/products?page=1'
|
||||
})
|
||||
break;
|
||||
case 'github':
|
||||
window.open("https://github.com/rymcu");
|
||||
break;
|
||||
|
@ -159,7 +159,10 @@ export default {
|
||||
this.$store.commit('admin/updateTags', tabs.filter(tab => tab.name !== targetName))
|
||||
|
||||
this.$router.push({
|
||||
name: activeName
|
||||
name: activeName,
|
||||
params: {
|
||||
reset: '0'
|
||||
}
|
||||
})
|
||||
},
|
||||
handleClick(item) {
|
||||
@ -175,12 +178,16 @@ export default {
|
||||
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
||||
}
|
||||
_ts.$router.push({
|
||||
name: item.name
|
||||
name: item.name,
|
||||
params: {
|
||||
reset: '0'
|
||||
}
|
||||
})
|
||||
},
|
||||
handleSelectTab(item) {
|
||||
let _ts = this
|
||||
this.$store.commit('admin/updateActiveTab', item);
|
||||
let reset = '0'
|
||||
let result = _.findIndex(_ts.editableTabs, function (tab) {
|
||||
return tab.name === item;
|
||||
})
|
||||
@ -189,9 +196,13 @@ export default {
|
||||
return menu.name === item;
|
||||
})
|
||||
_ts.$store.commit('admin/pushTags', _ts.menus[index])
|
||||
reset = '1'
|
||||
}
|
||||
_ts.$router.push({
|
||||
name: item
|
||||
name: item,
|
||||
params: {
|
||||
reset: reset
|
||||
}
|
||||
})
|
||||
},
|
||||
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
|
||||
.dispatch('dashboard/fetchDashboard', params)
|
||||
.catch(err => error({statusCode: 404})),
|
||||
store.dispatch("dashboard/fetchLastThirtyDays"),
|
||||
store.dispatch("dashboard/fetchHistory"),
|
||||
store.dispatch("dashboard/fetchNewUsers"),
|
||||
store.dispatch("dashboard/fetchNewBankAccounts"),
|
||||
store.dispatch("dashboard/fetchNewArticles")
|
||||
store.dispatch("dashboard/fetchLastThirtyDays", params),
|
||||
store.dispatch("dashboard/fetchHistory", params),
|
||||
store.dispatch("dashboard/fetchNewUsers", params),
|
||||
store.dispatch("dashboard/fetchNewBankAccounts", params),
|
||||
store.dispatch("dashboard/fetchNewArticles", params)
|
||||
])
|
||||
},
|
||||
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-col :xs="24" :xl="24">
|
||||
<div class="card card-profile">
|
||||
<div v-if="user.userHomeBImgURL" class="card-header"
|
||||
:style="{backgroundImage:'url('+user.userHomeBImgURL+')', backgroundSize:'percentage', backgroundPosition:'50%'}"></div>
|
||||
<div v-if="user.bgImgUrl" class="card-header"
|
||||
:style="{backgroundImage:'url('+user.bgImgUrl+')', backgroundSize:'cover', backgroundPosition:'50%'}"></div>
|
||||
<div v-else class="card-header"
|
||||
:style="{backgroundImage:'url(' + backgroundImage + ')', backgroundSize:'800px auto', backgroundPosition:'50%'}"></div>
|
||||
<div class="card-body text-center">
|
||||
|
@ -21,6 +21,12 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<h1>双重验证</h1>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-button type="primary" round plain @click="open2FA">开启</el-button>
|
||||
</el-col>
|
||||
<el-dialog
|
||||
title="更换邮箱"
|
||||
:visible.sync="dialogVisible"
|
||||
@ -48,12 +54,27 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</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>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Vue from 'vue';
|
||||
import {mapState} from 'vuex';
|
||||
import VueQrCode from '@chenfengyuan/vue-qrcode';
|
||||
|
||||
Vue.component(VueQrCode.name, VueQrCode);
|
||||
export default {
|
||||
name: "security",
|
||||
computed: {
|
||||
@ -74,7 +95,9 @@ export default {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
loadText: '发送验证码',
|
||||
btnLoading: false
|
||||
btnLoading: false,
|
||||
secretKeyDialogVisible: false,
|
||||
secretKey: ''
|
||||
}
|
||||
},
|
||||
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() {
|
||||
|
@ -88,6 +88,9 @@ export const mutations = {
|
||||
|
||||
export const actions = {
|
||||
fetchUsers({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateUsersData', getDefaultUsersData())
|
||||
commit('updateFetching', true)
|
||||
@ -111,6 +114,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchRoles({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateRolesData', getDefaultRolesData())
|
||||
commit('updateFetching', true)
|
||||
@ -134,6 +140,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchArticles({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateArticlesData', getDefaultArticlesData())
|
||||
commit('updateFetching', true)
|
||||
@ -158,6 +167,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchComments({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateCommentsData', getDefaultArticlesData())
|
||||
commit('updateFetching', true)
|
||||
|
@ -44,6 +44,9 @@ export const mutations = {
|
||||
|
||||
export const actions = {
|
||||
fetchList({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateListData', getDefaultListData())
|
||||
commit('updateListFetching', true)
|
||||
|
@ -27,6 +27,9 @@ export const mutations = {
|
||||
|
||||
export const actions = {
|
||||
fetchList({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateListData', getDefaultListData())
|
||||
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 = {
|
||||
fetchDashboard({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateDashboardData', getDefaultDashboardData())
|
||||
commit('updateDashboardFetching', true)
|
||||
@ -91,6 +94,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchLastThirtyDays({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateLastThirtyDaysData', getDefaultLastThirtyDaysData())
|
||||
commit('updateDashboardFetching', true)
|
||||
@ -107,6 +113,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchHistory({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateHistoryData', getDefaultLastThirtyDaysData())
|
||||
commit('updateDashboardFetching', true)
|
||||
@ -123,6 +132,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchNewUsers({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateNewUsersData', getDefaultNewUserData())
|
||||
commit('updateDashboardFetching', true)
|
||||
@ -139,6 +151,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchNewBankAccounts({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateNewBankAccountsData', getDefaultNewBankAccountData())
|
||||
commit('updateDashboardFetching', true)
|
||||
@ -155,6 +170,9 @@ export const actions = {
|
||||
});
|
||||
},
|
||||
fetchNewArticles({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateNewArticlesData', getDefaultNewBankAccountData())
|
||||
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 = {
|
||||
fetchList({commit}, params = {}) {
|
||||
if (params && params.reset === '0') {
|
||||
return true;
|
||||
}
|
||||
// 清空已有数据
|
||||
commit('updateListData', getDefaultListData())
|
||||
commit('updateListFetching', true)
|
||||
|
38
yarn.lock
38
yarn.lock
@ -2670,7 +2670,7 @@ cookie-signature@1.0.6:
|
||||
|
||||
cookie@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==
|
||||
|
||||
cookie@^0.3.1:
|
||||
@ -3114,7 +3114,7 @@ defu@^5.0.0:
|
||||
|
||||
depd@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==
|
||||
|
||||
depd@~1.1.2:
|
||||
@ -3137,7 +3137,7 @@ destr@^1.0.0, destr@^1.1.0:
|
||||
|
||||
destroy@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==
|
||||
|
||||
destroy@^1.0.4, destroy@~1.0.4:
|
||||
@ -3561,7 +3561,7 @@ expand-brackets@^2.1.4:
|
||||
|
||||
express@^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==
|
||||
dependencies:
|
||||
accepts "~1.3.8"
|
||||
@ -3748,7 +3748,7 @@ finalhandler@1.1.2:
|
||||
|
||||
finalhandler@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==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
@ -4241,7 +4241,7 @@ htmlparser2@^6.1.0:
|
||||
|
||||
http-errors@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==
|
||||
dependencies:
|
||||
depd "2.0.0"
|
||||
@ -4857,9 +4857,9 @@ kind-of@^6.0.0, kind-of@^6.0.2:
|
||||
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
|
||||
|
||||
klona@^2.0.4:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
|
||||
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npm.taobao.org/klona/download/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
|
||||
integrity sha1-e7Hjr/sMuGJFR+9+j2cI6i4538A=
|
||||
|
||||
last-call-webpack-plugin@^3.0.0:
|
||||
version "3.0.0"
|
||||
@ -5680,7 +5680,7 @@ object.values@^1.1.0:
|
||||
|
||||
on-finished@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==
|
||||
dependencies:
|
||||
ee-first "1.1.1"
|
||||
@ -6789,7 +6789,7 @@ qrcode@^1.4.4:
|
||||
|
||||
qs@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==
|
||||
dependencies:
|
||||
side-channel "^1.0.4"
|
||||
@ -6866,7 +6866,7 @@ range-parser@^1.2.1, range-parser@~1.2.1:
|
||||
|
||||
raw-body@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==
|
||||
dependencies:
|
||||
bytes "3.1.2"
|
||||
@ -7259,7 +7259,7 @@ send@0.17.1:
|
||||
|
||||
send@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==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
@ -7306,7 +7306,7 @@ serve-placeholder@^1.2.3:
|
||||
|
||||
serve-static@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==
|
||||
dependencies:
|
||||
encodeurl "~1.0.2"
|
||||
@ -7400,7 +7400,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3:
|
||||
|
||||
simple-icons@^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==
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
@ -7584,7 +7584,7 @@ static-extend@^0.1.1:
|
||||
|
||||
statuses@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==
|
||||
|
||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
||||
@ -8287,9 +8287,9 @@ vary@^1.1.2, vary@~1.1.2:
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
vditor@^3.8.14:
|
||||
version "3.8.14"
|
||||
resolved "https://registry.yarnpkg.com/vditor/-/vditor-3.8.14.tgz#634c43d5c0c994e80d0dfe555b284d6dd78780c2"
|
||||
integrity sha512-vJ6Fb89bgp5s2mbLwAOSVH4tXC+bmhd1XUWgO/s91KR3vqBn5mr6mJkMJeqM1/9IEUC1I4H6+d/Bd4yphqFhwA==
|
||||
version "3.8.15"
|
||||
resolved "https://registry.npmmirror.com/vditor/-/vditor-3.8.15.tgz#de340bdaa33264e7a5c303d9e97dd99fd043fec9"
|
||||
integrity sha512-BYSBNUuhtvOfu1OU+NhS7R6TcrNP0UmQ8Vtbzq9BnLoG1uIHPZaTjtJIv00OPqHEcZa4KpR7mU+n9P+i+9SHuA==
|
||||
dependencies:
|
||||
diff-match-patch "^1.0.5"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user