Commit ba7900dc by maolipeng

Merge branch 'master' into feature/maolipeng/20210610/zuhuyouhua

# Conflicts:
#	src/common/js/user.ts
#	src/modules/root/Menu.tsx
parents 8120a9da 9e611ef6
......@@ -105,6 +105,10 @@
},
"scripts": {
"start": "node scripts/start.js",
"start:dev": "cross-env DEPLOY_ENV=dev node scripts/start.js",
"start:dev1": "cross-env DEPLOY_ENV=dev node scripts/start.js",
"start:rc": "cross-env DEPLOY_ENV=rc node scripts/start.js",
"start:gray": "cross-env DEPLOY_ENV=gray node scripts/start.js",
"build:dev": "cross-env DEPLOY_ENV=dev node scripts/build.js",
"build:dev1": "cross-env DEPLOY_ENV=dev node scripts/build.js",
"build:rc": "cross-env DEPLOY_ENV=rc node scripts/build.js",
......
......@@ -10,6 +10,8 @@ import Service from '@/common/js/service';
// import _ from 'underscore';
import './ChooseMembersModal.less';
import User from '@/common/js/user'
import { XMTable } from '@/components';
import college from '@/common/lottie/college';
const { Search } = Input;
......@@ -155,7 +157,7 @@ class ChooseMembersModal extends React.Component {
let rightsList = []; // 保存新加进去的成员
selectUserList.map((item) => {
rightsList.push({
rights: "LOOK_DOWNLOAD",
rights: "LOOK",
userId: item.userId
})
return rightsList
......@@ -203,10 +205,8 @@ class ChooseMembersModal extends React.Component {
title: '全选', // 实际为头像,但在表格上这行要求显示为全选
key: 'avatar',
dataIndex: 'avatar',
width: '40%',
render: (value, record) => {
const { adminName } = record;
return (
<div className='avatar'>
{
......@@ -232,7 +232,7 @@ class ChooseMembersModal extends React.Component {
title: '学员名',
key: 'adminNameRight',
dataIndex: 'adminName',
width: '70%',
width: '65%',
render: (value, record) => {
const { adminName = '', avatar } = record;
return (
......@@ -293,16 +293,19 @@ class ChooseMembersModal extends React.Component {
enterButton={<span className="icon iconfont">&#xe832;</span>}
/>
<div className='container-left-body-table'>
<Table
<XMTable
renderEmpty={{
image: college,
description: '暂无数据'
}}
rowKey={(record) => record.userId}
dataSource={allUserList}
columns={this.selectedColumnsLeft()}
pagination={false}
scroll={{ y: 290}}
// bordered={true}
size={'small'}
rowSelection={{
columnWidth : 24,
columnWidth : 63,
selectedRowKeys,
onChange : this.onChangeRow,
getCheckboxProps : this.getCheckboxProps,
......@@ -326,7 +329,11 @@ class ChooseMembersModal extends React.Component {
<span className={ (selectUserList.length > 0) ? 'span-right-l' : null }>清空</span>
</div>
<div className='container-right-body'>
<Table
<XMTable
renderEmpty={{
image: college,
description: '暂无数据'
}}
rowKey={(record) => record.userId}
dataSource={selectUserList}
columns={this.selectedColumnsRight()}
......
......@@ -37,7 +37,7 @@
>tr >td {
border-bottom: none;
background-color: #fff !important;
padding:8px 8px !important;
}
}
}
......@@ -45,6 +45,14 @@
.ant-empty-normal {
margin: 100px 0 !important;
}
.ant-empty {
margin-top: 60px;
}
.ant-empty-description {
color: #999;
}
.avatar{
display: flex;
align-items: center;
......@@ -119,6 +127,13 @@
margin: 144px 0 !important;
}
.ant-empty {
margin-top: 60px;
}
.ant-empty-description {
color: #999;
}
.avatar{
display: flex;
align-items: center;
......
......@@ -8,7 +8,7 @@ import React from 'react';
import { Modal, Button, Breadcrumb, Radio, message } from 'antd';
import Service from '@/common/js/service';
import { FILE_TYPE_ICON_MAP, DEFAULT_SIZE_UNIT } from "@/domains/resource-disk/constants";
import { LottieIcon } from 'xiaomai-b-components';
import LottieIcon from '@/components/LottieIcon';
import _ from 'underscore';
import { getEllipsText } from "@/domains/basic-domain/utils";
import * as lodash from 'lodash';
......@@ -80,7 +80,7 @@ class CopyFileModal extends React.Component {
// const { folderPathList, folderList } = this.state;
const { folderPathList, disk } = this.state;
const { dataInfo } = this.props;
const { id, createId, folderName } = dataInfo;
const { id, createId, folderName,folderType} = dataInfo;
const newParentId = folderPathList[folderPathList.length-1].id;
const _params = {
copyIds : [id], // 复制文件的ID
......@@ -99,7 +99,10 @@ class CopyFileModal extends React.Component {
}
return allowCopy;
})
if(folderPathList.length > 9 && folderType === 'FOLDER'){
allowCopy = 1;
message.warning('不能将文件夹复制到10级目录下');
}
if (allowCopy === 0) {
Service.Hades('public/hadesStore/copyFolder', _params).then((res) => {
if (res.success) {
......@@ -331,6 +334,8 @@ class CopyFileModal extends React.Component {
<div className="lottie-box">
<LottieIcon
title={<span className="desc">这个文件夹是空的</span>}
type="college"
size={150}
/>
</div>
}
......
......@@ -57,12 +57,17 @@
}
}
.lottie-box {
.copy-body {
.lottie-box {
border:1px solid #E8E8E8;
border-radius:4px;
height: 320px;
}
}
.lottie-icon{
margin: 100px 0;
.lottie-icon{
margin: 70px 0 !important;
.lottie-icon__title {
color: #999;
}
}
}
......@@ -19,7 +19,7 @@ class ManagingMembersModal extends React.Component {
addManagingMember: false, // 是否点击了添加成员
storeId :User.getStoreId() , // 学院Id
iconRotateList: [],
userAuthority : ['可编辑', '可查看/下载', '仅可查看', '', '创建者', '学院管理员'] , // 空 代表删除
userAuthority : ['可编辑', '可下载', '可查看', '', '创建者', '学院管理员'] , // 空 代表删除
}
}
componentDidMount() {
......@@ -64,7 +64,7 @@ class ManagingMembersModal extends React.Component {
// 修改成员权限
updateFileUserAuthority = (params, newRights = 1) => {
const rightList = ['EDIT', 'LOOK_DOWNLOAD', ''];
const rightList = ['EDIT', 'LOOK_DOWNLOAD', 'LOOK'];
let { iconRotateList } = this.state;
let _params = params;
_params.rights = rightList[newRights];
......@@ -173,10 +173,10 @@ class ManagingMembersModal extends React.Component {
<span className='menu-bottom'>下载、复制</span>
</div>
</Menu.Item>
{/* <Menu.Item key="LOOK" >
<div onClick={() => this.updateFileUserAuthority(params, 2)}>仅可查看</div>
<span className='menu-bottom'>{userAuthority[2]}</span>
</Menu.Item> */}
<Menu.Item key="LOOK" >
<div onClick={() => this.updateFileUserAuthority(params, 2)}>{userAuthority[2]}</div>
<span className='menu-bottom'>查看</span>
</Menu.Item>
<Menu.Divider key='LINE'/>
<Menu.Item key="REMOVE" >
<div className='remove' onClick={() => this.removeUser(params, userAuthority[3])}>移除</div>
......@@ -247,6 +247,8 @@ class ManagingMembersModal extends React.Component {
num = 1;
} else if (record.rights === "EDIT") {
num = 0;
}else if(record.rights=="LOOK"){
num = 2;
}
}
return (
......
......@@ -35,6 +35,9 @@
.ant-table-row{
background-color: #fff !important;
}
tr:first-child{
display: none;
}
.ant-table-row:hover{
background-color: #E9E9E9;
}
......
......@@ -10,7 +10,7 @@ import React from 'react';
import { Modal, Button, Radio, Checkbox, message, Tooltip } from 'antd';
import _ from 'underscore';
import * as lodash from 'lodash';
import { LottieIcon } from 'xiaomai-b-components';
import LottieIcon from '@/components/LottieIcon';
import Service from '@/common/js/service';
import { getEllipsText } from "@/domains/basic-domain/utils";
......@@ -647,6 +647,8 @@ class SelectPrepareFileModal extends React.Component {
<Otherwise>
<LottieIcon
title={<span className="desc">这个文件夹是空的</span>}
type="college"
size={150}
/>
</Otherwise>
</Choose>
......
......@@ -4,10 +4,10 @@
}
.lottie-icon {
margin: 12px 0 0 0;
margin: 0;
border: 1px solid #E8E8E8;
border-radius: 4px;
padding: 100px 0;
padding: 69px 0 59px 0;
.desc {
color: #999;
......
......@@ -21,26 +21,29 @@ class User {
}
getEnterpriseId() {
return Storage.get(`${PREFIX}_enterpriseId`)
return Storage.get(`${PREFIX}_enterpriseId`);
}
getStoreName(){
return Storage.get(`${PREFIX}_storeName`)
getStoreName() {
return Storage.get(`${PREFIX}_storeName`);
}
getStoreType(){
return Storage.get(`${PREFIX}_storeType`)
getStoreType() {
return Storage.get(`${PREFIX}_storeType`);
}
getStoreUserId(){
return Storage.get(`${PREFIX}_storeUserId`)
getStoreUserId() {
return Storage.get(`${PREFIX}_storeUserId`);
}
getUserId(){
return Storage.get(`${PREFIX}_userId`)
getCustomerId() {
return Storage.get(`${PREFIX}_customerId`);
}
getUserRole(){
return Storage.get(`${PREFIX}_userRole`)
getUserId() {
return Storage.get(`${PREFIX}_userId`);
}
getUserRole() {
return Storage.get(`${PREFIX}_userRole`);
}
getToken() {
......@@ -60,62 +63,66 @@ class User {
}
setEnterpriseId(value: any) {
return Storage.set(`${PREFIX}_enterpriseId`,value)
return Storage.set(`${PREFIX}_enterpriseId`, value);
}
setStoreName(value: any) {
return Storage.set(`${PREFIX}_storeName`, value);
}
setStoreName(value:any){
return Storage.set(`${PREFIX}_storeName`,value)
setStoreType(value: any) {
return Storage.set(`${PREFIX}_storeType`, value);
}
setStoreType(value:any){
return Storage.set(`${PREFIX}_storeType`,value)
setStoreUserId(value: any) {
return Storage.set(`${PREFIX}_storeUserId`, value);
}
setStoreUserId(value:any){
return Storage.set(`${PREFIX}_storeUserId`,value)
setCustomerId(value: any) {
return Storage.set(`${PREFIX}_customerId`, value);
}
setUserId(value:any){
return Storage.set(`${PREFIX}_userId`,value)
setUserId(value: any) {
return Storage.set(`${PREFIX}_userId`, value);
}
setUserRole(value:any){
return Storage.set(`${PREFIX}_userRole`,value)
setUserRole(value: any) {
return Storage.set(`${PREFIX}_userRole`, value);
}
setToken(value:any) {
return Storage.set(`${PREFIX}_token`,value);
setToken(value: any) {
return Storage.set(`${PREFIX}_token`, value);
}
setIsAdmin(value: any) {
return Storage.set(`${PREFIX}_isAdmin`, value);
}
removeToken(){
removeToken() {
return Storage.remove(`${PREFIX}_token`);
}
removeUserId(){
removeUserId() {
return Storage.remove(`${PREFIX}_userId`);
}
removeEnterpriseId() {
return Storage.remove(`${PREFIX}_enterpriseId`)
return Storage.remove(`${PREFIX}_enterpriseId`);
}
getCustomerStoreId(){
getCustomerStoreId() {
return Storage.get(`${PREFIX}_customerStoreId`);
}
setCustomerStoreId(value:any) {
return Storage.set(`${PREFIX}_customerStoreId`,value);
setCustomerStoreId(value: any) {
return Storage.set(`${PREFIX}_customerStoreId`, value);
}
setIdentifier(value:any){
return Storage.set(`${PREFIX}_identifier`,value);
setIdentifier(value: any) {
return Storage.set(`${PREFIX}_identifier`, value);
}
getIdentifier(){
getIdentifier() {
return Storage.get(`${PREFIX}_identifier`);
}
clearUserInfo(){
clearUserInfo() {
Storage.remove(`${USER_PREFIX}_token`);
Storage.remove(`${USER_PREFIX}_userId`);
Storage.remove(`${USER_PREFIX}_userPhone`);
......
{"v":"5.1.20","fr":25,"ip":0,"op":100,"w":200,"h":200,"nm":"default_entertainment","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“balloon22/default_entertainment”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":25,"s":[76.08,143.28,0],"e":[76.08,151.28,0],"to":[0,1.33333337306976,0],"ti":[0,-0.75,0]},{"i":{"x":0.335,"y":1},"o":{"x":1,"y":0},"n":"0p335_1_1_0","t":34,"s":[76.08,151.28,0],"e":[76.08,147.78,0],"to":[0,0.75,0],"ti":[0,1.33333337306976,0]},{"i":{"x":0.546,"y":1},"o":{"x":1,"y":0},"n":"0p546_1_1_0","t":38,"s":[76.08,147.78,0],"e":[76.08,143.28,0],"to":[0,-1.33333337306976,0],"ti":[0,-0.58333331346512,0]},{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":49,"s":[76.08,143.28,0],"e":[76.08,151.28,0],"to":[0,0.58333331346512,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"n":"0p667_1_1_0","t":58,"s":[76.08,151.28,0],"e":[76.08,143.28,0],"to":[0,0,0],"ti":[0,1.33333337306976,0]},{"t":62}],"ix":2},"a":{"a":0,"k":[20,32.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.905,-13.289],[0,0]],"o":[[-0.23,-0.086],[-3.238,11.02],[0,0]],"v":[[9.557,-22.055],[0.351,4.559],[-11.557,18.766]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.557,32.142],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.844,0],[0.289,-0.127],[0,0],[-1.826,-0.707],[0,0],[-0.262,0],[0.673,1.523],[0,0]],"o":[[-0.296,0],[0,0],[-1.791,0.792],[0,0],[0.273,0.106],[1.491,0],[0,0],[-0.363,-0.822]],"v":[[1.621,-5.111],[0.734,-4.924],[-5.086,-2.352],[-4.991,1.708],[3.4,4.957],[4.207,5.111],[6.204,2.019],[3.633,-3.801]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.703,-0.537],[0.788,-0.343],[0.51,-0.451]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.35,-1.264],[2.355,-1.264]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.187,11.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":5,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.063,0],[0.033,0.013],[0,0],[0.003,0.132],[-0.048,0.022],[0,0],[-0.026,0],[-0.037,-0.084],[0,0],[0.044,-0.067]],"o":[[-0.022,0],[0,0],[-0.048,-0.018],[-0.002,-0.133],[0,0],[0.024,-0.005],[0.073,0],[0,0],[0.028,0.064],[-0.032,0.05]],"v":[[4.201,3.107],[4.115,3.087],[-4.277,-0.161],[-4.402,-0.34],[-4.285,-0.527],[1.536,-3.098],[1.613,-3.107],[1.796,-2.997],[4.368,2.823],[4.361,3.002]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.194,11.047],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"balloon11 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":25,"s":[71.766,155.258,0],"e":[71.766,163.258,0],"to":[0,1.33333337306976,0],"ti":[0,-0.75,0]},{"i":{"x":0.335,"y":1},"o":{"x":1,"y":0},"n":"0p335_1_1_0","t":34,"s":[71.766,163.258,0],"e":[71.766,159.758,0],"to":[0,0.75,0],"ti":[0,1.33333337306976,0]},{"i":{"x":0.546,"y":1},"o":{"x":1,"y":0},"n":"0p546_1_1_0","t":38,"s":[71.766,159.758,0],"e":[71.766,155.258,0],"to":[0,-1.33333337306976,0],"ti":[0,-0.58333331346512,0]},{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":49,"s":[71.766,155.258,0],"e":[71.766,163.258,0],"to":[0,0.58333331346512,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"n":"0p833_1_1_0","t":58,"s":[71.766,163.258,0],"e":[71.766,155.258,0],"to":[0,0,0],"ti":[0,1.33333337306976,0]},{"t":62}],"ix":2},"a":{"a":0,"k":[16.287,40.414,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.5,-18.828],[-4.253,-11.158]],"o":[[0,0],[-1.062,7.998],[0,0]],"v":[[-6.288,-30.414],[3.788,-1.34],[5.29,30.414]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[16.287,40.414],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.155,0],[0,0],[0,0],[-0.002,-0.717],[0,0],[-0.667,0],[-0.265,0.267],[0,0]],"o":[[0,0],[0,0],[-0.718,0.002],[0,0],[0.003,0.782],[0.321,0],[0,0],[0.815,-0.821]],"v":[[1.664,-3.189],[1.659,-3.189],[-2.103,-3.176],[-3.399,-1.873],[-3.387,1.89],[-2.077,3.189],[-1.165,2.802],[2.586,-0.972]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10.216,10],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-0.686,-0.684],[0.686,-0.689],[-0.682,0.689]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.506,9.504],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 3","np":2,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"balloon1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":25,"s":[49.786,106.339,0],"e":[49.786,114.339,0],"to":[0,1.33333337306976,0],"ti":[0,-0.75,0]},{"i":{"x":0.335,"y":1},"o":{"x":1,"y":0},"n":"0p335_1_1_0","t":34,"s":[49.786,114.339,0],"e":[49.786,110.839,0],"to":[0,0.75,0],"ti":[0,1.33333337306976,0]},{"i":{"x":0.546,"y":1},"o":{"x":1,"y":0},"n":"0p546_1_1_0","t":38,"s":[49.786,110.839,0],"e":[49.786,106.339,0],"to":[0,-1.33333337306976,0],"ti":[0,-0.58333331346512,0]},{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":49,"s":[49.786,106.339,0],"e":[49.786,114.339,0],"to":[0,0.58333331346512,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"n":"0p833_1_1_0","t":58,"s":[49.786,114.339,0],"e":[49.786,106.339,0],"to":[0,0,0],"ti":[0,1.33333337306976,0]},{"t":62}],"ix":2},"a":{"a":0,"k":[23.984,22.04,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.218,-0.03],[2.397,1.852],[0.281,-0.362],[-0.027,-0.218],[-0.174,-0.135],[-3.179,0.439],[0.058,0.454],[0.176,0.134]],"o":[[-2.74,0.379],[-0.365,-0.28],[-0.135,0.174],[0.028,0.218],[2.747,2.124],[0.453,-0.065],[-0.03,-0.219],[-0.175,-0.133]],"v":[[4.225,0.257],[-3.857,-2.062],[-5.024,-1.912],[-5.192,-1.299],[-4.877,-0.747],[4.448,1.903],[5.161,0.967],[4.84,0.417]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.682,32.445],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.998,0],[3.224,-2.214],[-7.022,-10.23],[-6.997,0],[-3.224,2.212],[7.022,10.229]],"o":[[-3.756,0],[-9.23,6.336],[4.57,6.656],[3.756,0],[9.23,-6.337],[-4.57,-6.656]],"v":[[-2.029,-21.79],[-12.715,-18.521],[-16.712,11.473],[2.029,21.79],[12.715,18.522],[16.712,-11.473]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-3.064,0],[0,0],[-3.689,-5.373],[7.397,-5.078],[3.065,0],[3.689,5.373],[-0.624,4.683],[-3.518,2.416]],"o":[[0,0],[5.981,0],[5.763,8.395],[-2.445,1.678],[-5.981,0],[-2.835,-4.13],[0.604,-4.528],[2.445,-1.678]],"v":[[-2.029,-17.79],[-2.029,-17.79],[13.414,-9.209],[10.451,15.224],[2.029,17.79],[-13.414,9.209],[-16.843,-4.456],[-10.451,-15.224]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.984,22.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.47,0],[4.062,5.917],[-0.69,5.174],[-3.992,2.741],[-3.47,0],[-4.062,-5.916],[8.305,-5.702]],"o":[[-6.641,0],[-3.116,-4.538],[0.679,-5.096],[2.78,-1.908],[6.641,0],[6.387,9.303],[-2.78,1.908]],"v":[[1.062,19.79],[-16.031,10.34],[-19.792,-4.721],[-12.551,-16.872],[-2.997,-19.79],[14.096,-10.34],[10.616,16.872]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.952,22.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 3","np":2,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"eye Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.876,"y":0},"n":"0p667_1_0p876_0","t":25,"s":[131.205,137.541,0],"e":[131.205,140.541,0],"to":[0,0.5,0],"ti":[0,0,0]},{"i":{"x":0.288,"y":1},"o":{"x":0.379,"y":0},"n":"0p288_1_0p379_0","t":34,"s":[131.205,140.541,0],"e":[131.205,137.541,0],"to":[0,0,0],"ti":[0.36321145296097,0.21792687475681,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":55,"s":[131.205,137.541,0],"e":[126.205,137.541,0],"to":[-0.83333331346512,-0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":59,"s":[126.205,137.541,0],"e":[126.205,137.541,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":84,"s":[126.205,137.541,0],"e":[131.205,137.541,0],"to":[0.83333331346512,0,0],"ti":[-0.10810515284538,0,0]},{"t":91}],"ix":2},"a":{"a":0,"k":[25.53,4.553,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.869],[0,0],[1.195,0],[0,-0.869],[0,0],[-1.196,0]],"o":[[0,0],[0,-0.869],[-1.196,0],[0,0],[0,0.869],[1.195,0]],"v":[[2.152,2.739],[2.152,-2.738],[0.001,-4.303],[-2.152,-2.738],[-2.152,2.739],[0.001,4.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.401,4.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.869],[0,0],[1.195,0],[0,-0.869],[0,0],[-1.195,0]],"o":[[0,0],[0,-0.869],[-1.195,0],[0,0],[0,0.869],[1.195,0]],"v":[[2.152,2.739],[2.152,-2.738],[0,-4.303],[-2.152,-2.738],[-2.152,2.739],[0,4.303]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.658,4.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"mouth Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"n":"0p667_1_1_0","t":25,"s":[131.26,149.345,0],"e":[131.26,152.345,0],"to":[0,0.5,0],"ti":[0,0,0]},{"i":{"x":0.202,"y":1},"o":{"x":0.381,"y":0},"n":"0p202_1_0p381_0","t":34,"s":[131.26,152.345,0],"e":[131.26,149.345,0],"to":[0,0,0],"ti":[0.41004458069801,0.24602673947811,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":55,"s":[131.26,149.345,0],"e":[126.26,149.345,0],"to":[-0.83333331346512,-0.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":59,"s":[126.26,149.345,0],"e":[126.26,149.345,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":84,"s":[126.26,149.345,0],"e":[131.26,149.345,0],"to":[0.83333331346512,0,0],"ti":[-0.10810515284538,0,0]},{"t":91}],"ix":2},"a":{"a":0,"k":[12.382,8.74,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.624,0],[1.094,-2.172],[-0.239,-0.792],[-1.585,-1.684],[-3.458,0],[-1.202,0.376],[-0.419,4.154],[1.201,0.925]],"o":[[-3.699,0],[-0.392,0.789],[0.393,2.328],[2.184,2.387],[1.286,0],[4.397,-1.475],[0.168,-0.683],[-2.856,-2.329]],"v":[[-0.426,-8.17],[-11.661,-4.246],[-11.894,-1.81],[-8.833,4.402],[0.055,8.17],[3.803,7.601],[11.676,-1.636],[10.932,-5.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-4.004,0],[-2.115,-1.749],[0.075,-0.229],[3.4,-1.14],[1.068,0],[1.906,2.083],[0.302,1.977],[-0.152,0.305]],"o":[[3.93,0],[0.227,0.153],[-0.302,3.725],[-1.013,0.319],[-2.756,0],[-1.36,-1.445],[-0.151,-0.38],[0.378,-0.835]],"v":[[-0.426,-6.17],[9.7,-3.433],[9.7,-1.987],[3.201,5.692],[0.055,6.17],[-7.377,3.031],[-9.946,-2.292],[-9.87,-3.357]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.382,8.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.303,-0.229]],"o":[[-0.982,-4.639],[-5.063,0],[4.911,4.486]],"v":[[5.894,0.077],[0.076,-4.335],[-5.59,0.077]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.335,12.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Left hand Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.519],"y":[0.789]},"o":{"x":[1],"y":[0.196]},"n":["0p519_0p789_1_0p196"],"t":25,"s":[0],"e":[-15]},{"i":{"x":[0.335],"y":[1.177]},"o":{"x":[1],"y":[-0.119]},"n":["0p335_1p177_1_-0p119"],"t":34,"s":[-15],"e":[-4]},{"i":{"x":[0.546],"y":[1.914]},"o":{"x":[1],"y":[-0.9]},"n":["0p546_1p914_1_-0p9"],"t":38,"s":[-4],"e":[0]},{"i":{"x":[0.519],"y":[0.789]},"o":{"x":[1],"y":[0.196]},"n":["0p519_0p789_1_0p196"],"t":49,"s":[0],"e":[-15]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[1],"y":[-0.087]},"n":["0p833_1_1_-0p087"],"t":58,"s":[-15],"e":[0]},{"t":62}],"ix":10},"p":{"a":0,"k":[105.158,156.109,0],"ix":2},"a":{"a":0,"k":[37.043,16.98,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.874,-4.106],[-4.05,0.862],[0.873,4.105],[4.049,-0.861]],"o":[[0.874,4.105],[4.049,-0.861],[-0.873,-4.106],[-4.049,0.861]],"v":[[-7.331,1.56],[1.583,7.433],[7.333,-1.56],[-1.581,-7.434]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.455,8.545],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-21.23,-1.889],[-18.138,-11.107],[21.23,1.889],[18.213,11.107]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.606,15.603],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Right hand Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166.573,163.681,0],"ix":2},"a":{"a":0,"k":[25.743,16.257,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.129,-3.617],[-3.568,2.099],[2.129,3.619],[3.568,-2.099]],"o":[[2.128,3.618],[3.569,-2.1],[-2.129,-3.617],[-3.568,2.1]],"v":[[-6.46,3.801],[3.854,6.551],[6.46,-3.802],[-3.854,-6.551]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.647,23.615],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[20.894,4.434],[16.764,13.346],[-20.894,-4.531],[-16.812,-13.346]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.144,13.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"body Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[135.88,140.077,0],"ix":2},"a":{"a":0,"k":[51.836,51.837,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[9.48,14.047],[7.609,-12.795],[21.446,12.754],[3.612,5.351],[-8.652,-5.146],[-12.753,21.447]],"o":[[5.339,12.752],[-12.754,21.447],[-5.915,-3.518],[3.611,8.624],[21.447,12.755],[9.238,-15.531]],"v":[[34.23,-38.445],[31.401,2.129],[-30.525,17.867],[-44.865,4.337],[-26.298,25.69],[35.627,9.952]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.043,64.979],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-12.754,-21.446],[-21.446,12.755],[12.753,21.446],[21.446,-12.755]],"o":[[12.754,21.446],[21.447,-12.754],[-12.755,-21.446],[-21.446,12.754]],"v":[[-38.832,23.094],[23.094,38.831],[38.833,-23.094],[-23.094,-38.831]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[51.836,51.837],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"balloon21 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":25,"s":[96.321,67.864,0],"e":[96.321,75.864,0],"to":[0,1.33333337306976,0],"ti":[0,-0.75,0]},{"i":{"x":0.335,"y":1},"o":{"x":1,"y":0},"n":"0p335_1_1_0","t":34,"s":[96.321,75.864,0],"e":[96.321,72.364,0],"to":[0,0.75,0],"ti":[0,1.33333337306976,0]},{"i":{"x":0.546,"y":1},"o":{"x":1,"y":0},"n":"0p546_1_1_0","t":38,"s":[96.321,72.364,0],"e":[96.321,67.864,0],"to":[0,-1.33333337306976,0],"ti":[0,-0.58333331346512,0]},{"i":{"x":0.519,"y":1},"o":{"x":1,"y":0},"n":"0p519_1_1_0","t":49,"s":[96.321,67.864,0],"e":[96.321,75.864,0],"to":[0,0.58333331346512,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"n":"0p667_1_1_0","t":58,"s":[96.321,75.864,0],"e":[96.321,67.864,0],"to":[0,0,0],"ti":[0,1.33333337306976,0]},{"t":62}],"ix":2},"a":{"a":0,"k":[51.091,53.315,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.403,0],[0.335,-0.13],[0.309,-0.705],[-2.819,-7.004],[-1.186,0],[-0.338,0.131],[-0.302,0.709],[0.288,0.715],[-2.65,6.055],[1.449,0.639]],"o":[[-0.358,0],[-0.72,0.281],[-3.269,7.461],[0.451,1.103],[0.361,0],[0.725,-0.29],[0.303,-0.709],[-2.243,-5.572],[0.63,-1.459],[-0.369,-0.162]],"v":[[1.443,-13.149],[0.399,-12.953],[-1.195,-11.424],[-1.905,11.337],[0.787,13.149],[1.841,12.951],[3.429,11.403],[3.452,9.194],[4.093,-9.102],[2.606,-12.904]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.231,0],[-0.242,-0.106],[0.413,-0.956],[-2.345,-5.823],[0.196,-0.46],[0.464,-0.186],[0.23,0],[0.301,0.737],[-3.161,7.217],[-0.466,0.182]],"o":[[0.259,0],[0.952,0.42],[-2.756,6.298],[0.186,0.464],[-0.196,0.461],[-0.227,0.088],[-0.752,0],[-2.718,-6.755],[0.201,-0.458],[0.22,-0.086]],"v":[[1.443,-12.149],[2.203,-11.989],[3.177,-9.503],[2.525,9.567],[2.51,11.01],[1.479,12.019],[0.787,12.149],[-0.977,10.964],[-0.281,-11.023],[0.761,-12.021]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.863,47.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.299,0],[0.372,0.908],[-3.215,7.339],[-0.594,0.232],[-0.297,0],[-0.305,-0.134],[0.518,-1.204],[-2.293,-5.696],[0.25,-0.587],[0.592,-0.236]],"o":[[-0.981,0],[-2.769,-6.883],[0.256,-0.583],[0.277,-0.107],[0.334,0],[1.197,0.529],[-2.705,6.18],[0.237,0.591],[-0.25,0.586],[-0.284,0.111]],"v":[[0.814,12.649],[-1.413,11.153],[-0.71,-11.224],[0.607,-12.487],[1.471,-12.649],[2.432,-12.446],[3.665,-9.305],[3.016,9.38],[2.997,11.207],[1.691,12.482]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.836,47.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.581,0],[3.002,-27.386],[-26.314,-2.885],[-1.581,0],[-3.002,27.386],[26.314,2.884]],"o":[[-24.374,0.001],[-3.197,29.163],[1.602,0.176],[24.373,0],[3.196,-29.163],[-1.603,-0.176]],"v":[[1.014,-53.066],[-47.645,-5.223],[-5.788,52.804],[-1.012,53.066],[47.646,5.223],[5.788,-52.803]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.439,-0.158],[2.951,-26.923],[8.415,-8.216],[10.791,0],[1.44,0.158],[7.235,10.029],[-1.438,13.119],[-8.414,8.216],[-10.792,0]],"o":[[0,0],[1.438,0],[24.079,2.639],[-1.344,12.268],[-8.263,8.07],[-1.44,0],[-11.586,-1.27],[-7.325,-10.156],[1.345,-12.267],[8.263,-8.069],[0,0]],"v":[[1.017,-53.066],[1.017,-49.066],[5.352,-48.827],[43.669,4.787],[28.536,36.551],[-1.012,49.066],[-5.353,48.827],[-34.538,31.305],[-43.669,-4.788],[-28.536,-36.551],[1.014,-49.066]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[51.091,53.315],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 3","np":4,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"other Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95.995,108.323,0],"ix":2},"a":{"a":0,"k":[75.593,42.712,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.618,0],[0,-2.611],[2.624,0],[0,2.623]],"o":[[2.62,0],[0,2.623],[-2.623,0],[0.008,-2.618]],"v":[[0,-4.743],[4.751,-0.008],[0,4.742],[-4.75,-0.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-3.902,0],[0,0],[-0.01,3.9],[3.902,-0.003],[0.011,-3.901]],"o":[[0,0],[3.901,0.004],[-0.01,-3.903],[-3.9,-0.001],[0,3.891]],"v":[[-0.001,7.053],[0.001,7.053],[7.078,0.001],[-0.001,-7.054],[-7.078,0.001]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[143.857,7.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":1,"s":[100,100],"e":[56,56]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":13,"s":[56,56],"e":[100,100]},{"t":24}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":0,"s":[100],"e":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":12,"s":[2],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":25,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":50,"s":[100],"e":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":62,"s":[2],"e":[100]},{"t":75}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.45,0],[0.007,2.45],[-0.649,0.771],[-0.217,0],[-0.39,0.97],[-0.108,0],[0,-2.439]],"o":[[-2.448,0.002],[0,-1.079],[0.201,0.052],[1.11,0],[0.105,-0.004],[2.45,0],[0,2.443]],"v":[[-0.001,5.31],[-4.444,0.881],[-3.387,-1.951],[-2.756,-1.865],[-0.313,-3.518],[-0.001,-3.546],[4.445,0.881]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.491,-0.002],[0.099,-0.001],[1.009,0.09],[0.515,-0.872],[-0.567,-0.84],[0,-1.478],[-3.49,0.001],[-0.009,3.492]],"o":[[-0.102,0],[-0.351,-0.95],[-1.01,-0.092],[-0.516,0.873],[-0.861,1.077],[0.01,3.491],[3.492,0.003],[-0.01,-3.49]],"v":[[-0.001,-5.43],[-0.296,-5.402],[-2.523,-7.105],[-5.02,-5.827],[-4.935,-3.021],[-6.333,0.881],[-0.001,7.195],[6.333,0.881]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.583,77.976],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":15,"s":[100],"e":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p667_1_1_0"],"t":38,"s":[2],"e":[100]},{"t":63}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.6.10","fr":25,"ip":0,"op":15,"w":150,"h":150,"nm":"暂无数据","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“ͼ²ã 3”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[3]},{"t":15,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[123.75,80,0],"to":[0,0.333,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[123.75,82,0],"to":[0,0,0],"ti":[0,0.333,0]},{"t":15,"s":[123.75,80,0]}],"ix":2},"a":{"a":0,"k":[118.75,69,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.808,0.723],[1.642,0.918],[0.866,-1.592],[-0.185,-1.123],[0.476,0.336],[-1.841,5.854],[0,0],[-3.308,-2.342],[-1.001,-0.292],[-1.233,-0.708],[-2.019,0.209],[0,0],[-0.111,0.001],[0,0],[0.513,-0.054],[1.414,0.81],[0.393,0.493],[0,0]],"o":[[1.554,-1.391],[-1.52,-0.85],[-0.488,0.897],[-0.51,-0.223],[-2.655,-1.881],[0,0],[-2.014,6.404],[0.909,0.644],[0.578,1.249],[1.722,0.987],[0,0],[0.713,-0.094],[0,0],[-0.278,0.002],[-1.731,0.179],[-0.552,-0.316],[0,0],[1.298,0.059]],"v":[[3.289,4.496],[2.478,-0.925],[-2.043,0.214],[-2.471,3.342],[-3.96,2.502],[-5.26,-9.022],[-6.691,-9.472],[-4.827,3.726],[-1.912,5.14],[0.848,8.225],[6.41,9.263],[6.665,9.233],[8.705,8.925],[8.695,7.425],[6.256,7.772],[1.594,6.923],[0.172,5.684],[0.009,5.468]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.425,0.781],[-0.843,-0.471],[0.712,-0.638],[1.189,0.184],[0,0]],"o":[[0.433,-0.795],[0.812,0.454],[-0.606,0.542],[0,0],[-0.346,-1.065]],"v":[[-0.726,0.931],[1.746,0.384],[2.289,3.378],[-0.566,3.905],[-0.806,3.864]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.553,68.449],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“ͼ²ã 4”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[-3]},{"t":15,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[24.25,54,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":8,"s":[24.25,56,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15,"s":[24.25,54,0]}],"ix":2},"a":{"a":0,"k":[19.25,40,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.019,0.253],[1.917,-1.382],[-2.171,-1.066],[-0.403,-0.11],[1.677,-0.515],[3.419,4.224],[0,0],[-4.62,1.419],[-0.594,1.728],[-1.342,0.905],[-0.674,1.186],[0,0],[0.788,-0.532],[1.011,-0.044],[0,0]],"o":[[-0.19,-2.542],[-1.866,1.345],[0.37,0.182],[-0.496,1.177],[-3.984,1.224],[0,0],[3.778,4.667],[2.27,-0.697],[1.477,0.066],[1.009,-0.681],[0,0],[-0.569,1.003],[-0.914,0.617],[0,0],[0.014,-0.248]],"v":[[4.925,-1.62],[0.914,-4.526],[1.966,-0.049],[3.129,0.389],[-0.134,3.055],[-11.181,-1.387],[-12.347,-0.443],[0.306,4.488],[4.643,0.624],[9.007,-0.607],[12.347,-4.486],[11.043,-5.227],[8.168,-1.851],[5.208,-0.874],[4.933,-0.869]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.259,0.127],[-0.735,0.53],[-0.117,-1.561],[0,0],[0,0]],"o":[[-1.302,-0.64],[0.705,-0.508],[0,0],[0,0],[-0.282,-0.082]],"v":[[2.627,-1.395],[1.791,-3.309],[3.429,-1.508],[3.44,-1.294],[3.44,-1.081]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.39,39.878],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"左手指","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,64,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.156,0.62],[0.483,0.121]],"o":[[0,0],[0,0],[0,0],[0.638,0.051],[0.121,-0.483],[0,0]],"v":[[2.094,-0.974],[-3.053,-1.183],[-3.053,0.761],[1.557,1.132],[2.931,0.146],[2.277,-0.948]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.98,31.334],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.155,0.698],[0.556,0.124]],"o":[[0,0],[0,0],[0,0],[0.713,0.043],[0.123,-0.555],[0,0]],"v":[[3.161,-1.091],[-4.255,-1.342],[-4.255,0.875],[2.623,1.298],[4.132,0.163],[3.35,-1.067]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.045,27.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.883,-0.016],[2.122,-0.362],[0,0],[0,0],[-0.111,0.682],[0.61,0.1]],"o":[[-1.979,-0.166],[-1.053,0.02],[0,0],[0,0],[0.69,0.02],[0.1,-0.61],[0,0]],"v":[[4.088,-1.116],[-0.205,-1.34],[-4.968,-0.767],[-5.199,1.084],[3.698,1.336],[5.099,0.181],[4.176,-1.105]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.704,25.613],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.226,0.623],[0.424,0.153]],"o":[[0,0],[0,0],[0,0],[0.661,0.048],[0.154,-0.424],[0,0]],"v":[[2.546,-0.951],[-3.213,-1.163],[-3.437,0.737],[1.784,1.115],[3.283,0.143],[2.794,-0.903]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.227,29.62],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“ͼ²ã 5”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-54.606,-0.5],[-54.606,0.5],[-70,0.5],[-70,-0.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[70,-0.5],[70,0.5],[-44.949,0.5],[-44.949,-0.5]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70,127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"右手指","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,64,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.155,0.621],[-0.483,0.121]],"o":[[0,0],[0,0],[0,0],[-0.637,0.051],[-0.121,-0.483],[0,0]],"v":[[-2.093,-0.975],[3.052,-1.183],[3.052,0.761],[-1.557,1.132],[-2.931,0.146],[-2.276,-0.948]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.834,37.498],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.226,0.623],[-0.424,0.154]],"o":[[0,0],[0,0],[0,0],[-0.661,0.048],[-0.154,-0.424],[0,0]],"v":[[-2.546,-0.951],[3.214,-1.163],[3.438,0.737],[-1.784,1.115],[-3.283,0.143],[-2.794,-0.903]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.587,35.783],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.155,0.698],[-0.555,0.124]],"o":[[0,0],[0,0],[0,0],[-0.714,0.044],[-0.124,-0.556],[0,0]],"v":[[-3.161,-1.091],[4.255,-1.342],[4.255,0.875],[-2.623,1.298],[-4.131,0.163],[-3.35,-1.067]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.769,33.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.883,-0.017],[-2.122,-0.362],[0,0],[0,0],[0.111,0.682],[-0.61,0.1]],"o":[[1.979,-0.166],[1.054,0.019],[0,0],[0,0],[-0.69,0.02],[-0.101,-0.61],[0,0]],"v":[[-4.088,-1.116],[0.205,-1.34],[4.968,-0.767],[5.199,1.083],[-3.698,1.336],[-5.099,0.18],[-4.175,-1.105]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.11,31.777],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“ͼ²ã 48”轮廓","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,64,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.689,-18.652],[10.033,-16.722],[5.689,18.652],[-10.033,16.722]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117647059,0.729411764706,0.815686334348,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[91.893,24.285],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“ͼ²ã 49”轮廓","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,64,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.691,-4.534],[-12.312,-6.499],[-3.691,4.534],[12.312,6.499]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.658823529412,0.792156922583,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.891,47.471],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“ͼ²ã 50”轮廓","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,64,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.627,-6.783],[25.66,-1.837],[14.627,6.783],[-25.66,1.837]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627510819,0.803921628466,0.89019613827,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[56.2,42.843],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"“ͼ²ã 51”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[75,75,0],"to":[0,0.167,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[75,76,0],"to":[0,0,0],"ti":[0,0.167,0]},{"t":15,"s":[75,75,0]}],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.972,-20.16],[22.316,-15.214],[17.972,20.16],[-22.316,15.214]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980451995,0.87450986376,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.888,20.846],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"“ͼ²ã 19”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.271,0.046],[0.041,-0.32],[0,0],[0.726,-0.123],[0.18,-1.133]],"o":[[0.136,-0.86],[0.213,-0.036],[0,0],[0.099,-0.768],[-0.669,0.113],[0,0]],"v":[[-0.464,1.074],[0.181,-0.242],[0.362,0.055],[1.077,0.146],[0.061,-0.951],[-1.176,0.962]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.263,64.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.359,0.468],[0.645,1.872],[1.532,-0.707],[-0.645,-1.872]],"o":[[1.359,-0.468],[-0.645,-1.872],[-1.532,0.707],[0.645,1.872]],"v":[[1.172,3.536],[2.186,-1.159],[-1.049,-3.297],[-2.186,0.885]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[57.317,64.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.389,-0.372],[-0.513,1.912],[1.665,0.271],[0.513,-1.913]],"o":[[1.39,0.372],[0.513,-1.912],[-1.666,-0.271],[-0.512,1.912]],"v":[[-1.083,3.404],[2.384,0.077],[0.897,-3.505],[-2.385,-0.673]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.965,65.696],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.128,-0.005],[-3.873,1.111],[0.103,-2.213],[-0.757,-0.113],[0.771,-0.132],[0.98,1.684],[-0.001,0.572],[1.726,1.747],[6.681,-5.072],[0.381,-0.913],[-3.94,-3.922]],"o":[[3.051,0.126],[-0.022,0.161],[-0.02,0.446],[1.017,0.152],[2.721,-6.542],[-1.372,-2.357],[0.003,-1.796],[-5.799,-5.871],[-1.277,0.97],[-0.473,1.134],[4.044,4.025]],"v":[[-0.915,10.382],[9.47,8.906],[9.284,12.467],[12.224,11.854],[12.593,12.281],[15.204,-0.058],[12.646,-2.246],[11.347,-7.042],[-10.513,-3.838],[-15.527,-3.838],[-12.244,6.689]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.065,50.644],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.802,0.229],[-0.051,-0.075],[0,0],[1.023,-0.293],[1.208,-0.605]],"o":[[1.157,-0.58],[0.647,-0.187],[0,0],[-0.376,-0.552],[-0.869,0.249],[0,0]],"v":[[-2.17,1.235],[0.77,0.02],[1.793,-0.068],[2.618,-0.632],[0.494,-0.942],[-2.618,0.34]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.406,70.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.836,-0.321],[0,0],[-0.775,1.492]],"o":[[-1.049,2.021],[0,0],[-1.054,-0.185],[0,0]],"v":[[-0.14,-1.868],[1.017,1.868],[1.189,0.883],[0.748,-1.407]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.041,66.483],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.5,-1],[-0.5,1],[0.5,1],[0.5,-1]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.025,64.955],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.5,-1],[-0.5,1],[0.5,1],[0.5,-1]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[61.665,64.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.154,-0.014],[0.53,-6.061],[0,0],[6.061,0.53],[-0.425,5.576],[-0.006,0.246],[-0.144,3.325],[-5.828,-0.252]],"o":[[6.061,0.53],[0,0],[-0.53,6.061],[-5.571,-0.487],[0.023,-0.297],[0.027,-1.062],[0.253,-5.828],[0.155,0.007]],"v":[[0.827,-14.325],[10.841,-2.391],[10.276,4.064],[-1.658,14.078],[-10.946,3.134],[-10.902,2.319],[-10.646,-4.261],[0.363,-14.356]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.453,64.246],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-2.985,-0.157],[-0.468,-0.002],[0,0],[-1.744,0.353]],"o":[[0,0],[0,0],[0,0],[2.286,2.387],[0.472,0.025],[0,0],[1.811,-0.006],[0,0]],"v":[[7.657,-4.716],[-6.267,-3.715],[-7.554,-1.104],[-7.657,0.86],[0.25,4.676],[1.661,4.716],[1.857,4.716],[7.19,4.176]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.191,76.259],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.189,-0.198]],"o":[[0,0],[0,0],[0.185,0.213],[0,0]],"v":[[0.332,-0.982],[-0.332,0.366],[-0.332,0.366],[0.229,0.982]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[62.305,76.137],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.807,0.244],[0,0]],"o":[[0,0],[0,0],[0.822,-0.167],[0,0],[0,0]],"v":[[1.202,-1.178],[-1.133,-0.51],[-1.221,1.178],[1.221,0.562],[1.221,0.54]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.603,79.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[3.833,0.201],[0.288,2.993],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.6,2.946],[-3.832,-0.2],[0,0],[0,0],[0,0]],"v":[[7.83,-8.639],[7.149,4.343],[7.096,4.341],[-0.617,9.223],[-7.777,3.562],[-7.83,3.558],[-7.15,-9.424]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196018593,0.909803981407,0.960784014534,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.195,76.793],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"“ͼ²ã 29”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.033,0],[0,0],[-0.033,0]],"o":[[0,0],[0.033,0],[0.033,0]],"v":[[0.098,0],[-0.098,0],[0,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196018593,0.909803981407,0.960784014534,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.95,80.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"“ͼ²ã 30”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0,-0.011],[0,0.011],[0,0.011]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.824,79.809],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"“ͼ²ã 31”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,0],[0,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[17.755,-5.095],[17.755,-5.095]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[61.973,76.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"右手","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0.8]},{"t":15,"s":[0]}],"ix":10},"p":{"a":0,"k":[80,104,0],"ix":2},"a":{"a":0,"k":[75,93,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.363,-1.963],[0,0],[0.089,1.455],[0.509,-0.628],[4.921,0.937],[-0.98,-2.534]],"o":[[0,0],[0.287,-2.233],[-0.299,-4.93],[-0.57,0.703],[-0.537,3.229],[0.686,1.773]],"v":[[-2.824,7.262],[5.211,3.476],[5.51,-2.056],[3.175,-6.634],[-5.062,-6.985],[-4.397,1.658]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.307,37.855],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.761,0.945],[7.061,18.159],[4.766,7.205],[0,0],[-1.12,-5.562],[-2.039,-2.273]],"o":[[2.682,-3.329],[-1.853,-4.762],[0,0],[2.38,8.191],[1.903,9.452],[4.143,4.618]],"v":[[8.405,18.667],[5.345,-4.285],[-4.581,-22.235],[-12.405,-17.936],[-7.155,2.695],[-2.092,17.617]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.448,62.585],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.286,-4.952],[-9.714,4.048],[-9.286,4.952],[9.714,-4.048]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94,95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.021,4.028],[-2.245,4.31],[0,0],[0,0],[0,0]],"o":[[-3.02,-4.027],[0,0],[0,0],[0,0],[-6.421,0.015]],"v":[[-14.117,6.429],[-15.28,-6.077],[7.05,-12.464],[17.525,3.664],[0.047,12.449]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.232,86.117],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"“ͼ²ã 37”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.209,-3.826],[0,0],[3.827,-2.209],[0,0],[2.209,3.826],[-3.826,2.209],[0,0]],"o":[[0,0],[2.209,3.826],[0,0],[-3.826,2.21],[-2.21,-3.826],[0,0],[3.827,-2.21]],"v":[[15.156,-8.75],[15.156,-8.75],[12.227,2.178],[-4.227,11.678],[-15.155,8.75],[-12.227,-2.178],[4.227,-11.678]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.866,82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"“ͼ²ã 38”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[70,64,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.998,-5.958],[0.002,6.042],[0.998,5.958],[-0.002,-6.042]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.5,98],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.676,-7.603],[-0.535,-12.483],[0,0],[1.08,1.565],[1.377,0.564],[4.334,-0.046]],"o":[[0.788,8.85],[0,0],[3.759,-21.617],[-4.256,-6.903],[-9.69,-3.967],[-4.844,0.053]],"v":[[-24.994,-6.65],[-23.011,25.35],[20.573,25.35],[24.591,-9.424],[12.034,-21.383],[-10.572,-22.275]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.783,101.65],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"左手","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[-0.5]},{"t":15,"s":[0]}],"ix":10},"p":{"a":0,"k":[67,101.5,0],"ix":2},"a":{"a":0,"k":[62,90.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.279,4.31],[0,0],[0,0],[0,0],[-3.099,4.732]],"o":[[0,0],[0,0],[0,0],[6.077,1.722],[3.099,-4.732]],"v":[[15.434,-4.26],[-6.924,-15.541],[-17.713,2.205],[0.439,13.819],[14.204,9.304]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.461,84.181],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.315,-1.178],[0,0],[-1.412,-0.353],[0.379,0.714],[-2.785,4.163],[2.715,0.088]],"o":[[0,0],[1.379,0.841],[4.796,1.198],[-0.424,-0.799],[-3.848,-1.746],[-1.9,-0.061]],"v":[[-6.584,-4.27],[-6.355,3.017],[-2.169,4.808],[3.042,4.249],[6.584,-3.194],[-3.261,-5.945]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.355,30.694],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.393,0.139],[-8.35,18.359],[-2.045,6.623],[0,0],[3.281,-5.075],[-0.048,-3.278]],"o":[[4.908,-0.488],[2.094,-4.604],[0,0],[-6.072,7.033],[-5.575,8.624],[0.098,6.656]],"v":[[-6.045,20.992],[8.301,-0.607],[14.51,-17.449],[6.56,-21.13],[-7.469,-2.968],[-14.462,12.212]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[32.44,54.841],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.599,3.19],[2.427,2.713],[-2.316,2.072],[-0.467,0.227],[-3.535,-2.681],[0,0]],"o":[[-7.055,-5.685],[-2.2,-1.948],[-2.072,-2.316],[0.387,-0.347],[3.989,-1.942],[0,0],[0,0]],"v":[[8.994,15.528],[-6.988,2.218],[-13.928,-4.774],[-13.487,-12.721],[-12.199,-13.586],[0.067,-12.382],[16.001,-0.297]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.276,78.253],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[171,33,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[39.318,53.689],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.972549079446,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-49.341,25.345],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[76,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[39.318,53.689],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.972549079446,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-44.878,24.026],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.1.20","fr":25,"ip":0,"op":100,"w":200,"h":200,"nm":"default_ student","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"content3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.521],"y":[1.035]},"o":{"x":[1],"y":[-0.024]},"n":["0p521_1p035_1_-0p024"],"t":10,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":35,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":86,"s":[100],"e":[11]},{"t":96}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[121,113.167,0],"ix":2},"a":{"a":0,"k":[-7.5,-40,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.362,0.667,0.667],"y":[1.038,1,1]},"o":{"x":[1,0.333,0.333],"y":[-0.071,0,0]},"n":["0p362_1p038_1_-0p071","0p667_1_0p333_0","0p667_1_0p333_0"],"t":10,"s":[0,100,100],"e":[124,100,100]},{"t":35}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-40.25],[27.25,-40.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333337307,0.933333337307,0.933333337307,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[3,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":10,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"content2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.521],"y":[1.035]},"o":{"x":[1],"y":[-0.024]},"n":["0p521_1p035_1_-0p024"],"t":1,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":26,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":86,"s":[100],"e":[11]},{"t":96}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[121,92.5,0],"ix":2},"a":{"a":0,"k":[-7.5,-40,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.362,0.667,0.667],"y":[1.048,1,1]},"o":{"x":[1,0.333,0.333],"y":[-0.089,0,0]},"n":["0p362_1p048_1_-0p089","0p667_1_0p333_0","0p667_1_0p333_0"],"t":1,"s":[0,100,100],"e":[99,100,100]},{"t":26}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-40.25],[27.25,-40.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333337307,0.933333337307,0.933333337307,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[3,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":10,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“frame”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[111.807,88.967,0],"ix":2},"a":{"a":0,"k":[83.852,64.685,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[9.546,0],[6.23,-2.147],[0,0],[0,-9.123],[0,0],[0,0],[0,0],[-8.139,2.607],[0,0],[0,0],[0,0],[-8.848,0],[-5.332,-1.934],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-8.788,0],[-5.333,-1.933],[0,0],[0,0],[0,0],[0,0],[0,0],[1.074,-7.57],[0,0],[0,0],[0,0],[6.689,0],[2.264,0.656],[0,0],[7.973,0],[4.952,-1.664],[0,0],[0.154,-0.403],[0.083,-0.209],[0.237,-0.541],[0,0],[0.052,-0.117],[0.147,-0.307],[0,0],[-8.042,0],[-4.909,-1.533],[0,0],[-2.068,0],[0,8.594],[0,0],[10.688,3.114],[0,0],[9.545,0],[5.986,-2.055],[0,0],[0,0]],"o":[[-9.364,0],[0,0],[-9.789,3.136],[0,0],[0,0],[0,0],[0,-7.411],[0,0],[0,0],[0,0],[5.764,-1.961],[9.087,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[5.581,-1.917],[9.086,0],[0,0],[0,0],[0,0],[0,0],[0,0],[8.696,2.532],[0,0],[0,0],[0,0],[0,6.397],[-1.663,0],[0,0],[-5.286,-1.65],[-8.471,0],[0,0],[-0.143,0.406],[-0.082,0.216],[-0.22,0.552],[0,0],[-0.048,0.112],[-0.135,0.299],[0,0],[4.587,-1.541],[7.578,0],[0,0],[2.658,0.775],[8.879,0],[0,0],[1.361,-9.6],[0,0],[-5.765,-2.09],[-9.229,0],[0,0],[0,0],[-5.765,-2.092]],"v":[[-39.512,-64.435],[-62.977,-61.213],[-65.544,-60.102],[-83.602,-37.488],[-83.602,-7.314],[-79.602,-10.935],[-79.602,-37.488],[-64.324,-56.292],[-64.135,-56.352],[-63.954,-56.431],[-61.531,-57.48],[-39.512,-60.435],[-17.471,-57.479],[-17.413,-57.458],[-17.354,-57.438],[-1.132,-52.121],[0.104,-51.716],[1.34,-52.114],[17.223,-57.224],[17.26,-57.236],[17.298,-57.248],[39.262,-60.179],[61.301,-57.224],[61.38,-57.195],[61.46,-57.17],[64.132,-56.326],[64.174,-56.312],[64.217,-56.299],[78.279,-37.661],[78.24,-37.381],[78.24,-37.099],[78.251,46.804],[67.408,57.175],[62.083,56.285],[59.195,55.372],[38.635,52.814],[18.096,55.363],[5.13,59.576],[4.689,60.79],[4.439,61.431],[3.753,63.073],[3.709,63.175],[3.561,63.516],[3.12,64.435],[19.331,59.168],[38.635,56.814],[58.001,59.19],[60.923,60.113],[67.408,61.175],[82.251,46.804],[82.24,-37.099],[65.337,-60.14],[62.665,-60.984],[39.262,-64.179],[15.999,-61.032],[0.115,-55.921],[-16.107,-61.239]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.852,64.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.023,0]],"o":[[0.023,0]],"v":[[-38.374,-59.872]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.001,0]],"o":[[0.001,0]],"v":[[-38.389,-59.872]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0.001,0]],"o":[[0.001,0]],"v":[[-38.415,-59.872]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[],"o":[],"v":[],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0.003,0]],"o":[[0.003,0]],"v":[[-38.475,-59.872]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0.004,0]],"o":[[0.003,0]],"v":[[-38.503,-59.872]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0.004,0]],"o":[[0.004,0]],"v":[[-38.532,-59.872]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.562,-59.872]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.589,-59.872]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.614,-59.872]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-38.644,-59.872]],"c":true},"ix":2},"nm":"路径 11","mn":"ADBE Vector Shape - Group","hd":false},{"ind":11,"ty":"sh","ix":12,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.669,-59.872]],"c":true},"ix":2},"nm":"路径 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":12,"ty":"sh","ix":13,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-38.698,-59.872]],"c":true},"ix":2},"nm":"路径 13","mn":"ADBE Vector Shape - Group","hd":false},{"ind":13,"ty":"sh","ix":14,"ks":{"a":0,"k":{"i":[[0.006,-0.001]],"o":[[0.007,-0.001]],"v":[[-38.723,-59.871]],"c":true},"ix":2},"nm":"路径 14","mn":"ADBE Vector Shape - Group","hd":false},{"ind":14,"ty":"sh","ix":15,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.007,0]],"v":[[-38.75,-59.871]],"c":true},"ix":2},"nm":"路径 15","mn":"ADBE Vector Shape - Group","hd":false},{"ind":15,"ty":"sh","ix":16,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.007,0]],"v":[[-38.776,-59.871]],"c":true},"ix":2},"nm":"路径 16","mn":"ADBE Vector Shape - Group","hd":false},{"ind":16,"ty":"sh","ix":17,"ks":{"a":0,"k":{"i":[[0.005,0]],"o":[[0.006,0]],"v":[[-38.8,-59.871]],"c":true},"ix":2},"nm":"路径 17","mn":"ADBE Vector Shape - Group","hd":false},{"ind":17,"ty":"sh","ix":18,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.827,-59.871]],"c":true},"ix":2},"nm":"路径 18","mn":"ADBE Vector Shape - Group","hd":false},{"ind":18,"ty":"sh","ix":19,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-38.857,-59.871]],"c":true},"ix":2},"nm":"路径 19","mn":"ADBE Vector Shape - Group","hd":false},{"ind":19,"ty":"sh","ix":20,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.007,0]],"v":[[-38.882,-59.871]],"c":true},"ix":2},"nm":"路径 20","mn":"ADBE Vector Shape - Group","hd":false},{"ind":20,"ty":"sh","ix":21,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-38.91,-59.871]],"c":true},"ix":2},"nm":"路径 21","mn":"ADBE Vector Shape - Group","hd":false},{"ind":21,"ty":"sh","ix":22,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.006,0]],"v":[[-38.935,-59.871]],"c":true},"ix":2},"nm":"路径 22","mn":"ADBE Vector Shape - Group","hd":false},{"ind":22,"ty":"sh","ix":23,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-38.961,-59.87]],"c":true},"ix":2},"nm":"路径 23","mn":"ADBE Vector Shape - Group","hd":false},{"ind":23,"ty":"sh","ix":24,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-38.989,-59.87]],"c":true},"ix":2},"nm":"路径 24","mn":"ADBE Vector Shape - Group","hd":false},{"ind":24,"ty":"sh","ix":25,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.008,0]],"v":[[-39.017,-59.87]],"c":true},"ix":2},"nm":"路径 25","mn":"ADBE Vector Shape - Group","hd":false},{"ind":25,"ty":"sh","ix":26,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-39.041,-59.87]],"c":true},"ix":2},"nm":"路径 26","mn":"ADBE Vector Shape - Group","hd":false},{"ind":26,"ty":"sh","ix":27,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.008,0]],"v":[[-39.069,-59.87]],"c":true},"ix":2},"nm":"路径 27","mn":"ADBE Vector Shape - Group","hd":false},{"ind":27,"ty":"sh","ix":28,"ks":{"a":0,"k":{"i":[[0.008,0]],"o":[[0.008,0]],"v":[[-39.096,-59.87]],"c":true},"ix":2},"nm":"路径 28","mn":"ADBE Vector Shape - Group","hd":false},{"ind":28,"ty":"sh","ix":29,"ks":{"a":0,"k":{"i":[[0.007,0]],"o":[[0.007,0]],"v":[[-39.121,-59.869]],"c":true},"ix":2},"nm":"路径 29","mn":"ADBE Vector Shape - Group","hd":false},{"ind":29,"ty":"sh","ix":30,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-39.147,-59.869]],"c":true},"ix":2},"nm":"路径 30","mn":"ADBE Vector Shape - Group","hd":false},{"ind":30,"ty":"sh","ix":31,"ks":{"a":0,"k":{"i":[[0.008,0]],"o":[[0.009,0]],"v":[[-39.176,-59.869]],"c":true},"ix":2},"nm":"路径 31","mn":"ADBE Vector Shape - Group","hd":false},{"ind":31,"ty":"sh","ix":32,"ks":{"a":0,"k":{"i":[[0.009,0]],"o":[[0.009,0]],"v":[[-39.204,-59.869]],"c":true},"ix":2},"nm":"路径 32","mn":"ADBE Vector Shape - Group","hd":false},{"ind":32,"ty":"sh","ix":33,"ks":{"a":0,"k":{"i":[[0.008,0]],"o":[[0.009,0]],"v":[[-39.229,-59.869]],"c":true},"ix":2},"nm":"路径 33","mn":"ADBE Vector Shape - Group","hd":false},{"ind":33,"ty":"sh","ix":34,"ks":{"a":0,"k":{"i":[[0.008,0]],"o":[[0.008,0]],"v":[[-39.254,-59.868]],"c":true},"ix":2},"nm":"路径 34","mn":"ADBE Vector Shape - Group","hd":false},{"ind":34,"ty":"sh","ix":35,"ks":{"a":0,"k":{"i":[[2.917,-0.309],[-3.326,0.027]],"o":[[2.916,-0.309],[-3.326,0.027]],"v":[[-48.626,-59.364],[-39.257,-59.868]],"c":true},"ix":2},"nm":"路径 35","mn":"ADBE Vector Shape - Group","hd":false},{"ind":35,"ty":"sh","ix":36,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-48.648,-59.362]],"c":true},"ix":2},"nm":"路径 36","mn":"ADBE Vector Shape - Group","hd":false},{"ind":36,"ty":"sh","ix":37,"ks":{"a":0,"k":{"i":[[0.006,-0.001]],"o":[[0.005,-0.001]],"v":[[-48.67,-59.359]],"c":true},"ix":2},"nm":"路径 37","mn":"ADBE Vector Shape - Group","hd":false},{"ind":37,"ty":"sh","ix":38,"ks":{"a":0,"k":{"i":[[0.006,0]],"o":[[0.006,0]],"v":[[-48.693,-59.357]],"c":true},"ix":2},"nm":"路径 38","mn":"ADBE Vector Shape - Group","hd":false},{"ind":38,"ty":"sh","ix":39,"ks":{"a":0,"k":{"i":[[0.005,-0.001]],"o":[[0.006,-0.001]],"v":[[-48.715,-59.354]],"c":true},"ix":2},"nm":"路径 39","mn":"ADBE Vector Shape - Group","hd":false},{"ind":39,"ty":"sh","ix":40,"ks":{"a":0,"k":{"i":[[0.005,0]],"o":[[0.005,0]],"v":[[-48.737,-59.352]],"c":true},"ix":2},"nm":"路径 40","mn":"ADBE Vector Shape - Group","hd":false},{"ind":40,"ty":"sh","ix":41,"ks":{"a":0,"k":{"i":[[0.004,0]],"o":[[0.004,0]],"v":[[-48.759,-59.35]],"c":true},"ix":2},"nm":"路径 41","mn":"ADBE Vector Shape - Group","hd":false},{"ind":41,"ty":"sh","ix":42,"ks":{"a":0,"k":{"i":[[0.003,0]],"o":[[0.002,0]],"v":[[-48.78,-59.348]],"c":true},"ix":2},"nm":"路径 42","mn":"ADBE Vector Shape - Group","hd":false},{"ind":42,"ty":"sh","ix":43,"ks":{"a":0,"k":{"i":[[0.002,0]],"o":[[0.002,0]],"v":[[-48.802,-59.345]],"c":true},"ix":2},"nm":"路径 43","mn":"ADBE Vector Shape - Group","hd":false},{"ind":43,"ty":"sh","ix":44,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0.001,0]],"v":[[-48.824,-59.343]],"c":true},"ix":2},"nm":"路径 44","mn":"ADBE Vector Shape - Group","hd":false},{"ind":44,"ty":"sh","ix":45,"ks":{"a":0,"k":{"i":[[0.001,0]],"o":[[0.001,0]],"v":[[-48.847,-59.34]],"c":true},"ix":2},"nm":"路径 45","mn":"ADBE Vector Shape - Group","hd":false},{"ind":45,"ty":"sh","ix":46,"ks":{"a":0,"k":{"i":[[-5.513,-1.891],[8.995,0]],"o":[[-5.562,-1.898],[9.025,0]],"v":[[-16.113,-56.983],[-38.305,-59.872]],"c":true},"ix":2},"nm":"路径 46","mn":"ADBE Vector Shape - Group","hd":false},{"ind":46,"ty":"sh","ix":47,"ks":{"a":0,"k":{"i":[[-5.339,-1.798],[8.551,0.056]],"o":[[-5.398,-1.806],[8.588,0.056]],"v":[[62.492,-56.785],[41.262,-59.613]],"c":true},"ix":2},"nm":"路径 47","mn":"ADBE Vector Shape - Group","hd":false},{"ind":47,"ty":"sh","ix":48,"ks":{"a":0,"k":{"i":[[0,0],[-0.015,0.005],[0.027,-0.011]],"o":[[0.015,-0.005],[-0.028,0.01],[0,0]],"v":[[-61.046,-56.784],[-61.003,-56.798],[-61.086,-56.766]],"c":true},"ix":2},"nm":"路径 48","mn":"ADBE Vector Shape - Group","hd":false},{"ind":48,"ty":"sh","ix":49,"ks":{"a":0,"k":{"i":[[-0.107,0.036],[0,0]],"o":[[-0.101,0.035],[0.105,-0.037]],"v":[[18.158,-56.68],[17.838,-56.571]],"c":true},"ix":2},"nm":"路径 49","mn":"ADBE Vector Shape - Group","hd":false},{"ind":49,"ty":"sh","ix":50,"ks":{"a":0,"k":{"i":[[0,0],[0.012,0.004],[0,0]],"o":[[-0.012,-0.004],[0,0],[0,0]],"v":[[63.27,-56.514],[63.235,-56.526],[65.336,-55.861]],"c":true},"ix":2},"nm":"路径 50","mn":"ADBE Vector Shape - Group","hd":false},{"ind":50,"ty":"sh","ix":51,"ks":{"a":0,"k":{"i":[[-0.062,0.02],[-0.061,0.026],[0,0],[0,0],[0.063,-0.021]],"o":[[0.063,-0.02],[0,0],[0,0],[0,0],[0.062,-0.021]],"v":[[-63.726,-55.634],[-63.541,-55.703],[-62.217,-56.276],[-63.63,-55.664],[-63.912,-55.573]],"c":true},"ix":2},"nm":"路径 51","mn":"ADBE Vector Shape - Group","hd":false},{"ind":51,"ty":"sh","ix":52,"ks":{"a":0,"k":{"i":[[0.102,0.03],[0,0],[-0.108,-0.034]],"o":[[0,0],[0.11,0.032],[-0.101,-0.031]],"v":[[65.984,-55.657],[65.96,-55.664],[66.289,-55.565]],"c":true},"ix":2},"nm":"路径 52","mn":"ADBE Vector Shape - Group","hd":false},{"ind":52,"ty":"sh","ix":53,"ks":{"a":0,"k":{"i":[[0,0],[0.008,0.003],[0,0]],"o":[[-0.009,-0.003],[0,0],[0,0]],"v":[[-15.523,-56.776],[-15.548,-56.785],[-2.228,-52.417]],"c":true},"ix":2},"nm":"路径 53","mn":"ADBE Vector Shape - Group","hd":false},{"ind":53,"ty":"sh","ix":54,"ks":{"a":0,"k":{"i":[[0,0],[-0.202,0],[-0.188,0.057],[0,0]],"o":[[0.195,0.061],[0.196,0],[0,0],[0,0]],"v":[[0.724,-51.45],[1.322,-51.358],[1.901,-51.444],[1.316,-51.256]],"c":true},"ix":2},"nm":"路径 54","mn":"ADBE Vector Shape - Group","hd":false},{"ind":54,"ty":"sh","ix":55,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[9.011,3.192],[1.176,-8.294],[0,-0.094]],"o":[[0,0],[1.156,-8.155],[9.174,3.238],[-0.013,0.093],[0,0]],"v":[[81.448,-34.679],[81.468,-34.821],[67.128,-55.288],[81.468,-34.817],[81.448,-34.536]],"c":true},"ix":2},"nm":"路径 55","mn":"ADBE Vector Shape - Group","hd":false},{"ind":55,"ty":"sh","ix":56,"ks":{"a":0,"k":{"i":[[7.803,0],[2.488,0.725],[0,0],[7.678,0.019],[-5.041,-1.574],[0,0],[-1.851,0],[0,7.515]],"o":[[-1.886,0],[0,0],[-5.046,-1.576],[7.677,0.019],[0,0],[2.481,0.72],[7.803,0],[0,7.515]],"v":[[68.615,61.738],[62.69,60.756],[59.812,59.846],[40.097,57.377],[59.806,59.844],[62.689,60.755],[68.615,61.738],[81.459,49.367]],"c":true},"ix":2},"nm":"路径 56","mn":"ADBE Vector Shape - Group","hd":false},{"ind":56,"ty":"sh","ix":57,"ks":{"a":0,"k":{"i":[[0,0],[-8.258,0],[4.787,-1.609],[0,0]],"o":[[4.78,-1.607],[-8.257,0],[0,0],[0,0]],"v":[[19.922,59.829],[39.842,57.377],[19.902,59.836],[12.865,62.122]],"c":true},"ix":2},"nm":"路径 57","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[82.644,62.122],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":59,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“hat”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[48.289,95.994,0],"ix":2},"a":{"a":0,"k":[33.401,22.094,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.74,0.026],[0,0],[-0.016,-0.433],[0.169,-0.156],[0,0],[0.739,-0.032],[0,0],[0.018,0.432],[-0.173,0.158],[0,0]],"o":[[0,0],[0.433,-0.015],[0.008,0.23],[0,0],[-0.544,0.5],[0,0],[-0.434,0.018],[-0.01,-0.234],[0,0],[0.549,-0.497]],"v":[[-3.654,-12.772],[32.33,-14.062],[33.143,-13.306],[32.889,-12.699],[6.368,11.656],[4.38,12.48],[-32.323,14.059],[-33.141,13.309],[-32.884,12.692],[-5.649,-11.962]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.401,14.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.432,3.489],[0,0],[0,0],[0,0],[12.033,-4.937]],"o":[[0,0],[0,0],[0,0],[1.431,3.489],[-12.032,4.937]],"v":[[-19.91,13.512],[-25.094,0.876],[18.479,-17.002],[23.663,-4.365],[4.469,10.892]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.547,26.938],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“hat2”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[-0.001]},"n":["0p667_1_1_-0p001"],"t":40,"s":[0],"e":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":49,"s":[10],"e":[-10]},{"i":{"x":[0],"y":[1.001]},"o":{"x":[0.333],"y":[0]},"n":["0_1p001_0p333_0"],"t":57,"s":[-10],"e":[0]},{"t":65}],"ix":10},"p":{"a":0,"k":[21.669,101.262,0],"ix":2},"a":{"a":0,"k":[4.685,1,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.473,-5.427],[0.473,5.427]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.991999966491,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.212,6.427],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.305,-0.262],[-0.262,2.304],[2.305,0.262],[0.261,-2.305]],"o":[[2.305,0.262],[0.262,-2.305],[-2.305,-0.261],[-0.262,2.304]],"v":[[-0.475,4.173],[4.173,0.474],[0.473,-4.174],[-4.174,-0.474]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.686,16.096],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“Left hand”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.901],"y":[0.019]},"n":["0p667_1_0p901_0p019"],"t":40,"s":[0.131],"e":[-20]},{"i":{"x":[0],"y":[1.032]},"o":{"x":[0.333],"y":[0]},"n":["0_1p032_0p333_0"],"t":45,"s":[-20],"e":[0.131]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":50,"s":[0.131],"e":[0.131]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.901],"y":[0.019]},"n":["0p667_1_0p901_0p019"],"t":55,"s":[0.131],"e":[-20]},{"i":{"x":[0],"y":[1.032]},"o":{"x":[0.333],"y":[0]},"n":["0_1p032_0p333_0"],"t":60,"s":[-20],"e":[0.131]},{"t":65}],"ix":10},"p":{"a":0,"k":[40.669,145.414,0],"ix":2},"a":{"a":0,"k":[36.526,23.424,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.347,-1.61],[1.626,3.381],[-3.346,1.61],[-1.626,-3.381]],"o":[[-3.346,1.609],[-1.626,-3.382],[3.347,-1.61],[1.627,3.381]],"v":[[2.945,6.122],[-6.059,2.915],[-2.945,-6.122],[6.059,-2.915]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.936,7.982],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.973,13.135],[18.352,5.538],[-13.972,-13.135],[-18.352,-5.538]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.04,17.089],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“Right hand”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.901],"y":[-0.019]},"n":["0p667_1_0p901_-0p019"],"t":40,"s":[0.131],"e":[20]},{"i":{"x":[0],"y":[0.967]},"o":{"x":[0.333],"y":[0]},"n":["0_0p967_0p333_0"],"t":45,"s":[20],"e":[0.131]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":50,"s":[0.131],"e":[0.131]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.901],"y":[-0.019]},"n":["0p667_1_0p901_-0p019"],"t":55,"s":[0.131],"e":[20]},{"i":{"x":[0],"y":[0.967]},"o":{"x":[0.333],"y":[0]},"n":["0_0p967_0p333_0"],"t":60,"s":[20],"e":[0.131]},{"t":65}],"ix":10},"p":{"a":0,"k":[97.505,143.786,0],"ix":2},"a":{"a":0,"k":[6.433,18.865,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.021,3.57],[-3.608,-1.032],[1.021,-3.57],[3.607,1.032]],"o":[[1.021,-3.57],[3.607,1.033],[-1.022,3.571],[-3.608,-1.032]],"v":[[-6.531,-1.869],[1.85,-6.465],[6.531,1.868],[-1.85,6.465]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.032,7.747],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.124,1.708],[-16.354,10.007],[19.124,-1.706],[16.355,-10.007]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.374,14.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“body”","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[69.89,131.518,0],"ix":2},"a":{"a":0,"k":[50.338,50.337,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.721,13.988],[7.848,-12.169],[20.398,13.154],[3.322,5.328],[-8.229,-5.307],[-13.154,20.397]],"o":[[4.74,12.584],[-13.154,20.397],[-5.626,-3.628],[3.205,8.51],[20.398,13.154],[9.526,-14.772]],"v":[[34.607,-36.682],[30.427,2.659],[-30.324,15.774],[-43.786,2.118],[-26.491,23.528],[34.26,10.413]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[53.011,63.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.154,-20.397],[20.397,13.155],[-13.154,20.398],[-20.397,-13.154]],"o":[[-13.154,20.397],[-20.397,-13.154],[13.155,-20.397],[20.398,13.154]],"v":[[36.934,23.818],[-23.817,36.932],[-36.934,-23.818],[23.818,-36.934]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.337,50.337],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":-14,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"“content”","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":86,"s":[100],"e":[11]},{"t":96}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120.819,52.412,0],"ix":2},"a":{"a":0,"k":[0.25,0.25,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.06,0.06,0.667],"y":[0.976,0.976,1]},"o":{"x":[1,1,0.333],"y":[0.001,0.001,0]},"n":["0p06_0p976_1_0p001","0p06_0p976_1_0p001","0p667_1_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"t":11}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.104,0],[0,0],[0,-3.105],[0,0],[-3.104,0],[0,0],[0,3.104],[0,0]],"o":[[0,0],[-3.104,0],[0,0],[0,3.104],[0,0],[3.104,0],[0,0],[0,-3.105]],"v":[[10.002,-10.113],[-10.003,-10.113],[-15.624,-4.491],[-15.624,4.491],[-10.003,10.113],[10.002,10.113],[15.624,4.491],[15.624,-4.491]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.894],[0,0],[0.894,0],[0,0],[0,0.894],[0,0],[-0.893,0]],"o":[[0.894,0],[0,0],[0,0.894],[0,0],[-0.893,0],[0,0],[0,-0.894],[0,0]],"v":[[10.002,-6.113],[11.624,-4.491],[11.624,4.491],[10.002,6.113],[-10.003,6.113],[-11.624,4.491],[-11.624,-4.491],[-10.003,-6.113]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.873,10.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,1.997],[0,0],[-1.997,0],[0,0],[0,-1.997],[0,0],[1.997,0]],"o":[[-1.997,0],[0,0],[0,-1.997],[0,0],[1.997,0],[0,0],[0,1.997],[0,0]],"v":[[-10.003,8.113],[-13.624,4.491],[-13.624,-4.491],[-10.003,-8.113],[10.002,-8.113],[13.624,-4.491],[13.624,4.491],[10.002,8.113]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.874,10.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.1.20","fr":25,"ip":0,"op":100,"w":200,"h":200,"nm":"缺省-老师","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"stick Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.717],"y":[0.99]},"o":{"x":[1],"y":[0]},"n":["0p717_0p99_1_0"],"t":60,"s":[-33],"e":[8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0.05]},"n":["0p667_1_1_0p05"],"t":70,"s":[8],"e":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p667_1_0p167_0"],"t":75,"s":[-6],"e":[-6]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":95,"s":[-6],"e":[-33]},{"t":99}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":1,"y":0},"n":"0p667_1_1_0","t":75,"s":[88.969,133.836,0],"e":[88.969,132.836,0],"to":[0,-0.16666667163372,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.732,"y":0},"n":"0p667_1_0p732_0","t":79,"s":[88.969,132.836,0],"e":[88.969,133.836,0],"to":[0,0,0],"ti":[0,-0.16666667163372,0]},{"t":99}],"ix":2},"a":{"a":0,"k":[31.794,49.713,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-13.725,-24.308],[13.725,24.308]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.725,34.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"mouth Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[136.58,137.028,0],"e":[134.913,136.028,0],"to":[-0.27777779102325,-0.16666667163372,0],"ti":[0.33333334326744,0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[134.913,136.028,0],"e":[134.58,136.028,0],"to":[-0.33333334326744,-0.16666667163372,0],"ti":[-0.27777779102325,-0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":87,"s":[134.58,136.028,0],"e":[136.58,137.028,0],"to":[0.27777779102325,0.16666667163372,0],"ti":[-0.33333334326744,-0.16666667163372,0]},{"t":98}],"ix":2},"a":{"a":0,"k":[12.827,10.058,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.155,0],[0,0]],"o":[[0,0],[5.5,0],[0,0]],"v":[[-5.298,-2.558],[-0.173,2.558],[4.078,-2.558]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[12.827,10.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"eye Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[138.452,118.739,0],"e":[136.786,117.739,0],"to":[-0.27777779102325,-0.16666667163372,0],"ti":[0.33333334326744,0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[136.786,117.739,0],"e":[136.452,117.739,0],"to":[-0.33333334326744,-0.16666667163372,0],"ti":[-0.27777779102325,-0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":87,"s":[136.452,117.739,0],"e":[138.452,118.739,0],"to":[0.27777779102325,0.16666667163372,0],"ti":[-0.33333334326744,-0.16666667163372,0]},{"t":98}],"ix":2},"a":{"a":0,"k":[23.472,5.359,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.042,0.792],[0,0],[1.089,0.058],[0.043,-0.792],[0,0],[-1.09,-0.058]],"o":[[0,0],[0.042,-0.792],[-1.09,-0.058],[0,0],[-0.043,0.792],[1.089,0.059]],"v":[[1.827,2.601],[2.096,-2.392],[0.21,-3.923],[-1.827,-2.602],[-2.094,2.391],[-0.21,3.922]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.387,4.231],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.043,0.792],[0,0],[1.09,0.058],[0.043,-0.792],[0,0],[-1.09,-0.058]],"o":[[0,0],[0.043,-0.792],[-1.09,-0.058],[0,0],[-0.043,0.792],[1.09,0.059]],"v":[[1.828,2.601],[2.095,-2.392],[0.21,-3.923],[-1.828,-2.602],[-2.095,2.391],[-0.21,3.922]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.8,0.8,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.556,6.488],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Right hand Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[169.482,149.57,0],"ix":2},"a":{"a":0,"k":[23.562,14.807,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.949,-3.3],[-3.254,1.922],[1.949,3.299],[3.254,-1.922]],"o":[[1.949,3.299],[3.254,-1.922],[-1.948,-3.3],[-3.254,1.922]],"v":[[-5.892,3.481],[3.529,5.974],[5.892,-3.48],[-3.529,-5.974]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.034,21.468],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.568,3.908],[14.912,11.829],[-18.568,-3.993],[-14.954,-11.829]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.817,12.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"body Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144.074,129.065,0],"ix":2},"a":{"a":0,"k":[47.359,47.358,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.957,13.268],[7.561,-11.292],[18.928,12.674],[3.031,5.053],[-7.635,-5.113],[-12.674,18.929]],"o":[[4.244,11.886],[-12.673,18.928],[-5.222,-3.496],[2.87,8.037],[18.93,12.674],[9.178,-13.708]],"v":[[33.051,-34.094],[28.492,2.756],[-28.729,14.082],[-41.141,1.049],[-25.258,21.42],[31.964,10.094]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.671,60.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.581,-20.173],[-20.173,10.581],[10.581,20.172],[20.173,-10.581]],"o":[[10.581,20.174],[20.173,-10.581],[-10.581,-20.174],[-20.174,10.581]],"v":[[-36.527,19.158],[19.159,36.527],[36.528,-19.158],[-19.159,-36.527]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.358,47.358],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"content3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.521],"y":[1.028]},"o":{"x":[1],"y":[-0.019]},"n":["0p521_1p028_1_-0p019"],"t":24,"s":[0],"e":[100]},{"t":44}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[37.5,115.5,0],"ix":2},"a":{"a":0,"k":[-7.5,-40,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.362,0.667,0.667],"y":[1.015,1,1]},"o":{"x":[1,0.333,0.333],"y":[-0.029,0,0]},"n":["0p362_1p015_1_-0p029","0p667_1_0p333_0","0p667_1_0p333_0"],"t":24,"s":[0,100,100],"e":[247,100,100]},{"t":44}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-40.25],[27.25,-40.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333337307,0.933333337307,0.933333337307,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[3,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":10,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"content2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.521],"y":[1.028]},"o":{"x":[1],"y":[-0.019]},"n":["0p521_1p028_1_-0p019"],"t":15,"s":[0],"e":[100]},{"t":35}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.5,86.5,0],"ix":2},"a":{"a":0,"k":[-7.5,-40,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.362,0.667,0.667],"y":[1.038,1,1]},"o":{"x":[1,0.333,0.333],"y":[-0.071,0,0]},"n":["0p362_1p038_1_-0p071","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[0,100,100],"e":[100,100,100]},{"t":35}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-40.25],[27.25,-40.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333337307,0.933333337307,0.933333337307,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[3,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":10,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"content1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.521],"y":[1.028]},"o":{"x":[1],"y":[-0.019]},"n":["0p521_1p028_1_-0p019"],"t":10,"s":[0],"e":[100]},{"t":30}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.5,60,0],"ix":2},"a":{"a":0,"k":[-7.5,-40,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.362,0.667,0.667],"y":[1.038,1,1]},"o":{"x":[1,0.333,0.333],"y":[-0.071,0,0]},"n":["0p362_1p038_1_-0p071","0p667_1_0p333_0","0p667_1_0p333_0"],"t":10,"s":[0,100,100],"e":[100,100,100]},{"t":30}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.5,-40.25],[27.25,-40.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333337307,0.933333337307,0.933333337307,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[3,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":10,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"frame Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[88.94,88.552,0],"ix":2},"a":{"a":0,"k":[81.55,62.3,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.636,0],[0,0],[0,-6.32],[0,0],[-7.636,0],[0,0],[0,0],[0,0],[0.528,1.4],[0,0],[0,0],[0,0],[0,3.783],[0,0],[-5.099,0],[0,0],[0,-3.783],[0,0],[0,0],[0,0],[-1.269,-0.768],[0,0],[0,0],[0,0]],"o":[[0,0],[-7.636,0],[0,0],[0,6.319],[0,0],[0,0],[0,0],[-0.594,-1.239],[0,0],[0,0],[0,0],[-5.099,0],[0,0],[0,-3.783],[0,0],[5.1,0],[0,0],[0,0],[0,0],[1.37,0.667],[0,0],[0,0],[0,0],[0,-6.32]],"v":[[67.452,-62.05],[-67.452,-62.05],[-81.3,-50.589],[-81.3,50.589],[-67.452,62.05],[10.044,62.05],[10.521,62.05],[10.314,61.62],[8.622,57.644],[8.549,57.45],[8.342,57.45],[-67.452,57.45],[-76.7,50.589],[-76.7,-50.589],[-67.452,-57.45],[67.452,-57.45],[76.7,-50.589],[76.7,-4.854],[76.7,-4.666],[76.869,-4.584],[80.845,-2.421],[81.3,-2.145],[81.3,-2.677],[81.3,-50.589]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-6.154],[0,0],[1.369,0.667],[0,0],[5.236,0],[0,0],[0,-3.927],[0,0],[-5.236,0],[0,0],[-0.626,-1.302],[0,0],[0,6.154],[0,0],[-7.471,0]],"o":[[7.471,0],[0,0],[-1.295,-0.785],[0,0],[0,-3.927],[0,0],[-5.236,0],[0,0],[0,3.927],[0,0],[0.513,1.362],[0,0],[-7.471,0],[0,0],[0,-6.154],[0,0]],"v":[[67.452,-61.75],[81,-50.589],[81,-2.677],[77,-4.854],[77,-50.589],[67.452,-57.75],[-67.452,-57.75],[-77,-50.589],[-77,50.589],[-67.452,57.75],[8.342,57.75],[10.044,61.75],[-67.452,61.75],[-81,50.589],[-81,-50.589],[-67.452,-61.75]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[81.55,62.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.237],[0,0],[-7.553,0],[0,0],[0,-6.237],[0,0],[0,0],[1.372,0.668],[0,0],[0,0],[5.182,0],[0,0],[0,-3.865],[0,0],[-5.182,0],[0,0],[0,0],[-0.597,-1.243],[0,0]],"o":[[-7.553,0],[0,0],[0,-6.237],[0,0],[7.553,0],[0,0],[0,0],[-1.274,-0.772],[0,0],[0,0],[0,-3.865],[0,0],[-5.182,0],[0,0],[0,3.866],[0,0],[0,0],[0.529,1.403],[0,0],[0,0]],"v":[[-67.452,61.9],[-81.15,50.589],[-81.15,-50.589],[-67.452,-61.9],[67.451,-61.9],[81.15,-50.589],[81.15,-2.411],[80.923,-2.548],[76.934,-4.718],[76.85,-4.759],[76.85,-50.589],[67.451,-57.6],[-67.452,-57.6],[-76.85,-50.589],[-76.85,50.589],[-67.452,57.6],[8.446,57.6],[8.482,57.697],[10.178,61.685],[10.282,61.9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[81.55,62.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"content4 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[100]},{"t":25}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[52.295,68.466,0],"ix":2},"a":{"a":0,"k":[26.54,26.262,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[44,44,100],"e":[100,100,100]},{"t":12}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.614,-0.099],[0,0],[1.102,-1.124],[0,0],[-0.106,-0.625],[0,0],[1.362,0.748],[0,0],[0.538,-0.298],[0,0],[-0.26,1.586],[0,0],[0.442,0.455],[0,0],[-1.524,0.232],[0,0],[-0.26,0.566],[0,0],[-0.72,0],[-0.293,-0.658]],"o":[[0,0],[0.261,0.566],[0,0],[1.52,0.232],[0,0],[-0.44,0.456],[0,0],[0.26,1.586],[0,0],[-0.537,-0.298],[0,0],[-1.36,0.748],[0,0],[0.105,-0.625],[0,0],[-1.104,-1.124],[0,0],[0.615,-0.099],[0,0],[0.292,-0.658],[0.72,0],[0,0]],"v":[[1.666,-15.182],[5.168,-7.757],[6.568,-6.693],[14.408,-5.503],[15.438,-2.191],[9.764,3.589],[9.232,5.307],[10.57,13.467],[7.874,15.514],[0.864,11.663],[-0.864,11.663],[-7.876,15.514],[-10.57,13.467],[-9.23,5.307],[-9.766,3.589],[-15.436,-2.191],[-14.408,-5.503],[-6.57,-6.693],[-5.17,-7.757],[-1.667,-15.182],[-0.002,-16.262],[1.664,-15.182]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.875,0.870999983245,0.870999983245,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.54,26.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Left hand Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.725],"y":[0.978]},"o":{"x":[1],"y":[0]},"n":["0p725_0p978_1_0"],"t":75,"s":[0],"e":[2]},{"t":79}],"ix":10},"p":{"a":0,"k":[128.745,151.625,0],"ix":2},"a":{"a":0,"k":[46.716,26.22,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.596,-3.785],[-3.733,0.588],[0.596,3.785],[3.734,-0.588]],"o":[[0.596,3.785],[3.734,-0.588],[-0.596,-3.785],[-3.734,0.588]],"v":[[-6.76,1.064],[1.079,6.854],[6.76,-1.065],[-1.079,-6.854]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.842999985639,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.606,7.692],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.262,-2.76],[-15.993,-11.012],[19.262,2.757],[16.062,11.012]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.933000033509,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.455,15.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":250,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
.lottie-icon{
text-align: center;
margin-top: 200px;
margin-bottom: 50px;
&__title{
font-size:14px;
font-family:PingFangSC-Regular;
font-weight:400;
color:#999;
line-height:20px;
margin-top: 20px;
}
}
\ No newline at end of file
/*
* @Author: wufan
* @Date: 2021-06-15 13:48:35
* @LastEditors: wufan
* @LastEditTime: 2021-06-15 14:24:57
* @Description: Description
*/
import React from 'react';
import Lottie from 'react-lottie';
import student from '@/common/lottie/student.json';
import activity from '@/common/lottie/activity.json';
import teacher from '@/common/lottie/teacher.json';
import college from '@/common/lottie/college.json';
import './LottieIcon.less';
interface LottieIconInterface {
size: number,
type: string,
title: string,
isStopped: boolean,
isPaused: boolean,
}
const ANIMATION_DATA_MAP: {
[key: string]: any,
} = {
student,
activity,
teacher,
college
}
function LottieIcon(props: LottieIconInterface) {
const {
title,
size = 90,
type = 'student',
isPaused = true,
isStopped = true,
} = props;
const options = {
loop: true,
autoplay: true,
animationData: ANIMATION_DATA_MAP[type],
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<div className="lottie-icon">
<Lottie
options={options}
width={size}
height={size}
isPaused={isPaused}
isStopped={isStopped}
/>
<div className="lottie-icon__title">{title}</div>
</div>
)
}
export default LottieIcon;
\ No newline at end of file
/*
* @Author: wufan
* @Date: 2021-05-26 10:29:56
* @LastEditors: wufan
* @LastEditTime: 2021-06-17 14:15:00
* @Description: Description
*/
import React from "react";
import { Tag } from 'antd'
import "./WatchDataHeader.less";
interface WatchDataHeaderProps {
......
import React, { useEffect, useState } from 'react';
import { Empty, ConfigProvider, Table } from 'antd';
import Lottie from 'react-lottie';
import * as nodata from '../modules/lottie/nodata/data.json';
function XMTable(props) {
const [empty, setEmpty] = useState(props.renderEmpty || {});
......@@ -12,9 +14,25 @@ function XMTable(props) {
// 自定义表格空状态
function customizeRenderEmpty() {
const defaultOptions = {
loop: true,
autoplay: true,
animationData: empty.image || nodata,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<Empty
image={empty.image || Empty.PRESENTED_IMAGE_SIMPLE}
image={<div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>}
imageStyle={{
height: 150,
}}
......
......@@ -7,7 +7,7 @@
left: 0px;
right: 0;
bottom: 0;
z-index:3;
z-index: 3;
background-color: #fff;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
......@@ -20,12 +20,12 @@
bottom: 0;
z-index: 102;
overflow: auto;
margin:0 16px;
.box{
&:first-child{
margin: 0 16px;
.box {
&:first-child {
margin-bottom: 8px;
}
&:last-child{
&:last-child {
margin-bottom: 16px;
}
}
......@@ -48,10 +48,10 @@
.content-header {
padding: 16px 16px 8px 16px;
line-height: 30px;
font-size:24px;
color:#333;
font-weight:bold;
background: #FFF;
font-size: 24px;
color: #333;
font-weight: bold;
background: #fff;
h1 {
font-weight: normal;
display: inline-block;
......
......@@ -2,89 +2,89 @@
* @Author: yuananting
* @Date: 2021-03-03 15:13:12
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-05-25 10:07:03
* @LastEditTime: 2021-06-16 09:57:18
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import Service from '@/common/js/service'
import Service from '@/common/js/service';
export function queryExternalCategoryTree(params: object) {
return Service.Hades('public/externalHades/queryCategoryTree', params)
return Service.Hades('public/externalHades/queryCategoryTree', params);
}
export function queryCategoryTree(params: object) {
return Service.Hades('public/hades/queryCategoryTree', params)
return Service.Hades('public/hades/queryCategoryTree', params);
}
export function addCategory(params: object) {
return Service.Hades('public/hades/addCategory', params)
return Service.Hades('public/hades/addCategory', params);
}
export function delCategory(params: object) {
return Service.Hades('public/hades/delCategory', params)
return Service.Hades('public/hades/delCategory', params);
}
export function editCategory(params: object) {
return Service.Hades('public/hades/editCategory', params)
return Service.Hades('public/hades/editCategory', params);
}
export function editCategoryTree(params: object) {
return Service.Hades('public/hades/editCategoryTree', params)
export function moveCategory(params: object) {
return Service.Hades('public/hades/moveCategory', params);
}
export function queryQuestionPageList(params: object) {
return Service.Hades('public/hades/queryQuestionPageList', params)
return Service.Hades('public/hades/queryQuestionPageList', params);
}
export function addQuestion(params: object) {
return Service.Hades('public/hades/addQuestion', params)
return Service.Hades('public/hades/addQuestion', params);
}
export function deleteQuestion(params: object) {
return Service.Hades('public/hades/deleteQuestion', params)
return Service.Hades('public/hades/deleteQuestion', params);
}
export function queryQuestionDetails(params: object) {
return Service.Hades('public/hades/queryQuestionDetails', params)
return Service.Hades('public/hades/queryQuestionDetails', params);
}
export function editQuestion(params: object) {
return Service.Hades('public/hades/editQuestion', params)
return Service.Hades('public/hades/editQuestion', params);
}
export function batchImport(params: object) {
return Service.Hades('public/hades/batchImport', params)
return Service.Hades('public/hades/batchImport', params);
}
export function createPaper(params: object) {
return Service.Hades('public/hades/createPaper', params)
return Service.Hades('public/hades/createPaper', params);
}
export function queryPaperPageList(params: object) {
return Service.Hades('public/hades/queryPaperPageList', params)
return Service.Hades('public/hades/queryPaperPageList', params);
}
export function deletePaper(params: object) {
return Service.Hades('public/hades/deletePaper', params)
return Service.Hades('public/hades/deletePaper', params);
}
export function queryPaperDetail(params: object) {
return Service.Hades('public/hades/queryPaperDetail', params)
return Service.Hades('public/hades/queryPaperDetail', params);
}
export function viewPaper(params: object) {
return Service.Hades('public/hades/viewPaper', params)
return Service.Hades('public/hades/viewPaper', params);
}
export function editPaper(params: object) {
return Service.Hades('public/hades/editPaper', params)
return Service.Hades('public/hades/editPaper', params);
}
export function batchQueryQuestionDetails(params: object) {
return Service.Hades('public/hades/batchQueryQuestionDetails', params)
return Service.Hades('public/hades/batchQueryQuestionDetails', params);
}
export function queryQuestionPageListWithContent(params: object) {
return Service.Hades('public/hades/queryQuestionPageListWithContent', params)
return Service.Hades('public/hades/queryQuestionPageListWithContent', params);
}
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-11 11:34:37
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-05-24 23:44:39
* @LastEditTime: 2021-06-16 09:56:46
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -12,7 +12,7 @@ import {
addCategory,
delCategory,
editCategory,
editCategoryTree,
moveCategory,
addQuestion,
queryQuestionPageList,
deleteQuestion,
......@@ -26,8 +26,8 @@ import {
viewPaper,
editPaper,
batchQueryQuestionDetails,
queryQuestionPageListWithContent
} from '@/data-source/aidTool/request-apis'
queryQuestionPageListWithContent,
} from '@/data-source/aidTool/request-apis';
export default class AidToolService {
/**
* 查询运营端分类书
......@@ -35,101 +35,101 @@ export default class AidToolService {
* @returns
*/
static queryExternalCategoryTree(parmas: any) {
return queryExternalCategoryTree(parmas)
return queryExternalCategoryTree(parmas);
}
// 获取题目分类树
static queryCategoryTree(params: any) {
return queryCategoryTree(params)
return queryCategoryTree(params);
}
// 新增题目分类
static addCategory(params: any) {
return addCategory(params)
return addCategory(params);
}
// 删除分类
static delCategory(params: any) {
return delCategory(params)
return delCategory(params);
}
// 编辑分类
static editCategory(params: any) {
return editCategory(params)
return editCategory(params);
}
// 编辑分类树(拖拽)
static editCategoryTree(params: any) {
return editCategoryTree(params)
// 拖拽移动分类树
static moveCategory(params: any) {
return moveCategory(params);
}
// 查询题目列表
static queryQuestionPageList(params: any) {
return queryQuestionPageList(params)
return queryQuestionPageList(params);
}
// 添加题目
static addQuestion(params: any) {
return addQuestion(params)
return addQuestion(params);
}
// 删除题目
static deleteQuestion(params: any) {
return deleteQuestion(params)
return deleteQuestion(params);
}
// 预览题目
static queryQuestionDetails(params: any) {
return queryQuestionDetails(params)
return queryQuestionDetails(params);
}
// 编辑题目
static editQuestion(params: any) {
return editQuestion(params)
return editQuestion(params);
}
// 批量导入
static batchImport(params: any) {
return batchImport(params)
return batchImport(params);
}
// 创建试卷
static createPaper(params: any) {
return createPaper(params)
return createPaper(params);
}
// 查询试卷列表
static queryPaperPageList(params: any) {
return queryPaperPageList(params)
return queryPaperPageList(params);
}
// 删除试卷
static deletePaper(params: any) {
return deletePaper(params)
return deletePaper(params);
}
// 编辑前查询试卷信息
static queryPaperDetail(params: any) {
return queryPaperDetail(params)
return queryPaperDetail(params);
}
// 预览试卷
static viewPaper(params: any) {
return viewPaper(params)
return viewPaper(params);
}
// 编辑试卷
static editPaper(params: any) {
return editPaper(params)
return editPaper(params);
}
// 操作试卷-预览查询多题目信息
static batchQueryQuestionDetails(params: any) {
return batchQueryQuestionDetails(params)
return batchQueryQuestionDetails(params);
}
// 操作试卷-选择题目列表带题目详情
static queryQuestionPageListWithContent(params: any) {
return queryQuestionPageListWithContent(params)
return queryQuestionPageListWithContent(params);
}
}
/*
* @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-05-28 15:20:40
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-11 16:44:17
* @LastEditors: Please set LastEditors
* @Description:
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
*/
......
/*
* @Author: 吴文洁
* @Date: 2020-08-20 09:21:40
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-02-20 17:08:58
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-06-11 15:17:56
* @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
......
......@@ -6,9 +6,11 @@
import React from 'react';
import { Modal, Input, Table, message, Tooltip, Empty } from 'antd';
import { XMTable } from '@/components';
import Service from '@/common/js/service';
import User from '@/common/js/user'
import SetEmployeeModal from "./SetEmployeeModal";
import search from '../../lottie/search/data.json';
import './ChooseMembersModal.less';
import _ from 'underscore';
......@@ -208,7 +210,6 @@ class ChooseMembersModal extends React.Component {
title: '全选', // 实际为头像,但在表格上这行要求显示为全选
key: 'avatar',
dataIndex: 'avatar',
width: '40%',
render: (value, record) => {
const { name } = record;
......@@ -311,23 +312,22 @@ class ChooseMembersModal extends React.Component {
enterButton={<span className="icon iconfont">&#xe832;</span>}
/>
<div className='container-left-body-table'>
<Table
<XMTable
rowKey={(record) => record.enterpriseVisibleUserId}
dataSource={allUserList}
columns={this.selectedColumnsLeft()}
pagination={false}
scroll={{ y: 290}}
// bordered={true}
locale={{
emptyText: <div>
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={false} />
<div style={{ color: '#333', marginTop: -70 }}>暂无数据</div>
renderEmpty={{
image: searchKey ? search : '',
description: <div>
<div style={{ color: '#333' }}>暂无数据</div>
<div style={{ color: '#666', padding: '0 32px', fontSize: '12px' }}>需要先将员工添加到企微可见范围后,员工才会出现在这里</div>
</div>,
</div>
}}
size={'small'}
rowSelection={{
columnWidth : 24,
columnWidth : 63,
selectedRowKeys,
onChange : this.onChangeRow,
getCheckboxProps : this.getCheckboxProps,
......
/*
* @Author: 吴文洁
* @Date: 2020-08-05 10:07:47
* @LastEditors: wufan
* @LastEditTime: 2021-05-27 16:37:28
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-16 18:16:14
* @Description: 图文课新增/编辑页
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
import React from 'react';
import { Button, Input, Radio, message, Modal,Cascader} from 'antd';
import { Button, Input, Radio, message, Modal, Cascader } from 'antd';
import $ from 'jquery';
import { DISK_MAP, FileTypeIcon, FileVerifyMap } from '@/common/constants/academic/lessonEnum';
import { ImgCutModalNew } from '@/components';
import ShowTips from "@/components/ShowTips";
import Breadcrumbs from "@/components/Breadcrumbs";
import ShowTips from '@/components/ShowTips';
import Breadcrumbs from '@/components/Breadcrumbs';
import AddGraphicsIntro from './components/AddGraphicsIntro';
import SelectStudent from '../modal/select-student';
import SelectPrepareFileModal from '../../prepare-lesson/modal/SelectPrepareFileModal';
import PreviewGraphicsModal from '../modal/PreviewGraphicsModal';
import StoreService from "@/domains/store-domain/storeService";
import StoreService from '@/domains/store-domain/storeService';
import Service from '@/common/js/service';
import { randomString } from '@/domains/basic-domain/utils';
import User from '@/common/js/user';
import _ from "underscore";
import _ from 'underscore';
import Upload from '@/core/upload';
import './AddGraphicsCourse.less';
......@@ -32,17 +32,16 @@ const fieldNames = { label: 'categoryName', value: 'id', children: 'sonCategory
//添加课程时课程默认的一些值
const defaultShelfState = 'YES';
const whetherVisitorsJoin = 'NO'
const whetherVisitorsJoin = 'NO';
const defaultCoverUrl = 'https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png';
let cutFlag = false;
class AddGraphicsCourse extends React.Component {
constructor(props) {
super(props);
const id = getParameterByName("id");
const pageType = getParameterByName("type");
const id = getParameterByName('id');
const pageType = getParameterByName('type');
this.state = {
id, // 图文课ID,编辑的时候从URL上带过来
......@@ -55,16 +54,16 @@ class AddGraphicsCourse extends React.Component {
coverId: null, // 图文封面的recourceId
coverUrl: defaultCoverUrl, // 图文课封面
studentList: [], // 上课学员列表
shelfState:'YES', //是否开启学院展示
shelfState: 'YES', //是否开启学院展示
selectedFileList: [], // 已经从资料云盘中勾选的文件
showCutModal: false, // 是否显示截图弹窗
showSelectVideoModal: false,
studentModal: false,
categoryName:null, //分类名称
courseCatalogList:[], //分类列表
categoryId:null, //分类的Id值
categoryName: null, //分类名称
courseCatalogList: [], //分类列表
categoryId: null, //分类的Id值
whetherVisitorsJoin: 'NO', // 是否允许游客加入
}
};
}
componentWillMount() {
......@@ -76,35 +75,35 @@ class AddGraphicsCourse extends React.Component {
}
initBus = () => {
Bus.bind('graphicsEditorImage', this.uploadImage)
Bus.bind('graphicsEditorVideo', this.uploadVideo)
}
Bus.bind('graphicsEditorImage', this.uploadImage);
Bus.bind('graphicsEditorVideo', this.uploadVideo);
};
removeBus = () => {
Bus.unbind('graphicsEditorImage', this.uploadImage)
Bus.unbind('graphicsEditorVideo', this.uploadVideo)
}
Bus.unbind('graphicsEditorImage', this.uploadImage);
Bus.unbind('graphicsEditorVideo', this.uploadVideo);
};
uploadImage = () => {
this.setState({ showSelectImageModal: true })
}
this.setState({ showSelectImageModal: true });
};
uploadVideo = () => {
this.setState({ showSelectVideoModal: true })
}
this.setState({ showSelectVideoModal: true });
};
//获取分类列表
getCourseCatalogList = ()=>{
StoreService.getCourseCatalogList({current:1,size:1000}).then((res) => {
getCourseCatalogList = () => {
StoreService.getCourseCatalogList({ current: 1, size: 1000 }).then((res) => {
this.setState({
courseCatalogList:res.result.records
})
courseCatalogList: res.result.records,
});
}
});
};
catalogChange= (value, options) => {
catalogChange = (value, options) => {
const changeValueLength = value.length;
switch (changeValueLength){
switch (changeValueLength) {
case 1:
this.setState({ categoryId: value[0], categoryName: options[0].categoryName });
break;
......@@ -115,36 +114,28 @@ class AddGraphicsCourse extends React.Component {
this.setState({ categoryId: null, categoryName: '' });
break;
}
}
};
// 获取图文课详情
handleFetchScheudleDetail = (courseId) => {
Service.Hades('public/hades/mediaCourseDetail',{
courseId
Service.Hades('public/hades/mediaCourseDetail', {
courseId,
}).then((res) => {
const { result = {} } = res || {};
const {
courseName,
shelfState,
whetherVisitorsJoin,
courseMediaVOS,
categoryOneName,
categoryTwoName,
categoryId
} = result;
const { courseName, shelfState, whetherVisitorsJoin, courseMediaVOS, categoryOneName, categoryTwoName, categoryId } = result;
let coverId;
let coverUrl = this.state.coverUrl;
let hasIntro = false;
courseMediaVOS.map((item) => {
switch (item.contentType){
case "COVER":
switch (item.contentType) {
case 'COVER':
coverId = item.mediaContent;
coverUrl = item.mediaUrl;
break;
case "SCHEDULE":
case 'SCHEDULE':
this.getTextDetail('courseMedia', item.mediaUrl);
break;
case "INTRO":
case 'INTRO':
hasIntro = true;
this.getTextDetail('introduce', item.mediaUrl);
break;
......@@ -152,12 +143,12 @@ class AddGraphicsCourse extends React.Component {
break;
}
return item;
})
});
let categoryName;
if( categoryTwoName ){
if (categoryTwoName) {
categoryName = `${categoryOneName}-${categoryTwoName}`;
}else{
} else {
categoryName = `${categoryOneName}`;
}
this.setState({
......@@ -168,65 +159,65 @@ class AddGraphicsCourse extends React.Component {
shelfState,
whetherVisitorsJoin,
categoryName,
categoryId
categoryId,
});
})
}
});
};
getTextDetail = (key, url) => {
$.ajax({
data: {},
type: 'GET',
url,
contentType:'application/x-www-form-urlencoded; charset=UTF-8',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: (res) => {
this.setState({ [key]: res, [`load${key}`]: true });
}
})
}
},
});
};
handleGoBack = () => {
const {
coverId,
videoName,
videoDuration,
courseName,
courseMediaId,
categoryId,
shelfState,
whetherVisitorsJoin
} = this.state;
if(videoName || videoDuration || courseMediaId || categoryId || courseName || coverId || shelfState !== defaultShelfState || whetherVisitorsJoin !== whetherVisitorsJoin ){
const { coverId, videoName, videoDuration, courseName, courseMediaId, categoryId, shelfState, whetherVisitorsJoin } = this.state;
if (
videoName ||
videoDuration ||
courseMediaId ||
categoryId ||
courseName ||
coverId ||
shelfState !== defaultShelfState ||
whetherVisitorsJoin !== whetherVisitorsJoin
) {
Modal.confirm({
title: '确认要返回吗?',
content: '返回后,本次编辑的内容将不被保存。',
okText: '确认返回',
cancelText: '留在本页',
icon: <span className="icon iconfont default-confirm-icon">&#xe6f4;</span>,
icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>,
onOk: () => {
window.RCHistory.push({
pathname: `/graphics-course`,
});
}
},
});
}else{
} else {
window.RCHistory.push({
pathname: `/graphics-course`,
});
}
}
};
// 修改表单
handleChangeForm = (field, value, coverUrl) => {
this.setState({
[field]: value,
coverUrl: coverUrl ? coverUrl : this.state.coverUrl
coverUrl: coverUrl ? coverUrl : this.state.coverUrl,
});
}
};
// 显示选择学员弹窗
handleShowSelectStuModal = () => {
this.setState({ studentModal : true });
this.setState({ studentModal: true });
const { studentList, selectedStuList } = this.state;
// const _studentList = _.map(studentList, (item) => {
......@@ -235,7 +226,7 @@ class AddGraphicsCourse extends React.Component {
const studentModal = (
<SelectStudent
showTabs={true}
type="videoCourse"
type='videoCourse'
onSelect={this.handleSelectStudent}
after={true} //表明是不是上课后的状态
studentList={studentList}
......@@ -245,9 +236,9 @@ class AddGraphicsCourse extends React.Component {
});
}}
/>
)
);
this.setState({ studentModal });
}
};
handleSelectStudent = (studentIds) => {
let studentList = [];
......@@ -256,51 +247,45 @@ class AddGraphicsCourse extends React.Component {
});
// this.setState({ studentModal: null });
this.setState({ studentList });
this.setState({ studentModal : false });
}
this.setState({ studentModal: false });
};
// 显示预览弹窗
handleShowPreviewModal = () => {
const {
coverUrl,
courseName,
courseMedia,
introduce,
categoryName,
} = this.state;
const { coverUrl, courseName, courseMedia, introduce, categoryName } = this.state;
const courseBasinInfo = {
coverUrl,
courseName,
categoryName
}
categoryName,
};
const courseIntroInfo = {
courseMedia,
introduce,
}
};
const previewGraphicsModal = (
<PreviewGraphicsModal
courseBasicInfo={courseBasinInfo}
courseIntroInfo={courseIntroInfo}
close={() => {
this.setState({
previewGraphicsModal: null
})
previewGraphicsModal: null,
});
}}
/>
);
this.setState({ previewGraphicsModal });
}
};
handleSelectCover = (file)=> {
handleSelectCover = (file) => {
this.uploadCoverImage(file);
}
};
//上传图片
uploadCoverImage = (imageFile) => {
const { folderName } = imageFile;
const fileName = window.random_string(16) + folderName.slice(folderName.lastIndexOf("."));
const fileName = window.random_string(16) + folderName.slice(folderName.lastIndexOf('.'));
const self = this;
this.setState(
{
......@@ -308,56 +293,54 @@ class AddGraphicsCourse extends React.Component {
},
() => {
setTimeout(() => {
const okBtnDom = document.querySelector("#headPicModal");
const okBtnDom = document.querySelector('#headPicModal');
const options = {
size: [500, 282],
ok: okBtnDom,
maxZoom: 3,
style: {
jpgFillColor: "transparent",
jpgFillColor: 'transparent',
},
done: function (dataUrl) {
clearTimeout(self.timer);
self.timer = setTimeout(() => {
if ((self.state.rotate != this.rotate()) || (self.state.scale != this.scale())) {
const _dataUrl = this.clip()
if (self.state.rotate != this.rotate() || self.state.scale != this.scale()) {
const _dataUrl = this.clip();
const cutImageBlob = self.convertBase64UrlToBlob(_dataUrl);
self.setState({
cutImageBlob,
dataUrl: _dataUrl,
rotate: this.rotate(),
scale: this.scale()
})
scale: this.scale(),
});
}
}, 500)
}, 500);
const cutImageBlob = self.convertBase64UrlToBlob(dataUrl);
self.setState({
cutImageBlob,
dataUrl
})
dataUrl,
});
setTimeout(() => {
cutFlag = false;
}, 2000);
},
fail: (failInfo) => {
message.error("图片上传失败了,请重新上传");
message.error('图片上传失败了,请重新上传');
},
loadComplete: function (img) {
setTimeout(() => {
const _dataUrl = this.clip()
const _dataUrl = this.clip();
self.setState({
dataUrl: _dataUrl,
hasImgReady: true
})
}, 100)
hasImgReady: true,
});
}, 100);
},
};
const imgUrl = `${imageFile.ossUrl}?${new Date().getTime()}`
const imgUrl = `${imageFile.ossUrl}?${new Date().getTime()}`;
if (!this.state.photoclip) {
const _photoclip = new PhotoClip("#headPicModal", options);
const _photoclip = new PhotoClip('#headPicModal', options);
_photoclip.load(imgUrl);
this.setState({
photoclip: _photoclip,
......@@ -366,7 +349,6 @@ class AddGraphicsCourse extends React.Component {
this.state.photoclip.clear();
this.state.photoclip.load(imgUrl);
}
}, 200);
}
);
......@@ -374,56 +356,48 @@ class AddGraphicsCourse extends React.Component {
//获取resourceId
getSignature = (blob, fileName) => {
Upload.uploadBlobToOSS(blob, 'cover' + (new Date()).valueOf(),null,'signInfo').then((signInfo) => {
this.setState({
coverClicpPath:signInfo.fileUrl,
coverId:signInfo.resourceId,
visible: false
},()=>this.updateCover())
Upload.uploadBlobToOSS(blob, 'cover' + new Date().valueOf(), null, 'signInfo').then((signInfo) => {
this.setState(
{
coverClicpPath: signInfo.fileUrl,
coverId: signInfo.resourceId,
visible: false,
},
() => this.updateCover()
);
});
};
updateCover = () =>{
const {coverClicpPath,coverId} = this.state
updateCover = () => {
const { coverClicpPath, coverId } = this.state;
this.setState({
showSelectCoverModal: false,
coverUrl:coverClicpPath,
coverId:coverId
})
}
coverUrl: coverClicpPath,
coverId: coverId,
});
};
// base64转换成blob
convertBase64UrlToBlob = (urlData) => {
const bytes = window.atob(urlData.split(",")[1]);
const bytes = window.atob(urlData.split(',')[1]);
const ab = new ArrayBuffer(bytes.length);
const ia = new Uint8Array(ab);
for (let i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
return new Blob([ab], { type: "image/png" });
return new Blob([ab], { type: 'image/png' });
};
// 保存
handleSubmit = () => {
const {
id,
coverId,
pageType,
courseName,
courseMedia,
introduce,
categoryId,
shelfState,
whetherVisitorsJoin,
} = this.state;
const { id, coverId, pageType, courseName, courseMedia, introduce, categoryId, shelfState, whetherVisitorsJoin } = this.state;
const commonParams = {
categoryId,
courseName,
coverId,
operatorId:User.getStoreUserId(),
storeId:User.getStoreId(),
operatorId: User.getStoreUserId(),
storeId: User.getStoreId(),
shelfState,
whetherVisitorsJoin,
courseType: 'PICTURE',
......@@ -431,8 +405,14 @@ class AddGraphicsCourse extends React.Component {
// 校验必填字段:课程名称, 课程图文
this.handleValidate(courseName, courseMedia, categoryId).then((res) => {
if (!res) return;
Upload.uploadTextToOSS(courseMedia, `${randomString()}.txt`, (courseMediaId) => {
Upload.uploadTextToOSS(introduce, `${randomString()}.txt`, (introduceId) => {
Upload.uploadTextToOSS(
courseMedia,
`${randomString()}.txt`,
(courseMediaId) => {
Upload.uploadTextToOSS(
introduce,
`${randomString()}.txt`,
(introduceId) => {
this.submitRemote({
id,
pageType,
......@@ -440,10 +420,14 @@ class AddGraphicsCourse extends React.Component {
courseMediaId,
introduceId,
});
}, () => message.warning('上传课程简介失败'));
}, () => message.warning('上传课程内容失败'));
},
() => message.warning('上传课程简介失败')
);
},
() => message.warning('上传课程内容失败')
);
});
}
};
submitRemote = (data) => {
const { id, pageType, commonParams, courseMediaId, introduceId } = data;
......@@ -452,42 +436,42 @@ class AddGraphicsCourse extends React.Component {
if (pageType === 'add') {
Service.Hades('public/hades/createMediaCourse', commonParams).then((res) => {
if (!res) return;
message.success("新建成功");
message.success('新建成功');
window.RCHistory.push({
pathname: `/graphics-course`,
});
})
});
} else {
const editParams = {
courseId:id,
courseId: id,
...commonParams,
}
};
Service.Hades('public/hades/editMediaCourse', editParams).then((res) => {
if (!res) return;
message.success("保存成功");
message.success('保存成功');
window.RCHistory.push({
pathname: `/graphics-course`,
});
});
}
}
};
handleValidate = (courseName, courseMedia, categoryId) => {
return new Promise((resolve) => {
if (!courseName) {
message.warning('请输入课程名称');
resolve(false);
return false
return false;
}
if (!courseMedia) {
message.warning('请输入课程内容');
resolve(false);
return false
return false;
}
if(!categoryId){
if (!categoryId) {
message.warning('请选择课程分类');
resolve(false);
return false
return false;
}
// const textMedia = scheduleMedia.filter((item) => item.mediaType === 'TEXT');
// for (let i = 0, len = textMedia.length; i < len; i++) {
......@@ -499,7 +483,7 @@ class AddGraphicsCourse extends React.Component {
// }
resolve(true);
});
}
};
render() {
const {
......@@ -530,56 +514,63 @@ class AddGraphicsCourse extends React.Component {
const courseWareIcon = FileVerifyMap[videoType] ? FileTypeIcon[FileVerifyMap[videoType].type] : FileTypeIcon[videoType];
return (
<div className="page add-graphics-course-page">
<Breadcrumbs
navList={pageType === "add" ? "新建图文课" : "编辑图文课"}
goBack={this.handleGoBack}
/>
<div className='page add-graphics-course-page'>
<Breadcrumbs navList={pageType === 'add' ? '新建图文课' : '编辑图文课'} goBack={this.handleGoBack} />
<div className="box">
<div className="show-tips">
<ShowTips message="请遵守国家相关规定,切勿上传低俗色情、暴力恐怖、谣言诈骗、侵权盗版等相关内容,小麦企学院保有依据国家规定及平台规则进行处理的权利" />
<div className='box'>
<div className='show-tips'>
<ShowTips message='请遵守国家相关规定,切勿上传低俗色情、暴力恐怖、谣言诈骗、侵权盗版等相关内容,小麦企学院保有依据国家规定及平台规则进行处理的权利' />
</div>
<div className="form">
<div className="course-name required">
<span className="label">课程名称:</span>
<div className='form'>
<div className='course-name required'>
<span className='label'>课程名称:</span>
<Input
value={courseName}
placeholder="请输入图文课的名称(40字以内)"
placeholder='请输入图文课的名称(40字以内)'
maxLength={40}
style={{ width: 240 }}
onChange={(e) => { this.handleChangeForm('courseName', e.target.value)}}
onChange={(e) => {
this.handleChangeForm('courseName', e.target.value);
}}
/>
</div>
<div className="cover-url flex mt16">
<div className="label">封面图:</div>
<div className="cover-url__wrap">
<div className="img-content">
<div className='cover-url flex mt16'>
<div className='label'>封面图:</div>
<div className='cover-url__wrap'>
<div className='img-content'>
<img src={coverUrl} />
</div>
<div className="opt-btns">
<Button onClick={() => {
<div className='opt-btns'>
<Button
onClick={() => {
this.setState({
showSelectCoverModal: true
showSelectCoverModal: true,
});
}}>{`${(pageType === 'add' && !coverUrl) ? '上传' : '修改'}封面`}</Button>
<div className="tips">建议尺寸1280*720px或16:9。封面图最大5M,支持jpg、jpeg和png。</div>
}}>{`${pageType === 'add' && !coverUrl ? '上传' : '修改'}封面`}</Button>
<div className='tips'>建议尺寸1280*720px或16:9。封面图最大5M,支持jpg、jpeg和png。</div>
</div>
</div>
</div>
<div className="course-catalog required">
<span className="label">课程分类:</span>
{ (pageType === 'add') &&
<Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}/>
}
{ (pageType === 'edit' && categoryName ) &&
<Cascader defaultValue={[categoryName]} options={courseCatalogList} displayRender={ label => label.join('-')} fieldNames={fieldNames} onChange={this.catalogChange} style={{ width: 240 }} placeholder="请选择课程分类" suffixIcon={<span className="icon iconfont" style={{fontSize:'12px',color:'#BFBFBF'}}>&#xe835;</span>}/>
<div className='course-catalog required'>
<span className='label'>课程分类:</span>
<Cascader
value={categoryName ? [categoryName] : undefined}
options={courseCatalogList}
displayRender={(label) => label.join('-')}
fieldNames={fieldNames}
onChange={this.catalogChange}
style={{ width: 240 }}
placeholder='请选择课程分类'
suffixIcon={
<span className='icon iconfont' style={{ fontSize: '12px', color: '#BFBFBF' }}>
&#xe835;
</span>
}
/>
</div>
<div className="intro-info mt16">
<div className='intro-info mt16'>
<AddGraphicsIntro
data={{
id,
......@@ -596,49 +587,50 @@ class AddGraphicsCourse extends React.Component {
</div>
</div>
<div className="footer shrink-footer">
<div className='footer shrink-footer'>
<Button onClick={this.handleGoBack}>取消</Button>
<Button onClick={this.handleShowPreviewModal}>预览</Button>
<Button type="primary" onClick={_.debounce(() => this.handleSubmit(), 3000, true)}>保存</Button>
<Button type='primary' onClick={_.debounce(() => this.handleSubmit(), 3000, true)}>
保存
</Button>
</div>
{showSelectCoverModal &&
{showSelectCoverModal && (
<SelectPrepareFileModal
key="basic"
operateType="select"
key='basic'
operateType='select'
multiple={false}
accept="image/jpeg,image/png,image/jpg"
accept='image/jpeg,image/png,image/jpg'
selectTypeList={['JPG', 'JPEG', 'PNG']}
tooltip='支持文件类型:jpg、jpeg、png'
isOpen={showSelectCoverModal}
onClose={() => {
this.setState({ showSelectCoverModal: false })
this.setState({ showSelectCoverModal: false });
}}
onSelect={this.handleSelectCover}
/>
}
)}
<Modal
title="设置图片"
title='设置图片'
width={1080}
visible={visible}
maskClosable={false}
closeIcon={<span className="icon iconfont modal-close-icon">&#xe6ef;</span>}
closeIcon={<span className='icon iconfont modal-close-icon'>&#xe6ef;</span>}
onCancel={() => {
this.setState({ visible: false });
}}
zIndex={10001}
footer={[
<Button
key="back"
key='back'
onClick={() => {
this.setState({ visible: false });
}}
>
}}>
重新上传
</Button>,
<Button
key="submit"
type="primary"
key='submit'
type='primary'
disabled={!hasImgReady}
onClick={() => {
if (!cutFlag) {
......@@ -646,39 +638,36 @@ class AddGraphicsCourse extends React.Component {
this.refs.hiddenBtn.click();
}
this.getSignature(cutImageBlob);
}}
>
}}>
确定
</Button>,
]}
>
<div className="clip-box">
]}>
<div className='clip-box'>
<div
id="headPicModal"
ref="headPicModal"
id='headPicModal'
ref='headPicModal'
style={{
width: "500px",
height: "430px",
width: '500px',
height: '430px',
marginBottom: 0,
}}
></div>
<div id="clipBtn" style={{ display: "none" }} ref="hiddenBtn"></div>
<div className="preview-img">
<div className="title">效果预览</div>
<div id="preview-url-box" style={{width:500,height:282}}>
<img src={this.state.dataUrl} style={{ width: '100%' }} alt="" />
}}></div>
<div id='clipBtn' style={{ display: 'none' }} ref='hiddenBtn'></div>
<div className='preview-img'>
<div className='title'>效果预览</div>
<div id='preview-url-box' style={{ width: 500, height: 282 }}>
<img src={this.state.dataUrl} style={{ width: '100%' }} alt='' />
</div>
<div className="tip-box">
<div className="tip">温馨提示</div>
<div className="tip">①预览效果图时可能存在延迟,单击左侧图片刷新即可</div>
<div className="tip">②设置图片时双击可旋转图片,滚动可放大或缩小图片</div>
<div className='tip-box'>
<div className='tip'>温馨提示</div>
<div className='tip'>①预览效果图时可能存在延迟,单击左侧图片刷新即可</div>
<div className='tip'>②设置图片时双击可旋转图片,滚动可放大或缩小图片</div>
</div>
</div>
</div>
</Modal>
{ this.state.previewGraphicsModal }
{this.state.previewGraphicsModal}
</div>
)
);
}
}
......
......@@ -2,7 +2,7 @@
* @Author: 吴文洁
* @Date: 2020-08-05 10:12:45
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-05-27 20:13:53
* @LastEditTime: 2021-06-15 20:01:05
* @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
......@@ -364,7 +364,7 @@ class GraphicsCourseList extends React.Component {
<ShareLiveModal
needStr={needStr}
data={shareData}
type="videoClass"
type="graphicsClass"
title="图文课"
close={() => {
this.setState({
......
/*
* @Author: 吴文洁
* @Date: 2020-06-22 14:26:37
* @Last Modified by: 吴文洁
* @Last Modified time: 2020-07-23 09:33:02
* @Last Modified by: chenshu
* @Last Modified time: 2021-06-08 18:18:46
*/
import React, { useEffect, useState } from 'react';
import { Modal, Button, Table, Progress, message, Tooltip, Spin, Popconfirm } from 'antd';
import React from 'react';
import { Modal, Button, Table, message, Tooltip, Spin, Popconfirm } from 'antd';
import { QuestionCircleOutlined,LoadingOutlined} from "@ant-design/icons";
import _ from 'underscore';
import moment from 'moment';
import Lottie from "lottie-web";
import User from '@/common/js/user';
import { suffixType, DEFAULT_SIZE_UNIT, SupportFileType } from '@/common/constants/academic/liveEnum';
import { FileVerifyMap, FileTypeIcon, DISK_MAP } from '@/common/constants/academic/lessonEnum';
import { suffixType, DEFAULT_SIZE_UNIT } from '@/common/constants/academic/liveEnum';
import { FileVerifyMap, FileTypeIcon } from '@/common/constants/academic/lessonEnum';
import ScanFileModal from '@/modules/prepare-lesson/modal/ScanFileModal'
import SelectPrepareFileModal from '@/modules/prepare-lesson/modal/SelectPrepareFileModal';
import Service from '@/common/js/service';
......@@ -40,7 +40,7 @@ class ManageCoursewareModal extends React.Component {
componentDidMount() {
this.getCoursewareList();
var animation = Lottie.loadAnimation({
path: "https://image.xiaomaiketang.com/xm/MQwp2aJaxf.json",
path: "https://image.xiaomaiketang.com/xm/SDBkP7mbJX.json",
name: "test",
renderer: "svg",
loop: true,
......@@ -229,14 +229,18 @@ class ManageCoursewareModal extends React.Component {
const antIcon = <LoadingOutlined/>;
const type = FileVerifyMap[fileType].type;
return <div className="courseware-name" onClick={() => this.handleScanFile(item)}>
{(type === 'JPG' || type === 'PNG') && item.progress ?
<Choose>
<When condition={(type === 'JPG' || type === 'PNG') && item.progress}>
<Spin indicator={antIcon} />
:<img
</When>
<Otherwise>
<img
src={FileTypeIcon[FileVerifyMap[fileType].type] || (item.docUrls[0] || {}).conversionFileUrl}
alt=""
className="item-img"
/>
}
</Otherwise>
</Choose>
<Tooltip title={item.fileName}><span className="name">{item.fileName}</span></Tooltip>
</div>
},
......@@ -270,7 +274,7 @@ class ManageCoursewareModal extends React.Component {
width: "16%",
dataIndex: "control",
render: (_value, item) => {
const { uploadObject, failObject, cancelObject } = this.state;
const { failObject } = this.state;
const uploadFail = failObject[item.id];
// 上课前45分钟/上课中/已结束的情况下都不可操作
......@@ -295,7 +299,7 @@ class ManageCoursewareModal extends React.Component {
const {
list, scanFileModal, editData, cancelObject,
showSelectFileModal, selectedFileList,
diskList, currentRootDisk, isLessonPermission
diskList
} = this.state;
const _list = _.reject(list, (item) => cancelObject[item.id]);
return (
......
......@@ -8,8 +8,8 @@
.empty-image {
display: block;
margin: 24px auto 12px;
width:100px;
height:100px;
width:150px;
height:150px;
}
.empty-button {
display: block;
......
......@@ -18,8 +18,6 @@ import CourseService from '@/domains/course-domain/CourseService'
import './ShareLiveModal.less'
const DEFAULT_COVER = 'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'
class ShareLiveModal extends React.Component {
constructor(props) {
super(props)
......@@ -54,6 +52,13 @@ class ShareLiveModal extends React.Component {
size: 98,
})
qrcodeWrapDom.appendChild(qrcodeNode)
const qrcodeWrapDomDownload = document.querySelector('#qrcodeWrap-dowload')
const qrcodeNodeDownLoad = new qrcode({
text: this.state.shareUrl,
size: 196,
})
qrcodeWrapDomDownload.appendChild(qrcodeNodeDownLoad)
}
)
})
......@@ -74,13 +79,12 @@ class ShareLiveModal extends React.Component {
() => {
this.setState({ time: new Date().valueOf() }, () => {
setTimeout(() => {
let node = document.getElementById('poster')
let node = document.getElementById('poster-dowload')
domtoimage.toPng(node).then((imgData) => {
console.log(imgData)
const download = document.createElement('a')
const { courseName } = this.props.data
$(download).attr('href', imgData).attr('download', `${courseName}.png`).get(0).click()
// this.props.close()
})
}, 1000)
})
......@@ -98,27 +102,31 @@ class ShareLiveModal extends React.Component {
render() {
const { courseDivision, data, type, title } = this.props
const { courseName, coverUrl = DEFAULT_COVER, scheduleVideoUrl } = data
const { courseName, scheduleVideoUrl, courseMediaVOS, coverUrl } = data
const { shareUrl, showImg, time } = this.state
// 判断是否是默认图, 默认图不需要在URL后面增加字符串
const isDefaultCover = coverUrl === DEFAULT_COVER
let coverImgSrc = coverUrl
if (type === 'videoClass') {
if ((!coverUrl || isDefaultCover) && title !== '图文课' && title !== '线下课') {
if (courseDivision === 'external') {
coverImgSrc = 'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png'
} else {
coverImgSrc = `${scheduleVideoUrl}?x-oss-process=video/snapshot,t_0,m_fast&anystring=anystring`
}
}
} else {
let coverImgSrc = '';
switch (type) {
case 'liveClass': // 直播课
if (courseMediaVOS && courseMediaVOS.length > 0) {
data.courseMediaVOS.map((item, index) => {
if (item.contentType === 'COVER') {
coverImgSrc = item.mediaUrl
}
})
} else {
coverImgSrc = 'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png';
}
break;
case 'videoClass': // 视频课
coverImgSrc = coverUrl || (courseDivision === 'internal' ? `${scheduleVideoUrl}?x-oss-process=video/snapshot,t_0,m_fast&anystring=anystring` : 'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png')
break;
case 'graphicsClass': // 图文课
coverImgSrc = coverUrl || 'https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png';
break;
case 'offlineClass': // 线下课
coverImgSrc = coverUrl || 'https://image.xiaomaiketang.com/xm/pxbWKsYA87.png';
break;
}
return (
......@@ -137,7 +145,7 @@ class ShareLiveModal extends React.Component {
<span className='text'>{User.getStoreName()}</span>
</div>
<div className='course-name-title'>{type === 'videoClass' ? `${courseName}开课啦` : `邀请你观看直播:`}</div>
<div className='course-name-title'>{type === 'liveClass' ? `邀请你观看直播:` : `${courseName}开课啦`}</div>
{type === 'liveClass' && <div class='live-couse-name'>{courseName}</div>}
<Choose>
<When condition={showImg}>
......@@ -156,6 +164,29 @@ class ShareLiveModal extends React.Component {
<div className='qrcode-wrap__right' id='qrcodeWrap'></div>
</div>
</div>
<div id='poster-dowload'>
<div className='store-name'>
<span className='text'>{User.getStoreName()}</span>
</div>
<div className='course-name-title'>{type === 'videoClass' ? `${courseName}开课啦` : `邀请你观看直播:`}</div>
{type === 'liveClass' && <div class='live-couse-name'>{courseName}</div>}
<Choose>
<When condition={showImg}>
<img crossOrigin='*' src={coverImgSrc + `?=${time}`} className='course-cover' alt='' />
</When>
<Otherwise>
<img src={coverImgSrc + `?=${time}`} className='course-cover' alt='' />
</Otherwise>
</Choose>
<div className='qrcode-wrap'>
<div className='qrcode-wrap__left'>
<div className='text'>长按识别二维码进入观看</div>
<img className='finger' src='https://image.xiaomaiketang.com/xm/thpkWDwJsC.png' alt='' />
</div>
<div className='qrcode-wrap__right' id='qrcodeWrap-dowload'></div>
</div>
</div>
</div>
<div className='right'>
<div className='share-poster right__item'>
......
.share-live-modal {
.ant-modal-body {
display: flex;
#poster{
background: #FFF;
margin:0;
padding: 20px;
}
height:510px !important;
overflow: hidden !important;
.left {
width: 303px;
margin: 0 32px 0 16px;
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
border-radius: 12px;
#poster{
background: #FFF;
margin:0;
padding: 20px;
margin-bottom:140px;
.course-name-title {
font-size: 14px;
color: #333;
......@@ -83,6 +84,82 @@
}
}
}
#poster-dowload{
background: #FFF;
margin:0;
padding: 40px;
width:606px;
.course-name-title {
font-size: 28px;
color: #333;
line-height: 40px;
margin-bottom: 8px;
}
.live-couse-name{
font-size:32px;
color:#333333;
font-weight: 600;
}
.course-name {
color: #333;
font-size: 32px;
font-weight: 600;
line-height: 40px;
}
.course-cover {
width: 526px;
height: 286px;
border-radius: 6px;
margin-top: 16px;
}
.qrcode-wrap {
padding: 0 32px;
display: flex;
align-items: center;
margin: 48px 0 32px 0;
&__left {
width: 196px;
text-align: center;
margin-right: 44px;
.text {
line-height: 40px;
}
.finger {
width: 80px;
height: 80px;
margin-top: 16px;
}
}
&__right {
width: 220px;
height: 220px;
padding: 12px
}
}
.store-name {
// padding: 8px 16px;
display: flex;
align-items: center;
margin-bottom: 16px;
.text {
font-size: 24px;
color: #999;
font-size: 28px;
line-height: 40px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
.right {
.title {
......
/*
* @Author: 吴文洁
* @Date: 2020-08-05 10:07:47
* @LastEditors: wufan
* @LastEditTime: 2021-05-27 19:25:48
* @LastEditors: yuananting
* @LastEditTime: 2021-06-07 15:06:26
* @Description: 线下课新增/编辑页
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
......@@ -518,6 +518,11 @@ class AddOfflineCourse extends React.Component {
if(coverId){
scheduleMediaRequests = [coverObj]
}
// 编辑且使用默认图时不传
if (pageType === 'edit' && coverUrl === defaultCoverUrl) {
scheduleMediaRequests = []
}
const commonParams = {
categoryId,
courseName,
......
......@@ -2,7 +2,7 @@
* @Author: 吴文洁
* @Date: 2020-08-05 10:12:45
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-05-27 20:14:01
* @LastEditTime: 2021-06-11 16:44:42
* @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
......@@ -25,7 +25,7 @@ import QRCodeModal from '../modal/QRCodeModal';
import './OfflineCourseList.less';
const ENV = process.env.DEPLOY_ENV || 'dev';
const defaultCoverUrl = 'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png';
const defaultCoverUrl = 'https://image.xiaomaiketang.com/xm/pxbWKsYA87.png';
class OfflineCourseList extends React.Component {
......@@ -358,7 +358,7 @@ class OfflineCourseList extends React.Component {
<ShareLiveModal
needStr={needStr}
data={shareData}
type="videoClass"
type="offlineClass"
title="线下课"
close={() => {
this.setState({
......
......@@ -6,7 +6,7 @@ import Service from "@/common/js/service";
import './PreviewOfflineModal.less';
import ENUM from '@/modules/knowledge-base/ENUM';
const defaultCoverUrl = 'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png';
const defaultCoverUrl = 'https://image.xiaomaiketang.com/xm/pxbWKsYA87.png';
class PreviewOfflineModal extends React.Component {
......
import React from 'react'
import { Tabs } from 'antd'
import VideoCourseFilter from './components/VideoCourseFilter'
import VideoCourseOpt from './components/VieoCourseOpt'
import VideoCourseList from './components/VideoCourseList'
import CourseService from '@/domains/course-domain/CourseService'
import User from '@/common/js/user'
const { TabPane } = Tabs
import React from 'react';
import { Tabs } from 'antd';
import VideoCourseFilter from './components/VideoCourseFilter';
import VideoCourseOpt from './components/VieoCourseOpt';
import VideoCourseList from './components/VideoCourseList';
import CourseService from '@/domains/course-domain/CourseService';
import User from '@/common/js/user';
const { TabPane } = Tabs;
class VideoCourse extends React.Component {
constructor(props) {
super(props)
super(props);
this.state = {
query: {
size: 10,
......@@ -18,45 +18,43 @@ class VideoCourse extends React.Component {
dataSource: [], // 视频课列表
totalCount: 0, // 视频课数据总条数
currentTabKey: 'internal',
}
};
}
componentWillMount() {
// 获取视频课列表
this.handleFetchScheduleList()
this.handleFetchScheduleList();
}
// 获取视频课列表
handleFetchScheduleList = (_query = {}) => {
const { currentTabKey } = this.state
const { currentTabKey } = this.state;
const query = {
...this.state.query,
..._query,
courseDivision: currentTabKey === 'external' ? 1 : null,
}
// 更新请求参数
this.setState({ query })
};
CourseService.videoSchedulePage(query).then((res) => {
const { result = {} } = res || {}
const { records = [], total = 0 } = result
const { result = {} } = res || {};
const { records = [], total = 0 } = result;
if (Number(total) && query.size * (query.current - 1) >= Number(total)) {
this.handleFetchScheduleList({
...query,
current: 1,
})
return
});
return;
}
this.setState({
query,
dataSource: records,
totalCount: Number(total),
})
})
}
});
});
};
currenTabChange = (currentTabKey) => {
const { query } = this.state
const { query } = this.state;
this.setState(
{
currentTabKey,
......@@ -66,20 +64,21 @@ class VideoCourse extends React.Component {
},
},
() => {
this.handleFetchScheduleList()
}
)
console.log('this.state.query===>', this.state.query);
// this.handleFetchScheduleList()
}
);
};
changeShelfState = (index, shelfState) => {
const { dataSource } = this.state
dataSource[index].shelfState = shelfState
const { dataSource } = this.state;
dataSource[index].shelfState = shelfState;
this.setState({
dataSource,
})
}
});
};
render() {
const { dataSource, totalCount, query, currentTabKey } = this.state
const { dataSource, totalCount, query, currentTabKey } = this.state;
return (
<div className='page video-course-page'>
<div className='content-header'>视频课</div>
......@@ -107,8 +106,8 @@ class VideoCourse extends React.Component {
/>
</div>
</div>
)
);
}
}
export default VideoCourse
export default VideoCourse;
......@@ -2,17 +2,17 @@
* @Description:
* @Author: zangsuyun
* @Date: 2021-03-19 18:05:23
* @LastEditors: wufan
* @LastEditTime: 2021-05-30 16:48:46
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-15 11:20:24
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import { Input, Button, Tree } from "antd";
import "./Classification.less";
import User from "@/common/js/user";
import KnowledgeAPI from "@/data-source/knowledge/request-api";
import Bus from "@/core/bus";
import React, { Component } from 'react';
import { Input, Button, Tree } from 'antd';
import './Classification.less';
import User from '@/common/js/user';
import KnowledgeAPI from '@/data-source/knowledge/request-api';
import Bus from '@/core/bus';
const { Search } = Input;
const { DirectoryTree } = Tree;
......@@ -21,7 +21,7 @@ class Classification extends Component {
constructor(props) {
super(props);
this.state = {
selectedKeys: props.selectedKeys ? [props.selectedKeys] : ["0"],
selectedKeys: props.selectedKeys ? [props.selectedKeys] : ['0'],
searchValue: null,
NewEditQuestionBankCategory: null, //新增或编辑分类模态框
ImportCourseCategory: null, // 引用课程分类模态框
......@@ -32,11 +32,11 @@ class Classification extends Component {
componentDidMount() {
this.queryCategoryTree();
Bus.bind('knowledgeCategoryTree', this.queryCategoryTree)
Bus.bind('knowledgeCategoryTree', this.queryCategoryTree);
}
componentWillUnmount() {
Bus.unbind('knowledgeCategoryTree', this.queryCategoryTree)
Bus.unbind('knowledgeCategoryTree', this.queryCategoryTree);
}
shouldComponentUpdate = (nextProps, nextState) => {
......@@ -79,7 +79,7 @@ class Classification extends Component {
};
KnowledgeAPI.getCategoryTree(query).then((res) => {
const { categoryList = [], noCategoryCnt = 0 } = res.result;
let str = "未分类";
let str = '未分类';
if (categoryName) {
this.setState({ autoExpandParent: true });
if (str.indexOf(categoryName) < 0) {
......@@ -93,8 +93,8 @@ class Classification extends Component {
this.setState({ expandedKeys: nodeId });
} else {
const defaultNode = {
id: "0",
categoryName: "未分类",
id: '0',
categoryName: '未分类',
categoryCount: noCategoryCnt,
};
categoryList.unshift(defaultNode);
......@@ -110,8 +110,8 @@ class Classification extends Component {
} else {
this.setState({ autoExpandParent: false });
const defaultNode = {
id: "0",
categoryName: "未分类",
id: '0',
categoryName: '未分类',
categoryCount: noCategoryCnt,
};
categoryList.unshift(defaultNode);
......@@ -140,39 +140,35 @@ class Classification extends Component {
item.title =
!value || (value && item.categoryName.indexOf(value) > -1) ? (
<span>
{item.categoryName}({item.categoryCount})
{item.categoryName}
{item.categoryCount > 0 && <span>({item.categoryCount})</span>}
</span>
) : (
<span style={{ opacity: 0.5 }}>
{item.categoryName}({item.categoryCount})
{item.categoryName}
{item.categoryCount > 0 && <span>({item.categoryCount})</span>}
</span>
);
item.icon =
item.categoryName === "未分类" ? (
item.categoryName === '未分类' ? (
<img
style={{
width: "24px",
height: "24px",
opacity:
!value || (value && item.categoryName.indexOf(value) > -1)
? 1
: 0.5,
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src="https://image.xiaomaiketang.com/xm/defaultCategory.png"
alt=""
src='https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=''
/>
) : (
<img
style={{
width: "24px",
height: "24px",
opacity:
!value || (value && item.categoryName.indexOf(value) > -1)
? 1
: 0.5,
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src="https://image.xiaomaiketang.com/xm/hasCategory.png"
alt=""
src='https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=''
/>
);
if (item.sonCategoryList) {
......@@ -186,36 +182,30 @@ class Classification extends Component {
};
render() {
const {
treeData,
expandedKeys,
selectedKeys,
autoExpandParent,
} = this.state;
const { treeData, expandedKeys, selectedKeys, autoExpandParent } = this.state;
return (
<div className="question-bank-sider">
<div className="sider-title">知识分类</div>
<div className='question-bank-sider'>
<div className='sider-title'>知识分类</div>
<Search
className="sider-search"
placeholder="搜索名称分类"
className='sider-search'
placeholder='搜索名称分类'
onSearch={(value) => {
this.queryCategoryTree(value);
}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
style={{width: 230}}
enterButton={<span className='icon iconfont'>&#xe832;</span>}
style={{ width: 230 }}
/>
<div className="sider-btn">
<div className='sider-btn'>
<Button
onClick={() => {
window.RCHistory.push({
pathname: "/course-category-manage?from=knowledge",
pathname: '/course-category-manage?from=knowledge',
});
}}
>
}}>
分类管理
</Button>
</div>
<div className="sider-tree">
<div className='sider-tree'>
<DirectoryTree
expandedKeys={expandedKeys}
autoExpandParent={autoExpandParent}
......
......@@ -2,15 +2,14 @@
* @Description:
* @Author: zangsuyun
* @Date: 2021-03-12 14:49:40
* @LastEditors: wufan
* @LastEditTime: 2021-05-30 20:37:42
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-06-11 16:44:59
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React from "react";
import { Modal, message, Tooltip, Switch, Dropdown, Button } from "antd";
import { Route, withRouter } from "react-router-dom";
import Lottie from 'react-lottie';
import { PageControl, XMTable } from "@/components";
import { LIVE_SHARE_MAP } from "@/common/constants/academic/cloudClass";
import { appId, shareUrl, LIVE_SHARE } from "@/domains/course-domain/constants";
......@@ -18,7 +17,6 @@ import ScanFileModal from "../../resource-disk/modal/ScanFileModal";
import WatchData from "./WatchData";
import KnowledgeAPI from "@/data-source/knowledge/request-api";
import ENUM from "../ENUM.js";
import * as nodata from '../../lottie/nodata/data.json';
import "./KnowledgeBaseList.less";
const DEFAULT_SIZE_UNIT = 1000 * 1000 // 将B转换成M
......@@ -494,14 +492,6 @@ class KnowledgeBaseList extends React.Component {
preserveSelectedRowKeys: true,
onChange: onSelectChange,
}
const defaultOptions = {
loop: true,
autoplay: true,
animationData: nodata,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<div className="knowledge-base-list">
<XMTable
......@@ -515,15 +505,6 @@ class KnowledgeBaseList extends React.Component {
bordered
className="knowledge-list-table"
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>
}}
/>
......
......@@ -2,8 +2,8 @@
* @Description:
* @Author: zangsuyun
* @Date: 2021-03-13 09:54:26
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-01 10:26:46
* @LastEditors: yuananting
* @LastEditTime: 2021-06-10 19:55:24
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -324,7 +324,7 @@ class AddCourse extends React.Component {
return <img className='course-cover' src={item.mediaUrl} alt='' />;
}
})}
{!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} alt='' />}
{!hasCover && <img className='course-cover' src={'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'} alt='' />}
<div>
<Choose>
<When condition={record.courseName.length > 17}>
......@@ -501,8 +501,7 @@ class AddCourse extends React.Component {
const { coverUrl } = record;
return (
<div className='record__item'>
{/* 上传了封面的话就用上传的封面, 没有的话就取视频的第一帧 */}
<img className='course-cover' src={coverUrl || 'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'} alt='' />
<img className='course-cover' src={coverUrl || 'https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png'} alt='' />
<Choose>
<When condition={record.courseName.length > 25}>
<Tooltip title={record.courseName}>
......
{"v":"5.6.10","fr":25,"ip":0,"op":15,"w":150,"h":150,"nm":"提示性添加","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“ͼ²ã 3”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.135,0.204],[-0.096,0.017],[0,0],[0,0],[0,-0.132],[0,0],[0,0],[0,0],[0.155,0.189],[0.238,-0.004],[0,0],[0.205,-0.315],[0.105,-0.523]],"o":[[0.091,-0.463],[0.138,-0.207],[0,0],[0,0],[0.012,0.013],[0,0],[0,0],[0,0],[0,-0.24],[-0.153,-0.191],[0,0],[-0.345,0.058],[-0.208,0.318],[0,0]],"v":[[-0.465,1.011],[-0.107,0.008],[0.245,-0.28],[0.32,-0.287],[0.407,-0.262],[0.452,-0.057],[0.446,0.041],[1.163,0.113],[1.172,-0.057],[0.962,-0.72],[0.32,-1.007],[0.126,-0.99],[-0.709,-0.386],[-1.172,0.87]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.144,51.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.435,-0.439],[-0.585,1.913],[1.655,0.401],[0.585,-1.913]],"o":[[1.339,0.409],[0.585,-1.913],[-1.684,-0.306],[-0.585,1.913]],"v":[[-1.221,3.376],[2.368,0.187],[0.979,-3.479],[-2.368,-0.739]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[98.876,52.156],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-12.039,1.757],[0.261,-2.221],[-0.794,-0.138],[0.757,-0.082],[0.93,1.749],[-0.051,0.507],[1.769,2.423],[9.323,-4.156],[0.389,-0.927],[-4.348,-5.617]],"o":[[-0.058,0.191],[-0.021,0.412],[0.985,0.197],[2.997,-5.358],[-1.261,-2.372],[0.019,-1.772],[-4.091,-5.433],[-1.564,0.672],[-0.542,1.089],[2.853,4.009]],"v":[[9.828,8.262],[9.474,11.814],[12.465,11.264],[12.856,11.697],[15.91,1.024],[13.296,-1.03],[12.235,-6.792],[-9.438,-5.68],[-13.946,-6.326],[-12.492,4.993]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.79,38.693],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.606,0.001],[-0.185,0.031],[0,0],[-0.565,0.672],[0,0],[0.552,-0.095],[0,0],[0,0],[0.134,0],[0.467,0.28]],"o":[[0.606,0.366],[0.192,0],[0,0],[0.77,-0.129],[0,0],[-0.417,0.492],[0,0],[0,0],[-0.132,0.022],[-0.423,-0.001],[0,0]],"v":[[-2.242,0.408],[-0.4,0.944],[0.165,0.896],[0.166,0.896],[2.242,-0.3],[1.478,-0.945],[-0.001,-0.09],[-0.014,-0.088],[-0.001,-0.09],[-0.4,-0.056],[-1.726,-0.448]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.605,57.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.004,-0.599],[-0.312,-0.315],[-0.497,-0.117],[0,0],[0.124,0.129],[0.005,0.243],[-0.356,0.639]],"o":[[-0.395,0.721],[-0.005,0.446],[0.31,0.317],[0,0],[-0.381,-0.089],[-0.121,-0.131],[-0.004,-0.321],[0,0]],"v":[[-0.329,-1.889],[-0.958,0.063],[-0.492,1.263],[0.735,1.889],[0.963,0.915],[0.224,0.565],[0.042,0.063],[0.546,-1.406]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.296,52.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.509,-0.992],[-0.491,1.001],[0.509,0.992],[0.491,-1.001]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.058,51.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.509,-0.992],[-0.491,1.001],[0.509,0.992],[0.491,-1.001]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.713,50.713],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.095,-0.029],[0.703,-6.059],[0,0],[6.06,0.702],[-0.652,5.552],[0.037,0.221],[-0.171,3.294],[-5.831,-0.423]],"o":[[6.06,0.703],[0,0],[-0.702,6.059],[-5.552,-0.651],[-0.008,-0.316],[0.102,-1.015],[0.423,-5.831],[0.191,0.059]],"v":[[1.315,-14.281],[10.954,-2.028],[10.135,4.415],[-2.118,14.053],[-11.005,2.761],[-10.963,1.937],[-10.525,-4.621],[0.809,-14.331]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[87.342,50.332],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.889,-0.253],[-2.768,0.662],[0,0],[0,0]],"o":[[2.082,2.592],[2.89,0.253],[0,0],[0,0],[0,0]],"v":[[-7.869,0.178],[-0.903,4.107],[7.052,3.433],[7.869,-4.36],[-6.451,-3.606]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.662,62.504],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.885,0.34],[0.21,3.331],[0,0]],"o":[[0,0],[-0.677,3.153],[-3.885,-0.34],[0,0],[0,0]],"v":[[7.951,-7.558],[6.992,3.401],[-0.985,8.525],[-7.951,2.093],[-6.992,-8.865]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196018593,0.909803981407,0.960784014534,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.621,64.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“ͼ²ã 14”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[32.75,47.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":8,"s":[32.75,45.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15,"s":[32.75,47.5,0]}],"ix":2},"a":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[24.75,25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15,"s":[24.75,25,0]}],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.8,0],[0,-0.8],[0,0],[0,0],[0,-0.8],[0.8,0],[0,0],[0,0],[0.8,0],[0,0.8],[0,0],[0,0],[0,0.8],[-0.8,0],[0,0],[0,0]],"o":[[0.8,0],[0,0],[0,0],[0.8,0],[0,0.8],[0,0],[0,0],[0,0.8],[-0.8,0],[0,0],[0,0],[-0.8,0],[0,-0.8],[0,0],[0,0],[0,-0.8]],"v":[[0,-6],[1.5,-4.5],[1.5,-1.5],[4.5,-1.5],[6,0],[4.5,1.5],[1.5,1.5],[1.5,4.5],[0,6],[-1.5,4.5],[-1.5,1.5],[-4.5,1.5],[-6,0],[-4.5,-1.5],[-1.5,-1.5],[-1.5,-4.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25,25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.6,0],[0,0],[0,-0.6],[0,0],[0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[0.6,0],[0,0],[0,0.6],[0,0],[-0.6,0],[0,0],[0,-0.6]],"v":[[-17.5,-10],[17.5,-10],[18.5,-9],[18.5,9],[17.5,10],[-17.5,10],[-18.5,9],[-18.5,-9]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.5,25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.6,0],[0,0],[0,-0.6],[0,0],[0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[0.6,0],[0,0],[0,0.6],[0,0],[-0.6,0],[0,0],[0,-0.6]],"v":[[-17.5,-10],[17.5,-10],[18.5,-9],[18.5,9],[17.5,10],[-17.5,10],[-18.5,9],[-18.5,-9]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.64313695571,0.839215985466,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.5,25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":-2,"op":25,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“ͼ²ã 17”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.908,5.4],[-1.992,-5.801],[-2.908,-5.4],[1.992,5.801]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[103.964,94.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.699,-1.5],[-5,-11.699],[0,0],[0,0],[-2.801,2.2]],"o":[[2.5,2.2],[0,0],[0,0],[-0.801,-4.399],[4.8,-3.7]],"v":[[1.35,-13.5],[12.65,7.3],[-4.75,15.2],[-11.85,-1.5],[-8.85,-11.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.164,85.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.1,-0.899],[0.6,-1.101],[0,0],[19.5,-1.199],[5.4,-0.3],[1.5,0],[0,0],[0,0.6],[-0.5,0.1],[-1.9,1.2],[-3.5,0.3],[-6,1.7]],"o":[[6.2,1.9],[0,0],[-2.101,3.399],[-5,0.301],[-2.7,0.2],[0,0],[-0.6,0],[0,-0.5],[0.4,-1.3],[1.1,-0.7],[5.9,-1.7],[8.8,-2.7]],"v":[[19.1,-8.101],[24.501,0.7],[24.3,1],[0.3,7.899],[-15.4,8.8],[-21.8,9],[-24.3,9],[-25.3,8],[-24.4,7],[-21.2,2.5],[-14.4,1.1],[3.4,-4]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[103.314,111.818],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.1,0.101],[0,0],[-2,-4],[-0.699,-1.399],[-1.2,-3.601],[4.101,-1.7],[0,0],[1.6,3.8],[0.1,0.1],[0.5,1.3],[2.3,4.8],[-3.7,1.8]],"o":[[0,0],[4.2,-1.8],[2.4,4.7],[0.601,1.3],[1.4,4.2],[0,0],[-3.8,1.6],[-0.101,-0.101],[-1.3,-3.6],[-0.6,-1.4],[-1.801,-3.7],[0.101,-0.1]],"v":[[-7.05,-15.55],[-7.05,-15.55],[3.95,-11.55],[8.45,-2.35],[11.15,5.05],[6.45,15.65],[6.35,15.751],[-3.45,11.751],[-3.65,11.35],[-6.35,4.05],[-10.75,-5.249],[-7.35,-15.35]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.564,101.268],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“ͼ²ã 21”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-70,0.5],[-55.8,0.5],[-55.8,-0.5],[-70,-0.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-47.8,0.5],[70,0.5],[70,-0.5],[-47.8,-0.5]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70,118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“ͼ²ã 22”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.101,0.5],[0,0],[-2.4,-2],[2.9,-2.9],[0,0],[0,0],[0,0],[-1.8,5.399],[0,0],[-1.7,1.3],[-5.2,0.101]],"o":[[0,0],[1.7,-0.601],[0,0],[10.4,2.4],[1,0.9],[0,0],[0,0],[0,0],[-1.1,-21.9],[0,0],[0.9,-2.4],[1.7,-1.3],[0,0]],"v":[[-7.25,-26.7],[-3.55,-24.999],[2.15,-26.7],[3.849,-26.3],[23.15,-19.6],[20.349,-13.999],[15.849,26.8],[-22.95,26.8],[-23.05,23.8],[-21.95,-17.2],[-21.85,-17.4],[-17.95,-24.7],[-7.55,-26.8]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.25,91.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“ͼ²ã 23”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[2]},{"t":15,"s":[0]}],"ix":10},"p":{"a":0,"k":[89,92.75,0],"ix":2},"a":{"a":0,"k":[84,74.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.5,2.4],[4.4,-2.6],[4.6,-4.2],[0,0],[0,0],[0.6,4.199]],"o":[[-7.2,-0.1],[-4.3,2.6],[0,0],[0,0],[2,-3.6],[-0.601,-4.301]],"v":[[12.05,-16.251],[-5.35,-12.55],[-18.75,-2.35],[-8.75,16.35],[16.05,5.549],[18.15,-6.15]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752940996955,0.788234994926,0.882353001015,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.25,81.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1,0.5],[0,0],[-0.5,-1],[0,0],[1,-0.5],[0.5,1],[0,0]],"o":[[0,0],[0.9,-0.6],[0,0],[0.6,0.9],[-0.9,0.6],[0,0],[-0.6,-0.9]],"v":[[-3.3,-5.55],[-3.3,-5.55],[-0.6,-4.85],[4,2.85],[3.3,5.55],[0.6,4.85],[-4,-2.85]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.961,50.51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.1,0],[0,0],[-1.1,-0.8],[0,0],[0.8,-1.1],[0.1,-0.2],[0,0],[0.9,0.5],[0,0],[-0.6,1.2]],"o":[[0,0],[0.8,-1.1],[0,0],[1.1,0.8],[-0.1,0.1],[0,0],[-0.8,0.7],[0,0],[-1.1,-0.7],[-0.2,-0.2]],"v":[[-6.2,1.15],[-1.3,-5.35],[2.1,-5.85],[5.5,-3.25],[6,0.15],[5.7,0.55],[-0.2,5.849],[-3,6.15],[-5.3,4.75],[-6.2,1.45]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.661,57.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.2,-2.5],[0,0],[0.9,0.6],[1.2,-1.3],[-0.8,-2]],"o":[[0,0],[-0.2,-6],[-1.3,-0.8],[-0.9,1],[0.7,2.301]],"v":[[-1.1,8.1],[7.8,5.2],[6.2,-4.6],[-1.9,-6.8],[-7,1]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.761,60.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.5,0.7],[3.8,13.6],[0.6,3.1],[0,0],[0,0],[0,0]],"o":[[-16,10.601],[-4.8,-0.7],[-1.5,-5.2],[0,0],[0,0],[0,0],[0,0]],"v":[[23.5,2.55],[-7.2,17.45],[-20.4,-1.75],[-23.5,-14.25],[-14,-18.15],[-4.5,-0.05],[11.6,-10.05]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[53.5,82.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“ͼ²ã 27”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.399],[0,0],[-1.3,0],[0,-1.3],[0,0],[1.3,0]],"o":[[0,0],[0,-1.3],[1.3,0],[0,0],[0,1.3],[-1.3,0]],"v":[[-2.4,3.601],[-2.4,-3.6],[0,-6],[2.4,-3.6],[2.4,3.601],[0,6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.737254961799,0.768626972273,0.858824008119,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.961,60.359],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“ͼ²ã 29”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[19,-21],[-19,-21],[-20,-20],[-20,20],[-19,21],[19,21],[20,20],[20,-20]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109,44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"“ͼ²ã 30”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,78.5,0],"ix":2},"a":{"a":0,"k":[70,60.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[19,-24],[-19,-24],[-20,-23],[-20,23],[-19,24],[19,24],[20,23],[20,-23]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52,24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{"v":"5.6.10","fr":25,"ip":0,"op":20,"w":150,"h":150,"nm":"不存在","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“ͼ²ã 3”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[4]},{"t":20,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[114.5,42.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[114.875,40.875,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20,"s":[114.5,42.5,0]}],"ix":2},"a":{"a":0,"k":[114.5,42.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,1.345],[-0.572,1.279],[-1.152,0.888],[-1.288,-0.003],[-0.432,-0.426],[-0.003,-0.413],[0.208,-0.394],[0.15,-0.068],[0.337,0.001],[0.265,0.14],[0.146,0.288],[-0.001,0.545],[-0.443,0.771],[-0.882,0.452],[-0.699,0.001],[-1.1,-0.553],[0,0],[1.174,0],[0.821,-0.422],[0.572,-1],[0.001,-1.045],[-0.314,-0.631],[-0.511,-0.267],[-0.544,-0.001],[-0.487,0.249],[-0.314,0.587],[-0.002,0.71],[0.583,0.559],[1.272,0.004],[1.445,-1.107],[0.671,-1.504],[0,-1.91],[-0.381,-1.714]],"o":[[-0.362,-1.626],[0,-1.741],[0.573,-1.279],[1.142,-0.883],[1.014,-0.004],[0.222,0.214],[0.002,0.41],[-0.201,0.397],[-0.244,0.127],[-0.327,0],[-0.266,-0.142],[-0.191,-0.381],[-0.001,-0.768],[0.443,-0.772],[0.618,-0.315],[0.884,0],[0,0],[-1.254,-0.63],[-0.926,-0.001],[-1.161,0.594],[-0.572,1.001],[0.001,0.741],[0.29,0.584],[0.512,0.269],[0.562,-0.001],[0.569,-0.302],[0.307,-0.59],[0.003,-0.694],[-0.849,-0.803],[-1.625,0.004],[-1.336,1.026],[-0.673,1.504],[0,1.477],[0,0]],"v":[[-5.97,8.933],[-6.51,4.475],[-5.642,-0.044],[-3.07,-3.278],[0.872,-4.616],[3.161,-3.903],[3.496,-2.977],[3.156,-1.686],[2.514,-0.93],[1.6,-0.723],[0.682,-0.937],[0.063,-1.562],[-0.238,-2.981],[0.423,-5.383],[2.407,-7.287],[4.364,-7.758],[7.337,-6.951],[8.01,-8.291],[4.364,-9.258],[1.723,-8.622],[-0.878,-6.128],[-1.738,-2.981],[-1.279,-0.892],[-0.016,0.391],[1.6,0.777],[3.2,0.404],[4.486,-0.991],[4.996,-2.977],[4.2,-4.985],[0.872,-6.116],[-3.984,-4.467],[-7.011,-0.656],[-8.01,4.475],[-7.435,9.259]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[113.453,42.696],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“ͼ²ã 4”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[4]},{"t":20,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[43,61,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[42,60.75,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20,"s":[43,61,0]}],"ix":2},"a":{"a":0,"k":[43,61,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-1.156],[-0.796,-1.547],[-1.561,-1.009],[-1.167,0.001],[-0.919,0.833],[-0.013,1.063],[0.303,0.392],[0.525,0.13],[0.236,0],[0.359,-0.508],[0.002,-0.638],[-0.845,-1.158],[-1.697,-0.486],[0,0],[-0.908,-0.003],[-0.6,0.108],[0,0],[0.937,0.001],[0.421,0.126],[0,0],[0,0],[0.674,0.917],[-0.005,0.739],[-0.112,0.146],[-0.274,0.012],[-0.143,-0.036],[-0.074,-0.093],[-0.002,-0.199],[0.679,-0.604],[1.126,0],[1.084,0.701],[0.671,1.303],[0.001,1.806],[-0.238,1.22]],"o":[[-0.253,1.3],[-0.001,1.996],[0.794,1.547],[1.292,0.838],[1.534,0],[0.915,-0.84],[0.002,-0.461],[-0.301,-0.394],[-0.247,-0.062],[-0.68,-0.012],[-0.366,0.504],[0.005,1.137],[0.846,1.153],[0,0],[0.703,0.197],[1.024,-0.001],[0,0],[-0.435,0.082],[-0.829,0.003],[0,0],[0,0],[-1.351,-0.388],[-0.675,-0.912],[-0.002,-0.416],[0.119,-0.142],[0.095,0],[0.268,0.07],[0.072,0.095],[0.013,0.453],[-0.675,0.61],[-0.86,-0.001],[-1.369,-0.888],[-0.67,-1.303],[0,-1.045],[0,0]],"v":[[-9.294,-8.252],[-9.676,-4.567],[-8.494,0.765],[-4.938,4.612],[-1.199,5.811],[2.561,4.363],[4.069,1.416],[3.639,0.084],[2.358,-0.717],[1.633,-0.812],[-0.045,0.012],[-0.55,1.765],[0.735,5.342],[4.558,8.001],[4.557,8.001],[7.067,8.252],[9.676,8.067],[9.405,6.592],[7.067,6.752],[4.971,6.559],[4.944,6.551],[4.971,6.559],[1.944,4.454],[0.95,1.765],[1.163,0.9],[1.633,0.688],[1.989,0.737],[2.449,0.998],[2.569,1.416],[1.554,3.251],[-1.199,4.311],[-4.123,3.353],[-7.16,0.079],[-8.176,-4.567],[-7.822,-7.965]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.243,59.606],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“ͼ²ã 5”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[75,75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-70,0.5],[-54.606,0.5],[-54.606,-0.5],[-70,-0.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44.949,0.5],[70,0.5],[70,-0.5],[-44.949,-0.5]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.313,136.243],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“ͼ²ã 6”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[2]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[75,91.5,0],"ix":2},"a":{"a":0,"k":[75,91.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.122,0.208],[-0.108,0.021],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-0.091],[0,0],[0,0],[0,0],[0.154,0.181],[0.213,-0.004],[0,0],[0.186,-0.327],[0.084,-0.525]],"o":[[0.074,-0.472],[0.127,-0.211],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.006,0.01],[0,0],[0,0],[0,0],[0,-0.22],[-0.155,-0.183],[0,0],[-0.361,0.059],[-0.191,0.33],[0,0]],"v":[[-0.423,1.025],[-0.114,-0.001],[0.222,-0.291],[0.328,-0.301],[0.394,-0.293],[0.395,-0.295],[0.392,-0.294],[0.394,-0.293],[0.395,-0.295],[0.392,-0.294],[0.415,-0.144],[0.404,0.005],[1.118,0.096],[1.135,-0.144],[0.936,-0.767],[0.328,-1.021],[0.101,-1.001],[-0.737,-0.364],[-1.135,0.912]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.221,74.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.389,-0.372],[-0.513,1.912],[1.665,0.271],[0.513,-1.913]],"o":[[1.39,0.372],[0.513,-1.913],[-1.666,-0.271],[-0.512,1.912]],"v":[[-1.083,3.404],[2.384,0.078],[0.897,-3.505],[-2.385,-0.673]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.965,75.696],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.334,2.275],[0.103,-2.213],[-0.757,-0.113],[0.771,-0.132],[0.98,1.684],[-0.001,0.572],[1.615,1.448],[3.764,-6.996],[0.381,-0.914],[-3.94,-3.921]],"o":[[-0.023,0.161],[-0.02,0.446],[1.017,0.152],[2.721,-6.542],[-1.372,-2.357],[0.002,-1.796],[-5.179,-4.64],[-0.894,1.661],[-0.473,1.134],[2.697,2.684]],"v":[[9.136,7.761],[8.949,11.323],[11.889,10.709],[12.259,11.136],[14.869,-1.203],[12.551,-3.149],[10.643,-7.128],[-9.799,-3.379],[-15.193,-3.379],[-11.909,7.148]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.4,61.789],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.794,0.003],[0,0],[0.753,-0.601]],"o":[[0.584,-0.461],[0,0],[-0.991,-0.003],[0,0]],"v":[[-0.705,0.846],[1.327,0.157],[1.327,-0.843],[-1.327,0.063]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.872,80.632],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.003,-0.585],[-0.325,-0.315],[-0.505,-0.089],[0,0],[0.12,0.121],[0.005,0.261],[-0.334,0.638]],"o":[[-0.372,0.72],[-0.005,0.459],[0.323,0.317],[0,0],[-0.381,-0.066],[-0.118,-0.122],[-0.003,-0.324],[0,0]],"v":[[-0.37,-1.868],[-0.955,0.063],[-0.474,1.287],[0.788,1.868],[0.96,0.883],[0.228,0.576],[0.045,0.063],[0.518,-1.407]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.23,76.883],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.5,-1],[-0.5,1],[0.5,1],[0.5,-1]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[77.985,75.354],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.5,-1],[-0.5,1],[0.5,1],[0.5,-1]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.625,75.15],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.359,0.468],[0.645,1.872],[1.532,-0.707],[-0.645,-1.872]],"o":[[1.359,-0.468],[-0.645,-1.872],[-1.532,0.707],[0.645,1.872]],"v":[[1.172,3.536],[2.186,-1.159],[-1.05,-3.297],[-2.186,0.885]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.317,75.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.135,-0.012],[0.491,-5.627],[0,0],[0,0],[5.628,0.491],[-0.454,5.203],[0,0],[-0.011,0.387],[-0.172,3.769],[-5.424,-0.248]],"o":[[5.627,0.491],[0,0],[0,0],[-0.492,5.628],[-5.203,-0.454],[0,0],[0.05,-0.513],[0.032,-1.143],[0.249,-5.424],[0.135,0.006]],"v":[[0.873,-14.31],[10.173,-3.231],[10.173,-3.229],[9.471,4.793],[-1.612,14.094],[-10.21,3.851],[-10.201,3.752],[-10.11,2.402],[-9.802,-4.966],[0.468,-14.336]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.117,73.23],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-2.985,-0.157],[-0.468,-0.002],[0,0],[-1.745,0.353]],"o":[[0,0],[0,0],[0,0],[2.286,2.387],[0.473,0.025],[0,0],[1.812,-0.006],[0,0]],"v":[[7.657,-4.716],[-6.267,-3.715],[-7.554,-1.104],[-7.657,0.86],[0.25,4.676],[1.662,4.716],[1.856,4.716],[7.19,4.176]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[76.191,85.259],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.189,-0.198]],"o":[[0,0],[0.185,0.213],[0,0]],"v":[[0.332,-0.982],[-0.332,0.366],[0.229,0.982]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.305,85.137],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.757,0.183],[0,0],[-0.807,0.244],[0,0],[0,0]],"o":[[0,0],[0.822,-0.167],[0,0],[0,0],[-0.773,-0.198]],"v":[[-1.088,-1.275],[-1.221,1.275],[1.221,0.659],[1.221,0.636],[1.206,-0.703]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.603,88.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.773,-0.198]],"o":[[0,0],[0,0],[0,0],[0.757,0.183],[0,0]],"v":[[1.067,-3.525],[1.066,-3.525],[-0.814,-3.39],[-1.147,2.953],[1.147,3.525]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.662,83.933],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[3.833,0.201],[0.289,2.993],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.6,2.946],[-3.832,-0.2],[0,0],[0,0],[0,0]],"v":[[7.83,-8.639],[7.149,4.343],[7.096,4.341],[-0.617,9.223],[-7.777,3.562],[-7.83,3.558],[-7.15,-9.424]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196018593,0.909803981407,0.960784014534,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[76.195,85.793],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“ͼ²ã 7”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[75,75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.998,-5.958],[0.002,6.042],[0.998,5.958],[-0.002,-6.042]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[51.5,119],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.128,-8.416],[-2.11,8.225],[-1.128,8.416],[2.11,-8.225]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[98.119,120.18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.071,-1.983],[4.038,-14.473],[1.759,-10.557],[0,0],[0.247,3.679],[-3.757,1.228],[-4.984,1.202]],"o":[[5.287,1.239],[3.588,1.172],[-0.47,3.506],[0,0],[-0.499,-10.177],[-3.032,-14.917],[5.667,-1.851],[0,0]],"v":[[7.043,-24.604],[24.082,-19.771],[23.407,3.695],[20.063,24.79],[-23.52,24.79],[-24.638,4.006],[-23.55,-20.21],[-7.574,-24.79]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.293,111.21],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“ͼ²ã 8”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[2]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[113.25,135,0],"ix":2},"a":{"a":0,"k":[113.25,135,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.098,-0.066],[0.738,-0.129],[1.193,-0.384],[-0.346,-1.288],[0,0],[-1.334,0.357],[0,0],[0.259,0.966],[0,0],[0,0]],"o":[[-2.405,0.145],[-0.588,0.103],[-1.269,0.408],[0,0],[0.357,1.333],[0,0],[0.967,-0.259],[0,0],[0,0],[-0.384,-1.03]],"v":[[3.264,-3.189],[-1.452,-2.778],[-4.125,-2.049],[-5.774,0.979],[-5.734,1.131],[-2.672,2.898],[4.58,0.955],[5.861,-1.264],[5.81,-1.428],[5.758,-1.566]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[127.938,95.123],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.693,0],[3.507,0.107],[0.04,-1.337],[0,0],[-1.38,0],[0,0],[-1.599,0.101],[-2.78,1.191],[0,0.785],[0.662,0]],"o":[[-3.838,0.235],[-1.534,0],[-1.337,-0.04],[0,0],[0,1.38],[0,0],[4.598,-0.011],[1.646,-0.105],[0.722,-0.309],[0,-0.662],[0,0]],"v":[[8.541,-2.555],[0.244,-2.203],[-7.317,-2.363],[-9.812,-0.015],[-9.814,0.058],[-7.314,2.557],[-7.309,2.557],[1.986,2.39],[8.624,0.447],[9.814,-1.358],[8.614,-2.557]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.186,95.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.307,10.698],[0,0],[0,0],[-3.407,-0.873],[-3.561,8.857]],"o":[[0,0],[0,0],[0.351,6.875],[1.873,0.48],[2.739,-6.815]],"v":[[10.556,-18.513],[3.316,-20.513],[-10.556,8.411],[-4.918,20.033],[4.486,7.757]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.188,116.193],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“ͼ²ã 9”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[75,75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.071,-1.983],[-2.631,-12.392],[0,0],[0,0]],"o":[[6.071,1.983],[0,0],[0,0],[-1.108,-11.024]],"v":[[-2.25,-12.289],[10.804,9.272],[-7.73,14.272],[-9.695,1.272]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.625,103.728],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.018,-4.128],[-1.409,1.514],[0,0]],"o":[[0,0],[2.275,9.051],[2.018,4.129],[0,0],[0,0]],"v":[[6.039,-13.991],[-9.718,-11.213],[-3.278,8.556],[1.862,12.478],[9.718,11.729]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.97,123.766],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“ͼ²ã 10”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[-3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[-2]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[46.5,135,0],"ix":2},"a":{"a":0,"k":[46.5,135,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.098,-0.066],[-0.738,-0.129],[-1.194,-0.383],[0.345,-1.287],[0,0],[1.333,0.357],[0,0],[-0.259,0.967],[0,0],[0,0]],"o":[[2.406,0.145],[0.588,0.103],[1.269,0.408],[0,0],[-0.357,1.334],[0,0],[-0.966,-0.259],[0,0],[0,0],[0.384,-1.03]],"v":[[-3.264,-3.189],[1.452,-2.778],[4.125,-2.049],[5.775,0.978],[5.734,1.131],[2.673,2.898],[-4.58,0.955],[-5.861,-1.264],[-5.809,-1.427],[-5.757,-1.566]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.061,95.587],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.694,0],[-3.507,0.106],[-0.041,-1.337],[0,0],[1.38,0],[0,0],[1.599,0.1],[2.78,1.191],[0,0.785],[-0.662,0]],"o":[[3.837,0.234],[1.534,0],[1.337,-0.041],[0,0],[0,1.38],[0,0],[-4.598,-0.011],[-1.645,-0.104],[-0.722,-0.31],[0,-0.662],[0,0]],"v":[[-8.54,-2.554],[-0.243,-2.202],[7.318,-2.362],[9.812,-0.015],[9.813,0.058],[7.315,2.557],[7.309,2.557],[-1.986,2.39],[-8.624,0.447],[-9.813,-1.358],[-8.614,-2.557]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.813,96.299],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.825,11.088],[0,0],[0,0],[3.408,-0.873],[3.56,8.857]],"o":[[0,0],[0,0],[-0.351,6.875],[-1.873,0.479],[-2.739,-6.815]],"v":[[-10.556,-18.512],[-3.316,-20.513],[10.556,8.412],[4.918,20.034],[-5.209,8.343]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.812,116.657],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"“ͼ²ã 11”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[75,75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.072,-1.983],[3.826,-15.704],[0,0],[0,0]],"o":[[-6.072,1.983],[0,0],[0,0],[0.238,-9.112]],"v":[[2.93,-13.618],[-11.918,12.914],[8.925,15.601],[11.68,-2.924]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.814,104.618],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.433,-1.341],[0.402,-4.233],[0,0],[0,0]],"o":[[2.041,-5.061],[4.433,1.341],[0,0],[0,0],[0,0]],"v":[[-7.216,-8.234],[2.494,-13.816],[8.541,-5.456],[1.445,15.157],[-8.943,10.046]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.44,118.816],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"“ͼ²ã 12”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[75,75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,-1.104],[0,0],[0,0],[0,-1.104],[0,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[-1.105,0],[0,0],[0,0],[1.105,0],[0,0],[0,0],[1.105,0],[0,0],[0,-1.104]],"v":[[13.5,-19],[-13.5,-19],[-15.5,-17],[-15.5,5],[-2.5,5],[-0.5,7],[-0.5,19],[13.5,19],[15.5,17],[15.5,-17]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.5,50],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-1.104],[0,0],[-1.104,0],[0,0],[-2.784,0.91],[-0.746,0.236],[0,0],[0,0],[0,1.104]],"o":[[0,0],[-1.104,0],[0,0],[0,1.105],[0,0],[-0.943,-8.424],[0.758,-0.248],[0,0],[0,0],[-1.105,0],[0,0]],"v":[[5.5,-25],[-18.5,-25],[-20.5,-23],[-20.5,23],[-18.5,25],[15.482,25],[18.243,11],[20.5,10.274],[20.5,-11],[7.5,-11],[5.5,-13]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.5,80],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,0],[-1.105,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,1.104],[0,0],[0,0],[0,-1.104]],"v":[[5.5,-7],[-7.5,-7],[-7.5,5],[-5.5,7],[7.5,7],[7.5,-5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.925490016563,0.941175991881,0.968626972273,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.5,62],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.105,0],[0,0],[0,-1.105],[0,0],[-1.104,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[-1.104,0],[0,0],[0,1.104],[0,0],[1.105,0],[0,0],[0,-1.105]],"v":[[18.5,-28],[-18.5,-28],[-20.5,-26],[-20.5,26],[-18.5,28],[18.5,28],[20.5,26],[20.5,-26]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[115.5,49],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{"v":"5.6.10","fr":25,"ip":0,"op":25,"w":150,"h":150,"nm":"搜索无结果","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“ͼ²ã 3”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-70,0.5],[40,0.5],[40,-0.5],[-70,-0.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[52.1,0.5],[70,0.5],[70,-0.5],[52.1,-0.5]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70,126],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“ͼ²ã 4”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[5]},{"t":20,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[53.25,58.75,0],"to":[0,-0.292,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[53.25,57,0],"to":[0,0,0],"ti":[0,-0.292,0]},{"t":20,"s":[53.25,58.75,0]}],"ix":2},"a":{"a":0,"k":[48.25,48.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.3,0.4],[1.1,-0.6],[0.5,-1.4],[0,0],[-0.5,0.3],[-0.8,-0.3],[-0.3,-0.5],[0.2,-0.7],[0.4,-0.3],[0,0],[0.4,-0.4],[0.3,-0.8],[0,0],[0,0],[0,0],[-0.3,0.3],[-0.5,0.2],[0,0],[-0.1,0.1],[-0.3,0.9],[0.6,0.9]],"o":[[-1.4,-0.4],[-1.1,0.5],[0,0],[0.3,-0.8],[0.5,-0.4],[0.7,0.2],[0.2,0.5],[-0.1,0.5],[0,0],[-1.6,0.7],[-0.4,0.4],[0,0],[0,0],[0,0],[0.1,-0.5],[0.3,-0.3],[0,0],[0.5,-0.2],[0.6,-0.5],[0.4,-1.2],[-0.6,-0.9]],"v":[[1.25,-6.75],[-2.45,-6.55],[-4.75,-3.65],[-2.55,-2.95],[-1.45,-4.65],[0.55,-4.85],[1.95,-3.85],[2.05,-2.15],[1.15,-0.95],[0.85,-0.75],[-2.15,0.95],[-3.15,2.75],[-3.25,2.85],[-1.05,3.55],[-0.95,3.25],[-0.25,2.05],[0.85,1.35],[2.05,0.85],[2.95,0.35],[4.35,-1.75],[4.05,-4.85]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.4,-0.1],[-0.2,-0.3],[0.1,-0.5],[0.3,-0.2],[0.4,0.1],[0.2,0.3],[-0.2,0.5],[-0.4,0.2]],"o":[[0.4,0.1],[0.2,0.3],[-0.1,0.4],[-0.4,0.2],[-0.4,-0.1],[-0.2,-0.4],[0.1,-0.4],[0.3,-0.2]],"v":[[-2.45,4.15],[-1.55,4.85],[-1.45,6.05],[-2.15,6.95],[-3.35,7.05],[-4.25,6.35],[-4.35,5.15],[-3.55,4.25]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52.65,41.15],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":19,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[22.695,22.109],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.901960844152,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-14.777,8.93],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“ͼ²ã 5”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[-9]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[-9]},{"t":25,"s":[-7]}],"ix":10},"p":{"a":0,"k":[106.125,131.5,0],"ix":2},"a":{"a":0,"k":[114.75,123.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.099,0.014],[0,0],[-0.051,-1.117],[0,0],[-1.116,0.05],[-0.112,0.086],[0,0],[-0.121,0.892],[0,0],[1.09,0.148]],"o":[[0,0],[-1.104,-0.049],[0,0],[-0.05,1.104],[0.1,0.013],[0,0],[0.833,-0.189],[0,0],[0.147,-1.09],[-0.198,-0.027]],"v":[[3.861,-4.084],[-3.904,-4.131],[-5.884,-2.18],[-5.968,2.148],[-4.018,4.13],[-3.608,4.084],[3.85,2.677],[5.493,0.982],[5.871,-1.792],[4.158,-4.043]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862744978362,0.886274988511,0.945097979377,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.329,76.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.109,-3.648],[0,0],[-0.135,0.99],[-1.527,0.096],[-1.086,-1.661]],"o":[[0,0],[-4.167,-3.493],[0.089,-1.401],[1.229,-0.135],[1.158,1.873]],"v":[[6.657,2.541],[-0.354,7.339],[-6.522,0.749],[-3.642,-6.329],[4.847,-5.678]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.189,79.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.292,-8.52],[-8.486,-2.197],[-2.86,7.558],[0,0],[0,0],[0,0],[7.656,1.972]],"o":[[-2.198,8.486],[7.913,2.09],[0,0],[0,0],[0,0],[0.613,-7.581],[-8.392,-2.232]],"v":[[-17.808,-3.965],[-6.498,15.418],[12.397,5.674],[18.779,7.37],[20.006,3.185],[13.402,1.466],[1.575,-15.275]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.577,6.124],[-6.159,-1.671],[1.671,-6.16],[6.159,1.671]],"o":[[1.577,-6.125],[6.159,1.671],[-1.671,6.159],[-6.16,-1.671]],"v":[[-13.565,-2.865],[0.476,-11.032],[8.642,3.01],[-5.399,11.176]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.160783999574,0.4,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[77.396,70.77],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.198,-8.485],[-8.485,-2.197],[-2.697,7.711],[0,0],[0,0],[0,0],[7.562,2.006]],"o":[[-2.198,8.486],[8.007,2.056],[0,0],[0,0],[0,0],[0.648,-7.487],[-8.452,-2.104]],"v":[[-17.786,-3.965],[-6.476,15.417],[12.444,5.452],[18.884,7.019],[19.984,2.776],[13.355,1.278],[1.563,-15.369]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.671,6.159],[-6.16,-1.671],[1.671,-6.16],[6.16,1.671]],"o":[[1.577,-6.125],[6.159,1.671],[-1.671,6.159],[-6.124,-1.577]],"v":[[-13.543,-2.866],[0.499,-11.032],[8.664,3.009],[-5.377,11.175]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.64313695571,0.839215985466,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.467,70.514],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.983,1.086],[0,0],[-1.807,-0.492]],"o":[[-1.513,-0.414],[0,0],[1.182,1.312],[0,0]],"v":[[2.478,0.351],[-1.259,-1.934],[-2.478,-0.834],[2.046,1.934]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[69.921,76.684],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.786,-12.74],[0.791,12.84],[1.786,12.74],[-0.791,-12.84]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[103.092,100.967],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.842,0.995],[6.633,20.985],[1.849,5.701],[0,0],[-0.597,-6.742],[-2.239,-2.827]],"o":[[2.805,-3.555],[-1.704,-5.278],[0,0],[0.61,6.643],[0.859,10.007],[4.38,5.642]],"v":[[5.275,20.19],[3.067,-7.358],[-2.262,-23.827],[-9.7,-19.591],[-7.896,0.536],[-5.755,18.186]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.976,102.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“ͼ²ã 6”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[0]},{"t":25,"s":[-2]}],"ix":10},"p":{"a":0,"k":[46.75,103.75,0],"ix":2},"a":{"a":0,"k":[41.75,93.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.208,0.425],[0.18,0.149],[0.231,0.035],[0.096,0],[0.16,-0.072],[0.089,-0.227],[0.005,-0.268],[0,0],[-0.011,0.006],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.082,-0.247],[-0.038,-0.437]],"o":[[-0.059,-0.648],[-0.105,-0.212],[-0.179,-0.15],[-0.098,-0.015],[-0.162,0],[-0.244,0.106],[-0.093,0.229],[0,0],[0.001,-0.262],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.069,0.056],[0.082,0.245],[0,0]],"v":[[1.424,1.184],[1.055,-0.411],[0.634,-0.962],[0.002,-1.247],[-0.288,-1.271],[-0.778,-1.174],[-1.297,-0.619],[-1.424,0.117],[-0.424,0.132],[-0.358,-0.268],[-0.364,-0.272],[-0.36,-0.267],[-0.358,-0.268],[-0.364,-0.272],[-0.36,-0.267],[-0.382,-0.294],[-0.366,-0.262],[-0.36,-0.267],[-0.382,-0.294],[-0.366,-0.262],[-0.354,-0.266],[-0.288,-0.271],[-0.155,-0.259],[-0.004,-0.192],[0.243,0.242],[0.428,1.271]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.311,80.461],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.227,-0.717],[0.951,1.669],[-1.523,0.67],[-0.935,-1.767]],"o":[[-1.228,0.717],[-0.951,-1.669],[1.523,-0.67],[0.935,1.769]],"v":[[1.99,3.052],[-2.205,0.768],[-1.693,-3.099],[2.153,-1.174]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.551,81.273],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.126,-0.566],[-0.675,-2.132],[0.655,-0.302],[-0.723,0.089],[-0.51,1.944],[0.119,0.524],[-0.636,2.734],[-6.57,-3.268],[-0.597,-0.702],[3.643,-7.017]],"o":[[0.083,0.114],[0.135,0.427],[-0.983,0.451],[-4.375,-4.338],[0.719,-2.619],[-0.441,-1.69],[1.432,-5.848],[1.403,0.728],[0.764,0.931],[-2.378,4.787]],"v":[[-7.743,8.907],[-6.663,12.317],[-9.621,12.457],[-9.897,12.919],[-15.694,3.496],[-13.562,0.898],[-13.601,-3.968],[6.854,-9.74],[11.71,-10.995],[12.562,0.884]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.072,65.811],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.87,0.778],[1.153,0.181],[0.87,-0.778],[-1.153,-0.181]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.506,84.78],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.16,-0.257],[0,-0.148],[0.091,-0.129],[0.244,-0.14],[0,0],[-0.201,0.276],[0.002,0.343],[0.23,0.367],[0.425,0.377],[0,0]],"o":[[0.375,0.333],[0.162,0.258],[-0.002,0.131],[-0.092,0.127],[0,0],[0.33,-0.191],[0.201,-0.275],[0,-0.39],[-0.232,-0.369],[0,0],[0,0]],"v":[[-1.009,-1.199],[-0.209,-0.305],[0.007,0.303],[-0.119,0.668],[-0.615,1.08],[-0.115,1.947],[0.691,1.255],[1.007,0.303],[0.639,-0.836],[-0.345,-1.947],[-1.009,-1.198]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.695,78.259],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.829,-0.803],[-0.11,1.149],[0.829,0.803],[0.109,-1.149]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.411,79.067],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.416,-0.979],[-0.466,1.657],[1.416,0.979],[0.466,-1.657]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862984452,0.4,0.521568986481,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.491,75.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.114,-0.083],[-2.035,-5.689],[0,0],[-5.689,2.035],[1.9,5.263],[0.067,0.214],[1.012,3.197],[5.641,-1.739]],"o":[[-5.689,2.036],[0,0],[2.035,5.689],[5.262,-1.9],[-0.052,-0.311],[-0.337,-1.065],[-1.754,-5.543],[-0.083,-0.114]],"v":[[-4.55,-13.548],[-11.144,0.595],[-8.973,6.709],[5.169,13.303],[11.279,0.298],[10.993,-0.456],[9.051,-6.736],[-4.238,-13.6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.427,76.893],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.9,0.107],[-2.644,1.14],[0,0],[0,0]],"o":[[2.423,2.276],[3.014,-0.111],[0,0],[0,0],[0,0]],"v":[[-7.198,1.043],[0.51,4.246],[7.198,2.492],[5.017,-4.353],[-5.794,-2.735]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.345097979377,0.388234994926,0.509803981407,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.326,87.963],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-3.737,1.298],[0.971,3.253],[0.105,0.095],[0.1,-0.005]],"o":[[0,0],[0,0],[1.271,3.238],[3.842,-1.202],[-0.005,-0.101],[-0.005,-0.1],[0,0]],"v":[[5.027,-9.962],[-9.249,-5.309],[-5.898,5.13],[3.099,8.664],[8.278,0.482],[8.162,0.188],[8.052,-0.007]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196018593,0.909803981407,0.960784014534,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.246,89.973],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“ͼ²ã 7”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.854,0.007],[0.007,0.854],[0.854,-0.006],[-0.007,-0.854]],"o":[[0.854,-0.007],[-0.006,-0.854],[-0.854,0.007],[0.006,0.855]],"v":[[0.035,1.486],[1.486,-0.035],[-0.035,-1.487],[-1.486,0.035]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.197,124.349],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.049,1.802],[4.401,0.025],[0.009,-3.324],[-3.898,-0.11]],"o":[[0.009,-3.324],[-4.401,-0.024],[-0.022,1.615],[4.121,0.132]],"v":[[7.981,2.129],[-0.013,-3.907],[-8.008,2.054],[-0.449,3.33]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.727,122.622],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.503,-2.959],[-1.367,-4.04],[0,0],[2.631,3.121],[4.447,0.017]],"o":[[4.236,0.032],[2.554,3.03],[0,0],[-1.406,-4.157],[-2.681,-3.193],[0,0]],"v":[[-8.442,-6.963],[1.557,-2.6],[7.495,7.963],[8.442,7.643],[2.322,-3.245],[-8.436,-7.963]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627450980392,0.670587995941,0.792156982422,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[29.966,115.441],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.013,-2.877],[0.546,-9.378],[0,0],[0,0],[5.511,2.615]],"o":[[-2.91,4.293],[0,0],[0,0],[0.658,-5.932],[-5.15,-2.415]],"v":[[-6.812,-6.491],[-12.009,14.064],[5.068,14.085],[11.351,1.067],[3.997,-11.67]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.722,111.739],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.3,-5.601],[-3.1,-17.601],[0,0],[0,0],[-5,1.2]],"o":[[0.9,3.699],[0,0],[0,0],[13,-8],[6.9,-1.5]],"v":[[17.1,-11.35],[23.1,20.65],[-17.6,20.65],[-23.1,-5.45],[3.9,-19.15]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.803921987496,0.83529399797,0.917646998985,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.9,105.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“ͼ²ã 8”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.3,4.9],[-6.9,-1.3],[-10.3,-4.601],[0,0],[0,0]],"o":[[1,-1.5],[3.7,0.7],[0,0],[0,0],[-8.2,-5]],"v":[[-16.65,-10.15],[-0.95,-12.95],[19.95,-4.95],[11.85,14.25],[-9.35,4.75]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752940996955,0.788234994926,0.882353001015,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[62.523,98.47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.4,-3.9],[0,0],[-3.9,-2.399],[-0.1,-0.101],[0,0],[-1.199,1.9],[0,0],[3.7,2.5],[0.2,0.1],[0,0]],"o":[[0,0],[-2.4,3.8],[0.1,0.101],[0,0],[2,1.1],[0,0],[2.5,-3.7],[-0.199,-0.1],[0,0],[-4.1,-2.2]],"v":[[-16.2,-9.85],[-16.5,-9.45],[-13.9,1.85],[-13.5,2.15],[8,13.95],[13.7,12.55],[16.4,8.65],[14.2,-2.45],[13.6,-2.85],[-4.6,-12.85]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.373,106.569],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“ͼ²ã 9”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[12.5,-2.5],[-12.5,-2.5],[-13.5,-1.5],[-13.5,1.5],[-12.5,2.5],[12.5,2.5],[13.5,1.5],[13.5,-1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.96470600203,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.5,29.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[12.5,-2.5],[-12.5,-2.5],[-13.5,-1.5],[-13.5,1.5],[-12.5,2.5],[12.5,2.5],[13.5,1.5],[13.5,-1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.96470600203,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.5,20.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[6.5,-2.5],[-6.5,-2.5],[-7.5,-1.5],[-7.5,1.5],[-6.5,2.5],[6.5,2.5],[7.5,1.5],[7.5,-1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.96470600203,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[61.5,11.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[17,-2.5],[-17,-2.5],[-18,-1.5],[-18,1.5],[-17,2.5],[17,2.5],[18,1.5],[18,-1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.96470600203,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72,2.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"“ͼ²ã 10”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.1,0],[0,0],[0,-1.1],[0,0],[-1.1,0],[0,0],[0,1.1],[0,0]],"o":[[0,0],[-1.1,0],[0,0],[0,1.1],[0,0],[1.1,0],[0,0],[0,-1.1]],"v":[[18.5,-25],[-18.5,-25],[-20.5,-23],[-20.5,23],[-18.5,25],[18.5,25],[20.5,23],[20.5,-23]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.5,52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"“ͼ²ã 11”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,74,0],"ix":2},"a":{"a":0,"k":[70,63.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,0.6],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[0.6,0],[0,0],[0,-0.6]],"v":[[12.5,-2.5],[-12.5,-2.5],[-13.5,-1.5],[-13.5,1.5],[-12.5,2.5],[12.5,2.5],[13.5,1.5],[13.5,-1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.901960844152,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.5,44.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.5,5.5],[-5.5,-5.5],[5.5,-5.5],[5.5,5.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875903739181,0.902435601926,0.955499387255,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.5,30.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.2,0],[0,0],[0,3.3],[0,0]],"o":[[0,0],[0,2.2],[0,0],[-3.3,0],[0,0],[0,0]],"v":[[14.6,-6],[14.6,2],[18.6,6],[-12.6,6],[-18.6,0],[-18.6,-6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901961023667,0.917646998985,0.956862984452,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.6,64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.6],[0,0],[-0.6,0],[0,0],[0,-0.6],[0,0],[0.6,0]],"o":[[-0.6,0],[0,0],[0,-0.6],[0,0],[0.6,0],[0,0],[0,0.6],[0,0]],"v":[[-13.5,4],[-14.5,3],[-14.5,0],[-13.5,-1],[11.5,-1],[12.5,0],[12.5,3],[11.5,4]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.5,-7],[-14.5,-18],[-3.5,-18],[-3.5,-7]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0.6,0],[0,0],[0,-0.6],[0,0],[-0.6,0],[0,0],[0,2.8],[0,0]],"o":[[0,0],[-0.6,0],[0,0],[0,0.6],[0,0],[2.8,0],[0,0],[0,-0.6]],"v":[[19.5,-27],[-19.5,-27],[-20.5,-26],[-20.5,26],[-19.5,27],[15.5,27],[20.5,22],[20.5,-26]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784014534,0.968626972273,0.984314024682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.5,43],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":5,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
import React from 'react';
import { Button } from 'antd';
import { withRouter } from 'react-router-dom';
import User from '@/common/js/user';
import './ExpiredCourseList.less';
function ExpiredCourseList(props) {
......
......@@ -10,7 +10,7 @@
import React, { useState } from 'react';
import { Table, Modal, message, Tooltip, Switch, Dropdown } from 'antd';
import { withRouter } from 'react-router-dom';
import { PageControl } from '@/components';
import { PageControl, XMTable } from "@/components";
import PlanService from '@/domains/plan-domain/planService';
import SharePlanModal from '../modal/SharePlanModal';
import { LIVE_SHARE } from '@/domains/course-domain/constants';
......@@ -305,7 +305,7 @@ function PlanList(props) {
}
return (
<div className='plan-list'>
<Table
<XMTable
rowKey={(record) => record.id}
showSorterTooltip={false}
dataSource={props.planListData}
......@@ -316,6 +316,9 @@ function PlanList(props) {
size='middle'
scroll={{ x: 1400 }}
className='plan-list-table'
renderEmpty={{
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>
}}
/>
<div className='box-footer'>
<PageControl
......
......@@ -16,7 +16,7 @@ import CourseService from '@/domains/course-domain/CourseService'
import './SharePlanModal.less'
const DEFAULT_COVER = 'https://image.xiaomaiketang.com/xm/YNfi45JwFA.png'
const DEFAULT_COVER = 'https://image.xiaomaiketang.com/xm/rEAetaTEh3.png'
class ShareLiveModal extends React.Component {
constructor(props) {
......@@ -51,6 +51,13 @@ class ShareLiveModal extends React.Component {
size: 98,
})
qrcodeWrapDom.appendChild(qrcodeNode)
const qrcodeWrapDomDownload = document.querySelector('#qrcodeWrap-dowload')
const qrcodeNodeDownLoad = new qrcode({
text: this.state.shareUrl,
size: 196,
})
qrcodeWrapDomDownload.appendChild(qrcodeNodeDownLoad)
}
)
})
......@@ -70,9 +77,8 @@ class ShareLiveModal extends React.Component {
},
() => {
this.setState({ time: new Date().valueOf() }, () => {
let node = document.getElementById('poster')
let node = document.getElementById('poster-dowload')
domtoimage.toPng(node).then((imgData) => {
console.log(imgData)
const download = document.createElement('a')
const { planName } = this.props.data
$(download).attr('href', imgData).attr('download', `${planName}.png`).get(0).click()
......@@ -112,7 +118,7 @@ class ShareLiveModal extends React.Component {
<div className='course-name-title'>邀请你参与培训:</div>
<div class='live-couse-name'>{planName}</div>
<div className='live-couse-name'>{planName}</div>
<Choose>
<When condition={showImg}>
<img crossOrigin='*' src={coverUrl + `?=${time}`} className='course-cover' alt='' />
......@@ -130,6 +136,31 @@ class ShareLiveModal extends React.Component {
<div className='qrcode-wrap__right' id='qrcodeWrap'></div>
</div>
</div>
<div id='poster-dowload'>
<div className='store-name'>
<span className='text'>{User.getStoreName()}</span>
</div>
<div className='course-name-title'>邀请你参与培训:</div>
<div className='live-couse-name'>{planName}</div>
<Choose>
<When condition={showImg}>
<img crossOrigin='*' src={coverUrl + `?=${time}`} className='course-cover' alt='' />
</When>
<Otherwise>
<img src={coverUrl + `?=${time}`} className='course-cover' alt='' />
</Otherwise>
</Choose>
<div className='qrcode-wrap'>
<div className='qrcode-wrap__left'>
<div className='text'>长按识别二维码进入观看</div>
<img className='finger' src='https://image.xiaomaiketang.com/xm/thpkWDwJsC.png' alt='' />
</div>
<div className='qrcode-wrap__right' id='qrcodeWrap-dowload'></div>
</div>
</div>
</div>
<div className='right'>
<div className='share-poster right__item'>
......
.share-live-modal {
.ant-modal-body {
display: flex;
#poster{
background: #FFF;
margin:0;
padding: 20px;
}
height:510px !important;
overflow: hidden !important;
.left {
width: 303px;
margin: 0 32px 0 16px;
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
border-radius: 12px;
#poster{
background: #FFF;
margin:0;
padding: 20px;
margin-bottom:140px;
.course-name-title {
font-size: 14px;
color: #333;
......@@ -83,6 +84,83 @@
}
}
}
#poster-dowload{
background: #FFF;
margin:0;
padding: 40px;
width:606px;
.course-name-title {
font-size: 28px;
color: #333;
line-height: 40px;
margin-bottom: 8px;
}
.live-couse-name{
font-size:32px;
color:#333333;
font-weight: 600;
}
.course-name {
color: #333;
font-size: 32px;
font-weight: 600;
line-height: 40px;
}
.course-cover {
width: 526px;
height: 286px;
border-radius: 6px;
margin-top: 16px;
}
.qrcode-wrap {
padding: 0 32px;
display: flex;
align-items: center;
margin: 48px 0 32px 0;
&__left {
width: 196px;
text-align: center;
margin-right: 44px;
.text {
line-height: 40px;
}
.finger {
width: 80px;
height: 80px;
margin-top: 16px;
}
}
&__right {
width: 220px;
height: 220px;
padding: 12px
}
}
.store-name {
// padding: 8px 16px;
display: flex;
align-items: center;
margin-bottom: 16px;
.text {
font-size: 12px;
color: #999;
font-size: 28px;
line-height: 40px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
.right {
.title {
......
......@@ -304,7 +304,7 @@ class SelectOperatorModal extends React.Component {
return null
})}
<If condition={!hasCover}>
<img className='course-cover' src={"https://image.xiaomaiketang.com/xm/YNfi45JwFA.png"} alt='' />
<img className='course-cover' src={"https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png"} alt='' />
</If>
<div>
......@@ -432,8 +432,7 @@ class SelectOperatorModal extends React.Component {
const { coverUrl } = record
return (
<div className='course-info'>
{/* 上传了封面的话就用上传的封面, 没有的话就取视频的第一帧 */}
<img className='course-cover' src={coverUrl || "https://image.xiaomaiketang.com/xm/YNfi45JwFA.png"} alt='' />
<img className='course-cover' src={coverUrl || "https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png"} alt='' />
<div className='course-name'>{record.courseName}</div>
</div>
)
......
......@@ -7,23 +7,20 @@
*/
import React from 'react';
import { Modal, Button, Radio, Checkbox, Spin, Upload, message, Tooltip } from 'antd';
import InfiniteScroll from 'react-infinite-scroller';
import { Modal, Button, Radio, Checkbox, message, Tooltip } from 'antd';
import User from '@/common/js/user';
import { getEllipsText } from "@/core/util";
import DefaultIcon from '@/modules/common/DefaultIcon';
import UploadProgressModal from './UploadProgressModal';
import NonCompliantFileModal from './NonCompliantFileModal';
import Service from '@/common/js/service';
import _ from 'underscore';
import {
DEFAULT_SIZE_UNIT, FileTypeIcon, NonCompliantFileMap,
DISK_LIST, SupportFileType, LocalFileType,FileVerifyMap
DEFAULT_SIZE_UNIT, FileTypeIcon,
SupportFileType, FileVerifyMap
} from "@/common/constants/academic/lessonEnum";
import { getFileTypeByName } from '../components/FolderManage';
import LottieIcon from '@/components/LottieIcon';
import './SelectPrepareFileModal.less';
const defaultQuery = {
......@@ -660,9 +657,10 @@ class SelectPrepareFileModal extends React.Component {
}
</div>
</div> :
<DefaultIcon
type='student'
<LottieIcon
title={<span className="desc">这个文件夹是空的</span>}
type="college"
size={150}
/>
}
......
/*
* @Author: 吴文洁
* @Date: 2020-06-09 10:47:51
* @Last Modified by: 吴文洁
* @Last Modified time: 2020-07-23 09:33:09
* @Last Modified by: chenshu
* @Last Modified time: 2021-06-08 18:10:25
* @Description: 文件夹列表
*/
import React from 'react';
import { Table, Menu, Dropdown, Modal, message,Tooltip } from 'antd';
import _ from 'underscore';
// import * as lodash from 'lodash';
import { PageControl, LottieIcon } from 'xiaomai-b-components';
import { PageControl } from 'xiaomai-b-components';
import { XMTable } from '@/components';
import Service from '@/common/js/service';
import { formatDate } from '@/domains/basic-domain/utils';
import { FILE_TYPE_ICON_MAP, SUPPORT_FILE_TYPE_MAP, DEFAULT_SIZE_UNIT } from '@/domains/resource-disk/constants';
import { getFileTypeByName } from '@/domains/resource-disk/utils';
import addData from '../../lottie/addData/data.json';
import search from '../../lottie/search/data.json';
import UploadProgressModal from '@/bu-components/UploadProgressModal';
import SelectPrepareFileModal from '@/bu-components/SelectPrepareFileModal';
import CopyFileModal from '@/bu-components/CopyFileModal';
import ManagingMembersModal from '@/bu-components/ManagingMembersModal';
import PreviewFileModal from '../modal/PreviewFileModal'
import ScanFileModal from '../modal/ScanFileModal';
import CreateFolderModal from '../modal/CreateFolderModal';
import User from '@/common/js/user';
import axios from 'axios';
const appId = "yozoqvpO2Hvz8346";
const DEL_FOLDER_URL_MAP = {
'MYSELF': 'public/hadesStore/delFolder',
'COMMON': 'public/hadesStore/delFolder'
......@@ -52,7 +54,10 @@ class FolderList extends React.Component {
showCopyFileModal: false, // 复制文件弹窗
showManagingModal: false, // 管理文件查看编辑权限
nonCompliantFileList: [], // 不符合上限的文件列表
parentRights: '' // 继承父级文件夹权限
parentRights: '', // 继承父级文件夹权限
showPreviewModal:false, //是否显示loading
previewing:false, //是否正在预览
previewStatus:'UPLOAD' //预览文件的生成状态
}
}
......@@ -95,10 +100,123 @@ class FolderList extends React.Component {
break;
}
}
handleYZPreviewDataDot =(folderFormat) => {
switch (folderFormat) {
case 'PDF':
window.WEBTRACING('resource_disk_yz_file_preview_pdf', '资料云盘_点击永中预览_pdf');
break;
case 'WORD':
case 'DOCX':
case 'DOC':
window.WEBTRACING('resource_disk_yz_file_preview_word', '资料云盘_点击永中预览_word');
break;
case 'EXCEL':
window.WEBTRACING('resource_disk_yz_file_preview_excel', '资料云盘_点击永中预览_excel');
break;
case 'PPT':
case 'PPTX':
window.WEBTRACING('resource_disk_yz_file_preview_ppt', '资料云盘_点击永中预览_ppt');
break;
default:
break;
}
}
getYoZoSign = (data,type,folderName)=>{
return new Promise((resolve) => {
let uploadParams;
if(type==="UPLOAD"){
uploadParams ={
fileUrl:data,
instId:window.currentUserInstInfo.instId,
yoZoTypeEnum:'UPLOAD'
}
}else{
uploadParams ={
fileVersionId:data,
instId:window.currentUserInstInfo.instId,
yoZoTypeEnum:'VIEW',
htmlTitle:folderName
}
}
Service.Apollo('public/apollo/getYoZoSign', uploadParams).then(res => {
const { result = [] } = res;
resolve(result)
});
})
}
saveYoZoFileVersionId = (fileVersionId,folderId)=>{
const params ={
fileVersionId,
folderId,
instId: window.currentUserInstInfo.instId,
}
Service.Apollo('public/apollo/saveYoZoFileVersionId', params).then(res => {
});
}
// 预览文件
handleScanFile = (folder) => {
const { folderFormat, folderSize, ossUrl } = folder;
handleScanFile = async (folder) => {
const { folderFormat, folderSize, ossUrl,rights,fileVersionId,id,folderName} = folder;
const {currentRootDisk } = this.props;
//如果是公共文件且只有查看的权限的用户的预览对接的三方是永中
const that = this;
if(currentRootDisk.disk==="COMMON" && rights==="LOOK"){
switch (folderFormat) {
case 'PDF':
case 'WORD':
case 'DOCX':
case 'DOC':
case 'EXCEL':
case 'PPT':
case 'PPTX':
that.handleYZPreviewDataDot(folderFormat);
if(!fileVersionId){
this.setState({
previewing:true,
showPreviewModal:true,
previewStatus:'UPLOAD'
},async ()=>{
const uploadSign = await that.getYoZoSign(ossUrl,"UPLOAD");
axios.post(`https://dmc.yozocloud.cn/api/file/http?fileUrl=${ossUrl}&appId=${appId}&sign=${uploadSign}`)
.then(async function (response){
that.saveYoZoFileVersionId(response.data.data.fileVersionId,id);
const { previewing } = that.state;
if(previewing){
const previewSign = await that.getYoZoSign(response.data.data.fileVersionId,"VIEW",folderName);
const url = `https://eic.yozocloud.cn/api/view/file?fileVersionId=${response.data.data.fileVersionId}&appId=${appId}&sign=${previewSign}&htmlTitle=${folderName}`
that.setState({
previewStatus:'UPLOAD_SUCCESS',
url
})
}
})
})
}else{
const previewSign = await that.getYoZoSign(fileVersionId,"VIEW",folderName);
const url = `http://eic.yozocloud.cn/api/view/file?fileVersionId=${fileVersionId}&appId=${appId}&sign=${previewSign}&htmlTitle=${folderName}`
const a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('href', url);
a.setAttribute('target', '_blank');
a.click();
document.body.removeChild(a)
}
break;
default:
const scanFileModal = (
<ScanFileModal
fileType={folderFormat}
item={folder}
close={() => {
this.setState({ scanFileModal: null });
}}
/>
);
this.setState({ scanFileModal });
break;
}
}else{
switch (folderFormat) {
case 'PDF':
window.open(ossUrl, "_blank");
......@@ -126,20 +244,20 @@ class FolderList extends React.Component {
});
break;
}
if (folderFormat === 'EXCEL') {
Modal.confirm({
title: '抱歉,不能在线预览',
content: ' 该文件类型不支持在线预览,请下载后再查看',
// icon: <Icon type="question-circle" theme="filled" style={{ color: '#FF8534' }}></Icon>,
okText: "下载",
onOk: () => {
const a = document.createElement('a');
a.href = ossUrl;
a.click();
}
});
break;
}
// if (folderFormat === 'EXCEL') {
// Modal.confirm({
// title: '抱歉,不能在线预览',
// content: ' 该文件类型不支持在线预览,请下载后再查看',
// // icon: <Icon type="question-circle" theme="filled" style={{ color: '#FF8534' }}></Icon>,
// okText: "下载",
// onOk: () => {
// const a = document.createElement('a');
// a.href = ossUrl;
// a.click();
// }
// });
// break;
// }
const prefixUrl = "https://view.officeapps.live.com/op/view.aspx?src=";
const scanUrl = `${prefixUrl}${encodeURIComponent(ossUrl)}`
window.open(scanUrl, "_blank");
......@@ -155,11 +273,17 @@ class FolderList extends React.Component {
this.setState({ scanFileModal });
break;
}
}
// 预览文件埋点
this.handleDataDot(folderFormat);
}
cancelPreview = ()=>{
this.setState({
previewing:false,
showPreviewModal:false,
previewStatus:'UPLOAD'
})
}
// 选择文件夹
handleSelectFolder = (folder) => {
const { folderPathList, showResultPage, currentRootDisk } = this.props;
......@@ -276,8 +400,8 @@ class FolderList extends React.Component {
title: '操作',
key: 'operate',
render: (value, record) => {
if (!(currentRootDisk.disk === 'COMMON' && (folderPathList.length === 1 || record.folderType === 'FOLDER')) ||
hasManagementAuthority) {
if ((!(currentRootDisk.disk === 'COMMON' && (folderPathList.length === 1 || record.folderType === 'FOLDER')) ||
hasManagementAuthority) && !(record.rights==="LOOK") ){
return (
<Dropdown overlay={this.renderMenu(record)} trigger={['hover']}>
<span className="icon iconfont">&#xe62c;</span>
......@@ -608,14 +732,13 @@ class FolderList extends React.Component {
<Menu.Divider key="administration-bottom"/>
]
}
{
folderType === 'FILE' &&
{(folderType === 'FILE' && (rights === "LOOK_DOWNLOAD" || rights === 'EDIT') ) &&
<Menu.Item key="download">
<span onClick={() => { this.handleDownload(record) }}>下载</span>
</Menu.Item>
}
{
currentRootDisk.disk === 'COMMON' &&
{(rights === "LOOK_DOWNLOAD" || rights === 'EDIT') &&
<Menu.Item key="copy">
<span onClick={() => this.handleShowCopyFileModal(record)}>复制到</span>
</Menu.Item>
......@@ -646,7 +769,8 @@ class FolderList extends React.Component {
const {
currentFolder, currentFile, renameModalData, showSelectFileModal,
showUploadModal, localFileList, showCopyFileModal, showManagingModal
showUploadModal, localFileList, showCopyFileModal, showManagingModal,
showPreviewModal, previewStatus,url
} = this.state;
const {
selectedFileIds, folderList, showResultPage,
......@@ -693,9 +817,11 @@ class FolderList extends React.Component {
</When>
<Otherwise>
<LottieIcon
title={
<Choose>
<XMTable
className="add-empty"
renderEmpty={{
image: !showResultPage ? addData : search,
description: <Choose>
<When condition={!showResultPage}>
<input
multiple
......@@ -709,7 +835,7 @@ class FolderList extends React.Component {
{
<Choose>
<When condition={hasManagementAuthority}>
<div>你还没有上传文件,点击
<div className="lottie-icon-title">你还没有上传文件,点击
<Tooltip title="支持文件类型:ppt、word、excel、pdf、jpg、mp3、mp4">
<span
className="upload-btn"
......@@ -729,7 +855,7 @@ class FolderList extends React.Component {
<div className="desc">搜索无结果</div>
</Otherwise>
</Choose>
}
}}
/>
</Otherwise>
</Choose>
......@@ -762,7 +888,7 @@ class FolderList extends React.Component {
}}
onMove={(query) => {
this.setState({ showSelectFileModal: false });
this.props.onMove(query, [currentFile.id]);
this.props.onMove(query, [currentFile.id],[currentFile.folderType]);
}}
/>
{
......@@ -787,7 +913,9 @@ class FolderList extends React.Component {
}}
/>
}
{ showPreviewModal &&
<PreviewFileModal onCancel={()=>this.cancelPreview()} previewStatus={previewStatus} url={url}/>
}
{ this.state.scanFileModal }
{ this.state.chargeModal }
</div>
......
......@@ -47,6 +47,7 @@ class FolderManage extends React.Component {
folderPathList: [props.currentRootDisk],
selectedFileIds: [], // 已被选择的文件
selectedFileRights: [], // 已被选择的文件对应权限
selectedFileType:[], // 已选择的文件的类型
folderList: [], // 当前目录下的文件
searchKey: null, // 搜索关键字
totalCount: 0, // 该磁盘总共有的文件个数
......@@ -200,10 +201,12 @@ class FolderManage extends React.Component {
handleChangeRow = (selectedRowKeys) => {
const { folderList } = this.state;
let _selectedFileRights = [];
let _selectedFileType = [];
selectedRowKeys.map(folderId => {
folderList.map(item => {
if (item.id === folderId) {
_selectedFileRights.push(item.rights);
_selectedFileType.push(item.folderType);
}
return _selectedFileRights;
})
......@@ -211,7 +214,8 @@ class FolderManage extends React.Component {
})
this.setState({
selectedFileIds: selectedRowKeys,
selectedFileRights: _selectedFileRights
selectedFileRights: _selectedFileRights,
selectedFileType:_selectedFileType
})
}
......@@ -255,12 +259,13 @@ class FolderManage extends React.Component {
}
// 移动文件
handleMove = (query, sourceFileIds = this.state.selectedFileIds) => {
handleMove = (query, sourceFileIds = this.state.selectedFileIds,selectedFileTypes=this.state.selectedFileType) => {
const { targetFolder, selectFolderPathList } = query;
const { currentRootDisk: { disk} } = this.props;
const { folderPathList } = this.state;
const currentFolder = folderPathList[folderPathList.length - 1];
const { id } = targetFolder;
let canRemove = true;
// 将selectedFileIds移动到targetFolder
let params = {
disk,
......@@ -271,8 +276,17 @@ class FolderManage extends React.Component {
if (selectFolderPathList.length > 1) {
params.newParentId = id
}
if(selectFolderPathList.length > 9){
selectedFileTypes.map((item)=>{
//判定是否存在文件夹
if(item==="FOLDER"){
canRemove = false;
message.warning('不能将文件夹移动到10级目录下');
}
})
}
if(canRemove){
Service.Hades('public/hadesStore/moveFolder', params).then((res) => {
// 判断是否将文件移动到了自身或者子目录
const { result = {} } = res;
const { code, message: _message } = result;
......@@ -294,6 +308,7 @@ class FolderManage extends React.Component {
this.handleFetchFolderList({ parentId: currentFolder.id, current: 1});
})
}
}
// 修改文件路径
handleChangeFolderPath = (folderPathList, hasRootDisk = true) => {
......
......@@ -13,7 +13,7 @@ import _ from 'underscore';
import Service from '@/common/js/service';
import { getEllipsText } from '@/domains/basic-domain/utils';
import { DEFAULT_SIZE_UNIT, LOCAL_FILE_TYPE_MAP,FILR_VERIFY_MAP,SUPPORT_FILE_TYPE_MAP} from '@/domains/resource-disk/constants';
import { DEFAULT_SIZE_UNIT,FILR_VERIFY_MAP,SUPPORT_FILE_TYPE_MAP} from '@/domains/resource-disk/constants';
import { getFileTypeByName } from '@/domains/resource-disk/utils';
import UploadProgressModal from '@/bu-components/UploadProgressModal';
......@@ -70,7 +70,7 @@ class OperateArea extends React.Component {
// 判断当前目录是否在第10层,如果是的话提示最多只能创建10层文件夹
const { folderPathList } = this.props;
if (folderPathList.length > 10) {
if (folderPathList.length > 9) {
message.warning('最多只能创建10层文件夹');
return;
}
......
......@@ -29,25 +29,6 @@ class PrepareLessonPage extends React.Component {
}
}
componentWillMount() {
// this.handleFetchDiskList();
}
handleFetchDiskList = async () => {
const res = await Service.Hades('public/apollo/getUserDisk', {});
const { result = [] } = res;
const diskList = result.map((item) => {
return {
...item,
folderName: DISK_MAP[item.disk]
}
});
this.setState({
diskList,
currentRootDisk: diskList[0] || defaultRootDisk
});
}
handleChangeDisk = (disk) => {
this.setState({
currentRootDisk: disk
......
......@@ -215,8 +215,7 @@
cursor: pointer;
}
.lottie-icon {
&__title {
.lottie-icon-title {
color: #999;
.upload-btn {
color: #5A8EFA;
......@@ -224,12 +223,16 @@
cursor: pointer;
}
}
}
// td.ant-table-column-sort{
// background:none !important;
// }
}
}
.add-empty {
.ant-table-cell {
border: none;
}
}
}
......
import React from 'react';
import { Modal, Input, Form, message } from 'antd';
import ShowTips from '@/bu-components/ShowTip';
import { Modal, Input, Form } from 'antd';
import './CreateFolderModal.less';
class CreateFolderModal extends React.Component {
......@@ -107,5 +106,4 @@ class CreateFolderModal extends React.Component {
}
}
// export default Form.create()(CreateFolderModal);
export default CreateFolderModal;
\ No newline at end of file
import React from 'react';
import "./PreviewFileModal.less";
import { Spin } from 'antd'
class PreviewFileModal extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
cancelPreView = ()=>{
this.props.onCancel();
}
toPreView = (url)=>{
const a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('href', url);
a.setAttribute('target', '_blank');
a.click();
document.body.removeChild(a);
this.props.onCancel();
}
render() {
const { previewStatus,url} = this.props
return (
<div className="preview-modal">
<div className="preview-modal-content">
<div className="load-img-box">
{previewStatus === "UPLOAD" &&
<Spin size="large"/>
}
{previewStatus === "UPLOAD_SUCCESS" &&
<img className="load-img" src="https://image.xiaomaiketang.com/xm/jJRK3bTEdc.png"></img>
}
</div>
<div className="load-text-box">
{previewStatus === "UPLOAD" &&
<div className="load-text-box-title">预览生成中</div>
}
{previewStatus === "UPLOAD_SUCCESS" &&
<div className="load-text-box-title">预览生成成功</div>
}
</div>
<div className="operate">
<span className="btn cancel-preview-btn" onClick={()=>this.cancelPreView()}>取消预览</span>
{previewStatus === "UPLOAD" &&
<span className="btn to-preview-btn__disabled to-preview-btn">去查看</span>
}
{previewStatus === "UPLOAD_SUCCESS" &&
<span className="btn to-preview-btn" onClick={()=>this.toPreView(url)}>去查看</span>
}
</div>
</div>
</div>
);
}
}
export default PreviewFileModal;
.preview-modal{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 102;
height: 100%;
background: rgba(0, 0, 0, 0.7);
.preview-modal-content{
position:absolute;
left:calc(50% - 133px);
top:calc(50% - 87px);
color:#FFF;
text-align:center;
width:266px;
height:174px;
.ant-spin-dot-item{
background-color: #FFF;
}
.load-img-box{
.load-img{
width:44px;
height:44px;
}
}
.load-text-box{
margin-top:23px;
font-size:16px;
color:#FFF;
.load-text-box-title{
margin-bottom:8px;
}
}
.operate{
margin-top:24px;
.btn {
padding:5px 12px;
border:1px solid #E8E8E8;
border-radius:2px;
}
.cancel-preview-btn{
margin-right:8px;
}
.to-preview-btn__disabled{
border:1px solid #E8E8E8;
opacity: 0.4;
}
}
}
}
\ No newline at end of file
......@@ -116,7 +116,6 @@ const App: React.FC = (props: any) => {
setMenuType(!menuType);
}
if (!storeUserId) {
return <div></div>
}
......@@ -127,7 +126,7 @@ const App: React.FC = (props: any) => {
<ConfigProvider locale={zhCN} autoInsertSpaceInButton={false}>
<Main menuType={menuType} />
</ConfigProvider>
<Menu menuType={menuType} handleMenuType={handleMenuType}/>
<Menu menuType={menuType} handleMenuType={handleMenuType} />
</div>
)
}
......
import User from '@/common/js/user';
import React from 'react';
import Header from './Header'
import Lottie from "lottie-web";
import { Modal } from "antd";
import Service from "@/common/js/service";
import { LIVE_SHARE } from "@/domains/course-domain/constants";
import BaseService from "@/domains/basic-domain/baseService";
import './ErrorCollege.less';
export default class ErrorCollege extends React.Component {
constructor(props) {
super(props);
this.state = {
menuType: true,
nickName: '',
}
}
componentDidMount() {
this.getUserInfo();
this.getStorePermission();
var animation = Lottie.loadAnimation({
path: "https://image.xiaomaiketang.com/xm/AhcJZHdMZf.json",
name: "test",
renderer: "svg",
loop: true,
autoplay: true,
container: document.getElementById("lottie-box")
});
}
getStorePermission() {
......@@ -29,17 +41,62 @@ export default class ErrorCollege extends React.Component {
});
}
handleMenuType() {
this.setState({ menuType: !menuType });
getUserInfo() {
const param = {
storeUserId: User.getStoreUserId(),
};
BaseService.getStoreUser(param).then((res) => {
const { nickName } = res.result;
this.setState({ nickName });
});
}
handleLogoutConfirm() {
return Modal.confirm({
title: "你确定要退出登录吗?",
content: "退出后,需重新登录",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe839; </span>
),
okText: "退出登录",
cancelText: "点错了",
onOk: () => {
this.handleLogout();
},
});
}
handleLogout() {
BaseService.logout({identifier:User.getIdentifier()}).then((res) => {
User.removeUserId();
User.removeToken();
User.removeEnterpriseId();
User.clearUserInfo();
const url = `${LIVE_SHARE}store/index?id=${User.getCustomerStoreId()||User.getStoreId()}&userId=${User.getUserId()}&from=work_weixin`;
window.location.href = url;
});
}
render() {
const { menuType } = this.state;
const { nickName } = this.state;
return (
<div className="error-college-page">
<Header id="error" handleMenuType={this.handleMenuType} menuType={menuType} />
<div className="header">
<img src='https://image.xiaomaiketang.com/xm/FEdG7BMwKr.png' className="logo" alt="" />
<div className="name-box">
<img src='https://image.xiaomaiketang.com/xm/hcp6zs5HTn.png' className="avatar" alt="" />
<span className="name">{nickName}</span>
<span
className="control"
onClick={() => {
this.handleLogoutConfirm();
}}
>退出登录</span>
</div>
</div>
<div className="error-college-box">
<img src="https://image.xiaomaiketang.com/xm/MQRaYkbr6J.png" className="error-college-image" />
<div id="lottie-box" className="error-college-image"></div>
<span className="error-college-tip">{User.getStoreName()}已停用</span>
</div>
</div>
......
......@@ -2,6 +2,36 @@
position: relative;
width: 100vw;
height: 100vh;
.header {
display: flex;
align-items: center;
height: 60px;
padding: 0 344px;
justify-content: space-between;
.logo {
width: 117px;
height: 30px;
}
.name-box {
display: flex;
align-items: center;
.avatar {
width: 24px;
height: 24px;
border-radius: 50%;
margin-right: 6px;
}
.name {
color: #666;
font-size: 16px;
margin-right: 8px;
}
.control {
color: #2966FF;
cursor: pointer;
}
}
}
.error-college-box {
position: absolute;
top: 50px;
......@@ -10,20 +40,20 @@
bottom: 0;
.error-college-image {
position: absolute;
top: 246px;
top: 266px;
left: 50%;
transform: translateX(-50%);
width: 246px;
height: 132px;
width: 200px;
height: 200px;
display: block;
}
.error-college-tip {
position: absolute;
top: 404px;
top: 482px;
left: 50%;
transform: translateX(-50%);
color: #8C8E93;
font-size: 13px;
color: #000;
font-size: 18px;
}
}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import { Radio, Button, Dropdown, Modal, Tooltip, message } from "antd";
import { LIVE_SHARE } from "@/domains/course-domain/constants";
import User from "@/common/js/user";
import Service from "@/common/js/service";
import StoreService from "@/domains/store-domain/storeService";
import BaseService from "@/domains/basic-domain/baseService";
import { XMContext } from "@/store/context";
import logoImg from "@/common/images/logo.png";
......@@ -18,6 +19,7 @@ import CourseService from "@/domains/course-domain/CourseService";
import qrcode from "@/libs/qrcode/qrcode.js";
import Bus from '@/core/tbus';
import ClickOutside from '../../components/ClickOutside';
import _ from "underscore";
const baseImg = "https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png";
const { confirm } = Modal;
......@@ -38,6 +40,8 @@ function Header(props) {
const storeUserId = User.getStoreUserId();
const enterpriseId = User.getEnterpriseId();
const messageHelpRef = useRef(null)
const domRef = useRef(null);
const listRef = useRef(list);
......@@ -54,6 +58,17 @@ function Header(props) {
enterpriseId ? getEnterpriseUser() : User.setIsAdmin(false);
}, [storeUserId]);
useEffect(()=> {
if (!messageHelpRef.current) {
return
}
if (menuType) {
messageHelpRef.current.style.marginLeft = "194px"
} else {
messageHelpRef.current.style.marginLeft = "76px"
}
},[menuType])
function getUserInfo() {
const param = {
storeUserId: User.getStoreUserId(),
......@@ -218,10 +233,10 @@ function Header(props) {
return (
<div id="top-container" className="top-container">
<div className="top top-nav">
<div>
<img src='https://image.xiaomaiketang.com/xm/WEsMPAYxAs.png' className="logo" alt="" />
</div>
<div className="message-help">
{/* <div>
<img src={topLeftLogo} className="logo" alt="" />
</div> */}
<div className="message-help" ref={messageHelpRef}>
{list.length ? (
<ClickOutside
onClickOutside={() => {
......
@import '../../core/variables.less';
@top-height: 60px;
@top-height: 0px;
@menu-bakg: #FFF;
@active-color: #2966FF;
.left-container {
......@@ -12,6 +12,23 @@
width: @xm-left-width;
background: @menu-bakg;
color: #333;
.topLogo {
height: 62px;
background: rgba(255, 255, 255, 0.5);
.img1 {
width: 138px;
height: 35px;
margin-left: 19px;
margin-top: 13px;
}
.img0 {
display: none;
width: 35px;
height: 35px;
margin-left: 10px;
margin-top: 13px;
}
}
.menu-type-icon{
margin:4px 0 0px 150px;
cursor: pointer;
......@@ -48,8 +65,8 @@
margin-right: 20px
}
.icon-img{
width:16px;
height:16px;
width:18px;
height:18px;
margin-right:16px;
}
.listType {
......
import React, { useContext, useEffect, useState, version } from 'react';
import React, { useContext, useEffect, useRef, useState } from 'react';
import {
withRouter,
} from 'react-router-dom';
......@@ -128,6 +128,9 @@ function Aside(props: any) {
const ctx: any = useContext(XMContext);
const [selectKey, setSelectKey] = useState();
const [openKeys, setOpenKeys] = useState(['']);
const [topLogoUrl, setTopLogoUrl] = useState("")
const logoImg0Ref = useRef<any>()
const logoImg1Ref = useRef<any>()
const rootSubmenuKeys = _.pluck(menuList, 'groupCode');
useEffect(() => {
const link = props.location.pathname;
......@@ -145,6 +148,22 @@ function Aside(props: any) {
return item;
})
}, [props.location.pathname])
useEffect(()=> {
getTopLeftLogo()
})
function getTopLeftLogo() {
if (User.getToken()) {
StoreService.getStoreDetail({storeId:User.getStoreId()})
.then(res=> {
if (_.isEmpty(res.result.logo)) {
setTopLogoUrl("https://image.xiaomaiketang.com/xm/fe4NCjr7XF.png")
} else {
setTopLogoUrl(res.result.logo)
}
})
}
}
function toggleMenu(item: any) {
window.RCHistory.push(item.link)
}
......@@ -158,6 +177,23 @@ function Aside(props: any) {
function handleMenu() {
handleMenuType();
}
useEffect(()=> {
if (!logoImg0Ref.current || !logoImg1Ref.current) {
return
}
if (!menuType) {
if (topLogoUrl.indexOf("xiaomaiketang.com") < 0) {
logoImg0Ref.current.style.display = "none"
logoImg1Ref.current.style.display = "none"
} else {
logoImg0Ref.current.style.display = "inline"
logoImg1Ref.current.style.display = "none"
}
} else {
logoImg0Ref.current.style.display = "none"
logoImg1Ref.current.style.display = "inline"
}
},[menuType])
return (
<div
......@@ -168,6 +204,10 @@ function Aside(props: any) {
: "left-container left-container-vertical"
}
>
<div className="topLogo">
<img ref={logoImg0Ref} src="https://image.xiaomaiketang.com/xm/c4KiP2epBP.png" alt="" className="img0"></img>
<img ref={logoImg1Ref} src={topLogoUrl} alt="" className="img1"></img>
</div>
<div className="menu-type-icon" onClick={handleMenu}>
{menuType ? (
<span
......
/*
* @Author: yuananting
* @Date: 2021-04-08 15:50:52
* @LastEditors: wufan
* @LastEditTime: 2021-04-24 15:55:19
* @Description: 助学工具-考试-答案详情
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { useState, useEffect, useRef } from 'react';
import { Route, withRouter } from 'react-router-dom';
import User from '@/common/js/user';
import Service from '@/common/js/service';
import Lottie from 'lottie-web';
import './AnswerDescPage.less';
import { message } from 'antd';
import XMAudio from './XMAudio';
import ScanFileModal from '@/modules/prepare-lesson/modal/ScanFileModal';
const NUM_TO_WORD_MAP = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
function AnswerDescPage(props) {
const examId = props.match.params.testId.replace(/\?.+/, '');
const paperId = window.getParameterByName('paperId');
const [customerId, setCustomerId] = useState('');
const [examDetail, setExamDetail] = useState({
examDesc: '',
examDuration: 0,
examEndTime: '',
examName: '',
examStartTime: '',
paperId: 0,
passRate: 0,
passScore: 0,
resultContent: '',
resultShow: '',
totalQuestionCount: 0,
totalScore: 0,
userCorrectQuestion: 0,
userExamDuration: 0,
userExamState: '',
userScore: 0,
});
const [paperDetail, setPaperDetail] = useState({}); // 试卷详情
const [userAnswerList, setUserAnswerList] = useState([]); // 用户当前答案列表
const [allUserAnswerList, setAllUserAnswerList] = useState([]); // 用户所有答案列表
const [errorUserAnswerList, setErrorUserAnswerList] = useState([]); // 用户错误答案列表
const [questionList, setQuestionList] = useState([]); // 用户当前题目列表
const [allQuestionList, setAllQuestionList] = useState([]); // 用户所有题目列表
const [errorQuestionList, setErrorQuestionList] = useState([]); // 用户错误题目列表
const [errorCount, setErrorCount] = useState(0);
const [onlyError, setOnlyError] = useState(true); // 只显示错题
const [activeIndex, setActiveIndex] = useState(0); // 当前答题索引
const [activeOrderIndex, setActiveOrderIndex] = useState(0); // 当前答题序号
const [isShowQuestionCard, setIsShowQuestionCard] = useState(false); // 答题卡是否展开
const [isShowErrorPage, setIsShowErrorPage] = useState(false); // 是否展示异常提示页面
// 是否打开预览文件弹框
const [showScanFile, setShowScanFile] = useState(false);
const [scanFileAddress, setScanFileAddress] = useState(false);
const [scanFileType, setScanFileType] = useState(false);
const questionTypeList = {
SINGLE_CHOICE: '单选题',
MULTI_CHOICE: '多选题',
JUDGE: '判断题',
GAP_FILLING: '填空题',
INDEFINITE_CHOICE: '不定项选择题',
};
useEffect(() => {
getPaperDetail();
getExamDetail();
}, []);
useEffect(() => {
Lottie.loadAnimation({
path: 'https://image.xiaomaiketang.com/xm/AcQWnGATCM.json',
name: 'test',
renderer: 'svg',
loop: true,
autoplay: true,
container: document.getElementById('empty-img-box'),
});
}, []);
// 获取考试详情
function getExamDetail() {
const params = {
examId,
source: 0,
tenantId: User.getStoreId() || window.getParameterByName('id'),
userId: props.userId,
};
Service.Hades('public/customerHades/queryUserExamResult', params, {
reject: true,
})
.then((res) => {
const data = { ...res.result };
setExamDetail(data);
})
.catch((res) => {
if (res.code === 'EXAM_IS_NOT_EXIST') {
handleChangeShowErrorPage();
} else {
message.error(res.message);
}
});
}
// 获取试卷详情
function getPaperDetail() {
Service.Hades('public/customerHades/queryUserExamAnswer', {
examId,
paperId,
readAnswer: true,
source: 0,
tenantId: User.getStoreId() || window.getParameterByName('id'),
userId: props.userId,
}).then((res) => {
const { paperDetailVO, userExamAnswerVO } = res.result;
const paperDetail = { ...paperDetailVO };
const allUserAnswerList = [...userExamAnswerVO];
let allQuestionList = [...paperDetail.questionList];
allQuestionList = allQuestionList.map((item, index) => {
item.orderIndex = index;
return item;
});
const errorUserAnswerList = _.filter(allUserAnswerList, (item) => {
return item.isCorrect === 0;
});
let errorQuestionList = [];
let userAnswerMap = {};
errorUserAnswerList.forEach((item) => {
userAnswerMap[item.questionId] = true;
});
allQuestionList.forEach((item) => {
if (userAnswerMap[item.questionId]) {
errorQuestionList.push(item);
}
});
setActiveOrderIndex(errorQuestionList.length > 0 ? errorQuestionList[0].orderIndex : 0);
setPaperDetail(paperDetail);
setAllUserAnswerList(allUserAnswerList);
setErrorUserAnswerList(errorUserAnswerList);
setErrorCount(errorUserAnswerList.length);
setUserAnswerList(errorUserAnswerList);
setAllQuestionList(allQuestionList);
setErrorQuestionList(errorQuestionList);
setQuestionList(errorQuestionList);
});
}
function handleChangeShowErrorPage() {
setIsShowErrorPage(true);
}
function handleChangeActiveIndex(isPre) {
if (onlyError) {
if (isPre && activeOrderIndex !== errorQuestionList[0].orderIndex) {
setActiveOrderIndex(errorQuestionList[activeIndex - 1].orderIndex);
setActiveIndex(activeIndex - 1);
} else if (!isPre && activeOrderIndex !== errorQuestionList[errorCount - 1].orderIndex) {
setActiveOrderIndex(errorQuestionList[activeIndex + 1].orderIndex);
setActiveIndex(activeIndex + 1);
}
} else {
if (isPre && activeOrderIndex !== 0) {
setActiveOrderIndex(activeIndex - 1);
setActiveIndex(activeIndex - 1);
} else if (!isPre && activeOrderIndex !== questionList.length - 1) {
setActiveOrderIndex(activeIndex + 1);
setActiveIndex(activeIndex + 1);
}
}
}
function renderFooterText() {
if (onlyError && errorCount > 0) {
// 只看错题
return (
<div className='footer-btn'>
<div className='pre-next'>
<div
className={`${activeOrderIndex === (errorQuestionList.length > 0 ? errorQuestionList[0].orderIndex : 0) ? 'disabled' : ''} pre`}
onClick={() => handleChangeActiveIndex(true)}>
<span className='icon iconfont'>&#xe79c;</span>
<div className='text'>上一题</div>
</div>
<div
className={`${activeOrderIndex === (errorQuestionList.length > 0 ? errorQuestionList[errorCount - 1].orderIndex : 0) ? 'disabled' : ''} next`}
onClick={() => handleChangeActiveIndex(false)}>
<div className='text'>下一题</div>
<span className='icon iconfont'>&#xe79b;</span>
</div>
</div>
</div>
);
} else if (!onlyError) {
return (
<div className='footer-btn'>
<div className='pre-next'>
<div className={`${activeOrderIndex === 0 ? 'disabled' : ''} pre`} onClick={() => handleChangeActiveIndex(true)}>
<span className='icon iconfont'>&#xe79c;</span>
<div className='text'>上一题</div>
</div>
<div className={`${activeOrderIndex === questionList.length - 1 ? 'disabled' : ''} next`} onClick={() => handleChangeActiveIndex(false)}>
<div className='text'>下一题</div>
<span className='icon iconfont'>&#xe79b;</span>
</div>
</div>
</div>
);
}
}
function handleRenderQuestionItem() {
return _.map(questionList, (questionItem, questionIndex) => {
const { questionStemList, optionList, gapFillingAnswerList, questionAnswerDescList, questionType, score, questionId, orderIndex } = questionItem;
return (
<div className={`question-info-item`}>
{renderStem(questionItem, questionStemList, questionType, score, orderIndex, questionId, gapFillingAnswerList)}
{questionType !== 'GAP_FILLING' &&
_.map(optionList, (optionItem, optionIndex) => {
return renderOption(optionItem, optionIndex, questionId);
})}
{renderAnswerCompare(questionId, questionType, optionList, gapFillingAnswerList)}
{/* {renderAnswerDesc(questionAnswerDescList)} */}
</div>
);
});
}
// 查看图片或视频
function handleScanFile(scanFileType, scanFileAddress) {
setShowScanFile(true);
setScanFileAddress(scanFileAddress);
setScanFileType(scanFileType);
}
// 渲染多媒体内容
function renderMediaContent(mediaContent) {
return (
<div className='media-container'>
{_.map(mediaContent, (mediaItem, mediaIndex) => {
let dom = '';
let { type, content, size } = mediaItem;
switch (type) {
case 'PICTURE':
dom = (
<div key={mediaIndex + 1} className='picture-box'>
<img src={content} onClick={() => handleScanFile('JPG', content)} />
</div>
);
break;
case 'VOICE':
dom = (
<div key={mediaIndex + 1} className='voice-box'>
<XMAudio
url={content}
getDuration={(durationSize) => {
size = durationSize;
}}
index={mediaIndex + 1}
size={size || 1000}
/>
</div>
);
break;
case 'AUDIO':
dom = (
<div key={mediaIndex} className='voice-box'>
<XMAudio
url={content}
getDuration={(durationSize) => {
size = durationSize;
}}
index={mediaIndex}
size={size || 1000}
/>
</div>
);
break;
}
return dom;
})}
</div>
);
}
// 渲染题干
function renderStem(questionItem, questionStemList, questionType, score, orderIndex, questionId, gapFillingAnswerList) {
const textContent = _.filter(questionStemList, (item) => {
return item.type === 'RICH_TEXT';
});
const mediaContent = _.filter(questionStemList, (item) => {
return item.type !== 'RICH_TEXT';
});
let content = textContent.length > 0 ? textContent[0].content : '';
const userAnswerItem = _.filter(userAnswerList, (item) => {
return item.questionId === questionId;
});
// 填空题题干渲染
if (questionType === 'GAP_FILLING' && userAnswerItem.length > 0) {
let userAnswer = [];
if (userAnswerItem[0].answer) {
userAnswer = userAnswerItem[0].answer;
} else {
gapFillingAnswerList.forEach((item, index) => {
userAnswer.push('');
});
}
gapFillingAnswerList.map((gapItem, gapIndex) => {
let gapValue = gapItem.correctAnswerList.includes(userAnswer[gapIndex])
? `<img src="https://image.xiaomaiketang.com/xm/FwZa2Kaypc.png" />`
: `<img src="https://image.xiaomaiketang.com/xm/7tRHDf6ysA.png" />`;
content = content.replace(
/(_)|(<input.*?>)/,
`<div class="gap-line"><span>${userAnswer[gapIndex] === '@X#$' ? '' : userAnswer[gapIndex]} </span>${gapValue}</div>`
);
});
}
let textDom = (
<div
key={0}
className='text-dom'
dangerouslySetInnerHTML={{
__html: content,
}}
/>
);
return (
<div className='stem-line__item' id={questionItem.questionId}>
<div className='text'>
<img
className='answer-icon'
src={userAnswerItem[0].isCorrect === 1 ? 'https://image.xiaomaiketang.com/xm/FwZa2Kaypc.png' : 'https://image.xiaomaiketang.com/xm/7tRHDf6ysA.png'}
/>
<span className='question-index'>第{orderIndex + 1}题</span>
<span className='steam-line_type'>({`${questionTypeList[questionType]} | ${score}分`})</span>
{textDom}
</div>
{renderMediaContent(mediaContent)}
</div>
);
}
// 渲染选项
function renderOption(optionItem, optionIndex, questionId) {
const { questionOptionContentList, optionSort, isCorrectAnswer, id } = optionItem;
const textContent = _.filter(questionOptionContentList, (item) => {
return item.type === 'RICH_TEXT';
});
const mediaContent = _.filter(questionOptionContentList, (item) => {
return item.type !== 'RICH_TEXT';
});
let content = textContent.length > 0 ? textContent[0].content : '';
let textDom = (
<span
key={0}
className='text-dom'
dangerouslySetInnerHTML={{
__html: content,
}}
/>
);
const userAnswerItem = _.filter(userAnswerList, (item) => {
return item.questionId === questionId;
});
let userAnswer = [];
if (userAnswerItem.length > 0) {
if (userAnswerItem[0].answer) {
userAnswer = userAnswerItem[0].answer;
}
}
let optionStatus = '';
if (userAnswer.includes(id)) {
// 选中
optionStatus = 'answered';
}
let answerStatusIcon = 'default';
if (isCorrectAnswer) {
answerStatusIcon = 'https://image.xiaomaiketang.com/xm/FwZa2Kaypc.png';
} else if (userAnswer.includes(id)) {
answerStatusIcon = 'https://image.xiaomaiketang.com/xm/7tRHDf6ysA.png';
} else {
answerStatusIcon = 'default';
}
return (
<div className='option-line__item'>
<div className={`text ${optionStatus}`}>
<div className='option-sort'>{NUM_TO_WORD_MAP[optionSort]}</div>
<div className='option-content'>
<div className='text-dom'>{textDom}</div>
{mediaContent.length > 0 && renderMediaContent(mediaContent)}
</div>
</div>
{answerStatusIcon !== 'default' && <img className='icon' src={answerStatusIcon} />}
</div>
);
}
// 渲染答案对比
function renderAnswerCompare(questionId, questionType, optionList, gapFillingAnswerList) {
const userAnswerItem = _.filter(userAnswerList, (item) => {
return item.questionId === questionId;
});
const userAnswer = userAnswerItem.length > 0 && userAnswerItem[0].answer;
if (questionType === 'GAP_FILLING') {
return (
<div className='answer-compare-box'>
<div className='answer-info' style={{ marginBottom: '0.16rem' }}>
<div className='title'>考试作答是</div>
{userAnswer &&
userAnswer.map((item, index) => {
return (
<div className='content'>
<span>[填空{index + 1}]</span>
<span
dangerouslySetInnerHTML={{
__html: item === '@X#$' ? '' : item,
}}
/>
<span>;</span>
</div>
);
})}
</div>
<div className='answer-info'>
<div className='title'>正确答案是</div>
{gapFillingAnswerList.map((item, index) => {
return (
<div className='content' style={{ color: '#20CECD' }}>
<span>[填空{index + 1}]</span>
{_.map(item.correctAnswerList, (childItem, childIndex) => {
return (
<span
dangerouslySetInnerHTML={{
__html: childItem,
}}
/>
);
})}
<span>;</span>
</div>
);
})}
</div>
</div>
);
} else {
// 正确答案序号
const rightOptionSort = _.filter(optionList, (item) => {
return item.isCorrectAnswer === 1;
}).map((sortItem) => {
return sortItem.optionSort;
});
const userAnswerSort = _.filter(optionList, (item) => {
if (userAnswer) {
return userAnswer.includes(item.id);
}
}).map((sortItem) => {
return sortItem.optionSort;
});
return (
<div className='answer-compare-box'>
<div className='answer-info'>
<div className='title'>考试作答是</div>
<div className='content'>
{userAnswerSort.map((item) => {
return <span>{NUM_TO_WORD_MAP[item]} </span>;
})}
</div>
</div>
<div className='answer-info'>
<div className='title'>正确答案是</div>
<div className='content' style={{ color: '#20CECD' }}>
{rightOptionSort.map((item) => {
return <span>{NUM_TO_WORD_MAP[item]} </span>;
})}
</div>
</div>
</div>
);
}
}
// 渲染答案解析
function renderAnswerDesc(questionAnswerDescList) {
const textContent = _.filter(questionAnswerDescList, (item) => {
return item.type === 'RICH_TEXT';
});
const mediaContent = _.filter(questionAnswerDescList, (item) => {
return item.type !== 'RICH_TEXT';
});
let content = textContent.length > 0 ? `${textContent[0].content}:` : '';
let textDom = (
<div
key={0}
className='text-dom'
dangerouslySetInnerHTML={{
__html: content,
}}
/>
);
return (
<div className='desc-line__item'>
{textDom}
{renderAnswerDescMedia(mediaContent)}
</div>
);
}
// 渲染答案解析的多媒体
function renderAnswerDescMedia(mediaContent) {
const pictureMediaList = _.filter(mediaContent, (mediaItem) => {
return mediaItem.type === 'PICTURE';
});
const voiceMediaList = _.filter(mediaContent, (mediaItem) => {
return mediaItem.type === 'VOICE';
});
const audioMediaList = _.filter(mediaContent, (mediaItem) => {
return mediaItem.type === 'AUDIO';
});
const videoMediaList = _.filter(mediaContent, (mediaItem) => {
return mediaItem.type === 'VIDEO';
});
return (
<div className='desc-media-container'>
{pictureMediaList.length > 0 && (
<div className='desc-picture-box'>
{_.map(pictureMediaList, (pictureItem, pictureIndex) => {
let { content } = pictureItem;
return (
<div className='picture-box' key={pictureIndex}>
<img className='img-box' src={content} onClick={() => handleScanFile('JPG', content)} />
</div>
);
})}
</div>
)}
{audioMediaList.length > 0 && (
<div className='desc-audio-box'>
{_.map(audioMediaList, (audioItem, audioIndex) => {
let { content, size } = audioItem;
return (
<div className='audio-box' key={audioIndex}>
<XMAudio
forbidParse
url={content}
getDuration={(durationSize) => {
size = durationSize;
}}
index={audioIndex}
size={size || 1000}
/>
</div>
);
})}
</div>
)}
{voiceMediaList.length > 0 && (
<div className='desc-audio-box'>
{_.map(voiceMediaList, (voiceItem, voiceIndex) => {
let { content, size } = voiceItem;
return (
<div className='audio-box' key={voiceIndex}>
<XMAudio
forbidParse
url={content}
getDuration={(durationSize) => {
size = durationSize;
}}
index={voiceIndex}
size={size || 1000}
/>
</div>
);
})}
</div>
)}
{videoMediaList.length > 0 && (
<div className='desc-video-box'>
{_.map(videoMediaList, (videoItem, videoIndex) => {
let { content } = videoItem;
return (
<div className='video-box' key={videoIndex}>
<img className='video-box_content' src={`${content}?x-oss-process=video/snapshot,t_0,m_fast`} />
<img className='video-box_btn' src='https://image.xiaomaiketang.com/xm/r5H8cYm4ch.png' onClick={() => handleScanFile('MP4', content)} />
</div>
);
})}
</div>
)}
</div>
);
}
// 答题卡展开和收起
function handleToggleQuestionCardShow() {
setIsShowQuestionCard(!isShowQuestionCard);
}
// 快速跳转题目
function handleQuickActiveQuestion(orderIndex, answerIndex) {
setActiveOrderIndex(orderIndex);
setActiveIndex(answerIndex);
setIsShowQuestionCard(false);
}
// 只选错题
function chooseErrorAnswer() {
setOnlyError(!onlyError);
setActiveOrderIndex(!onlyError ? (errorCount > 0 ? errorQuestionList[0].orderIndex : 0) : 0);
setActiveIndex(0);
setUserAnswerList(!onlyError ? errorUserAnswerList : allUserAnswerList);
setQuestionList(!onlyError ? errorQuestionList : allQuestionList);
}
const { totalQuestionCount, userCorrectQuestion } = examDetail;
let sortedAnswerList = [];
let userAnswerMap = {};
userAnswerList.forEach((item) => {
userAnswerMap[item.questionId] = item;
});
questionList.forEach((item) => {
if (userAnswerMap[item.questionId]) {
sortedAnswerList.push({
...userAnswerMap[item.questionId],
orderIndex: item.orderIndex,
});
}
});
return (
<div className='answer-desc-page'>
<div className='center'>
<div className='box-content'>
<div className='answer-desc-header'>
<div className='desc-header-container'>
<div className='desc-title'>答案详情</div>
<div className='choose-error-box'>
<img
onClick={() => {
chooseErrorAnswer();
}}
src={onlyError ? 'https://image.xiaomaiketang.com/xm/FwZa2Kaypc.png' : 'https://image.xiaomaiketang.com/xm/crtyKFjcAm.png'}
/>
<span>只看错题</span>
</div>
</div>
</div>
</div>
<div className={`empty ${errorCount === 0 && onlyError ? '' : 'empty-hide'}`}>
<div className='img-box'>
<div id='empty-img-box'></div>
</div>
<div className='empty-text'>本次考试无错题</div>
</div>
<If condition={!(errorCount === 0 && onlyError)}>
<div className='answer-desc-content'>
<div className='question-list-box'>{handleRenderQuestionItem()}</div>
</div>
</If>
{/* {renderFooterText()} */}
</div>
{showScanFile && (
<ScanFileModal
fileType={scanFileType}
item={{
ossAddress: scanFileAddress,
}}
close={() => {
setShowScanFile(false);
}}
/>
)}
</div>
);
}
export default withRouter(AnswerDescPage);
.answer-desc-page {
background-color: #fff;
p {
margin: 0 !important;
}
.answer-desc-header {
.desc-header-container {
display: flex;
justify-content: space-between;
align-items: center;
.desc-title {
font-size: 20px;
font-weight: 500;
color: #333333;
position: relative;
margin-left: 8px;
line-height: 28px;
&::before {
position: absolute;
content: '';
left: -8px;
top: 50%;
transform: translateY(-50%);
width: 4px;
height: 16px;
background-image: linear-gradient(#2966ff 83.5%, #0acca4 16.5%);
}
}
.choose-error-box {
display: flex;
align-items: center;
img {
width: 18px;
height: 18px;
margin-right: 2px;
}
span {
font-size: 15px;
color: #999999;
}
}
}
}
.answer-desc-content {
width: 840px;
margin: 0 auto;
text-align: left;
.question-list-box {
padding: 21px 0;
.question-info-item {
margin-bottom: 20px;
.stem-line__item {
margin-bottom: 16px;
.text {
line-height: 1.8;
.answer-icon {
width: 20px;
height: 20px;
margin-right: 12px;
display: inline-block;
margin-bottom: 5px;
}
.question-index {
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
.steam-line_type {
font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
}
.text-dom {
color: #333333;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
font-size: 17px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
* {
display: inline;
}
.gap-line {
border-bottom: 1px solid;
margin: 0 8px;
padding: 0 4px;
img {
margin-left: 4px;
width: 16px;
height: 16px;
}
}
}
}
}
.option-line__item {
margin-bottom: 12px;
display: flex;
align-items: center;
.icon {
margin-left: 12px;
width: 20px;
height: 20px;
}
.text {
width: 100%;
background: #f4f6fa;
border-radius: 5px;
display: flex;
align-items: center;
padding: 16px;
.option-sort {
font-size: 15px;
line-height: 21px;
position: relative;
&::after {
position: absolute;
left: 22px;
content: '';
width: 1px;
height: 20px;
background-color: rgba(238, 238, 238, 1);
}
}
.option-content {
margin-left: 32px;
}
.text-dom {
font-size: 15px;
color: #333333;
line-height: 21px;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
}
&.answered {
background: rgba(41, 102, 255, 0.05);
border: 1px solid #2966ff;
color: #2966ff;
.text-dom {
color: #2966ff;
}
}
&.right {
background: rgba(21, 217, 177, 0.05);
border: 1px solid #15d9b1;
color: #15d9b1;
}
&.wrong {
background: rgba(255, 79, 79, 0.05);
border: 1px solid #ff4f4f;
color: #ff4f4f;
}
}
}
.desc-line__item {
margin-top: 20px;
.desc-title {
font-size: 20px;
font-weight: 500;
color: #333333;
position: relative;
margin-left: 8px;
line-height: 36px;
&::before {
position: absolute;
content: '';
left: -8px;
top: 50%;
transform: translateY(-50%);
width: 4px;
height: 16px;
background-image: linear-gradient(#2966ff 83.5%, #0acca4 16.5%);
}
}
.text-dom {
font-size: 14px;
color: #999999;
line-height: 20px;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
* {
display: inline;
}
}
}
.media-container {
.picture-box {
width: 88px;
height: 88px;
border-radius: 4px;
overflow: hidden;
align-items: center;
justify-content: center;
margin-top: 12px;
margin-right: 12px;
position: relative;
display: inline-flex;
border: 1px solid #e8e8e8;
img {
max-width: 100%;
max-height: 100%;
border-radius: 4px;
vertical-align: middle;
width: auto;
height: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
.voice-box {
width: 27px;
height: 40px;
margin-top: 12px;
margin-right: 12px;
}
}
.desc-media-container {
margin: 12px 0;
.desc-picture-box {
display: inline-flex;
margin-bottom: 12px;
.picture-box {
width: 88px;
height: 88px;
border-radius: 4px;
overflow: hidden;
align-items: center;
justify-content: center;
margin-right: 12px;
position: relative;
display: inline-flex;
border: 1px solid #e8e8e8;
.img-box {
max-width: 100%;
max-height: 100%;
border-radius: 4px;
vertical-align: middle;
width: auto;
height: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
.desc-audio-box {
margin-bottom: 12px;
.audio-box {
margin-bottom: 12px;
border-radius: 5px;
height: 40px;
}
}
.desc-video-box {
.video-box {
position: relative;
display: inline-block;
width: 208px;
height: calc(208px * 9 / 16);
position: relative;
background-color: #000;
margin: 0px 12px 12px 0;
&_content {
max-width: 100%;
max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
&_btn {
width: 32px;
height: 32px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -16px;
margin-left: -16px;
}
.icon_arrow {
position: absolute;
top: -12px;
right: -8px;
color: #bfbfbf;
cursor: pointer;
font-size: 16px;
}
}
}
}
.answer-compare-box {
margin-top: 16px;
padding-top: 12px;
padding-bottom: 12px;
font-size: 15px;
margin-bottom: 8px;
.answer-info {
margin-bottom: 8px;
.title {
color: #999999;
display: inline-block;
margin-right: 12px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 20px;
}
.content {
font-weight: 500;
color: #333333;
display: inline;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
span {
margin-right: 4px;
}
}
}
}
}
}
}
.footer-btn {
width: 100%;
height: 64px;
background: #ffffff;
position: fixed;
bottom: 0;
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid rgba(238, 238, 238, 1);
padding: 10px 16px;
.hand-in-paper {
display: flex;
.icon {
width: 15px;
line-height: 18px;
color: rgba(255, 183, 20, 1);
margin-right: 6px;
}
}
.pre-next {
width: 343px;
height: 44px;
border-radius: 5px;
border: 2px solid #eeeeee;
display: flex;
justify-content: space-between;
.pre,
.next {
width: 50%;
display: flex;
align-items: center;
justify-content: center;
.icon {
width: 17px;
line-height: 11px;
margin-left: 5px;
color: #ccc;
}
.text {
font-size: 15px;
color: #666;
line-height: 21px;
}
&.disabled {
pointer-events: none;
.text {
color: #cccccc;
}
}
}
}
}
}
.empty {
z-index: 10;
width: 100%;
height: 360px;
background-color: #fff;
.img-box {
margin: 0 auto;
width: 120px;
}
img {
height: 120px;
display: inline-block;
margin-top: 100px;
margin-bottom: 18px;
}
.empty-text {
width: 250px;
height: 18px;
font-size: 13px;
color: #333;
line-height: 18px;
margin: 0 auto;
text-align: center;
}
&.empty-hide {
position: absolute;
left: -9999px;
top: -9999px;
}
}
/*
* @Author: yuananting
* @Date: 2021-02-23 18:28:50
* @LastEditors: yuananting
* @LastEditTime: 2021-06-02 14:25:06
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-16 09:59:04
* @Description: 助学工具-课程分类
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from 'react'
import Breadcrumbs from '@/components/Breadcrumbs'
import './CourseCategoryManage.less'
import OpearteCourseCategoryModal from '../modal/OpearteCourseCategoryModal'
import AidToolService from '@/domains/aid-tool-domain/AidToolService'
import User from '@/common/js/user'
import { Tree, Input, Space, Button, Menu, Dropdown, message, Modal } from 'antd'
import ShowTips from '@/components/ShowTips'
const { DirectoryTree } = Tree
const { Search } = Input
const { confirm } = Modal
import React, { Component } from 'react';
import Breadcrumbs from '@/components/Breadcrumbs';
import './CourseCategoryManage.less';
import OpearteCourseCategoryModal from '../modal/OpearteCourseCategoryModal';
import AidToolService from '@/domains/aid-tool-domain/AidToolService';
import User from '@/common/js/user';
import { Tree, Input, Space, Button, Menu, Dropdown, message, Modal } from 'antd';
import ShowTips from '@/components/ShowTips';
const { DirectoryTree } = Tree;
const { Search } = Input;
const { confirm } = Modal;
class CourseCategoryManage extends Component {
constructor(props) {
super(props)
super(props);
this.state = {
operateCourseCategoryModal: null, //新增或编辑分类模态框
treeData: [],
originTreeData: [],
treeMap: {},
selectedKeys: ['null'],
autoExpandParent: true
}
autoExpandParent: true,
};
}
componentDidMount() {
this.queryCategoryTree('init')
this.queryCategoryTree('init');
}
getWholeTree = () => {
......@@ -40,112 +40,112 @@ class CourseCategoryManage extends Component {
count: false,
source: 0,
userId: User.getStoreUserId(),
tenantId: User.getStoreId()
}
tenantId: User.getStoreId(),
};
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result
const { categoryList = [] } = res.result;
this.setState({ originTreeData: categoryList }, () => {
let map = {}
let topItem = []
let map = {};
let topItem = [];
categoryList.forEach((item) => {
topItem.push(item)
})
topItem.push(item);
});
this.setState({
treeMap: Object.assign(this.getTreeMap(categoryList, map), {
0: {
sonCategoryList: topItem
}
})
})
})
})
}
sonCategoryList: topItem,
},
}),
});
});
});
};
// 查询分类树
queryCategoryTree = (operateType, categoryName) => {
this.getWholeTree()
this.setState({ categoryName })
this.getWholeTree();
this.setState({ categoryName });
let query = {
bizType: 'QUESTION',
count: false,
source: 0,
categoryName,
userId: User.getStoreUserId(),
tenantId: User.getStoreId()
}
tenantId: User.getStoreId(),
};
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result
let str = '未分类'
const { categoryList = [] } = res.result;
let str = '未分类';
if (categoryName) {
this.setState({ autoExpandParent: true })
this.setState({ autoExpandParent: true });
if (str.indexOf(categoryName) < 0) {
this.setState({
treeData: this.renderTreeNodes(categoryList, categoryName)
})
let nodeId = []
treeData: this.renderTreeNodes(categoryList, categoryName),
});
let nodeId = [];
Object.keys(this.state.treeMap).forEach((item) => {
nodeId.push(item)
})
this.setState({ expandedKeys: nodeId })
nodeId.push(item);
});
this.setState({ expandedKeys: nodeId });
} else {
const defaultNode = {
id: 'null',
categoryName: '未分类',
categoryCount: 0,
parentId: '0',
categoryLevel: 0
}
categoryList.unshift(defaultNode)
categoryLevel: 0,
};
categoryList.unshift(defaultNode);
this.setState({
treeData: this.renderTreeNodes(categoryList, categoryName)
})
let nodeId = []
treeData: this.renderTreeNodes(categoryList, categoryName),
});
let nodeId = [];
Object.keys(this.state.treeMap).forEach((item) => {
nodeId.push(item)
})
nodeId.push(item);
});
if (operateType === 'init') {
this.setState({ expandedKeys: nodeId })
this.setState({ expandedKeys: nodeId });
}
}
} else {
this.setState({ autoExpandParent: false })
this.setState({ autoExpandParent: false });
const defaultNode = {
id: 'null',
categoryName: '未分类',
categoryCount: 0,
parentId: '0',
categoryLevel: 0
}
categoryList.unshift(defaultNode)
this.setState({ treeData: this.renderTreeNodes(categoryList, categoryName) })
categoryLevel: 0,
};
categoryList.unshift(defaultNode);
this.setState({ treeData: this.renderTreeNodes(categoryList, categoryName) });
if (operateType === 'init') {
this.setState({ expandedKeys: [] })
this.setState({ expandedKeys: [] });
}
}
})
}
});
};
// 树节点渲染-内容处理
renderTreeNodes = (data, value) => {
let newTreeData = data.map((item) => {
item.title = item.categoryName
item.key = item.id
item.title = item.categoryName;
item.key = item.id;
item.title = (
<div
style={{
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
className='node-title-div'
onMouseOver={(e) => {
let mouseNodeOpts = e.currentTarget.getElementsByTagName('div')[0]
let mouseNodeOpts = e.currentTarget.getElementsByTagName('div')[0];
if (mouseNodeOpts) {
mouseNodeOpts.style.visibility = 'visible'
mouseNodeOpts.style.visibility = 'visible';
}
}}
onMouseOut={(e) => {
let mouseNodeOpts = e.currentTarget.getElementsByTagName('div')[0]
let mouseNodeOpts = e.currentTarget.getElementsByTagName('div')[0];
if (mouseNodeOpts) {
mouseNodeOpts.style.visibility = 'hidden'
mouseNodeOpts.style.visibility = 'hidden';
}
}}>
<span>{item.categoryName}</span>
......@@ -158,9 +158,9 @@ class CourseCategoryManage extends Component {
(item.categoryLevel === 0 && originTreeData.length >= 29) ||
(item.categoryLevel > 0 && this.getRelatedNodes(item.parentId).length >= 30)
) {
return message.info('最多只能添加30个分类')
return message.info('最多只能添加30个分类');
}
this.newEditCourseCategory('newEqualLevelCategory', 'equal', 'new', item)
this.newEditCourseCategory('newEqualLevelCategory', 'equal', 'new', item);
}}>
<span className='icon iconfont' style={{ color: '#BFBFBF' }}>
&#xe7f5;{' '}
......@@ -171,10 +171,10 @@ class CourseCategoryManage extends Component {
<span
onClick={() => {
if (this.getRelatedNodes(item.id) && this.getRelatedNodes(item.id).length >= 30) {
message.info('最多只能添加30个子分类')
return
message.info('最多只能添加30个子分类');
return;
}
this.newEditCourseCategory('newChildLevelCategory', 'child', 'new', item)
this.newEditCourseCategory('newChildLevelCategory', 'child', 'new', item);
}}>
<span className='icon iconfont' style={{ color: '#BFBFBF' }}>
&#xe7f8;{' '}
......@@ -193,14 +193,14 @@ class CourseCategoryManage extends Component {
</Space>
)}
</div>
)
);
item.icon =
item.categoryName === '未分类' ? (
<img
style={{
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src='https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=''
......@@ -210,54 +210,54 @@ class CourseCategoryManage extends Component {
style={{
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src='https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=''
/>
)
);
if (item.sonCategoryList) {
item.children = this.renderTreeNodes(item.sonCategoryList, value)
}
return item
})
return newTreeData
item.children = this.renderTreeNodes(item.sonCategoryList, value);
}
return item;
});
return newTreeData;
};
// 树结构平铺
getTreeMap = (data, map) => {
data.forEach((item) => {
map[item.id] = item
map[item.id] = item;
if (item.sonCategoryList && item.sonCategoryList.length > 0) {
this.getTreeMap(item.sonCategoryList, map)
this.getTreeMap(item.sonCategoryList, map);
}
})
});
return map
}
return map;
};
// 新增或编辑分类
newEditCourseCategory = (categoryType, addLevelType, type, node) => {
let title = ''
let label = ''
let title = '';
let label = '';
switch (categoryType) {
case 'newEqualLevelCategory':
title = '新增分类'
label = '分类名称'
break
title = '新增分类';
label = '分类名称';
break;
case 'newChildLevelCategory':
title = '新增子分类'
label = '子分类名称'
break
title = '新增子分类';
label = '子分类名称';
break;
case 'editEqualLevelCategory':
title = '编辑分类'
label = '分类名称'
break
title = '编辑分类';
label = '分类名称';
break;
case 'editChildLevelCategory':
title = '编辑子分类'
label = '子分类名称'
break
title = '编辑子分类';
label = '子分类名称';
break;
}
const m = (
<OpearteCourseCategoryModal
......@@ -267,15 +267,15 @@ class CourseCategoryManage extends Component {
title={title}
label={label}
close={() => {
this.queryCategoryTree('remain', this.state.categoryName)
this.queryCategoryTree('remain', this.state.categoryName);
this.setState({
operateCourseCategoryModal: null
})
operateCourseCategoryModal: null,
});
}}
/>
)
this.setState({ operateCourseCategoryModal: m })
}
);
this.setState({ operateCourseCategoryModal: m });
};
// 删除分类
delCategory = (item) => {
......@@ -291,17 +291,17 @@ class CourseCategoryManage extends Component {
categoryId: item.id,
source: 0,
tenantId: User.getStoreId(),
userId: User.getStoreUserId()
}
userId: User.getStoreUserId(),
};
AidToolService.delCategory(params).then((res) => {
if (res.success) {
message.success('删除分类成功')
this.queryCategoryTree('remain', this.state.categoryName)
}
})
}
})
message.success('删除分类成功');
this.queryCategoryTree('remain', this.state.categoryName);
}
});
},
});
};
// 更多操作-【重命名 删除】
initDropMenu = (item) => {
......@@ -310,8 +310,8 @@ class CourseCategoryManage extends Component {
<Menu.Item key='0'>
<span
onClick={() => {
let categoryType = item.categoryLevel === 0 ? 'editEqualLevelCategory' : 'editChildLevelCategory'
this.newEditCourseCategory(categoryType, 'equal', 'edit', item)
let categoryType = item.categoryLevel === 0 ? 'editEqualLevelCategory' : 'editChildLevelCategory';
this.newEditCourseCategory(categoryType, 'equal', 'edit', item);
}}>
重命名
</span>
......@@ -319,49 +319,47 @@ class CourseCategoryManage extends Component {
<Menu.Item key='1'>
<span
onClick={() => {
this.delCategory(item)
this.delCategory(item);
}}>
删除
</span>
</Menu.Item>
</Menu>
)
}
);
};
// 获取相关节点
getRelatedNodes = (parentId) => {
return this.state.treeMap[parentId] ? this.state.treeMap[parentId].sonCategoryList : []
}
return this.state.treeMap[parentId] ? this.state.treeMap[parentId].sonCategoryList : [];
};
// 获取拖拽目标父节点层级
getParentDragNodesLevel = (dragNode) => {
if (!dragNode) {
return []
return [];
}
let dragNodes = []
dragNodes.push(dragNode.id)
let dragNodes = [];
dragNodes.push(dragNode.id);
if (dragNode.parentId !== "0") {
dragNodes = dragNodes.concat(
this.getParentDragNodesLevel(this.state.treeMap[dragNode.parentId])
);
}
return dragNodes
if (dragNode.parentId !== '0') {
dragNodes = dragNodes.concat(this.getParentDragNodesLevel(this.state.treeMap[dragNode.parentId]));
}
return dragNodes;
};
// 获取拖拽节点层级
getDragNodesLevel = (dragNode) => {
let dragNodes = []
let dragNodes = [];
if (dragNode.sonCategoryList && dragNode.sonCategoryList.length > 0) {
dragNode.sonCategoryList.forEach((item) => {
dragNodes.push(item.categoryLevel)
dragNodes.push(item.categoryLevel);
if (item.sonCategoryList && item.sonCategoryList.length > 0) {
dragNodes = dragNodes.concat(this.getDragNodesLevel(item))
}
})
dragNodes = dragNodes.concat(this.getDragNodesLevel(item));
}
return [...new Set(dragNodes)]
});
}
return [...new Set(dragNodes)];
};
// 拖拽
onDrop = (info) => {
......@@ -370,148 +368,172 @@ class CourseCategoryManage extends Component {
// 不允许其他节点拖拽到未分类之前
if (
this.state.categoryName ||
(info.node.categoryName === "未分类" && info.dropPosition === 0) ||
(info.node.categoryName === "未分类" &&
info.dropToGap &&
info.dropPosition === -1)
(info.node.categoryName === '未分类' && info.dropPosition === 0) ||
(info.node.categoryName === '未分类' && info.dropToGap && info.dropPosition === -1)
) {
return;
}
// 未分类不可以拖拽
if (
info.dragNode.categoryName === "未分类" &&
info.dragNode.categoryLevel === 0
)
return message.info("“未分类”为默认分类暂不支持移动");
if (info.dragNode.categoryName === '未分类' && info.dragNode.categoryLevel === 0) return message.info('“未分类”为默认分类暂不支持移动');
let targetParentId = info.dropToGap ? info.node.parentId : info.node.id
let relatedNodes = this.getRelatedNodes(targetParentId)
let targetParentId = info.dropToGap ? info.node.parentId : info.node.id;
let relatedNodes = this.getRelatedNodes(targetParentId);
if (!((info.dropToGap && info.node.parentId === info.dragNode.parentId) || (!info.dropToGap && info.node.id === info.dragNode.parentId))) {
if (this.state.treeMap[targetParentId].categoryLevel === 4) {
return message.info('最多支持5级分类')
if (this.state.treeMap[targetParentId].categoryLevel >= 4) {
return message.info('最多支持5级分类');
} else {
let nodesArr = this.getDragNodesLevel(this.state.treeMap[info.dragNode.id])
let parentArr = this.getParentDragNodesLevel(this.state.treeMap[targetParentId])
let nodesArr = this.getDragNodesLevel(this.state.treeMap[info.dragNode.id]);
let parentArr = this.getParentDragNodesLevel(this.state.treeMap[targetParentId]);
if (nodesArr.length + parentArr.length > 4) {
return message.info("最多支持5级分类");
return message.info('最多支持5级分类');
}
}
if (relatedNodes && relatedNodes.length >= 30) {
return message.info('最多只能添加30个分类')
return message.info('最多只能添加30个分类');
}
}
const dropKey = info.node.key
const dragKey = info.dragNode.key
const dropPos = info.node.pos.split('-')
const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1])
const dropKey = info.node.key;
const dragKey = info.dragNode.key;
const dropPos = info.node.pos.split('-');
const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
const loop = (data, key, callback) => {
for (let i = 0; i < data.length; i++) {
if (data[i].key === key) {
return callback(data[i], i, data)
return callback(data[i], i, data);
}
if (data[i].sonCategoryList) {
loop(data[i].sonCategoryList, key, callback)
loop(data[i].sonCategoryList, key, callback);
}
}
}
const data = [...this.state.treeData]
};
const data = [...this.state.treeData];
let getSuf = function (name, originCategoryName, sufIndex) {
if (relatedNodes && relatedNodes.length > 0) {
let sameNameNodes = []
let sameNameNodes = [];
relatedNodes.forEach((item) => {
if (item.id === info.dragNode.id) return true
if (item.id === info.dragNode.id) return true;
if (item.categoryName === name) {
sameNameNodes.push(item)
sameNameNodes.push(item);
}
})
});
if (sameNameNodes.length > 0) {
sufIndex++
return getSuf(originCategoryName + `(${sufIndex})`, originCategoryName, sufIndex)
}
sufIndex++;
return getSuf(originCategoryName + `(${sufIndex})`, originCategoryName, sufIndex);
}
return sufIndex
}
return sufIndex;
};
let dragObj
let dragObj;
loop(data, dragKey, (item, index, arr) => {
arr.splice(index, 1)
item.parentId = targetParentId
arr.splice(index, 1);
item.parentId = targetParentId;
if (item.originCategoryName) {
item.categoryName = item.originCategoryName
item.categoryName = item.originCategoryName;
} else {
item.originCategoryName = item.categoryName
}
info.dragNode.categoryName = item.originCategoryName
let sufIndex = getSuf(info.dragNode.categoryName, item.originCategoryName, 0)
item.categoryName = item.categoryName + (sufIndex ? `(${sufIndex})` : '')
item.categoryName = item.originCategoryName + (sufIndex ? `(${sufIndex})` : '')
dragObj = item
})
item.originCategoryName = item.categoryName;
}
info.dragNode.categoryName = item.originCategoryName;
let sufIndex = getSuf(info.dragNode.categoryName, item.originCategoryName, 0);
item.categoryName = item.categoryName + (sufIndex ? `(${sufIndex})` : '');
item.categoryName = item.originCategoryName + (sufIndex ? `(${sufIndex})` : '');
dragObj = item;
});
if (!info.dropToGap) {
loop(data, dropKey, (item) => {
item.sonCategoryList = item.sonCategoryList || []
item.sonCategoryList.unshift(dragObj)
})
item.sonCategoryList = item.sonCategoryList || [];
item.sonCategoryList.unshift(dragObj);
});
} else if ((info.node.props.sonCategoryList || []).length > 0 && info.node.props.expanded && dropPosition === 1) {
loop(data, dropKey, (item) => {
item.sonCategoryList = item.children || []
item.sonCategoryList.unshift(dragObj)
})
item.sonCategoryList = item.children || [];
item.sonCategoryList.unshift(dragObj);
});
} else {
let ar
let i
let ar;
let i;
loop(data, dropKey, (item, index, arr) => {
ar = arr
i = index
})
ar = arr;
i = index;
});
if (dropPosition === -1) {
ar.splice(i, 0, dragObj)
ar.splice(i, 0, dragObj);
} else {
ar.splice(i + 1, 0, dragObj)
ar.splice(i + 1, 0, dragObj);
}
}
data.shift()
let newTreeData = this.renderTreeNodes(this.handleLoop(data, 0))
this.setState({ treeData: newTreeData })
data.shift();
let newTreeData = this.renderTreeNodes(this.handleLoop(data, 0));
this.setState({ treeData: newTreeData });
let firstParentNode = {
categoryCount: 0,
categoryLevel: 0,
categoryName: '',
id: 0,
parentId: 0,
parentName: '',
rootId: 0,
sonCategoryList: [...newTreeData],
sort: 0,
source: 0,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
let movedCategory = this.movedNodeFind(newTreeData, info.dragNode.id);
let parentCategory = movedCategory.parentId === '0' ? firstParentNode : this.movedNodeFind(newTreeData, targetParentId);
let params = {
categoryList: newTreeData,
movedCategory,
parentCategory,
source: 0,
tenantId: User.getStoreId(),
userId: User.getStoreUserId()
userId: User.getStoreUserId(),
};
AidToolService.moveCategory(params).then((res) => {
this.queryCategoryTree('remain');
});
};
// 获取移动节点信息
movedNodeFind(categoryList, movedId) {
for (const item of categoryList) {
if (item.id === movedId) return item;
if (item.sonCategoryList && item.sonCategoryList.length > 0) {
const node = this.movedNodeFind(item.sonCategoryList, movedId);
if (node) return node;
}
}
AidToolService.editCategoryTree(params).then((res) => {
this.queryCategoryTree('remain')
})
return null;
}
handleLoop = (data, level) => {
data.map((item, index) => {
item.sort = index
item.categoryLevel = level
item.sort = index;
item.categoryLevel = level;
if (item.sonCategoryList) {
item.children = this.handleLoop(item.sonCategoryList, level + 1)
item.sonCategoryList = this.handleLoop(item.sonCategoryList, level + 1)
}
return item
})
return data
item.children = this.handleLoop(item.sonCategoryList, level + 1);
item.sonCategoryList = this.handleLoop(item.sonCategoryList, level + 1);
}
return item;
});
return data;
};
// 树状展开事件
onExpand = (expandedKeys) => {
this.setState({ expandedKeys })
}
this.setState({ expandedKeys });
};
// 树状选中事件
onSelect = (selectedKeys) => {
this.setState({ selectedKeys })
}
this.setState({ selectedKeys });
};
render() {
const { treeData, originTreeData, expandedKeys, selectedKeys, autoExpandParent, operateCourseCategoryModal } = this.state
const { treeData, originTreeData, expandedKeys, selectedKeys, autoExpandParent, operateCourseCategoryModal } = this.state;
return (
<div className='page course-category-manage'>
{['aid', 'knowledge'].includes(getParameterByName('from')) ? (
......@@ -534,10 +556,10 @@ class CourseCategoryManage extends Component {
type='primary'
onClick={() => {
if (originTreeData.length >= 29) {
message.info('最多只能添加30个分类')
return
message.info('最多只能添加30个分类');
return;
}
this.newEditCourseCategory('newEqualLevelCategory', 'equal', 'new')
this.newEditCourseCategory('newEqualLevelCategory', 'equal', 'new');
}}>
新增一级分类
</Button>
......@@ -559,8 +581,8 @@ class CourseCategoryManage extends Component {
</div>
{operateCourseCategoryModal}
</div>
)
);
}
}
export default CourseCategoryManage
export default CourseCategoryManage;
/*
* @Author: yuananting
* @Date: 2021-02-22 10:59:43
* @LastEditors: yuananting
* @LastEditTime: 2021-04-13 13:55:37
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-06-15 11:20:48
* @Description: 助学工具-侧边课程分类树
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import { Input, Button, Tree } from "antd";
import "./CourseCategorySiderTree.less";
import User from "@/common/js/user";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import Bus from "@/core/bus";
import React, { Component } from 'react';
import { Input, Button, Tree } from 'antd';
import './CourseCategorySiderTree.less';
import User from '@/common/js/user';
import AidToolService from '@/domains/aid-tool-domain/AidToolService';
import Bus from '@/core/bus';
const { Search } = Input;
const { DirectoryTree } = Tree;
......@@ -20,31 +20,25 @@ class CourseCategorySiderTree extends Component {
constructor(props) {
super(props);
this.state = {
selectedKeys: ["QUESTION_INDEX", "PAPER_INDEX"].includes(props.fromModule)
? [getParameterByName("categoryId") || "null"]
: ["null"],
selectedKeys: ['QUESTION_INDEX', 'PAPER_INDEX'].includes(props.fromModule) ? [getParameterByName('categoryId') || 'null'] : ['null'],
treeData: props.treeData || [],
autoExpandParent: false,
};
}
componentDidMount() {
this.queryCategoryTree("init");
Bus.bind("queryCategoryTree", this.queryCategoryTree);
this.queryCategoryTree('init');
Bus.bind('queryCategoryTree', this.queryCategoryTree);
}
componentWillUnmount() {
Bus.unbind("queryCategoryTree", this.queryCategoryTree);
Bus.unbind('queryCategoryTree', this.queryCategoryTree);
}
// 查询分类树
queryCategoryTree = (type = "init", categoryName) => {
queryCategoryTree = (type = 'init', categoryName) => {
let query = {
bizType: ["QUESTION_INDEX", "QUESTION_MODAL"].includes(
this.props.fromModule
)
? "QUESTION"
: "PAPER",
bizType: ['QUESTION_INDEX', 'QUESTION_MODAL'].includes(this.props.fromModule) ? 'QUESTION' : 'PAPER',
categoryName,
count: true,
source: 0,
......@@ -53,7 +47,7 @@ class CourseCategorySiderTree extends Component {
};
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [], noCategoryCnt = 0 } = res.result;
let str = "未分类";
let str = '未分类';
if (categoryName) {
this.setState({ autoExpandParent: true });
if (str.indexOf(categoryName) < 0) {
......@@ -64,15 +58,15 @@ class CourseCategorySiderTree extends Component {
Object.keys(this.state.treeMap).forEach((item) => {
nodeId.push(item);
});
if (type === "init") {
if (type === 'init') {
this.setState({ expandedKeys: nodeId });
}
} else {
const defaultNode = {
id: "null",
categoryName: "未分类",
id: 'null',
categoryName: '未分类',
categoryCount: noCategoryCnt,
parentId: "0",
parentId: '0',
categoryLevel: 0,
};
categoryList.unshift(defaultNode);
......@@ -83,24 +77,24 @@ class CourseCategorySiderTree extends Component {
Object.keys(this.state.treeMap).forEach((item) => {
nodeId.push(item);
});
if (type === "init") {
if (type === 'init') {
this.setState({ expandedKeys: nodeId });
}
}
} else {
this.setState({ autoExpandParent: false });
const defaultNode = {
id: "null",
categoryName: "未分类",
id: 'null',
categoryName: '未分类',
categoryCount: noCategoryCnt,
parentId: "0",
parentId: '0',
categoryLevel: 0,
};
categoryList.unshift(defaultNode);
this.setState({
treeData: this.renderTreeNodes(categoryList, categoryName),
});
if (type === "init") {
if (type === 'init') {
this.setState({ expandedKeys: [] });
}
}
......@@ -126,12 +120,12 @@ class CourseCategorySiderTree extends Component {
// 树状选中事件
onSelect = (selectedKeys) => {
this.setState({ selectedKeys }, () => {
if (this.props.fromModule === "QUESTION_INDEX") {
Bus.trigger("queryQuestionPageList", selectedKeys[0]);
} else if (this.props.fromModule === "QUESTION_MODAL") {
Bus.trigger("queryQuestionPageListWithContent", selectedKeys[0]);
if (this.props.fromModule === 'QUESTION_INDEX') {
Bus.trigger('queryQuestionPageList', selectedKeys[0]);
} else if (this.props.fromModule === 'QUESTION_MODAL') {
Bus.trigger('queryQuestionPageListWithContent', selectedKeys[0]);
} else {
Bus.trigger("queryPaperPageList", selectedKeys[0], 0);
Bus.trigger('queryPaperPageList', selectedKeys[0], 0);
}
});
};
......@@ -144,39 +138,35 @@ class CourseCategorySiderTree extends Component {
item.title =
!value || (value && item.categoryName.indexOf(value) > -1) ? (
<span>
{item.categoryName}({item.categoryCount})
{item.categoryName}
{item.categoryCount > 0 && <span>({item.categoryCount})</span>}
</span>
) : (
<span style={{ opacity: 0.5 }}>
{item.categoryName}({item.categoryCount})
{item.categoryName}
{item.categoryCount > 0 && <span>({item.categoryCount})</span>}
</span>
);
item.icon =
item.categoryName === "未分类" ? (
item.categoryName === '未分类' ? (
<img
style={{
width: "24px",
height: "24px",
opacity:
!value || (value && item.categoryName.indexOf(value) > -1)
? 1
: 0.5,
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src="https://image.xiaomaiketang.com/xm/defaultCategory.png"
alt=""
src='https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=''
/>
) : (
<img
style={{
width: "24px",
height: "24px",
opacity:
!value || (value && item.categoryName.indexOf(value) > -1)
? 1
: 0.5,
width: '24px',
height: '24px',
opacity: !value || (value && item.categoryName.indexOf(value) > -1) ? 1 : 0.5,
}}
src="https://image.xiaomaiketang.com/xm/hasCategory.png"
alt=""
src='https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=''
/>
);
if (item.sonCategoryList) {
......@@ -190,46 +180,34 @@ class CourseCategorySiderTree extends Component {
};
render() {
const {
treeData,
expandedKeys,
selectedKeys,
autoExpandParent,
} = this.state;
const { treeData, expandedKeys, selectedKeys, autoExpandParent } = this.state;
return (
<div className="category-tree-sider">
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) && (
<div className="sider-title">
{this.props.fromModule === "QUESTION_INDEX"
? "题目分类"
: "试卷分类"}
</div>
<div className='category-tree-sider'>
{['QUESTION_INDEX', 'PAPER_INDEX'].includes(this.props.fromModule) && (
<div className='sider-title'>{this.props.fromModule === 'QUESTION_INDEX' ? '题目分类' : '试卷分类'}</div>
)}
<Search
className="sider-search"
placeholder="搜索名称分类"
className='sider-search'
placeholder='搜索名称分类'
onSearch={(value) => {
this.queryCategoryTree("init", value);
this.queryCategoryTree('init', value);
}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
enterButton={<span className='icon iconfont'>&#xe832;</span>}
/>
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) &&
User.getUserRole() !== "CloudLecturer" &&
this.props.type !== "modal-select" && (
<div className="sider-btn">
{['QUESTION_INDEX', 'PAPER_INDEX'].includes(this.props.fromModule) && User.getUserRole() !== 'CloudLecturer' && this.props.type !== 'modal-select' && (
<div className='sider-btn'>
<Button
onClick={() => {
window.RCHistory.push({
pathname: "/course-category-manage?from=aid",
pathname: '/course-category-manage?from=aid',
});
}}
>
}}>
分类管理
</Button>
</div>
)}
<div className="sider-tree">
<div className='sider-tree'>
<DirectoryTree
expandedKeys={expandedKeys}
autoExpandParent={autoExpandParent}
......
......@@ -5,9 +5,9 @@
* @Last Modified time: 2020-04-18 10:54:32
*/
import React, { useState, useEffect, useRef } from "react";
import "./XMAudio.less";
import VideoUpload from "@/core/upload";
import React, { useState, useEffect, useRef } from 'react';
import './XMAudio.less';
import VideoUpload from '@/core/upload';
let timerInterval;
......@@ -22,7 +22,7 @@ const XMAudio = (props) => {
const [totalTime, setTotalTime] = useState(Math.round(Number(size)));
const prevTimeRef = useRef();
useEffect(() => {
if(!props.forbidParse){
if (!props.forbidParse) {
VideoUpload.getVideoParseRoute(props.url).then((newUrl) => {
setUrl(newUrl);
});
......@@ -30,7 +30,7 @@ const XMAudio = (props) => {
setLeftTime(Math.round(Number(size)));
setTotalTime(Math.round(Number(size)));
ref.current.addEventListener("pause", () => {
ref.current.addEventListener('pause', () => {
clearInterval(timer);
setPlaying(false);
setTimer(null);
......@@ -42,7 +42,6 @@ const XMAudio = (props) => {
}, [props.url]);
useEffect(() => {
if (playing) {
timerInterval = setInterval(() => {
setPlayedTime((preTime) => {
......@@ -53,18 +52,18 @@ const XMAudio = (props) => {
if ((prevTimeRef.current + 20) % 1000 === 0) {
setLeftTime(totalTime - (prevTimeRef.current + 20));
}
if ((prevTimeRef.current + 30) >= totalTime) {
if (prevTimeRef.current + 30 >= totalTime) {
clearInterval(timerInterval);
setPlayedTime(0);
setLeftTime(totalTime);
setPlaying(false);
}
}, 20);
const audioDomList = document.querySelectorAll("audio");
const audioDomList = document.querySelectorAll('audio');
for (let i = 0; i < Array.from(audioDomList).length; i++) {
if (audioDomList[i] === ref.current) {
ref.current.play();
setTimer(timerInterval)
setTimer(timerInterval);
} else {
audioDomList[i].pause();
}
......@@ -75,9 +74,7 @@ const XMAudio = (props) => {
}
}, [playing]);
const audioImg = `https://xiaomai-image.oss-cn-hangzhou.aliyuncs.com/${
playing ? 1584514990496 : 1584514999661
}.png`;
const audioImg = `https://xiaomai-image.oss-cn-hangzhou.aliyuncs.com/${playing ? 1584514990496 : 1584514999661}.png`;
function _togglePlay() {
playing ? pausePlay() : startPlay();
......@@ -112,78 +109,74 @@ const XMAudio = (props) => {
}
}
function _startTime() {
let time = Math.floor(playedTime / 1000);
let second = 0
let second = 0;
let minute = 0;
let result = 0
let result = 0;
if (time > 0) {
minute = Math.floor(time % 3600 / 60);
minute = Math.floor((time % 3600) / 60);
second = Math.floor((time - 60 * minute) % 60);
if (minute < 10) {
minute = "0" + minute;
minute = '0' + minute;
}
if (second < 10) {
second = "0" + second;
second = '0' + second;
}
result = minute + ':' + second
}else{
result = "00:00"
result = minute + ':' + second;
} else {
result = '00:00';
}
return result;
}
function _endTime() {
let time = Math.floor(totalTime / 1000);
let second = 0
let second = 0;
let minute = 0;
let result = 0
let result = 0;
if (time > 0) {
minute = Math.floor(time % 3600 / 60);
minute = Math.floor((time % 3600) / 60);
second = Math.floor((time - 60 * minute) % 60);
if (minute < 10) {
minute = "0" + minute;
minute = '0' + minute;
}
if (second < 10) {
second = "0" + second;
second = '0' + second;
}
result = minute + ':' + second
result = minute + ':' + second;
}
if(time === 0){
result = "00:00"
if (time === 0) {
result = '00:00';
}
return result;
}
function putDownFlag(event) {
let dragDiv = event.target;
dragDiv.style.cursor = "pointer";
dragDiv.style.cursor = 'pointer';
let offsetX = parseInt(dragDiv.style.left); // 获取当前的x轴距离
let innerX = event.clientX - offsetX; // 获取鼠标在方块内的x轴距
// 按住鼠标时为div修改样式
dragDiv.style.width = "16px";
dragDiv.style.height = "16px";
dragDiv.style.top = "-7px";
dragDiv.style.backGround = "linear-gradient(180deg, #FFB467 0%, #FF9143 100%)"
dragDiv.style.width = '16px';
dragDiv.style.height = '16px';
dragDiv.style.top = '-7px';
dragDiv.style.backGround = 'linear-gradient(180deg, #FFB467 0%, #FF9143 100%)';
// 鼠标移动的时候不停的修改div的left和top值
document.onmousemove = function (event) {
dragDiv.style.left = event.clientX - innerX + "px";
dragDiv.style.left = event.clientX - innerX + 'px';
// 边界判断
if (parseInt(dragDiv.style.left) <= 0) {
dragDiv.style.left = "0px";
dragDiv.style.left = '0px';
}
if (parseInt(dragDiv.style.left) >= 154) {
dragDiv.style.left = "149px";
}
setPlayedTime(parseInt(dragDiv.style.left) / 150 * totalTime)
dragDiv.style.left = '149px';
}
setPlayedTime((parseInt(dragDiv.style.left) / 150) * totalTime);
};
// 鼠标抬起时,清除绑定在文档上的mousemove和mouseup事件
// 否则鼠标抬起后还可以继续拖拽方块
document.onmouseup = function () {
......@@ -191,50 +184,43 @@ const XMAudio = (props) => {
document.onmouseup = null;
// 清除border
dragDiv.style.top = "-4px";
dragDiv.style.width = "10px";
dragDiv.style.height = "10px";
}
dragDiv.style.top = '-4px';
dragDiv.style.width = '10px';
dragDiv.style.height = '10px';
};
}
function mouseOver(event){
function mouseOver(event) {
let dragDiv = event.target;
dragDiv.style.cursor = "pointer";
dragDiv.style.width = "16px";
dragDiv.style.height = "16px";
dragDiv.style.top = "-7px";
dragDiv.style.backGround = "linear-gradient(180deg, #FFB467 0%, #FF9143 100%)"
dragDiv.style.cursor = 'pointer';
dragDiv.style.width = '16px';
dragDiv.style.height = '16px';
dragDiv.style.top = '-7px';
dragDiv.style.backGround = 'linear-gradient(180deg, #FFB467 0%, #FF9143 100%)';
}
function mouseLeave (event){
function mouseLeave(event) {
let dragDiv = event.target;
dragDiv.style.top = "-4px";
dragDiv.style.width = "10px";
dragDiv.style.height = "10px";
dragDiv.style.top = '-4px';
dragDiv.style.width = '10px';
dragDiv.style.height = '10px';
ref.current.currentTime = playedTime / 1000;
}
return (
<div className="xm-audio" style={style}>
<img src={audioImg} onClick={_togglePlay} className="audio-image" />
<div className="process-area">
<div className='xm-audio' style={style}>
<img src={audioImg} onClick={_togglePlay} className='audio-image' />
<div className='process-area'>
<div className='complete-area' style={{ width: `${(playedTime / totalTime) * 150}px ` }} />
<div
className="complete-area"
style={{ width: `${(playedTime / totalTime) * 150}px ` }}
/>
<div
className="flag"
className='flag'
style={{ left: `${(playedTime / totalTime) * 150}px ` }}
onMouseDown={(e) => putDownFlag(e)}
onMouseOver={(e)=> mouseOver(e)}
onMouseLeave={(e)=>mouseLeave(e)}
onMouseOver={(e) => mouseOver(e)}
onMouseLeave={(e) => mouseLeave(e)}
/>
</div>
<span className="sec-time">
<span className='sec-time'>
{`${_startTime()}`}/{`${_endTime()}`}
</span>
<audio
src={url}
ref={ref}
autoPlay={false}
onCanPlayThrough={_getDuration}
/>
<audio src={url} ref={ref} autoPlay={false} onCanPlayThrough={_getDuration} />
</div>
);
};
......
......@@ -5,10 +5,11 @@
* @Last Modified time: 2020-03-24 10:18:43
*/
.xm-audio {
.xm-audio {
display: flex;
align-items: center;
width: 280px;
padding: 10px 20px;
border-radius: 5px;
background-color: #ffffff;
.audio-image {
......@@ -24,11 +25,11 @@
cursor: pointer;
}
.play-icon {
color: #FC8540;
color: #fc8540;
}
.sec-time{
.sec-time {
white-space: nowrap;
color: #FF8534;
color: #ff8534;
margin-left: 12px;
font-size: 13px;
}
......@@ -38,11 +39,11 @@
border-radius: 3px;
margin-left: 12px;
position: relative;
background:rgba(255,133,52,0.2);
background: rgba(255, 133, 52, 0.2);
.complete-area {
height: 100%;
background-color: #FF8534;
background-color: #ff8534;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
......@@ -52,7 +53,7 @@
width: 10px;
height: 10px;
border-radius: 50%;
background:linear-gradient(180deg,rgba(255,180,103,1) 0%,rgba(255,145,67,1) 100%);
background: linear-gradient(180deg, rgba(255, 180, 103, 1) 0%, rgba(255, 145, 67, 1) 100%);
}
}
}
import React from 'react';
import { Modal, Button, message } from 'antd';
import { Modal, message } from 'antd';
import html2canvas from 'html2canvas';
import User from "../../../common/js/user";
import QRCode from '../../../libs/qrcode/qrcode';
......@@ -27,7 +27,6 @@ class ExamShareModal extends React.Component {
handleConvertShortUrl = () => {
const longUrl = `${LIVE_SHARE}test_detail/${this.props.data.examId}?id=${User.getStoreId()}`
console.log(longUrl)
// 发请求
Service.Sales('public/businessShow/convertShortUrls', {
urls: [longUrl]
......
import React, { useState, useRef, useEffect, useContext } from 'react'
import React, { useState, useRef, useEffect, useContext } from 'react';
import { Input, Select, DatePicker, Tooltip, Button, Table, Dropdown, Menu, Modal } from 'antd';
import Lottie from 'react-lottie';
import TeacherSelect from '@/modules/common/TeacherSelect';
import { Route, withRouter } from 'react-router-dom';
import Service from "@/common/js/service";
import Service from '@/common/js/service';
import moment from 'moment';
import { PageControl, XMTable } from "@/components";
import { PageControl, XMTable } from '@/components';
import AddExam from './AddExam';
import User from "@/common/js/user";
import { XMContext } from "@/store/context";
import ExamShareModal from './ExamShareModal'
import DataAnalysic from './DataAnalysic'
import PreviewModal from './PreviewModal'
import * as nodata from '../../lottie/nodata/data.json';
import './index.less'
import User from '@/common/js/user';
import { XMContext } from '@/store/context';
import ExamShareModal from './ExamShareModal';
import DataAnalysic from './DataAnalysic';
import PreviewModal from './PreviewModal';
import './index.less';
const { RangePicker } = DatePicker;
const { Search } = Input;
const { Option } = Select;
interface sortType {
type: "ascend" | "descend" | null | undefined
type: 'ascend' | 'descend' | null | undefined;
}
interface fixType {
left :boolean | "right" | "left" | undefined,
right: "right" | "left" ,
left: boolean | 'right' | 'left' | undefined;
right: 'right' | 'left';
}
const fixStr:fixType={
left:'left',
right:'right'
}
const fixStr: fixType = {
left: 'left',
right: 'right',
};
function ExaminationManager(props: any) {
const queryInit: any = {
examName: '',
current: 1, size: 10, order: 'EXAM_START_TIME_DESC'
}
current: 1,
size: 10,
order: 'EXAM_START_TIME_DESC',
};
const sortStatus: sortType = {
type: undefined
}
const sortEnum = {
type: undefined,
};
}
const sortEnum = {};
const { match } = props;
const sortState: any = false;
const ctx: any = useContext(XMContext);
......@@ -55,7 +53,7 @@ function ExaminationManager(props: any) {
const [field, setfield] = useState('');
const [order, setOrder] = useState(sortStatus.type);
const [modal, setModal] = useState(null);
const [questionCntSort, setQuestionCntSort] = useState(sortState)
const [questionCntSort, setQuestionCntSort] = useState(sortState);
const [openPreviewModal, setOpenPreviewModal] = useState(false);
const [info, setInfo] = useState({ examDuration: 0 });
const queryRef = useRef({});
......@@ -63,27 +61,27 @@ function ExaminationManager(props: any) {
const orderEnum = {
userCnt: {
ascend: 'USER_CNT_ASC',
descend: 'USER_CNT_DESC'
descend: 'USER_CNT_DESC',
},
passCnt: {
ascend: 'PASS_CNT_ASC',
descend: 'PASS_CNT_DESC'
descend: 'PASS_CNT_DESC',
},
examCreateTime: {
ascend: 'CREATED_ASC',
descend: 'CREATED_DESC'
}
}
descend: 'CREATED_DESC',
},
};
const columns = [
{
title: "考试",
title: '考试',
// fixed:fixStr.left,
width:320,
dataIndex: "examName",
width: 320,
dataIndex: 'examName',
render: (text: any, record: any) => {
var _text = '未开始', _color = 'rgba(255, 183, 20, 1)';
var _text = '未开始',
_color = 'rgba(255, 183, 20, 1)';
if (moment().valueOf() > record.examEndTime) {
_text = '已结束';
_color = 'rgba(153, 153, 153, 1)';
......@@ -92,102 +90,106 @@ function ExaminationManager(props: any) {
_color = 'rgba(59, 189, 170, 1)';
}
return <div style={{ width: 320 }}>
<div className='oneLineText' style={{ width: 320,color:'#333',fontWeight:'bold' }} >{text}</div>
<div> <span >{moment(record.examStartTime).format("YYYY-MM-DD HH:mm")}~{moment(record.examEndTime).format("YYYY-MM-DD HH:mm")} </span> <div className="status" style={{ border: `1px solid ${_color}`,borderRadius:2, color: _color }}>{_text}</div></div>
return (
<div style={{ width: 320 }}>
<div className='oneLineText' style={{ width: 320, color: '#333', fontWeight: 'bold' }}>
{text}
</div>
<div>
{' '}
<span>
{moment(record.examStartTime).format('YYYY-MM-DD HH:mm')}~{moment(record.examEndTime).format('YYYY-MM-DD HH:mm')}{' '}
</span>{' '}
<div className='status' style={{ border: `1px solid ${_color}`, borderRadius: 2, color: _color }}>
{_text}
</div>
</div>
<div>创建人:{record.examCreator}</div>
</div>
);
},
},
{
title: "考试时长",
dataIndex: "examDuration",
title: '考试时长',
dataIndex: 'examDuration',
render: (text: any) => <span>{(text || 0) / 60 / 1000}分钟</span>,
},
{
title: "及格分/总分",
dataIndex: "totalScore",
title: '及格分/总分',
dataIndex: 'totalScore',
render: (text: any, record: any) => <span>{`${record.passScore || 0}/${record.totalScore || 0}`}</span>,
},
{
title: "题目数量",
align:fixStr.right,
dataIndex: "questionCnt",
title: '题目数量',
align: fixStr.right,
dataIndex: 'questionCnt',
},
{
title: "参与人数",
dataIndex: "userCnt",
align:fixStr.right,
title: '参与人数',
dataIndex: 'userCnt',
align: fixStr.right,
sorter: true,
sortOrder: field === "userCnt" ? order : sortStatus.type,
sortOrder: field === 'userCnt' ? order : sortStatus.type,
},
{
title: "及格数",
dataIndex: "passCnt",
align:fixStr.right,
title: '及格数',
dataIndex: 'passCnt',
align: fixStr.right,
sorter: true,
sortOrder: field === "passCnt" ? order : sortStatus.type,
sortOrder: field === 'passCnt' ? order : sortStatus.type,
},
{
title: "创建时间",
dataIndex: "examCreateTime",
align:fixStr.right,
title: '创建时间',
dataIndex: 'examCreateTime',
align: fixStr.right,
sorter: true,
sortOrder: field === "examCreateTime" ? order : sortStatus.type,
render: (text: any, record: any) => <span>{moment(text).format("YYYY-MM-DD HH:mm")}</span>,
sortOrder: field === 'examCreateTime' ? order : sortStatus.type,
render: (text: any, record: any) => <span>{moment(text).format('YYYY-MM-DD HH:mm')}</span>,
},
{
title: "操作",
fixed:fixStr.right,
dataIndex: "operate",
title: '操作',
fixed: fixStr.right,
dataIndex: 'operate',
width: 150,
render: (text: any, record: any) => <div className="table_operate">
{
ctx.xmState?.userPermission?.SeeExamData() && [<div
key="data"
className="operate__item"
render: (text: any, record: any) => (
<div className='table_operate'>
{ctx.xmState?.userPermission?.SeeExamData() && [
<div
key='data'
className='operate__item'
onClick={() => {
props.history.push({
pathname: `${match.url}/analysic/${record.examId}`
})
}}
>
pathname: `${match.url}/analysic/${record.examId}`,
});
}}>
数据
</div>,
<span className="operate__item split" > | </span>]
}
<span className='operate__item split'> | </span>,
]}
<div
key="share"
className="operate__item"
onClick={() => { shareModal(record) }}
>
key='share'
className='operate__item'
onClick={() => {
shareModal(record);
}}>
分享
</div>
<span className="operate__item split" > | </span>
<span className='operate__item split'> | </span>
<Dropdown overlay={getOpe(record)}>
<span className='more'>更多</span>
</Dropdown>
</div>,
</div>
),
},
];
function queryExamDetail(examId: string) {
Service.Hades("public/hades/queryExamDetail", {
Service.Hades('public/hades/queryExamDetail', {
examId,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
source: 0
source: 0,
}).then((res) => {
setInfo(res.result);
setOpenPreviewModal(true);
......@@ -195,86 +197,84 @@ function ExaminationManager(props: any) {
}
function shareModal(record: any) {
const modal = <ExamShareModal
const modal = (
<ExamShareModal
data={record}
close={() => {
setModal(null)
setModal(null);
}}
/>
setModal(modal as any)
);
setModal(modal as any);
}
function getOpe(item: any) {
return <Menu>
return (
<Menu>
<Menu.Item
key="1"
key='1'
onClick={() => {
queryExamDetail(item.examId);
}}
>预览</Menu.Item>
{
ctx.xmState?.userPermission?.AddExam() && (moment().valueOf() < item.examStartTime) && <Menu.Item key="2">
}}>
预览
</Menu.Item>
{ctx.xmState?.userPermission?.AddExam() && moment().valueOf() < item.examStartTime && (
<Menu.Item key='2'>
<span
onClick={() => {
if (moment().valueOf() + 5 * 60 * 1000 > item.examStartTime) {
Modal.info({
title: '无法编辑',
content: '离考试开始时间小于5分钟,为保证答题数据的准确性,不能再进行编辑了',
})
});
} else {
props.history.push({
pathname: `${match.url}/edit/${item.examId}`
})
pathname: `${match.url}/edit/${item.examId}`,
});
}
}}
>
}}>
编辑
</span>
</Menu.Item>
}
)}
{ctx.xmState?.userPermission?.AddExam() &&
<Menu.Item key="3" onClick={() => props.history.push(`${match.url}/copy/${item.examId}`)}>复制</Menu.Item>
}
{
ctx.xmState?.userPermission?.DelExam() && ((moment().valueOf() + 30 * 60 * 1000 < item.examStartTime) || (moment().valueOf() > item.examEndTime)) && <Menu.Item key="4">
{ctx.xmState?.userPermission?.AddExam() && (
<Menu.Item key='3' onClick={() => props.history.push(`${match.url}/copy/${item.examId}`)}>
复制
</Menu.Item>
)}
{ctx.xmState?.userPermission?.DelExam() && (moment().valueOf() + 30 * 60 * 1000 < item.examStartTime || moment().valueOf() > item.examEndTime) && (
<Menu.Item key='4'>
<span
onClick={() => {
deleteExam(item)
}}
>
deleteExam(item);
}}>
删除
</span>
</Menu.Item>
}
)}
</Menu>
);
}
function deleteExam(item: any) {
Modal.confirm({
title: '删除考试',
content: '确定删除该考试吗?',
okText: '删除',
cancelText: '取消',
icon: <span className="icon iconfont default-confirm-icon">&#xe6f4;</span>,
icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>,
onOk: () => {
Service.Hades("public/hades/deleteExam", {
"examId": item.examId,
Service.Hades('public/hades/deleteExam', {
examId: item.examId,
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
source: 0
source: 0,
}).then(() => {
getList()
})
}
})
getList();
});
},
});
}
function getList() {
......@@ -283,139 +283,150 @@ function ExaminationManager(props: any) {
// _query.examCreator =parseInt(_query.examCreator)
// }
Service.Hades("public/hades/queryExamPageList", {
..._query, userId: User.getStoreUserId(),
Service.Hades('public/hades/queryExamPageList', {
..._query,
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
source: 0
source: 0,
}).then((res) => {
setList(res.result?.records || [])
setTotal(parseInt(res.result.total))
})
setList(res.result?.records || []);
setTotal(parseInt(res.result.total));
});
}
useEffect(() => {
queryRef.current = query;
getList();
}, [query])
}, [query]);
function onShowSizeChange(current: any, size: any) {
( queryRef.current as any).size =size
(queryRef.current as any).size = size;
}
function onChange(pagination: any, filters: any, sorter: any, extra: any) {
setfield(sorter.field);
setOrder(sorter.order)
setOrder(sorter.order);
let _query: any = { ...queryRef.current };
_query.order = (orderEnum as any)[sorter.field][sorter.order] || 'EXAM_START_TIME_DESC'
setQuery(_query)
_query.order = (orderEnum as any)[sorter.field][sorter.order] || 'EXAM_START_TIME_DESC';
setQuery(_query);
}
const defaultOptions = {
loop: true,
autoplay: true,
animationData: nodata,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return <div className="page examination-manager">
<div className="content-header">考试</div>
<div className="box content-body">
<div className="xm-search-filter">
return (
<div className='page examination-manager'>
<div className='content-header'>考试</div>
<div className='box content-body'>
<div className='xm-search-filter'>
<div style={{ display: 'flex' }}>
<div className="search-condition">
<div className="search-condition__item">
<span className="search-name">考试名称:</span>
<div className='search-condition'>
<div className='search-condition__item'>
<span className='search-name'>考试名称:</span>
<Search
value={query.examName}
className='search-input'
placeholder="搜索考试名称"
placeholder='搜索考试名称'
onChange={(e) => {
const _query = { ...query }
_query.examName = e.target.value
const _query = { ...query };
_query.examName = e.target.value;
_query.current = 1;
setQuery(_query);
}}
onSearch={() => { }}
enterButton={<span className="icon iconfont">&#xe832;</span>}
onSearch={() => {}}
enterButton={<span className='icon iconfont'>&#xe832;</span>}
/>
</div>
<TeacherSelect val={query.examCreator}
<TeacherSelect
val={query.examCreator}
onChange={(examCreator: any) => {
const _query = { ...query }
const _query = { ...query };
_query.examCreator = examCreator;
_query.current = 1;
setQuery(_query);
}}
roleCodes={["CloudManager", 'StoreManager']}
></TeacherSelect>
roleCodes={['CloudManager', 'StoreManager']}></TeacherSelect>
<div className="search-condition__item">
<span className="search-name">考试时间:</span>
<div className='search-condition__item'>
<span className='search-name'>考试时间:</span>
<RangePicker
className='search-input'
value={[
query.examStartTime ? moment(Number(query.examStartTime)) : null,
query.examStartTime ? moment(Number(query.examEndTime)) : null
]}
value={[query.examStartTime ? moment(Number(query.examStartTime)) : null, query.examStartTime ? moment(Number(query.examEndTime)) : null]}
onChange={(date: any) => {
const _query = { ...query }
const _query = { ...query };
_query.examStartTime = date && date[0]?.startOf('day').valueOf();
_query.examEndTime = date && date[1]?.endOf('day').valueOf();
_query.current = 1;
setQuery(_query);
}} />
}}
/>
</div>
{
!!expandFilter && <div className="search-condition__item">
<span className="search-name">创建时间:</span>
{!!expandFilter && (
<div className='search-condition__item'>
<span className='search-name'>创建时间:</span>
<RangePicker
className='search-input'
value={[
query.createStartTime ? moment(Number(query.createStartTime)) : null,
query.createStartTime ? moment(Number(query.createEndTime)) : null
query.createStartTime ? moment(Number(query.createEndTime)) : null,
]}
onChange={(date: any) => {
const _query = { ...query }
const _query = { ...query };
_query.createStartTime = date && date[0]?.startOf('day').valueOf();
_query.createEndTime = date && date[1]?.endOf('day').valueOf();
_query.current = 1;
setQuery(_query);
}} />
}}
/>
</div>
}
)}
</div>
<div className="reset-fold-area">
<Tooltip title="清空筛选"><span className="resetBtn iconfont icon" onClick={() => {
setfield('')
<div className='reset-fold-area'>
<Tooltip title='清空筛选'>
<span
className='resetBtn iconfont icon'
onClick={() => {
setfield('');
setQuery({ current: 1, size: 10, order: 'EXAM_START_TIME_DESC' });
}}>&#xe61b; </span></Tooltip>
<span style={{ cursor: 'pointer' }} className="fold-btn" onClick={() => {
setExpandFilter(!expandFilter)
}}>{expandFilter ? <span><span>收起</span><span className="iconfont icon fold-icon" >&#xe82d; </span> </span> : <span>展开<span className="iconfont icon fold-icon" >&#xe835; </span></span>}</span>
}}>
&#xe61b;{' '}
</span>
</Tooltip>
<span
style={{ cursor: 'pointer' }}
className='fold-btn'
onClick={() => {
setExpandFilter(!expandFilter);
}}>
{expandFilter ? (
<span>
<span>收起</span>
<span className='iconfont icon fold-icon'>&#xe82d; </span>{' '}
</span>
) : (
<span>
展开<span className='iconfont icon fold-icon'>&#xe835; </span>
</span>
)}
</span>
</div>
</div>
</div>
{
ctx.xmState?.userPermission?.AddExam() && <Button type='primary' onClick={() => {
{ctx.xmState?.userPermission?.AddExam() && (
<Button
type='primary'
onClick={() => {
props.history.push({
pathname: `${match.url}/add`
})
}} style={{ margin: '4px 0 16px' }}>新建考试</Button>
}
pathname: `${match.url}/add`,
});
}}
style={{ margin: '4px 0 16px' }}>
新建考试
</Button>
)}
<div className="content">
<div className='content'>
<XMTable
bordered
size="small"
size='small'
columns={columns}
dataSource={list}
scroll={{ x: 1150 }}
......@@ -423,22 +434,11 @@ function ExaminationManager(props: any) {
pagination={false}
style={{ margin: '0px 0 16px' }}
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>
}}
>
</XMTable>
{total > 0 &&
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>,
}}></XMTable>
{total > 0 && (
<PageControl
size="small"
size='small'
current={query.current - 1}
pageSize={query.size}
total={total}
......@@ -446,48 +446,75 @@ function ExaminationManager(props: any) {
toPage={(page: any) => {
let _query: any = { ...queryRef.current };
_query.current = page + 1;
setQuery(_query)
setQuery(_query);
}}
/>
}
)}
</div>
</div>
{openPreviewModal &&
{openPreviewModal && (
<PreviewModal
info={{ ...info, examDuration: (info.examDuration || 0) / 60000 }}
onClose={() => { setOpenPreviewModal(false) }}
onClose={() => {
setOpenPreviewModal(false);
}}
/>
}
<Route path={`${match.url}/add`} render={() => {
return <AddExam type="add" freshList={() => {
)}
<Route
path={`${match.url}/add`}
render={() => {
return (
<AddExam
type='add'
freshList={() => {
let _query: any = { ...queryRef.current };
if (_query.current != 1) {
_query.current = 1;
setQuery(_query)
setQuery(_query);
} else {
getList()
getList();
}
}} />;
}} />
<Route path={`${match.url}/edit/:id`} render={() => {
return <AddExam type='edit' freshList={() => {
getList()
}} />;
}} />
<Route path={`${match.url}/copy/:id`} render={() => {
return <AddExam type='copy' freshList={() => {
getList()
}} />;
}} />
}}
/>
);
}}
/>
<Route
path={`${match.url}/edit/:id`}
render={() => {
return (
<AddExam
type='edit'
freshList={() => {
getList();
}}
/>
);
}}
/>
<Route
path={`${match.url}/copy/:id`}
render={() => {
return (
<AddExam
type='copy'
freshList={() => {
getList();
}}
/>
);
}}
/>
<Route path={`${match.url}/analysic/:id`} render={() => {
<Route
path={`${match.url}/analysic/:id`}
render={() => {
return <DataAnalysic />;
}} />
{
modal
}
}}
/>
{modal}
</div>
);
}
export default withRouter(ExaminationManager);
/*
* @Author: yuananting
* @Date: 2021-04-07 16:10:21
* @LastEditors: wufan
* @LastEditTime: 2021-04-26 10:21:19
* @Description: 助学工具-考试-考试结果
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { useState, useEffect } from 'react';
import { withRouter } from 'react-router-dom';
import User from '@/common/js/user';
import './TestDetailPage.less';
import Service from '@/common/js/service';
import { message } from 'antd';
import AnswerDescPage from '../components/AnswerDescPage';
import Breadcrumbs from '@/components/Breadcrumbs';
function TestDetailPage(props) {
const examId = props.match.params.testId.replace(/\?.+/, '');
const paperId = window.getParameterByName('paperId');
const userId = window.getParameterByName('userId');
const [examDetail, setExamDetail] = useState({
answerAnalysis: '',
resultShow: '',
examDesc: '',
examDuration: 0,
examEndTime: '',
examName: '',
examStartTime: '',
paperId: 0,
passRate: 0,
passScore: 0,
resultContent: '',
totalQuestionCount: 0,
totalScore: 0,
userCorrectQuestion: 0,
userExamDuration: 0,
userScore: 0,
}); // 考试详情
const [paperDetail, setPaperDetail] = useState({}); // 试卷详情
const [questionList, setQuestionList] = useState([]); // 试卷题目列表
const [userAnswerList, setUserAnswerList] = useState([]); // 用户答案列表
const [isScrollShow, setIsScrollShow] = useState(false); // 是否展示回到顶部按钮
const { answerAnalysis, resultContent, examName, totalScore, totalQuestionCount, passScore, examDuration, userExamDuration, userScore, userCorrectQuestion } =
examDetail;
useEffect(() => {
bindScroll();
getPaperDetail();
getExamDetail();
}, []);
function bindScroll() {
window.addEventListener('scroll', handleScroll, true);
}
function getExamDetail() {
const params = {
examId,
source: 0,
tenantId: User.getStoreId() || window.getParameterByName('id'),
userId,
};
Service.Hades('public/customerHades/queryUserExamResult', params, {
reject: true,
})
.then((res) => {
const data = { ...res.result };
setExamDetail(data);
})
.catch((res) => {
if (res.code === 'EXAM_IS_NOT_EXIST') {
handleChangeShowErrorPage();
} else {
message.error(res.message);
}
});
}
function getPaperDetail() {
Service.Hades('public/customerHades/queryUserExamAnswer', {
examId,
paperId,
source: 0,
readAnswer: true,
tenantId: User.getStoreId() || window.getParameterByName('id'),
userId,
}).then((res) => {
if (res.success) {
const { paperDetailVO, userExamAnswerVO } = res.result;
const userAnswerList = [...userExamAnswerVO];
const { questionList } = paperDetailVO;
setPaperDetail(paperDetail);
setUserAnswerList(userAnswerList);
setQuestionList(questionList || []);
}
});
}
function handleChangeShowErrorPage() {
setIsShowErrorPage(true);
}
// 用户时长转换
function formatTime(msTime) {
let time = msTime / 1000;
let hour = Math.floor(time / 60 / 60) % 24 > 9 ? Math.floor(time / 60 / 60) % 24 : '0' + (Math.floor(time / 60 / 60) % 24);
let minute = Math.floor(time / 60) % 60 > 9 ? Math.floor(time / 60) % 60 : '0' + (Math.floor(time / 60) % 60);
let second = time % 60 > 9 ? Math.round(time % 60) : '0' + Math.round(time % 60);
return `${hour}:${minute}:${second}`;
}
// 快速跳转题目
function handleQuickActiveQuestion(questionId) {
let selectDom = document.getElementById(`${questionId}`);
selectDom.scrollIntoView({
block: 'center',
});
}
// 回到顶部
function handleGoTop() {
window.scrollTo(0, 0);
}
// 监听滚动,200以后出现回到顶部按钮
function handleScroll() {
if (window.pageYOffset > 200) {
setIsScrollShow(true);
} else {
setIsScrollShow(false);
}
}
function renderResultInfo() {
return (
<div>
<div className='exam-info'>
<div className='info-score item'>
<div className='current-score'>
{userScore}
<img src='https://image.xiaomaiketang.com/xm/TsaApiPyxA.png' />
</div>
<div className='origin-data'>总分{totalScore}</div>
</div>
<div className='info-level item'>
<div className='current-level'>{userScore < passScore ? '不及格' : '及格'}</div>
<div className='origin-data'>及格分{passScore}</div>
</div>
<div className='info-correct item'>
<div className='current-correct'>
{userCorrectQuestion}
<div className='text'>答对题数</div>
</div>
<div className='origin-data'>共{totalQuestionCount}题</div>
</div>
<div className='info-time item'>
<div className='current-time'>
{formatTime(Number(userExamDuration > examDuration ? examDuration : userExamDuration || 0))}
<div className='text'>用时</div>
</div>
<div className='origin-data'>考试时长{(examDuration || 0) / 60 / 1000}分钟</div>
</div>
</div>
<div className='exam-result'>
<div className='result-title'>
<div className='left-title'>答题情况</div>
<div className='right-tip'>
<span className='correct-num'>{userCorrectQuestion}</span>
<span className='incorrect-num'>/{totalQuestionCount} </span>
道正确
</div>
</div>
<div className='result-content'>
{sortedAnswerList.map((item, index) => {
return (
<div
className='result-content__item'
onClick={() => {
console.log('item', item);
handleQuickActiveQuestion(item.questionId);
}}>
<img
className='icon'
src={item.isCorrect === 1 ? 'https://image.xiaomaiketang.com/xm/FwZa2Kaypc.png' : 'https://image.xiaomaiketang.com/xm/7tRHDf6ysA.png'}
/>
<div className='result-content-box'>{index + 1}</div>
</div>
);
})}
</div>
</div>
<AnswerDescPage userId={userId} />
</div>
);
}
let sortedAnswerList = [];
questionList.map((item) => {
userAnswerList &&
userAnswerList.map((answerItem) => {
if (item.questionId === answerItem.questionId) {
sortedAnswerList.push(answerItem);
}
});
});
return (
<div className='exam-result-page page'>
<Breadcrumbs navList={'答题详情'} goBack={props.history.goBack} />
<div className='center'>
<div className='box'>
<div className='box-content'>
<div
className='exam-head'
style={{
padding: examName.length > 20 ? '8px 0 14px' : '16px 0 29px',
}}>
<div className={`exam-name ${examName.length > 20 ? 'many' : 'few'}`}>{examName}</div>
</div>
{renderResultInfo()}
</div>
</div>
</div>
{isScrollShow && <div className='go-top' onClick={handleGoTop}></div>}
</div>
);
}
export default withRouter(TestDetailPage);
.exam-result-page {
margin: 0 auto;
.go-top {
cursor: pointer;
position: fixed;
width: 48px;
height: 48px;
background-image: url('https://image.xiaomaiketang.com/xm/jWix2xDm4t.png');
background-size: 100%;
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.08);
border-radius: 4px;
bottom: 125px;
right: calc(~'(100vw - 1232px)/2');
display: flex;
justify-content: center;
align-items: center;
&:hover {
background-image: url('https://image.xiaomaiketang.com/xm/GHBBNDtTDd.png');
}
}
.box {
.box-content {
position: relative;
width: 840px;
margin: 0 auto;
.exam-head {
color: #333;
text-align: center;
.exam-name {
width: 600px;
font-weight: 500;
margin: 0 auto;
font-size: 24px;
line-height: 33px;
}
.many {
font-size: 21px;
line-height: 29px;
}
.few {
font-size: 25px;
line-height: 36px;
}
}
.empty-result {
box-sizing: border-box;
margin: 0 16px;
background: #ffffff;
box-shadow: 0 -15px 10px 0 rgba(0, 34, 121, 0.1);
border-radius: 4px 4px 0 0;
padding-top: 56px;
.lack-desc {
margin-top: 16px;
.title {
font-size: 17px;
font-weight: 500;
color: #333333;
line-height: 24px;
margin-bottom: 4px;
}
.content {
font-size: 15px;
color: #999999;
line-height: 21px;
}
}
.after-desc {
margin-top: 16px;
.title {
font-size: 17px;
font-weight: 500;
color: #333333;
line-height: 24px;
margin-bottom: 20px;
}
.after-show-box {
// margin: 0 37px;
padding: 11px 21px;
background: #f4f6fa;
border-radius: 4px;
font-size: 15px;
color: #999999;
line-height: 21px;
text-align: center;
}
}
}
.exam-info {
width: 840px;
box-sizing: border-box;
margin: 0 auto;
padding: 24px 0 12px;
height: 130px;
background: #ffffff;
box-shadow: 0px 5px 30px 0px rgba(12, 54, 158, 0.08);
border-radius: 4px;
display: flex;
justify-content: center;
.item {
flex: 1 25%;
display: flex;
flex-direction: column;
// height: 130px;
align-items: center;
justify-content: space-between;
position: relative;
.origin-data {
text-align: center;
font-size: 14px;
color: #999999;
line-height: 20px;
}
.line {
&::before {
width: 1px;
height: 40px;
content: '';
position: absolute;
right: 0;
top: 0;
background-color: rgba(232, 232, 232, 1);
}
}
&.info-score {
.current-score {
font-size: 40px;
font-weight: 500;
color: #ff4f4f;
text-align: center;
line-height: 42px;
img {
display: block;
margin: 0 auto;
width: 27px;
height: 12px;
padding-left: 4px;
}
}
}
&.info-level {
.current-level {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 33px;
text-align: center;
}
}
&.info-correct {
.current-correct {
display: flex;
flex-direction: column;
padding-bottom: 20px;
justify-content: space-between;
align-items: center;
font-size: 20px;
font-weight: 500;
color: #333333;
line-height: 28px;
.text {
margin-top: 4px;
width: 48px;
height: 17px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #9b9b9b;
line-height: 17px;
text-align: center;
}
}
}
&.info-time {
.current-time {
display: flex;
flex-direction: column;
padding-bottom: 20px;
justify-content: space-between;
align-items: center;
font-size: 20px;
font-weight: 500;
color: #333333;
line-height: 28px;
}
.text {
margin-top: 4px;
width: 48px;
height: 17px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #9b9b9b;
line-height: 17px;
text-align: center;
}
}
}
}
.left-title {
font-size: 20px;
font-weight: 500;
color: #333333;
position: relative;
margin-left: 8px;
line-height: 28px;
&::before {
position: absolute;
content: '';
left: -8px;
top: 50%;
transform: translateY(-50%);
width: 4px;
height: 16px;
background-image: linear-gradient(#2966ff 83.5%, #0acca4 16.5%);
}
}
.exam-result {
padding: 44px 0 24px 0;
vertical-align: middle;
.result-title {
display: flex;
justify-content: space-between;
margin-bottom: 30px;
line-height: 24px;
.right-tip {
font-size: 15px;
font-weight: 500;
color: #999999;
.correct-num {
color: #16e0b7;
}
.incorrect-num {
font-size: 11px;
}
}
}
.result-content {
display: flex;
flex-wrap: wrap;
&__item {
position: relative;
margin: 0 16px 16px 0;
width: 36px;
height: 36px;
background: #f4f6fa;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
&:nth-child(5n) {
margin-right: 50px;
}
&:nth-child(15n) {
margin-right: 0px;
}
.icon {
width: 16px;
height: 16px;
position: absolute;
left: 50%;
top: 0;
transform: translate(-50%, -50%);
}
.result-content-box {
width: 36px;
height: 36px;
font-size: 15px;
line-height: 36px;
background: #f4f6fa;
border-radius: 4px;
text-align: center;
}
}
}
}
}
}
.footer-btn {
width: 100%;
position: fixed;
bottom: 0;
left: 0;
height: 64px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
border-top: 1px solid rgba(238, 238, 238, 1);
box-sizing: border-box;
.text {
cursor: pointer;
background: #ffb714;
border-radius: 5px;
width: 342px;
font-size: 15px;
color: #ffffff;
line-height: 44px;
text-align: center;
&.disabled {
background-color: #ccc;
}
}
}
}
import React, { useState, useRef, useEffect } from 'react'
import Service from "@/common/js/service";
import { PageControl } from "@/components";
import React, { useState, useRef, useEffect } from 'react';
import Service from '@/common/js/service';
import { PageControl } from '@/components';
import { Input, Select, Tooltip, Table, Button } from 'antd';
import User from "@/common/js/user";
import { ColumnsType } from 'antd/es/table';
import User from '@/common/js/user';
import moment from 'moment';
import './userData.less'
import './userData.less';
const { Search } = Input;
const { Option } = Select;
declare var window: any;
interface sortType {
type: "ascend" | "descend" | null | undefined
type: 'ascend' | 'descend' | null | undefined;
}
interface User {
key: number;
name: string;
}
function DataAnalysic(props: any) {
const sortStatus: sortType = {
type: undefined
}
type: undefined,
};
const useDataInit: any = {};
const queryInit: any = { current: 1, size: 10, };
const queryInit: any = { current: 1, size: 10 };
const [useData, setUserData] = useState(useDataInit);
const [list, setList] = useState([]);
const [query, setQuery] = useState(queryInit);
......@@ -31,136 +35,172 @@ function DataAnalysic(props: any) {
const userTypeEnum = {
WORK_WE_CHAT: '企业微信',
WE_CHAT: '微信'
}
WE_CHAT: '微信',
};
const userExamStateEnum = {
EXAM: '进行中',
LACK_EXAM: '缺考',
FINISH_EXAM: '已考试'
}
FINISH_EXAM: '已考试',
};
const ExamPassColorEnum = {
EXAM_FAIL: 'rgba(255, 79, 79, 1)',
EXAM_PASS: 'rgba(59, 189, 170, 1)',
}
};
const ExamPassEnum = {
EXAM_FAIL: '不及格',
EXAM_PASS: '及格',
}
};
const userExamStateColorEnum = {
EXAM: 'rgba(35, 143, 255, 1)',
LACK_EXAM: 'rgba(204, 204, 204, 1)',
FINISH_EXAM: 'rgba(47, 200, 60, 1)'
}
FINISH_EXAM: 'rgba(47, 200, 60, 1)',
};
const orderEnum = {
score: {
ascend: 'EXAM_SCORE_ASC',
descend: 'EXAM_SCORE_DESC'
descend: 'EXAM_SCORE_DESC',
},
userDuration: {
ascend: 'USER_DURATION_ASC',
descend: 'USER_DURATION_DESC'
descend: 'USER_DURATION_DESC',
},
}
};
const queryRef = useRef({});
useEffect(() => {
queryExamUserData();
}, [])
}, []);
useEffect(() => {
queryRef.current = query;
queryExamUserDataList();
}, [query])
}, [query]);
function queryExamUserData() {
Service.Hades('public/hades/queryExamUserData', {
examId: props.examId,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
source: 0
source: 0,
}).then((res) => {
setUserData(res.result)
})
setUserData(res.result);
});
}
function queryExamUserDataList() {
Service.Hades('public/hades/queryExamUserDataList', {
...query,
examId: props.examId,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
source: 0
source: 0,
}).then((res) => {
setList(res.result.records);
setTotal(parseInt(res.result.total))
setTotal(parseInt(res.result.total));
if (!allData) {
setAllData(parseInt(res.result.total))
setAllData(parseInt(res.result.total));
}
})
});
}
const columns = [
const columns: ColumnsType<User> = [
{
title: "学员",
dataIndex: "userName",
render: (text: any, record: any) => <span>{text}<span style={{ color: record.userSource === 'WORK_WE_CHAT' ? 'rgba(255, 157, 20, 1)' : 'rgba(29, 204, 101, 1)' }} >@{(userTypeEnum as any)[record.userSource]}</span></span>,
title: '学员',
dataIndex: 'userName',
render: (text: any, record: any) => (
<span>
{text}
<span style={{ color: record.userSource === 'WORK_WE_CHAT' ? 'rgba(255, 157, 20, 1)' : 'rgba(29, 204, 101, 1)' }}>
@{(userTypeEnum as any)[record.userSource]}
</span>
</span>
),
},
{
title: "手机号",
dataIndex: "phone",
title: '手机号',
dataIndex: 'phone',
},
{
title: "考试状态",
dataIndex: "userExamState",
render: (text: any) => <span> <span className='exstatus' style={{ background: (userExamStateColorEnum as any)[text] }}></span> {(userExamStateEnum as any)[text]}</span>,
title: '考试状态',
dataIndex: 'userExamState',
render: (text: any) => (
<span>
{' '}
<span className='exstatus' style={{ background: (userExamStateColorEnum as any)[text] }}></span> {(userExamStateEnum as any)[text]}
</span>
),
},
{
title: "考试成绩",
dataIndex: "score",
title: '考试成绩',
dataIndex: 'score',
sorter: true,
sortOrder: field === "score" ? order : sortStatus.type,
render: (text: any, record: any) => <span> {text} <span style={{ border: `1px solid ${(ExamPassColorEnum as any)[record.examPass]}`, fontSize: 12, color: (ExamPassColorEnum as any)[record.examPass], display: 'inline-block', padding: '0px 2px' }}>{(ExamPassEnum as any)[record.examPass]}</span></span>,
sortOrder: field === 'score' ? order : sortStatus.type,
render: (text: any, record: any) => (
<span>
{' '}
{text}{' '}
<span
style={{
border: `1px solid ${(ExamPassColorEnum as any)[record.examPass]}`,
fontSize: 12,
color: (ExamPassColorEnum as any)[record.examPass],
display: 'inline-block',
padding: '0px 2px',
}}>
{(ExamPassEnum as any)[record.examPass]}
</span>
</span>
),
},
{
title: "进入考试时间",
dataIndex: "examStartTime",
render: (text: any) => <span>{moment(text).format("YYYY-MM-DD HH:mm")}</span>,
title: '进入考试时间',
dataIndex: 'examStartTime',
render: (text: any) => <span>{moment(text).format('YYYY-MM-DD HH:mm')}</span>,
},
{
title: "考试用时",
dataIndex: "userDuration",
title: '考试用时',
dataIndex: 'userDuration',
sorter: true,
sortOrder: field === "userDuration" ? order : sortStatus.type,
render: (text: any,record:any) => <span>{ record.userExamState==='FINISH_EXAM' ? window.formatHourTime(text):'-'} </span>,
sortOrder: field === 'userDuration' ? order : sortStatus.type,
render: (text: any, record: any) => <span>{record.userExamState === 'FINISH_EXAM' ? window.formatHourTime(text) : '-'} </span>,
},
//TODO:
{
title: '操作',
key: '',
dataIndex: 'edit',
render: (value: any, record: any) => {
return (
<Choose>
<When condition={record.userExamState === 'FINISH_EXAM'}>
<div
className='answer-detail'
onClick={() => {
checkAnswerDetail(record);
}}>
答题详情
</div>
</When>
<Otherwise>-</Otherwise>
</Choose>
);
},
},
];
function onChange(pagination: any, filters: any, sorter: any, extra: any) {
setfield(sorter.field);
setOrder(sorter.order)
console.log(sorter.field, sorter.order, (orderEnum as any)[sorter.field])
setOrder(sorter.order);
console.log(sorter.field, sorter.order, (orderEnum as any)[sorter.field]);
let _query: any = { ...queryRef.current };
_query.order = (orderEnum as any)[sorter.field][sorter.order]
setQuery(_query)
_query.order = (orderEnum as any)[sorter.field][sorter.order];
setQuery(_query);
}
function download() {
......@@ -170,149 +210,157 @@ function DataAnalysic(props: any) {
exportDataType: 'EXAM_USER_DATA',
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
source: 0
source: 0,
}).then((res) => {
const dom = (document as any).getElementById("load-play-back-excel")
const dom = (document as any).getElementById('load-play-back-excel');
dom.setAttribute('href', res.result);
dom.click();
})
});
}
//查看答题详情
function checkAnswerDetail(record: any) {
const { paperId, userExamState } = props.examDetail?.examPaper;
const { userId } = record;
window.RCHistory.push({
pathname: `/test-detail/${props.examId}?paperId=${paperId}&userExamState=${userExamState}&userId=${userId}`,
});
}
return <div className="rr">
<a
download
id="load-play-back-excel"
style={{ position: "absolute", left: "-10000px" }}
>
return (
<div className='rr'>
<a target='_blank' download id='load-play-back-excel' style={{ position: 'absolute', left: '-10000px' }}>
111
</a>
<div className="dataPanal">
<div className="item">
<div className="num">{useData.joinCnt || 0}</div>
<div className="percent"></div>
<div className="subTitle">参与人数</div>
<div className='dataPanal'>
<div className='item'>
<div className='num'>{useData.joinCnt || 0}</div>
<div className='percent'></div>
<div className='subTitle'>参与人数</div>
</div>
<div className="item">
<div className="num">{useData.finishCnt || 0}</div>
<div className="percent">占比{parseInt(((useData.finishCnt || 0) / (useData.joinCnt || 1)) * 100 + '')}%</div>
<div className="subTitle">完成考试数 (人)</div>
<div className='item'>
<div className='num'>{useData.finishCnt || 0}</div>
<div className='percent'>占比{parseInt(((useData.finishCnt || 0) / (useData.joinCnt || 1)) * 100 + '')}%</div>
<div className='subTitle'>完成考试数 (人)</div>
</div>
<div className="item">
<div className="num">{useData.passCnt || 0}</div>
<div className="percent">占比{parseInt(((useData.passCnt || 0) / (useData.finishCnt || 1)) * 100 + '')}%</div>
<div className="subTitle">及格数 (人)</div>
<div className='item'>
<div className='num'>{useData.passCnt || 0}</div>
<div className='percent'>占比{parseInt(((useData.passCnt || 0) / (useData.finishCnt || 1)) * 100 + '')}%</div>
<div className='subTitle'>及格数 (人)</div>
</div>
<div className="item">
<div className="num">{useData.averageScore || 0}</div>
<div className="percent">总分{props.examDetail?.examPaper?.totalScore}</div>
<div className="subTitle">平均分</div>
<div className='item'>
<div className='num'>{useData.averageScore || 0}</div>
<div className='percent'>总分{props.examDetail?.examPaper?.totalScore}</div>
<div className='subTitle'>平均分</div>
</div>
<div className="item">
<div className="num"> {window.formatHourTime(useData.averageDuration || 0)} </div>
<div className="percent"></div>
<div className="subTitle">平均用时</div>
<div className='item'>
<div className='num'> {window.formatHourTime(useData.averageDuration || 0)} </div>
<div className='percent'></div>
<div className='subTitle'>平均用时</div>
</div>
</div>
<div className="xm-search-filter" style={{ marginTop: 16 }}>
<div className='xm-search-filter' style={{ marginTop: '24px' }}>
<div style={{ display: 'flex' }}>
<div className="search-condition">
<div className="search-condition__item">
<span className="search-name">学员:</span>
<div className='search-condition'>
<div className='search-condition__item'>
<span className='search-name'>学员:</span>
<Search
value={query.examName}
className='search-input'
placeholder="搜索学员名或手机号"
placeholder='搜索学员名或手机号'
onChange={(e) => {
const _query = { ...query }
_query.searchKey = e.target.value
const _query = { ...query };
_query.searchKey = e.target.value;
setQuery(_query);
}}
onSearch={() => { }}
enterButton={<span className="icon iconfont">&#xe832;</span>}
onSearch={() => {}}
enterButton={<span className='icon iconfont'>&#xe832;</span>}
/>
</div>
<div className="search-condition__item">
<span className="search-name">学员类型:</span>
<Select value={query.userSource} placeholder="请选择学员类型" onChange={(val) => {
const _query = { ...query }
_query.userSource = val
<div className='search-condition__item'>
<span className='search-name'>学员类型:</span>
<Select
value={query.userSource}
placeholder='请选择学员类型'
onChange={(val) => {
const _query = { ...query };
_query.userSource = val;
setQuery(_query);
}} className='search-input' allowClear>
{
Object.keys(userTypeEnum).map((key: any) => {
return <Option value={key}>{(userTypeEnum as any)[key]}</Option>
})
}
}}
className='search-input'
allowClear>
{Object.keys(userTypeEnum).map((key: any) => {
return (
<Option value={key} key={key}>
{(userTypeEnum as any)[key]}
</Option>
);
})}
</Select>
</div>
<div className="search-condition__item">
<span className="search-name">考试状态:</span>
<Select value={query.userExamState} placeholder="请选择考试状态" onChange={(val) => {
const _query = { ...query }
_query.userExamState = val
<div className='search-condition__item'>
<span className='search-name'>考试状态:</span>
<Select
value={query.userExamState}
placeholder='请选择考试状态'
onChange={(val) => {
const _query = { ...query };
_query.userExamState = val;
setQuery(_query);
}} className='search-input' allowClear>
{
Object.keys(userExamStateEnum).map((key: any) => {
return <Option value={key}>{(userExamStateEnum as any)[key]}</Option>
})
}
}}
className='search-input'
allowClear>
{Object.keys(userExamStateEnum).map((key: any) => {
return (
<Option value={key} key={key}>
{(userExamStateEnum as any)[key]}
</Option>
);
})}
</Select>
</div>
</div>
<div className="reset-fold-area">
<Tooltip title="清空筛选"><span className="resetBtn iconfont icon" onClick={() => {
setfield('')
<div className='reset-fold-area'>
<Tooltip title='清空筛选'>
<span
className='resetBtn iconfont icon'
onClick={() => {
setfield('');
setQuery({ current: 1, size: 10 });
}}>&#xe61b; </span></Tooltip>
}}>
&#xe61b;{' '}
</span>
</Tooltip>
</div>
</div>
</div>
{
!!allData && <Button style={{ marginBottom: 12 }} onClick={download} >导出</Button>
}
<div className="content">
<Table
bordered
size="small"
columns={columns}
dataSource={list}
onChange={onChange}
pagination={false}
>
</Table>
{total > 0 &&
{!!allData && (
<Button style={{ marginBottom: 12 }} onClick={download}>
导出
</Button>
)}
<div className='content analysic-content'>
<Table bordered size='small' rowClassName='analysic-content-row' columns={columns} dataSource={list} onChange={onChange} pagination={false}></Table>
{total > 0 && (
<PageControl
size="small"
size='small'
current={query.current - 1}
pageSize={query.size}
total={total}
toPage={(page: any) => {
console.log(page)
console.log(page);
let _query: any = { ...queryRef.current };
_query.current = page + 1;
setQuery(_query)
setQuery(_query);
}}
/>
}
)}
</div>
</div>
);
}
export default DataAnalysic;
.dataAnalysic{
.titleBox{
.dataAnalysic {
.titleBox {
position: relative;
padding-left: 28px;
font-size: 19px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 26px;
background: #FFFFFF;
&::before{
width:4px;
height:12px;
content:'';
background-image: linear-gradient(#2966FF 83.5%, #0ACCA4 16.5%);
display:inline-block;
position: absolute;
left:16px;
top:7px;
background: #ffffff;
&::before {
width: 4px;
height: 12px;
content: '';
background-image: linear-gradient(#2966ff 83.5%, #0acca4 16.5%);
display: inline-block;
margin-right: 8px;
}
}
.ant-tabs-content-holder {
......
.examination-manager{
.status{
.examination-manager {
.status {
display: inline-block;
margin-left: 4px;
border: 1px solid #999;
padding: 2px 4px;
line-height: 16px;
}
.ant-table-column-sorters {
justify-content: flex-end;
}
.ant-table-column-sorter {
margin-top: 0px !important;
......
.dataPanal{
.dataPanal {
border-radius: 4px;
border: 1px solid #E8E8E8;
border: 1px solid #e8e8e8;
display: flex;
.item{
.item {
text-align: center;
// width: 29.9%;
position: relative;
flex: 1;
.num{
.num {
font-size: 26px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
......@@ -16,7 +15,7 @@
line-height: 26px;
margin-top: 12px;
}
.percent{
.percent {
margin-top: 6px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
......@@ -26,7 +25,7 @@
height: 20px;
margin-bottom: 18px;
}
.subTitle{
.subTitle {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
......@@ -34,16 +33,16 @@
line-height: 20px;
margin-bottom: 12px;
}
.type{
.type {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 20px;
span{
span {
color: rgba(153, 153, 153, 1);
}
.icon{
.icon {
color: rgba(204, 204, 204, 1);
font-size: 16px;
margin-right: 4px;
......@@ -52,7 +51,7 @@
}
}
&:after{
&:after {
content: '';
width: 0px;
height: 40px;
......@@ -63,14 +62,13 @@
right: 0px;
}
&:last-child{
&:after{
&:last-child {
&:after {
display: none;
}
}
}
.exstatus{
.exstatus {
width: 4px;
height: 4px;
background: rgb(35, 143, 255);
......@@ -80,3 +78,13 @@
top: -4px;
}
}
.answer-detail {
color: rgb(35, 143, 255);
}
.analysic-content {
.ant-table-bordered .ant-table-tbody tr {
&.analysic-content-row {
height: 50px;
}
}
}
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-27 16:15:13
* @LastEditors: yuananting
* @LastEditTime: 2021-06-01 17:07:30
* @LastEditTime: 2021-06-10 19:57:55
* @Description: 助学工具-新建/复制/编辑试卷
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -19,8 +19,9 @@ import {
message,
Modal,
Spin,
Space,
Radio,
} from "antd";
import Lottie from 'react-lottie';
import { PlusOutlined } from "@ant-design/icons";
import { XMTable } from "@/components";
import ShowTips from "@/components/ShowTips";
......@@ -31,6 +32,7 @@ import PaperPreviewModal from "./modal/PreviewPaperModal";
import User from "@/common/js/user";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import Bus from "@/core/bus";
import _ from "underscore";
import { Route, withRouter } from "react-router-dom";
import * as paperEmpty from '../../lottie/paperEmpty/data.json';
import AddExam from "@/modules/teach-tool/examination-manager/AddExam";
......@@ -71,12 +73,38 @@ class OperatePaper extends Component {
},
selectQuestionModal: null,
paperPreviewModal: null,
quickSortModalVisible: false, // 快捷排序弹窗显隐
selectQuestionList: [],
currentOperate: "",
currentNav: "",
currentCategoryPapers: [],
loading: false,
check: false,
sorterMethod: "addOrder",
sorterBy: [
"SINGLE_CHOICE",
"MULTI_CHOICE",
"JUDGE",
"GAP_FILLING",
"INDEFINITE_CHOICE",
],
sorterTypeList: [
{
typeKey: "SINGLE_CHOICE",
},
{
typeKey: "MULTI_CHOICE",
},
{
typeKey: "JUDGE",
},
{
typeKey: "GAP_FILLING",
},
{
typeKey: "INDEFINITE_CHOICE",
},
],
};
}
......@@ -129,10 +157,10 @@ class OperatePaper extends Component {
};
const res = await AidToolService.queryPaperDetail(query);
const { result } = res;
const { paperName, passRate } = result;
const { paperName, passRate, questionList } = result;
this.setState(
{
selectQuestionList: result.questionList,
selectQuestionList: questionList,
formData: {
...result,
paperId: getParameterByName("paperId"),
......@@ -146,7 +174,11 @@ class OperatePaper extends Component {
paperName: this.state.formData.paperName,
passRate,
});
this.setFormData(result.questionList);
questionList.map((item, index) => {
item.sorterIndex = index;
return item;
});
this.setFormData(questionList);
}
);
};
......@@ -197,30 +229,8 @@ class OperatePaper extends Component {
return prev + Number(cur.score) || 0;
}, 0);
const sortedTableData = [
...singleQuestion,
...multiQuestion,
...indefiniteQuestion,
...judgeQuestion,
...gapQuestion,
];
let currentQuestionList = [];
switch (sorter) {
case "ascend":
currentQuestionList = sortedTableData;
break;
case "descend":
currentQuestionList = sortedTableData.reverse();
break;
default:
currentQuestionList = _selectQuestionList;
break;
}
const passScore = Math.round(totalScore * formData.passRate * 0.01);
this.setState({
selectQuestionList: currentQuestionList,
formData: {
...formData,
singleChoiceCnt: singleQuestion.length,
......@@ -242,12 +252,14 @@ class OperatePaper extends Component {
// 选择题目
chooseQuestion = () => {
const { selectQuestionList, sorterMethod, sorterBy } = this.state;
const m = (
<SelectQuestionModal
getSelectedQuestion={this.state.selectQuestionList}
getSelectedQuestion={selectQuestionList}
setSelectedQuestion={(list) => {
this.setState({ selectQuestionModal: null }, () => {
this.setFormData(list);
this.quickSorter(list, sorterMethod, sorterBy);
});
}}
close={() => {
......@@ -262,7 +274,7 @@ class OperatePaper extends Component {
// 移动已选题目
handleMoveItem = (index, moveLength) => {
const { selectQuestionList } = this.state;
const selectQuestionList = [...this.state.selectQuestionList];
const item = selectQuestionList.splice(index + moveLength, 1);
selectQuestionList.splice(index, 0, item[0]);
this.setState({ selectQuestionList }, () =>
......@@ -473,14 +485,6 @@ class OperatePaper extends Component {
});
};
// 题型排序
sortByQuestionType = (pagination, filters, sorter) => {
const { columnKey, order } = sorter;
if (columnKey === "questionType") {
this.setFormData(this.state.selectQuestionList, order);
}
};
// 表头设置
parseColumns = () => {
const { selectQuestionList } = this.state;
......@@ -499,8 +503,6 @@ class OperatePaper extends Component {
dataIndex: "questionType",
key: "questionType",
width: "12%",
sorter: true,
showSorterTooltip: false,
filters: [
{
text: "单选题",
......@@ -560,8 +562,7 @@ class OperatePaper extends Component {
<Tooltip title="多选题和填空题的漏选/半对得分不能高于题目本身分值">
<span
className="icon iconfont"
style={{ color: "#BFBFBF", fontSize: 14,fontWeight:"400"
}}
style={{ color: "#BFBFBF", fontSize: 14, fontWeight: "400" }}
>
&#xe7c4;
</span>
......@@ -680,11 +681,37 @@ class OperatePaper extends Component {
return columns;
};
// 上下移题型
handleMoveTypeSorter = (index, moveLength) => {
const sorterTypeList = [...this.state.sorterTypeList];
const item = sorterTypeList.splice(index + moveLength, 1);
sorterTypeList.splice(index, 0, item[0]);
const sorterBy = _.pluck(sorterTypeList, "typeKey");
this.setState({ sorterTypeList, sorterBy });
};
// 快捷排序
quickSorter = (list, sorterMethod, sorterBy) => {
this.setState({
selectQuestionList:
sorterMethod === "addOrder"
? list.sort((a, b) => a.sorterIndex - b.sorterIndex)
: list.sort(
(a, b) =>
sorterBy.indexOf(a.questionTypeEnum || a.questionType) -
sorterBy.indexOf(b.questionTypeEnum || b.questionType)
),
});
};
render() {
const {
selectQuestionModal,
paperPreviewModal,
selectQuestionList,
quickSortModalVisible,
sorterMethod,
sorterTypeList,
sorterBy,
currentNav,
formData,
loading,
......@@ -709,14 +736,50 @@ class OperatePaper extends Component {
totalScore,
} = formData;
const { match } = this.props;
const defaultOptions = {
loop: true,
autoplay: true,
animationData: paperEmpty,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
const selectQuestionList = [...this.state.selectQuestionList];
const questionTypeEnum = {
SINGLE_CHOICE: "【单选题】",
MULTI_CHOICE: "【多选题】",
JUDGE: "【判断题】",
GAP_FILLING: "【填空题】",
INDEFINITE_CHOICE: "【不定项选择题】",
};
const typeColumns = [
{
title: "题型",
dataIndex: "typeKey",
key: "typeKey",
render: (text, record, index) => <span style={{color: '#333333'}}>{questionTypeEnum[text]}</span>,
},
{
title: "操作",
key: "action",
align: 'right',
render: (text, record, index) => (
<Space size="middle">
<span
style={{color: index > 0 ? '#2966FF' : '#CCCCCC', cursor: 'pointer'}}
onClick={() => {
index > 0 && this.handleMoveTypeSorter(index, -1);
}}
>
上移
</span>
<span style={{color: '#BFBFBF'}}> | </span>
<span
style={{color: index < 4 ? '#2966FF' : '#CCCCCC', cursor: 'pointer'}}
onClick={() => {
index < 4 && this.handleMoveTypeSorter(index, 1);
}}
>
下移
</span>
</Space>
),
},
];
return (
<div>
<div className="page operate-paper-page">
......@@ -789,7 +852,7 @@ class OperatePaper extends Component {
</span>
</div>
</Form.Item>
<Space size={8}>
<Button
className="choose-btn"
type="primary"
......@@ -798,6 +861,17 @@ class OperatePaper extends Component {
>
自选题目
</Button>
<Button
className="choose-btn"
onClick={() => {
this.setState({
quickSortModalVisible: true,
});
}}
>
快捷排序
</Button>
</Space>
{questionCnt > 0 && (
<div
className="paper-info-tip"
......@@ -826,15 +900,7 @@ class OperatePaper extends Component {
pagination={false}
onChange={this.sortByQuestionType}
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
image: paperEmpty,
description: <span style={{ display: 'block', paddingBottom: 24 }}>请在左上角添加题目</span>
}}
/>
......@@ -853,6 +919,47 @@ class OperatePaper extends Component {
</Spin>
{selectQuestionModal}
{paperPreviewModal}
<Modal
maskClosable={false}
className="type-order-modal"
title="快捷排序"
width={560}
visible={quickSortModalVisible}
onOk={() => {
this.setState(
{
quickSortModalVisible: false,
},
() => this.quickSorter(selectQuestionList, sorterMethod, sorterBy)
);
}}
onCancel={() => {
this.setState({ quickSortModalVisible: false });
}}
>
<Radio.Group
onChange={(e) =>
this.setState({
sorterMethod: e.target.value,
})
}
value={sorterMethod}
>
<Radio value={"addOrder"}>按添加顺序排序</Radio>
<Radio value={"typeOrder"}>按题型排序</Radio>
</Radio.Group>
{sorterMethod === "typeOrder" && (
<Table
className="type-order-table"
style={{marginTop: '24px'}}
showHeader={false}
columns={typeColumns}
dataSource={sorterTypeList}
pagination={false}
bordered={false}
/>
)}
</Modal>
</div>
<Route
path={`${match.url}/exam-operate-page`}
......
......@@ -89,3 +89,22 @@
.ant-dropdown-menu-item-selected > span {
color: #333333;
}
.type-order-modal {
.type-order-table {
tr {
background: #F7F8F9 !important;
display: flex;
margin-bottom: 8px;
width: 521px;
justify-content: space-between;
td {
border: none !important;
}
}
.ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
background: #F7F8F9 !important;
}
}
}
......@@ -19,7 +19,6 @@ import {
ConfigProvider,
Empty,
} from "antd";
import Lottie from 'react-lottie';
import { PageControl, XMTable } from "@/components";
import "./PaperList.less";
import { Route, withRouter } from "react-router-dom";
......@@ -31,7 +30,6 @@ import Service from "@/common/js/service";
import _ from "underscore";
import PaperPreviewModal from "../modal/PreviewPaperModal";
import MoveModal from '../../modal/MoveModal';
import * as nodata from '../../../lottie/nodata/data.json';
import Bus from "@/core/bus";
const { Search } = Input;
......@@ -547,14 +545,6 @@ class PaperList extends Component {
User.getUserRole()
);
const { match } = this.props;
const defaultOptions = {
loop: true,
autoplay: true,
animationData: nodata,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<div className={"paper-list " + this.props.type}>
<div className="paper-list-filter">
......@@ -635,15 +625,6 @@ class PaperList extends Component {
bordered
loading={loading}
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
description: <span style={{ display: 'block', paddingBottom: 24 }}>还没有试卷</span>
}}
/>
......@@ -660,16 +641,7 @@ class PaperList extends Component {
pagination={false}
bordered
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>
description: <span style={{ display: 'block', paddingBottom: 24 }}>还没有试卷</span>
}}
/>
)}
......
......@@ -8,6 +8,7 @@
*/
import React, { Component } from "react";
import { Modal, ConfigProvider, Empty } from "antd";
import Lottie from 'react-lottie';
import User from "@/common/js/user";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import "./PreviewPaperModal.less";
......@@ -15,6 +16,7 @@ import ScanFileModal from "@/modules/resource-disk/modal/ScanFileModal";
import _ from "underscore";
import XMAudio from "../../components/XMAudio";
import { NUM_TO_WORD_MAP } from "@/common/constants/punchClock/punchClock";
import previewEmpty from '../../../lottie/previewEmpty/data.json';
const questionTypeList = {
SINGLE_CHOICE: "单选题",
MULTI_CHOICE: "多选题",
......@@ -254,13 +256,28 @@ class PreviewPaperModal extends Component {
// 自定义空状态
customizeRenderEmpty = () => {
const defaultOptions = {
loop: true,
autoplay: true,
animationData: previewEmpty,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<Empty
image="https://image.xiaomaiketang.com/xm/emptyTable.png"
imageStyle={{
height: 100,
}}
description={"暂无内容"}
image={
<div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>
}
description={<span style={{ display: 'block', paddingBottom: 24, marginTop: 50 }}>暂无内容</span>}
></Empty>
);
};
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-29 10:52:26
* @LastEditors: yuananting
* @LastEditTime: 2021-05-08 16:11:27
* @LastEditTime: 2021-06-07 14:45:02
* @Description: 助学工具-试卷-新建选择题目弹窗
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -42,7 +42,8 @@ class SelectQuestionModal extends Component {
width={1080}
onOk={() => {
this.props.setSelectedQuestion(
this.listRef.current.state.selectQuestionKeys.map((item) => {
this.listRef.current.state.selectQuestionKeys.map((item, index) => {
item.sorterIndex = index;
item.questionId = item.id || item.questionId;
item.questionType = item.questionTypeEnum || item.questionType;
item.score = item.score || 2;
......
/*
* @Author: yuananting
* @Date: 2021-02-25 14:34:29
* @LastEditors: wufan
* @LastEditTime: 2021-05-14 18:17:08
* @LastEditors: yuananting
* @LastEditTime: 2021-06-09 12:00:12
* @Description: 助学工具-题库-操作题目Tab
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -66,23 +66,25 @@ class OperateQuestionTab extends Component {
}
componentDidMount() {
const { chooseOptions } = this.state;
const { questionTypeKey } = this.props;
const isEditCurrent =
getParameterByName("id") &&
getParameterByName("type") === questionTypeKey;
const optionSize = isEditCurrent ? 20 : 4;
if (
["INDEFINITE_CHOICE", "MULTI_CHOICE", "SINGLE_CHOICE"].includes(
this.props.questionTypeKey
questionTypeKey
)
) {
if (chooseOptions.length === 0) {
// 选择题(单选 多选 不定项)-插入4条默认选项
for (var i = 0; i < 4; i++) {
for (var i = 0; i < optionSize; i++) {
this.handleAddOption();
this.setState({
[`optionsValidate_${i}`]: "success",
[`optionsText_${i}`]: "",
});
}
}
} else if (this.props.questionTypeKey === "JUDGE") {
} else if (questionTypeKey === "JUDGE") {
this.initJudgeOption("正确");
this.initJudgeOption("错误");
}
......@@ -634,7 +636,7 @@ class OperateQuestionTab extends Component {
this.state.stemContent,
(contentItem) => contentItem.type === "RICH_TEXT"
);
if(stemContent.textLength > 1000) {
if (stemContent.textLength > 1000) {
validateError++;
}
let stem = stemContent.content.replace(/<[^>]+>/g, "");
......@@ -694,7 +696,7 @@ class OperateQuestionTab extends Component {
optionUnChecked = item.isCorrectAnswer
? optionUnChecked
: optionUnChecked + 1;
if(optionContent[0].textLength > 1000) {
if (optionContent[0].textLength > 1000) {
validateError++;
}
let optionInput = optionContent[0].content.replace(/<[^>]+>/g, "");
......@@ -1040,11 +1042,11 @@ class OperateQuestionTab extends Component {
return dom ? (
<div
className="question-item_question-content"
style={{
display: ["PICTURE", "VIDEO"].includes(type)
? "inline-grid"
: "flex",
}}
style={
!["PICTURE", "VIDEO"].includes(type)
? { display: "flex" }
: { float: "left" }
}
key={index}
>
{dom}
......@@ -1194,10 +1196,8 @@ class OperateQuestionTab extends Component {
data-label="正确答案"
>
{_.map(chooseOptions, (optionItem, optionIndex) => {
const {
questionOptionContentList,
isCorrectAnswer,
} = optionItem;
const { questionOptionContentList, isCorrectAnswer } =
optionItem;
optionItem.optionSort = optionIndex;
const mediaBtn = ["VOICE", "AUDIO", "PICTURE"];
const placeHold =
......
......@@ -2,7 +2,7 @@
border-radius: 2px;
padding: 16px;
position: relative;
margin-bottom: 35px;
margin-bottom: 70px;
.editor-fill-box_single {
border-radius: 4px;
......@@ -24,7 +24,7 @@
color: #999999;
margin-top: 8px;
.fill-info_icon {
color: #2966FF;
color: #2966ff;
font-size: 14px;
padding-left: 9px;
cursor: pointer;
......@@ -72,7 +72,6 @@
}
.audio-box {
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
padding: 10px 20px;
}
.img-box {
max-width: 88px;
......@@ -229,7 +228,7 @@
line-height: 33px;
align-self: stretch;
.option-operate_item__icon:hover {
color: #2966FF;
color: #2966ff;
}
.icon {
color: #bfbfbf;
......@@ -252,7 +251,7 @@
border-radius: 4px;
border: 1px dashed #e8e8e8;
font-size: 14px;
color: #2966FF;
color: #2966ff;
line-height: 44px;
text-align: center;
cursor: pointer;
......
......@@ -6,71 +6,54 @@
* @Description: 助学工具-题库-题目列表数据
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import {
Table,
ConfigProvider,
Empty,
Row,
Input,
Select,
Tooltip,
Space,
Button,
Modal,
message,
Menu,
Dropdown,
DatePicker,
} from "antd";
import Lottie from 'react-lottie';
import _ from "underscore";
import { Route, withRouter } from "react-router-dom";
import React, { Component } from 'react';
import { Table, ConfigProvider, Empty, Row, Input, Select, Tooltip, Space, Button, Modal, message, Menu, Dropdown, DatePicker } from 'antd';
import _ from 'underscore';
import { Route, withRouter } from 'react-router-dom';
import { DownOutlined } from '@ant-design/icons';
import { PageControl, XMTable } from "@/components";
import User from "@/common/js/user";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import PreviewQuestionModal from "../modal/PreviewQuestionModal";
import BatchImportQuestionModal from "../modal/BatchImportQuestionModal";
import OperateQuestion from "../OperateQuestion";
import Bus from "@/core/bus";
import { PageControl, XMTable } from '@/components';
import User from '@/common/js/user';
import AidToolService from '@/domains/aid-tool-domain/AidToolService';
import PreviewQuestionModal from '../modal/PreviewQuestionModal';
import BatchImportQuestionModal from '../modal/BatchImportQuestionModal';
import OperateQuestion from '../OperateQuestion';
import Bus from '@/core/bus';
import moment from 'moment';
import Service from "@/common/js/service";
import Service from '@/common/js/service';
import MoveModal from '../../modal/MoveModal';
import * as nodata from '../../../lottie/nodata/data.json';
import "./QuestionList.less";
import './QuestionList.less';
const { RangePicker } = DatePicker;
const { Search } = Input;
const questionTypeEnum = {
SINGLE_CHOICE: "单选题",
MULTI_CHOICE: "多选题",
JUDGE: "判断题",
GAP_FILLING: "填空题",
INDEFINITE_CHOICE: "不定项选择题",
SINGLE_CHOICE: '单选题',
MULTI_CHOICE: '多选题',
JUDGE: '判断题',
GAP_FILLING: '填空题',
INDEFINITE_CHOICE: '不定项选择题',
};
const questionTypeList = [
{
label: "单选题",
value: "SINGLE_CHOICE",
label: '单选题',
value: 'SINGLE_CHOICE',
},
{
label: "多选题",
value: "MULTI_CHOICE",
label: '多选题',
value: 'MULTI_CHOICE',
},
{
label: "判断题",
value: "JUDGE",
label: '判断题',
value: 'JUDGE',
},
{
label: "填空题",
value: "GAP_FILLING",
label: '填空题',
value: 'GAP_FILLING',
},
{
label: "不定项选择题",
value: "INDEFINITE_CHOICE",
label: '不定项选择题',
value: 'INDEFINITE_CHOICE',
},
];
......@@ -81,7 +64,7 @@ class QuestionList extends Component {
query: {
current: 1,
size: 10,
order: "UPDATED_DESC", // 排序规则[ ACCURACY_DESC, ACCURACY_ASC, CREATED_DESC, CREATED_ASC, UPDATED_DESC, UPDATED_ASC ]
order: 'UPDATED_DESC', // 排序规则[ ACCURACY_DESC, ACCURACY_ASC, CREATED_DESC, CREATED_ASC, UPDATED_DESC, UPDATED_ASC ]
categoryId: null, // 当前题库分类Id
questionName: null, // 题目名称
questionType: null, // 题目类型
......@@ -98,16 +81,15 @@ class QuestionList extends Component {
componentDidMount() {
this.queryQuestionPageList();
this.queryCategoryTree();
Bus.bind("queryQuestionPageList", (selectedCategoryId) => {
selectedCategoryId =
selectedCategoryId === "null" ? null : selectedCategoryId;
Bus.bind('queryQuestionPageList', (selectedCategoryId) => {
selectedCategoryId = selectedCategoryId === 'null' ? null : selectedCategoryId;
this.clearSelect();
this.InitSearch(selectedCategoryId);
});
}
componentWillUnmount() {
Bus.unbind("queryQuestionPageList", this.queryQuestionPageList);
Bus.unbind('queryQuestionPageList', this.queryQuestionPageList);
}
// 查询分类树
......@@ -145,7 +127,7 @@ class QuestionList extends Component {
...this.state.query,
categoryId,
current: 1,
order: "UPDATED_DESC", // 排序规则
order: 'UPDATED_DESC', // 排序规则
questionName: null, // 题目名称
questionType: null, // 题目类型
};
......@@ -165,7 +147,7 @@ class QuestionList extends Component {
},
},
() => {
if (searchType === "questionName") return;
if (searchType === 'questionName') return;
this.queryQuestionPageList();
}
);
......@@ -176,7 +158,7 @@ class QuestionList extends Component {
const _query = {
...this.state.query,
current: 1,
order: "UPDATED_DESC", // 排序规则
order: 'UPDATED_DESC', // 排序规则
questionName: null, // 题目名称
questionType: null, // 题目类型
updateDateStart: null,
......@@ -199,68 +181,65 @@ class QuestionList extends Component {
handleChangeTable = (pagination, filters, sorter) => {
const { columnKey, order } = sorter;
let sort = null;
if (columnKey === "accuracy" && order === "ascend") {
sort = "ACCURACY_ASC";
if (columnKey === 'accuracy' && order === 'ascend') {
sort = 'ACCURACY_ASC';
}
if (columnKey === "accuracy" && order === "descend") {
sort = "ACCURACY_DESC";
if (columnKey === 'accuracy' && order === 'descend') {
sort = 'ACCURACY_DESC';
}
if (columnKey === "updateTime" && order === "ascend") {
sort = "UPDATED_ASC";
if (columnKey === 'updateTime' && order === 'ascend') {
sort = 'UPDATED_ASC';
}
if (columnKey === "updateTime" && order === "descend") {
sort = "UPDATED_DESC";
if (columnKey === 'updateTime' && order === 'descend') {
sort = 'UPDATED_DESC';
}
const _query = this.state.query;
_query.order = sort || "UPDATED_DESC";
_query.order = sort || 'UPDATED_DESC';
this.setState({ query: _query }, () => this.queryQuestionPageList());
};
// 表头设置
parseColumns = () => {
// 权限判断
const isPermiss = ["CloudManager", "StoreManager"].includes(
User.getUserRole()
);
const isPermiss = ['CloudManager', 'StoreManager'].includes(User.getUserRole());
const columns = [
{
title: "题型",
key: "questionTypeEnum",
dataIndex: "questionTypeEnum",
width: "16%",
title: '题型',
key: 'questionTypeEnum',
dataIndex: 'questionTypeEnum',
width: '16%',
render: (val) => {
return questionTypeEnum[val];
},
},
{
title: "题目",
key: "questionStem",
dataIndex: "questionStem",
title: '题目',
key: 'questionStem',
dataIndex: 'questionStem',
ellipsis: {
showTitle: false,
},
render: (val) => {
var handleVal = val;
handleVal = handleVal.replace(/<(?!img|input).*?>/g, "");
handleVal = handleVal.replace(/<\s?input[^>]*>/gi, "_、");
handleVal = handleVal.replace(/\&nbsp\;/gi, " ");
handleVal = handleVal.replace(/style\s*?=\s*?([‘"])[\s\S]*?\1/gi, "");
handleVal = handleVal.replace(/<(?!img|input).*?>/g, '');
handleVal = handleVal.replace(/<\s?input[^>]*>/gi, '_、');
handleVal = handleVal.replace(/\&nbsp\;/gi, ' ');
handleVal = handleVal.replace(/style\s*?=\s*?([‘"])[\s\S]*?\1/gi, '');
return (
<Tooltip
overlayClassName="aid-tool-list"
overlayClassName='aid-tool-list'
title={
<div
style={{ maxWidth: 700, width: "auto" }}
style={{ maxWidth: 700, width: 'auto' }}
dangerouslySetInnerHTML={{
__html: handleVal,
}}
/>
}
placement="topLeft"
overlayStyle={{ maxWidth: 700 }}
>
placement='topLeft'
overlayStyle={{ maxWidth: 700 }}>
<div
className="one-line-text"
className='one-line-text'
dangerouslySetInnerHTML={{
__html: handleVal,
}}
......@@ -270,62 +249,47 @@ class QuestionList extends Component {
},
},
{
title: "正确率",
key: "accuracy",
dataIndex: "accuracy",
title: '正确率',
key: 'accuracy',
dataIndex: 'accuracy',
sorter: true,
showSorterTooltip: false,
width: "14%",
width: '14%',
render: (val) => {
return parseInt(val * 100) + "%";
return parseInt(val * 100) + '%';
},
},
{
title: "更新时间",
key: "updateTime",
dataIndex: "updateTime",
title: '更新时间',
key: 'updateTime',
dataIndex: 'updateTime',
sorter: true,
showSorterTooltip: false,
width: "24%",
width: '24%',
render: (val) => {
return formatDate("YYYY-MM-DD H:i:s", val);
return formatDate('YYYY-MM-DD H:i:s', val);
},
},
{
title: "操作",
key: "operate",
dataIndex: "operate",
width: "24%",
title: '操作',
key: 'operate',
dataIndex: 'operate',
width: '24%',
render: (val, record) => {
return (
<div className="record-operate">
<div
className="record-operate__item"
onClick={() => this.previewQuestion(record.id)}
>
<div className='record-operate'>
<div className='record-operate__item' onClick={() => this.previewQuestion(record.id)}>
预览
</div>
{isPermiss && <span className='record-operate__item split'> | </span>}
{isPermiss && (
<span className="record-operate__item split"> | </span>
)}
{isPermiss && (
<div
className="record-operate__item"
onClick={() =>
this.editQuestion(record.id, record.questionTypeEnum)
}
>
<div className='record-operate__item' onClick={() => this.editQuestion(record.id, record.questionTypeEnum)}>
编辑
</div>
)}
{isPermiss && <span className='record-operate__item split'> | </span>}
{isPermiss && (
<span className="record-operate__item split"> | </span>
)}
{isPermiss && (
<div
className="record-operate__item"
onClick={() => this.delQuestionConfirm(record)}
>
<div className='record-operate__item' onClick={() => this.delQuestionConfirm(record)}>
删除
</div>
)}
......@@ -374,13 +338,11 @@ class QuestionList extends Component {
// 删除题目确认弹窗
delQuestionConfirm(record) {
return Modal.confirm({
title: "提示",
content: "确定要删除此题目吗?",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe839; </span>
),
okText: "删除",
cancelText: "取消",
title: '提示',
content: '确定要删除此题目吗?',
icon: <span className='icon iconfont default-confirm-icon'>&#xe839; </span>,
okText: '删除',
cancelText: '取消',
onOk: () => {
this.deleteQuestion(record);
},
......@@ -397,7 +359,7 @@ class QuestionList extends Component {
};
AidToolService.deleteQuestion(params).then((res) => {
if (res.success) {
message.success("删除成功");
message.success('删除成功');
const { query, total, selectedRowKeys } = this.state;
const { size, current } = query;
const _query = query;
......@@ -409,11 +371,11 @@ class QuestionList extends Component {
}
data.query = _query;
if (selectedRowKeys.includes(record.id)) {
data.selectedRowKeys = _.reject(selectedRowKeys, item => item === record.id);
data.selectedRowKeys = _.reject(selectedRowKeys, (item) => item === record.id);
}
this.setState(data, () => {
this.queryQuestionPageList();
Bus.trigger("queryCategoryTree", "remain");
Bus.trigger('queryCategoryTree', 'remain');
});
}
});
......@@ -435,7 +397,7 @@ class QuestionList extends Component {
close={() => {
this.setState({ batchImportQuestionModal: null }, () => {
this.queryQuestionPageList();
Bus.trigger("queryCategoryTree", "remain");
Bus.trigger('queryCategoryTree', 'remain');
});
}}
categoryId={categoryId}
......@@ -459,23 +421,21 @@ class QuestionList extends Component {
setMoreOperationOption() {
return (
<Menu>
<Menu.Item key="2">
<Menu.Item key='2'>
<div
key="import"
key='import'
onClick={() => {
this.batchMove();
}}
>
}}>
批量移动
</div>
</Menu.Item>
<Menu.Item key="1">
<Menu.Item key='1'>
<div
key="import"
key='import'
onClick={() => {
this.batchDelete();
}}
>
}}>
批量删除
</div>
</Menu.Item>
......@@ -490,7 +450,7 @@ class QuestionList extends Component {
return null;
}
this.setState({ openMoveModal: true });
}
};
batchMoveRemote = (categoryId) => {
const { selectedRowKeys, query } = this.state;
......@@ -501,7 +461,8 @@ class QuestionList extends Component {
tenantId: User.getStoreId(),
userId: User.getUserId(),
};
Service.Hades('public/hades/batchMoveQuestion', data, { reject: true }).then((res) => {
Service.Hades('public/hades/batchMoveQuestion', data, { reject: true })
.then((res) => {
if (res.success) {
message.success('移动成功');
Bus.trigger('queryCategoryTree', 'remain');
......@@ -520,10 +481,11 @@ class QuestionList extends Component {
} else {
message.error('移动失败');
}
}).catch(() => {
message.error('移动失败');
})
}
.catch(() => {
message.error('移动失败');
});
};
batchDelete = () => {
const { selectedRowKeys, query } = this.state;
......@@ -532,13 +494,11 @@ class QuestionList extends Component {
return null;
}
Modal.confirm({
title: "确定要删除题目吗?",
content: "删除后,不可恢复。",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe839; </span>
),
okText: "删除",
cancelText: "取消",
title: '确定要删除题目吗?',
content: '删除后,不可恢复。',
icon: <span className='icon iconfont default-confirm-icon'>&#xe839; </span>,
okText: '删除',
cancelText: '取消',
onOk: () => {
const data = {
id: selectedRowKeys,
......@@ -546,7 +506,8 @@ class QuestionList extends Component {
tenantId: User.getStoreId(),
userId: User.getUserId(),
};
Service.Hades('public/hades/batchDeleteQuestion', data, { reject: true }).then((res) => {
Service.Hades('public/hades/batchDeleteQuestion', data, { reject: true })
.then((res) => {
if (res.success) {
message.success('删除成功');
Bus.trigger('queryCategoryTree', 'remain');
......@@ -565,28 +526,20 @@ class QuestionList extends Component {
} else {
message.error('删除失败');
}
}).catch(() => {
message.error('删除失败');
})
.catch(() => {
message.error('删除失败');
});
},
})
}
});
};
clearSelect = () => {
this.setState({ selectedRowKeys: [] });
}
};
render() {
const {
dataSource = [],
total,
query,
previewQuestionModal,
batchImportQuestionModal,
selectedRowKeys,
openMoveModal,
questionData,
} = this.state;
const { dataSource = [], total, query, previewQuestionModal, batchImportQuestionModal, selectedRowKeys, openMoveModal, questionData } = this.state;
const { current, size, categoryId, questionName, questionType } = query;
const { match } = this.props;
const rowSelection = {
......@@ -594,56 +547,44 @@ class QuestionList extends Component {
preserveSelectedRowKeys: true,
onChange: this.onSelectChange,
};
const defaultOptions = {
loop: true,
autoplay: true,
animationData: nodata,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
}
return (
<div className="question-list">
<div className="question-list-filter">
<Row type="flex" justify="space-between" align="top">
<div className="search-condition">
<div className="search-condition__item">
<span className="search-label">题目:</span>
<div className='question-list'>
<div className='question-list-filter'>
<Row type='flex' justify='space-between' align='top'>
<div className='search-condition'>
<div className='search-condition__item'>
<span className='search-label'>题目:</span>
<Search
placeholder="搜索题目名称"
placeholder='搜索题目名称'
value={questionName}
style={{ width: '100%' }}
onChange={(e) => {
this.handleChangeQuery("questionName", e.target.value);
this.handleChangeQuery('questionName', e.target.value);
}}
onSearch={() => {
this.queryQuestionPageList();
}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
enterButton={<span className='icon iconfont'>&#xe832;</span>}
/>
</div>
<div className="search-condition__item">
<span className="search-label">题型:</span>
<div className='search-condition__item'>
<span className='search-label'>题型:</span>
<Select
placeholder="请选择题目类型"
placeholder='请选择题目类型'
value={questionType}
style={{ width: '100%' }}
showSearch
allowClear
enterButton={<span className="icon iconfont">&#xe832;</span>}
filterOption={(inputVal, option) =>
option.props.children.includes(inputVal)
}
filterOption={(inputVal, option) => option.props.children.includes(inputVal)}
onChange={(value) => {
if (_.isEmpty(value)) {
this.handleChangeQuery("questionType", value);
this.handleChangeQuery('questionType', value);
}
}}
onSelect={(value) => {
this.handleChangeQuery("questionType", value);
}}
>
this.handleChangeQuery('questionType', value);
}}>
{_.map(questionTypeList, (item, index) => {
return (
<Select.Option value={item.value} key={item.value}>
......@@ -653,20 +594,16 @@ class QuestionList extends Component {
})}
</Select>
</div>
<div className="search-condition__item">
<span className="search-label">更新时间:</span>
<div className='search-condition__item'>
<span className='search-label'>更新时间:</span>
<RangePicker
value={
query.updateDateStart
? [moment(query.updateDateStart), moment(query.updateDateEnd)]
: null
}
value={query.updateDateStart ? [moment(query.updateDateStart), moment(query.updateDateEnd)] : null}
style={{ width: '100%' }}
format={"YYYY-MM-DD"}
format={'YYYY-MM-DD'}
onChange={(dates) => {
const _query = _.clone(query);
_query.updateDateStart = dates ? dates[0].startOf("day").valueOf() : null;
_query.updateDateEnd = dates ? dates[1].endOf("day").valueOf() : null;
_query.updateDateStart = dates ? dates[0].startOf('day').valueOf() : null;
_query.updateDateEnd = dates ? dates[1].endOf('day').valueOf() : null;
_query.current = 0;
this.setState({ query: _query }, () => this.queryQuestionPageList());
}}
......@@ -674,43 +611,44 @@ class QuestionList extends Component {
</div>
</div>
<div className="reset-fold-area">
<Tooltip title="清空筛选">
<span
className="resetBtn iconfont icon"
onClick={this.handleReset}
>
&#xe61b;{" "}
<div className='reset-fold-area'>
<Tooltip title='清空筛选'>
<span className='resetBtn iconfont icon' onClick={this.handleReset}>
&#xe61b;{' '}
</span>
</Tooltip>
</div>
</Row>
</div>
{["CloudManager", "StoreManager"].includes(User.getUserRole()) &&
(
{['CloudManager', 'StoreManager'].includes(User.getUserRole()) && (
<Space size={8}>
{_.isEmpty(selectedRowKeys) ?
(!!categoryId && [
<Button key="1" type="primary" onClick={this.handleCreateQuestion}>
{_.isEmpty(selectedRowKeys) ? (
!!categoryId && [
<Button key='1' type='primary' onClick={this.handleCreateQuestion}>
新建题目
</Button>,
<Button key="2" onClick={this.batchImportQuestion}>批量导入</Button>
])
: <div className="select-container">
<span className="con">
<Button key='2' onClick={this.batchImportQuestion}>
批量导入
</Button>,
]
) : (
<div className='select-container'>
<span className='con'>
<div>
<span className="icon iconfont tip">&#xe6f2;</span>
<span className="text">已选择{selectedRowKeys.length}项</span>
<span className='icon iconfont tip'>&#xe6f2;</span>
<span className='text'>已选择{selectedRowKeys.length}项</span>
</div>
<div>
<span className="clear" onClick={this.clearSelect}>清空</span>
<span className='clear' onClick={this.clearSelect}>
清空
</span>
</div>
</span>
</div>
}
)}
{!!categoryId ? (
<Dropdown overlay={this.setMoreOperationOption()}>
<Button id="more_operate">
<Button id='more_operate'>
更多操作
<DownOutlined />
</Button>
......@@ -723,7 +661,7 @@ class QuestionList extends Component {
)}
</Space>
)}
<div className="question-list-content">
<div className='question-list-content'>
<XMTable
rowKey={(record) => record.id}
dataSource={dataSource}
......@@ -733,45 +671,35 @@ class QuestionList extends Component {
onChange={this.handleChangeTable}
rowSelection={rowSelection}
renderEmpty={{
image: <div style={{ marginTop: 24 }}>
<Lottie
options={defaultOptions}
height={150}
width={150}
isStopped={false}
isPaused={false}
/>
</div>,
description: <span style={{ display: 'block', paddingBottom: 24 }}><span>还没有题目</span>
{["CloudManager", "StoreManager"].includes(User.getUserRole()) &&
categoryId && (
description: (
<span style={{ display: 'block', paddingBottom: 24 }}>
<span>还没有题目</span>
{['CloudManager', 'StoreManager'].includes(User.getUserRole()) && categoryId && (
<span>
,快去
<span
className="empty-list-tip"
className='empty-list-tip'
onClick={() => {
this.handleCreateQuestion();
}}
>
}}>
新建一个
</span>
吧!
</span>
)}
</span>
),
}}
/>
{total > 0 && (
<div className="box-footer">
<div className='box-footer'>
<PageControl
current={current - 1}
pageSize={size}
total={total}
toPage={(page) => {
const _query = { ...query, current: page + 1 };
this.setState({ query: _query }, () =>
this.queryQuestionPageList()
);
this.setState({ query: _query }, () => this.queryQuestionPageList());
}}
showSizeChanger={true}
onShowSizeChange={this.onShowSizeChange}
......@@ -780,10 +708,10 @@ class QuestionList extends Component {
)}
{previewQuestionModal}
{batchImportQuestionModal}
{openMoveModal &&
{openMoveModal && (
<MoveModal
visible={openMoveModal}
title="题目"
title='题目'
data={questionData}
categoryId={query.categoryId}
length={selectedRowKeys.length}
......@@ -793,12 +721,9 @@ class QuestionList extends Component {
this.setState({ openMoveModal: false });
}}
/>
}
)}
</div>
<Route
path={`${match.url}/question-operate-page`}
component={OperateQuestion}
/>
<Route path={`${match.url}/question-operate-page`} component={OperateQuestion} />
</div>
);
}
......
......@@ -32,7 +32,7 @@
color: #666666;
.input-box {
margin-bottom: 8px;
display: inline-block;
// display: inline-block;
*:not(p) {
font-weight: normal !important;
font-size: 14px !important;
......
......@@ -14,13 +14,13 @@ import UserManage from '@/modules/college-manage/UserManagePage';
import StoreDecorationPage from '@/modules/store-manage/StoreDecorationPage';
import CourseCatalogPage from '@/modules/store-manage/CourseCatalogPage';
import LiveCoursePage from '@/modules/course-manage/LiveCoursePage';
import AddLivePage from '@/modules/course-manage/AddLive'
import VideoCoursePage from '@/modules/course-manage/video-course'
import GraphicsCoursePage from '@/modules/course-manage/graphics-course'
import OfflineCoursePage from '@/modules/course-manage/offline-course'
import AddVideoCoursePage from '@/modules/course-manage/video-course/AddVideoCourse'
import AddGraphicsCoursePage from '@/modules/course-manage/graphics-course/AddGraphicsCourse'
import AddOfflineCoursePage from '@/modules/course-manage/offline-course/AddOfflineCourse'
import AddLivePage from '@/modules/course-manage/AddLive';
import VideoCoursePage from '@/modules/course-manage/video-course';
import GraphicsCoursePage from '@/modules/course-manage/graphics-course';
import OfflineCoursePage from '@/modules/course-manage/offline-course';
import AddVideoCoursePage from '@/modules/course-manage/video-course/AddVideoCourse';
import AddGraphicsCoursePage from '@/modules/course-manage/graphics-course/AddGraphicsCourse';
import AddOfflineCoursePage from '@/modules/course-manage/offline-course/AddOfflineCourse';
// import DataList from '@/modules/course-manage/DataList/DataList';
// import ClassBook from '@/modules/resource-disk';
import ResourceDisk from '@/modules/resource-disk';
......@@ -33,145 +33,152 @@ import CourseCategoryManage from '@/modules/teach-tool/components/CourseCategory
import QuestionManageIndex from '@/modules/teach-tool/question-manage/Index';
import PaperManageIndex from '@/modules/teach-tool/paper-manage/Index';
import ExaminationManagerIndex from '@/modules/teach-tool/examination-manager/Index';
import KnowledgeBase from "@/modules/knowledge-base/index";
import ExaminationManagerTestDetail from '@/modules/teach-tool/examination-manager/TestDetailPage';
import KnowledgeBase from '@/modules/knowledge-base/index';
import CollegeInfoPage from '@/modules/college-manage/CollegeInfoPage';
const mainRoutes = [
{
path: "/home",
path: '/home',
component: Home,
name: "中心首页",
name: '中心首页',
},
{
path: "/employees-manage",
path: '/employees-manage',
component: EmployeesManagePage,
name: "员工管理",
name: '员工管理',
},
{
path: '/college-employee',
component: EmployeeManage,
name: '员工管理'
name: '员工管理',
},
{
path: '/personal-info',
component: personalInfoPage,
name: '个人信息'
name: '个人信息',
},
{
path: "/user-manage",
path: '/user-manage',
component: UserManagePage,
name: "学员管理",
name: '学员管理',
},
{
path: '/college-user',
component: UserManage,
name: '学员管理'
name: '学员管理',
},
{
path: '/store-decoration',
component: StoreDecorationPage,
name: '学院装修'
name: '学院装修',
},
{
path: "/live-course",
path: '/live-course',
component: LiveCoursePage,
name: "直播课",
name: '直播课',
},
{
path: "/video-course",
path: '/video-course',
component: VideoCoursePage,
name: "视频课",
name: '视频课',
},
{
path: "/graphics-course",
path: '/graphics-course',
component: GraphicsCoursePage,
name: "图文课",
name: '图文课',
},
{
path: "/offline-course",
path: '/offline-course',
component: OfflineCoursePage,
name: "线下课",
name: '线下课',
},
{
path: "/create-live-course",
path: '/create-live-course',
component: AddLivePage,
name: "创建直播课",
name: '创建直播课',
},
{
path: "/create-video-course",
path: '/create-video-course',
component: AddVideoCoursePage,
name: "创建视频课",
name: '创建视频课',
},
{
path: "/knowledge-base",
path: '/knowledge-base',
// component:ResourceDisk,
component: KnowledgeBase,
name: "知识库",
name: '知识库',
},
{
path: "/create-graphics-course",
path: '/create-graphics-course',
component: AddGraphicsCoursePage,
name: "创建图文课",
name: '创建图文课',
},
{
path: "/create-offline-course",
path: '/create-offline-course',
component: AddOfflineCoursePage,
name: "创建线下课",
name: '创建线下课',
},
{
path: "/resource-disk",
path: '/resource-disk',
component: ResourceDisk,
name: "资料云盘",
name: '资料云盘',
},
{
path: '/question-manage-index',
component:QuestionManageIndex,
name: '题库'
component: QuestionManageIndex,
name: '题库',
},
{
path: '/paper-manage-index',
component:PaperManageIndex,
name: '试卷'
component: PaperManageIndex,
name: '试卷',
},
{
path: '/examination-manage-index',
component:ExaminationManagerIndex,
name: '考试'
component: ExaminationManagerIndex,
name: '考试',
},
{
path: '/test-detail/:testId',
component: ExaminationManagerTestDetail,
// () => import('@/modules/teach-tool/examination-manager/TestDetailPage'),
name: '答题详情',
},
{
path: '/course-category-manage',
component:CourseCategoryManage,
name: '分类管理'
component: CourseCategoryManage,
name: '分类管理',
},
{
path: "/switch-route",
path: '/switch-route',
component: SwitchRoute,
name: "登录后跳转承载页",
name: '登录后跳转承载页',
},
{
path: "/plan",
path: '/plan',
component: PlanPage,
name: "培训计划",
name: '培训计划',
},
{
path: "/create-plan",
path: '/create-plan',
component: AddPlanPage,
name: "创建视频课",
name: '创建视频课',
},
{
path: '/store-info',
component:StoreInfoPage,
name: '学院信息'
component: StoreInfoPage,
name: '学院信息',
},
{
path: '/college-info',
component: CollegeInfoPage,
name: '学院信息'
name: '学院信息',
},
{
path: "/learning-data",
path: '/learning-data',
component: LearningDataPage,
name: "学习数据",
name: '学习数据',
},
];
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-21 15:53:31
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-05-30 11:00:09
* @LastEditTime: 2021-06-08 16:46:15
* @Description: 描述一下咯
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -44,22 +44,6 @@ export const menuList: any = [
]
},
{
groupName: "知识库",
groupCode: "CloudKnowledge",
icon: '&#xe8a8;',
link: '/knowledge-base',
img:'https://image.xiaomaiketang.com/xm/8sbP5rGQWh.png',
selectImg:'https://image.xiaomaiketang.com/xm/hJKCfibC22.png'
},
{
groupName: "资料云盘",
groupCode: "CloudDisk",
icon: '&#xe8aa;',
link: '/resource-disk',
img:'https://image.xiaomaiketang.com/xm/zGKbXJPzXx.png',
selectImg:'https://image.xiaomaiketang.com/xm/5sN4MzjxYc.png',
},
{
groupName: "培训管理",
groupCode: "TrainManage",
icon: '&#xe8a6;',
......@@ -96,17 +80,28 @@ export const menuList: any = [
]
},
{
groupName: "学院管理",
groupCode: "CloudShop",
icon: '&#xe8a4;',
img:'https://image.xiaomaiketang.com/xm/Q8i5RSMKNc.png',
children: [
groupName: "知识库",
groupCode: "CloudKnowledge",
icon: '&#xe8a8;',
link: '/knowledge-base',
img:'https://image.xiaomaiketang.com/xm/8sbP5rGQWh.png',
selectImg:'https://image.xiaomaiketang.com/xm/hJKCfibC22.png'
},
{
groupName: "学院信息",
groupCode: "ShopInfo",
link: '/college-info'
groupName: "资料云盘",
groupCode: "CloudDisk",
icon: '&#xe8aa;',
link: '/resource-disk',
img:'https://image.xiaomaiketang.com/xm/zGKbXJPzXx.png',
selectImg:'https://image.xiaomaiketang.com/xm/5sN4MzjxYc.png',
},
{
groupName: "人员管理",
groupCode: "PersonManage",
icon: '&#xe8a4;',
img:'https://image.xiaomaiketang.com/xm/PRCnrt35y8.png',
children: [
{
groupName: "员工管理",
groupCode: "ShopStaff",
link: '/college-employee'
......@@ -115,11 +110,19 @@ export const menuList: any = [
groupName: "学员管理",
groupCode: "ShopUser",
link: '/college-user'
}
]
},
{
groupName: "课程分类",
groupCode: "CourseCategory",
link: '/course-category-manage'
groupName: "学院管理",
groupCode: "CloudShop",
icon: '&#xe8a4;',
img:'https://image.xiaomaiketang.com/xm/Q8i5RSMKNc.png',
children: [
{
groupName: "学院信息",
groupCode: "ShopInfo",
link: '/college-info'
},
{
groupName: "学院装修",
......@@ -127,6 +130,11 @@ export const menuList: any = [
link: '/store-decoration'
},
{
groupName: "分类管理",
groupCode: "CourseCategory",
link: '/course-category-manage'
},
{
groupName: "H5学院",
groupCode: "ShopDecorationH5",
link: '/store-decoration/h5'
......@@ -138,5 +146,4 @@ export const menuList: any = [
}
]
},
]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment