1、日历调整,改为显示总场次,加入下钻

2、参会领导非必填
3、预约列表加入排序和会议室筛选
This commit is contained in:
471615499@qq.com 2024-10-28 21:51:05 +08:00
parent 9aee7cd51d
commit 614531e765
9 changed files with 268 additions and 17 deletions

View File

@ -36,6 +36,7 @@
"vue-clipboard2": "^0.2.1", "vue-clipboard2": "^0.2.1",
"vue-cropper": "0.4.9", "vue-cropper": "0.4.9",
"vue-i18n": "^8.17.4", "vue-i18n": "^8.17.4",
"vue-qr": "^4.0.9",
"vue-quill-editor": "^3.0.6", "vue-quill-editor": "^3.0.6",
"vue-router": "^3.1.2", "vue-router": "^3.1.2",
"vue-svg-component-runtime": "^1.0.1", "vue-svg-component-runtime": "^1.0.1",

View File

@ -11,7 +11,7 @@ import { axios } from '@/utils/request'
* @param parameter * @param parameter
* @returns {*} * @returns {*}
*/ */
export function login (parameter) { export function login(parameter) {
return axios({ return axios({
url: '/login/slide', url: '/login/slide',
method: 'post', method: 'post',
@ -19,7 +19,7 @@ export function login (parameter) {
}) })
} }
export function getLoginSms (parameter) { export function getLoginSms(parameter) {
return axios({ return axios({
url: '/system/sms/send', url: '/system/sms/send',
method: 'get', method: 'get',
@ -27,7 +27,7 @@ export function getLoginSms (parameter) {
}) })
} }
export function getInfo () { export function getInfo() {
return axios({ return axios({
url: '/system/user/info', url: '/system/user/info',
method: 'get', method: 'get',
@ -37,7 +37,7 @@ export function getInfo () {
}) })
} }
export function logout (token) { export function logout(token) {
return axios({ return axios({
url: '/login/logout', url: '/login/logout',
method: 'post', method: 'post',
@ -49,7 +49,7 @@ export function logout (token) {
} }
// 获取验证图片 以及token // 获取验证图片 以及token
export function getCaptcha (data) { export function getCaptcha(data) {
return axios({ return axios({
url: '/captcha/get', url: '/captcha/get',
method: 'post', method: 'post',
@ -58,10 +58,33 @@ export function getCaptcha (data) {
} }
// 滑动或者点选验证 // 滑动或者点选验证
export function captchaCheck (data) { export function captchaCheck(data) {
return axios({ return axios({
url: '/captcha/check', url: '/captcha/check',
method: 'post', method: 'post',
data data
}) })
} }
/**
* 获取扫描登录二维码
* @returns {AxiosPromise}
*/
export function qrCode() {
return axios({
url: '/wxscan/get',
method: 'post'
})
}
/**
* 检测是否扫码登录
* @param unique
* @returns {AxiosPromise}
*/
export function loginByCode(unique) {
return axios({
url: '/wxscan/isLogin/' + unique,
method: 'get'
})
}

View File

@ -14,8 +14,14 @@ export const defaultRouterMap = [
export const constantRouterMap = [ export const constantRouterMap = [
{ {
path: '/', path: '/',
name: 'index',
redirect: '/dashboard/Analysis' // 默认首页 redirect: '/dashboard/Analysis' // 默认首页
}, },
{
path: '/user/loginCode',
name: 'loginCode',
component: () => import(/* webpackChunkName: "user" */ '@/views/user/LoginCode')
},
{ {
path: '/user', path: '/user',
component: UserLayout, component: UserLayout,

View File

@ -10,8 +10,9 @@ import { i18nRender } from '@/locales'
NProgress.configure({ showSpinner: false }) // NProgress Configuration NProgress.configure({ showSpinner: false }) // NProgress Configuration
const allowList = ['login', 'register', 'registerResult', 'chart'] // no redirect allowList const allowList = ['login', 'loginCode', 'register', 'registerResult', 'chart'] // no redirect allowList
const loginRoutePath = '/user/login' // const loginRoutePath = '/user/login'
const loginRoutePath = '/user/loginCode'
const defaultRoutePath = '/dashboard/Analysis' // 登录跳转 const defaultRoutePath = '/dashboard/Analysis' // 登录跳转

View File

@ -71,8 +71,9 @@
<a-col :span='18'> <a-col :span='18'>
<a-card title='会议日历' bodyStyle='height: 780px'> <a-card title='会议日历' bodyStyle='height: 780px'>
<a-calendar :header-render='headerRender' @select="onSelect"> <a-calendar :header-render='headerRender' @select="onSelect">
<ul slot='dateCellRender' slot-scope='value' class='c_meeting' style='padding: 0'> <ul slot='dateCellRender' slot-scope='value' class='c_meeting' style='padding: 0;text-align: center; font-size: 24px;font-weight: 700; margin-top: 10px'>
<a-popover @click.stop='return false' :title='item.title' v-for='item in getListData(value)'> {{getListData(value).length == 0 ? '' : getListData(value).length}}
<a-popover style='display: none' @click.stop='showMeeting(item.id)' :title='item.title' v-for='item in getListData(value)'>
<template slot='content'> <template slot='content'>
<div>预约部门{{ item.org }}</div> <div>预约部门{{ item.org }}</div>
<div>会议时间{{ item.time }}</div> <div>会议时间{{ item.time }}</div>
@ -181,6 +182,7 @@
</a-card> </a-card>
</a-col> </a-col>
</a-row> </a-row>
<RoomOrderDetail-modal ref='detailModal' />
</div> </div>
</template> </template>
<style> <style>
@ -230,6 +232,7 @@
import * as echarts from 'echarts' import * as echarts from 'echarts'
import moment from 'moment' import moment from 'moment'
import { STable } from '@/components' import { STable } from '@/components'
import RoomOrderDetailModal from '@/views/admin/meeting/modules/RoomOrderDetailModal.vue'
import { import {
getNum, getNum,
@ -239,10 +242,10 @@ import {
getChartData getChartData
} from '@/api/admin/meeting/count' } from '@/api/admin/meeting/count'
export default { export default {
name: 'MeetingCount', name: 'MeetingCount',
components: { components: {
RoomOrderDetailModal,
STable STable
}, },
data() { data() {
@ -428,6 +431,9 @@ export default {
this.nowMonthEnd = dateStringArr[1] this.nowMonthEnd = dateStringArr[1]
this.getChartCount() this.getChartCount()
}, },
showMeeting(rId) {
this.$refs.detailModal.show(rId)
},
/** /**
* 获取统计图数据 * 获取统计图数据
*/ */
@ -444,6 +450,10 @@ export default {
let chartUse = echarts.init(document.getElementById('chartUse')) let chartUse = echarts.init(document.getElementById('chartUse'))
let useData = data.roomRank let useData = data.roomRank
let chartUseOp = { let chartUseOp = {
tooltip: {
trigger: 'item',
formatter: '{b}<br />会议场次 : {c} 次'
},
yAxis: { yAxis: {
type: 'category', type: 'category',
data: useData.y data: useData.y
@ -596,6 +606,10 @@ export default {
let chartDep = echarts.init(document.getElementById('chartDep')) let chartDep = echarts.init(document.getElementById('chartDep'))
let depData = data.orgMeeting let depData = data.orgMeeting
let chartDepOp = { let chartDepOp = {
tooltip: {
trigger: 'item',
formatter: '{b}<br />会议场次 : {c} 次'
},
xAxis: { xAxis: {
type: 'category', type: 'category',
data: depData.x data: depData.x
@ -630,6 +644,10 @@ export default {
let chartMeeting = echarts.init(document.getElementById('chartMeeting')) let chartMeeting = echarts.init(document.getElementById('chartMeeting'))
let meetingData = data.everyDay let meetingData = data.everyDay
let chartMeetingOp = { let chartMeetingOp = {
tooltip: {
trigger: 'item',
formatter: '{b}<br />会议场次 : {c} 次'
},
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,

View File

@ -33,6 +33,20 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='会议室'>
<a-select v-model='queryParam.name' show-search>
<a-select-option value=''>
所有会议室
</a-select-option>
<a-select-opt-group v-for='item in roomList' :label="item.name">
<a-select-option v-for='room in item.list' :value='room.name'>
{{room.name}}
</a-select-option>
</a-select-opt-group>
</a-select>
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'> <a-col :md='5' :sm='15'>
<a-form-item label='会议名称'> <a-form-item label='会议名称'>
<a-input placeholder='请输入会议名称' v-model='queryParam.title' /> <a-input placeholder='请输入会议名称' v-model='queryParam.title' />
@ -63,6 +77,18 @@
<a-date-picker v-model='queryParam.chooseDate' @change='res => this.$forceUpdate()' /> <a-date-picker v-model='queryParam.chooseDate' @change='res => this.$forceUpdate()' />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='排序形式'>
<a-select v-model='queryParam.sort'>
<a-select-option value=''>
会议开始时间
</a-select-option>
<a-select-option value='create'>
创建时间
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md='8' :sm='24'> <a-col :md='8' :sm='24'>
<span class='table-page-search-submitButtons'> <span class='table-page-search-submitButtons'>
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button> <a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
@ -71,7 +97,6 @@
@click='exportOrderList'>导出会议日程</a-button> @click='exportOrderList'>导出会议日程</a-button>
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px' <a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
@click='exportMonthOrder'>导出月度汇总</a-button> @click='exportMonthOrder'>导出月度汇总</a-button>
</span> </span>
</a-col> </a-col>
</a-row> </a-row>
@ -168,7 +193,7 @@ import {
cancelOrder, cancelOrder,
approveOrder, approveOrder,
expMRByDate, expMRByDate,
expMRByMonth expMRByMonth, getAllRoom
} from '@/api/admin/meeting/meetingReservation' } from '@/api/admin/meeting/meetingReservation'
import { checkPermission } from '@/utils/permissions' import { checkPermission } from '@/utils/permissions'
@ -202,7 +227,9 @@ export default {
advanced: false, advanced: false,
// //
queryParam: { queryParam: {
status: '' status: '',
sort: '',
name: ''
}, },
// //
columns: [ columns: [
@ -348,6 +375,7 @@ export default {
showRejectReason: false, showRejectReason: false,
rejectReason: '', rejectReason: '',
rejectId: '', rejectId: '',
roomList: [],
isAdmin: checkPermission('meeting:admin') isAdmin: checkPermission('meeting:admin')
} }
}, },
@ -374,7 +402,7 @@ export default {
this.$router.replace({ query }) this.$router.replace({ query })
}, },
mounted() { mounted() {
this.getAllRoomList()
}, },
methods: { methods: {
reset() { reset() {
@ -553,7 +581,33 @@ export default {
document.body.appendChild(link) document.body.appendChild(link)
link.click() link.click()
document.body.removeChild(link) document.body.removeChild(link)
} },
getAllRoomList() {
let param = {
min: 1, //
max: 1000, //
timeFormat: 1,
mrdate: moment().format('YYYY-MM-DD')
}
getAllRoom(param).then(res => {
const roomArr = {}
const valueObj = res.data
// eslint-disable-next-line no-unused-vars
for (const key in valueObj) {
const eachObj = valueObj[key]
if (eachObj['floorId'] in roomArr) {
} else {
roomArr[eachObj['floorId']] = {
name: eachObj['floor'],
list: []
}
}
roomArr[eachObj['floorId']]['list'].push(eachObj)
}
this.roomList = roomArr
console.log(this.roomList)
})
},
}, },
watch: { watch: {
/* /*

View File

@ -81,7 +81,7 @@
<a-col :span='10'> <a-col :span='10'>
<a-form-item label='参会领导' :labelCol='labelCol' :wrapperCol='wrapperCol'> <a-form-item label='参会领导' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder='参会领导' <a-input placeholder='参会领导'
v-decorator="['leader',{rules: [{ required: true, message: '输入参会领导' }]}]" /> v-decorator="['leader']" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span='10'> <a-col :span='10'>

View File

@ -0,0 +1,70 @@
<template>
<div class='main' style='text-align: center'>
<vue-qr
:text="loginUrl"
:size="250"
></vue-qr>
</div>
</template>
<script>
// eslint-disable-next-line no-unused-vars
import md5 from 'md5'
// eslint-disable-next-line no-unused-vars
import { loginByCode, qrCode } from '@/api/login'
import storage from 'store'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { timeFix } from '@/utils/util'
import VueQr from "vue-qr"
export default {
components: {
VueQr
},
data() {
return {
loginUrl: '',
unique: '',
isLogin: false
}
},
created() {
},
mounted() {
this.getLoginUrl()
},
beforeDestroy() {
clearInterval(this.intervalId)
},
methods: {
getLoginUrl() {
qrCode().then(res => {
if (res.code === 0) {
this.loginUrl = res.url
this.unique = res.unique
this.intervalId = setInterval(this.checkLogin, 1000)
} else {
this.$message.error(res.msg)
}
})
},
checkLogin() {
loginByCode(this.unique).then(res => {
if (res.code == 0) {
//
clearInterval(this.intervalId)
console.log('登录成功!')
storage.set(ACCESS_TOKEN, res.token, 14 * 24 * 60 * 60 * 1000) // 14
this.$router.push({ name: 'index' }, () => { //
this.$notification.success({
message: '欢迎',
description: `${timeFix()},欢迎回来`
})
})
}
})
}
}
}
</script>

View File

@ -3730,6 +3730,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
brace-expansion@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
dependencies:
balanced-match "^1.0.0"
braces@^2.3.1, braces@^2.3.2: braces@^2.3.1, braces@^2.3.2:
version "2.3.2" version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
@ -5214,6 +5221,13 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
dependencies:
mimic-response "^3.1.0"
deep-equal@^1.0.1, deep-equal@~1.0.1: deep-equal@^1.0.1, deep-equal@~1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@ -6696,6 +6710,17 @@ glob@^7.1.4:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^8.0.1:
version "8.1.0"
resolved "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^5.0.1"
once "^1.3.0"
globals@^11.1.0, globals@^11.7.0: globals@^11.1.0, globals@^11.7.0:
version "11.11.0" version "11.11.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
@ -8143,6 +8168,11 @@ js-beautify@^1.6.12, js-beautify@^1.6.14:
mkdirp "~0.5.0" mkdirp "~0.5.0"
nopt "~4.0.1" nopt "~4.0.1"
js-binary-schema-parser@^2.0.2:
version "2.0.3"
resolved "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz#3d7848748e8586e63b34e8911b643f59cfb6396e"
integrity sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==
js-cookie@^2.2.0: js-cookie@^2.2.0:
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.0.tgz#1b2c279a6eece380a12168b92485265b35b1effb" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.0.tgz#1b2c279a6eece380a12168b92485265b35b1effb"
@ -8889,6 +8919,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
mini-css-extract-plugin@^0.9.0: mini-css-extract-plugin@^0.9.0:
version "0.9.0" version "0.9.0"
resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz?cache=0&sync_timestamp=1576856580721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz?cache=0&sync_timestamp=1576856580721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e"
@ -8916,6 +8951,13 @@ minimatch@^3.0.4:
dependencies: dependencies:
brace-expansion "^1.1.7" brace-expansion "^1.1.7"
minimatch@^5.0.1:
version "5.1.6"
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
minimist@0.0.8: minimist@0.0.8:
version "0.0.8" version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
@ -9767,6 +9809,11 @@ parent-module@^1.0.0:
dependencies: dependencies:
callsites "^3.0.0" callsites "^3.0.0"
parenthesis@^3.1.5:
version "3.1.8"
resolved "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz#3457fccb8f05db27572b841dad9d2630b912f125"
integrity sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==
parse-asn1@^5.0.0: parse-asn1@^5.0.0:
version "5.1.4" version "5.1.4"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
@ -11491,6 +11538,20 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^4.0.1:
version "4.0.1"
resolved "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
dependencies:
decompress-response "^6.0.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-statistics@~6.1.0: simple-statistics@~6.1.0:
version "6.1.1" version "6.1.1"
resolved "https://registry.yarnpkg.com/simple-statistics/-/simple-statistics-6.1.1.tgz#e3a0799ffc49914d6f421c5a4ac585f6a13e2bad" resolved "https://registry.yarnpkg.com/simple-statistics/-/simple-statistics-6.1.1.tgz#e3a0799ffc49914d6f421c5a4ac585f6a13e2bad"
@ -11842,6 +11903,13 @@ string-length@^3.1.0:
astral-regex "^1.0.0" astral-regex "^1.0.0"
strip-ansi "^5.2.0" strip-ansi "^5.2.0"
string-split-by@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz#53895fb3397ebc60adab1f1e3a131f5372586812"
integrity sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==
dependencies:
parenthesis "^3.1.5"
string-width@^1.0.1: string-width@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@ -12812,6 +12880,16 @@ vue-loader@^15.8.3:
vue-hot-reload-api "^2.3.0" vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0" vue-style-loader "^4.1.0"
vue-qr@^4.0.9:
version "4.0.9"
resolved "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz#6cb965dd0c5a0dff947e6ef582ef149b0780b986"
integrity sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==
dependencies:
glob "^8.0.1"
js-binary-schema-parser "^2.0.2"
simple-get "^4.0.1"
string-split-by "^1.0.0"
vue-quill-editor@^3.0.6: vue-quill-editor@^3.0.6:
version "3.0.6" version "3.0.6"
resolved "https://registry.npm.taobao.org/vue-quill-editor/download/vue-quill-editor-3.0.6.tgz#1f85646211d68a31a80a72cb7f45bb2f119bc8fb" resolved "https://registry.npm.taobao.org/vue-quill-editor/download/vue-quill-editor-3.0.6.tgz#1f85646211d68a31a80a72cb7f45bb2f119bc8fb"