Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	admin/src/views/channel/weapp.vue
This commit is contained in:
zhangml
2022-09-16 13:38:04 +08:00
20 changed files with 208 additions and 102 deletions

View File

@@ -49,13 +49,18 @@
:disabled="disabled"
@focus="handleFocus"
@blur="handleBlur"
clearable
>
<template #prepend>
<div class="flex items-center" v-if="modelValue">
<icon class="mr-1" :key="modelValue" :name="modelValue" :size="16" />
<overflow-tooltip class="flex-1 w-20" :content="modelValue">
{{ modelValue }}
</overflow-tooltip>
<el-tooltip class="flex-1 w-20" :content="modelValue" placement="top">
<icon
class="mr-1"
:key="modelValue"
:name="modelValue"
:size="16"
/>
</el-tooltip>
</div>
<template v-else></template>

View File

@@ -20,7 +20,7 @@ export function useCate(type: number) {
const cateLists = ref<any[]>([])
// 选中的分组id
const cateId = ref('')
const cateId = ref<number | string>('')
// 获取分组列表
const getCateLists = async () => {
@@ -39,6 +39,9 @@ export function useCate(type: number) {
]
cateLists.value = data
cateLists.value.unshift(...item)
setTimeout(() => {
treeRef.value?.setCurrentKey(cateId.value)
}, 0)
}
// 添加分组
@@ -66,6 +69,7 @@ export function useCate(type: number) {
const handleDeleteCate = async (id: number) => {
await feedback.confirm('确定要删除?')
await fileCateDelete({ id })
cateId.value = ''
getCateLists()
}
@@ -87,7 +91,12 @@ export function useCate(type: number) {
}
// 处理文件的钩子函数
export function useFile(cateId: Ref<string>, type: Ref<number>, limit: Ref<number>, size: number) {
export function useFile(
cateId: Ref<string | number>,
type: Ref<number>,
limit: Ref<number>,
size: number
) {
const tableRef = shallowRef()
const listShowType = ref('normal')
const moveId = ref(0)

View File

@@ -0,0 +1,28 @@
/**
* perm 操作权限处理
* 指令用法:
* <el-button v-perms="['auth.menu/edit']">编辑</el-button>
*/
import feedback from '@/utils/feedback'
import useClipboard from 'vue-clipboard3'
const clipboard = 'data-clipboard-text'
export default {
mounted: (el: HTMLElement, binding: any) => {
el.setAttribute(clipboard, binding.value)
const { toClipboard } = useClipboard()
el.onclick = () => {
toClipboard(el.getAttribute(clipboard)!)
.then(() => {
feedback.msgSuccess('复制成功')
})
.catch(() => {
feedback.msgError('复制失败')
})
}
},
updated: (el: HTMLElement, binding: any) => {
el.setAttribute(clipboard, binding.value)
}
}

View File

@@ -25,10 +25,6 @@
<el-input v-model="formData.url" placeholder="请输入完整的url" />
</div>
</el-form-item>
<el-form-item label="访问链接">
<div>{{ formData.accessLink }}</div>
<el-button class="ml-4" @click="copy(formData.accessLink)">复制</el-button>
</el-form-item>
</el-form>
</el-card>
<footer-btns v-perms="['channel:h5:save']">
@@ -39,7 +35,6 @@
<script lang="ts" setup>
import { getH5Config, setH5Config } from '@/api/channel/h5'
import feedback from '@/utils/feedback'
import { useClipboard } from '@vueuse/core'
const formData = reactive({
status: 0,
@@ -48,7 +43,6 @@ const formData = reactive({
accessLink: ''
})
const { copy } = useClipboard()
const getDetail = async () => {
const data = await getH5Config()
for (const key in formData) {

View File

@@ -58,7 +58,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.requestDomain" disabled />
</div>
<el-button @click="copyClick(formData.requestDomain)">复制</el-button>
<el-button v-copy="formData.requestDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->服务器域名填写https协议域名
@@ -71,7 +71,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.socketDomain" disabled />
</div>
<el-button @click="copyClick(formData.socketDomain)">复制</el-button>
<el-button v-copy="formData.socketDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->服务器域名填写wss协议域名
@@ -84,7 +84,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.uploadFileDomain" disabled />
</div>
<el-button @click="copyClick(formData.uploadFileDomain)">复制</el-button>
<el-button v-copy="formData.uploadFileDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->服务器域名填写https协议域名
@@ -97,7 +97,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.downloadFileDomain" disabled />
</div>
<el-button @click="copyClick(formData.downloadFileDomain)">复制</el-button>
<el-button v-copy="formData.downloadFileDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->服务器域名填写https协议域名
@@ -110,7 +110,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.udpDomain" disabled />
</div>
<el-button @click="copyClick(formData.udpDomain)">复制</el-button>
<el-button v-copy="formData.udpDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->服务器域名填写udp协议域名
@@ -126,7 +126,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.businessDomain" disabled />
</div>
<el-button @click="copyClick(formData.businessDomain)">复制</el-button>
<el-button v-copy="formData.businessDomain">复制</el-button>
</div>
<div class="form-tips">
小程序账号登录微信公众平台点击开发>开发设置->业务域名填写业务域名
@@ -143,7 +143,6 @@
<script lang="ts" setup>
import { getWeappConfig, setWeappConfig } from '@/api/channel/weapp'
import feedback from '@/utils/feedback'
import { useClipboard } from '@vueuse/core'
const formData = reactive({
name: '',
@@ -160,20 +159,6 @@ const formData = reactive({
uploadFileDomain: ''
})
const { copy } = useClipboard()
const copyClick = async (msg: any) => {
try {
//复制
await copy(msg)
feedback.msgSuccess('复制成功')
} catch (e) {
//复制失败
feedback.msgSuccess('复制失败')
console.error(e)
}
}
const getDetail = async () => {
const data = await getWeappConfig()
for (const key in formData) {

View File

@@ -1,7 +1,12 @@
<template>
<div>
<el-card class="!border-none" shadow="never">
<el-alert type="warning" title="温馨提示:填写微信公众号开发配置,请前往微信公众平台申请服务号并完成认证" :closable="false" show-icon />
<el-alert
type="warning"
title="温馨提示:填写微信公众号开发配置,请前往微信公众平台申请服务号并完成认证"
:closable="false"
show-icon
/>
</el-card>
<el-form ref="formRef" :model="formData" label-width="160px">
<el-card class="!border-none mt-4" shadow="never">
@@ -53,7 +58,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.url" disabled />
</div>
<el-button @click="copy(formData.url)">复制</el-button>
<el-button v-copy="formData.url">复制</el-button>
</div>
<div class="form-tips">
登录微信公众平台点击开发>基本配置>服务器配置填写服务器地址URL
@@ -73,7 +78,10 @@
<el-form-item label="EncodingAESKey" prop="EncodingAESKey">
<div>
<div class="w-80">
<el-input v-model="formData.encodingAesKey" placeholder="请输入EncodingAESKey" />
<el-input
v-model="formData.encodingAesKey"
placeholder="请输入EncodingAESKey"
/>
</div>
<div class="form-tips">
消息加密密钥由43位字符组成字符范围为A-Z,a-z,0-9
@@ -82,7 +90,10 @@
</el-form-item>
<el-form-item label="消息加密方式" required prop="status">
<div>
<el-radio-group class="flex-col !items-start" v-model="formData.encryptionType">
<el-radio-group
class="flex-col !items-start"
v-model="formData.encryptionType"
>
<el-radio :label="1">
明文模式 (不使用消息体加解密功能安全系数较低)
</el-radio>
@@ -105,7 +116,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.businessDomain" disabled />
</div>
<el-button @click="copy(formData.businessDomain)">复制</el-button>
<el-button v-copy="formData.businessDomain">复制</el-button>
</div>
<div class="form-tips">
登录微信公众平台点击设置>公众号设置>功能设置填写业务域名
@@ -118,7 +129,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.jsDomain" disabled />
</div>
<el-button @click="copy(formData.jsDomain)">复制</el-button>
<el-button v-copy="formData.jsDomain">复制</el-button>
</div>
<div class="form-tips">
登录微信公众平台点击设置>公众号设置>功能设置填写JS接口安全域名
@@ -131,7 +142,7 @@
<div class="mr-4 w-80">
<el-input v-model="formData.webDomain" disabled />
</div>
<el-button @click="copy(formData.webDomain)">复制</el-button>
<el-button v-copy="formData.webDomain">复制</el-button>
</div>
<div class="form-tips">
登录微信公众平台点击设置>公众号设置>功能设置填写网页授权域名
@@ -151,18 +162,18 @@ import feedback from '@/utils/feedback'
import { useClipboard } from '@vueuse/core'
const formData = reactive({
name: "",
primaryId: " ",
qrCode: "",
appId: "",
appSecret: "",
url: "",
token: "",
encodingAesKey: "",
name: '',
primaryId: ' ',
qrCode: '',
appId: '',
appSecret: '',
url: '',
token: '',
encodingAesKey: '',
encryptionType: 1,
businessDomain: "",
jsDomain: "",
webDomain: ""
businessDomain: '',
jsDomain: '',
webDomain: ''
})
const { copy } = useClipboard()

View File

@@ -1,10 +1,10 @@
<script setup lang="ts">
import OaPhone from "./menu_com/oa-phone.vue";
import OaAttr from "./menu_com/oa-attr.vue";
import { useMenuOa } from "./menu_com/useMenuOa";
import OaPhone from './menu_com/oa-phone.vue'
import OaAttr from './menu_com/oa-attr.vue'
import { useMenuOa } from './menu_com/useMenuOa'
const { getOaMenuFunc, handleSave, handlePublish } = useMenuOa(undefined);
getOaMenuFunc();
const { getOaMenuFunc, handleSave, handlePublish } = useMenuOa(undefined)
getOaMenuFunc()
</script>
<template>
@@ -29,18 +29,12 @@ getOaMenuFunc();
</el-card>
<footer-btns>
<el-button
type="primary"
@click="handleSave"
v-perms="['channel:oaMenu:save']"
>保存</el-button
>
<el-button
type="primary"
@click="handlePublish"
v-perms="['channel:oaMenu:publish']"
>发布</el-button
>
<el-button type="primary" @click="handleSave" v-perms="['channel:oaMenu:save']">
保存
</el-button>
<el-button type="primary" @click="handlePublish" v-perms="['channel:oaMenu:publish']">
发布
</el-button>
</footer-btns>
</div>
</template>

View File

@@ -36,7 +36,7 @@
<el-table-column label="用户编号" prop="sn" min-width="120" />
<el-table-column label="头像" min-width="100">
<template #default="{ row }">
<el-avatar :src="row.image" :size="50" />
<el-avatar :src="row.avatar" :size="50" />
</template>
</el-table-column>
<el-table-column label="昵称" prop="nickname" min-width="100" />

View File

@@ -118,7 +118,7 @@
<color-picker
class="max-w-[400px]"
v-model="tabbar.style.selectedColor"
default-color="#999999"
default-color="#4173ff"
/>
</el-form-item>
</el-tab-pane>

View File

@@ -57,6 +57,59 @@ module.exports = {
'7xl': '36px',
'8xl': '48px',
'9xl': '60px'
},
spacing: {
px: '1px',
0: '0px',
0.5: '2px',
1: '4px',
1.5: '6px',
2: '8px',
2.5: '10px',
3: '12px',
3.5: '14px',
4: '16px',
5: '20px',
6: '24px',
7: '28px',
8: '32px',
9: '36px',
10: '40px',
11: '44px',
12: '48px',
14: '56px',
16: '64px',
20: '80px',
24: '96px',
28: '112px',
32: '128px',
36: '144px',
40: '160px',
44: '176px',
48: '192px',
52: '208px',
56: '224px',
60: '240px',
64: '256px',
72: '288px',
80: '320px',
96: '384px'
},
lineHeight: {
none: '1',
tight: '1.25',
snug: '1.375',
normal: '1.5',
relaxed: '1.625',
loose: '2',
3: '12px',
4: '16px',
5: '20px',
6: '24px',
7: '28px',
8: '32px',
9: '36px',
10: '40px'
}
},

View File

@@ -9,7 +9,7 @@ import { ref } from 'vue'
const url = ref('')
onLoad((options) => {
url.value = options.url!
url.value = decodeURIComponent(options.url!)
})
</script>

View File

@@ -71,6 +71,7 @@ public class ChannelOaMenuServiceImpl implements IChannelOaMenuService {
Assert.notNull(item.get("url"), "一级菜单url数缺失");
wxMenuButton.setType(item.get("visitType"));
wxMenuButton.setUrl(item.get("url"));
wxMenuButton.setAppId(item.getOrDefault("appId", ""));
}
menuButtons.add(wxMenuButton);
}

View File

@@ -37,11 +37,12 @@ public class SettingSmsServiceImpl implements ISettingSmsService {
tencent.put("status", engine.equals("tencent") ? 1 : 0);
list.add(tencent);
Map<String, Object> huawei = new LinkedHashMap<>();
huawei.put("name", "华为云短信");
huawei.put("alias", "huawei");
huawei.put("status", engine.equals("huawei") ? 1 : 0);
list.add(huawei);
// todo 下个版本再实现
// Map<String, Object> huawei = new LinkedHashMap<>();
// huawei.put("name", "华为云短信");
// huawei.put("alias", "huawei");
// huawei.put("status", engine.equals("huawei") ? 1 : 0);
// list.add(huawei);
return list;
}

View File

@@ -5,8 +5,10 @@ import com.mdd.admin.config.AdminConfig;
import com.mdd.admin.service.system.ISystemAuthPermService;
import com.mdd.common.entity.system.SystemAuthMenu;
import com.mdd.common.entity.system.SystemAuthPerm;
import com.mdd.common.entity.system.SystemAuthRole;
import com.mdd.common.mapper.system.SystemAuthMenuMapper;
import com.mdd.common.mapper.system.SystemAuthPermMapper;
import com.mdd.common.mapper.system.SystemAuthRoleMapper;
import com.mdd.common.utils.ArrayUtil;
import com.mdd.common.utils.RedisUtil;
import com.mdd.common.utils.StringUtil;
@@ -30,6 +32,9 @@ public class SystemAuthPermServiceImpl implements ISystemAuthPermService {
@Resource
SystemAuthMenuMapper systemAuthMenuMapper;
@Resource
SystemAuthRoleMapper systemAuthRoleMapper;
/**
* 根据角色ID获取菜单ID
*
@@ -39,11 +44,22 @@ public class SystemAuthPermServiceImpl implements ISystemAuthPermService {
@Override
public List<Integer> selectMenuIdsByRoleId(Integer roleId) {
List<Integer> menus = new LinkedList<>();
SystemAuthRole systemAuthRole = systemAuthRoleMapper.selectOne(new QueryWrapper<SystemAuthRole>()
.eq("id", roleId)
.eq("is_disable", 0)
.last("limit 1"));
if (StringUtil.isNull(systemAuthRole)) {
return menus;
}
List<SystemAuthPerm> systemAuthPerms = systemAuthPermMapper.selectList(
new QueryWrapper<SystemAuthPerm>().eq("role_id", roleId));
for (SystemAuthPerm systemAuthPerm : systemAuthPerms) {
menus.add(systemAuthPerm.getMenuId());
}
return menus;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 839 B

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 B

After

Width:  |  Height:  |  Size: 839 B

View File

@@ -181,9 +181,12 @@ public class UserServiceImpl implements IUserService {
.last("limit 1"));
Assert.notNull(user, "用户不存在");
String oldPwd = ToolsUtil.makeMd5(oldPassword.trim()+user.getSalt());
if (!oldPwd.equals(user.getPassword())) {
throw new OperateException("原密码不正确!");
if (!user.getPassword().equals("")) {
String oldPwd = ToolsUtil.makeMd5(oldPassword.trim() + user.getSalt());
if (!oldPwd.equals(user.getPassword())) {
throw new OperateException("原密码不正确!");
}
}
String salt = ToolsUtil.randomString(5);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 839 B

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 B

After

Width:  |  Height:  |  Size: 839 B

View File

@@ -540,7 +540,7 @@ INSERT INTO `la_system_config` VALUES (12, 'website', 'favicon', '/api/static/ba
INSERT INTO `la_system_config` VALUES (13, 'website', 'backdrop', '/api/static/backend_backdrop.png', 1660620367, 1660620367);
INSERT INTO `la_system_config` VALUES (14, 'website', 'copyright', '[{\"name\":\"LikeAdmin开源系统\",\"link\":\"http://www.beian.gov.cn\"}]', 1660620367, 1660620367);
INSERT INTO `la_system_config` VALUES (15, 'website', 'shopName', 'LikeAdmin开源系统', 1631255140, 1631255140);
INSERT INTO `la_system_config` VALUES (16, 'website', 'shopLogo', ' /api/static/shop_logo.png', 1631255140, 1631255140);
INSERT INTO `la_system_config` VALUES (16, 'website', 'shopLogo', '/api/static/shop_logo.png', 1631255140, 1631255140);
INSERT INTO `la_system_config` VALUES (17, 'protocol', 'service', '{\"name\":\"服务协议\",\"content\":\"\"}', 1660620367, 1660620367);
INSERT INTO `la_system_config` VALUES (18, 'protocol', 'privacy', '{\"name\":\"隐私协议\",\"content\":\"\"}', 1660620367, 1660620367);
INSERT INTO `la_system_config` VALUES (19, 'tabbar', 'style', '{\"defaultColor\":\"#481F1F\",\"selectedColor\":\"#961D1D\"}', 1660620367, 1662544900);
@@ -574,10 +574,10 @@ INSERT INTO `la_system_config` VALUES (80, 'user', 'defaultAvatar', '/api/static
COMMIT;
BEGIN;
INSERT INTO `la_notice_setting` VALUES (1, 101, '登录验证码', '用户手机号码登录时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_222458159\",\"content\":\"您正在登录,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在登录,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":1}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (2, 102, '绑定手机验证码', '用户绑定手机号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_175615069\",\"content\":\"您正在绑定手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在绑定手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":1}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (3, 103, '变更手机验证码', '用户变更手机号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_207952628\",\"content\":\"您正在变更手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在变更手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":1}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (4, 104, '找回登录密码验证码', '用户找回登录密码号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_175615069\",\"content\":\"您正在找回登录密码,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在找回登录密码,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"条验证码有效期5分钟。\"],\"status\":1}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (1, 101, '登录验证码', '用户手机号码登录时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_222458159\",\"content\":\"您正在登录,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在登录,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":\"1\"}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (2, 102, '绑定手机验证码', '用户绑定手机号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_175615069\",\"content\":\"您正在绑定手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在绑定手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":\"1\"}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (3, 103, '变更手机验证码', '用户变更手机号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_207952628\",\"content\":\"您正在变更手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在变更手机号,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"生效条件1、管理后台完成短信设置。2、第三方短信平台申请模板。\"],\"status\":\"1\"}', '{}', '{}', 0, 1648696695, 1648696695, 0);
INSERT INTO `la_notice_setting` VALUES (4, 104, '找回登录密码验证码', '用户找回登录密码号码时发送', 1, 2, '{}', '{\"type\":\"sms\",\"templateId\":\"SMS_175615069\",\"content\":\"您正在找回登录密码,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"tips\":[\"可选变量 验证码:code\",\"示例:您正在找回登录密码,验证码${code}切勿将验证码泄露于他人本条验证码有效期5分钟。\",\"条验证码有效期5分钟。\"],\"status\":\"1\"}', '{}', '{}', 0, 1648696695, 1648696695, 0);
COMMIT;
BEGIN;
@@ -611,7 +611,7 @@ INSERT INTO `la_system_auth_menu` VALUES (121, 120, 'A', '菜单详情', '', 0,
INSERT INTO `la_system_auth_menu` VALUES (122, 120, 'A', '菜单新增', '', 0, 'system:menu:add', '', '', '', '', 0, 1, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (123, 120, 'A', '菜单编辑', '', 0, 'system:menu:edit', '', '', '', '', 0, 1, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (124, 120, 'A', '菜单删除', '', 0, 'system:menu:del', '', '', '', '', 0, 1, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (130, 0, 'M', '组织管理', 'el-icon-User', 45, '', 'organization', '', '', '', 0, 1, 0, 1650341765, 1662626207);
INSERT INTO `la_system_auth_menu` VALUES (130, 0, 'M', '组织管理', 'el-icon-OfficeBuilding', 45, '', 'organization', '', '', '', 0, 1, 0, 1650341765, 1663294465);
INSERT INTO `la_system_auth_menu` VALUES (131, 130, 'C', '部门管理', 'el-icon-Coordinate', 0, 'system:dept:list', 'department', 'organization/department/index', '', '', 1, 1, 0, 1650341765, 1660201994);
INSERT INTO `la_system_auth_menu` VALUES (132, 131, 'A', '部门详情', '', 0, 'system:dept:detail', '', '', '', '', 0, 1, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (133, 131, 'A', '部门新增', '', 0, 'system:dept:add', '', '', '', '', 0, 1, 0, 1650341765, 1650341765);
@@ -636,18 +636,18 @@ INSERT INTO `la_system_auth_menu` VALUES (215, 200, 'M', '上传管理', '', 0,
INSERT INTO `la_system_auth_menu` VALUES (216, 215, 'A', '上传图片', '', 0, 'common:upload:image', '', '', '', '', 0, 0, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (217, 215, 'A', '上传视频', '', 0, 'common:upload:video', '', '', '', '', 0, 0, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (500, 0, 'M', '系统设置', 'el-icon-Setting', 0, '', 'setting', '', '', '', 0, 1, 0, 1650341765, 1662626322);
INSERT INTO `la_system_auth_menu` VALUES (501, 500, 'M', '网站设置', 'el-icon-Basketball', 10, '', 'website', '', '', '', 0, 1, 0, 1650341765, 1662626252);
INSERT INTO `la_system_auth_menu` VALUES (501, 500, 'M', '网站设置', 'el-icon-Basketball', 10, '', 'website', '', '', '', 0, 1, 0, 1650341765, 1663233572);
INSERT INTO `la_system_auth_menu` VALUES (502, 501, 'C', '网站信息', '', 0, 'setting:website:detail', 'information', 'setting/website/information', '', '', 0, 1, 0, 1650341765, 1660202218);
INSERT INTO `la_system_auth_menu` VALUES (503, 502, 'A', '保存配置', '', 0, 'setting:website:save', '', '', '', '', 0, 0, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (505, 501, 'C', '网站备案', '', 0, 'setting:copyright:detail', 'filing', 'setting/website/filing', '', '', 0, 1, 0, 1650341765, 1660202294);
INSERT INTO `la_system_auth_menu` VALUES (506, 505, 'A', '备案保存', '', 0, 'setting:copyright:save', '', 'setting/website/protocol', '', '', 0, 0, 0, 1650341765, 1650341765);
INSERT INTO `la_system_auth_menu` VALUES (510, 501, 'C', '政策协议', '', 0, 'setting:protocol:detail', 'protocol', 'setting/website/protocol', '', '', 0, 1, 0, 1660027606, 1660202312);
INSERT INTO `la_system_auth_menu` VALUES (511, 510, '', '协议保存', '', 0, 'setting:protocol:save', '', '', '', '', 0, 0, 0, 1660027606, 1660027606);
INSERT INTO `la_system_auth_menu` VALUES (515, 500, 'C', '字典管理', 'el-icon-Box', 0, 'setting:dict:type:list', 'dict', 'setting/dict/type/index', '', '', 0, 1, 0, 1660035436, 1660202671);
INSERT INTO `la_system_auth_menu` VALUES (515, 600, 'C', '字典管理', 'el-icon-Box', 0, 'setting:dict:type:list', 'dict', 'setting/dict/type/index', '', '', 0, 1, 0, 1660035436, 1663226087);
INSERT INTO `la_system_auth_menu` VALUES (516, 515, 'A', '字典类型新增', '', 0, 'setting:dict:type:add', '', '', '', '', 0, 1, 0, 1660202761, 1660202761);
INSERT INTO `la_system_auth_menu` VALUES (517, 515, 'A', '字典类型编辑', '', 0, 'setting:dict:type:edit', '', '', '', '', 0, 1, 0, 1660202842, 1660202842);
INSERT INTO `la_system_auth_menu` VALUES (518, 515, 'A', '字典类型删除', '', 0, 'setting:dict:type:del', '', '', '', '', 0, 1, 0, 1660202903, 1660202903);
INSERT INTO `la_system_auth_menu` VALUES (519, 500, 'C', '字典数据管理', '', 0, 'setting:dict:data:list', 'dict/data', 'setting/dict/data/index', '/setting/dict', '', 0, 0, 0, 1660202948, 1661844004);
INSERT INTO `la_system_auth_menu` VALUES (519, 600, 'C', '字典数据管理', '', 0, 'setting:dict:data:list', 'dict/data', 'setting/dict/data/index', '/setting/dict', '', 0, 0, 0, 1660202948, 1663226313);
INSERT INTO `la_system_auth_menu` VALUES (520, 515, 'A', '字典数据新增', '', 0, 'setting:dict:data:add', '', '', '', '', 0, 1, 0, 1660203117, 1660203117);
INSERT INTO `la_system_auth_menu` VALUES (521, 515, 'A', '字典数据编辑', '', 0, 'setting:dict:data:edit', '', '', '', '', 0, 1, 0, 1660203142, 1660203142);
INSERT INTO `la_system_auth_menu` VALUES (522, 515, 'A', '字典数据删除', '', 0, 'setting:dict:data:del', '', '', '', '', 0, 1, 0, 1660203159, 1660203159);
@@ -666,33 +666,33 @@ INSERT INTO `la_system_auth_menu` VALUES (614, 610, 'A', '预览代码', '', 0,
INSERT INTO `la_system_auth_menu` VALUES (616, 610, 'A', '同步表结构', '', 0, 'gen:syncTable', '', '', '', '', 0, 1, 0, 1660532781, 1660532781);
INSERT INTO `la_system_auth_menu` VALUES (617, 610, 'A', '删除数据表', '', 0, 'gen:delTable', '', '', '', '', 0, 1, 0, 1660532800, 1660532800);
INSERT INTO `la_system_auth_menu` VALUES (618, 610, 'A', '数据表详情', '', 0, 'gen:detail', '', '', '', '', 0, 1, 0, 1660532964, 1660532977);
INSERT INTO `la_system_auth_menu` VALUES (700, 0, 'M', '素材管理', 'el-icon-Picture', 43, '', 'material', '', '', '', 0, 1, 0, 1660203293, 1662626218);
INSERT INTO `la_system_auth_menu` VALUES (700, 0, 'M', '素材管理', 'el-icon-PictureRounded', 43, '', 'material', '', '', '', 0, 1, 0, 1660203293, 1663294526);
INSERT INTO `la_system_auth_menu` VALUES (701, 700, 'C', '素材中心', 'local-icon-picture-1', 0, '', 'index', 'material/index', '', '', 0, 1, 0, 1660203402, 1660203402);
INSERT INTO `la_system_auth_menu` VALUES (703, 0, 'M', '文章资讯', 'el-icon-Notebook', 49, '', 'article', '', '', '', 0, 1, 0, 1661757636, 1662626081);
INSERT INTO `la_system_auth_menu` VALUES (704, 703, 'C', '文章管理', 'el-icon-Box', 0, 'article:list', 'lists', 'article/lists/index', '', '', 0, 1, 0, 1661757743, 1661757743);
INSERT INTO `la_system_auth_menu` VALUES (703, 0, 'M', '文章资讯', 'el-icon-ChatLineSquare', 49, '', 'article', '', '', '', 0, 1, 0, 1661757636, 1663294266);
INSERT INTO `la_system_auth_menu` VALUES (704, 703, 'C', '文章管理', 'el-icon-ChatDotSquare', 0, 'article:list', 'lists', 'article/lists/index', '', '', 0, 1, 0, 1661757743, 1663294289);
INSERT INTO `la_system_auth_menu` VALUES (705, 703, 'C', '文章栏目', 'el-icon-CollectionTag', 0, 'article:cate:list', 'column', 'article/column/index', '', '', 0, 1, 0, 1661759218, 1662626512);
INSERT INTO `la_system_auth_menu` VALUES (706, 0, 'M', '渠道设置', 'el-icon-Baseball', 46, '', 'channel', '', '', '', 0, 1, 0, 1661767630, 1662626134);
INSERT INTO `la_system_auth_menu` VALUES (706, 0, 'M', '渠道设置', 'el-icon-Message', 46, '', 'channel', '', '', '', 0, 1, 0, 1661767630, 1663226148);
INSERT INTO `la_system_auth_menu` VALUES (707, 706, 'C', 'H5设置', 'el-icon-Cellphone', 0, 'channel:h5:detail', 'h5', 'channel/h5', '', '', 0, 1, 0, 1661768566, 1662626123);
INSERT INTO `la_system_auth_menu` VALUES (708, 706, 'M', '微信公众号', 'el-icon-Watermelon', 0, '', 'wx_oa', '', '', '', 0, 1, 0, 1661769386, 1661824922);
INSERT INTO `la_system_auth_menu` VALUES (708, 706, 'M', '微信公众号', 'local-icon-news', 0, '', 'wx_oa', '', '', '', 0, 1, 0, 1661769386, 1663297750);
INSERT INTO `la_system_auth_menu` VALUES (709, 708, 'C', '公众号配置', '', 0, 'channel:oa:detail', 'config', 'channel/wx_oa/config', '', '', 0, 1, 0, 1661769457, 1662638440);
INSERT INTO `la_system_auth_menu` VALUES (710, 706, 'C', '微信小程序', 'el-icon-Burger', 0, 'channel:mp:detail', 'weapp', 'channel/weapp', '', '', 0, 1, 0, 1661823746, 1662638345);
INSERT INTO `la_system_auth_menu` VALUES (710, 706, 'C', '微信小程序', 'local-icon-applet', 0, 'channel:mp:detail', 'weapp', 'channel/weapp', '', '', 0, 1, 0, 1661823746, 1663297546);
INSERT INTO `la_system_auth_menu` VALUES (711, 706, 'C', '微信开发平台', 'el-icon-DataBoard', 0, 'channel:wx:detail', 'wx_dev', 'channel/wx_dev', '', '', 0, 1, 0, 1661824989, 1662638392);
INSERT INTO `la_system_auth_menu` VALUES (712, 0, 'M', '用户管理', 'el-icon-Avatar', 48, '', 'consumer', '', '', '', 0, 1, 0, 1661832966, 1662626100);
INSERT INTO `la_system_auth_menu` VALUES (713, 712, 'C', '用户列表', 'el-icon-User', 0, 'user:list', 'lists', 'consumer/lists/index', '', '', 0, 1, 0, 1661839365, 1662627365);
INSERT INTO `la_system_auth_menu` VALUES (712, 0, 'M', '用户管理', 'el-icon-User', 48, '', 'consumer', '', '', '', 0, 1, 0, 1661832966, 1663294141);
INSERT INTO `la_system_auth_menu` VALUES (713, 712, 'C', '用户列表', 'local-icon-test-wode', 0, 'user:list', 'lists', 'consumer/lists/index', '', '', 0, 1, 0, 1661839365, 1663297492);
INSERT INTO `la_system_auth_menu` VALUES (714, 714, 'A', '用户编辑', '', 0, 'user:edit', 'detail', 'consumer/lists/detail', '/consumer/lists', '', 0, 0, 0, 1661840502, 1662627718);
INSERT INTO `la_system_auth_menu` VALUES (715, 600, 'C', '编辑数据表', '', 0, 'gen:editTable', 'code/edit', 'dev_tools/code/edit', '/dev_tools/code', '', 0, 0, 0, 1661843525, 1661843615);
INSERT INTO `la_system_auth_menu` VALUES (716, 705, 'A', '栏目详情', '', 0, 'article:cate:detail', 'lists/edit', 'article/lists/edit', '/article/lists', '', 0, 0, 0, 1661844126, 1662626009);
INSERT INTO `la_system_auth_menu` VALUES (717, 0, 'M', '装修管理', 'el-icon-Help', 47, '', 'decoration', '', '', '', 0, 1, 0, 1661845634, 1662626108);
INSERT INTO `la_system_auth_menu` VALUES (718, 717, 'C', '页面装修', '', 0, '', 'pages', 'decoration/pages/index', '', '', 0, 1, 0, 1661845678, 1661845678);
INSERT INTO `la_system_auth_menu` VALUES (719, 717, 'C', '底部导航', '', 0, '', 'tabbar', 'decoration/tabbar', '', '', 0, 1, 0, 1661845811, 1661845811);
INSERT INTO `la_system_auth_menu` VALUES (717, 0, 'M', '装修管理', 'el-icon-Brush', 47, '', 'decoration', '', '', '', 0, 1, 0, 1661845634, 1663294482);
INSERT INTO `la_system_auth_menu` VALUES (718, 717, 'C', '页面装修', 'el-icon-CopyDocument', 0, 'decorate:pages:detail', 'pages', 'decoration/pages/index', '', '', 0, 1, 0, 1661845678, 1663294313);
INSERT INTO `la_system_auth_menu` VALUES (719, 717, 'C', '底部导航', 'el-icon-Position', 0, 'decorate:tabbar:detail', 'tabbar', 'decoration/tabbar', '', '', 0, 1, 0, 1661845811, 1663294354);
INSERT INTO `la_system_auth_menu` VALUES (720, 500, 'M', '消息通知', 'el-icon-Message', 9, '', 'message', '', '', '', 0, 1, 0, 1661848742, 1662626364);
INSERT INTO `la_system_auth_menu` VALUES (721, 720, 'C', '通知设置', '', 0, 'setting:notice:list', 'notice', 'message/notice/index', '', '', 0, 1, 0, 1661848772, 1662638112);
INSERT INTO `la_system_auth_menu` VALUES (722, 721, 'C', '通知详情', '', 0, 'setting:notice:detail', 'notice/edit', 'message/notice/edit', '/message/notice', '', 0, 0, 0, 1661848944, 1662638144);
INSERT INTO `la_system_auth_menu` VALUES (722, 720, 'C', '通知详情', '', 0, 'setting:notice:detail', 'notice/edit', 'message/notice/edit', '/setting/message/notice', '', 0, 0, 0, 1661848944, 1663142853);
INSERT INTO `la_system_auth_menu` VALUES (723, 720, 'C', '短信设置', '', 0, 'setting:sms:list', 'short_letter', 'message/short_letter/index', '', '', 0, 1, 0, 1661848995, 1662638165);
INSERT INTO `la_system_auth_menu` VALUES (724, 500, 'M', '用户设置', 'local-icon-member-5', 0, '', 'user', '', '', '', 0, 1, 0, 1662455407, 1662455407);
INSERT INTO `la_system_auth_menu` VALUES (724, 500, 'M', '用户设置', 'local-icon-member-5', 8, '', 'user', '', '', '', 0, 1, 0, 1662455407, 1663226181);
INSERT INTO `la_system_auth_menu` VALUES (725, 724, 'C', '用户设置', '', 0, '', 'setup', 'setting/user/setup', '', '', 0, 1, 0, 1662455555, 1662456338);
INSERT INTO `la_system_auth_menu` VALUES (726, 724, 'C', '登录注册', '', 0, '', 'login_register', 'setting/user/login_register', '', '', 0, 1, 0, 1662456475, 1662456475);
INSERT INTO `la_system_auth_menu` VALUES (728, 500, 'C', '热门搜索', 'el-icon-Search', 0, '', 'search', 'setting/search/index', '', '', 0, 1, 0, 1662540429, 1662540429);
INSERT INTO `la_system_auth_menu` VALUES (728, 500, 'C', '热门搜索', 'el-icon-Search', 7, '', 'search', 'setting/search/index', '', '', 0, 1, 0, 1662540429, 1663226189);
INSERT INTO `la_system_auth_menu` VALUES (729, 704, 'A', '文章详情', '', 0, 'article:detail', '', '', '', '', 0, 1, 0, 1662625856, 1662625856);
INSERT INTO `la_system_auth_menu` VALUES (730, 704, 'A', '文章新增', '', 0, 'article:add', '', '', '', '', 0, 1, 0, 1662625870, 1662625870);
INSERT INTO `la_system_auth_menu` VALUES (731, 704, 'A', '文章编辑', '', 0, 'article:edit', '', '', '', '', 0, 1, 0, 1662625882, 1662625882);
@@ -712,4 +712,10 @@ INSERT INTO `la_system_auth_menu` VALUES (744, 707, 'A', '设置保存', '', 0,
INSERT INTO `la_system_auth_menu` VALUES (745, 710, 'A', '设置保存', '', 0, 'channel:mp:detail', '', '', '', '', 0, 1, 0, 1662638359, 1662638359);
INSERT INTO `la_system_auth_menu` VALUES (746, 711, 'A', '保存设置', '', 0, 'channel:wx:save', '', '', '', '', 0, 1, 0, 1662638410, 1662638410);
INSERT INTO `la_system_auth_menu` VALUES (747, 709, 'A', '保存设置', '', 0, 'channel:oa:save', '', '', '', '', 0, 1, 0, 1662638459, 1662638459);
INSERT INTO `la_system_auth_menu` VALUES (748, 708, 'C', '菜单管理', '', 0, '', 'menu', 'channel/wx_oa/menu', '', '', 0, 1, 0, 1663050714, 1663050714);
INSERT INTO `la_system_auth_menu` VALUES (750, 708, 'C', '关注回复', '', 0, '', 'follow', 'channel/wx_oa/reply/follow_reply', '', '', 0, 1, 0, 1663149592, 1663149592);
INSERT INTO `la_system_auth_menu` VALUES (751, 708, 'C', '关键字回复', '', 0, '', 'keyword', 'channel/wx_oa/reply/keyword_reply', '', '', 0, 1, 0, 1663149622, 1663149622);
INSERT INTO `la_system_auth_menu` VALUES (752, 708, 'C', '默认回复', '', 0, '', 'default', 'channel/wx_oa/reply/default_reply', '', '', 0, 1, 0, 1663149650, 1663149650);
INSERT INTO `la_system_auth_menu` VALUES (753, 718, 'A', '保存', '', 0, 'decorate:pages:save', '', '', '', '', 0, 1, 0, 1663236648, 1663236648);
INSERT INTO `la_system_auth_menu` VALUES (754, 719, 'A', '保存', '', 0, 'decorate:tabbar:save', '', '', '', '', 0, 1, 0, 1663236675, 1663236675);
COMMIT;