mirror of
https://gitee.com/likeadmin/likeadmin_java.git
synced 2026-05-31 06:02:57 +08:00
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # admin/src/views/channel/weapp.vue
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
28
admin/src/install/directives/copy.ts
Normal file
28
admin/src/install/directives/copy.ts
Normal 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)
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user