Compare commits

...

46 Commits

Author SHA1 Message Date
yangbin cf04ac37df Merge remote-tracking branch 'origin/main' 2026-08-26 10:07:11 +08:00
yangbin 3443d24d42 学员信息维护籍贯列表项的居中展示 2026-08-26 10:06:39 +08:00
zhaichao 09578b9b58 样式变更 2026-08-26 10:06:16 +08:00
zhaichao f32fdc664d chore: 取消追踪 node_modules 2026-08-26 09:57:30 +08:00
zhaichao f2ad0509c4 恢复最新前端代码 2026-08-26 09:52:26 +08:00
zhaichao 12cac0fce3 Merge branch 'main' of https://gitea.fengyingkj.top/zhaichao/education 2026-08-26 09:40:27 +08:00
zhaichao 394eb0285d Merge remote-tracking branch 'upstream/main' 2026-08-26 09:31:34 +08:00
zhaichao 9b8c4bfab6 合并 main 分支并处理冲突 2026-08-26 09:27:48 +08:00
yangbin bfb1afb470 课表以及课表调整申请 2026-08-25 20:07:13 +08:00
yangbin 303d15e234 学员信息维护 2026-08-25 19:48:36 +08:00
yangbin 13d72c54f2 停用 2026-08-25 19:25:55 +08:00
zhaichao 0240f410b6 教员 2026-08-25 18:21:53 +08:00
zhaichao 76edcb8cb3 Merge branch 'main' of https://gitea.fengyingkj.top/zhaichao/education 2026-08-25 18:08:32 +08:00
zhaichao 5c107426c1 教员管理,教研室管理 2026-08-25 18:08:29 +08:00
yangbin 7f178cb23f 全部列表页列表项 展示居中 2026-08-25 17:52:41 +08:00
yangbin 0d3c89a0c4 人才培养方案查询框的 字典录入 接口对接 2026-08-25 17:45:04 +08:00
yangbin 2adb096ebe Merge remote-tracking branch 'origin/main' 2026-08-25 17:45:00 +08:00
zhaichao 7fa8041bf7 教研室管理查询区新增是否停用 2026-08-25 17:44:32 +08:00
yangbin d7d138b8ef 新增教学场地弹窗内容调整 2026-08-25 17:39:37 +08:00
zhaichao 169b30a5c2 Merge branch 'main' of https://gitea.fengyingkj.top/zhaichao/education 2026-08-25 17:24:36 +08:00
zhaichao 94e43d7d8b 角色页面控制台报错 2026-08-25 17:24:31 +08:00
yangbin 05c1bce6d3 Merge remote-tracking branch 'origin/main' 2026-08-25 17:21:08 +08:00
yangbin 3276f47928 教学业务:教学场地里的教学场地类型下拉框 反向覆盖问题修复 2026-08-25 17:20:55 +08:00
zhaichao a731eafe29 报错修复 2026-08-25 17:17:00 +08:00
zhaichao f60db56719 Merge branch 'main' of https://gitea.fengyingkj.top/zhaichao/education 2026-08-25 17:05:48 +08:00
zhaichao 872eb4c84a 序号跨页连续 2026-08-25 17:05:41 +08:00
yangbin 99436d14c5 “分组教学任务”的“任务名称”列已居中
同步修正“教学任务计划管理”中的相同列
检查并统一了教学场地、培养方案、课表、调课、课表冲突、班次学期等列表中的短名称和编号列
2026-08-25 16:59:49 +08:00
yangbin 9d45526af2 Merge remote-tracking branch 'origin/main' 2026-08-25 16:52:32 +08:00
yangbin c98cd0aaca 分组教学任务查不到数据bug修复 2026-08-25 16:52:02 +08:00
zhaichao af7370def4 教学大纲新增对话框停用改复选框 2026-08-25 15:45:10 +08:00
yangbin 99ae7a7947 Merge remote-tracking branch 'origin/main' 2026-08-25 15:40:19 +08:00
yangbin b2d27c87d2 教学大纲字典统一 新增专业 课程等字典调整 2026-08-25 15:40:13 +08:00
zhaichao ada2d04736 Merge branch 'main' of https://gitea.fengyingkj.top/zhaichao/education 2026-08-25 15:11:14 +08:00
zhaichao 5a55d74a86 学期信息新增重复校验 2026-08-25 15:11:01 +08:00
yangbin e89863900e tab页面修改 只保持最近的八个页面 2026-08-25 15:09:20 +08:00
yangbin 2d738549b5 Merge remote-tracking branch 'origin/main' 2026-08-25 14:53:43 +08:00
yangbin d58d044c6a 全局主按钮 颜色样式统一 2026-08-25 14:53:34 +08:00
zhaichao ebf4928e3f 课表 2026-08-25 14:48:51 +08:00
yangbin 6f61e87303 Merge remote-tracking branch 'origin/main' 2026-08-25 14:46:35 +08:00
yangbin cab512e033 全局列表展示下侧的滚动条隐藏 2026-08-25 14:46:28 +08:00
zhaichao 656ee817e6 样式变更 2026-08-25 14:16:12 +08:00
zhaichao 7bfc19c4f4 样式变更 2026-08-25 10:43:24 +08:00
zhaichao 54fa1c6be2 样式变更 2026-08-25 09:47:30 +08:00
zhaichao 0934a4d910 样式变更 2026-08-25 09:29:11 +08:00
yangbin 763bf34c3a 系统风格以及部分页面样式变更 2026-08-24 18:35:40 +08:00
zhaichao 9f4571a40e 首页只保留通知公告 2026-08-24 16:11:05 +08:00
371 changed files with 72260 additions and 1 deletions
-1
View File
@@ -2,7 +2,6 @@
<project version="4"> <project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true"> <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="DM" uuid="a3a7e92a-b8da-4229-8b83-5db11f9db9a9"> <data-source source="LOCAL" name="DM" uuid="a3a7e92a-b8da-4229-8b83-5db11f9db9a9">
<driver-ref>9fcb59ee-b3c5-470d-89df-ad01e7cabb15</driver-ref>
<imported>true</imported> <imported>true</imported>
<configured-by-url>true</configured-by-url> <configured-by-url>true</configured-by-url>
<remarks>$PROJECT_DIR$/backend/roomroot-admin/src/main/resources/application-druid.yml</remarks> <remarks>$PROJECT_DIR$/backend/roomroot-admin/src/main/resources/application-druid.yml</remarks>
+22
View File
@@ -0,0 +1,22 @@
# 告诉EditorConfig插件,这是根文件,不用继续往上查找
root = true
# 匹配全部文件
[*]
# 设置字符集
charset = utf-8
# 缩进风格,可选space、tab
indent_style = space
# 缩进的空格数
indent_size = 2
# 结尾换行符,可选lf、cr、crlf
end_of_line = lf
# 在文件结尾插入新行
insert_final_newline = true
# 删除一行中的前后空格
trim_trailing_whitespace = true
# 匹配md结尾的文件
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
+11
View File
@@ -0,0 +1,11 @@
# 页面标题
VUE_APP_TITLE = 教学管理信息系统
# 开发环境配置
ENV = 'development'
# 智慧教学管理系统/开发环境
VUE_APP_BASE_API = '/api'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
+8
View File
@@ -0,0 +1,8 @@
# 页面标题
VUE_APP_TITLE = 教学管理信息系统
# 生产环境配置
ENV = 'production'
# 智慧教学管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
+12
View File
@@ -0,0 +1,12 @@
# 页面标题
VUE_APP_TITLE = 教学管理信息系统
BABEL_ENV = production
NODE_ENV = production
# 测试环境配置
ENV = 'staging'
# 智慧教学管理系统/测试环境
VUE_APP_BASE_API = '/stage-api'
+23
View File
@@ -0,0 +1,23 @@
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/*.log
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local
package-lock.json
yarn.lock
+30
View File
@@ -0,0 +1,30 @@
## 开发
```bash
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com
# 启动服务
npm run dev
```
浏览器访问 http://localhost:80
## 发布
```bash
# 构建测试环境
npm run build:stage
# 构建生产环境
npm run build:prod
```
+13
View File
@@ -0,0 +1,13 @@
module.exports = {
presets: [
// https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
'@vue/cli-plugin-babel/preset'
],
'env': {
'development': {
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
'plugins': ['dynamic-import-node']
}
}
}
+18813
View File
File diff suppressed because it is too large Load Diff
+72
View File
@@ -0,0 +1,72 @@
{
"name": "roomroot",
"version": "3.9.2",
"description": "教学管理信息系统",
"author": "教务",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"dict:init-course-type": "node scripts/init-course-type-dict.js"
},
"keywords": [
"vue",
"admin",
"dashboard",
"element-ui",
"boilerplate",
"admin-template",
"management-system"
],
"repository": {
"type": "git",
"url": "https://gitee.com/y_project/roomroot-Vue.git"
},
"dependencies": {
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.30.3",
"clipboard": "2.0.8",
"core-js": "3.37.1",
"echarts": "5.4.0",
"element-ui": "2.15.14",
"file-saver": "2.0.5",
"fuse.js": "6.4.3",
"highlight.js": "9.18.5",
"js-beautify": "1.13.0",
"js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1",
"nprogress": "0.2.0",
"quill": "2.0.2",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
"vue": "2.6.12",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-router": "3.4.9",
"vuedraggable": "2.24.3",
"vuex": "3.6.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-service": "4.4.6",
"babel-plugin-dynamic-import-node": "2.3.3",
"chalk": "4.1.0",
"compression-webpack-plugin": "6.1.2",
"connect": "3.6.6",
"sass": "1.32.13",
"sass-loader": "10.1.1",
"script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.1.1",
"vue-template-compiler": "2.6.12"
},
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}
Binary file not shown.
File diff suppressed because one or more lines are too long
+208
View File
@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style>
html,
body,
#app {
height: 100%;
margin: 0px;
padding: 0px;
}
.chromeframe {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
}
#loader {
display: block;
position: relative;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
}
#loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 3s linear infinite;
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
-ms-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
}
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
#loader-wrapper .loader-section {
position: fixed;
top: 0;
width: 51%;
height: 100%;
background: #7171C6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
#loader-wrapper .loader-section.section-left {
left: 0;
}
#loader-wrapper .loader-section.section-right {
right: 0;
}
.loaded #loader-wrapper .loader-section.section-left {
-webkit-transform: translateX(-100%);
-ms-transform: translateX(-100%);
transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader-wrapper .loader-section.section-right {
-webkit-transform: translateX(100%);
-ms-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader {
opacity: 0;
-webkit-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
.loaded #loader-wrapper {
visibility: hidden;
-webkit-transform: translateY(-100%);
-ms-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
.no-js #loader-wrapper {
display: none;
}
.no-js h1 {
color: #222222;
}
#loader-wrapper .load_title {
font-family: 'Open Sans';
color: #FFF;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
#loader-wrapper .load_title span {
font-weight: normal;
font-style: italic;
font-size: 13px;
color: #FFF;
opacity: 0.5;
}
</style>
</head>
<body>
<div id="app">
<div id="loader-wrapper">
<div id="loader"></div>
<div class="loader-section section-left"></div>
<div class="loader-section section-right"></div>
<div class="load_title">正在加载系统资源,请耐心等待</div>
</div>
</div>
</body>
</html>
+2
View File
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /
File diff suppressed because one or more lines are too long
+193
View File
@@ -0,0 +1,193 @@
/**
* 版权所有,内部使用。
*
* @description 初始化教学大纲使用的课类型字典,可重复执行且不会重复插入。
* @author 软件研发部
* @since 2026-08-25
*/
const DICT_TYPE = 'course_type'
const DICT_NAME = '课类型'
const DEFAULT_API_BASE_URL = 'http://localhost/api'
const DEFAULT_ADMIN_USERNAME = 'admin'
const DICT_ITEMS = [
{ label: '必修', value: '必修' },
{ label: '选修', value: '选修' },
{ label: '实践', value: '实践' }
]
let authToken = ''
function readHiddenInput(prompt) {
if (!process.stdin.isTTY || !process.stdin.setRawMode) {
throw new Error('当前终端不支持隐藏输入,请在 PowerShell 中直接运行该脚本')
}
return new Promise((resolve, reject) => {
let input = ''
function cleanup() {
process.stdin.removeListener('data', handleInput)
process.stdin.setRawMode(false)
process.stdin.pause()
process.stdout.write('\n')
}
function handleInput(characters) {
for (const character of characters) {
if (character === '\u0003') {
cleanup()
reject(new Error('用户取消执行'))
return
}
if (character === '\r' || character === '\n') {
cleanup()
resolve(input)
return
}
if (character === '\u0008' || character === '\u007f') {
input = input.slice(0, -1)
continue
}
if (character >= ' ') {
input += character
}
}
}
process.stdout.write(prompt)
process.stdin.setEncoding('utf8')
process.stdin.setRawMode(true)
process.stdin.resume()
process.stdin.on('data', handleInput)
})
}
async function authenticate() {
const environmentToken = process.env.EDUCATION_API_TOKEN
if (environmentToken) {
authToken = environmentToken.replace(/^Bearer\s+/i, '')
return
}
const username = process.env.EDUCATION_ADMIN_USERNAME || DEFAULT_ADMIN_USERNAME
let password = await readHiddenInput(`请输入管理员 ${username} 的密码:`)
const response = await fetch(getApiBaseUrl() + '/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json;charset=utf-8' },
body: JSON.stringify({ username, password, code: '', uuid: '' })
})
password = ''
const result = await response.json()
if (!response.ok || result.code !== 200 || !result.token) {
throw new Error(result.msg || `登录失败:HTTP ${response.status}`)
}
authToken = result.token
}
function getApiBaseUrl() {
const configuredUrl = process.env.EDUCATION_API_BASE_URL || DEFAULT_API_BASE_URL
return configuredUrl.replace(/\/+$/, '')
}
async function request(path, options = {}) {
if (!authToken) {
throw new Error('尚未完成管理员认证')
}
const response = await fetch(getApiBaseUrl() + path, {
...options,
headers: {
Authorization: 'Bearer ' + authToken,
'Content-Type': 'application/json;charset=utf-8',
...(options.headers || {})
}
})
const result = await response.json()
if (!response.ok || result.code !== 200) {
throw new Error(result.msg || `请求失败:HTTP ${response.status}`)
}
return result
}
async function ensureDictType() {
const query = new URLSearchParams({
pageNum: '1',
pageSize: '10',
dictType: DICT_TYPE
})
const result = await request('/system/dict/type/list?' + query.toString())
const hasDictType = (result.rows || []).some(item => item.dictType === DICT_TYPE)
if (hasDictType) {
console.log(`字典类型 ${DICT_TYPE} 已存在,跳过新增`)
return
}
await request('/system/dict/type', {
method: 'POST',
body: JSON.stringify({
dictName: DICT_NAME,
dictType: DICT_TYPE,
status: '0',
remark: '教学大纲课类型列表'
})
})
console.log(`已新增字典类型 ${DICT_TYPE}`)
}
async function ensureDictItems() {
const query = new URLSearchParams({
pageNum: '1',
pageSize: '100',
dictType: DICT_TYPE
})
const result = await request('/system/dict/data/list?' + query.toString())
const existingValues = new Set((result.rows || []).map(item => item.dictValue))
for (const [index, item] of DICT_ITEMS.entries()) {
if (existingValues.has(item.value)) {
console.log(`字典项 ${item.label} 已存在,跳过新增`)
continue
}
await request('/system/dict/data', {
method: 'POST',
body: JSON.stringify({
dictSort: index + 1,
dictLabel: item.label,
dictValue: item.value,
dictType: DICT_TYPE,
cssClass: '',
listClass: 'default',
isDefault: 'N',
status: '0',
remark: '教学大纲课类型'
})
})
console.log(`已新增字典项 ${item.label}`)
}
}
async function refreshDictCache() {
await request('/system/dict/type/refreshCache', { method: 'DELETE' })
console.log('字典缓存已刷新')
}
async function main() {
await authenticate()
await ensureDictType()
await ensureDictItems()
await refreshDictCache()
console.log('课类型字典初始化完成')
}
main().catch(error => {
console.error('课类型字典初始化失败:' + error.message)
process.exitCode = 1
})
+11
View File
@@ -0,0 +1,11 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: "App"
}
</script>
+42
View File
@@ -0,0 +1,42 @@
import request from '@/utils/request'
// ======================== 课时补助核算:课时统计 / 课时费统计 ========================
// 接口前缀 /ks,经 vue.config.js 代理转发为 /api/ks;返回行为 HourStatisticsVO。
// 分页查询课时统计(支持 nd 年度、xq 学期序号、jyxm 教员姓名)
export function listHourStatistics(query) {
return request({
url: '/ks/hour-stat/list',
method: 'get',
params: query
})
}
// 导出课时统计 Excel(返回 Blob,文件名 课时统计.xlsx)
export function exportHourStatistics(query) {
return request({
url: '/ks/hour-stat/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 分页查询课时费统计(支持 nd、xq、jyxm、ksfbzbh 课时费标准编号)
export function listFeeStatistics(query) {
return request({
url: '/ks/fee-stat/list',
method: 'get',
params: query
})
}
// 导出课时费统计 Excel(返回 Blob,文件名 课时费统计.xlsx)
export function exportFeeStatistics(query) {
return request({
url: '/ks/fee-stat/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
@@ -0,0 +1,69 @@
import request from '@/utils/request'
// ======================== 联教联训管理(课时补助项目) ========================
// 接口前缀 /ks,经 vue.config.js 代理转发为 /api/ks;后端实体为 KSBZXM。
// 新增联教联训(编号为空时后端自动生成 UUID)
export function addJointTraining(data) {
return request({
url: '/ks/yjlx/add',
method: 'post',
data: data
})
}
// 删除联教联训
export function deleteJointTraining(bh) {
return request({
url: '/ks/yjlx/delete',
method: 'post',
params: { bh: bh }
})
}
// 修改联教联训
export function updateJointTraining(data) {
return request({
url: '/ks/yjlx/update',
method: 'post',
data: data
})
}
// 按编号查询联教联训详情
export function getJointTraining(bh) {
return request({
url: '/ks/yjlx/get',
method: 'get',
params: { bh: bh }
})
}
// 分页查询联教联训列表(支持名称模糊)
export function listJointTraining(query) {
return request({
url: '/ks/yjlx/list',
method: 'get',
params: query
})
}
// 导入联教联训 Excel(multipart,字段名 file)
export function importJointTraining(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/ks/yjlx/import',
method: 'post',
data: formData
})
}
// 导出联教联训到 Excel(返回 Blob)
export function exportJointTraining() {
return request({
url: '/ks/yjlx/export',
method: 'get',
responseType: 'blob'
})
}
+87
View File
@@ -0,0 +1,87 @@
import request from '@/utils/request'
// ======================== 方案管理:课时费方案 / 课时方案 ========================
// 接口前缀 /ks,经 vue.config.js 代理转发为 /api/ks。
// ---------- 课时费方案(KSFBZ) ----------
// 分页列表(名称模糊)
export function listFeeStandard(query) {
return request({
url: '/ks/fee-standard/list',
method: 'get',
params: query
})
}
// 详情
export function getFeeStandard(bh) {
return request({
url: '/ks/fee-standard/get',
method: 'get',
params: { bh: bh }
})
}
// 新增(编号为空时后端自动生成 UUID)
export function addFeeStandard(data) {
return request({
url: '/ks/fee-standard/add',
method: 'post',
data: data
})
}
// 编辑(编号必传)
export function updateFeeStandard(data) {
return request({
url: '/ks/fee-standard/update',
method: 'post',
data: data
})
}
// 删除
export function deleteFeeStandard(bh) {
return request({
url: '/ks/fee-standard/delete',
method: 'post',
params: { bh: bh }
})
}
// ---------- 课时方案(KSXSFA) ----------
// 分页列表(名称模糊)
export function listCoefficientPlan(query) {
return request({
url: '/ks/coefficient-plan/list',
method: 'get',
params: query
})
}
// 详情
export function getCoefficientPlan(bh) {
return request({
url: '/ks/coefficient-plan/get',
method: 'get',
params: { bh: bh }
})
}
// 新增(编号为空时后端自动生成 UUID)
export function addCoefficientPlan(data) {
return request({
url: '/ks/coefficient-plan/add',
method: 'post',
data: data
})
}
// 编辑(编号必传)
export function updateCoefficientPlan(data) {
return request({
url: '/ks/coefficient-plan/update',
method: 'post',
data: data
})
}
+125
View File
@@ -0,0 +1,125 @@
import request from '@/utils/request'
// ======================== 教学日志核心(以 api.txt 为准) ========================
// 接口前缀 /log,经 vue.config.js 代理转发为 /api/log(axios baseURL 为 /api)。
// 分页条件查询教学日志列表(待上报视图)
// 支持参数:pageNum pageSize ksrq jsrq kcmc jys jxff skjy rzzt pxqb gdqk gdxxqk rwlb
export function getTeachingLogList(query) {
return request({
url: '/log/teaching-log/list',
method: 'get',
params: query
})
}
// 分页条件查询已上报的教学日志列表(状态固定为「已上报」)
export function getReportedTeachingLogList(query) {
return request({
url: '/log/teaching-log/reported/list',
method: 'get',
params: query
})
}
// 分页条件查询已审核的教学日志列表(状态固定为「已审核」)
export function getAuditedTeachingLogList(query) {
return request({
url: '/log/teaching-log/audited/list',
method: 'get',
params: query
})
}
// 新增教学日志(请求体为 SSKCB_RZ 实体)
export function addTeachingLog(data) {
return request({
url: '/log/teaching-log/add',
method: 'post',
data: data
})
}
// 编辑教学日志(请求体为 SSKCB_RZ 实体,bh 必传)
export function updateTeachingLog(data) {
return request({
url: '/log/teaching-log/update',
method: 'post',
data: data
})
}
// 根据编号查询教学日志详情
export function getTeachingLogByBh(bh) {
return request({
url: '/log/teaching-log/get',
method: 'get',
params: { bh: bh }
})
}
// 提交教学日志审核,接口形态:POST /log/teaching-log/submit?bh=&targetStatus=
export function submitTeachingLog(bh, targetStatus) {
return request({
url: '/log/teaching-log/submit',
method: 'post',
params: { bh: bh, targetStatus: targetStatus }
})
}
// 审核通过教学日志,接口形态:GET /log/teaching-log/approve?bh=&feedback=
export function approveTeachingLog(bh, feedback) {
return request({
url: '/log/teaching-log/approve',
method: 'get',
params: { bh: bh, feedback: feedback }
})
}
// 退回教学日志(撤回重填),接口形态:POST /log/teaching-log/reject?bh=&thyj=
export function rejectTeachingLog(bh, thyj) {
return request({
url: '/log/teaching-log/reject',
method: 'post',
params: { bh: bh, thyj: thyj }
})
}
// 根据课表自动创建教学日志,接口形态:POST /log/teaching-log/auto-create?tybh=
export function autoCreateTeachingLog(tybh) {
return request({
url: '/log/teaching-log/auto-create',
method: 'post',
params: { tybh: tybh }
})
}
// 批量导入教学日志 Excel,接口形态:POST /log/teaching-log/import-excel(multipart,字段名 file)
export function importTeachingLogExcel(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/log/teaching-log/import-excel',
method: 'post',
data: formData
})
}
// 导出教学日志 Excel(返回 Blob),接口形态:GET /log/teaching-log/export
export function exportTeachingLog(query) {
return request({
url: '/log/teaching-log/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 下载导入模板(返回 Blob),接口形态:GET /log/teaching-log/download-template
export function downloadTeachingLogTemplate() {
return request({
url: '/log/teaching-log/download-template',
method: 'get',
responseType: 'blob'
})
}
+58
View File
@@ -0,0 +1,58 @@
import request from '@/utils/request'
// 登录方法
export function login(username, password, code, uuid) {
const data = {
username,
password,
code,
uuid
}
return request({
url: '/login',
headers: {
isToken: false,
repeatSubmit: false
},
method: 'post',
data: data
})
}
// 注册方法
export function register(data) {
return request({
url: '/register',
headers: {
isToken: false
},
method: 'post',
data: data
})
}
// 获取用户详细信息
export function getInfo() {
return request({
url: '/getInfo',
method: 'get'
})
}
// 解锁屏幕
export function unlockScreen(password) {
return request({
url: '/unlockscreen',
method: 'post',
data: { password }
})
}
// 退出方法
export function logout() {
return request({
url: '/logout',
method: 'post'
})
}
+9
View File
@@ -0,0 +1,9 @@
import request from '@/utils/request'
// 获取路由
export const getRouters = () => {
return request({
url: '/getRouters',
method: 'get'
})
}
+57
View File
@@ -0,0 +1,57 @@
import request from '@/utils/request'
// 查询缓存详细
export function getCache() {
return request({
url: '/monitor/cache',
method: 'get'
})
}
// 查询缓存名称列表
export function listCacheName() {
return request({
url: '/monitor/cache/getNames',
method: 'get'
})
}
// 查询缓存键名列表
export function listCacheKey(cacheName) {
return request({
url: '/monitor/cache/getKeys/' + cacheName,
method: 'get'
})
}
// 查询缓存内容
export function getCacheValue(cacheName, cacheKey) {
return request({
url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey,
method: 'get'
})
}
// 清理指定名称缓存
export function clearCacheName(cacheName) {
return request({
url: '/monitor/cache/clearCacheName/' + cacheName,
method: 'delete'
})
}
// 清理指定键名缓存
export function clearCacheKey(cacheKey) {
return request({
url: '/monitor/cache/clearCacheKey/' + cacheKey,
method: 'delete'
})
}
// 清理全部缓存
export function clearCacheAll() {
return request({
url: '/monitor/cache/clearCacheAll',
method: 'delete'
})
}
+71
View File
@@ -0,0 +1,71 @@
import request from '@/utils/request'
// 查询定时任务调度列表
export function listJob(query) {
return request({
url: '/monitor/job/list',
method: 'get',
params: query
})
}
// 查询定时任务调度详细
export function getJob(jobId) {
return request({
url: '/monitor/job/' + jobId,
method: 'get'
})
}
// 新增定时任务调度
export function addJob(data) {
return request({
url: '/monitor/job',
method: 'post',
data: data
})
}
// 修改定时任务调度
export function updateJob(data) {
return request({
url: '/monitor/job',
method: 'put',
data: data
})
}
// 删除定时任务调度
export function delJob(jobId) {
return request({
url: '/monitor/job/' + jobId,
method: 'delete'
})
}
// 任务状态修改
export function changeJobStatus(jobId, status) {
const data = {
jobId,
status
}
return request({
url: '/monitor/job/changeStatus',
method: 'put',
data: data
})
}
// 定时任务立即执行一次
export function runJob(jobId, jobGroup) {
const data = {
jobId,
jobGroup
}
return request({
url: '/monitor/job/run',
method: 'put',
data: data
})
}
+26
View File
@@ -0,0 +1,26 @@
import request from '@/utils/request'
// 查询调度日志列表
export function listJobLog(query) {
return request({
url: '/monitor/jobLog/list',
method: 'get',
params: query
})
}
// 删除调度日志
export function delJobLog(jobLogId) {
return request({
url: '/monitor/jobLog/' + jobLogId,
method: 'delete'
})
}
// 清空调度日志
export function cleanJobLog() {
return request({
url: '/monitor/jobLog/clean',
method: 'delete'
})
}
+43
View File
@@ -0,0 +1,43 @@
import request from '@/utils/request'
// 查询登录日志列表
export function list(query) {
return request({
url: '/monitor/logininfor/list',
method: 'get',
params: query
})
}
// 查询首页登录日志列表
export function homeList(query) {
return request({
url: '/monitor/logininfor/homeList',
method: 'get',
params: query
})
}
// 删除登录日志
export function delLogininfor(infoId) {
return request({
url: '/monitor/logininfor/' + infoId,
method: 'delete'
})
}
// 解锁用户登录状态
export function unlockLogininfor(userName) {
return request({
url: '/monitor/logininfor/unlock/' + userName,
method: 'get'
})
}
// 清空登录日志
export function cleanLogininfor() {
return request({
url: '/monitor/logininfor/clean',
method: 'delete'
})
}
+18
View File
@@ -0,0 +1,18 @@
import request from '@/utils/request'
// 查询在线用户列表
export function list(query) {
return request({
url: '/monitor/online/list',
method: 'get',
params: query
})
}
// 强退用户
export function forceLogout(tokenId) {
return request({
url: '/monitor/online/' + tokenId,
method: 'delete'
})
}
+26
View File
@@ -0,0 +1,26 @@
import request from '@/utils/request'
// 查询操作日志列表
export function list(query) {
return request({
url: '/monitor/operlog/list',
method: 'get',
params: query
})
}
// 删除操作日志
export function delOperlog(operId) {
return request({
url: '/monitor/operlog/' + operId,
method: 'delete'
})
}
// 清空操作日志
export function cleanOperlog() {
return request({
url: '/monitor/operlog/clean',
method: 'delete'
})
}
+9
View File
@@ -0,0 +1,9 @@
import request from '@/utils/request'
// 获取服务信息
export function getServer() {
return request({
url: '/monitor/server',
method: 'get'
})
}
+34
View File
@@ -0,0 +1,34 @@
import request from '@/utils/request'
// ======================== 教学实施计划导入 ========================
// 接口前缀 /teachingPlan,经 vue.config.js 代理转发为 /api/teachingPlan。
// 分页查询教学实施计划列表
// 支持参数:pageNum pageSize nd kcmc bc zrdw skjy ytgjc ybdr(与后端 Mapper 一致)
export function listTeachingPlan(query) {
return request({
url: '/teachingPlan/list',
method: 'get',
params: query
})
}
// 导入教学实施计划 Excel(multipart,字段名 file),返回导入条数
export function importTeachingPlan(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/teachingPlan/import',
method: 'post',
data: formData
})
}
// 下载教学实施计划导入模板(返回 Blob)
export function downloadTeachingPlanTemplate() {
return request({
url: '/teachingPlan/template',
method: 'get',
responseType: 'blob'
})
}
@@ -0,0 +1,49 @@
import request from '@/utils/request'
// ======================== 学员学籍异动申请(实体 XYXJYDSQB) ========================
// 列表查询仅支持 bh / xybh / sqlx / zt 四个等值筛选。
// 分页查询学籍异动申请列表
export function listApplication(query) {
return request({
url: '/student-records/application/list',
method: 'get',
params: query
})
}
// 查询学籍异动申请详情(bh 异动申请编号)
export function getApplication(bh) {
return request({
url: '/student-records/application/get',
method: 'get',
params: { bh: bh }
})
}
// 新增学籍异动申请(请求体 XYXJYDSQB 实体;bh 需前端传入,创建/修改时间后端自动维护)
export function addApplication(data) {
return request({
url: '/student-records/application/add',
method: 'post',
data: data
})
}
// 编辑学籍异动申请(bh 异动申请编号必传,请求体 XYXJYDSQB 实体)
export function updateApplication(data) {
return request({
url: '/student-records/application/update',
method: 'post',
data: data
})
}
// 删除学籍异动申请(bh 异动申请编号)
export function delApplication(bh) {
return request({
url: '/student-records/application/delete',
method: 'post',
params: { bh: bh }
})
}
@@ -0,0 +1,105 @@
import request from '@/utils/request'
// ======================== 班历管理(实体 XYDRWB 学员队任务表) ========================
// 接口依据:api2.txt「班次学期日历(班历)」分组 + StudentTeamTaskController
// 每个班次学期(xydxqbh)下挂若干条课程任务记录:
// bh 编号、nd 年度、xydbh 学员队编号、kbh 课编号、xqdc 学期第次、jybh 教员编号、kcxh 课次序号、
// jsbh 教室编号、rs 人数、zks 周课时、xs 学时、klx 课类型、jc 简称、ksdd 考试地点、ksbh 考试编号、
// jysdh 教研室代号、jysjhjybh 教研室计划教员编号、jysjhbz 教研室计划备注、jhkcxh 计划课次序号、
// xhbs 序号标识、xydxqbh 学员队学期编号、bz 备注、xf 学分、cjsj/bdsj/kbbdsj 时间、
// ksks 考试课时、bz2 编组、cjfz 成绩分制、bjrxypjf 不计入学员平均分、llxs 理论学时、sjxs 实践学时、
// ksksbxs 考试课时不显示、pdxh 配档序号、pdqsz 配档起始周、pdaz 配档按周、pdzzksj 配档占正课时间、
// pdbz 配档编组、pdtbykxxbz 配当同班异课选修编组、pdzdyxsfbsj 配档自定义学时分布数据、
// pdqyzdyxs 配档启用自定义学时
// 查询某班次学期下的全部班历记录(xydxqbh 学员队学期编号)
export function listClassCalendar(xydxqbh) {
return request({
url: '/classCalendar/all',
method: 'get',
params: { xydxqbh: xydxqbh }
})
}
// 根据主键查询班历记录
export function getClassCalendar(bh) {
return request({
url: '/classCalendar/get',
method: 'get',
params: { bh: bh }
})
}
// 更新班历记录(请求体 XYDRWB,bh 必传)
export function updateClassCalendar(data) {
return request({
url: '/classCalendar/update',
method: 'post',
data: data
})
}
// 选定区域设置应用于其它班次(请求体 { sourceBhList: 源记录编号, targetBhList: 目标班次学期编号 })
export function batchCopyCalendar(data) {
return request({
url: '/classCalendar/batchCopy',
method: 'post',
data: data
})
}
// 整个班历应用于其它班次(请求体 { sourceXydxqbh: 源班次学期编号, targetBhList: 目标班次学期编号 })
export function batchCopyCalendarBySemester(data) {
return request({
url: '/classCalendar/batchCopyBySemester',
method: 'post',
data: data
})
}
// ======================== 学员队任务表操作(/studentTeamTask) ========================
// 新增班历记录(请求体 XYDRWB;bh 留空后端生成 UUID)
export function addTeamTask(data) {
return request({
url: '/studentTeamTask/add',
method: 'post',
data: data
})
}
// 删除班历记录(bh 编号)
export function delTeamTask(bh) {
return request({
url: '/studentTeamTask/delete',
method: 'post',
params: { bh: bh }
})
}
// 批量预设合班(请求体 { bhList },按年度排序生成统一课次序号)
export function batchPresetMerge(bhList) {
return request({
url: '/studentTeamTask/batchPresetMerge',
method: 'post',
data: { bhList: bhList }
})
}
// 批量预设拆班(请求体 { bhList },清空课次序号)
export function batchPresetSplit(bhList) {
return request({
url: '/studentTeamTask/batchPresetSplit',
method: 'post',
data: { bhList: bhList }
})
}
// 自动生成必修课程(按学员队+学期第次从专业教学计划生成班历记录)
export function autoGenerateRequiredCourses(xydbh, xqdc) {
return request({
url: '/studentTeamTask/autoGenerateRequiredCourses',
method: 'post',
params: { xydbh: xydbh, xqdc: xqdc }
})
}
+117
View File
@@ -0,0 +1,117 @@
import request from '@/utils/request'
// ======================== 班次学期管理(实体 XYDNDXQJBXXB 学员队年度学期基本信息表) ========================
// 接口依据:api1.txt「班次学期」分组,实际后端位于 StudentRecordsController (/student-records/semester/*)
// 列表仅支持 xydbh(学员队编号)模糊筛选,无年度筛选,前端需本地过滤
// 新增 bh 留空由后端生成 UUID;字段 nd 年度、xydbh 学员队编号、kxrq 开学日期、jsrq 结束日期、
// xqdc 学期第次、zyjsbh 专用教室编号、jxrwbh 教学任务编号、bdsj 变动时间、bz 备注、
// xhbs 序号标识、ysbbh 预设编班号、jclb 节次类别、xtms 系统模式、kfjypk 开放教员排课(0/1)、
// jsonzd、fxbgscsj 分析报告生成时间、fxbgwd1bh/fxbgwd2bh/fxbgwd3bh 分析报告文档编号
// 分页查询班次学期列表(支持 xydbh 模糊)
export function listSemester(query) {
return request({
url: '/student-records/semester/list',
method: 'get',
params: query
})
}
// 查询所有有效班次学期(DEL_FLAG = 0)
export function allSemester() {
return request({
url: '/student-records/semester/all',
method: 'get'
})
}
// 查询班次学期详情(bh 编号)
export function getSemester(bh) {
return request({
url: '/student-records/semester/get',
method: 'get',
params: { bh: bh }
})
}
// 新增班次学期(请求体 XYDNDXQJBXXB;bh 留空后端生成 UUID,delFlag 后端置 0)
export function addSemester(data) {
return request({
url: '/student-records/semester/add',
method: 'post',
data: data
})
}
// 编辑班次学期(bh 编号必传,请求体 XYDNDXQJBXXB)
export function updateSemester(data) {
return request({
url: '/student-records/semester/update',
method: 'post',
data: data
})
}
// 删除班次学期(逻辑删除并级联删除其班历记录)
export function delSemester(bh) {
return request({
url: '/student-records/semester/delete',
method: 'post',
params: { bh: bh }
})
}
// 批量删除班次学期(请求体为编号数组)
export function batchDeleteSemester(bhList) {
return request({
url: '/student-records/semester/batchDelete',
method: 'post',
data: bhList
})
}
// 批量设定学期日期(请求体 { bhList, xqkssj, xqjssj })
export function batchUpdateDateRange(data) {
return request({
url: '/student-records/semester/batchUpdateDateRange',
method: 'post',
data: data
})
}
// 批量修改开放教员排课状态(请求体 { bhList, kfjypk },0-否 1-是)
export function batchUpdateKfjypk(data) {
return request({
url: '/student-records/semester/batchUpdateKfjypk',
method: 'post',
data: data
})
}
// 批量修改学期第次(请求体 { bhList, xqdc })
export function batchUpdateXqdc(data) {
return request({
url: '/student-records/semester/batchUpdateXqdc',
method: 'post',
data: data
})
}
// 批量设置教学任务(请求体 { bhList, jxrwbh })
export function batchUpdateJxrwbh(data) {
return request({
url: '/student-records/semester/batchUpdateJxrwbh',
method: 'post',
data: data
})
}
// 批量创建班次学期(按时间范围筛选可建班的学员队;xqdc 传 春季学期/夏季学期/秋季学期)
// 参数:startTime 起始日、endTime 截止日、nd 年度、xqdc 学期
export function batchAddFromElective(params) {
return request({
url: '/student-records/semester/batchAddFromElective',
method: 'post',
params: params
})
}
@@ -0,0 +1,84 @@
import request from '@/utils/request'
// 分页查询学员信息列表(姓名/联系电话/通信地址支持模糊查询,其余实体字段可作为查询条件)
export function listStudentRecord(query) {
return request({
url: '/student-records/list',
method: 'get',
params: query
})
}
// 查询学员信息详情(bh 编号必传)
export function getStudentRecord(bh) {
return request({
url: '/student-records/get',
method: 'get',
params: { bh: bh }
})
}
// 新增学员信息
export function addStudentRecord(data) {
return request({
url: '/student-records/add',
method: 'post',
data: data
})
}
// 修改学员信息(bh 编号必传)
export function updateStudentRecord(data) {
return request({
url: '/student-records/update',
method: 'post',
data: data
})
}
// 删除学员信息(bh 编号)
export function delStudentRecord(bh) {
return request({
url: '/student-records/delete',
method: 'post',
params: { bh: bh }
})
}
// 分页查询学员课程成绩(xybh 学员编号必传;nd 年度可选)
export function listStudentGrades(query) {
return request({
url: '/student-records/grades',
method: 'get',
params: query
})
}
// 分页查询学员课程过程成绩(xybh 学员编号必传;nd 年度可选)
export function listStudentProcessGrades(query) {
return request({
url: '/student-records/process-grades',
method: 'get',
params: query
})
}
// 导出学员课程成绩 Excel(xybh 学员编号必传)
export function exportStudentGrades(xybh) {
return request({
url: '/student-records/export-grades',
method: 'get',
params: { xybh: xybh },
responseType: 'blob'
})
}
// 导出学员课程过程成绩 Excel(xybh 学员编号必传)
export function exportStudentProcessGrades(xybh) {
return request({
url: '/student-records/export-process-grades',
method: 'get',
params: { xybh: xybh },
responseType: 'blob'
})
}
+70
View File
@@ -0,0 +1,70 @@
import request from '@/utils/request'
// ======================== 班次(学员队)管理(实体 XYDB) ========================
// 分页列表查询条件为 XYDB 实体字段。
// 分页查询学员队列表
export function listTeam(query) {
return request({
url: '/student-records/team/list',
method: 'get',
params: query
})
}
// 查询学员队详情(xydbh 学员队编号)
export function getTeam(xydbh) {
return request({
url: '/student-records/team/get',
method: 'get',
params: { xydbh: xydbh }
})
}
// 新增学员队(请求体 XYDB)
export function addTeam(data) {
return request({
url: '/student-records/team/add',
method: 'post',
data: data
})
}
// 编辑学员队(xydbh 学员队编号必传,请求体 XYDB)
export function updateTeam(data) {
return request({
url: '/student-records/team/update',
method: 'post',
data: data
})
}
// 删除学员队(xydbh 学员队编号)
export function delTeam(xydbh) {
return request({
url: '/student-records/team/delete',
method: 'post',
params: { xydbh: xydbh }
})
}
// 导入学员队 Excel(multipart,字段名 file)
export function importTeam(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/student-records/team/import',
method: 'post',
data: formData
})
}
// 导出学员队 Excel(查询条件为 XYDB 实体)
export function exportTeam(query) {
return request({
url: '/student-records/team/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
@@ -0,0 +1,37 @@
import request from '@/utils/request'
// 分页查询预警条件列表
export function listWarningCondition(query) {
return request({
url: '/student-records/warning-condition/list',
method: 'get',
params: query
})
}
// 查询预警条件详情
export function getWarningCondition(bh) {
return request({
url: '/student-records/warning-condition/get',
method: 'get',
params: { bh: bh }
})
}
// 新增预警条件
export function addWarningCondition(data) {
return request({
url: '/student-records/warning-condition/add',
method: 'post',
data: data
})
}
// 修改预警条件
export function updateWarningCondition(data) {
return request({
url: '/student-records/warning-condition/update',
method: 'post',
data: data
})
}
@@ -0,0 +1,21 @@
import request from '@/utils/request'
// ======================== 学员学籍预警结果(实体 XYXJYJGJG,查询:实体类) ========================
// 分页查询预警结果列表
export function listWarningResult(query) {
return request({
url: '/student-records/warning-result/list',
method: 'get',
params: query
})
}
// 查询预警结果详情(bh 预警结果编号)
export function getWarningResult(bh) {
return request({
url: '/student-records/warning-result/get',
method: 'get',
params: { bh: bh }
})
}
@@ -0,0 +1,46 @@
import request from '@/utils/request'
// 分页查询学科专业列表
export function listDiscipline(query) {
return request({
url: '/discipline/list',
method: 'get',
params: query
})
}
// 查询学科专业详情
export function getDiscipline(bsh) {
return request({
url: '/discipline/get',
method: 'get',
params: { bsh: bsh }
})
}
// 新增学科专业
export function addDiscipline(data) {
return request({
url: '/discipline/add',
method: 'post',
data: data
})
}
// 编辑学科专业
export function updateDiscipline(data) {
return request({
url: '/discipline/update',
method: 'post',
data: data
})
}
// 停用学科专业
export function disableDiscipline(bsh) {
return request({
url: '/discipline/disable',
method: 'post',
params: { bsh: bsh }
})
}
+56
View File
@@ -0,0 +1,56 @@
import request from '@/utils/request'
// 分页查询专业列表
export function listMajor(query) {
return request({
url: '/discipline/major/list',
method: 'get',
params: query
})
}
// 查询专业详情
export function getMajor(zydh) {
return request({
url: '/discipline/major/get',
method: 'get',
params: { zydh: zydh }
})
}
// 新增专业
export function addMajor(data) {
return request({
url: '/discipline/major/add',
method: 'post',
data: data
})
}
// 修改专业
export function updateMajor(data) {
return request({
url: '/discipline/major/update',
method: 'post',
data: data
})
}
// 删除专业
export function delMajor(zydh) {
return request({
url: '/discipline/major/delete',
method: 'post',
params: { zydh: zydh }
})
}
// 下载人才培养方案课程数据文件模板
export function downloadMajorTemplate() {
return request({
url: '/download/training-program',
method: 'get',
responseType: 'blob',
timeout: 30000
})
}
+60
View File
@@ -0,0 +1,60 @@
import request from '@/utils/request'
// 查询参数列表
export function listConfig(query) {
return request({
url: '/system/config/list',
method: 'get',
params: query
})
}
// 查询参数详细
export function getConfig(configId) {
return request({
url: '/system/config/' + configId,
method: 'get'
})
}
// 根据参数键名查询参数值
export function getConfigKey(configKey) {
return request({
url: '/system/config/configKey/' + configKey,
method: 'get'
})
}
// 新增参数配置
export function addConfig(data) {
return request({
url: '/system/config',
method: 'post',
data: data
})
}
// 修改参数配置
export function updateConfig(data) {
return request({
url: '/system/config',
method: 'put',
data: data
})
}
// 删除参数配置
export function delConfig(configId) {
return request({
url: '/system/config/' + configId,
method: 'delete'
})
}
// 刷新参数缓存
export function refreshCache() {
return request({
url: '/system/config/refreshCache',
method: 'delete'
})
}
+61
View File
@@ -0,0 +1,61 @@
import request from '@/utils/request'
// 查询部门列表
export function listDept(query) {
return request({
url: '/system/dept/list',
method: 'get',
params: query
})
}
// 查询部门列表(排除节点)
export function listDeptExcludeChild(deptId) {
return request({
url: '/system/dept/list/exclude/' + deptId,
method: 'get'
})
}
// 查询部门详细
export function getDept(deptId) {
return request({
url: '/system/dept/' + deptId,
method: 'get'
})
}
// 新增部门
export function addDept(data) {
return request({
url: '/system/dept',
method: 'post',
data: data
})
}
// 修改部门
export function updateDept(data) {
return request({
url: '/system/dept',
method: 'put',
data: data
})
}
// 保存部门排序
export function updateDeptSort(data) {
return request({
url: '/system/dept/updateSort',
method: 'put',
data: data
})
}
// 删除部门
export function delDept(deptId) {
return request({
url: '/system/dept/' + deptId,
method: 'delete'
})
}
+52
View File
@@ -0,0 +1,52 @@
import request from '@/utils/request'
// 查询字典数据列表
export function listData(query) {
return request({
url: '/system/dict/data/list',
method: 'get',
params: query
})
}
// 查询字典数据详细
export function getData(dictCode) {
return request({
url: '/system/dict/data/' + dictCode,
method: 'get'
})
}
// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
return request({
url: '/system/dict/data/type/' + dictType,
method: 'get'
})
}
// 新增字典数据
export function addData(data) {
return request({
url: '/system/dict/data',
method: 'post',
data: data
})
}
// 修改字典数据
export function updateData(data) {
return request({
url: '/system/dict/data',
method: 'put',
data: data
})
}
// 删除字典数据
export function delData(dictCode) {
return request({
url: '/system/dict/data/' + dictCode,
method: 'delete'
})
}
+60
View File
@@ -0,0 +1,60 @@
import request from '@/utils/request'
// 查询字典类型列表
export function listType(query) {
return request({
url: '/system/dict/type/list',
method: 'get',
params: query
})
}
// 查询字典类型详细
export function getType(dictId) {
return request({
url: '/system/dict/type/' + dictId,
method: 'get'
})
}
// 新增字典类型
export function addType(data) {
return request({
url: '/system/dict/type',
method: 'post',
data: data
})
}
// 修改字典类型
export function updateType(data) {
return request({
url: '/system/dict/type',
method: 'put',
data: data
})
}
// 删除字典类型
export function delType(dictId) {
return request({
url: '/system/dict/type/' + dictId,
method: 'delete'
})
}
// 刷新字典缓存
export function refreshCache() {
return request({
url: '/system/dict/type/refreshCache',
method: 'delete'
})
}
// 获取字典选择框列表
export function optionselect() {
return request({
url: '/system/dict/type/optionselect',
method: 'get'
})
}
+69
View File
@@ -0,0 +1,69 @@
import request from '@/utils/request'
// 查询菜单列表
export function listMenu(query) {
return request({
url: '/system/menu/list',
method: 'get',
params: query
})
}
// 查询菜单详细
export function getMenu(menuId) {
return request({
url: '/system/menu/' + menuId,
method: 'get'
})
}
// 查询菜单下拉树结构
export function treeselect() {
return request({
url: '/system/menu/treeselect',
method: 'get'
})
}
// 根据角色ID查询菜单下拉树结构
export function roleMenuTreeselect(roleId) {
return request({
url: '/system/menu/roleMenuTreeselect/' + roleId,
method: 'get'
})
}
// 新增菜单
export function addMenu(data) {
return request({
url: '/system/menu',
method: 'post',
data: data
})
}
// 修改菜单
export function updateMenu(data) {
return request({
url: '/system/menu',
method: 'put',
data: data
})
}
// 保存菜单排序
export function updateMenuSort(data) {
return request({
url: '/system/menu/updateSort',
method: 'put',
data: data
})
}
// 删除菜单
export function delMenu(menuId) {
return request({
url: '/system/menu/' + menuId,
method: 'delete'
})
}
+79
View File
@@ -0,0 +1,79 @@
import request from '@/utils/request'
// 查询公告列表
export function listNotice(query) {
return request({
url: '/system/notice/list',
method: 'get',
params: query
})
}
// 查询公告详细
export function getNotice(noticeId) {
return request({
url: '/system/notice/' + noticeId,
method: 'get'
})
}
// 新增公告
export function addNotice(data) {
return request({
url: '/system/notice',
method: 'post',
data: data
})
}
// 修改公告
export function updateNotice(data) {
return request({
url: '/system/notice',
method: 'put',
data: data
})
}
// 删除公告
export function delNotice(noticeId) {
return request({
url: '/system/notice/' + noticeId,
method: 'delete'
})
}
// 首页顶部公告列表(带已读状态)
export function listNoticeTop() {
return request({
url: '/system/notice/listTop',
method: 'get'
})
}
// 标记公告已读
export function markNoticeRead(noticeId) {
return request({
url: '/system/notice/markRead',
method: 'post',
params: { noticeId }
})
}
// 批量标记已读
export function markNoticeReadAll(ids) {
return request({
url: '/system/notice/markReadAll',
method: 'post',
params: { ids }
})
}
// 查询公告已读用户列表
export function listNoticeReadUsers(query) {
return request({
url: '/system/notice/readUsers/list',
method: 'get',
params: query
})
}
+44
View File
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询岗位列表
export function listPost(query) {
return request({
url: '/system/post/list',
method: 'get',
params: query
})
}
// 查询岗位详细
export function getPost(postId) {
return request({
url: '/system/post/' + postId,
method: 'get'
})
}
// 新增岗位
export function addPost(data) {
return request({
url: '/system/post',
method: 'post',
data: data
})
}
// 修改岗位
export function updatePost(data) {
return request({
url: '/system/post',
method: 'put',
data: data
})
}
// 删除岗位
export function delPost(postId) {
return request({
url: '/system/post/' + postId,
method: 'delete'
})
}
+119
View File
@@ -0,0 +1,119 @@
import request from '@/utils/request'
// 查询角色列表
export function listRole(query) {
return request({
url: '/system/role/list',
method: 'get',
params: query
})
}
// 查询角色详细
export function getRole(roleId) {
return request({
url: '/system/role/' + roleId,
method: 'get'
})
}
// 新增角色
export function addRole(data) {
return request({
url: '/system/role',
method: 'post',
data: data
})
}
// 修改角色
export function updateRole(data) {
return request({
url: '/system/role',
method: 'put',
data: data
})
}
// 角色数据权限
export function dataScope(data) {
return request({
url: '/system/role/dataScope',
method: 'put',
data: data
})
}
// 角色状态修改
export function changeRoleStatus(roleId, status) {
const data = {
roleId,
status
}
return request({
url: '/system/role/changeStatus',
method: 'put',
data: data
})
}
// 删除角色
export function delRole(roleId) {
return request({
url: '/system/role/' + roleId,
method: 'delete'
})
}
// 查询角色已授权用户列表
export function allocatedUserList(query) {
return request({
url: '/system/role/authUser/allocatedList',
method: 'get',
params: query
})
}
// 查询角色未授权用户列表
export function unallocatedUserList(query) {
return request({
url: '/system/role/authUser/unallocatedList',
method: 'get',
params: query
})
}
// 取消用户授权角色
export function authUserCancel(data) {
return request({
url: '/system/role/authUser/cancel',
method: 'put',
data: data
})
}
// 批量取消用户授权角色
export function authUserCancelAll(data) {
return request({
url: '/system/role/authUser/cancelAll',
method: 'put',
params: data
})
}
// 授权用户选择
export function authUserSelectAll(data) {
return request({
url: '/system/role/authUser/selectAll',
method: 'put',
params: data
})
}
// 根据角色ID查询部门树结构
export function deptTreeSelect(roleId) {
return request({
url: '/system/role/deptTree/' + roleId,
method: 'get'
})
}
+136
View File
@@ -0,0 +1,136 @@
import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/roomroot"
// 查询用户列表
export function listUser(query) {
return request({
url: '/system/user/list',
method: 'get',
params: query
})
}
// 查询用户详细
export function getUser(userId) {
return request({
url: '/system/user/' + parseStrEmpty(userId),
method: 'get'
})
}
// 新增用户
export function addUser(data) {
return request({
url: '/system/user',
method: 'post',
data: data
})
}
// 修改用户
export function updateUser(data) {
return request({
url: '/system/user',
method: 'put',
data: data
})
}
// 删除用户
export function delUser(userId) {
return request({
url: '/system/user/' + userId,
method: 'delete'
})
}
// 用户密码重置
export function resetUserPwd(userId, password) {
const data = {
userId,
password
}
return request({
url: '/system/user/resetPwd',
method: 'put',
data: data
})
}
// 用户状态修改
export function changeUserStatus(userId, status) {
const data = {
userId,
status
}
return request({
url: '/system/user/changeStatus',
method: 'put',
data: data
})
}
// 查询用户个人信息
export function getUserProfile() {
return request({
url: '/system/user/profile',
method: 'get'
})
}
// 修改用户个人信息
export function updateUserProfile(data) {
return request({
url: '/system/user/profile',
method: 'put',
data: data
})
}
// 用户密码重置
export function updateUserPwd(oldPassword, newPassword) {
const data = {
oldPassword,
newPassword
}
return request({
url: '/system/user/profile/updatePwd',
method: 'put',
data: data
})
}
// 用户头像上传
export function uploadAvatar(data) {
return request({
url: '/system/user/profile/avatar',
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: data
})
}
// 查询授权角色
export function getAuthRole(userId) {
return request({
url: '/system/user/authRole/' + userId,
method: 'get'
})
}
// 保存授权角色
export function updateAuthRole(data) {
return request({
url: '/system/user/authRole',
method: 'put',
params: data
})
}
// 查询部门下拉树结构
export function deptTreeSelect() {
return request({
url: '/system/user/deptTree',
method: 'get'
})
}
@@ -0,0 +1,95 @@
import request from '@/utils/request'
// 教学场地/教室管理(JSB 教室表 /classroom)
// 接口依据:classroom 控制器(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 新增教室
* POST /classroom/add
* 请求体(JSB):id/jsbh/jsmc 必填,其余字段可空;ty/xslx 为 Boolean
*/
export function addClassroom(data) {
return request({
url: '/classroom/add',
method: 'post',
data
})
}
/**
* 删除教室(不提供批量删除接口)
* POST /classroom/delete
* @param id 教室编号(主键,必填)
*/
export function deleteClassroom(id) {
return request({
url: '/classroom/delete',
method: 'post',
params: { id }
})
}
/**
* 更新教室
* POST /classroom/update
* 请求体(JSB):id 必传
*/
export function updateClassroom(data) {
return request({
url: '/classroom/update',
method: 'post',
data
})
}
/**
* 根据编号查询教室详情
* GET /classroom/get
* @param id 教室编号
*/
export function getClassroom(id) {
return request({
url: '/classroom/get',
method: 'get',
params: { id }
})
}
/**
* 分页查询教室列表
* GET /classroom/list
* 查询参数:jsbh(模糊)、jsmc(模糊)、jxldh(等值)、jxcdlx(等值)、ty(等值)、pageNum、pageSize
* 返回:PageResult<JSB>(records/total)
*/
export function listClassroom(params) {
return request({
url: '/classroom/list',
method: 'get',
params
})
}
/**
* 查询全部教室
* GET /classroom/all
* 返回:List<JSB>(无分页)
*/
export function listAllClassroom() {
return request({
url: '/classroom/all',
method: 'get'
})
}
/**
* 根据教学楼代号查询教室
* GET /classroom/listByJxldh
* @param jxldh 教学楼代号(必填)
*/
export function listClassroomByJxldh(jxldh) {
return request({
url: '/classroom/listByJxldh',
method: 'get',
params: { jxldh }
})
}
@@ -0,0 +1,110 @@
import request from '@/utils/request'
// 课程教学运行管理(CourseRunningController /course-running)
// 接口依据:course-running 控制器(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 分页查询教学实施计划课次列表
* GET /course-running/plan/list
* 查询参数(TeachingPlanQueryDTO):
* sskcbh 实施_课程编号、nd 年度、jxff 教学方法、
* rqStart 日期范围开始、rqEnd 日期范围结束(均传 ISO 格式,如 2026-08-23T00:00:00)、
* txzt 填写状态(0-未填写 1-已填写 2-已提交)、pageNum、pageSize
* 返回:PageResult<TeachingPlanLessonVO>(records/total)
*/
export function listTeachingPlan(params) {
return request({
url: '/course-running/plan/list',
method: 'get',
params
})
}
// ==================== 调课申请管理 /course-running/adjust ====================
// 接口依据:CourseRunningController(类上 @RequestMapping("/course-running"),前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 分页查询调课申请列表
* GET /course-running/adjust/list
* 查询参数(ScheduleAdjustQueryDTO):sskcbbh 课次编号、sqjybh 申请教员编号、nd 年度、
* jyspzzt 教研室审批状态、jyscszt 教研室查收状态、sczt 删除状态、
* cjsjStart/cjsjEnd 申请日期范围(ISO 格式)、pageNum、pageSize
* 返回:PageResult<ScheduleAdjustApplyVO>(records/total)
*/
export function listScheduleAdjust(params) {
return request({
url: '/course-running/adjust/list',
method: 'get',
params
})
}
/**
* 查询当前教员可供调课的课次
* GET /course-running/adjust/lessons
* 查询参数:nd 年度(可选)
* 返回:List<AdjustableLessonVO>,包含提交所需的课次主字段及教室、教员、学员队、保障明细。
*/
export function listAdjustableLessons(params) {
return request({
url: '/course-running/adjust/lessons',
method: 'get',
params
})
}
/**
* 查询调课申请详情
* GET /course-running/adjust/detail
* @param ssdksqbh 调课申请编号
* 返回:ScheduleAdjustDetailVO
*/
export function getScheduleAdjustDetail(ssdksqbh) {
return request({
url: '/course-running/adjust/detail',
method: 'get',
params: { ssdksqbh }
})
}
/**
* 提交调课申请
* POST /course-running/adjust/submit
* 请求体(ScheduleAdjustApplyDTO)核心字段:sskcbbh 课次编号、sy 调课事由、rq 调课后新日期、
* jc 调课后新节次、nd 年度;sqjybh/xydrwbh/kbh/kcbbh/xjsbh 为可选关联字段,
* roomList/teacherList/teamList/supportList 为调整后的关联明细。
*/
export function submitScheduleAdjust(data) {
return request({
url: '/course-running/adjust/submit',
method: 'post',
data
})
}
/**
* 教研室审批调课申请
* POST /course-running/adjust/audit/jys
* 请求体(ScheduleAdjustAuditDTO):ssdksqbh(必填)、spzt(1同意/2发回/3拒绝)、
* fhyj(审批意见,发回时填写)、sprbh(审批人编号,不传时取当前登录人;点审批即已查收)
*/
export function auditByTeachingOffice(data) {
return request({
url: '/course-running/adjust/audit/jys',
method: 'post',
data
})
}
/**
* 撤销调课申请
* DELETE /course-running/adjust/cancel
* @param params { ssdksqbh, sqjybh }
*/
export function cancelScheduleAdjust(params) {
return request({
url: '/course-running/adjust/cancel',
method: 'delete',
params
})
}
@@ -0,0 +1,54 @@
import request from '@/utils/request'
// 分页查询学期列表
export function listSemester(query) {
return request({
url: '/semester/list',
method: 'get',
params: query
})
}
// 查询所有学期列表(年度下拉数据源,返回全部学期含 nd/dqxq,按年度倒序)
export function listAllSemester() {
return request({
url: '/semester/all',
method: 'get'
})
}
// 根据主键查询学期
export function getSemester(nd) {
return request({
url: '/semester/get',
method: 'get',
params: { nd: nd }
})
}
// 学期新增
export function addSemester(data) {
return request({
url: '/semester/add',
method: 'post',
data: data
})
}
// 根据主键修改
export function updateSemester(data) {
return request({
url: '/semester/update',
method: 'post',
data: data
})
}
// 根据主键删除
export function delSemester(nd) {
return request({
url: '/semester/delete',
method: 'post',
params: { nd: nd }
})
}
@@ -0,0 +1,18 @@
import request from '@/utils/request'
// 学员队任务表(StudentTeamTaskController /studentTeamTask)
// 接口依据:studentTeamTask 控制器(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 分页查询学员队任务表(按班次/年度)
* GET /studentTeamTask/list
* 查询参数(XYDRWB 实体字段):xydbh 学员队编号、nd 年度、kcxh 课次序号、jhkcxh 计划课次序号、xs 学时等
* 返回:Page<XYDRWB>(records/total)
*/
export function listStudentTeamTask(params) {
return request({
url: '/studentTeamTask/list',
method: 'get',
params
})
}
@@ -0,0 +1,66 @@
import request from '@/utils/request'
// 专业教学计划(教学大纲 ZYJXJHB)
// 接口依据:/zyjxjhb/*(前端 baseURL 为 '/api',此处不再加前缀)
// 新增(bh 留空后端自动生成 UUID,ty 默认 0,qysj 默认当前时间)
export function addSyllabus(data) {
return request({
url: '/zyjxjhb/add',
method: 'post',
data
})
}
// 删除(软删:置 ty=1 并写 tysj)
export function deleteSyllabus(bh) {
return request({
url: '/zyjxjhb/delete',
method: 'post',
params: { bh }
})
}
// 批量删除(软删)
export function batchDeleteSyllabus(bhList) {
return request({
url: '/zyjxjhb/batchDelete',
method: 'post',
data: bhList
})
}
// 更新(bh 必传)
export function updateSyllabus(data) {
return request({
url: '/zyjxjhb/update',
method: 'post',
data
})
}
// 根据编号查询
export function getSyllabus(bh) {
return request({
url: '/zyjxjhb/get',
method: 'get',
params: { bh }
})
}
// 查询所有(返回 List,无分页,前端本地分页)
export function listSyllabus() {
return request({
url: '/zyjxjhb/list',
method: 'get'
})
}
// 根据专业代号和停用标识查询(zydh、ty 均必填,等值匹配)
export function listSyllabusByZydhAndTy(zydh, ty) {
return request({
url: '/zyjxjhb/listByZydhAndTy',
method: 'get',
params: { zydh, ty }
})
}
@@ -0,0 +1,90 @@
import request from '@/utils/request'
// 教学任务管理(TeachingTaskController /teachingTask)
// 接口依据:api.txt「教学任务管理」分组(前端 baseURL 为 /api,此处不重复 /api 前缀)
// 实体:JXRW(bh 编号、rwmc 任务名称、nd 年度、zt 状态、
// fbsj 发布时间、cjsj 创建时间、jssj 结束时间、jcxqscsj 教材需求生成时间)
// 新增时 bh 留空由后端生成(api.txt 新增示例未传 bh),编辑/更新时 bh 必传
/**
* 分页查询教学任务列表
* GET /teachingTask/list
* 查询参数(JXRW):rwmc 任务名称(模糊)、nd 年度(等值)、zt 状态(等值)、
* pageNum、pageSize
* 返回:PageResult<JXRW>(records/total)
*/
export function listTeachingTask(params) {
return request({
url: '/teachingTask/list',
method: 'get',
params
})
}
/**
* 根据编号查询教学任务
* GET /teachingTask/get?bh=
* @param bh 编号
* 返回:JXRW
*/
export function getTeachingTask(bh) {
return request({
url: '/teachingTask/get',
method: 'get',
params: { bh }
})
}
/**
* 新增教学任务
* POST /teachingTask/add
* 请求体(JXRW):rwmc 任务名称(必填)、nd 年度(必填)、zt 状态、fbsj/jssj/jcxqscsj
* 说明:bh 不传由后端自动生成;cjsj 创建时间由后端自动维护
*/
export function addTeachingTask(data) {
return request({
url: '/teachingTask/add',
method: 'post',
data
})
}
/**
* 更新教学任务(根据主键)
* POST /teachingTask/update
* 请求体(JXRW):bh 编号(必填)、rwmc、nd、zt
*/
export function updateTeachingTask(data) {
return request({
url: '/teachingTask/update',
method: 'post',
data
})
}
/**
* 级联删除教学任务和教研室任务书
* POST /teachingTask/delete?bh=
* @param bh 编号
*/
export function deleteTeachingTask(bh) {
return request({
url: '/teachingTask/delete',
method: 'post',
params: { bh }
})
}
/**
* 教学任务发布(需要先填写教研室任务书)
* POST /teachingTask/batchPublish?bh=
* @param bh 教学任务编号
* 返回:更新数量
*/
export function publishTeachingTask(bh) {
return request({
url: '/teachingTask/batchPublish',
method: 'post',
params: { bh }
})
}
@@ -0,0 +1,89 @@
import request from '@/utils/request'
// 课表查询管理(KCBController /kcb,前端 baseURL 为 /api,此处不重复 /api 前缀)
// 接口依据:课表页面接口规格
// 查询实体 TimetableQuery:nd 年度(可选,不传自动取当前学期)、xydbh 学员队编号/班次(可选,按班次筛选)
/**
* 今日课表
* GET /kcb/today/list
* @param params offset 日期偏移量、rq 基准日期(yyyy-MM-dd)
* 返回:今日课表记录(实体字段 bh/sksj/kc/zrdw/bc/jy/cd/jxnrxff/bz)
*/
export function listToday(data) {
return request({
url: '/kcb/today/list',
method: 'get',
params: data
})
}
/**
* 本周课表
* GET /kcb/week/list
* @param params offset 周偏移量、rq 基准日期(yyyy-MM-dd)
* 返回:本周课表记录
*/
export function listWeek(data) {
return request({
url: '/kcb/week/list',
method: 'get',
params: data
})
}
/**
* 班次课表(分页)
* GET /kcb/class/list
* @param params pageNum、pageSize,cond=TimetableQuery:nd、xydbh
* 返回:PageResult<班次课程记录>(records/total)
*/
export function listClass(params) {
return request({
url: '/kcb/class/list',
method: 'get',
params
})
}
/**
* 下载学期教学实施计划 Excel
* GET /kcb/class/export-plan
* @param data TimetableQuery:nd、xydbh
*/
export function exportClassPlan(data) {
return request({
url: '/kcb/class/export-plan',
method: 'get',
params: data,
responseType: 'blob'
})
}
/**
* 下载学期成绩表 Excel
* GET /kcb/class/export-grades
* @param data TimetableQuery:nd、xydbh
*/
export function exportClassGrades(data) {
return request({
url: '/kcb/class/export-grades',
method: 'get',
params: data,
responseType: 'blob'
})
}
/**
* 班次课程列表另存 Excel
* GET /kcb/class/export-courses
* @param data TimetableQuery:nd、xydbh
*/
export function exportClassCourses(data) {
return request({
url: '/kcb/class/export-courses',
method: 'get',
params: data,
responseType: 'blob'
})
}
@@ -0,0 +1,45 @@
import request from '@/utils/request'
// 课表冲突检查:单维度检查(POST /timetable-conflict/check)
// body: { nd 年度(必填), dimensionCode 维度编码(必填), writeToDb?(落库), jcpch?(批次号) }
// 返回 TimetableConflictCardVO { dimensionCode, title, description, checked, conflictCount }
export function checkConflict(data) {
return request({
url: '/timetable-conflict/check',
method: 'post',
data
})
}
// 课表冲突检查:执行全部维度检查(POST /timetable-conflict/check-all)
// body: { nd 年度(必填), writeToDb? }
// 返回 TimetableConflictSummaryVO { nd, cards[], totalConflictCount, fullyChecked }
export function checkAllConflict(data) {
return request({
url: '/timetable-conflict/check-all',
method: 'post',
data
})
}
// 课表冲突检查:重置检查结果(POST /timetable-conflict/reset)
// body: { nd 年度(必填), clearDb? 是否同时清空落库表 }
// 返回 TimetableConflictSummaryVO(所有卡片未检查状态)
export function resetConflict(data) {
return request({
url: '/timetable-conflict/reset',
method: 'post',
data
})
}
// 课表冲突检查:分页查询冲突明细(GET /timetable-conflict/details)
// params: { nd 年度(必填), dimensionCode? 维度编码, pageNum?, pageSize?, useDb?, jcpch? }
// 返回 PageResult<TimetableConflictDetailVO>
export function getConflictDetails(params) {
return request({
url: '/timetable-conflict/details',
method: 'get',
params
})
}
@@ -0,0 +1,71 @@
import request from '@/utils/request'
// 人才培养方案(专业表 ZYB /training)
// 接口依据:TrainingProgramController(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 新增培养方案(专业)
* POST /training/add
* 请求体(ZYB):zydh/zymc/zydm/pxcc/pxlx 必填;
* 主键 zydh 需手动传入(留空时后端自动生成 UUID,后端同时置 ty=false、qysj=当前时间)
*/
export function addTraining(data) {
return request({
url: '/training/add',
method: 'post',
data
})
}
/**
* 停用(逻辑删除)培养方案
* POST /training/disable?zydh=
* @param zydh 专业代号(必填)
*/
export function disableTraining(zydh) {
return request({
url: '/training/disable',
method: 'post',
params: { zydh }
})
}
/**
* 更新培养方案
* POST /training/update
* 请求体(ZYB):zydh 必传
*/
export function updateTraining(data) {
return request({
url: '/training/update',
method: 'post',
data
})
}
/**
* 根据专业代号查询培养方案详情
* GET /training/get?zydh=
* @param zydh 专业代号
*/
export function getTraining(zydh) {
return request({
url: '/training/get',
method: 'get',
params: { zydh }
})
}
/**
* 分页条件查询培养方案列表
* GET /training/list
* 查询参数:zymc(模糊)、zydm(模糊)、pxlx(精确)、pxcc(精确)、pageNum、pageSize
* 返回:PageResult<ZYB>(records/total)
*/
export function listTraining(params) {
return request({
url: '/training/list',
method: 'get',
params
})
}
+28
View File
@@ -0,0 +1,28 @@
import request from '@/utils/request'
// 按学期查询校历假期列表(nd 为学期代号,如 202601)
export function listXqxlb(query) {
return request({
url: '/xqxlb/list',
method: 'get',
params: query
})
}
// 根据主键查询校历假期
export function getXqxlb(bh) {
return request({
url: '/xqxlb/get',
method: 'get',
params: { bh: bh }
})
}
// 新增 / 修改校历假期(无 bh 时为新增,带 bh 时为修改)
export function updateXqxlb(data) {
return request({
url: '/xqxlb/update',
method: 'post',
data: data
})
}
+47
View File
@@ -0,0 +1,47 @@
import request from '@/utils/request'
// 分页查询教学公告列表
export function listTeachNotice(query) {
return request({
url: '/notice-announcement/list',
method: 'get',
params: query
})
}
// 查询公告详情
export function getTeachNotice(Id) {
return request({
url: '/notice-announcement/get',
method: 'get',
params: { Id }
})
}
// 新增公告
export function addTeachNotice(data) {
return request({
url: '/notice-announcement/add',
method: 'post',
data: data
})
}
// 修改公告(含下架/上架:更新时附带 status)
export function updateTeachNotice(data) {
return request({
url: '/notice-announcement/update',
method: 'post',
params: { Id: data.id },
data: data
})
}
// 删除/下架(级联删除:先删通告用户信息表,再删通告表)
export function delTeachNotice(Id) {
return request({
url: '/notice-announcement/delete',
method: 'post',
params: { Id }
})
}
+68
View File
@@ -0,0 +1,68 @@
import request from '@/utils/request'
// 分页查询选修班
// pageNum/pageSize/jyxm(通信)/kmc(通信)/kxbcnj(通信)/xxbmc(通信)/xkzt(等值)/pxcc(等值)
export function listElective(query) {
return request({
url: '/jys/elective/list',
method: 'get',
params: query
})
}
// 批量开放报名
export function batchOpenElective(bhList) {
return request({
url: '/jys/elective/batch-open',
method: 'post',
data: { bhList: bhList }
})
}
// 批量取消开放报名
export function batchCancelOpenElective(bhList) {
return request({
url: '/jys/elective/batch-cancel-open',
method: 'post',
data: { bhList: bhList }
})
}
// 批量停止报名
export function batchStopElective(bhList) {
return request({
url: '/jys/elective/batch-stop',
method: 'post',
data: { bhList: bhList }
})
}
// 下载选修班列表(Excel)
export function exportElectiveList(query) {
return request({
url: '/jys/elective/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 下载选修班学员名单(Excel)
export function exportElectiveStudentsExcel(bhList) {
return request({
url: '/jys/elective/students/export-excel',
method: 'get',
params: { bhList: bhList },
responseType: 'blob'
})
}
// 下载选修班学员名单(Word)
export function exportElectiveStudentsWord(bhList) {
return request({
url: '/jys/elective/students/export-word',
method: 'get',
params: { bhList: bhList },
responseType: 'blob'
})
}
+47
View File
@@ -0,0 +1,47 @@
import request from '@/utils/request'
// 分页查询课程科目(课表 KB)
// kmc/kmdm/jc 模糊,jysdh/kclx/pxlx/pxcc 等值
export function listKb(query) {
return request({
url: '/jys/kb/list',
method: 'get',
params: query
})
}
// 课程科目详情(kbh 课编号)
export function getKb(kbh) {
return request({
url: '/jys/kb/get',
method: 'get',
params: { kbh: kbh }
})
}
// 新增课程科目(kbh 留空后端生成 UUID)
export function addKb(data) {
return request({
url: '/jys/kb/add',
method: 'post',
data: data
})
}
// 删除课程科目(kbh 课编号)
export function deleteKb(kbh) {
return request({
url: '/jys/kb/delete',
method: 'post',
params: { kbh: kbh }
})
}
// 编辑课程科目(kbh 必传)
export function updateKb(data) {
return request({
url: '/jys/kb/update',
method: 'post',
data: data
})
}
+37
View File
@@ -0,0 +1,37 @@
import request from '@/utils/request'
// 查询教研室列表
export function listOffice(query) {
return request({
url: '/jys/office/list',
method: 'get',
params: query
})
}
// 新增教研室
export function addOffice(data) {
return request({
url: '/jys/office/add',
method: 'post',
data: data
})
}
// 更新教研室
export function updateOffice(data) {
return request({
url: '/jys/office/update',
method: 'post',
data: data
})
}
// 停用教研室(jysdh 必传,query 参数)
export function disableOffice(jysdh) {
return request({
url: '/jys/office/disable',
method: 'post',
params: { jysdh: jysdh }
})
}
+75
View File
@@ -0,0 +1,75 @@
import request from '@/utils/request'
// 教员管理:教员(JYB)+ 教员属性(JYSX)
// 接口依据:/jys/teacher/*(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 分页查询教员列表
* GET /jys/teacher/list
* 查询参数(JYBMapper.xml 支持):jyxm 模糊、jysdh 等值、zc 模糊、jylb 等值
*/
export function listTeacher(params) {
return request({
url: '/jys/teacher/list',
method: 'get',
params
})
}
/** 根据教员编号查询教员详情 GET /jys/teacher/get?jybh= */
export function getTeacher(jybh) {
return request({
url: '/jys/teacher/get',
method: 'get',
params: { jybh }
})
}
/**
* 新增教员 POST /jys/teacher/add
* body 为 AddTeacherDTO:{ teacher: JYB, attributes: JYSX }
* lzzt 前端不传,后端自动置 0
*/
export function addTeacher(data) {
return request({
url: '/jys/teacher/add',
method: 'post',
data
})
}
/** 更新教员基本信息 POST /jys/teacher/update(body 为 JYB,jybh 必传) */
export function updateTeacher(data) {
return request({
url: '/jys/teacher/update',
method: 'post',
data
})
}
/** 教员离职(逻辑删除)POST /jys/teacher/disable?jybh= */
export function disableTeacher(jybh) {
return request({
url: '/jys/teacher/disable',
method: 'post',
params: { jybh }
})
}
/** 查询教员属性 GET /jys/teacher/attribute/get?jybh= */
export function getTeacherAttribute(jybh) {
return request({
url: '/jys/teacher/attribute/get',
method: 'get',
params: { jybh }
})
}
/** 更新教员属性 POST /jys/teacher/attribute/update(body 为 JYSX,jybh 必传) */
export function updateTeacherAttribute(data) {
return request({
url: '/jys/teacher/attribute/update',
method: 'post',
data
})
}
@@ -0,0 +1,83 @@
import request from '@/utils/request'
// 教材管理:教材信息(JCXX 实体)
// 接口依据 api.txt:/teachingMaterial/*(前端 baseURL 为 /api,此处不重复 /api 前缀)
/**
* 教材信息分页查询
* GET /teachingMaterial/list
* 查询参数(TeachingMaterialMapper.xml 支持):bh/mc/isbn/cbs/zz 模糊,jcfl/jclx 等值,ty 等值
*/
export function listTeachingMaterial(params) {
return request({
url: '/teachingMaterial/list',
method: 'get',
params
})
}
/** 根据编号查询 GET /teachingMaterial/getByBh?bh= */
export function getTeachingMaterialByBh(bh) {
return request({
url: '/teachingMaterial/getByBh',
method: 'get',
params: { bh }
})
}
/** 根据ID查询 GET /teachingMaterial/getById?id= */
export function getTeachingMaterialById(id) {
return request({
url: '/teachingMaterial/getById',
method: 'get',
params: { id }
})
}
/** 新增教材信息 POST /teachingMaterial/add */
export function addTeachingMaterial(data) {
return request({
url: '/teachingMaterial/add',
method: 'post',
data
})
}
/** 根据ID修改 POST /teachingMaterial/update(body 需携带 id) */
export function updateTeachingMaterial(data) {
return request({
url: '/teachingMaterial/update',
method: 'post',
data
})
}
/** 删除 POST /teachingMaterial/delete?id= */
export function deleteTeachingMaterial(id) {
return request({
url: '/teachingMaterial/delete',
method: 'post',
params: { id }
})
}
/** 教材导入模板下载 GET /teachingMaterial/template */
export function downloadTeachingMaterialTemplate() {
return request({
url: '/teachingMaterial/template',
method: 'get',
responseType: 'blob'
})
}
/** 教材导入 POST /teachingMaterial/import(form-data,字段名 file) */
export function importTeachingMaterial(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/teachingMaterial/import',
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
}
+106
View File
@@ -0,0 +1,106 @@
import request from '@/utils/request'
// 教材库存:库存单(JCKCD)+ 库存明细项(JCKCMXX)
// 接口依据 api.txt:/teachingStock/*(前端 baseURL 为 /api,此处不重复 /api 前缀)
// ==================== 教材库存单(JCKCD) ====================
/**
* 分页查询库存单
* GET /teachingStock/list
* 查询参数(TeachingStockMapper.xml 支持):bh/mc 模糊,lb/zb/zt 等值
*/
export function listTeachingStock(params) {
return request({
url: '/teachingStock/list',
method: 'get',
params
})
}
/** 根据ID查询库存单 GET /teachingStock/get?id= */
export function getTeachingStock(id) {
return request({
url: '/teachingStock/get',
method: 'get',
params: { id }
})
}
/** 新增库存单 POST /teachingStock/add(bh 留空由后端自动生成) */
export function addTeachingStock(data) {
return request({
url: '/teachingStock/add',
method: 'post',
data
})
}
/** 修改库存单 POST /teachingStock/update(body 需携带 id) */
export function updateTeachingStock(data) {
return request({
url: '/teachingStock/update',
method: 'post',
data
})
}
/** 删除库存单 POST /teachingStock/delete?id= */
export function deleteTeachingStock(id) {
return request({
url: '/teachingStock/delete',
method: 'post',
params: { id }
})
}
// ==================== 教材库存明细项(JCKCMXX) ====================
/**
* 分页查询库存明细项
* GET /teachingStock/detail/list
* 查询参数(TeachingStockDetailMapper.xml 支持):bh 模糊,jckcdbbh 等值,jcxxbh 模糊,hwbw 等值
*/
export function listTeachingStockDetail(params) {
return request({
url: '/teachingStock/detail/list',
method: 'get',
params
})
}
/** 根据ID查询库存明细项 GET /teachingStock/detail/get?id= */
export function getTeachingStockDetail(id) {
return request({
url: '/teachingStock/detail/get',
method: 'get',
params: { id }
})
}
/** 新增库存明细项 POST /teachingStock/detail/add(bh 留空由后端自动生成) */
export function addTeachingStockDetail(data) {
return request({
url: '/teachingStock/detail/add',
method: 'post',
data
})
}
/** 修改库存明细项 POST /teachingStock/detail/update(body 需携带 id) */
export function updateTeachingStockDetail(data) {
return request({
url: '/teachingStock/detail/update',
method: 'post',
data
})
}
/** 删除库存明细项 POST /teachingStock/detail/delete?id= */
export function deleteTeachingStockDetail(id) {
return request({
url: '/teachingStock/detail/delete',
method: 'post',
params: { id }
})
}
+86
View File
@@ -0,0 +1,86 @@
import request from '@/utils/request'
// 查询生成表数据
export function listTable(query) {
return request({
url: '/tool/gen/list',
method: 'get',
params: query
})
}
// 查询db数据库列表
export function listDbTable(query) {
return request({
url: '/tool/gen/db/list',
method: 'get',
params: query
})
}
// 查询表详细信息
export function getGenTable(tableId) {
return request({
url: '/tool/gen/' + tableId,
method: 'get'
})
}
// 修改代码生成信息
export function updateGenTable(data) {
return request({
url: '/tool/gen',
method: 'put',
data: data
})
}
// 导入表
export function importTable(data) {
return request({
url: '/tool/gen/importTable',
method: 'post',
params: data
})
}
// 创建表
export function createTable(data) {
return request({
url: '/tool/gen/createTable',
method: 'post',
params: data
})
}
// 预览生成代码
export function previewTable(tableId) {
return request({
url: '/tool/gen/preview/' + tableId,
method: 'get'
})
}
// 删除表数据
export function delTable(tableId) {
return request({
url: '/tool/gen/' + tableId,
method: 'delete'
})
}
// 生成代码(自定义路径)
export function genCode(tableName) {
return request({
url: '/tool/gen/genCode/' + tableName,
method: 'get'
})
}
// 同步数据库
export function synchDb(tableName) {
return request({
url: '/tool/gen/synchDb/' + tableName,
method: 'get'
})
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

+9
View File
@@ -0,0 +1,9 @@
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg component
// register globally
Vue.component('svg-icon', SvgIcon)
const req = require.context('./svg', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)
+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M121.718 73.272v9.953c3.957-7.584 6.199-16.05 6.199-24.995C127.917 26.079 99.273 0 63.958 0 28.644 0 0 26.079 0 58.23c0 .403.028.806.028 1.21l22.97-25.953h13.34l-19.76 27.187h6.42V53.77l13.728-19.477v49.361H22.998V73.272H2.158c5.951 20.284 23.608 36.208 45.998 41.399-1.44 3.3-5.618 11.263-12.565 12.674-8.607 1.764 23.358.428 46.163-13.178 17.519-4.611 31.938-15.849 39.77-30.513h-13.506V73.272H85.02V59.464l22.998-25.977h13.008l-19.429 27.187h6.421v-7.433l13.727-19.402v39.433h-.027zm-78.24 2.822a10.516 10.516 0 0 1-.996-4.535V44.548c0-1.613.332-3.124.996-4.535a11.66 11.66 0 0 1 2.713-3.68c1.134-1.032 2.49-1.864 4.04-2.468 1.55-.605 3.21-.908 4.982-.908h11.292c1.77 0 3.431.303 4.981.908 1.522.604 2.85 1.41 3.986 2.418l-12.26 16.303v-2.898a1.96 1.96 0 0 0-.665-1.512c-.443-.403-.996-.604-1.66-.604-.665 0-1.218.201-1.661.604a1.96 1.96 0 0 0-.664 1.512v9.071L44.364 77.606a10.556 10.556 0 0 1-.886-1.512zm35.73-4.535c0 1.613-.332 3.124-.997 4.535a11.66 11.66 0 0 1-2.712 3.68c-1.134 1.032-2.49 1.864-4.04 2.469-1.55.604-3.21.907-4.982.907H55.185c-1.77 0-3.431-.303-4.981-.907-1.55-.605-2.906-1.437-4.041-2.47a12.49 12.49 0 0 1-1.384-1.512l13.727-18.217v6.375c0 .605.222 1.109.665 1.512.442.403.996.604 1.66.604.664 0 1.218-.201 1.66-.604a1.96 1.96 0 0 0 .665-1.512V53.87L75.97 36.838c.913.932 1.66 1.99 2.214 3.175.664 1.41.996 2.922.996 4.535v27.011h.028z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1773923748724" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5930" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 212l48.8 12c101.6 24.8 176 117.6 176 220.8v254.4l18.4 18.4 24.8 25.6h-536l24.8-25.6 18.4-18.4V444.8c0-103.2 73.6-196.8 176-220.8l48.8-12M512 64c-36.8 0-64 30.4-64 68v30.4C320.8 192 223.2 307.2 223.2 444.8v228.8L136 763.2v44.8h752v-44.8l-87.2-89.6V444.8c0-137.6-97.6-252.8-224.8-283.2v-28.8c0-32-17.6-60.8-48-67.2-5.6-1.6-11.2-1.6-16-1.6z m88 808H424c0 49.6 38.4 88 88 88s88-38.4 88-88z" p-id="5931"></path></svg>

After

Width:  |  Height:  |  Size: 750 B

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M127.88 73.143c0 1.412-.506 2.635-1.518 3.669-1.011 1.033-2.209 1.55-3.592 1.55h-17.887c0 9.296-1.783 17.178-5.35 23.645l16.609 17.044c1.011 1.034 1.517 2.257 1.517 3.67 0 1.412-.506 2.635-1.517 3.668-.958 1.033-2.155 1.55-3.593 1.55-1.438 0-2.635-.517-3.593-1.55l-15.811-16.063a15.49 15.49 0 0 1-1.196 1.06c-.532.434-1.65 1.208-3.353 2.322a50.104 50.104 0 0 1-5.192 2.974c-1.758.87-3.94 1.658-6.546 2.364-2.607.706-5.189 1.06-7.748 1.06V47.044H58.89v73.062c-2.716 0-5.417-.367-8.106-1.102-2.688-.734-5.003-1.631-6.945-2.692a66.769 66.769 0 0 1-5.268-3.179c-1.571-1.057-2.73-1.94-3.476-2.65L33.9 109.34l-14.611 16.877c-1.066 1.14-2.344 1.711-3.833 1.711-1.277 0-2.422-.434-3.434-1.304-1.012-.978-1.557-2.187-1.635-3.627-.079-1.44.333-2.705 1.236-3.794l16.129-18.51c-3.087-6.197-4.63-13.644-4.63-22.342H5.235c-1.383 0-2.58-.517-3.592-1.55S.125 74.545.125 73.132c0-1.412.506-2.635 1.518-3.668 1.012-1.034 2.21-1.55 3.592-1.55h17.887V43.939L9.308 29.833c-1.012-1.033-1.517-2.256-1.517-3.669 0-1.412.505-2.635 1.517-3.668 1.012-1.034 2.21-1.55 3.593-1.55s2.58.516 3.593 1.55l13.813 14.106h67.396l13.814-14.106c1.012-1.034 2.21-1.55 3.592-1.55 1.384 0 2.581.516 3.593 1.55 1.012 1.033 1.518 2.256 1.518 3.668 0 1.413-.506 2.636-1.518 3.67l-13.814 14.105v23.975h17.887c1.383 0 2.58.516 3.593 1.55 1.011 1.033 1.517 2.256 1.517 3.668l-.005.01zM89.552 26.175H38.448c0-7.23 2.489-13.386 7.466-18.469C50.892 2.623 56.92.082 64 .082c7.08 0 13.108 2.541 18.086 7.624 4.977 5.083 7.466 11.24 7.466 18.469z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1568899741379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2054" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M960 591.424V368.96c0-0.288 0.16-0.512 0.16-0.768S960 367.68 960 367.424V192a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v175.424c0 0.288-0.16 0.512-0.16 0.768s0.16 0.48 0.16 0.768v222.464c0 0.288-0.16 0.512-0.16 0.768s0.16 0.48 0.16 0.768V864a32 32 0 0 0 32 32h832a32 32 0 0 0 32-32v-271.04c0-0.288 0.16-0.512 0.16-0.768S960 591.68 960 591.424z m-560-31.232v-160H608v160h-208z m208 64V832h-208v-207.808H608z m-480-224h208v160H128v-160z m544 0h224v160h-224v-160zM896 224v112.192H128V224h768zM128 624.192h208V832H128v-207.808zM672 832v-207.808h224V832h-224z" p-id="2055"></path></svg>

After

Width:  |  Height:  |  Size: 954 B

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1588670460195" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1314" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M230.4 307.712c13.824 0 25.088-11.264 25.088-25.088 0-100.352 81.92-182.272 182.272-182.272s182.272 81.408 182.272 182.272c0 13.824 11.264 25.088 25.088 25.088s25.088-11.264 24.576-25.088c0-127.488-103.936-231.936-231.936-231.936S205.824 154.624 205.824 282.624c-0.512 14.336 10.752 25.088 24.576 25.088z m564.736 234.496c-11.264 0-21.504 2.048-31.232 6.144 0-44.544-40.448-81.92-88.064-81.92-14.848 0-28.16 3.584-39.936 10.24-13.824-28.16-44.544-48.128-78.848-48.128-12.288 0-24.576 2.56-35.328 7.68V284.16c0-45.568-37.888-81.92-84.48-81.92s-84.48 36.864-84.48 81.92v348.672l-69.12-112.64c-18.432-28.16-58.368-36.864-91.136-19.968-26.624 14.336-46.592 47.104-30.208 88.064 3.072 8.192 76.8 205.312 171.52 311.296 0 0 28.16 24.576 43.008 58.88 4.096 9.728 13.312 15.36 22.528 15.36 3.072 0 6.656-0.512 9.728-2.048 12.288-5.12 18.432-19.968 12.8-32.256-19.456-44.544-53.76-74.752-53.76-74.752C281.6 768 209.408 573.44 208.384 570.88c-5.12-12.8-2.56-20.992 7.168-26.112 9.216-4.608 21.504-4.608 26.112 2.56l113.152 184.32c4.096 8.704 12.8 14.336 22.528 14.336 13.824 0 25.088-10.752 25.088-25.088V284.16c0-17.92 15.36-32.256 34.816-32.256s34.816 14.336 34.816 32.256v284.16c0 13.824 10.24 25.088 24.576 25.088 13.824 0 25.088-11.264 25.088-25.088v-57.344c0-17.92 15.36-32.768 34.816-32.768 19.968 0 37.376 15.36 37.376 32.768v95.232c0 7.168 3.072 13.312 7.68 17.92 4.608 4.608 10.752 7.168 17.92 7.168 13.824 0 24.576-11.264 24.576-25.088V547.84c0-18.432 13.824-32.256 32.256-32.256 20.48 0 38.912 15.36 38.912 32.256v95.232c0 13.824 11.264 25.088 25.088 25.088s24.576-11.264 25.088-25.088v-18.944c0-18.944 12.8-32.256 30.72-32.256 18.432 0 22.528 18.944 22.528 31.744 0 1.024-11.776 99.84-50.688 173.056-30.72 58.368-45.056 112.128-51.2 146.944-2.56 13.312 6.656 26.112 19.968 28.672 1.536 0 3.072 0.512 4.608 0.512 11.776 0 22.016-8.192 24.064-20.48 5.632-31.232 18.432-79.36 46.08-132.608 43.52-81.92 55.808-186.88 56.32-193.536-0.512-50.688-29.696-83.968-72.704-83.968z"></path></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1576153230908" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="971" xmlns:xlink="http://www.w3.org/1999/xlink" width="81" height="81"><defs><style type="text/css"></style></defs><path d="M772.87036133 734.06115723c-43.34106445 0-80.00793458 27.93273926-93.76831055 66.57714843H475.90991211c-56.60705567 0-102.66723633-46.06018067-102.66723633-102.66723633V600.82446289h305.859375c13.76037598 38.64440918 50.42724609 66.57714844 93.76831055 66.57714844 55.12390137 0 99.94812012-44.82421875 99.94812012-99.94812012S827.9942627 467.50537109 772.87036133 467.50537109c-43.34106445 0-80.00793458 27.93273926-93.76831055 66.57714844H373.24267578V401.01062011h321.92687989c55.12390137 0 99.94812012-44.82421875 99.94812011-99.94812011V190.07312011C795.11767578 134.94921875 750.29345703 90.125 695.16955567 90.125H251.12963867C196.0057373 90.125 151.18151855 134.94921875 151.18151855 190.07312011V301.0625c0 55.12390137 44.82421875 99.94812012 99.94812012 99.94812012h55.53588867v296.96044921c0 93.35632325 75.97045898 169.32678223 169.32678224 169.32678223h203.19213866c13.76037598 38.64440918 50.42724609 66.57714844 93.76831055 66.57714844 55.12390137 0 99.94812012-44.82421875 99.94812012-99.94812012s-44.90661622-99.86572266-100.03051758-99.86572265z m0-199.89624024c18.37463379 0 33.28857422 14.91394043 33.28857422 33.28857423s-14.91394043 33.28857422-33.28857422 33.28857421-33.28857422-14.91394043-33.28857422-33.28857421 14.91394043-33.28857422 33.28857422-33.28857422zM217.75866699 301.0625V190.07312011c0-18.37463379 14.91394043-33.28857422 33.28857423-33.28857421h444.03991698c18.37463379 0 33.28857422 14.91394043 33.28857422 33.28857422V301.0625c0 18.37463379-14.91394043 33.28857422-33.28857422 33.28857422H251.12963867c-18.37463379 0-33.37097168-14.91394043-33.37097168-33.28857422z m555.11169434 566.23535156c-18.37463379 0-33.28857422-14.91394043-33.28857422-33.28857422 0-18.37463379 14.91394043-33.28857422 33.28857422-33.28857422s33.28857422 14.91394043 33.28857422 33.28857422c0.08239747 18.29223633-14.91394043 33.28857422-33.28857422 33.28857422z" p-id="972"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg>

After

Width:  |  Height:  |  Size: 179 B

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1575982282951" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="902" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M828.40625 90.125H195.59375C137.375 90.125 90.125 137.375 90.125 195.59375v632.8125c0 58.21875 47.25 105.46875 105.46875 105.46875h632.8125c58.21875 0 105.46875-47.25 105.46875-105.46875V195.59375c0-58.21875-47.25-105.46875-105.46875-105.46875z m52.734375 738.28125c0 29.16-23.57015625 52.734375-52.734375 52.734375H195.59375c-29.109375 0-52.734375-23.574375-52.734375-52.734375V195.59375c0-29.109375 23.625-52.734375 52.734375-52.734375h632.8125c29.16 0 52.734375 23.625 52.734375 52.734375v632.8125z" p-id="903"></path><path d="M421.52890625 709.55984375a36.28125 36.28125 0 0 1-27.55265625-12.66890625L205.17453125 476.613125a36.28546875 36.28546875 0 0 1 55.10109375-47.22890625l164.986875 192.4846875 342.16171875-298.48078125a36.2896875 36.2896875 0 0 1 47.70984375 54.68765625L445.3859375 700.6203125a36.3234375 36.3234375 0 0 1-23.85703125 8.93953125z" p-id="904"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.857 118.857h64V73.143H89.143c-1.902 0-3.52-.668-4.855-2.002-1.335-1.335-2.002-2.954-2.002-4.855V36.57H54.857v82.286zM73.143 16v-4.571a2.2 2.2 0 0 0-.677-1.61 2.198 2.198 0 0 0-1.609-.676H20.571c-.621 0-1.158.225-1.609.676a2.198 2.198 0 0 0-.676 1.61V16a2.2 2.2 0 0 0 .676 1.61c.451.45.988.676 1.61.676h50.285c.622 0 1.158-.226 1.61-.677.45-.45.676-.987.676-1.609zm18.286 48h21.357L91.43 42.642V64zM128 73.143v48c0 1.902-.667 3.52-2.002 4.855-1.335 1.335-2.953 2.002-4.855 2.002H52.57c-1.901 0-3.52-.667-4.854-2.002-1.335-1.335-2.003-2.953-2.003-4.855v-11.429H6.857c-1.902 0-3.52-.667-4.855-2.002C.667 106.377 0 104.759 0 102.857v-96c0-1.902.667-3.52 2.002-4.855C3.337.667 4.955 0 6.857 0h77.714c1.902 0 3.52.667 4.855 2.002 1.335 1.335 2.003 2.953 2.003 4.855V30.29c1 .622 1.856 1.29 2.569 2.003l29.147 29.147c1.335 1.335 2.478 3.145 3.429 5.43.95 2.287 1.426 4.383 1.426 6.291v-.018z"/></svg>

After

Width:  |  Height:  |  Size: 971 B

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1546567861908" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2422" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M318.577778 819.2L17.066667 512l301.511111-307.2 45.511111 45.511111L96.711111 512l267.377778 261.688889zM705.422222 819.2l-45.511111-45.511111L927.288889 512l-267.377778-261.688889 45.511111-45.511111L1006.933333 512zM540.785778 221.866667l55.751111 11.150222L483.157333 802.133333l-55.751111-11.093333z" p-id="2423"></path></svg>

After

Width:  |  Height:  |  Size: 717 B

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1577252187056" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2508" xmlns:xlink="http://www.w3.org/1999/xlink" width="81" height="81"><defs><style type="text/css"></style></defs><path d="M747.59340925 691.12859384c11.51396329 0.25305413 22.43746719-0.21087818 40.74171707-1.51832482 29.35428085-2.10878421 35.84933734-2.36183835 46.47761114-0.8856895 24.71495444 3.37405491 41.12129828 21.76265671 32.47528161 47.95376084-85.57447632 258.19957947-442.00123984 249.76444099-628.67084683 50.73735554-153.47733892-159.33976008-153.09775772-414.41833795 0.92786545-573.42069196 159.71934128-162.67163983 424.03439521-166.59397897 565.78689185 0.63263534 80.38686649 94.81095318 108.34934958 169.16669549 89.11723508 230.57450162-15.01454608 47.99593598-50.61082928 77.68762207-119.77896259 114.63352789-4.89237973 2.65706845-29.35428085 15.52065436-35.84933652 19.02123633-46.94154346 25.30541465-63.51659033 41.20565021-62.20914449 58.45550757 2.95229856 39.13904114 24.16667102 52.7196135 70.98168823 53.81618115z m44.41100207 50.10472101c-19.82257471 1.43397372-32.05352527 1.940082-45.63409763 1.6448519-70.34905207-1.60267593-115.98314969-30.91478165-121.38163769-101.64341492-3.45840683-46.05585397 24.7571304-73.13264758 89.24376132-107.96976837 6.7902866-3.66928501 31.37871396-16.57504688 36.06021551-19.06341229 57.69634516-30.83042972 85.15271997-53.73183005 94.76877722-84.47790866 12.77923398-40.78389304-9.10994898-98.94417051-79.24812286-181.6507002-121.17075953-142.97559219-350.14258521-139.60153647-489.2380134 2.06660824-134.49827774 138.84237405-134.79350784 362.12048163-0.42175717 501.637667 158.53842169 168.99799328 451.9968783 181.18676788 534.57688175-11.80919339-4.68150156 0.2952301-10.71262573 0.67481131-18.72600705 1.26527069z" p-id="2509"></path><path d="M346.03865637 637.18588562a78.82636652 78.82636652 0 0 0 78.32025825-79.29029883c0-43.69401562-35.005823-79.29029883-78.32025825-79.29029882a78.82636652 78.82636652 0 0 0-78.36243338 79.29029882c0 43.69401562 35.005823 79.29029883 78.36243338 79.29029883z m0-51.7495729a27.07679361 27.07679361 0 0 1-26.5706845-27.54072593c0-15.30977536 11.97789643-27.54072593 26.5706845-27.54072592 14.55061295 0 26.57068533 12.23095057 26.57068533 27.54072592a27.07679361 27.07679361 0 0 1-26.57068533 27.54072593zM475.7289063 807.11174353a78.82636652 78.82636652 0 0 0 78.3624334-79.29029882c0-43.69401562-34.96364785-79.29029883-78.32025825-79.29029883a78.82636652 78.82636652 0 0 0-78.32025742 79.29029883c0 43.69401562 34.96364785 79.29029883 78.32025742 79.29029882z m0-51.74957208a27.07679361 27.07679361 0 0 1-26.57068532-27.54072674c0-15.30977536 12.06224753-27.54072593 26.57068532-27.54072593 14.59278892 0 26.57068533 12.23095057 26.57068453 27.54072593a27.07679361 27.07679361 0 0 1-26.57068453 27.54072674zM601.24376214 377.21492718a78.82636652 78.82636652 0 0 0 78.32025742-79.29029883c0-43.69401562-34.96364785-79.29029883-78.32025742-79.29029882a78.82636652 78.82636652 0 0 0-78.32025823 79.29029883c0 43.69401562 34.96364785 79.29029883 78.32025824 79.29029883z m1e-8-51.74957208a27.07679361 27.07679361 0 0 1-26.57068534-27.54072675c0-15.30977536 11.97789643-27.54072593 26.57068534-27.54072591 14.55061295 0 26.57068533 12.23095057 26.57068451 27.54072592a27.07679361 27.07679361 0 0 1-26.57068451 27.54072674zM378.80916809 433.85687983a78.82636652 78.82636652 0 0 0 78.32025824-79.29029883c0-43.69401562-34.96364785-79.29029883-78.32025824-79.29029802a78.82636652 78.82636652 0 0 0-78.32025742 79.29029802c0 43.69401562 34.96364785 79.29029883 78.32025742 79.29029883z m0-51.74957209a27.07679361 27.07679361 0 0 1-26.57068451-27.54072674c0-15.30977536 11.97789643-27.54072593 26.57068451-27.54072593 14.55061295 0 26.57068533 12.23095057 26.57068533 27.54072593a27.07679361 27.07679361 0 0 1-26.57068533 27.54072674z" p-id="2510"></path></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1575804206892" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3145" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M826.56 470.016c-32.896 0-64.384 12.288-89.984 35.52l0-104.96c0-62.208-50.496-112.832-112.64-113.088L623.936 287.04 519.552 287.104C541.824 262.72 554.56 230.72 554.56 197.12c0-73.536-59.904-133.44-133.504-133.44-73.472 0-133.376 59.904-133.376 133.44 0 32.896 12.224 64.256 35.52 89.984L175.232 287.104l0 0.576C113.728 288.704 64 338.88 64 400.576l0.32 0 0.32 116.48C60.864 544.896 70.592 577.728 100.8 588.48c12.736 4.608 37.632 7.488 60.864-25.28 12.992-18.368 34.24-29.248 56.64-29.248 38.336 0 69.504 31.104 69.504 69.312 0 38.4-31.168 69.504-69.504 69.504-22.656 0-44.032-11.264-57.344-30.4C138.688 610.112 112.576 615.36 102.464 619.136c-29.824 10.752-39.104 43.776-38.144 67.392l0 160.384L64 846.912C64 909.248 114.752 960 177.216 960l446.272 0c62.4 0 113.152-50.752 113.152-113.152l0-145.024c24.384 22.272 56.384 35.008 89.984 35.008 73.536 0 133.44-59.904 133.44-133.504C960 529.92 900.096 470.016 826.56 470.016zM826.56 672.896c-22.72 0-44.032-11.264-57.344-30.4-22.272-32.384-48.448-27.136-58.56-23.36-29.824 10.752-39.04 43.776-38.08 67.392l0 160.384c0 27.136-22.016 49.152-49.152 49.152L177.216 896.064C150.08 896 128 873.984 128 846.848l0.32 0 0-145.024c24.384 22.272 56.384 35.008 89.984 35.008 73.6 0 133.504-59.904 133.504-133.504 0-73.472-59.904-133.376-133.504-133.376-32.896 0-64.32 12.288-89.984 35.52l0-104.96L128 400.512c0-27.072 22.08-49.152 49.216-49.152L177.216 351.04 334.656 350.72c3.776 0.512 7.616 0.832 11.52 0.832 24.896 0 50.752-10.816 60.032-37.056 4.544-12.736 7.424-37.568-25.344-60.736C362.624 240.768 351.68 219.52 351.68 197.12c0-38.272 31.104-69.44 69.376-69.44 38.336 0 69.504 31.168 69.504 69.44 0 22.72-11.264 44.032-30.528 57.472C427.968 276.736 433.088 302.784 436.8 313.024c10.752 29.888 43.072 39.232 67.392 38.08l119.232 0 0 0.384c27.136 0 49.152 22.08 49.152 49.152l0.256 116.48c-3.776 27.84 6.016 60.736 36.224 71.488 12.736 4.608 37.632 7.488 60.8-25.28 13.056-18.368 34.24-29.248 56.704-29.248C864.832 534.016 896 565.12 896 603.392 896 641.728 864.832 672.896 826.56 672.896z" p-id="3146"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1 @@
<svg width="128" height="100" xmlns="http://www.w3.org/2000/svg"><path d="M27.429 63.638c0-2.508-.893-4.65-2.679-6.424-1.786-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.465 2.662-1.785 1.774-2.678 3.916-2.678 6.424 0 2.508.893 4.65 2.678 6.424 1.786 1.775 3.94 2.662 6.465 2.662 2.524 0 4.678-.887 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm13.714-31.801c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM71.714 65.98l7.215-27.116c.285-1.23.107-2.378-.536-3.443-.643-1.064-1.56-1.762-2.75-2.094-1.19-.33-2.333-.177-3.429.462-1.095.639-1.81 1.573-2.143 2.804l-7.214 27.116c-2.857.237-5.405 1.266-7.643 3.088-2.238 1.822-3.738 4.152-4.5 6.992-.952 3.644-.476 7.098 1.429 10.364 1.905 3.265 4.69 5.37 8.357 6.317 3.667.947 7.143.474 10.429-1.42 3.285-1.892 5.404-4.66 6.357-8.305.762-2.84.619-5.607-.429-8.305-1.047-2.697-2.762-4.85-5.143-6.46zm47.143-2.342c0-2.508-.893-4.65-2.678-6.424-1.786-1.775-3.94-2.662-6.465-2.662-2.524 0-4.678.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.786 1.775 3.94 2.662 6.464 2.662 2.524 0 4.679-.887 6.465-2.662 1.785-1.775 2.678-3.916 2.678-6.424zm-45.714-45.43c0-2.509-.893-4.65-2.679-6.425C68.68 10.01 66.524 9.122 64 9.122c-2.524 0-4.679.887-6.464 2.661-1.786 1.775-2.679 3.916-2.679 6.425 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm32 13.629c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM128 63.638c0 12.351-3.357 23.78-10.071 34.286-.905 1.372-2.19 2.058-3.858 2.058H13.93c-1.667 0-2.953-.686-3.858-2.058C3.357 87.465 0 76.037 0 63.638c0-8.613 1.69-16.847 5.071-24.703C8.452 31.08 13 24.312 18.714 18.634c5.715-5.68 12.524-10.199 20.429-13.559C47.048 1.715 55.333.035 64 .035c8.667 0 16.952 1.68 24.857 5.04 7.905 3.36 14.714 7.88 20.429 13.559 5.714 5.678 10.262 12.446 13.643 20.301 3.38 7.856 5.071 16.09 5.071 24.703z"/></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1579774833889" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1376" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M887.466667 192.853333h-100.693334V119.466667c0-10.24-6.826667-17.066667-17.066666-17.066667s-17.066667 6.826667-17.066667 17.066667v73.386666H303.786667V119.466667c0-10.24-6.826667-17.066667-17.066667-17.066667s-17.066667 6.826667-17.066667 17.066667v73.386666H168.96c-46.08 0-85.333333 37.546667-85.333333 85.333334V836.266667c0 46.08 37.546667 85.333333 85.333333 85.333333H887.466667c46.08 0 85.333333-37.546667 85.333333-85.333333V278.186667c0-47.786667-37.546667-85.333333-85.333333-85.333334z m-718.506667 34.133334h100.693333v66.56c0 10.24 6.826667 17.066667 17.066667 17.066666s17.066667-6.826667 17.066667-17.066666v-66.56h450.56v66.56c0 10.24 6.826667 17.066667 17.066666 17.066666s17.066667-6.826667 17.066667-17.066666v-66.56H887.466667c27.306667 0 51.2 22.186667 51.2 51.2v88.746666H117.76v-88.746666c0-29.013333 22.186667-51.2 51.2-51.2zM887.466667 887.466667H168.96c-27.306667 0-51.2-22.186667-51.2-51.2V401.066667H938.666667V836.266667c0 27.306667-22.186667 51.2-51.2 51.2z" p-id="1377"></path><path d="M858.453333 493.226667H327.68c-10.24 0-17.066667 6.826667-17.066667 17.066666v114.346667h-116.053333c-10.24 0-17.066667 6.826667-17.066667 17.066667v133.12c0 10.24 6.826667 17.066667 17.066667 17.066666H460.8c10.24 0 17.066667-6.826667 17.066667-17.066666v-114.346667h380.586666c10.24 0 17.066667-6.826667 17.066667-17.066667v-133.12c0-10.24-6.826667-17.066667-17.066667-17.066666z m-413.013333 34.133333v97.28h-98.986667v-97.28h98.986667z m-230.4 131.413333h98.986667v98.986667h-98.986667v-98.986667z m131.413333 97.28v-97.28h98.986667v97.28h-98.986667z m133.12-228.693333h97.28v98.986667h-97.28v-98.986667z m131.413334 0h98.986666v98.986667h-98.986666v-98.986667z m230.4 97.28h-98.986667v-98.986667h98.986667v98.986667z" p-id="1378"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1577186573535" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1068" xmlns:xlink="http://www.w3.org/1999/xlink" width="81" height="81"><defs><style type="text/css"></style></defs><path d="M479.85714249 608.42857168h64.28571502c19.28571417 0 32.14285751-12.85714249 32.14285664-32.14285751s-12.85714249-32.14285751-32.14285664-32.14285664h-64.28571504c-19.28571417 0-32.14285751 12.85714249-32.14285664 32.14285662s12.85714249 32.14285751 32.14285664 32.14285753z m-2e-8 122.14285665h64.28571504c19.28571417 0 32.14285751-12.85714249 32.14285664-32.14285665s-12.85714249-32.14285751-32.14285664-32.14285751h-64.28571504c-19.28571417 0-32.14285751 12.85714249-32.14285664 32.14285751s12.85714249 32.14285751 32.14285664 32.14285664z m353.57142921-559.28571416h-128.57142921v-32.14285664c0-19.28571417-12.85714249-32.14285751-32.14285664-32.14285753s-32.14285751 12.85714249-32.14285751 32.14285753v32.14285664h-257.14285665v-32.14285664c0-19.28571417-12.85714249-32.14285751-32.14285752-32.14285753s-32.14285751 12.85714249-32.14285664 32.14285753v32.14285664h-128.57142919c-70.71428585 0-128.57142832 57.85714249-128.57142832 122.14285751v501.42857081c0 70.71428585 57.85714249 128.57142832 128.57142832 122.14285751h642.85714335c70.71428585 0 128.57142832-57.85714249 128.57142833-122.14285751v-501.42857081c0-70.71428585-57.85714249-122.14285753-128.57142833-122.14285751z m64.28571415 623.57142832c0 32.14285751-32.14285751 64.28571415-64.28571416 64.28571504h-642.85714335c-32.14285751 0-64.28571415-25.71428583-64.28571417-64.28571504v-372.85714249h771.42857168v372.85714249z m0-437.14285664h-771.42857168v-64.28571417c0-32.14285751 32.14285751-64.28571415 64.28571417-64.28571415h128.57142919v32.14285664c0 19.28571417 12.85714249 32.14285751 32.14285664 32.14285751s32.14285751-12.85714249 32.14285753-32.14285751v-32.14285664h257.14285665v32.14285664c0 19.28571417 12.85714249 32.14285751 32.1428575 32.14285751s32.14285751-12.85714249 32.14285664-32.14285751v-32.14285664h128.57142921c32.14285751 0 64.28571415 25.71428583 64.28571415 64.28571415v64.28571417z m-610.71428583 372.85714247h64.28571415c19.28571417 0 32.14285751-12.85714249 32.14285753-32.14285664s-12.85714249-32.14285751-32.14285753-32.14285751h-64.28571415c-19.28571417 0-32.14285751 12.85714249-32.14285751 32.14285751s12.85714249 32.14285751 32.14285751 32.14285665z m385.71428583-122.14285664h64.28571417c19.28571417 0 32.14285751-12.85714249 32.14285751-32.14285751s-12.85714249-32.14285751-32.14285751-32.14285664h-64.28571415c-19.28571417 0-32.14285751 12.85714249-32.14285753 32.14285664s12.85714249 32.14285751 32.14285753 32.14285751z m-385.71428583 0h64.28571415c19.28571417 0 32.14285751-12.85714249 32.14285753-32.14285751s-12.85714249-32.14285751-32.14285753-32.14285664h-64.28571415c-19.28571417 0-32.14285751 12.85714249-32.14285751 32.14285664s12.85714249 32.14285751 32.14285751 32.14285751z m385.71428583 122.14285665h64.28571417c19.28571417 0 32.14285751-12.85714249 32.14285751-32.14285665s-12.85714249-32.14285751-32.14285751-32.14285751h-64.28571415c-19.28571417 0-32.14285751 12.85714249-32.14285753 32.14285751s12.85714249 32.14285751 32.14285753 32.14285665z" p-id="1069"></path></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1566035680909" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3601" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1002.0848 744.672l-33.568 10.368c0.96 7.264 2.144 14.304 2.144 21.76 0 7.328-1.184 14.432-2.368 21.568l33.792 10.56c7.936 2.24 14.496 7.616 18.336 14.752 3.84 7.328 4.672 15.808 1.952 23.552-5.376 16-23.168 24.672-39.936 19.68l-34.176-10.624c-7.136 12.8-15.776 24.672-26.208 35.2l20.8 27.488a28.96 28.96 0 0 1 5.824 22.816 29.696 29.696 0 0 1-12.704 19.616 32.544 32.544 0 0 1-44.416-6.752l-20.8-27.552c-13.696 6.56-28.192 11.2-43.008 13.888v33.632c0 16.736-14.112 30.432-31.648 30.432-17.6 0-31.872-13.696-31.872-30.432v-33.632a167.616 167.616 0 0 1-42.88-13.888l-20.928 27.552c-10.72 13.76-30.08 16.64-44.288 6.752a29.632 29.632 0 0 1-12.704-19.616 29.28 29.28 0 0 1 5.696-22.816l20.896-27.808a166.72 166.72 0 0 1-27.008-34.688l-33.376 10.432c-16.8 5.184-34.56-3.552-39.936-19.616a29.824 29.824 0 0 1 20.224-38.24l33.472-10.432c-0.8-7.264-2.016-14.304-2.016-21.824 0-7.36 1.184-14.496 2.304-21.632l-33.792-10.368c-16.672-5.376-25.632-22.496-20.224-38.432 5.376-16 23.136-24.672 39.936-19.68l34.016 10.752c7.328-12.672 15.84-24.8 26.336-35.328l-20.8-27.552a29.44 29.44 0 0 1 6.944-42.432 32.704 32.704 0 0 1 44.384 6.752l20.832 27.616c13.696-6.432 28.224-11.2 43.104-13.952v-33.568c0-16.736 14.048-30.432 31.648-30.432 17.536 0 31.808 13.568 31.808 30.432v33.504c15.072 2.688 29.344 7.808 42.848 14.016l20.992-27.616a32.48 32.48 0 0 1 44.224-6.752 29.568 29.568 0 0 1 7.136 42.432l-21.024 27.808c10.432 10.432 19.872 21.888 27.04 34.752l33.376-10.432c16.768-5.12 34.56 3.68 39.936 19.68 5.536 15.936-3.712 33.056-20.32 38.304z m-206.016-74.432c-61.344 0-111.136 47.808-111.136 106.56 0 58.88 49.792 106.496 111.136 106.496 61.312 0 111.104-47.616 111.104-106.496 0-58.752-49.792-106.56-111.104-106.56z" p-id="3602"></path><path d="M802.7888 57.152h-76.448c0-22.08-21.024-38.24-42.848-38.24H39.3968a39.68 39.68 0 0 0-39.36 40.032v795.616s41.888 120.192 110.752 120.192H673.2848a227.488 227.488 0 0 1-107.04-97.44H117.6368s-40.608-13.696-40.608-41.248l470.304-0.256 1.664 3.36a227.68 227.68 0 0 1-12.64-73.632c0-60.576 24-118.624 66.88-161.44a228.352 228.352 0 0 1 123.552-63.392l-3.2 0.288 2.144-424.672h38.208l0.576 421.024c27.04 0 52.672 4.8 76.64 13.344V101.536c0.032 0-6.304-44.384-38.368-44.384zM149.7648 514.336H72.3888v-77.408H149.7648v77.408z m0-144.32H72.3888v-77.44H149.7648v77.44z m0-137.248H72.3888v-77.44H149.7648v77.44z m501.856 281.568H206.0848v-77.408h445.536v77.408z m0-144.32H206.0848v-77.44h445.536v77.44z m0-137.248H206.0848v-77.44h445.536v77.44z" p-id="3603"></path></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M71.984 44.815H115.9L71.984 9.642v35.173zM16.094.05h63.875l47.906 38.37v76.74c0 3.392-1.682 6.645-4.677 9.044-2.995 2.399-7.056 3.746-11.292 3.746H16.094c-4.236 0-8.297-1.347-11.292-3.746-2.995-2.399-4.677-5.652-4.677-9.044V12.84C.125 5.742 7.23.05 16.094.05zm71.86 102.32V89.58h-71.86v12.79h71.86zm23.952-25.58V64H16.094v12.79h95.812z"/></svg>

After

Width:  |  Height:  |  Size: 418 B

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1569915748289" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3062" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M768.35456 416a256 256 0 1 0-512 0 192 192 0 1 0 0 384v64a256 256 0 0 1-58.88-505.216 320.128 320.128 0 0 1 629.76 0A256.128 256.128 0 0 1 768.35456 864v-64a192 192 0 0 0 0-384z m-512 384h64v64H256.35456v-64z m448 0h64v64h-64v-64z" fill="#333333" p-id="3063"></path><path d="M539.04256 845.248V512.192a32.448 32.448 0 0 0-32-32.192c-17.664 0-32 14.912-32 32.192v333.056l-36.096-36.096a32.192 32.192 0 0 0-45.056 0.192 31.616 31.616 0 0 0-0.192 45.056l90.88 90.944a31.36 31.36 0 0 0 22.528 9.088 30.08 30.08 0 0 0 22.4-9.088l90.88-90.88a32.192 32.192 0 0 0-0.192-45.12 31.616 31.616 0 0 0-45.056-0.192l-36.096 36.096z" fill="#333333" p-id="3064"></path></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg>

After

Width:  |  Height:  |  Size: 356 B

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1566036347051" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5853" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M832 128H192a64.19 64.19 0 0 0-64 64v640a64.19 64.19 0 0 0 64 64h640a64.19 64.19 0 0 0 64-64V192a64.19 64.19 0 0 0-64-64z m0 703.89l-0.11 0.11H192.11l-0.11-0.11V768h640zM832 544H720L605.6 696.54 442.18 435.07 333.25 544H192v-64h114.75l147.07-147.07L610.4 583.46 688 480h144z m0-288H192v-63.89l0.11-0.11h639.78l0.11 0.11z" p-id="5854"></path></svg>

After

Width:  |  Height:  |  Size: 724 B

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M106.133 67.2a4.797 4.797 0 0 0-4.8 4.8c0 .187.014.36.027.533h-.027V118.4H9.6V26.667h50.133c2.654 0 4.8-2.147 4.8-4.8 0-2.654-2.146-4.8-4.8-4.8H9.6a9.594 9.594 0 0 0-9.6 9.6V118.4c0 5.307 4.293 9.6 9.6 9.6h91.733c5.307 0 9.6-4.293 9.6-9.6V72.533h-.026c.013-.173.026-.346.026-.533 0-2.653-2.146-4.8-4.8-4.8z"/><path d="M125.16 13.373L114.587 2.8c-3.747-3.747-9.854-3.72-13.6.027l-52.96 52.96a4.264 4.264 0 0 0-.907 1.36L33.813 88.533c-.746 1.76-.226 3.534.907 4.68 1.133 1.147 2.92 1.667 4.693.92l31.4-13.293c.507-.213.96-.52 1.36-.907l52.96-52.96c3.747-3.746 3.774-9.853.027-13.6zM66.107 72.4l-18.32 7.76 7.76-18.32L92.72 24.667l10.56 10.56L66.107 72.4zm52.226-52.227l-8.266 8.267-10.56-10.56 8.266-8.267.027-.026 10.56 10.56-.027.026z"/></svg>

After

Width:  |  Height:  |  Size: 818 B

@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M88.883 119.565c-7.284 0-19.434 2.495-21.333 8.25v.127c-4.232.13-5.222 0-7.108 0-1.895-5.76-14.045-8.256-21.333-8.256H0V0h42.523c9.179 0 17.109 5.47 21.47 13.551C68.352 5.475 76.295 0 85.478 0H128v119.57l-39.113-.005h-.004zM60.442 24.763c0-9.651-8.978-16.507-17.777-16.507H7.108V111.43H39.11c7.054-.14 18.177.082 21.333 6.12v-4.628c-.134-5.722-.004-13.522 0-13.832V27.413l.004-2.655-.004.005zm60.442-16.517h-35.55c-8.802 0-17.78 6.856-17.78 16.493v74.259c.004.32.138 8.115 0 13.813v4.627c3.155-6.022 14.279-6.26 21.333-6.114h32V8.25l-.003-.005z"/></svg>

After

Width:  |  Height:  |  Size: 627 B

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="96" xmlns="http://www.w3.org/2000/svg"><path d="M64.125 56.975L120.188.912A12.476 12.476 0 0 0 115.5 0h-103c-1.588 0-3.113.3-4.513.838l56.138 56.137z"/><path d="M64.125 68.287l-62.3-62.3A12.42 12.42 0 0 0 0 12.5v71C0 90.4 5.6 96 12.5 96h103c6.9 0 12.5-5.6 12.5-12.5v-71a12.47 12.47 0 0 0-1.737-6.35L64.125 68.287z"/></svg>

After

Width:  |  Height:  |  Size: 347 B

+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1746590936918" class="icon" viewBox="0 0 1194 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5378" xmlns:xlink="http://www.w3.org/1999/xlink" width="233.203125" height="200"><path d="M1151.9144 325.11999969V89.12a57.04000031 57.04000031 0 0 0-28.8-49.44 58.15999969 58.15999969 0 0 0-57.76000031 0 57.04000031 57.04000031 0 0 0-28.8 49.44v235.99999969c0.24 84.31999969-33.6 152.56000031-94.08 212.00000062-60.07999969 59.83999969-141.84 80.64-227.04 80.4H225.91440031L388.07439969 457.11999969a56.80000031 56.80000031 0 0 0 12.40000031-62.16 57.76000031 57.76000031 0 0 0-94.00000031-18.63999938L48.8744 631.20000031a56.88 56.88 0 0 0 0 80.79999938l264.96 262.56a58.08 58.08 0 0 0 96.55999969-25.59999938 56.80000031 56.80000031 0 0 0-14.95999969-55.2L232.07439969 731.67999969h483.44000062c116.56000031 0 226.15999969-32.08000031 308.64-113.76 82.15999969-80.80000031 128.23999969-178.15999969 127.83999938-292.87999969" p-id="5379"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M96.258 57.462h31.421C124.794 27.323 100.426 2.956 70.287.07v31.422a32.856 32.856 0 0 1 25.971 25.97zm-38.796-25.97V.07C27.323 2.956 2.956 27.323.07 57.462h31.422a32.856 32.856 0 0 1 25.97-25.97zm12.825 64.766v31.421c30.46-2.885 54.507-27.253 57.713-57.712H96.579c-2.886 13.466-13.146 23.726-26.292 26.291zM31.492 70.287H.07c2.886 30.46 27.253 54.507 57.713 57.713V96.579c-13.466-2.886-23.726-13.146-26.291-26.292z"/></svg>

After

Width:  |  Height:  |  Size: 497 B

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.208 16.576v8.384h38.72v5.376h-38.72v8.704h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.512h38.72v5.376h-38.72v11.136H128v-94.72H78.208zM0 114.368L72.128 128V0L0 13.632v100.736z"/><path d="M28.672 82.56h-11.2l14.784-23.488-14.08-22.592h11.52l8.192 14.976 8.448-14.976h11.136l-14.08 22.208L58.368 82.56H46.656l-8.768-15.68z"/></svg>

After

Width:  |  Height:  |  Size: 459 B

@@ -0,0 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M49.217 41.329l-.136-35.24c-.06-2.715-2.302-4.345-5.022-4.405h-3.65c-2.712-.06-4.866 2.303-4.806 5.016l.152 19.164-24.151-23.79a6.698 6.698 0 0 0-9.499 0 6.76 6.76 0 0 0 0 9.526l23.93 23.713-18.345.074c-2.712-.069-5.228 1.813-5.64 5.02v3.462c.069 2.721 2.31 4.97 5.022 5.03l35.028-.207c.052.005.087.025.133.025l2.457.054a4.626 4.626 0 0 0 3.436-1.38c.88-.874 1.205-2.096 1.169-3.462l-.262-2.465c0-.048.182-.081.182-.136h.002zm52.523 51.212l18.32-.073c2.713.06 5.224-1.609 5.64-4.815v-3.462c-.068-2.722-2.317-4.97-5.021-5.04l-34.58.21c-.053 0-.086-.021-.138-.021l-2.451-.06a4.64 4.64 0 0 0-3.445 1.381c-.885.868-1.201 2.094-1.174 3.46l.27 2.46c.005.06-.177.095-.177.141l.141 34.697c.069 2.713 2.31 4.338 5.022 4.397l3.45.006c2.705.062 4.867-2.31 4.8-5.026l-.153-18.752 24.151 23.946a6.69 6.69 0 0 0 9.494 0 6.747 6.747 0 0 0 0-9.523L101.74 92.54v.001zM48.125 80.662a4.636 4.636 0 0 0-3.437-1.382l-2.457.06c-.05 0-.082.022-.137.022l-35.025-.21c-2.712.07-4.957 2.318-5.022 5.04v3.462c.409 3.206 2.925 4.874 5.633 4.814l18.554.06-24.132 23.928c-2.62 2.626-2.62 6.89 0 9.524a6.694 6.694 0 0 0 9.496 0l24.155-23.79-.155 18.866c-.06 2.722 2.094 5.093 4.801 5.025h3.65c2.72-.069 4.962-1.685 5.022-4.406l.141-34.956c0-.05-.182-.082-.182-.136l.262-2.46c.03-1.366-.286-2.592-1.166-3.46h-.001zM80.08 47.397a4.62 4.62 0 0 0 3.443 1.374l2.45-.054c.055 0 .088-.02.143-.028l35.08.21c2.712-.062 4.953-2.312 5.021-5.033l.009-3.463c-.417-3.211-2.937-5.084-5.64-5.025l-18.615-.073 23.917-23.715c2.63-2.623 2.63-6.879.008-9.513a6.691 6.691 0 0 0-9.494 0L92.251 26.016l.155-19.312c.065-2.713-2.097-5.085-4.802-5.025h-3.45c-2.713.069-4.954 1.693-5.022 4.406l-.139 35.247c0 .054.18.088.18.136l-.267 2.465c-.028 1.366.288 2.588 1.174 3.463v.001z"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><style/></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085zm0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334zm0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333zm0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg width="128" height="64" xmlns="http://www.w3.org/2000/svg"><path d="M127.072 7.994c1.37-2.208.914-5.152-.914-6.87-2.056-1.717-4.797-1.226-6.396.982-.229.245-25.586 32.382-55.74 32.382-29.24 0-55.74-32.382-55.968-32.627-1.6-1.963-4.57-2.208-6.397-.49C-.17 3.086-.399 6.275 1.2 8.238c.457.736 5.94 7.36 14.62 14.72L4.17 35.96c-1.828 1.963-1.6 5.152.228 6.87.457.98 1.6 1.471 2.742 1.471s2.284-.49 3.198-1.472l12.564-13.983c5.94 4.416 13.021 8.587 20.788 11.53l-4.797 17.418c-.685 2.699.686 5.397 3.198 6.133h1.37c2.057 0 3.884-1.472 4.341-3.68L52.6 42.83c3.655.736 7.538 1.227 11.422 1.227 3.883 0 7.767-.49 11.422-1.227l4.797 17.173c.457 2.208 2.513 3.68 4.34 3.68.457 0 .914 0 1.143-.246 2.513-.736 3.883-3.434 3.198-6.133l-4.797-17.172c7.767-2.944 14.848-7.114 20.788-11.53l12.336 13.738c.913.981 2.056 1.472 3.198 1.472s2.284-.49 3.198-1.472c1.828-1.963 1.828-4.906.228-6.87l-11.65-13.001c9.366-7.36 14.849-14.474 14.849-14.474z"/></svg>

After

Width:  |  Height:  |  Size: 944 B

Some files were not shown because too many files have changed in this diff Show More