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

This commit is contained in:
XieYongHong 2023-07-06 18:16:11 +08:00
commit c56dbff80b
4 changed files with 74 additions and 37 deletions

View File

@ -16,7 +16,7 @@
</template> </template>
<j-spin :spinning="loading"> <j-spin :spinning="loading">
<div class="content"> <div class="content">
<j-scrollbar class="list" max-height="400" v-if="total"> <j-scrollbar class="list" :max-height="450" v-if="total">
<template v-for="i in list" :key="i.id"> <template v-for="i in list" :key="i.id">
<NoticeItem <NoticeItem
:data="i" :data="i"
@ -179,7 +179,7 @@ const onMore = (key: string) => {
.content { .content {
.list { .list {
max-height: 400px; max-height: 450px;
overflow: auto; overflow: auto;
padding: 0; padding: 0;
margin: 0; margin: 0;

View File

@ -84,33 +84,27 @@
</a> </a>
</div> </div>
<h1>1.概述</h1> <h1>1.概述</h1>
<div>钉钉企业内部应用适用于通过钉钉登录<span>物联网平台</span></div> <div>配置成功后用户可以采用钉钉扫码授权的方式登录<span>物联网平台</span></div>
<div class="image"> <div class="image">
<j-image width="100%" :src="img4" /> <j-image width="100%" :src="img4" />
</div> </div>
<h1>2.接入方式说明</h1>
<div>1单点登录</div>
<div>通过钉钉账号登录到物联网平台</div>
</div> </div>
<div v-show="props.type === 'wechat-webapp'"> <div v-show="props.type === 'wechat-webapp'">
<div class="url"> <div class="url">
微信开放平台 微信开放平台
<a <a
href="https://open.weixin.qq.com" href="https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
https://open.weixin.qq.com https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN
</a> </a>
</div> </div>
<h1>1.概述</h1> <h1>1.概述</h1>
<div>微信网站应用适用于通过微信授权登录<span>物联网平台</span></div> <div>配置成功后用户可以采用微信扫码授权的方式登录<span>物联网平台</span></div>
<div class="image"> <div class="image">
<j-image width="100%" :src="img3" /> <j-image width="100%" :src="img3" />
</div> </div>
<h1>2.接入方式说明</h1>
<div>1单点登录</div>
<div>通过微信账号登录到物联网平台</div>
</div> </div>
<div v-show="props.type === 'third-party'"> <div v-show="props.type === 'third-party'">
<h1>1. 概述</h1> <h1>1. 概述</h1>
@ -157,7 +151,21 @@
<div>通过<span>第三方平台账号</span>登录到物联网平台</div> <div>通过<span>第三方平台账号</span>登录到物联网平台</div>
</div> </div>
<div v-show="props.type === 'wechat-miniapp'"> <div v-show="props.type === 'wechat-miniapp'">
暂未开发 <div class="url">
小程序开放平台:
<a
href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html"
target="_blank"
rel="noopener noreferrer"
>
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
</a>
</div>
<h1>1.概述</h1>
<div>配置成功后平台用户可以在微信小程序中授权登录<span>物联网平台</span></div>
<div class="image">
<j-image width="100%" :src="img3" />
</div>
</div> </div>
</div> </div>
</template> </template>
@ -180,6 +188,7 @@ const img5 = getImage('/apply/5.png');
.does-container { .does-container {
padding: 24px; padding: 24px;
overflow-y: auto; overflow-y: auto;
height: 100%;
color: rgba(#000, 0.8); color: rgba(#000, 0.8);
font-size: 14px; font-size: 14px;
background-color: #fafafa; background-color: #fafafa;
@ -188,6 +197,7 @@ const img5 = getImage('/apply/5.png');
padding: 8px 16px; padding: 8px 16px;
color: #2f54eb; color: #2f54eb;
background-color: rgba(#a7bdf7, 0.2); background-color: rgba(#a7bdf7, 0.2);
word-wrap: break-word;
} }
h1 { h1 {

View File

@ -67,6 +67,7 @@
<j-collapse-panel <j-collapse-panel
v-for="(item, index) in form.data.integrationModes" v-for="(item, index) in form.data.integrationModes"
:key="item + index" :key="item + index"
:forceRender="true"
> >
<template #header> <template #header>
<span> <span>
@ -1226,11 +1227,7 @@
<!-- 钉钉 + 微信 --> <!-- 钉钉 + 微信 -->
<j-form-item <j-form-item
v-if=" v-if="['wechat-miniapp', 'wechat-webapp', 'dingtalk-ent-app'].includes(form.data?.provider)"
form.data.provider === 'wechat-webapp' ||
form.data.provider === 'dingtalk-ent-app' ||
'wechat-miniapp'
"
class="resetLabel" class="resetLabel"
:name="['sso', 'configuration', 'appSecret']" :name="['sso', 'configuration', 'appSecret']"
:rules="[ :rules="[
@ -1297,14 +1294,17 @@
required: true, required: true,
message: '请输入默认密码', message: '请输入默认密码',
}, },
// {
// min: 8,
// message: '8',
// },
// {
// max: 64,
// message: '64',
// },
{ {
min: 8, validator: checkPassword,
message: '最少输入8个字符', }
},
{
max: 64,
message: '最多可输入64个字符',
},
]" ]"
> >
<j-input <j-input
@ -1408,7 +1408,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { testIP } from '@/utils/validate'; import { passwordRegEx, testIP } from '@/utils/validate';
import { import {
getDepartmentList_api, getDepartmentList_api,
@ -1590,6 +1590,19 @@ onMounted(async () => {
} }
}); });
const checkPassword = (_rule: Rule, value: string) => {
return new Promise((resolve, reject) => {
if (!value) return resolve('');
else if (value.length > 64) return reject('最多可输入64个字符');
else if (value.length < 8) return reject('密码不能少于8位');
else if (!passwordRegEx(value)) {
return reject('密码必须包含大小写英文和数字');
} else {
resolve('')
}
})
}
// //
const joinOptions = computed(() => { const joinOptions = computed(() => {
return ( return (
@ -1756,7 +1769,7 @@ function clickSave() {
params.integrationModes.includes('apiServer') && params.integrationModes.includes('apiServer') &&
params.integrationModes.length === 2) params.integrationModes.length === 2)
) { ) {
return message.warning('配置单点登录需同时配置API客端'); return message.warning('配置单点登录需同时配置API客端');
} }
} }

View File

@ -1,13 +1,15 @@
<template> <template>
<page-container> <page-container>
<div class="save-container"> <full-page>
<j-row :gutter="24"> <div class="save-container">
<j-col :span="14"> <div class="left">
<EditForm @change-apply-type="chengeType" /> <j-scrollbar>
</j-col> <EditForm @change-apply-type="changeType" />
<j-col :span="10"><Does :type="rightType" /></j-col> </j-scrollbar>
</j-row> </div>
</div> <div class="right"><Does :type="rightType" /></div>
</div>
</full-page>
</page-container> </page-container>
</template> </template>
@ -17,14 +19,26 @@ import EditForm from './components/EditForm.vue';
import type { applyType } from './typing'; import type { applyType } from './typing';
const rightType = ref<applyType>('internal-standalone'); const rightType = ref<applyType>('internal-standalone');
const chengeType = (newType: applyType) => { const changeType = (newType: applyType) => {
rightType.value = newType; rightType.value = newType;
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.save-container { .save-container {
background-color: #fff;
padding: 24px; padding: 24px;
display: flex;
gap: 24px;
min-height: 100%;
.left {
flex: 1;
height: calc(100vh - 166px);
}
.right {
min-width: 410px;
width: 33.33333%;
}
} }
</style> </style>