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'
}
},