Commit 22a35444 authored by 张俊's avatar 张俊
parents d983f8bc fb30ee62
...@@ -37,7 +37,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 ...@@ -37,7 +37,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
image: registry.cn-qingdao.aliyuncs.com/wod/devops-node:16.16.0-slim image: registry.cn-qingdao.aliyuncs.com/wod/devops-node:16.16.0-slim
# 将宿主机中文件夹挂载到容器中,宿主机文件夹中的文件会被容器访问并修改,起到使用缓存的作用,避免每次运行都要重现下载依赖,提高运行速度 # 将宿主机中文件夹挂载到容器中,宿主机文件夹中的文件会被容器访问并修改,起到使用缓存的作用,避免每次运行都要重现下载依赖,提高运行速度
commands: commands:
# - yarn - yarn
- export NODE_ENV=production - export NODE_ENV=production
- yarn build - yarn build
...@@ -65,7 +65,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 ...@@ -65,7 +65,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5 # 基础镜像,根据项目需求进行使用,如果第三方登录改成ui-base base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5 # 基础镜像,根据项目需求进行使用,如果第三方登录改成ui-base
dockerfile: .beagle/dockerfile dockerfile: .beagle/dockerfile
repo: wod/apaas-system-ui # 生成镜像的 分组/名称 repo: wod/apaas-system-ui # 生成镜像的 分组/名称
version: "5.0.4" # 版本号 version: "5.0.5" # 版本号
channel: alpha # 后缀 example: alpha test fix-alpha fix等 channel: alpha # 后缀 example: alpha test fix-alpha fix等
args: "TARGETOS=linux,TARGETARCH=amd64" # 不同架构的构建参数 args: "TARGETOS=linux,TARGETARCH=amd64" # 不同架构的构建参数
registry: registry.cn-qingdao.aliyuncs.com # 私有仓库地址 registry: registry.cn-qingdao.aliyuncs.com # 私有仓库地址
...@@ -80,7 +80,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 ...@@ -80,7 +80,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
namespace: apaas-v5 namespace: apaas-v5
deployment: apaas-manage-ui deployment: apaas-manage-ui
container: apaas-manage-ui container: apaas-manage-ui
image: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.4-alpha image: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.5-alpha
environment: environment:
KUBERNETES_SERVER: KUBERNETES_SERVER:
from_secret: KUBERNETES_SERVER from_secret: KUBERNETES_SERVER
...@@ -96,7 +96,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 ...@@ -96,7 +96,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-arm64 base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-arm64
dockerfile: .beagle/dockerfile dockerfile: .beagle/dockerfile
repo: wod/apaas-system-ui repo: wod/apaas-system-ui
version: "5.0.4" version: "5.0.5"
channel: alpha-arm64 channel: alpha-arm64
args: "TARGETOS=linux,TARGETARCH=arm64" args: "TARGETOS=linux,TARGETARCH=arm64"
registry: registry.cn-qingdao.aliyuncs.com registry: registry.cn-qingdao.aliyuncs.com
...@@ -134,8 +134,8 @@ steps: ...@@ -134,8 +134,8 @@ steps:
REGISTRY_PASSWORD: REGISTRY_PASSWORD:
from_secret: REGISTRY_PASSWORD_ALIYUN from_secret: REGISTRY_PASSWORD_ALIYUN
settings: settings:
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.4-alpha source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.5-alpha
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.4 target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.5
registry: registry.cn-qingdao.aliyuncs.com registry: registry.cn-qingdao.aliyuncs.com
- name: harbor-arm64 - name: harbor-arm64
...@@ -152,8 +152,8 @@ steps: ...@@ -152,8 +152,8 @@ steps:
REGISTRY_PASSWORD: REGISTRY_PASSWORD:
from_secret: REGISTRY_PASSWORD_ALIYUN from_secret: REGISTRY_PASSWORD_ALIYUN
settings: settings:
source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.4-alpha-arm64 source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.5-alpha-arm64
target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.4-arm64 target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.5-arm64
registry: registry.cn-qingdao.aliyuncs.com registry: registry.cn-qingdao.aliyuncs.com
##--------------对于需要保密的信息隐藏,减少账户信息的泄密⬇-----------------## ##--------------对于需要保密的信息隐藏,减少账户信息的泄密⬇-----------------##
--- ---
......
<template> <template>
<div id="app"> <div id="app" @click="readFlag = false">
<el-config-provider> <el-config-provider>
<bg-menu :path="nowParent.path" v-if="menuShow"></bg-menu> <bg-menu :path="nowParent.path" v-if="menuShow" @openMsg="openMsg"></bg-menu>
<div class="container" :class="menuShow ? '' : 'full_screen'" v-if="pageShow"> <div class="container" :class="menuShow ? '' : 'full_screen'" v-if="pageShow">
<!-- <bg-nav :highlightParentRule="highlightParentRule" :title="nowParent.menuName" width="208px" :list="nowParent.children" v-show="navShow" class="con-nav" /> --> <!-- <bg-nav :highlightParentRule="highlightParentRule" :title="nowParent.menuName" width="208px" :list="nowParent.children" v-show="navShow" class="con-nav" /> -->
<bg-nav :highlightParentRule="highlightParentRule" width="208px" :list="nowParent.children" v-show="navShow" class="con-nav" /> <bg-nav :highlightParentRule="highlightParentRule" width="208px" :list="nowParent.children" v-show="navShow" class="con-nav" />
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
<page404></page404> <page404></page404>
</div> </div>
</div> </div>
<msg v-model="readFlag" v-show="readFlag"></msg>
</el-config-provider> </el-config-provider>
</div> </div>
</template> </template>
...@@ -77,6 +78,12 @@ export default { ...@@ -77,6 +78,12 @@ export default {
watch:{ watch:{
msgBoxFlag(n,o){ msgBoxFlag(n,o){
this.readFlag = !this.readFlag this.readFlag = !this.readFlag
},
userInfo: {
handler() {
this.initMsg()
},
deep: true,
} }
}, },
data(){ data(){
...@@ -86,9 +93,27 @@ export default { ...@@ -86,9 +93,27 @@ export default {
} }
}, },
created(){ created(){
this.initMsg()
},
mounted() {
}, },
methods:{ methods:{
openMsg(data) {
this.readFlag = !this.readFlag;
},
initMsg() {
if(this.userInfo && this.userInfo.system_id) {
this.$trace.setOptionValue('userId',this.userInfo.system_id)
// this.$trace.setOptionValue('userType',this.userInfo.userType)
// this.$trace.setOptionValue('roleId',this.userInfo.roleIds.join(','))
this.$trace.setOptionValue('organization',this.userInfo.organization_id)
}
},
handleClose() {
if(this.readFlag) {
this.readFlag = false;
}
},
pathToData(data,path){ pathToData(data,path){
let arr = path.split('.') let arr = path.split('.')
......
...@@ -286,6 +286,9 @@ div { ...@@ -286,6 +286,9 @@ div {
.dialog_box .el-dialog__footer { .dialog_box .el-dialog__footer {
padding: 16px; padding: 16px;
} }
.dialog_box1 .el-dialog__body {
padding: 16px;
}
/* 设置tab切换的样式 */ /* 设置tab切换的样式 */
.el-tabs__item.is-disabled { .el-tabs__item.is-disabled {
color: #8890a7 !important; color: #8890a7 !important;
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
> >
<!-- LOGO --> <!-- LOGO -->
<div @click="gotoPage" class="bg-logo"> <router-link to="/" class="bg-logo">
<img style="width:140px;height:22px;" src="../assets/imgs/img_logo.png"/> <img style="width:140px;height:22px;" src="../assets/imgs/img_logo.png"/>
</div> </router-link>
<!-- 菜单 --> <!-- 菜单 -->
<div class="main-menu" v-if="userInfo&& userInfo.system_id"> <div class="main-menu" v-if="userInfo&& userInfo.system_id">
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<div class="nav-item" :style="path==item.path?{backgroundColor:'#3753a4'}:''" v-show="item.menuType!==2" v-for="(item,index) in fontMenu" :key="'font'+index"> <div class="nav-item" :style="path==item.path?{backgroundColor:'#3753a4'}:''" v-show="item.menuType!==2" v-for="(item,index) in fontMenu" :key="'font'+index">
<span @click="menuAction(item.path,item)"> <span @click="menuAction(item.path,item)">
{{item.menuName}} {{item.menuName}}
<bg-icon v-if="item.children&&item.children.length" icon="#bg-ic-arrow-down" style="font-size:8px;margin-left: 3px;"></bg-icon> <bg-icon v-if="item.children&&item.children.length&&item.menuType!==1" icon="#bg-ic-arrow-down" style="font-size:8px;margin-left: 3px;"></bg-icon>
</span> </span>
<div class="menu-virtual"></div> <div class="menu-virtual"></div>
<div class="menu-list" v-if="item.children&&item.children.length"> <div class="menu-list" v-if="item.children&&item.children.length">
...@@ -45,7 +45,29 @@ ...@@ -45,7 +45,29 @@
<div class="person-menu" v-if="userInfo&& userInfo.system_id"> <div class="person-menu" v-if="userInfo&& userInfo.system_id">
<!-- 信息 --> <!-- 信息 -->
<div class="nav-item" @click.stop="openMsg">
<el-tooltip
class="box-item"
effect="light"
content="消息"
placement="bottom"
>
<bg-icon icon="#bg-ic-mail" style="font-size: 17px;"></bg-icon>
</el-tooltip>
<div class="message">{{msgUnreadNum}}</div>
</div>
<!-- 购物车 --> <!-- 购物车 -->
<div class="nav-item">
<el-tooltip
class="box-item"
effect="light"
content="我的订阅"
placement="bottom"
>
<bg-icon icon="#bg-ic-rss" style="font-size: 18px;"></bg-icon>
</el-tooltip>
<div class="message">123</div>
</div>
<!-- 用户中心 --> <!-- 用户中心 -->
<div class="user-center nav-item"> <div class="user-center nav-item">
<span class="user-icon"> <span class="user-icon">
...@@ -92,7 +114,7 @@ export default { ...@@ -92,7 +114,7 @@ export default {
path:{ path:{
type:String, type:String,
default:'' default:''
} },
}, },
data() { data() {
return { return {
...@@ -105,6 +127,9 @@ export default { ...@@ -105,6 +127,9 @@ export default {
}; };
}, },
computed: { computed: {
msgUnreadNum(){
return this.$store.state.msgUnreadNum
},
nameFlag(){ nameFlag(){
return this.$store.state.nameFlag return this.$store.state.nameFlag
}, },
...@@ -139,7 +164,14 @@ export default { ...@@ -139,7 +164,14 @@ export default {
let temp = [] let temp = []
// state.menu.forEach(e => { // state.menu.forEach(e => {
// if(e.dict_group_id=='64c156e0-bfff-4bfc-a63a-56effe130a25'){//system // if(e.dict_group_id=='64c156e0-bfff-4bfc-a63a-56effe130a25'){//system
// temp.push(e)
// // 暂时处理运营管控中心-调用日志,后期规划位置后修改
// if (e.menuName !== '运营看板') {
// temp.push(e)
// }
// // temp.push(e)
// } // }
// }); // });
return temp return temp
...@@ -168,13 +200,13 @@ export default { ...@@ -168,13 +200,13 @@ export default {
// }, // },
}, },
methods: { methods: {
openMsg() {
this.$emit('openMsg',true)
},
...mapMutations(["setCartNum"]), ...mapMutations(["setCartNum"]),
navAction(path) { navAction(path) {
this.$router.push(path); this.$router.push(path);
}, },
gotoPage(){
window.open('/apaas/portal/ui/#/','_blank')
},
changezz(item){ changezz(item){
this.$trace.setOptionValue('appID',item.value) this.$trace.setOptionValue('appID',item.value)
}, },
...@@ -214,7 +246,7 @@ export default { ...@@ -214,7 +246,7 @@ export default {
//是否有子路由,有则寻找子路由的第一个进行跳转,无则直接进行跳转 //是否有子路由,有则寻找子路由的第一个进行跳转,无则直接进行跳转
//使用childMenuAction是模拟template中,子路径点击跳转使用childMenuAction, //使用childMenuAction是模拟template中,子路径点击跳转使用childMenuAction,
//防止出现层级错误的问题 //防止出现层级错误的问题
if(parent.children&&parent.children.length){ if(parent.children&&parent.children.length&&parent.menuType!==1){
this.childMenuAction(parent.children[0],parent) this.childMenuAction(parent.children[0],parent)
}else{ }else{
this.pathToUrl(n,parent) this.pathToUrl(n,parent)
...@@ -476,9 +508,11 @@ export default { ...@@ -476,9 +508,11 @@ export default {
.font-menu{ .font-menu{
height: 100%; height: 100%;
display: flex;
} }
.manager-menu{ .manager-menu{
height: 100%; height: 100%;
display: flex;
} }
.nav-item { .nav-item {
...@@ -646,16 +680,32 @@ export default { ...@@ -646,16 +680,32 @@ export default {
height: 100%; height: 100%;
padding-left: 32px; padding-left: 32px;
position: inherit; position: inherit;
display: flex;
align-items: center;
column-gap: 35px;
// &::before{ &::before{
// content:''; content:'';
// width: 1px; width: 1px;
// height: 24px; height: 24px;
// background-color: #5c6da4; background-color: #5c6da4;
// position: absolute; position: absolute;
// left: 0; left: 0;
// top: 16px; top: 16px;
// } }
.message{
height: 16px;
line-height: 16px;
background-color: #d14731;
border-radius: 8px;
padding: 0 6px;
font-size: 12px;
color: #ffffff;
position: absolute;
top: -8px;
left: 12px;
}
} }
// 用户中心 // 用户中心
.user-center { .user-center {
......
...@@ -9,8 +9,8 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue' ...@@ -9,8 +9,8 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import bgui from "@/bg-ui"; import bgui from "@/bg-ui";
import "@/bg-ui/index.scss"; import "@/bg-ui/index.scss";
import msgSdk from './msg-sdk/index.js';
console.log(bgui,"-=-=-=-=-=-=-=-=-=")
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
...@@ -30,6 +30,24 @@ import axios from './request/http.js' ...@@ -30,6 +30,24 @@ import axios from './request/http.js'
const createVue = createApp(App) const createVue = createApp(App)
createVue.use(ElementPlus, { locale }); createVue.use(ElementPlus, { locale });
function getMsgAppid() {
axios.get(`/apaas/system/v5/message/account`).then(res => {
if (res.data.code == 200) {
createVue.use(msgSdk, {
requestUrl: 'https://msg.wodcloud.com', // 请求地址
appID: decodeURIComponent(escape(window.atob(res.data.data.app_id))), // 应用id
secretKey: decodeURIComponent(escape(window.atob(res.data.data.secret_key))), // 应用密钥
userId: '',
userType: '',
roleId: '',
organization: '',
})
}
})
}
getMsgAppid()
for (const [key, component] of Object.entries(ElementPlusIconsVue)) { for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
createVue.component(key, component) createVue.component(key, component)
} }
......
import msg from './lib/msg.vue'
let option = null
const setAppID = (appID)=>{
option.appID = appID
}
const setSecretKey = (secretKey)=>{
option.secretKey = secretKey
}
const setRequestUrl = (requestUrl)=>{
option.requestUrl = requestUrl
}
const setOptionValue = (opt,val)=>{
option[opt] = val
}
const methods = {
setAppID,
setSecretKey,
setRequestUrl,
setOptionValue,
}
const init = (options = {}) => {
const _options = {
requestUrl: '', // 请求地址
appID: '', // 应用id
secretKey: '', // 应用密钥
userId:'',
userType:'',
roleId:'',
organization:'',
};
// 将传过来的参数转换
transitionOptions(_options, options);
option = _options
}
const transitionOptions = (_options, options) => {
const {
requestUrl,
appID,
secretKey,
userId,
userType,
roleId,
organization,
} = options;
if (!requestUrl) throw Error('请传入requestUrl参数');
if (!appID) throw Error('请传入appID参数');
// if (!secretKey) throw Error('secretKey');
_options.requestUrl = requestUrl;
_options.appID = appID;
_options.secretKey = secretKey;
_options.userId = userId;
_options.userType = userType;
_options.roleId = roleId;
_options.organization = organization;
}
const install = (Vue, options = {}) => {
console.log("执行以下")
init(options);
if (Vue.prototype) {
Vue.prototype.$trace = { ...methods,option };
} else {
Vue.config.globalProperties.$trace = { ...methods,option };
}
Vue.component('msg', msg);
}
if (typeof window !== "undefined" && window.Vue) {
install(window.Vue);
}
export default {
install,
init,
...methods
};
export { install, init, methods };
\ No newline at end of file
<template>
<div class="out-detail">
<div class="row-box" v-for="(item,index) in list" :style="{width:item.width}" :key="'row-box'+index">
<p class="detail-module" v-if="!item.slot">
<span :style="{width:itemWidth}">{{item.label}}</span>
<span class="text_clip" :title="item.value" v-if="!item.childSlot">{{item.value}}</span>
<span v-else>
<slot :name="item.childSlot" :data="item"></slot>
</span>
</p>
<template v-else>
<slot :name="item.slot" :data="item"></slot>
</template>
</div>
</div>
</template>
<script>
export default {
props: {
list:{
type:Array,
default:()=>[]
},
itemWidth:{
type:String,
default:''
}
},
components: {
},
data() {
return {
};
},
watch: {
},
computed: {
},
created() {
},
mounted() {
},
methods: {
},
};
</script>
<style scoped>
.out-detail{
width: 100%;
overflow: hidden;
display: flex;
flex-wrap: wrap;
border-right: solid 1px #dadee7;
border-bottom: solid 1px #dadee7;
}
.row-box{
width: 50%;
flex-grow:1;
text-align: left;
line-height: 48px;
min-height: 48px;
border-left: solid 1px #dadee7;
border-top: solid 1px #dadee7;
font-size: 14px;
color: #404a62;
}
.row-box .detail-module{
height: 100%;
display: flex;
}
.row-box .detail-module span{
height: 100%;
display: inline-block;
padding-left: 15px;
box-sizing: border-box;
}
.row-box .detail-module span:nth-of-type(1){
background-color: #f7f7f9;
min-width: 114px;
border-right: solid 1px #dadee7;
}
.row-box .detail-module span:nth-of-type(2){
flex-grow:1;
}
</style>
This diff is collapsed.
<template>
<div :ref="ref" class="msg-container-bdx1">
<p class="msg-title-xxb1">
<img src="../img/ic_tips.png" alt="">
{{title}}
<i @click="close('msg-short-log')" class="el-icon-close"></i>
</p>
<div class="msg-tips-xxb1">
<div class="msg-text-xxb1">
{{text}}
</div>
<p class="detail-xxb1" @click="aas">查看详情</p>
<p class="msg-time-info-xxb1"><span>{{time}}</span> <span>{{source}}</span></p>
</div>
</div>
</template>
<script>
export default {
props: {
},
components: {
},
data() {
return {
title:'',
text:'',
time:'',
source:'',
ref:''
};
},
watch: {
},
computed: {
},
created() {
},
mounted() {
console.log(ref,right);
appendToBody(this.ref,'20px')
},
methods: {
appendToBody(ref,right){
console.log(ref,right);
if(right){
this.$refs[ref].style.right = right
}
},
},
};
</script>
<style scoped>
.msg-container-bdx1{
width: 400px;
background-color: #ffffff;
box-shadow: 0px 4px 12px 0px
rgba(18, 30, 63, 0.1);
border-radius: 4px;
border: solid 1px #e6e9ef;
padding: 17px;
position: fixed;
z-index: 9999;
top: 100px;
right: -500px;
transition: all 0.5s;
}
.el-icon-close{
float: right;
cursor: pointer;
}
.msg-title-xxb1{
font-size: 16px;
font-weight: 600;
color: #202531;
margin-bottom: 10px;
}
.msg-title-xxb1 img{
vertical-align: -5px;
margin-right: 12px;
}
.msg-tips-xxb1{
margin-left: 40px;
font-size: 14px;
}
.msg-text-xxb1{
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
line-clamp: 3;
-webkit-line-clamp: 3;
font-size: 14px;
-webkit-box-orient: vertical;
}
.detail-xxb1{
text-align: right;
color: #3759be;
cursor: pointer;
font-size: 14px;
margin: 15px 0;
}
.msg-time-info-xxb1{
display: flex;
justify-content: space-between;
font-size: 14px;
color: #909bb6;
}
</style>
...@@ -305,6 +305,7 @@ const fileAction = (val,data,parent,disabled=false) => { ...@@ -305,6 +305,7 @@ const fileAction = (val,data,parent,disabled=false) => {
state: 1, // 启用状态 state: 1, // 启用状态
menu_url: "", // 路径 menu_url: "", // 路径
menu_logo: "", // 图标 menu_logo: "", // 图标
source: "",
level: data.level, // 当前的level level: data.level, // 当前的level
p_menu_type: parent ? parent.menu_type : 0 // 父级的类型,用于判断菜单下不能建目录 p_menu_type: parent ? parent.menu_type : 0 // 父级的类型,用于判断菜单下不能建目录
} }
...@@ -325,6 +326,7 @@ const fileAction = (val,data,parent,disabled=false) => { ...@@ -325,6 +326,7 @@ const fileAction = (val,data,parent,disabled=false) => {
state: 1, state: 1,
menu_url: "", menu_url: "",
menu_logo: "", menu_logo: "",
source: "",
p_menu_type: data.menu_type, p_menu_type: data.menu_type,
level: data.level + 1 level: data.level + 1
} }
...@@ -443,6 +445,7 @@ const saveMenu = (el,type) => { ...@@ -443,6 +445,7 @@ const saveMenu = (el,type) => {
state: el.menuForm.state, state: el.menuForm.state,
menu_url: el.menuForm.menu_url, menu_url: el.menuForm.menu_url,
menu_logo: el.menuForm.menu_logo, menu_logo: el.menuForm.menu_logo,
source: el.menuForm.menu_type == 0 ? "" : el.menuForm.source,
} }
if (state.selectData.id) { // 编辑 if (state.selectData.id) { // 编辑
axios axios
......
...@@ -90,7 +90,9 @@ ...@@ -90,7 +90,9 @@
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="资源路径" v-if="menuForm.menu_type != 0">
<el-input v-model="menuForm.source" show-word-limit maxlength="200" placeholder="请输入资源路径" />
</el-form-item>
</el-form> </el-form>
</template> </template>
...@@ -117,6 +119,7 @@ const state = reactive({ ...@@ -117,6 +119,7 @@ const state = reactive({
state: 1, state: 1,
menu_url: "", menu_url: "",
menu_logo: "", menu_logo: "",
source: "",
}, },
formRules: { formRules: {
menu_name: [ menu_name: [
......
...@@ -12,6 +12,7 @@ const store = createStore({ ...@@ -12,6 +12,7 @@ const store = createStore({
menuObj:{}, menuObj:{},
treeFlag:false, treeFlag:false,
registerValid:false, registerValid:false,
msgUnreadNum: 0
}, },
getters: { getters: {
count(state) { count(state) {
...@@ -45,7 +46,10 @@ const store = createStore({ ...@@ -45,7 +46,10 @@ const store = createStore({
}, },
setRegisterValid(state,registerValid){ setRegisterValid(state,registerValid){
state.registerValid = registerValid state.registerValid = registerValid
} },
setUnreadNum(state, num) {
state.msgUnreadNum = num
},
}, },
actions: {} actions: {}
}); });
......
...@@ -470,6 +470,11 @@ anymatch@~3.1.2: ...@@ -470,6 +470,11 @@ anymatch@~3.1.2:
normalize-path "^3.0.0" normalize-path "^3.0.0"
picomatch "^2.0.4" picomatch "^2.0.4"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
async-validator@^4.2.5: async-validator@^4.2.5:
version "4.2.5" version "4.2.5"
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz" resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz"
...@@ -599,6 +604,11 @@ element-plus@^2.2.19: ...@@ -599,6 +604,11 @@ element-plus@^2.2.19:
memoize-one "^6.0.0" memoize-one "^6.0.0"
normalize-wheel-es "^1.2.0" normalize-wheel-es "^1.2.0"
entities@~3.0.1:
version "3.0.1"
resolved "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14:
version "0.10.62" version "0.10.62"
resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
...@@ -798,6 +808,11 @@ function-bind@^1.1.1: ...@@ -798,6 +808,11 @@ function-bind@^1.1.1:
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz" resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
github-markdown-css@^5.1.0:
version "5.1.0"
resolved "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz#a96281cd90a8969e3c13b9d3ca6a733a523a00a6"
integrity sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==
glob-parent@~5.1.2: glob-parent@~5.1.2:
version "5.1.2" version "5.1.2"
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
...@@ -895,6 +910,13 @@ is-url@^1.2.4: ...@@ -895,6 +910,13 @@ is-url@^1.2.4:
resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
linkify-it@^4.0.1:
version "4.0.1"
resolved "https://registry.npmmirror.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec"
integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
dependencies:
uc.micro "^1.0.1"
lodash-es@^4.17.21: lodash-es@^4.17.21:
version "4.17.21" version "4.17.21"
resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz" resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz"
...@@ -952,6 +974,22 @@ magic-string@^0.25.7: ...@@ -952,6 +974,22 @@ magic-string@^0.25.7:
dependencies: dependencies:
sourcemap-codec "^1.4.8" sourcemap-codec "^1.4.8"
markdown-it@^13.0.1:
version "13.0.1"
resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
dependencies:
argparse "^2.0.1"
entities "~3.0.1"
linkify-it "^4.0.1"
mdurl "^1.0.1"
uc.micro "^1.0.5"
mdurl@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
memoize-one@^6.0.0: memoize-one@^6.0.0:
version "6.0.0" version "6.0.0"
resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz" resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz"
...@@ -1162,6 +1200,11 @@ type@^2.5.0: ...@@ -1162,6 +1200,11 @@ type@^2.5.0:
resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"
resolved "https://registry.npmmirror.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
utrie@^1.0.2: utrie@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
......
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