mirror of
https://github.com/kuaifan/dootask.git
synced 2026-01-27 13:08:13 +00:00
feat:添加应用 - 100%
This commit is contained in:
parent
96ca57509f
commit
916997d92a
@ -1349,3 +1349,13 @@ AI机器人
|
||||
|
||||
汇报人
|
||||
提交时间
|
||||
|
||||
去聊天
|
||||
我是一个人工智能助手,为用户提供问题解答和指导。我没有具体的身份,只是一个程序。您有什么问题可以问我哦?
|
||||
我是Claude,一个由Anthropic公司创造出来的AI助手机器人。我的工作是帮助人类,与人对话并给出解答。
|
||||
我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。
|
||||
我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。
|
||||
机器人暂未开启
|
||||
创建一个全新的会议视频会议,与会者可以在实时中进行面对面的视听交流。通过视频会议平台,参与者可以分享屏幕、共享文档,并与其他与会人员进行讨论和协。
|
||||
加入视频会议,参与已经创建的会议,在会议过程中与其他参会人员进行远程实时视听交流和协作。
|
||||
新会议
|
||||
27
public/images/apply/joinMeeting.svg
Normal file
27
public/images/apply/joinMeeting.svg
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 26.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#87D068;}
|
||||
.st1{clip-path:url(#SVGID_00000110451965135261372140000002995710644970903720_);fill:#FFFFFF;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M12,0h24c6.6,0,12,5.4,12,12v24c0,6.6-5.4,12-12,12H12C5.4,48,0,42.6,0,36V12C0,5.4,5.4,0,12,0z"/>
|
||||
<g>
|
||||
<defs>
|
||||
<rect id="SVGID_1_" x="12" y="12" width="24" height="24"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_00000062903037985041173510000002112159436546237855_">
|
||||
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
||||
</clipPath>
|
||||
<path style="clip-path:url(#SVGID_00000062903037985041173510000002112159436546237855_);fill:#FFFFFF;" d="M24,24.3"/>
|
||||
<path style="clip-path:url(#SVGID_00000062903037985041173510000002112159436546237855_);fill:#FFFFFF;" d="M34.9,19.3L34.9,19.3
|
||||
c-0.7-0.3-1.4-0.2-2,0.3l-2.2,2V19c0-1.6-1.3-2.9-2.9-2.9H14.9C13.3,16,12,17.3,12,19v10.7c0,1.6,1.3,2.9,2.9,2.9h12.8
|
||||
c1.6,0,2.9-1.3,2.9-2.9V27l2.2,2c0.3,0.3,0.8,0.5,1.2,0.5c0.3,0,0.5-0.1,0.8-0.2c0.7-0.3,1.1-1,1.1-1.7V21
|
||||
C36,20.3,35.6,19.7,34.9,19.3z M24.6,25.1h-2.5v2.5c0,0.5-0.4,0.8-0.8,0.8c-0.5,0-0.8-0.4-0.8-0.8v-2.5H18c-0.5,0-0.8-0.4-0.8-0.8
|
||||
c0-0.5,0.4-0.8,0.8-0.8h2.5V21c0-0.5,0.4-0.8,0.8-0.8c0.5,0,0.8,0.4,0.8,0.8v2.5h2.5c0.5,0,0.8,0.4,0.8,0.8
|
||||
C25.4,24.8,25.1,25.1,24.6,25.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@ -68,7 +68,8 @@ export default {
|
||||
{icon: '', name: 'project', label: '项目'},
|
||||
{icon: '', name: 'dialog', label: '消息'},
|
||||
{icon: '', name: 'contacts', label: '通讯录'},
|
||||
{icon: '', name: 'more', label: '更多'},
|
||||
{icon: '', name: 'apply', label: '应用'},
|
||||
// {icon: '', name: 'more', label: '更多'},
|
||||
],
|
||||
navMore: [
|
||||
[
|
||||
@ -200,8 +201,9 @@ export default {
|
||||
},
|
||||
|
||||
activeName() {
|
||||
if (this.isMore || ['manage-calendar', 'manage-file', 'manage-setting'].includes(this.routeName)) {
|
||||
return 'more';
|
||||
if (this.isMore || ['manage-calendar', 'manage-file', 'manage-setting', 'manage-apply', 'manage-approve'].includes(this.routeName)) {
|
||||
// return 'more';
|
||||
return 'apply';
|
||||
}
|
||||
|
||||
if (this.routeName === 'manage-dashboard') {
|
||||
|
||||
@ -11,8 +11,7 @@
|
||||
<UserAvatar :userid="userId" :size="36" tooltipDisabled/>
|
||||
</div>
|
||||
<span>{{userInfo.nickname}}</span>
|
||||
<Badge v-if="(reportUnreadNumber + approveUnreadNumber) > 0" class="manage-box-top-report" :overflow-count="999" :count="reportUnreadNumber + approveUnreadNumber"/>
|
||||
<Badge v-else-if="!!clientNewVersion" class="manage-box-top-report" dot/>
|
||||
<Badge v-if="!!clientNewVersion" class="manage-box-top-report" dot/>
|
||||
<div class="manage-box-arrow">
|
||||
<Icon type="ios-arrow-up" />
|
||||
<Icon type="ios-arrow-down" />
|
||||
@ -57,18 +56,11 @@
|
||||
<DropdownItem :divided="!!item.divided">
|
||||
<div class="manage-menu-flex">
|
||||
{{$L(item.name)}}
|
||||
<Badge v-if="reportUnreadNumber > 0" class="manage-menu-report-badge" :overflow-count="999" :count="reportUnreadNumber"/>
|
||||
<Icon v-else type="ios-arrow-forward"></Icon>
|
||||
<Icon type="ios-arrow-forward"></Icon>
|
||||
</div>
|
||||
</DropdownItem>
|
||||
<DropdownMenu slot="list">
|
||||
<DropdownItem name="allUser">{{$L('团队管理')}}</DropdownItem>
|
||||
<DropdownItem name="workReport">
|
||||
<div class="manage-menu-flex">
|
||||
{{$L('工作报告')}}
|
||||
<Badge v-if="reportUnreadNumber > 0" class="manage-menu-report-badge" :overflow-count="999" :count="reportUnreadNumber"/>
|
||||
</div>
|
||||
</DropdownItem>
|
||||
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
|
||||
<DropdownItem name="exportOverdueTask">{{$L('导出超期任务')}}</DropdownItem>
|
||||
<DropdownItem name="exportApprove">{{$L('导出审批数据')}}</DropdownItem>
|
||||
@ -205,7 +197,7 @@
|
||||
|
||||
<div class="manage-box-main">
|
||||
<keep-alive>
|
||||
<router-view class="manage-box-view"></router-view>
|
||||
<router-view class="manage-box-view" @on-click="onTabbarClick"></router-view>
|
||||
</keep-alive>
|
||||
</div>
|
||||
|
||||
@ -569,12 +561,10 @@ export default {
|
||||
{path: 'archivedProject', name: '已归档的项目'},
|
||||
|
||||
{path: 'team', name: '团队管理', divided: true},
|
||||
{path: 'approve', name: '审批中心'},
|
||||
])
|
||||
} else {
|
||||
array.push(...[
|
||||
{path: 'personal', name: '个人设置', divided: true},
|
||||
{path: 'approve', name: '审批中心'},
|
||||
{path: 'version', name: '更新版本', divided: true, visible: !!this.clientNewVersion},
|
||||
|
||||
{path: 'workReport', name: '工作报告', divided: true},
|
||||
@ -630,7 +620,7 @@ export default {
|
||||
if (this.routeName === 'manage-project' && !/^\d+$/.test(this.$route.params.projectId)) {
|
||||
return true;
|
||||
}
|
||||
return ['manage-dashboard', 'manage-calendar', 'manage-messenger', 'manage-file', 'manage-setting'].includes(this.routeName)
|
||||
return ['manage-dashboard', 'manage-calendar', 'manage-messenger', 'manage-file', 'manage-setting', 'manage-approve', 'manage-apply'].includes(this.routeName)
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="page-apply">
|
||||
|
||||
|
||||
<PageTitle :title="$L('应用')" />
|
||||
|
||||
<div class="apply-wrapper">
|
||||
@ -11,13 +11,18 @@
|
||||
</div>
|
||||
<div class="apply-row">
|
||||
<Row :gutter="16">
|
||||
<Col v-for="item in applyList" :xs="{ span: 8 }" :lg="{ span: 6 }" :xl="{ span: 4 }" :xxl="{ span: 3 }">
|
||||
<Col v-if="!item.isAdmin || userIsAdmin" v-for="(item, key) in applyList" :xs="{ span: 8 }"
|
||||
:sm="{ span: 8 }" :lg="{ span: 6 }" :xl="{ span: 4 }" :xxl="{ span: 3 }" :key="key">
|
||||
<div class="apply-col">
|
||||
<div @click="applyClick(item)">
|
||||
<img :src="item.src">
|
||||
<p>{{ item.label }}</p>
|
||||
<!-- 审批中心 -->
|
||||
<Badge v-if="item.value == 'approve' && approveUnreadNumber > 0" class="manage-box-top-report"
|
||||
:overflow-count="999" :count="approveUnreadNumber" />
|
||||
<!-- 工作报告 -->
|
||||
<Badge v-if="item.value == 'report' && reportUnreadNumber > 0" class="manage-box-top-report" :overflow-count="999" :count="reportUnreadNumber"/>
|
||||
<Badge v-if="item.value == 'report' && reportUnreadNumber > 0" class="manage-box-top-report"
|
||||
:overflow-count="999" :count="reportUnreadNumber" />
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
@ -40,50 +45,39 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<div v-if="aibotType==1">
|
||||
<ul class="aibot-ul">
|
||||
<li>
|
||||
<img src="/images/avatar/default_openai.png">
|
||||
<h4>ChatGPT</h4>
|
||||
<p>我是一个人工智能助手,为用户提供问题解答和指导。我没有具体的身份,只是一个程序。您有什么问题可以问我哦?</p>
|
||||
<p class="btn">去聊天</p>
|
||||
</li>
|
||||
<li>
|
||||
<img src="/images/avatar/default_claude.png">
|
||||
<h4>Claude</h4>
|
||||
<p>我是Claude,一个由Anthropic公司创造出来的AI助手机器人。我的工作是帮助人类,与人对话并给出解答。</p>
|
||||
<p class="btn">去聊天</p>
|
||||
</li>
|
||||
<li>
|
||||
<img src="/avatar/Wenxin.png">
|
||||
<h4>文心一言 (Wenxin)</h4>
|
||||
<p>我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。</p>
|
||||
<p class="btn">去聊天</p>
|
||||
</li>
|
||||
<li>
|
||||
<img src="/avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png">
|
||||
<h4>通义千问 (Qianwen)</h4>
|
||||
<p>我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。</p>
|
||||
<p class="btn">去聊天</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div v-if="aibotType==2">
|
||||
<Tabs v-model="aibotTabAction" style="height: 100%;display: flex;flex-direction: column;">
|
||||
<TabPane label="ChatGPT" name="opanai" style="height: 100%;">
|
||||
<div style="position: relative;height: 100%;"> <SystemAibot type="ChatGPT"/></div>
|
||||
</TabPane>
|
||||
<TabPane label="Claude" name="claude" style="height: 100%;">
|
||||
<div style="position: relative;height: 100%;"> <SystemAibot type="Claude"/></div>
|
||||
</TabPane>
|
||||
<TabPane label="文心一言" name="wenxin" style="height: 100%;">
|
||||
<div style="position: relative;height: 100%;"> <SystemAibot type="Wenxin"/></div>
|
||||
</TabPane>
|
||||
<TabPane label="通义千问" name="qianwen" style="height: 100%;">
|
||||
<div style="position: relative;height: 100%;"> <SystemAibot type="Qianwen"/></div>
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
</div>
|
||||
<ul class="ivu-modal-wrap-ul" v-if="aibotType == 1">
|
||||
<li v-for="(item, key) in aibotList" @click="onGoToChat(item.value)" :key="key">
|
||||
<img :src="item.src">
|
||||
<h4>{{ item.label }}</h4>
|
||||
<p>{{ item.desc }}</p>
|
||||
<p class="btn">{{ $L('去聊天') }}</p>
|
||||
<div class="load" v-if="aibotDialogSearchLoad == item.value">
|
||||
<Loading />
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<Tabs v-else v-model="aibotTabAction">
|
||||
<TabPane label="ChatGPT" name="opanai">
|
||||
<div class="aibot-warp">
|
||||
<SystemAibot type="ChatGPT" v-if="aibotTabAction == 'opanai'" />
|
||||
</div>
|
||||
</TabPane>
|
||||
<TabPane label="Claude" name="claude">
|
||||
<div class="aibot-warp">
|
||||
<SystemAibot type="Claude" v-if="aibotTabAction == 'claude'" />
|
||||
</div>
|
||||
</TabPane>
|
||||
<TabPane label="文心一言" name="wenxin">
|
||||
<div class="aibot-warp">
|
||||
<SystemAibot type="Wenxin" v-if="aibotTabAction == 'wenxin'" />
|
||||
</div>
|
||||
</TabPane>
|
||||
<TabPane label="通义千问" name="qianwen">
|
||||
<div class="aibot-warp">
|
||||
<SystemAibot type="Qianwen" v-if="aibotTabAction == 'qianwen'" />
|
||||
</div>
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
@ -98,8 +92,8 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<Checkin v-if="signType==1"/>
|
||||
<SystemCheckin v-if="signType==2"/>
|
||||
<Checkin v-if="signType == 1" />
|
||||
<SystemCheckin v-else />
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
@ -108,64 +102,68 @@
|
||||
<DrawerOverlay v-model="meetingShow" placement="right" :size="600">
|
||||
<div class="ivu-modal-wrap-apply">
|
||||
<div class="ivu-modal-wrap-apply-title">
|
||||
{{ $L('会议功能') }}
|
||||
{{ $L('会议') }}
|
||||
<p @click="meetingType = meetingType == 1 ? 2 : 1">
|
||||
{{ meetingType == 1 ? $L('会议设置') : $L('返回') }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<div v-if="meetingType==1">
|
||||
<Form ref="addForm" :model="meetingAddData" label-width="auto" @submit.native.prevent>
|
||||
<template v-if="meetingAddData.type === 'join'">
|
||||
<!-- 加入会议 -->
|
||||
<FormItem v-if="meetingAddData.name" prop="userids" :label="$L('会议主题')">
|
||||
<Input v-model="meetingAddData.name" disabled/>
|
||||
</FormItem>
|
||||
<FormItem prop="meetingid" :label="$L('会议频道ID')">
|
||||
<Input v-model="meetingAddData.meetingid" :disabled="meetingAddData.meetingdisabled === true" :placeholder="$L('请输入会议频道ID')"/>
|
||||
</FormItem>
|
||||
</template>
|
||||
<template v-else>
|
||||
<!-- 新会议 -->
|
||||
<FormItem prop="name" :label="$L('会议主题')">
|
||||
<Input v-model="meetingAddData.name" :maxlength="50" :placeholder="$L('选填')"/>
|
||||
</FormItem>
|
||||
<FormItem prop="meetingid" :label="$L('会议频道ID')">
|
||||
<Input v-model="meetingAddData.meetingid" :disabled="meetingAddData.meetingdisabled === true" :placeholder="$L('请输入会议频道ID')"/>
|
||||
</FormItem>
|
||||
<FormItem prop="userids" :label="$L('邀请成员')">
|
||||
<UserSelect v-model="meetingAddData.userids" :uncancelable="[userId]" :multiple-max="20" :title="$L('选择邀请成员')"/>
|
||||
</FormItem>
|
||||
</template>
|
||||
<FormItem prop="tracks">
|
||||
<CheckboxGroup v-model="meetingAddData.tracks">
|
||||
<Checkbox label="audio">
|
||||
<span>{{$L('麦克风')}}</span>
|
||||
</Checkbox>
|
||||
<Checkbox label="video">
|
||||
<span>{{$L('摄像头')}}</span>
|
||||
</Checkbox>
|
||||
</CheckboxGroup>
|
||||
</FormItem>
|
||||
</Form>
|
||||
<div slot="footer" class="adaption">
|
||||
<!-- <Button type="default" @click="meetingShow=false">{{$L('取消')}}</Button> -->
|
||||
<Button type="primary" :loading="meetingLoadIng > 0" @click="onMeetingSubmit">{{$L(meetingAddData.type === 'join' ? '加入会议' : '开始会议')}}</Button>
|
||||
</div>
|
||||
<!--
|
||||
<p @click="onAddMenu('createMeeting')" style="cursor: pointer;color: #2b85e4; padding: 10px;
|
||||
border: 1px solid;
|
||||
border-radius: 5px;">新会议</p>
|
||||
|
||||
<p @click="onAddMenu('joinMeeting')" style="cursor: pointer;color: #2b85e4; padding: 10px;
|
||||
border: 1px solid;
|
||||
border-radius: 5px;margin-top: 30px;">加入会议</p> -->
|
||||
</div>
|
||||
<SystemMeeting v-if="meetingType==2"/>
|
||||
<ul class="ivu-modal-wrap-ul" v-if="meetingType == 1">
|
||||
<li @click="onMeeting('createMeeting')">
|
||||
<img :src="$A.apiUrl('../images/apply/meeting.svg')">
|
||||
<h4>{{ $L('新会议') }}</h4>
|
||||
<p>{{ $L('创建一个全新的会议视频会议,与会者可以在实时中进行面对面的视听交流。通过视频会议平台,参与者可以分享屏幕、共享文档,并与其他与会人员进行讨论和协。作') }}</p>
|
||||
<p class="btn">{{ $L('新建会议') }}</p>
|
||||
</li>
|
||||
<li @click="onMeeting('joinMeeting')">
|
||||
<img :src="$A.apiUrl('../images/apply/joinMeeting.svg')">
|
||||
<h4>{{ $L('加入会议') }}</h4>
|
||||
<p>{{ $L('加入视频会议,参与已经创建的会议,在会议过程中与其他参会人员进行远程实时视听交流和协作。') }}</p>
|
||||
<p class="btn">{{ $L('加入会议') }}</p>
|
||||
</li>
|
||||
</ul>
|
||||
<SystemMeeting v-else />
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
|
||||
<!--LDAP-->
|
||||
<DrawerOverlay v-model="ldapShow" placement="right" :size="700">
|
||||
<div class="ivu-modal-wrap-apply">
|
||||
<div class="ivu-modal-wrap-apply-title">
|
||||
{{ $L('LDAP设置') }}
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<SystemThirdAccess />
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
|
||||
<!--邮件-->
|
||||
<DrawerOverlay v-model="mailShow" placement="right" :size="700">
|
||||
<div class="ivu-modal-wrap-apply">
|
||||
<div class="ivu-modal-wrap-apply-title">
|
||||
{{ $L('邮件管理') }}
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<SystemEmailSetting />
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
|
||||
<!--app推送-->
|
||||
<DrawerOverlay v-model="appPushShow" placement="right" :size="700">
|
||||
<div class="ivu-modal-wrap-apply">
|
||||
<div class="ivu-modal-wrap-apply-title">
|
||||
{{ $L('APP推送') }}
|
||||
</div>
|
||||
<div class="ivu-modal-wrap-apply-body">
|
||||
<SystemAppPush />
|
||||
</div>
|
||||
</div>
|
||||
</DrawerOverlay>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -178,40 +176,55 @@ import SystemAibot from "./setting/components/SystemAibot";
|
||||
import SystemCheckin from "./setting/components/SystemCheckin";
|
||||
import Checkin from "./setting/checkin";
|
||||
import SystemMeeting from "./setting/components/SystemMeeting";
|
||||
import {Store} from "le5le-store";
|
||||
import SystemThirdAccess from "./setting/components/SystemThirdAccess";
|
||||
import SystemEmailSetting from "./setting/components/SystemEmailSetting";
|
||||
import SystemAppPush from "./setting/components/SystemAppPush";
|
||||
import { Store } from "le5le-store";
|
||||
|
||||
export default {
|
||||
components: { UserSelect, DrawerOverlay, Report, SystemAibot, SystemCheckin, Checkin, SystemMeeting },
|
||||
components: {
|
||||
UserSelect,
|
||||
DrawerOverlay,
|
||||
Report,
|
||||
SystemAibot,
|
||||
SystemCheckin,
|
||||
Checkin,
|
||||
SystemMeeting,
|
||||
SystemThirdAccess,
|
||||
SystemEmailSetting,
|
||||
SystemAppPush
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
applyList: [
|
||||
{ value: "approve", label: "审批中心", src: "/images/apply/approve.svg" },
|
||||
{ value: "report", label: "工作报告", src: "/images/apply/report.svg"},
|
||||
{ value: "ai", label: "AI机器人", src: "/images/apply/robot.svg" },
|
||||
{ value: "signIn", label: "签到", src: "/images/apply/signin.svg" },
|
||||
{ value: "meeting", label: "会议", src: "/images/apply/meeting.svg" },
|
||||
{ value: "ldap", label: "LDAP", src: "/images/apply/ldap.svg" },
|
||||
{ value: "mail", label: "邮件", src: "/images/apply/mail.svg" },
|
||||
{ value: "appPush", label: "APP推送", src: "/images/apply/apppush.svg" },
|
||||
],
|
||||
|
||||
applyList: [],
|
||||
//
|
||||
workReportShow: false,
|
||||
workReportTabs: "my",
|
||||
|
||||
//
|
||||
aibotList: [
|
||||
{ value: "openai", label: "ChatGPT", src: $A.apiUrl('../images/avatar/default_openai.png'), desc: this.$L('我是一个人工智能助手,为用户提供问题解答和指导。我没有具体的身份,只是一个程序。您有什么问题可以问我哦?') },
|
||||
{ value: "claude", label: "Claude", src: $A.apiUrl('../images/avatar/default_claude.png'), desc: this.$L('我是Claude,一个由Anthropic公司创造出来的AI助手机器人。我的工作是帮助人类,与人对话并给出解答。') },
|
||||
{ value: "wenxin", label: "Wenxin", src: $A.apiUrl('../avatar/Wenxin.png'), desc: this.$L('我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。') },
|
||||
{ value: "qianwen", label: "Qianwen", src: $A.apiUrl('../avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png'), desc: this.$L('我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。') },
|
||||
],
|
||||
aibotTabAction: "opanai",
|
||||
aibotShow: false,
|
||||
aibotType: 1,
|
||||
|
||||
aibotDialogSearchLoad: "",
|
||||
//
|
||||
signInShow: false,
|
||||
signType: 1,
|
||||
|
||||
//
|
||||
meetingShow: false,
|
||||
meetingType: 1,
|
||||
meetingAddData: {
|
||||
userids: [],
|
||||
tracks: ['audio']
|
||||
},
|
||||
meetingLoadIng: 0
|
||||
//
|
||||
ldapShow: false,
|
||||
//
|
||||
mailType: 1,
|
||||
mailShow: false,
|
||||
//
|
||||
appPushType: 1,
|
||||
appPushShow: false,
|
||||
}
|
||||
},
|
||||
|
||||
@ -219,18 +232,46 @@ export default {
|
||||
},
|
||||
|
||||
mounted() {
|
||||
|
||||
},
|
||||
|
||||
activated() {
|
||||
this.applyList = [
|
||||
{ value: "approve", label: "审批中心", src: $A.apiUrl('../images/apply/approve.svg') },
|
||||
{ value: "report", label: "工作报告", src: $A.apiUrl('../images/apply/report.svg') },
|
||||
{ value: "ai", label: "AI机器人", src: $A.apiUrl('../images/apply/robot.svg') },
|
||||
{ value: "signIn", label: "签到", src: $A.apiUrl('../images/apply/signin.svg') },
|
||||
{ value: "meeting", label: "会议", src: $A.apiUrl('../images/apply/meeting.svg') },
|
||||
{ value: "ldap", label: "LDAP", src: $A.apiUrl('../images/apply/ldap.svg'), isAdmin: true },
|
||||
{ value: "mail", label: "邮件", src: $A.apiUrl('../images/apply/mail.svg'), isAdmin: true },
|
||||
{ value: "appPush", label: "APP推送", src: $A.apiUrl('../images/apply/apppush.svg'), isAdmin: true }
|
||||
];
|
||||
if (this.windowOrientation == 'portrait') {
|
||||
this.applyList.push({ value: "calendar", label: "日历", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
this.applyList.push({ value: "file", label: "文件", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
this.applyList.push({ value: "addProject", label: "创建项目", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
this.applyList.push({ value: "addTask", label: "添加任务", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
if ($A.isEEUiApp) {
|
||||
this.applyList.push({ value: "scan", label: "扫一扫", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
}
|
||||
if (this.userIsAdmin) {
|
||||
this.applyList.push({ value: "allUser", label: "团队管理", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
}
|
||||
this.applyList.push({ value: "setting", label: "设置", src: $A.apiUrl('../images/apply/apppush.svg') })
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState([
|
||||
'userInfo',
|
||||
'userIsAdmin',
|
||||
|
||||
|
||||
'reportUnreadNumber',
|
||||
'approveUnreadNumber',
|
||||
|
||||
'cacheDialogs',
|
||||
|
||||
'windowOrientation',
|
||||
]),
|
||||
|
||||
},
|
||||
@ -241,9 +282,13 @@ export default {
|
||||
|
||||
methods: {
|
||||
applyClick(item) {
|
||||
this.$emit("on-click", item.value)
|
||||
switch (item.value) {
|
||||
case 'approve':
|
||||
this.goForward({name: 'manage-approve'});
|
||||
case 'calendar':
|
||||
case 'file':
|
||||
case 'setting':
|
||||
this.goForward({ name: 'manage-' + item.value });
|
||||
break;
|
||||
case 'report':
|
||||
this.workReportShow = true;
|
||||
@ -254,14 +299,70 @@ export default {
|
||||
this.aibotShow = true;
|
||||
break;
|
||||
case 'signIn':
|
||||
this.signInType = 1;
|
||||
this.signInShow = true;
|
||||
break;
|
||||
case 'meeting':
|
||||
this.meetingType = 1;
|
||||
this.meetingShow = true;
|
||||
break;
|
||||
case 'ldap':
|
||||
this.ldapShow = true;
|
||||
break;
|
||||
case 'mail':
|
||||
this.mailType = 1;
|
||||
this.mailShow = true;
|
||||
break;
|
||||
case 'appPush':
|
||||
this.appPushType = 1;
|
||||
this.appPushShow = true;
|
||||
break;
|
||||
}
|
||||
},
|
||||
onAddMenu(name) {
|
||||
// 去聊天
|
||||
onGoToChat(type) {
|
||||
let dialogId = 0;
|
||||
let email = `ai-${type}@bot.system`;
|
||||
this.cacheDialogs.map(h => {
|
||||
if (h.email == email) {
|
||||
dialogId = h.id;
|
||||
}
|
||||
})
|
||||
if (dialogId) {
|
||||
if (this.windowOrientation == 'portrait') {
|
||||
this.$store.dispatch("openDialog", dialogId)
|
||||
} else {
|
||||
this.goForward({ name: 'manage-messenger', params: { dialog_id: dialogId } });
|
||||
}
|
||||
this.aibotShow = false;
|
||||
} else {
|
||||
this.aibotDialogSearchLoad = type;
|
||||
this.$store.dispatch("call", {
|
||||
url: 'dialog/search',
|
||||
data: { key: email },
|
||||
}).then(({ data }) => {
|
||||
if (data?.length < 1) {
|
||||
$A.messageError('机器人暂未开启');
|
||||
this.aibotDialogSearchLoad = '';
|
||||
return;
|
||||
}
|
||||
this.$store.dispatch("openDialogUserid", data[0]?.dialog_user.userid).then(_ => {
|
||||
if (this.windowOrientation != 'portrait') {
|
||||
this.goForward({ name: 'manage-messenger' })
|
||||
}
|
||||
this.aibotShow = false;
|
||||
}).catch(({ msg }) => {
|
||||
$A.modalError(msg)
|
||||
}).finally(_ => {
|
||||
this.aibotDialogSearchLoad = '';
|
||||
});
|
||||
}).catch(_ => {
|
||||
this.aibotDialogSearchLoad = '';
|
||||
});
|
||||
}
|
||||
},
|
||||
// 会议
|
||||
onMeeting(name) {
|
||||
switch (name) {
|
||||
case 'createMeeting':
|
||||
Store.set('addMeeting', {
|
||||
@ -276,9 +377,6 @@ export default {
|
||||
break;
|
||||
}
|
||||
this.meetingShow = false;
|
||||
},
|
||||
onMeetingSubmit(){
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,10 +7,13 @@
|
||||
<div class="approve-nav">
|
||||
<h1>{{$L('审批中心')}}</h1>
|
||||
</div>
|
||||
<Button :loading="addLoadIng" type="primary" @click="addApply">{{$L("添加申请")}}</Button>
|
||||
<Button v-if="showType == 1" :loading="addLoadIng" type="primary" @click="addApply">{{$L("添加申请")}}</Button>
|
||||
<Button v-if="userIsAdmin" @click="showType = showType == 1 ? 2 : 1">
|
||||
{{ showType == 1 ? $L("流程设置") : $L("返回") }}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<Tabs :value="tabsValue" @on-click="tabsClick" style="margin: 0 20px;height: 100%;" size="small">
|
||||
|
||||
<Tabs v-if="showType==1" :value="tabsValue" @on-click="tabsClick" style="margin: 0 20px;height: 100%;" size="small">
|
||||
<TabPane :label="$L('待办') + (unreadTotal > 0 ? ('('+unreadTotal+')') : '')" name="unread" style="height: 100%;">
|
||||
<div class="approve-main-search">
|
||||
<div>
|
||||
@ -132,6 +135,8 @@
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
|
||||
<ApproveSetting v-else/>
|
||||
|
||||
</div>
|
||||
|
||||
<!--详情-->
|
||||
@ -214,13 +219,16 @@ import list from "./list.vue";
|
||||
import listDetails from "./details.vue";
|
||||
import DrawerOverlay from "../../../components/DrawerOverlay";
|
||||
import ImgUpload from "../../../components/ImgUpload";
|
||||
import ApproveSetting from "./setting";
|
||||
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
export default {
|
||||
components:{list,listDetails,DrawerOverlay,ImgUpload},
|
||||
components:{list,listDetails,DrawerOverlay,ImgUpload,ApproveSetting},
|
||||
name: "approve",
|
||||
data() {
|
||||
return {
|
||||
showType: 1,
|
||||
modalTransferIndex: window.modalTransferIndex,
|
||||
|
||||
minDate: new Date(2020, 0, 1),
|
||||
@ -340,6 +348,11 @@ export default {
|
||||
if(!val){
|
||||
this.addData.other = ""
|
||||
}
|
||||
},
|
||||
showType(val){
|
||||
if(val == 1){
|
||||
this.tabsClick()
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -682,6 +695,9 @@ export default {
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
workflowSetting() {
|
||||
console.log(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
<template>
|
||||
<div class="setting-item submit">
|
||||
<Row class="approve-row" :gutter="8">
|
||||
<Col :xxl="{ span: 6 }" :xl="{ span: 8 }" :lg="{ span: 12 }" :sm="{ span: 24 }" :xs="{ span: 24 }" >
|
||||
<div class="page-approve-setting">
|
||||
<Row class="approve-row" :gutter="16">
|
||||
<Col :xxl="{ span: 6 }" :xl="{ span: 8 }" :lg="{ span: 12 }" :sm="{ span: 12 }" :xs="{ span: 24 }" >
|
||||
<div class="approve-col-box approve-col-add" @click="add">
|
||||
<Icon type="md-add" />
|
||||
</div>
|
||||
</Col>
|
||||
<Col v-for="(item, key) in list" :xxl="{ span: 6 }" :xl="{ span: 8 }" :lg="{ span: 12 }" :sm="{ span: 24 }" :xs="{ span: 24 }" :key="key">
|
||||
<Col v-for="(item, key) in list" :xxl="{ span: 6 }" :xl="{ span: 8 }" :lg="{ span: 12 }" :sm="{ span: 12 }" :xs="{ span: 24 }" :key="key">
|
||||
<div class="approve-col-box approve-col-for" @click="edit(item)">
|
||||
<p>{{$L('流程名称')}}:<span style="font-weight: 500;color: #135de6;">{{$L(item.name)}}</span></p>
|
||||
<Divider style="margin: 12px 0;margin-bottom: 9px;"/>
|
||||
<p>{{$L('流程名称')}}:<span class="approve-name">{{$L(item.name)}}</span></p>
|
||||
<Divider class="divider"/>
|
||||
<div class="approve-button-box" @click.stop="edit(item)">
|
||||
<p>{{$L('已发布')}}</p>
|
||||
<p @click.stop="change(item)" style="position: relative;">
|
||||
<p class="icon-warp" @click.stop="change(item)" >
|
||||
<Icon type="md-trash" size="16" class="delcon"/>
|
||||
</p>
|
||||
</div>
|
||||
@ -33,7 +33,7 @@ import DrawerOverlay from "../../../components/DrawerOverlay";
|
||||
import store from '../../../store/state'
|
||||
import {languageType} from "../../../language";
|
||||
export default {
|
||||
name: "approve",
|
||||
name: "ApproveSetting",
|
||||
components: {DrawerOverlay},
|
||||
data(){
|
||||
return{
|
||||
@ -453,6 +453,18 @@ export default {
|
||||
if (['dialog', 'contacts'].includes(params.dialogAction)) {
|
||||
this.tabActive = params.dialogAction
|
||||
}
|
||||
if(this.tabActive=='dialog'){
|
||||
if(params.dialog_id){
|
||||
const id = $A.runNum(params.dialog_id);
|
||||
if (id > 0) {
|
||||
this.openDialog(id)
|
||||
}
|
||||
this.clickAgainSubscribe = Store.subscribe('clickAgainDialog', this.shakeUnread);
|
||||
}
|
||||
if(params.search){
|
||||
this.dialogSearchKey = params.search
|
||||
}
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
|
||||
@ -74,7 +74,6 @@ export default {
|
||||
{path: 'personal', name: '个人设置'},
|
||||
{path: 'password', name: '密码设置'},
|
||||
{path: 'email', name: '修改邮箱'},
|
||||
{path: 'checkin', name: '签到设置', desc: ' (Beta)'},
|
||||
{path: 'language', name: '语言设置', divided: true},
|
||||
{path: 'theme', name: '主题设置'},
|
||||
]
|
||||
@ -93,7 +92,6 @@ export default {
|
||||
if (this.userIsAdmin) {
|
||||
menu.push(...[
|
||||
{path: 'system', name: '系统设置', divided: true},
|
||||
{path: 'approve', name: '审批设置', desc: ' (Beta)'},
|
||||
{path: 'license', name: 'License Key'},
|
||||
])
|
||||
}
|
||||
|
||||
@ -10,24 +10,6 @@
|
||||
<TabPane :label="$L('项目模板')" name="columnTemplate">
|
||||
<SystemColumnTemplate/>
|
||||
</TabPane>
|
||||
<TabPane :label="$L('AI机器人')" name="aibot">
|
||||
<SystemAibot/>
|
||||
</TabPane>
|
||||
<TabPane :label="$L('会议功能')" name="meeting">
|
||||
<SystemMeeting/>
|
||||
</TabPane>
|
||||
<TabPane :label="$L('签到功能')" name="checkin">
|
||||
<SystemCheckin/>
|
||||
</TabPane>
|
||||
<TabPane :label="$L('邮件设置')" name="emailSetting">
|
||||
<SystemEmailSetting/>
|
||||
</TabPane>
|
||||
<TabPane :label="$L('认证设置')" name="thirdAccess">
|
||||
<SystemThirdAccess/>
|
||||
</TabPane>
|
||||
<TabPane v-if="$A.isDooServer()" :label="$L('APP推送')" name="appPush">
|
||||
<SystemAppPush/>
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
</div>
|
||||
</template>
|
||||
@ -36,20 +18,9 @@
|
||||
import SystemSetting from "./components/SystemSetting";
|
||||
import SystemTaskPriority from "./components/SystemTaskPriority";
|
||||
import SystemColumnTemplate from "./components/SystemColumnTemplate";
|
||||
import SystemEmailSetting from "./components/SystemEmailSetting";
|
||||
import SystemAppPush from "./components/SystemAppPush";
|
||||
import SystemMeeting from "./components/SystemMeeting";
|
||||
import SystemCheckin from "./components/SystemCheckin";
|
||||
import SystemThirdAccess from "./components/SystemThirdAccess";
|
||||
import SystemAibot from "./components/SystemAibot.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
SystemAibot,
|
||||
SystemThirdAccess,
|
||||
SystemCheckin,
|
||||
SystemMeeting,
|
||||
SystemAppPush, SystemColumnTemplate, SystemTaskPriority, SystemSetting, SystemEmailSetting},
|
||||
components: {SystemColumnTemplate, SystemTaskPriority, SystemSetting},
|
||||
data() {
|
||||
return {
|
||||
tabAction: 'setting',
|
||||
|
||||
5
resources/assets/js/routes.js
vendored
5
resources/assets/js/routes.js
vendored
@ -54,11 +54,6 @@ export default [
|
||||
path: 'checkin',
|
||||
component: () => import('./pages/manage/setting/checkin.vue'),
|
||||
},
|
||||
{
|
||||
name: 'manage-setting-approve',
|
||||
path: 'approve',
|
||||
component: () => import('./pages/manage/setting/approve.vue'),
|
||||
},
|
||||
{
|
||||
name: 'manage-setting-language',
|
||||
path: 'language',
|
||||
|
||||
149
resources/assets/sass/pages/page-apply.scss
vendored
149
resources/assets/sass/pages/page-apply.scss
vendored
@ -3,6 +3,7 @@
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.apply-wrapper {
|
||||
flex: 1;
|
||||
height: 0;
|
||||
@ -10,29 +11,35 @@
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
background-color: #fafafa;
|
||||
|
||||
.apply-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-bottom: 16px;
|
||||
margin: 32px 32px 0 32px;
|
||||
border-bottom: 1px solid #F4F4F5;
|
||||
|
||||
.apply-nav {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
> h1 {
|
||||
|
||||
>h1 {
|
||||
color: $primary-title-color;
|
||||
font-size: 28px;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
.apply-row{
|
||||
|
||||
.apply-row {
|
||||
flex: 1;
|
||||
padding: 16px 30px;
|
||||
.apply-col{
|
||||
|
||||
.apply-col {
|
||||
margin-bottom: 16px;
|
||||
>div{
|
||||
|
||||
>div {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
background: #ffffff;
|
||||
@ -44,12 +51,23 @@
|
||||
gap: 10px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
border: 1px solid #ececec;
|
||||
>img{
|
||||
border: 1px solid #f1f1f1;
|
||||
|
||||
@media (max-width: 510px) {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
>img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
||||
@media (max-width: 510px) {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
.manage-box-top-report{
|
||||
|
||||
.manage-box-top-report {
|
||||
position: absolute;
|
||||
right: -6px;
|
||||
top: -6px;
|
||||
@ -60,29 +78,37 @@
|
||||
}
|
||||
}
|
||||
|
||||
.ivu-modal-wrap-apply{
|
||||
.ivu-modal-wrap-apply {
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.ivu-modal-wrap-apply-title{
|
||||
max-width: calc(100vw - 40px);
|
||||
overflow: auto;
|
||||
|
||||
.ivu-modal-wrap-apply-title {
|
||||
line-height: 40px;
|
||||
font-size: 20px;
|
||||
font-weight: 500;
|
||||
padding: 12px 30px;
|
||||
>p{
|
||||
|
||||
>p {
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
color: #2b85e4;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.ivu-modal-wrap-apply-body{
|
||||
|
||||
.ivu-modal-wrap-apply-body {
|
||||
position: relative;
|
||||
flex: 1;
|
||||
padding: 8px 30px;
|
||||
.setting-component-item,.setting-item{
|
||||
|
||||
//
|
||||
.setting-component-item,
|
||||
.setting-item {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@ -91,29 +117,34 @@
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
>.ivu-form{
|
||||
|
||||
>.ivu-form {
|
||||
padding: 8px 30px;
|
||||
overflow: auto;
|
||||
flex: 1;
|
||||
.ivu-form-item{
|
||||
padding: 12px 0 0 0;
|
||||
.ivu-form-item .ivu-form-item-content{
|
||||
display: flex;
|
||||
>.ivu-form{
|
||||
margin-bottom: 8px;
|
||||
|
||||
.ivu-form-item {
|
||||
padding: 12px 0 0 0;
|
||||
|
||||
.ivu-form-item .ivu-form-item-content {
|
||||
display: flex;
|
||||
|
||||
>.ivu-form {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.block-setting-box{
|
||||
|
||||
.block-setting-box {
|
||||
position: relative;
|
||||
padding: 24px 24px 4px;
|
||||
margin: 24px 0 12px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #eeeeee;
|
||||
transition: box-shadow 0.3s;
|
||||
h3{
|
||||
|
||||
h3 {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 24px;
|
||||
@ -127,17 +158,21 @@
|
||||
transform: translateY(-50%)
|
||||
}
|
||||
}
|
||||
.setting-template{
|
||||
|
||||
.setting-template {
|
||||
margin-bottom: 12px;
|
||||
>div{
|
||||
|
||||
>div {
|
||||
padding-right: 12px;
|
||||
}
|
||||
}
|
||||
.export-data > p {
|
||||
|
||||
.export-data>p {
|
||||
cursor: pointer;
|
||||
color: #2b85e4;
|
||||
}
|
||||
.setting-footer{
|
||||
|
||||
.setting-footer {
|
||||
flex-shrink: 0;
|
||||
position: static;
|
||||
padding: 16px;
|
||||
@ -148,36 +183,47 @@
|
||||
}
|
||||
}
|
||||
|
||||
.ivu-tabs-content{
|
||||
flex: 1;
|
||||
//
|
||||
.ivu-tabs {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
|
||||
.ivu-tabs-content {
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 机器人
|
||||
.aibot-ul {
|
||||
//
|
||||
.ivu-modal-wrap-ul {
|
||||
list-style-type: none;
|
||||
overflow: hidden;
|
||||
border-radius: 3px;
|
||||
margin-right: -10px;
|
||||
li{
|
||||
|
||||
li {
|
||||
float: left;
|
||||
width: calc(50% - 10px);
|
||||
border: 1px solid #eeeeee;
|
||||
box-sizing: border-box;
|
||||
padding: 28px;
|
||||
padding: 28px 20px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
img{
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 16px;
|
||||
margin: 0 auto 12px;
|
||||
}
|
||||
h4{
|
||||
|
||||
h4 {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
@ -192,21 +238,46 @@
|
||||
padding: 0 12px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
p{
|
||||
|
||||
p {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 4;
|
||||
@media (max-width: 510px) {
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
}
|
||||
.btn{
|
||||
|
||||
.btn {
|
||||
color: #2b85e4;
|
||||
margin: 26px auto 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.load {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #9797971c;
|
||||
line-height: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 机器人
|
||||
.aibot-warp {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
|
||||
.ivu-form {
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
84
resources/assets/sass/pages/page-approve.scss
vendored
84
resources/assets/sass/pages/page-approve.scss
vendored
@ -18,6 +18,7 @@
|
||||
margin: 32px 20px 16px;
|
||||
margin-bottom: 5px;
|
||||
border-bottom: 1px solid #F4F4F5;
|
||||
gap: 10px;
|
||||
|
||||
.approve-nav {
|
||||
flex: 1;
|
||||
@ -374,3 +375,86 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.page-approve-setting{
|
||||
|
||||
.approve-row {
|
||||
padding: 24px;
|
||||
overflow: auto;
|
||||
margin: 0 !important;
|
||||
|
||||
.ivu-col {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.approve-col-box {
|
||||
border-radius: 8px;
|
||||
border: 1px solid #eeeeee;
|
||||
transition: box-shadow 0.3s;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 0 10px #e6ecfa;
|
||||
}
|
||||
}
|
||||
|
||||
.approve-col-add {
|
||||
height: 100%;
|
||||
font-size: 48px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #ededed;
|
||||
min-height: 95px;
|
||||
}
|
||||
|
||||
.approve-col-for {
|
||||
padding: 16px;
|
||||
padding-bottom: 13px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.approve-name{
|
||||
font-weight: 500;
|
||||
color: #135de6;
|
||||
}
|
||||
|
||||
.divider{
|
||||
margin: 12px 0;
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.icon-warp{
|
||||
position: relative;
|
||||
}
|
||||
|
||||
> p {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.approve-button-box {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
> p {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
> i {
|
||||
font-size: 16px;
|
||||
margin-left: 8px;
|
||||
color: rgb(96, 98, 102);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
.window-portrait .page-approve .approve-mains {
|
||||
height: calc(100vh - 250px);
|
||||
}
|
||||
59
resources/assets/sass/pages/page-setting.scss
vendored
59
resources/assets/sass/pages/page-setting.scss
vendored
@ -349,65 +349,6 @@
|
||||
.setting-button {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.approve-row {
|
||||
padding: 24px 40px;
|
||||
overflow: auto;
|
||||
|
||||
.ivu-col {
|
||||
margin-bottom: 8px;
|
||||
|
||||
.approve-col-box {
|
||||
border-radius: 8px;
|
||||
border: 1px solid #eeeeee;
|
||||
transition: box-shadow 0.3s;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 0 10px #e6ecfa;
|
||||
}
|
||||
}
|
||||
|
||||
.approve-col-add {
|
||||
height: 100%;
|
||||
font-size: 48px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #ededed;
|
||||
min-height: 95px;
|
||||
}
|
||||
|
||||
.approve-col-for {
|
||||
padding: 16px;
|
||||
padding-bottom: 13px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
> p {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.approve-button-box {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
> p {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
> i {
|
||||
font-size: 16px;
|
||||
margin-left: 8px;
|
||||
color: rgb(96, 98, 102);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="48" height="48" viewBox="0 0 48 48"><defs><clipPath id="master_svg0_3054_25658"><rect x="12" y="12" width="24" height="24" rx="0"/></clipPath></defs><g><rect x="0" y="0" width="48" height="48" rx="12" fill="#72A1F7" fill-opacity="1"/><g clip-path="url(#master_svg0_3054_25658)"><g><path d="M33.1767,19.46395L30.5723,21.34133L30.5723,19.01332C30.5723,17.34516,29.217,15.99442094,27.5489,16L15.01332,16C13.34911,15.999999801611,12,17.34911,12,19.01332L12,29.5822C12,31.2464,13.34911,32.595600000000005,15.01332,32.595600000000005L27.5489,32.595600000000005C29.217,32.6011,30.5723,31.2504,30.5723,29.5822L30.5723,27.2542L33.182500000000005,29.1259C33.7237,29.5146,34.436800000000005,29.5683,35.0302,29.2651C35.623599999999996,28.9619,35.9979,28.3525,36,27.6861L36,20.907980000000002C36.0011,20.23879,35.626599999999996,19.62559,35.0308,19.32086C34.4351,19.01614,33.7187,19.07142,33.1767,19.46395Z" fill="#FFFFFF" fill-opacity="1"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
Loading…
x
Reference in New Issue
Block a user