完成水电表列表
32
src/App.vue
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-config-provider :locale="appStore.locale" :size="appStore.size">
|
||||
<router-view ref="wrapRef" />
|
||||
<router-view />
|
||||
</el-config-provider>
|
||||
</template>
|
||||
|
||||
@@ -10,40 +10,10 @@ import { handleThemeStyle } from '@/utils/theme';
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
|
||||
const appStore = useAppStore();
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => {
|
||||
// 初始化主题样式
|
||||
handleThemeStyle(useSettingsStore().theme);
|
||||
});
|
||||
});
|
||||
|
||||
const scale = ref(1);
|
||||
// 设计稿宽度(你是多少就写多少,一般 1920)
|
||||
const DESIGN_WIDTH = 1920;
|
||||
|
||||
// 计算缩放
|
||||
const setScale = () => {
|
||||
const clientWidth = document.documentElement.clientWidth;
|
||||
let ratio = clientWidth / DESIGN_WIDTH;
|
||||
// 最小缩到 0.7(防止太小看不清)
|
||||
if (ratio < 0.7) ratio = 0.7;
|
||||
// 最大不超过 1
|
||||
if (ratio > 1) ratio = 1;
|
||||
scale.value = ratio;
|
||||
};
|
||||
|
||||
// 监听窗口变化
|
||||
const resizeListener = () => {
|
||||
setScale();
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
setScale();
|
||||
window.addEventListener('resize', resizeListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', resizeListener);
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -7,7 +7,7 @@ export interface ActivityVO {
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
titile: string;
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* 作者
|
||||
@@ -44,7 +44,7 @@ export interface ActivityForm extends BaseEntity {
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
titile?: string;
|
||||
title?: string;
|
||||
|
||||
/**
|
||||
* 作者
|
||||
@@ -76,7 +76,7 @@ export interface ActivityQuery extends PageQuery {
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
titile?: string;
|
||||
title?: string;
|
||||
|
||||
/**
|
||||
* 作者
|
||||
|
||||
63
src/api/system/InspectionPoint/index.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { PointVO, PointForm, PointQuery } from '@/api/system/InspectionPoint/type';
|
||||
|
||||
/**
|
||||
* 查询巡检点列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listPoint = (query?: PointQuery): AxiosPromise<PointVO[]> => {
|
||||
return request({
|
||||
url: '/inspection/point/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询巡检点详细
|
||||
* @param id
|
||||
*/
|
||||
export const getPoint = (id: string | number): AxiosPromise<PointVO> => {
|
||||
return request({
|
||||
url: '/inspection/point/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增巡检点
|
||||
* @param data
|
||||
*/
|
||||
export const addPoint = (data: PointForm) => {
|
||||
return request({
|
||||
url: '/inspection/point',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改巡检点
|
||||
* @param data
|
||||
*/
|
||||
export const updatePoint = (data: PointForm) => {
|
||||
return request({
|
||||
url: '/inspection/point',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除巡检点
|
||||
* @param id
|
||||
*/
|
||||
export const delPoint = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/inspection/point/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
150
src/api/system/InspectionPoint/type.ts
Normal file
@@ -0,0 +1,150 @@
|
||||
export interface PointVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 巡检点名称
|
||||
*/
|
||||
pointName: string;
|
||||
|
||||
/**
|
||||
* 巡检项目id
|
||||
*/
|
||||
itemId: string | number;
|
||||
|
||||
/**
|
||||
* 所属路线ID
|
||||
*/
|
||||
routeId: string | number;
|
||||
|
||||
/**
|
||||
* 巡检点位置(经纬度),格式:经度,纬度
|
||||
*/
|
||||
location: string;
|
||||
|
||||
/**
|
||||
* 打卡方式:9999定位打卡、9998蓝牙打卡、9997NFC打卡
|
||||
*/
|
||||
checkMode: string;
|
||||
|
||||
/**
|
||||
* 状态:0-开启,1-关闭
|
||||
*/
|
||||
status: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
/**
|
||||
* 点位编号
|
||||
*/
|
||||
pointCode: string;
|
||||
|
||||
/**
|
||||
* 是否打卡 0:已打卡 1:未打卡
|
||||
*/
|
||||
isCheck: string;
|
||||
}
|
||||
|
||||
export interface PointForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检点名称
|
||||
*/
|
||||
pointName?: string;
|
||||
|
||||
/**
|
||||
* 巡检项目id
|
||||
*/
|
||||
itemId?: string | number;
|
||||
|
||||
/**
|
||||
* 所属路线ID
|
||||
*/
|
||||
routeId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检点位置(经纬度),格式:经度,纬度
|
||||
*/
|
||||
location?: string;
|
||||
|
||||
/**
|
||||
* 打卡方式:9999定位打卡、9998蓝牙打卡、9997NFC打卡
|
||||
*/
|
||||
checkMode?: string;
|
||||
|
||||
/**
|
||||
* 状态:0-开启,1-关闭
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
/**
|
||||
* 点位编号
|
||||
*/
|
||||
pointCode?: string;
|
||||
|
||||
/**
|
||||
* 是否打卡 0:已打卡 1:未打卡
|
||||
*/
|
||||
isCheck?: string;
|
||||
}
|
||||
|
||||
export interface PointQuery extends PageQuery {
|
||||
/**
|
||||
* 巡检点名称
|
||||
*/
|
||||
pointName?: string;
|
||||
|
||||
/**
|
||||
* 巡检项目id
|
||||
*/
|
||||
itemId?: string | number;
|
||||
|
||||
/**
|
||||
* 所属路线ID
|
||||
*/
|
||||
routeId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检点位置(经纬度),格式:经度,纬度
|
||||
*/
|
||||
location?: string;
|
||||
|
||||
/**
|
||||
* 打卡方式:9999定位打卡、9998蓝牙打卡、9997NFC打卡
|
||||
*/
|
||||
checkMode?: string;
|
||||
|
||||
/**
|
||||
* 状态:0-开启,1-关闭
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 点位编号
|
||||
*/
|
||||
pointCode?: string;
|
||||
|
||||
/**
|
||||
* 是否打卡 0:已打卡 1:未打卡
|
||||
*/
|
||||
isCheck?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
@@ -67,43 +67,18 @@ export interface RecordForm extends BaseEntity {
|
||||
}
|
||||
|
||||
export interface RecordQuery extends PageQuery {
|
||||
/**
|
||||
* 关联巡检任务ID
|
||||
*/
|
||||
taskId?: string | number;
|
||||
|
||||
/**
|
||||
* 关联巡检计划ID
|
||||
*/
|
||||
planId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检人员ID
|
||||
*/
|
||||
inspectorId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检路线ID
|
||||
*/
|
||||
routeId?: string | number;
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
startTime?: string;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
endTime?: string;
|
||||
|
||||
/**
|
||||
* 执行状态(字典:inspection_exec_status 0-按时完成 1-超时完成 2-未完成)
|
||||
*/
|
||||
execStatus?: number;
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
taskTime?: string;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
taskName?: string;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface QuestionnaireVO {
|
||||
/**
|
||||
* 问卷题目结构(JSON数组)
|
||||
*/
|
||||
content: QuestionComponentItem[];
|
||||
content: string | QuestionComponentItem[];
|
||||
|
||||
/**
|
||||
* 状态:0-草稿 1-已发布 2-已结束
|
||||
|
||||
63
src/api/system/SdbElectricityDevice/index.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ElectricityDeviceVO, ElectricityDeviceForm, ElectricityDeviceQuery } from './type';
|
||||
|
||||
/**
|
||||
* 查询电设备列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listElectricityDevice = (query?: ElectricityDeviceQuery): AxiosPromise<ElectricityDeviceVO[]> => {
|
||||
return request({
|
||||
url: '/electricityDevice/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询电设备详细
|
||||
* @param id
|
||||
*/
|
||||
export const getElectricityDevice = (id: string | number): AxiosPromise<ElectricityDeviceVO> => {
|
||||
return request({
|
||||
url: '/electricityDevice/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增电设备
|
||||
* @param data
|
||||
*/
|
||||
export const addElectricityDevice = (data: ElectricityDeviceForm) => {
|
||||
return request({
|
||||
url: '/electricityDevice',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改电设备
|
||||
* @param data
|
||||
*/
|
||||
export const updateElectricityDevice = (data: ElectricityDeviceForm) => {
|
||||
return request({
|
||||
url: '/electricityDevice',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除电设备
|
||||
* @param id
|
||||
*/
|
||||
export const delElectricityDevice = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/electricityDevice/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
95
src/api/system/SdbElectricityDevice/type.ts
Normal file
@@ -0,0 +1,95 @@
|
||||
export interface ElectricityDeviceVO {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 设备编码
|
||||
*/
|
||||
deviceCode: string;
|
||||
|
||||
/**
|
||||
* 安装地址
|
||||
*/
|
||||
address: string;
|
||||
|
||||
/**
|
||||
* 0.未删除,1.删除
|
||||
*/
|
||||
deleted: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid: string | number;
|
||||
}
|
||||
|
||||
export interface ElectricityDeviceForm extends BaseEntity {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 设备编码
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 安装地址
|
||||
*/
|
||||
address?: string;
|
||||
|
||||
/**
|
||||
* 0.未删除,1.删除
|
||||
*/
|
||||
deleted?: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url?: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid?: string | number;
|
||||
}
|
||||
|
||||
export interface ElectricityDeviceQuery extends PageQuery {
|
||||
/**
|
||||
* 设备编码
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 安装地址
|
||||
*/
|
||||
address?: string;
|
||||
|
||||
/**
|
||||
* 0.未删除,1.删除
|
||||
*/
|
||||
deleted?: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url?: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
63
src/api/system/SdbTopupRecord/index.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { TopupRecordVO, TopupRecordForm, TopupRecordQuery } from './type';
|
||||
|
||||
/**
|
||||
* 查询充值记录列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listTopupRecord = (query?: TopupRecordQuery): AxiosPromise<TopupRecordVO[]> => {
|
||||
return request({
|
||||
url: '/topupRecord/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询充值记录详细
|
||||
* @param id
|
||||
*/
|
||||
export const getTopupRecord = (id: string | number): AxiosPromise<TopupRecordVO> => {
|
||||
return request({
|
||||
url: '/topupRecord/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增充值记录
|
||||
* @param data
|
||||
*/
|
||||
export const addTopupRecord = (data: TopupRecordForm) => {
|
||||
return request({
|
||||
url: '/topupRecord',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改充值记录
|
||||
* @param data
|
||||
*/
|
||||
export const updateTopupRecord = (data: TopupRecordForm) => {
|
||||
return request({
|
||||
url: '/topupRecord',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除充值记录
|
||||
* @param id
|
||||
*/
|
||||
export const delTopupRecord = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/topupRecord/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
140
src/api/system/SdbTopupRecord/type.ts
Normal file
@@ -0,0 +1,140 @@
|
||||
export interface TopupRecordVO {
|
||||
/**
|
||||
* 充值记录ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
rechargeAmount: number;
|
||||
|
||||
/**
|
||||
* 充值时间
|
||||
*/
|
||||
rechargeTime: string;
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
deviceCode: string;
|
||||
|
||||
/**
|
||||
* 订单表
|
||||
*/
|
||||
orderId: string | number;
|
||||
|
||||
/**
|
||||
* 1.电表 2.水表
|
||||
*/
|
||||
type: number;
|
||||
|
||||
/**
|
||||
* 订单状态(0.未支付 1.已支付 2.支付中,3.支付失败 4.退款)
|
||||
*/
|
||||
status: number;
|
||||
|
||||
/**
|
||||
* 0.待接收 1.已接收
|
||||
*/
|
||||
getOver: number;
|
||||
}
|
||||
|
||||
export interface TopupRecordForm extends BaseEntity {
|
||||
/**
|
||||
* 充值记录ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
rechargeAmount?: number;
|
||||
|
||||
/**
|
||||
* 充值时间
|
||||
*/
|
||||
rechargeTime?: string;
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 订单表
|
||||
*/
|
||||
orderId?: string | number;
|
||||
|
||||
/**
|
||||
* 1.电表 2.水表
|
||||
*/
|
||||
type?: number;
|
||||
|
||||
/**
|
||||
* 订单状态(0.未支付 1.已支付 2.支付中,3.支付失败 4.退款)
|
||||
*/
|
||||
status?: number;
|
||||
|
||||
/**
|
||||
* 0.待接收 1.已接收
|
||||
*/
|
||||
getOver?: number;
|
||||
}
|
||||
|
||||
export interface TopupRecordQuery extends PageQuery {
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
rechargeAmount?: number;
|
||||
|
||||
/**
|
||||
* 充值时间
|
||||
*/
|
||||
rechargeTime?: string;
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 订单表
|
||||
*/
|
||||
orderId?: string | number;
|
||||
|
||||
/**
|
||||
* 1.电表 2.水表
|
||||
*/
|
||||
type?: number;
|
||||
|
||||
/**
|
||||
* 订单状态(0.未支付 1.已支付 2.支付中,3.支付失败 4.退款)
|
||||
*/
|
||||
status?: number;
|
||||
|
||||
/**
|
||||
* 0.待接收 1.已接收
|
||||
*/
|
||||
getOver?: number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
63
src/api/system/SdbWaterDevice/index.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { WaterDeviceVO, WaterDeviceForm, WaterDeviceQuery } from './type';
|
||||
|
||||
/**
|
||||
* 查询水 设备列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listWaterDevice = (query?: WaterDeviceQuery): AxiosPromise<WaterDeviceVO[]> => {
|
||||
return request({
|
||||
url: '/waterDevice/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询水 设备详细
|
||||
* @param id
|
||||
*/
|
||||
export const getWaterDevice = (id: string | number): AxiosPromise<WaterDeviceVO> => {
|
||||
return request({
|
||||
url: '/waterDevice/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增水 设备
|
||||
* @param data
|
||||
*/
|
||||
export const addWaterDevice = (data: WaterDeviceForm) => {
|
||||
return request({
|
||||
url: '/waterDevice',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改水 设备
|
||||
* @param data
|
||||
*/
|
||||
export const updateWaterDevice = (data: WaterDeviceForm) => {
|
||||
return request({
|
||||
url: '/waterDevice',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除水 设备
|
||||
* @param id
|
||||
*/
|
||||
export const delWaterDevice = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/waterDevice/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
95
src/api/system/SdbWaterDevice/type.ts
Normal file
@@ -0,0 +1,95 @@
|
||||
export interface WaterDeviceVO {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 水表设备编码
|
||||
*/
|
||||
deviceCode: string;
|
||||
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
address: string;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
deleted: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid: string | number;
|
||||
}
|
||||
|
||||
export interface WaterDeviceForm extends BaseEntity {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 水表设备编码
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
address?: string;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
deleted?: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url?: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid?: string | number;
|
||||
}
|
||||
|
||||
export interface WaterDeviceQuery extends PageQuery {
|
||||
/**
|
||||
* 水表设备编码
|
||||
*/
|
||||
deviceCode?: string;
|
||||
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
address?: string;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
deleted?: number;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
url?: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
openid?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M319 64m50 0l289 0q50 0 50 50l0 2q0 50-50 50l-289 0q-50 0-50-50l0-2q0-50 50-50ZM277.197 112l19.388 53.173c6.27 17.196 22.52 28.695 40.784 28.924l0.554 0.003h348.806c18.472 0 34.956-11.535 41.306-28.84l0.189-0.526L746.821 112H820c33.137 0 60 26.864 60 60v728c0 33.137-26.863 60-60 60H205c-33.137 0-60-26.863-60-60V172c0-33.136 26.863-60 60-60h72.197z m453.911 316.612c-14.094-14.533-36.913-14.533-50.988 0L462.804 653.006 344.897 531.26c-14.094-14.533-36.914-14.533-50.988 0-14.075 14.553-14.075 38.116 0 52.649l143.39 148.06c14.095 14.533 36.914 14.533 50.989 0l242.8-250.708c14.075-14.533 14.075-38.095 0.02-52.649z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M319 64m50 0l289 0q50 0 50 50l0 2q0 50-50 50l-289 0q-50 0-50-50l0-2q0-50 50-50ZM277.197 112l19.388 53.173c6.27 17.196 22.52 28.695 40.784 28.924l0.554 0.003h348.806c18.472 0 34.956-11.535 41.306-28.84l0.189-0.526L746.821 112H820c33.137 0 60 26.864 60 60v728c0 33.137-26.863 60-60 60H205c-33.137 0-60-26.863-60-60V172c0-33.136 26.863-60 60-60h72.197z m453.911 316.612c-14.094-14.533-36.913-14.533-50.988 0L462.804 653.006 344.897 531.26c-14.094-14.533-36.914-14.533-50.988 0-14.075 14.553-14.075 38.116 0 52.649l143.39 148.06c14.095 14.533 36.914 14.533 50.989 0l242.8-250.708c14.075-14.533 14.075-38.095 0.02-52.649z" /></svg>
|
||||
|
Before Width: | Height: | Size: 893 B After Width: | Height: | Size: 908 B |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M415.63981315 473.45592526l-125.8547832 125.85478318c-55.13478518-21.78578138-120.32454637-10.39014189-164.90160673 34.18691847-59.82710733 59.82710733-59.82710733 157.19279177 0 217.01989908 29.82976221 29.82976221 69.21175159 44.91222624 108.4261581 44.91222621 39.21440646 0 78.59639588-14.91488109 108.42615808-44.91222621 44.57706036-44.57706036 55.80511692-109.76682156 34.18691846-164.90160672l125.85478317-125.85478316-86.13762788-86.30521085z m-111.27506796 339.52302359c-39.21440646 39.21440646-102.89592127 39.21440646-142.11032775 0s-39.21440646-102.89592127 0-142.11032773c19.60720323-19.60720323 45.41497503-29.32701339 71.05516388-29.3270134 25.8077718 0 51.44796063 9.71981015 71.05516387 29.3270134 39.21440646 39.21440646 39.21440646 102.89592127 0 142.11032773zM573.50293665 487.86805756l101.38767487-101.38767486c54.63203637 21.4506155 119.15146583 10.05497602 163.39336033-34.01933556 44.2418945-44.2418945 55.46995105-108.76132396 34.01933553-163.3933603l-66.02767586 66.02767586c-23.62919365 23.62919365-62.50843426 23.62919365-86.13762791 0-23.62919365-23.62919365-23.62919365-62.50843426 0-86.13762791l66.02767588-66.02767587c-54.63203637-21.4506155-119.15146583-10.05497602-163.39336033 34.01933554-44.2418945 44.2418945-55.46995105 108.76132396-34.01933555 163.39336032l-101.38767486 101.38767487 86.1376279 86.13762791zM943.35847124 800.07506297l-232.94027778-232.94027779c-12.90388589 4.52473921-24.96985713 3.85440749-32.17592328-3.35165867-7.20606615-7.20606615-7.87639788-19.27203738-3.35165866-32.17592328l-33.18142086-33.18142085c-6.87090027-6.87090027-18.9368715-6.20056854-26.98085233 1.84341227l-28.65668165 28.65668163-314.38558356-314.21800061-15.75279575-44.57706034-47.25838731-24.8022742c-7.87639788-4.18957335-17.59620803-2.68132694-23.79677657 3.68682456l-21.95336431 21.95336429c-6.36815149 6.36815149-7.70881495 15.9203787-3.68682454 23.79677658l24.80227418 47.25838731 44.57706035 15.75279576 314.21800062 314.21800062-28.65668166 28.65668165c-7.87639788 7.87639788-8.71431257 19.9423691-1.84341227 26.98085235l33.18142087 33.18142085c12.90388589-4.52473921 24.96985713-3.85440749 32.17592328 3.35165867 7.20606615 7.20606615 7.87639788 19.27203738 3.35165867 32.17592326l232.94027777 232.94027779s13.23905177 11.8983883 77.25573243-52.11829235c66.53042467-66.19525881 52.11829237-77.08814949 52.11829236-77.0881495z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M415.63981315 473.45592526l-125.8547832 125.85478318c-55.13478518-21.78578138-120.32454637-10.39014189-164.90160673 34.18691847-59.82710733 59.82710733-59.82710733 157.19279177 0 217.01989908 29.82976221 29.82976221 69.21175159 44.91222624 108.4261581 44.91222621 39.21440646 0 78.59639588-14.91488109 108.42615808-44.91222621 44.57706036-44.57706036 55.80511692-109.76682156 34.18691846-164.90160672l125.85478317-125.85478316-86.13762788-86.30521085z m-111.27506796 339.52302359c-39.21440646 39.21440646-102.89592127 39.21440646-142.11032775 0s-39.21440646-102.89592127 0-142.11032773c19.60720323-19.60720323 45.41497503-29.32701339 71.05516388-29.3270134 25.8077718 0 51.44796063 9.71981015 71.05516387 29.3270134 39.21440646 39.21440646 39.21440646 102.89592127 0 142.11032773zM573.50293665 487.86805756l101.38767487-101.38767486c54.63203637 21.4506155 119.15146583 10.05497602 163.39336033-34.01933556 44.2418945-44.2418945 55.46995105-108.76132396 34.01933553-163.3933603l-66.02767586 66.02767586c-23.62919365 23.62919365-62.50843426 23.62919365-86.13762791 0-23.62919365-23.62919365-23.62919365-62.50843426 0-86.13762791l66.02767588-66.02767587c-54.63203637-21.4506155-119.15146583-10.05497602-163.39336033 34.01933554-44.2418945 44.2418945-55.46995105 108.76132396-34.01933555 163.39336032l-101.38767486 101.38767487 86.1376279 86.13762791zM943.35847124 800.07506297l-232.94027778-232.94027779c-12.90388589 4.52473921-24.96985713 3.85440749-32.17592328-3.35165867-7.20606615-7.20606615-7.87639788-19.27203738-3.35165866-32.17592328l-33.18142086-33.18142085c-6.87090027-6.87090027-18.9368715-6.20056854-26.98085233 1.84341227l-28.65668165 28.65668163-314.38558356-314.21800061-15.75279575-44.57706034-47.25838731-24.8022742c-7.87639788-4.18957335-17.59620803-2.68132694-23.79677657 3.68682456l-21.95336431 21.95336429c-6.36815149 6.36815149-7.70881495 15.9203787-3.68682454 23.79677658l24.80227418 47.25838731 44.57706035 15.75279576 314.21800062 314.21800062-28.65668166 28.65668165c-7.87639788 7.87639788-8.71431257 19.9423691-1.84341227 26.98085235l33.18142087 33.18142085c12.90388589-4.52473921 24.96985713-3.85440749 32.17592328 3.35165867 7.20606615 7.20606615 7.87639788 19.27203738 3.35165867 32.17592326l232.94027777 232.94027779s13.23905177 11.8983883 77.25573243-52.11829235c66.53042467-66.19525881 52.11829237-77.08814949 52.11829236-77.0881495z" /></svg>
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
1
src/assets/icons/svg/cangku_kucun_o.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M896 640h-42.666667v-89.6l-320-320L213.333333 550.4V810.666667h341.333334v42.666666H170.666667v-277.333333H128L533.333333 170.666667l405.333334 405.333333h-42.666667V640z m0 128v128h-128v-128h128z m-170.666667 0v128h-128v-128h128z m85.333334-170.666667v128h-128v-128h128z m-42.666667 42.666667h-42.666667v42.666667h42.666667v-42.666667z m-85.333333 170.666667h-42.666667v42.666666h42.666667v-42.666666z m170.666666 0h-42.666666v42.666666h42.666666v-42.666666z" /></svg>
|
||||
|
After Width: | Height: | Size: 752 B |
@@ -1 +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 class="icon" width="200px" height="170.38px" viewBox="0 0 1202 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M20.292931 1024h1180.504732v-39.891643H20.292931v39.891643z m1100.282995-81.200942V376.606637L601.136891 81.069407 80.053668 376.606637v566.192421h80.039049V416.46905H1040.536876v526.330008h80.03905zM1000.513698 662.790266h-52.555541v24.626276h-14.899993V662.790266h-52.555542v119.448398h120.011076V662.790266z m-139.916706 139.098266v139.660943h139.646328v-139.66825h-61.039549v29.164233h-17.538v-29.164233h-61.039549z m-521.660515-36.442503H321.259634v-29.156926h-61.302619v139.660943h140.304003v-139.668251H338.943784v29.156926zM601.136891 0.094998l-601.136888 341.991008v52.818611L601.136891 52.920916l601.166117 341.991009v-52.818612z m-60.652252 941.461785l-0.219225-472.064512h-19.99332v19.964091H220.123831l0.628445-20.132163h-20.424463v472.232584h20.409848l-0.61383-19.883708h300.148263l-0.189995 19.883708h20.40254z m-320.360808-432.165561h300.148263v176.24229H220.123831V509.391222z m0 392.346993V705.561065h300.148263V901.745522H220.123831z m279.833412-362.751617H438.910387v29.164233h-17.538001v-29.164233h-61.105316v119.726083h140.304003z m200.44473 283.253322v119.448398h120.011075V822.23992h-52.555541v24.626276h-14.899993v-24.626276h-52.555541z" /></svg>
|
||||
<?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 class="icon" width="200px" height="170.38px" viewBox="0 0 1202 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M20.292931 1024h1180.504732v-39.891643H20.292931v39.891643z m1100.282995-81.200942V376.606637L601.136891 81.069407 80.053668 376.606637v566.192421h80.039049V416.46905H1040.536876v526.330008h80.03905zM1000.513698 662.790266h-52.555541v24.626276h-14.899993V662.790266h-52.555542v119.448398h120.011076V662.790266z m-139.916706 139.098266v139.660943h139.646328v-139.66825h-61.039549v29.164233h-17.538v-29.164233h-61.039549z m-521.660515-36.442503H321.259634v-29.156926h-61.302619v139.660943h140.304003v-139.668251H338.943784v29.156926zM601.136891 0.094998l-601.136888 341.991008v52.818611L601.136891 52.920916l601.166117 341.991009v-52.818612z m-60.652252 941.461785l-0.219225-472.064512h-19.99332v19.964091H220.123831l0.628445-20.132163h-20.424463v472.232584h20.409848l-0.61383-19.883708h300.148263l-0.189995 19.883708h20.40254z m-320.360808-432.165561h300.148263v176.24229H220.123831V509.391222z m0 392.346993V705.561065h300.148263V901.745522H220.123831z m279.833412-362.751617H438.910387v29.164233h-17.538001v-29.164233h-61.105316v119.726083h140.304003z m200.44473 283.253322v119.448398h120.011075V822.23992h-52.555541v24.626276h-14.899993v-24.626276h-52.555541z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M938.666667 576V896a42.666667 42.666667 0 0 1-42.666667 42.666667h-42.666667a42.666667 42.666667 0 0 1-42.666666-42.666667v-42.666667H213.333333v42.666667a42.666667 42.666667 0 0 1-42.666666 42.666667H128a42.666667 42.666667 0 0 1-42.666667-42.666667v-320l-53.034666-13.226667A42.666667 42.666667 0 0 1 0 521.386667v-30.72a21.333333 21.333333 0 0 1 21.333333-21.333334h80l91.221334-243.285333A85.333333 85.333333 0 0 1 272.469333 170.666667h479.061334a85.333333 85.333333 0 0 1 79.914666 55.381333L922.666667 469.333333H1002.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v30.72a42.666667 42.666667 0 0 1-32.298667 41.386666L938.666667 576zM170.666667 640v85.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h138.453334a21.333333 21.333333 0 0 0 18.773333-31.402667C336.213333 672.170667 269.568 640 170.666667 640z m682.666666 0c-98.858667 0-165.504 32.213333-199.936 96.597333a21.333333 21.333333 0 0 0 18.816 31.402667H810.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333zM256 256l-66.602667 199.850667A42.666667 42.666667 0 0 0 229.845333 512h564.309334a42.666667 42.666667 0 0 0 40.448-56.149333L768 256H256z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M938.666667 576V896a42.666667 42.666667 0 0 1-42.666667 42.666667h-42.666667a42.666667 42.666667 0 0 1-42.666666-42.666667v-42.666667H213.333333v42.666667a42.666667 42.666667 0 0 1-42.666666 42.666667H128a42.666667 42.666667 0 0 1-42.666667-42.666667v-320l-53.034666-13.226667A42.666667 42.666667 0 0 1 0 521.386667v-30.72a21.333333 21.333333 0 0 1 21.333333-21.333334h80l91.221334-243.285333A85.333333 85.333333 0 0 1 272.469333 170.666667h479.061334a85.333333 85.333333 0 0 1 79.914666 55.381333L922.666667 469.333333H1002.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v30.72a42.666667 42.666667 0 0 1-32.298667 41.386666L938.666667 576zM170.666667 640v85.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h138.453334a21.333333 21.333333 0 0 0 18.773333-31.402667C336.213333 672.170667 269.568 640 170.666667 640z m682.666666 0c-98.858667 0-165.504 32.213333-199.936 96.597333a21.333333 21.333333 0 0 0 18.816 31.402667H810.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333zM256 256l-66.602667 199.850667A42.666667 42.666667 0 0 0 229.845333 512h564.309334a42.666667 42.666667 0 0 0 40.448-56.149333L768 256H256z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M310.421 709.599v74.28H204.407c-29.11 0-52.793-25.408-52.793-56.64v-254.95l24.221-36.159v2.55H817.78v-1.385l31.656 47.259 39.879-26.713-91.305-136.306 74.95-0.044-0.023-40-101.71 0.059-37.919-56.608c-18.621-27.798-49.061-44.393-81.427-44.393h-310.93c-32.367 0-62.807 16.596-81.427 44.393l-38.084 56.855-89.569 0.053 0.023 40 62.741-0.037-90.514 135.127h-0.508v0.759l-0.095 0.142 0.095 0.064V727.24c0 57.698 45.216 104.64 100.793 104.64H358.42V709.6c0-8.999 6.458-16.32 14.397-16.32h170.385v-48H372.818c-34.406-0.002-62.397 28.852-62.397 64.319z m-11.017-457.943c9.692-14.469 25.224-23.107 41.547-23.107h310.93c16.323 0 31.855 8.638 41.548 23.106l93.125 139.024H206.279l93.125-139.023zM261.498 514.322h156.716v48H261.498zM761.942 520.251c-88.556 0-160.601 72.045-160.601 160.601 0 88.555 72.045 160.6 160.601 160.6 88.555 0 160.6-72.045 160.6-160.6 0-88.556-72.045-160.601-160.6-160.601z m0 277.2c-64.294 0-116.601-52.307-116.601-116.6 0-64.294 52.307-116.601 116.601-116.601 64.293 0 116.6 52.307 116.6 116.601s-52.307 116.6-116.6 116.6zM834.379 630.118h-31.644c-1.857 0-3.572 0.857-4.643 2.357l-45.359 62.717-16.358-22.787c-1.071-1.5-2.786-2.357-4.643-2.357H700.16c-4.643 0-7.357 5.286-4.643 9.072l52.716 72.931a5.682 5.682 0 0 0 9.215 0l81.575-112.862c2.714-3.785-0.001-9.071-4.644-9.071z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M310.421 709.599v74.28H204.407c-29.11 0-52.793-25.408-52.793-56.64v-254.95l24.221-36.159v2.55H817.78v-1.385l31.656 47.259 39.879-26.713-91.305-136.306 74.95-0.044-0.023-40-101.71 0.059-37.919-56.608c-18.621-27.798-49.061-44.393-81.427-44.393h-310.93c-32.367 0-62.807 16.596-81.427 44.393l-38.084 56.855-89.569 0.053 0.023 40 62.741-0.037-90.514 135.127h-0.508v0.759l-0.095 0.142 0.095 0.064V727.24c0 57.698 45.216 104.64 100.793 104.64H358.42V709.6c0-8.999 6.458-16.32 14.397-16.32h170.385v-48H372.818c-34.406-0.002-62.397 28.852-62.397 64.319z m-11.017-457.943c9.692-14.469 25.224-23.107 41.547-23.107h310.93c16.323 0 31.855 8.638 41.548 23.106l93.125 139.024H206.279l93.125-139.023zM261.498 514.322h156.716v48H261.498zM761.942 520.251c-88.556 0-160.601 72.045-160.601 160.601 0 88.555 72.045 160.6 160.601 160.6 88.555 0 160.6-72.045 160.6-160.6 0-88.556-72.045-160.601-160.6-160.601z m0 277.2c-64.294 0-116.601-52.307-116.601-116.6 0-64.294 52.307-116.601 116.601-116.601 64.293 0 116.6 52.307 116.6 116.601s-52.307 116.6-116.6 116.6zM834.379 630.118h-31.644c-1.857 0-3.572 0.857-4.643 2.357l-45.359 62.717-16.358-22.787c-1.071-1.5-2.786-2.357-4.643-2.357H700.16c-4.643 0-7.357 5.286-4.643 9.072l52.716 72.931a5.682 5.682 0 0 0 9.215 0l81.575-112.862c2.714-3.785-0.001-9.071-4.644-9.071z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M631.926154 341.819077c0-112.206769-92.829538-205.036308-212.755692-205.036308H125.203692v754.294154h108.307693v-344.260923h189.518769c116.027077 0 208.896-92.829538 208.896-204.996923z m-228.233846 96.689231H229.612308V241.230769h174.08c50.294154 3.859692 96.689231 46.434462 96.68923 96.689231 3.899077 50.294154-46.395077 100.588308-96.68923 100.588308z m487.384615 266.909538c-3.859692-7.758769-11.618462-15.478154-11.618461-15.478154l-38.675693-100.588307c-7.719385-19.298462-30.916923-30.916923-42.535384-30.916923H597.070769c-11.618462 0-34.816 11.579077-42.535384 30.916923l-38.715077 100.588307s-7.719385 7.719385-11.579077 15.478154c-3.899077 7.719385-7.758769 11.579077-7.758769 58.013539 0 42.535385 7.758769 58.013538 19.337846 65.772307l7.758769 3.859693v42.535384c0 11.618462 3.859692 15.478154 15.478154 15.478154h27.057231c11.618462 0 19.337846 0 19.337846-11.618461v-38.675693h212.755692v38.675693c0 11.618462 7.719385 11.618462 19.337846 11.618461h27.057231c11.618462 0 15.478154-3.859692 15.478154-15.478154v-42.535384l7.758769-3.859693c11.579077-3.899077 19.298462-19.337846 19.298462-65.772307 11.618462-46.434462 7.758769-54.153846 3.899076-58.013539z m-321.063385-27.096615c0-3.859692 11.618462-50.294154 15.478154-65.772308 3.859692-3.859692 15.478154-23.197538 30.956308-19.298461h166.321231c15.478154 0 27.096615 15.438769 30.956307 19.298461 3.859692 15.478154 15.478154 61.912615 15.478154 65.772308 0 7.758769-3.899077 7.758769-3.899077 7.758769h-251.431384c0-3.899077-7.719385 0-3.859693-7.758769z m3.859693 108.307692c-15.438769 0-30.916923-15.478154-30.916923-30.916923 0-15.478154 15.478154-30.956308 30.916923-30.956308 15.478154 0 30.956308 15.478154 30.956307 30.956308a30.523077 30.523077 0 0 1-30.956307 30.916923z m251.431384 0c-15.438769 0-30.916923-15.478154-30.916923-30.916923 0-15.478154 15.478154-30.956308 30.916923-30.956308 15.478154 0 30.956308 15.478154 30.956308 30.956308a30.523077 30.523077 0 0 1-30.956308 30.916923z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M631.926154 341.819077c0-112.206769-92.829538-205.036308-212.755692-205.036308H125.203692v754.294154h108.307693v-344.260923h189.518769c116.027077 0 208.896-92.829538 208.896-204.996923z m-228.233846 96.689231H229.612308V241.230769h174.08c50.294154 3.859692 96.689231 46.434462 96.68923 96.689231 3.899077 50.294154-46.395077 100.588308-96.68923 100.588308z m487.384615 266.909538c-3.859692-7.758769-11.618462-15.478154-11.618461-15.478154l-38.675693-100.588307c-7.719385-19.298462-30.916923-30.916923-42.535384-30.916923H597.070769c-11.618462 0-34.816 11.579077-42.535384 30.916923l-38.715077 100.588307s-7.719385 7.719385-11.579077 15.478154c-3.899077 7.719385-7.758769 11.579077-7.758769 58.013539 0 42.535385 7.758769 58.013538 19.337846 65.772307l7.758769 3.859693v42.535384c0 11.618462 3.859692 15.478154 15.478154 15.478154h27.057231c11.618462 0 19.337846 0 19.337846-11.618461v-38.675693h212.755692v38.675693c0 11.618462 7.719385 11.618462 19.337846 11.618461h27.057231c11.618462 0 15.478154-3.859692 15.478154-15.478154v-42.535384l7.758769-3.859693c11.579077-3.899077 19.298462-19.337846 19.298462-65.772307 11.618462-46.434462 7.758769-54.153846 3.899076-58.013539z m-321.063385-27.096615c0-3.859692 11.618462-50.294154 15.478154-65.772308 3.859692-3.859692 15.478154-23.197538 30.956308-19.298461h166.321231c15.478154 0 27.096615 15.438769 30.956307 19.298461 3.859692 15.478154 15.478154 61.912615 15.478154 65.772308 0 7.758769-3.899077 7.758769-3.899077 7.758769h-251.431384c0-3.899077-7.719385 0-3.859693-7.758769z m3.859693 108.307692c-15.438769 0-30.916923-15.478154-30.916923-30.916923 0-15.478154 15.478154-30.956308 30.916923-30.956308 15.478154 0 30.956308 15.478154 30.956307 30.956308a30.523077 30.523077 0 0 1-30.956307 30.916923z m251.431384 0c-15.438769 0-30.916923-15.478154-30.916923-30.916923 0-15.478154 15.478154-30.956308 30.916923-30.956308 15.478154 0 30.956308 15.478154 30.956308 30.956308a30.523077 30.523077 0 0 1-30.956308 30.916923z" /></svg>
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
1
src/assets/icons/svg/chongzhijilu.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M622.592 145.408c12.288 0 23.04 10.24 23.04 23.04 0 12.288-10.24 23.04-23.04 23.04H439.296c-12.288 0-23.04-10.24-23.04-23.04 0-12.288 10.24-23.04 23.04-23.04h183.296m0-45.568H439.296c-37.888 0-68.608 30.72-68.608 68.608s30.72 68.608 68.608 68.608h183.296c37.888 0 68.608-30.72 68.608-68.608s-31.232-68.608-68.608-68.608zM691.2 526.848H370.688V481.28H691.2v45.568z" /><path fill="#000000" d="M728.064 371.2L541.696 496.64c-1.024 1.024-2.56 0.512-3.584-0.512l-22.528-33.792c-1.024-1.024-0.512-2.56 0.512-3.584l186.368-125.44c1.024-1.024 2.56-0.512 3.584 0.512l22.528 33.792c1.024 1.024 1.024 2.56-0.512 3.584z" /><path fill="#000000" d="M332.8 367.616l22.528-33.792c1.024-1.024 2.56-1.536 3.584-0.512l186.368 125.44c1.024 1.024 1.536 2.56 0.512 3.584l-22.528 33.792c-1.024 1.024-2.56 1.536-3.584 0.512L333.312 371.2c-1.024-1.024-1.536-2.56-0.512-3.584zM370.688 618.496H691.2v45.568H370.688v-45.568z" /><path fill="#000000" d="M507.904 458.24h45.568v320.512h-45.568V458.24z" /><path fill="#000000" d="M774.144 942.592H286.72c-72.704 0-132.096-59.392-132.096-132.096V268.288c0-72.704 59.392-132.096 132.096-132.096v58.88c-40.448 0-73.216 32.768-73.216 73.216v542.208c0 40.448 32.768 73.216 73.216 73.216h486.912c40.448 0 73.216-32.768 73.216-73.216V268.288c0-40.448-32.768-73.216-73.216-73.216V136.704c72.704 0 132.096 59.392 132.096 132.096v542.208c0 72.192-58.88 131.584-131.584 131.584z" /><path fill="#000000" d="M288.256 165.888m-29.696 0a29.696 29.696 0 1 0 59.392 0 29.696 29.696 0 1 0-59.392 0Z" /><path fill="#000000" d="M773.12 165.888m-29.696 0a29.696 29.696 0 1 0 59.392 0 29.696 29.696 0 1 0-59.392 0Z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
1
src/assets/icons/svg/dianbiaoguanli.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M171.386031 1011.958665c-9.608742 0-18.366077-5.716593-22.014966-14.473928-3.648889-8.757335-2.067704-18.974225 4.500297-25.907115l334.48153-354.307162L159.587955 425.947025c-7.541038-4.500297-12.041335-12.406224-12.041335-20.79867 0-8.757335 4.865186-16.541632 12.406224-20.79867l680.396247-381.187314c10.581779-5.716593 23.474522-3.284 31.01556 6.081482 7.541038 9.365483 6.689631 22.623114-1.216297 31.380449L535.301936 399.066873l329.008195 191.688324c7.541038 4.500297 12.041335 12.406224 12.041335 21.041929 0 8.757335-4.865186 16.541632-12.649483 20.798669l-680.639506 376.322129c-3.648889 1.824445-7.541038 3.040741-11.676446 3.040741z" /></svg>
|
||||
|
After Width: | Height: | Size: 936 B |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M459.165285 885.094373h105.308167V692.179926h-105.308167V885.094373z m-52.383136 26.3722v-245.658847c0-14.631152 11.018522-26.3722 24.204621-26.372199h161.845828c13.1861 0 24.204622 11.921679 24.204622 26.372199v245.839478c0 14.631152-11.018522 26.3722-24.204622 26.3722h-161.845828c-13.366731-0.541895-24.204622-12.282942-24.204621-26.552831z m0 0M301.473981 148.298465v736.434645h420.871406V148.298465h-420.871406zM248.910213 464.222967V122.287529c0-14.631152 11.921679-26.3722 26.3722-26.3722h472.893279c14.631152 0 26.3722 11.921679 26.3722 26.3722V464.222967H888.707003c14.631152 0 26.010937 11.921679 26.010937 26.3722v420.329511c0 14.631152-11.379785 26.3722-26.010937 26.3722l-136.376786-0.541895c-1.445052 0-2.709473 0.541895-4.154525 0.541895h-473.254542l-140.350679-0.541895c-14.631152 0-26.010937-11.921679-26.010937-26.372199V490.233904c0-14.631152 11.379785-26.3722 26.010937-26.3722h114.520374v0.361263z m526.179574 52.563768v368.488269h87.967542v-368.488269h-87.967542z m-614.147116 0v368.488269h87.606279v-368.488269H160.942671z m0 0M412.201094 411.297936c-12.824837 0-22.75957-11.921679-22.75957-26.3722 0-14.631152 10.476627-26.3722 22.75957-26.372199h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.372199 0 14.631152-10.476627 26.3722-22.759569 26.3722H412.201094z m0-122.648792c-12.824837 0-22.75957-11.921679-22.75957-26.372199 0-14.631152 10.476627-26.3722 22.75957-26.3722h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.3722 0 14.631152-10.476627 26.3722-22.759569 26.372199H412.201094z m0 245.839478c-12.824837 0-22.75957-11.921679-22.75957-26.372199 0-14.631152 10.476627-26.3722 22.75957-26.3722h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.3722 0 14.631152-10.476627 26.3722-22.759569 26.372199H412.201094z m0 0" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M459.165285 885.094373h105.308167V692.179926h-105.308167V885.094373z m-52.383136 26.3722v-245.658847c0-14.631152 11.018522-26.3722 24.204621-26.372199h161.845828c13.1861 0 24.204622 11.921679 24.204622 26.372199v245.839478c0 14.631152-11.018522 26.3722-24.204622 26.3722h-161.845828c-13.366731-0.541895-24.204622-12.282942-24.204621-26.552831z m0 0M301.473981 148.298465v736.434645h420.871406V148.298465h-420.871406zM248.910213 464.222967V122.287529c0-14.631152 11.921679-26.3722 26.3722-26.3722h472.893279c14.631152 0 26.3722 11.921679 26.3722 26.3722V464.222967H888.707003c14.631152 0 26.010937 11.921679 26.010937 26.3722v420.329511c0 14.631152-11.379785 26.3722-26.010937 26.3722l-136.376786-0.541895c-1.445052 0-2.709473 0.541895-4.154525 0.541895h-473.254542l-140.350679-0.541895c-14.631152 0-26.010937-11.921679-26.010937-26.372199V490.233904c0-14.631152 11.379785-26.3722 26.010937-26.3722h114.520374v0.361263z m526.179574 52.563768v368.488269h87.967542v-368.488269h-87.967542z m-614.147116 0v368.488269h87.606279v-368.488269H160.942671z m0 0M412.201094 411.297936c-12.824837 0-22.75957-11.921679-22.75957-26.3722 0-14.631152 10.476627-26.3722 22.75957-26.372199h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.372199 0 14.631152-10.476627 26.3722-22.759569 26.3722H412.201094z m0-122.648792c-12.824837 0-22.75957-11.921679-22.75957-26.372199 0-14.631152 10.476627-26.3722 22.75957-26.3722h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.3722 0 14.631152-10.476627 26.3722-22.759569 26.372199H412.201094z m0 245.839478c-12.824837 0-22.75957-11.921679-22.75957-26.372199 0-14.631152 10.476627-26.3722 22.75957-26.3722h199.778444c12.824837 0 22.75957 11.921679 22.759569 26.3722 0 14.631152-10.476627 26.3722-22.759569 26.372199H412.201094z m0 0" /></svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M692.2752 548.608H331.7248a24.576 24.576 0 0 1 0-49.0496h360.5504a24.576 24.576 0 0 1 0 49.0496zM567.7056 709.1712H331.7248a24.576 24.576 0 1 1 0-49.1008h235.9808a24.576 24.576 0 0 1 0 49.1008zM872.3968 292.8128H643.584l-86.6304-150.1184A51.456 51.456 0 0 0 512 116.7872h-0.0512a51.1488 51.1488 0 0 0-44.9024 25.9584L380.416 292.8128H151.6032A49.152 49.152 0 0 0 102.4 342.016v515.9936c0 27.1872 22.016 49.2032 49.2032 49.2032h720.7936a49.152 49.152 0 0 0 49.2032-49.2032V342.016a49.152 49.152 0 0 0-49.2032-49.2032z m-359.7312-124.4672l71.8848 124.5184H439.808l72.8576-124.5184z m363.1616 689.7152c0 1.8944-1.536 3.3792-3.3792 3.3792H151.6032a3.3792 3.3792 0 0 1-3.3792-3.3792V342.016c0-1.8944 1.536-3.3792 3.3792-3.3792h720.7936c1.8944 0 3.3792 1.536 3.3792 3.3792v516.0448z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M692.2752 548.608H331.7248a24.576 24.576 0 0 1 0-49.0496h360.5504a24.576 24.576 0 0 1 0 49.0496zM567.7056 709.1712H331.7248a24.576 24.576 0 1 1 0-49.1008h235.9808a24.576 24.576 0 0 1 0 49.1008zM872.3968 292.8128H643.584l-86.6304-150.1184A51.456 51.456 0 0 0 512 116.7872h-0.0512a51.1488 51.1488 0 0 0-44.9024 25.9584L380.416 292.8128H151.6032A49.152 49.152 0 0 0 102.4 342.016v515.9936c0 27.1872 22.016 49.2032 49.2032 49.2032h720.7936a49.152 49.152 0 0 0 49.2032-49.2032V342.016a49.152 49.152 0 0 0-49.2032-49.2032z m-359.7312-124.4672l71.8848 124.5184H439.808l72.8576-124.5184z m363.1616 689.7152c0 1.8944-1.536 3.3792-3.3792 3.3792H151.6032a3.3792 3.3792 0 0 1-3.3792-3.3792V342.016c0-1.8944 1.536-3.3792 3.3792-3.3792h720.7936c1.8944 0 3.3792 1.536 3.3792 3.3792v516.0448z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M335.3 484.8L308 191c232.3-149.2 259.6 124.2 450.8-41.9l55.8 281.3c-216.8 139.7-277.9-135.5-479.3 54.4z m-22.7 394.3c-21.7 2-40.8-13.9-42.8-35.6l-60.1-646.8c-2-21.7 13.9-40.8 35.6-42.8 21.7-2 40.8 13.9 42.8 35.6l60.1 646.8c2 21.6-13.9 40.8-35.6 42.8z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M335.3 484.8L308 191c232.3-149.2 259.6 124.2 450.8-41.9l55.8 281.3c-216.8 139.7-277.9-135.5-479.3 54.4z m-22.7 394.3c-21.7 2-40.8-13.9-42.8-35.6l-60.1-646.8c-2-21.7 13.9-40.8 35.6-42.8 21.7-2 40.8 13.9 42.8 35.6l60.1 646.8c2 21.6-13.9 40.8-35.6 42.8z" /></svg>
|
||||
|
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 542 B |
1
src/assets/icons/svg/jiaofeiguanli.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M360 466.7c-13.8 0-25 11.2-25 25s11.2 25 25 25h79.5v50.8c0 13.8 11.2 25 25 25s25-11.2 25-25v-50.8h80.6c13.8 0 25-11.2 25-25s-11.2-25-25-25h-80.6v-32.3h80.6c13.8 0 25-11.2 25-25s-11.2-25-25-25h-37.9l36.6-75.3c6-12.4 0.9-27.4-11.6-33.4-12.4-6-27.4-0.9-33.4 11.6l-47.2 97.1h-28.2l-47.2-97.1c-6-12.4-21-17.6-33.4-11.6-12.4 6-17.6 21-11.6 33.4l36.6 75.3H360c-13.8 0-25 11.2-25 25s11.2 25 25 25h79.5v32.3H360zM913.1 501.3c-0.1-13.8-11.2-24.9-25-24.9h-59.7c0.4-7.2 0.7-14.4 0.7-21.6 0-48.7-9.5-95.9-28.4-140.4-18.2-43-44.2-81.5-77.3-114.7-33.1-33.1-71.7-59.1-114.7-77.3C564.2 103.6 517 94 468.3 94s-95.9 9.5-140.4 28.4c-43 18.2-81.5 44.2-114.7 77.3-33.1 33.1-59.1 71.7-77.3 114.7-18.8 44.5-28.4 91.7-28.4 140.4 0 104.7 44.8 202.5 122 270.5-45.1 11.2-78.6 52-78.6 100.5 0 59.7 48.6 108.2 108.2 108.2h259.1c4.5 0 8.9-1.2 12.8-3.5l178.9-106.3h179.7c6.7 0 13-2.7 17.7-7.4 4.7-4.7 7.3-11.1 7.3-17.8l-1.5-297.7z m-755.6-46.4c0-171.4 139.4-310.8 310.8-310.8s310.8 139.4 310.8 310.8c0 7.2-0.3 14.4-0.8 21.6H657.8c-6.4 0-12.5 2.4-17.1 6.8L509.3 607c-0.5 0.4-1.1 0.9-1.6 1.4l-104.3 98.4-0.5 0.5-16 15.1h-80.7c-1.8-2.5-4.1-4.8-6.8-6.6-88.9-57.7-141.9-155.2-141.9-260.9z m545.4 319.4c-4.5 0-8.9 1.2-12.8 3.5L511.3 884.1H259.1c-32.1 0-58.2-26.1-58.2-58.2 0-29.5 24-53.5 53.5-53.5h131.5c1.7 5.5 4.1 10.9 7.3 16 9.8 15.5 25.8 26.1 43.9 29.2 3.5 0.6 7.1 0.9 10.6 0.9 14.6 0 28.9-4.9 40.4-14.2l138.8-111c10.8-8.6 12.5-24.4 3.9-35.1-8.6-10.8-24.4-12.5-35.1-3.9l-138.8 111c-4.4 3.5-9.1 3.4-11.5 3-2.4-0.4-6.9-1.8-9.9-6.6-3.7-5.8-2.8-13.4 2.1-18.2l230.3-216.9h195.4l1.2 247.9H702.9z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M981.566 741.566c0 138.303-112.132 250.434-250.434 250.434-51.151 0-98.671-15.402-138.323-41.739h-446.024c-57.63 0-104.347-46.718-104.347-104.348v-709.566c0-57.63 46.718-104.347 104.347-104.347h584.347c57.63 0 104.347 46.718 104.347 104.347v377.781c86.15 39.59 146.087 126.407 146.087 227.437zM793.739 178.087c0-57.63-46.718-104.347-104.347-104.347h-500.87c-57.63 0-104.347 46.718-104.347 104.347v626.087c0 57.63 46.718 104.347 104.347 104.347h356.327c-39.798-43.988-64.153-102.6-64.153-166.901 0-0.020 0-0.038 0-0.058 0-138.3 112.132-250.432 250.434-250.432 21.663 0 42.553 3.047 62.609 8.202v-321.246zM731.13 532.87c-115.263 0-208.696 93.433-208.696 208.696s93.433 208.696 208.696 208.696 208.696-93.433 208.696-208.696-93.433-208.696-208.696-208.696zM825.043 733.197v20.87h-67.387l4.779 0.793v40.967h62.609v20.87h-62.609v62.63h-62.609v-62.63h-62.609v-20.87h62.609v-40.967l8.577-0.793h-71.186v-20.87h56.577l-67.013-104.39h56.911l49.336 95.833 45.537-95.833h56.911l-63.214 104.39h52.779zM512.667 441.127c-34.351 26.588-77.301 39.318-128.849 38.212h-50.191v178.748h-82.497v-459.13h142.434c113.739 0 170.609 45.391 170.609 136.153 0 44.097-17.176 79.43-51.506 106.017zM376.723 270.101h-43.096v138.929h42.219c57.266 0 100.8-23.437 100.8-70.31 0-45.746-43.242-68.619-99.923-68.619z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M981.566 741.566c0 138.303-112.132 250.434-250.434 250.434-51.151 0-98.671-15.402-138.323-41.739h-446.024c-57.63 0-104.347-46.718-104.347-104.348v-709.566c0-57.63 46.718-104.347 104.347-104.347h584.347c57.63 0 104.347 46.718 104.347 104.347v377.781c86.15 39.59 146.087 126.407 146.087 227.437zM793.739 178.087c0-57.63-46.718-104.347-104.347-104.347h-500.87c-57.63 0-104.347 46.718-104.347 104.347v626.087c0 57.63 46.718 104.347 104.347 104.347h356.327c-39.798-43.988-64.153-102.6-64.153-166.901 0-0.020 0-0.038 0-0.058 0-138.3 112.132-250.432 250.434-250.432 21.663 0 42.553 3.047 62.609 8.202v-321.246zM731.13 532.87c-115.263 0-208.696 93.433-208.696 208.696s93.433 208.696 208.696 208.696 208.696-93.433 208.696-208.696-93.433-208.696-208.696-208.696zM825.043 733.197v20.87h-67.387l4.779 0.793v40.967h62.609v20.87h-62.609v62.63h-62.609v-62.63h-62.609v-20.87h62.609v-40.967l8.577-0.793h-71.186v-20.87h56.577l-67.013-104.39h56.911l49.336 95.833 45.537-95.833h56.911l-63.214 104.39h52.779zM512.667 441.127c-34.351 26.588-77.301 39.318-128.849 38.212h-50.191v178.748h-82.497v-459.13h142.434c113.739 0 170.609 45.391 170.609 136.153 0 44.097-17.176 79.43-51.506 106.017zM376.723 270.101h-43.096v138.929h42.219c57.266 0 100.8-23.437 100.8-70.31 0-45.746-43.242-68.619-99.923-68.619z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
1
src/assets/icons/svg/peizhitubiao.svg
Normal 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="1776492631240" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2047" width="200" height="200" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M974.506667 426.666667A28.16 28.16 0 0 0 1002.666667 398.506667V202.666667A74.666667 74.666667 0 0 0 928 128h-832A74.666667 74.666667 0 0 0 21.333333 202.666667v195.84A28.16 28.16 0 0 0 49.493333 426.666667a87.893333 87.893333 0 0 1 88.746667 76.8 85.333333 85.333333 0 0 1-85.333333 93.866666h-3.413334A28.16 28.16 0 0 0 21.333333 625.493333v195.84A74.666667 74.666667 0 0 0 96 896h832a74.666667 74.666667 0 0 0 74.666667-74.666667v-195.84A28.16 28.16 0 0 0 974.506667 597.333333h-3.84a85.333333 85.333333 0 0 1-85.333334-93.866666 87.893333 87.893333 0 0 1 89.173334-76.8zM938.666667 657.92v163.413333a10.666667 10.666667 0 0 1-10.666667 10.666667h-832a10.666667 10.666667 0 0 1-10.666667-10.666667v-163.413333a149.333333 149.333333 0 0 0 0-291.84V202.666667a10.666667 10.666667 0 0 1 10.666667-10.666667h832a10.666667 10.666667 0 0 1 10.666667 10.666667v163.413333a149.333333 149.333333 0 0 0 0 291.84z" p-id="2048" fill="#2c2c2c"></path><path d="M381.226667 517.76a296.746667 296.746667 0 0 1-48.64 170.666667l40.96 37.333333a333.013333 333.013333 0 0 0 58.453333-162.346667h205.44v84.053334c0 13.226667-5.12 21.333333-15.36 21.333333-18.986667 0-39.893333 0-62.506667-2.56l14.293334 52.266667H640a45.44 45.44 0 0 0 52.266667-50.773334V266.24H381.226667z m53.76-200.32h202.24v71.68h-202.24z m0 121.386667h202.24v75.733333h-202.24z" p-id="2049" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -1 +0,0 @@
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M974.506667 426.666667A28.16 28.16 0 0 0 1002.666667 398.506667V202.666667A74.666667 74.666667 0 0 0 928 128h-832A74.666667 74.666667 0 0 0 21.333333 202.666667v195.84A28.16 28.16 0 0 0 49.493333 426.666667a87.893333 87.893333 0 0 1 88.746667 76.8 85.333333 85.333333 0 0 1-85.333333 93.866666h-3.413334A28.16 28.16 0 0 0 21.333333 625.493333v195.84A74.666667 74.666667 0 0 0 96 896h832a74.666667 74.666667 0 0 0 74.666667-74.666667v-195.84A28.16 28.16 0 0 0 974.506667 597.333333h-3.84a85.333333 85.333333 0 0 1-85.333334-93.866666 87.893333 87.893333 0 0 1 89.173334-76.8zM938.666667 657.92v163.413333a10.666667 10.666667 0 0 1-10.666667 10.666667h-832a10.666667 10.666667 0 0 1-10.666667-10.666667v-163.413333a149.333333 149.333333 0 0 0 0-291.84V202.666667a10.666667 10.666667 0 0 1 10.666667-10.666667h832a10.666667 10.666667 0 0 1 10.666667 10.666667v163.413333a149.333333 149.333333 0 0 0 0 291.84zM381.226667 517.76a296.746667 296.746667 0 0 1-48.64 170.666667l40.96 37.333333a333.013333 333.013333 0 0 0 58.453333-162.346667h205.44v84.053334c0 13.226667-5.12 21.333333-15.36 21.333333-18.986667 0-39.893333 0-62.506667-2.56l14.293334 52.266667H640a45.44 45.44 0 0 0 52.266667-50.773334V266.24H381.226667z m53.76-200.32h202.24v71.68h-202.24z m0 121.386667h202.24v75.733333h-202.24z" /></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M653.44 734.72a32.64 32.64 0 0 0-35.2 28.16 32 32 0 0 0 28.16 35.2c139.52 16 192 49.92 199.04 64-6.4 20.48-116.48 71.04-339.84 71.04s-333.44-50.56-339.84-69.76c3.84-12.8 57.6-45.44 192-64a32 32 0 1 0-7.68-64c-92.8 11.52-248.32 42.88-248.32 128 0 106.24 256 134.4 403.84 134.4s403.84-28.16 403.84-134.4c-0.64-86.4-160.64-117.12-256-128.64zM479.36 768a32 32 0 0 0 51.2 0l211.2-286.72a291.2 291.2 0 1 0-472.96 0z m25.6-572.16a115.2 115.2 0 1 1-115.2 115.2 115.84 115.84 0 0 1 115.2-115.2z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M653.44 734.72a32.64 32.64 0 0 0-35.2 28.16 32 32 0 0 0 28.16 35.2c139.52 16 192 49.92 199.04 64-6.4 20.48-116.48 71.04-339.84 71.04s-333.44-50.56-339.84-69.76c3.84-12.8 57.6-45.44 192-64a32 32 0 1 0-7.68-64c-92.8 11.52-248.32 42.88-248.32 128 0 106.24 256 134.4 403.84 134.4s403.84-28.16 403.84-134.4c-0.64-86.4-160.64-117.12-256-128.64zM479.36 768a32 32 0 0 0 51.2 0l211.2-286.72a291.2 291.2 0 1 0-472.96 0z m25.6-572.16a115.2 115.2 0 1 1-115.2 115.2 115.84 115.84 0 0 1 115.2-115.2z" /></svg>
|
||||
|
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 777 B |
1
src/assets/icons/svg/ribao.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M438.4 134.8h167.2v70H438.4zM898.1 134.8h-67.2v70h57.9V891H136.7V204.8h76.5v-70h-85.7c-33.5 0-60.7 27.3-60.7 60.8v704.8c0 33.5 27.2 60.7 60.7 60.7h770.7c33.5 0 60.7-27.3 60.7-60.7V195.5c-0.1-33.5-27.3-60.7-60.8-60.7zM325.8 255.7c19.3 0 35-15.7 35-35v-94.9c0-19.3-15.7-35-35-35s-35 15.7-35 35v94.9c0 19.3 15.6 35 35 35zM718.3 255.7c19.3 0 35-15.7 35-35v-94.9c0-19.3-15.7-35-35-35s-35 15.7-35 35v94.9c0 19.3 15.7 35 35 35zM693.6 320.4H322.8l0.2 13.2c1.4 74.5 2.1 155.1 2.1 239.7 0 84.8-0.7 160.5-2.1 225.1l-0.3 13.3H395v-62.6h224.4v52.2h74.3l-0.3-13.3c-1.4-67.2-2.1-143.6-2.1-227.2 0-83.5 0.7-160 2.1-227.2l0.2-13.2z m-74.2 367.3H395V565.5h224.4v122.2z m0-183.6H395V384h224.4v120.1z" /></svg>
|
||||
|
After Width: | Height: | Size: 972 B |
1
src/assets/icons/svg/shebei.svg
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
1
src/assets/icons/svg/shouyintai.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M868.4 707.2V526.6c0-22.6-18.4-41-41-41H689.8v-33.8h95.3V302H496v149.7h95.3v33.8H431.1l10.1-98.7c2.2-21.6-4.9-43.3-19.5-59.4S386.3 302 364.6 302H239.7c-21.7 0-42.6 9.3-57.1 25.4-14.6 16.1-21.7 37.8-19.5 59.4l6.6 64.8h34.2l-7-68.3c-1.3-12.3 2.6-24 10.9-33.2 8.3-9.1 19.6-14.2 31.9-14.2h124.9c12.3 0 23.7 5 31.9 14.2 8.3 9.1 12.1 20.9 10.9 33.2L397 485.5H196.8c-8.5 0-16.4 2.6-23 7.1-10.9 7.4-18 19.8-18 33.9v248.7h712.6v-34H189.8V526.6c0-3.9 3.1-7 7-7h630.6c3.9 0 7 3.1 7 7v180.7h34zM625.3 485.6v-33.8h30.5v33.8h-30.5zM302.1 291.4c40.4 0 73.2-32.8 73.2-73.2S342.4 145 302.1 145s-73.2 32.8-73.2 73.2 32.8 73.2 73.2 73.2z m0-112.4c21.6 0 39.2 17.6 39.2 39.2s-17.6 39.2-39.2 39.2-39.2-17.6-39.2-39.2 17.6-39.2 39.2-39.2z" /><path fill="#000000" d="M718.2 552.5h66.9v66.9h-66.9zM607.1 552.5H674v66.9h-66.9zM496 552.5h66.9v66.9H496z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
src/assets/icons/svg/shuibiaoguanli.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M906.335404 788.670807V763.229814v-25.440994l50.881987-38.161491c6.360248-6.360248 6.360248-12.720497 0-19.080745l-50.881987-89.043478c0-6.360248-12.720497-6.360248-19.080746-6.360249l-63.602484 25.440994c-12.720497-12.720497-25.440994-19.080745-44.521739-25.440994L766.409938 515.180124c0-6.360248-6.360248-12.720497-12.720497-12.720497h-101.763975c-6.360248 0-12.720497 6.360248-12.720497 12.720497l-6.360249 69.962733c-12.720497 6.360248-25.440994 19.080745-38.16149 25.440994l-63.602485-25.440994c-12.720497 0-19.080745 0-19.080745 6.360249l-50.881988 89.043478c-6.360248 6.360248 0 12.720497 0 19.080745l57.242236 44.521739v50.881988l-57.242236 44.521739c-6.360248 6.360248-6.360248 12.720497 0 19.080745l50.881988 76.322982c0 6.360248 12.720497 6.360248 19.080745 6.360248l63.602485-25.440994c12.720497 12.720497 25.440994 19.080745 44.521739 25.440994l12.720497 69.962733c0 6.360248 6.360248 12.720497 12.720497 12.720497H766.409938c6.360248 0 12.720497-6.360248 12.720497-12.720497l12.720497-69.962733c19.080745-6.360248 31.801242-12.720497 44.521739-25.440994l63.602484 25.440994c6.360248 0 12.720497 0 19.080746-6.360248l50.881987-89.043479V826.832298l-63.602484-38.161491z m-197.167702 63.602485c-50.881988 0-89.043478-38.161491-89.043478-89.043478 0-50.881988 38.161491-89.043478 89.043478-89.043479 50.881988 0 89.043478 38.161491 89.043478 89.043479s-38.161491 89.043478-89.043478 89.043478z" /><path fill="#000000" d="M607.403727 960.397516c-6.360248-6.360248-12.720497-6.360248-19.080746-12.720497l-50.881987 19.080745c-19.080745 6.360248-44.521739 0-50.881988-19.080745l-50.881987-89.043479c0-6.360248-6.360248-6.360248-6.360249-12.720497H213.068323C130.385093 845.913043 60.42236 775.950311 60.42236 693.267081V209.888199C60.42236 127.204969 130.385093 57.242236 213.068323 57.242236H702.807453c82.68323 0 152.645963 69.962733 152.645963 152.645963V572.42236l31.801242-12.720497h25.440994V209.888199C906.335404 95.403727 817.291925 0 702.807453 0H213.068323C98.583851 0 3.180124 95.403727 3.180124 209.888199V699.627329c0 101.763975 76.322981 184.447205 171.726708 203.527951v6.360248c0 63.602484 50.881988 114.484472 114.484472 114.484472h330.73292V1017.639752l-12.720497-57.242236z" /><path fill="#000000" d="M588.322981 343.453416L467.478261 133.565217c0-6.360248 0-6.360248-6.360249-6.360248 0 0-6.360248 0-6.360248 6.360248L340.273292 343.453416c-12.720497 19.080745-19.080745 44.521739-19.080745 63.602485 0 76.322981 63.602484 139.925466 139.925465 139.925465 76.322981 0 139.925466-63.602484 139.925466-139.925465 0-19.080745-6.360248-44.521739-12.720497-63.602485z m-69.962733-12.720497c-50.881988 0-69.962733 50.881988-114.484472 50.881988-12.720497 0-25.440994 0-38.16149-6.360249 0-6.360248 6.360248-12.720497 6.360248-19.080745L461.118012 190.807453l76.322982 146.285715c-6.360248 0-12.720497-6.360248-19.080746-6.360249zM454.757764 623.304348H232.149068c-31.801242 0-57.242236 25.440994-57.242236 57.242236s25.440994 57.242236 57.242236 57.242236h228.968944l-19.080745-12.720497c-19.080745-12.720497-25.440994-38.161491-12.720497-57.242236l25.440994-44.521739z" /></svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
1
src/assets/icons/svg/shuidianbiaoguanli.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M61.955301 585.718352c0.306649-66.254139 29.443287-133.079624 69.966888-198.266984l0 0c40.740352-65.10046 93.959416-128.512853 146.896803-184.668555l0 0C384.704753 90.61125 489.564688 7.711171 490.283865 7.09188l0 0c11.953313-9.47615 28.77705-9.434198 40.738355 0l0 0c1.193633 1.325482 236.25349 185.997033 358.353685 380.35849l0 0c40.518606 65.18736 69.65025 132.013844 70.009839 198.266984l0 0c-0.134846 242.721084-201.49329 437.837676-448.737196 438.272178l0 0 0-32.802441 0-32.857378c212.209021-0.049943 382.658856-167.488226 383.058398-372.612359l0 0c1.553222-80.422916-72.726728-197.158254-160.980677-296.179874l0 0c-85.402214-97.148765-181.107632-180.16571-222.044759-214.28864l0 0c-4.921365 4.102303-10.63782 8.93477-17.075449 14.433474l0 0c-23.393215 19.929181-55.846056 48.539422-91.89478 82.810182l0 0c-72.009549 68.511554-158.285763 160.353395-214.118834 249.768016l0 0c-37.472094 59.513857-60.272987 117.760165-59.966339 163.457841l0 0c0.359588 205.124133 170.854372 372.562416 383.023438 372.612359l0 0 0 32.857378 0 32.802441C263.49354 1023.556028 62.082156 828.444431 61.955301 585.718352L61.955301 585.718352zM453.401096 835.271614c-8.207602-3.840603-12.70745-12.780366-10.937477-21.675182l0 0 34.365651-171.958108L305.440511 641.638324c-7.606291 0-14.505391-4.335036-17.774648-11.192185l0 0c-3.28424-6.84716-2.304362-14.987839 2.474167-20.921045l0 0 254.091066-312.740912c5.713458-7.031948 15.532216-9.241419 23.717843-5.398818l0 0c8.175639 3.848593 12.690469 12.830309 10.917499 21.672185l0 0-34.415594 171.923148 171.478657 0c7.566337 0 14.513382 4.379985 17.724705 11.234137l0 0c3.286237 6.854152 2.312352 14.992833-2.462181 20.876097l0 0L477.049019 829.87779c-3.835608 4.719596-9.489135 7.271674-15.289494 7.271674l0 0C458.939754 837.149464 456.07004 836.530173 453.401096 835.271614L453.401096 835.271614zM346.796158 602.274396l154.095561 0c5.925216 0 11.498834 2.651964 15.217576 7.206748l0 0c3.760694 4.554785 5.258978 10.527946 4.100305 16.371255l0 0-23.52806 117.385593 177.806412-218.848419-154.04362 0c-5.943195 0-11.498834-2.656958-15.22257-7.211743l0 0c-3.7557-4.599733-5.256981-10.564903-4.115288-16.361266l0 0 23.468129-117.320668L346.796158 602.274396 346.796158 602.274396z" /></svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M500.500086 807.857231a128.669538 128.669538 0 0 1-108.662154-60.967385 7.286154 7.286154 0 1 1 11.027693-9.334154c0.236308 0.196923 23.985231 20.283077 77.272615 20.283077 10.476308 0 21.543385-0.787692 32.925538-2.323692 76.012308-10.24 95.586462-41.787077 95.744-42.141539a7.246769 7.246769 0 1 1 13.193847 5.907693 128.393846 128.393846 0 0 1-121.501539 88.615384z m408.812308-471.236923c45.489231 0 82.353231 36.627692 82.353231 81.801846v161.516308c0 33.949538-20.795077 63.015385-50.412308 75.382153-33.555692 185.107692-194.205538 304.206769-394.633846 320.512A70.498462 70.498462 0 0 1 479.429317 1024c-39.187692 0-70.971077-30.995692-70.971077-69.238154 0-38.203077 31.783385-69.277538 70.971077-69.277538a70.892308 70.892308 0 0 1 65.890461 44.032c173.134769-14.887385 312.871385-112.955077 347.332924-269.627077a82.313846 82.313846 0 0 1-51.79077-34.579693 372.145231 372.145231 0 0 1-174.592 212.125539l-3.387077 1.929846c-0.472615 0.118154-0.945231 0.275692-1.496615 0.275692-0.551385 0-1.102769-0.157538-1.614769-0.275692-0.708923-0.275692-1.378462-0.669538-2.048-0.945231a6.577231 6.577231 0 0 1-1.181539-9.964307l0.354462-0.315077c81.368615-74.515692 86.370462-147.298462 77.390769-253.636923-7.798154-92.947692-62.227692-181.169231-89.639385-220.987077l-1.929846 1.181538a8.704 8.704 0 0 0-6.931692-3.544615c-4.292923 0-7.640615 3.150769-8.428308 7.207384-2.875077 27.569231-9.097846 46.670769-13.430154 56.083693-18.510769 40.448-48.758154 64.708923-92.947692 72.782769-69.632 12.681846-138.870154 27.451077-208.462769 40.408615-43.362462 8.073846-80.580923 56.871385-73.334154 106.57477 16.541538 112.915692 92.947692 193.811692 114.057846 209.565538a6.695385 6.695385 0 0 0-3.859692-1.299692c-1.378462 0-2.993231 1.496615-4.450462 3.387077a42.692923 42.692923 0 0 0-4.01723 6.498461 372.617846 372.617846 0 0 1-199.010462-209.289846c-14.651077 18.116923-36.706462 29.932308-61.715692 29.932308A80.620308 80.620308 0 0 1 0.000394 591.950769v-159.625846a80.738462 80.738462 0 0 1 66.087384-79.635692C104.684702 151.827692 278.843471 0 488.527163 0c204.091077 0 374.350769 143.872 418.894769 336.738462 0.630154 0 1.260308-0.118154 1.929846-0.118154z m-73.885539 46.434461c2.205538-4.647385 5.001846-8.900923 8.073847-12.996923-30.838154-170.220308-177.939692-299.323077-354.973539-299.323077-177.860923 0-325.395692 130.363077-355.249231 301.804308 2.993231 2.756923 6.065231 5.513846 8.664616 8.743385 52.775385-140.681846 187.746462-240.994462 346.427077-240.994462 159.310769 0 294.754462 101.179077 347.05723 242.766769z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M500.500086 807.857231a128.669538 128.669538 0 0 1-108.662154-60.967385 7.286154 7.286154 0 1 1 11.027693-9.334154c0.236308 0.196923 23.985231 20.283077 77.272615 20.283077 10.476308 0 21.543385-0.787692 32.925538-2.323692 76.012308-10.24 95.586462-41.787077 95.744-42.141539a7.246769 7.246769 0 1 1 13.193847 5.907693 128.393846 128.393846 0 0 1-121.501539 88.615384z m408.812308-471.236923c45.489231 0 82.353231 36.627692 82.353231 81.801846v161.516308c0 33.949538-20.795077 63.015385-50.412308 75.382153-33.555692 185.107692-194.205538 304.206769-394.633846 320.512A70.498462 70.498462 0 0 1 479.429317 1024c-39.187692 0-70.971077-30.995692-70.971077-69.238154 0-38.203077 31.783385-69.277538 70.971077-69.277538a70.892308 70.892308 0 0 1 65.890461 44.032c173.134769-14.887385 312.871385-112.955077 347.332924-269.627077a82.313846 82.313846 0 0 1-51.79077-34.579693 372.145231 372.145231 0 0 1-174.592 212.125539l-3.387077 1.929846c-0.472615 0.118154-0.945231 0.275692-1.496615 0.275692-0.551385 0-1.102769-0.157538-1.614769-0.275692-0.708923-0.275692-1.378462-0.669538-2.048-0.945231a6.577231 6.577231 0 0 1-1.181539-9.964307l0.354462-0.315077c81.368615-74.515692 86.370462-147.298462 77.390769-253.636923-7.798154-92.947692-62.227692-181.169231-89.639385-220.987077l-1.929846 1.181538a8.704 8.704 0 0 0-6.931692-3.544615c-4.292923 0-7.640615 3.150769-8.428308 7.207384-2.875077 27.569231-9.097846 46.670769-13.430154 56.083693-18.510769 40.448-48.758154 64.708923-92.947692 72.782769-69.632 12.681846-138.870154 27.451077-208.462769 40.408615-43.362462 8.073846-80.580923 56.871385-73.334154 106.57477 16.541538 112.915692 92.947692 193.811692 114.057846 209.565538a6.695385 6.695385 0 0 0-3.859692-1.299692c-1.378462 0-2.993231 1.496615-4.450462 3.387077a42.692923 42.692923 0 0 0-4.01723 6.498461 372.617846 372.617846 0 0 1-199.010462-209.289846c-14.651077 18.116923-36.706462 29.932308-61.715692 29.932308A80.620308 80.620308 0 0 1 0.000394 591.950769v-159.625846a80.738462 80.738462 0 0 1 66.087384-79.635692C104.684702 151.827692 278.843471 0 488.527163 0c204.091077 0 374.350769 143.872 418.894769 336.738462 0.630154 0 1.260308-0.118154 1.929846-0.118154z m-73.885539 46.434461c2.205538-4.647385 5.001846-8.900923 8.073847-12.996923-30.838154-170.220308-177.939692-299.323077-354.973539-299.323077-177.860923 0-325.395692 130.363077-355.249231 301.804308 2.993231 2.756923 6.065231 5.513846 8.664616 8.743385 52.775385-140.681846 187.746462-240.994462 346.427077-240.994462 159.310769 0 294.754462 101.179077 347.05723 242.766769z" /></svg>
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
@@ -1 +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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M841.237333 960.746667H165.973333a21.333333 21.333333 0 0 1 0-42.666667h675.242667a37.973333 37.973333 0 0 0 37.952-37.952V584.576a21.333333 21.333333 0 0 1 42.666667 0v295.552a80.661333 80.661333 0 0 1-80.597334 80.618667zM264.810667 785.621333a21.333333 21.333333 0 0 1-21.333334-21.333333V143.872a80.704 80.704 0 0 1 80.618667-80.618667h517.12a80.704 80.704 0 0 1 80.618667 80.618667v332.693333a21.333333 21.333333 0 0 1-42.666667 0V143.872a37.973333 37.973333 0 0 0-37.952-37.952h-517.12a37.973333 37.973333 0 0 0-37.952 37.952v620.416a21.333333 21.333333 0 0 1-21.333333 21.333333zM751.36 341.354667H405.44a21.333333 21.333333 0 0 1 0-42.666667H751.36a21.333333 21.333333 0 0 1 0 42.666667zM645.077333 497.130667H405.44a21.333333 21.333333 0 0 1 0-42.666667h239.637333a21.333333 21.333333 0 0 1 0 42.666667zM560.234667 652.864h-154.794667a21.333333 21.333333 0 0 1 0-42.666667h154.794667a21.333333 21.333333 0 0 1 0 42.666667zM173.781333 960.746667c-61.994667 0-112.448-61.717333-112.448-137.578667V505.386667c0-0.832 0.170667-3.285333 0.277334-4.117334 1.258667-10.752 10.474667-20.245333 21.312-20.245333h181.781333a21.333333 21.333333 0 0 1 21.333333 21.333333c0.106667 0.533333 0.213333 1.770667 0.213334 3.029334v317.781333c-0.021333 75.861333-50.474667 137.578667-112.469334 137.578667zM104 523.712v299.456c0 52.330667 31.296 94.912 69.781333 94.912 38.485333 0 69.781333-42.581333 69.781334-94.912V523.712H104zM645.610667 854.485333a21.269333 21.269333 0 0 1-15.082667-6.250666l-54.762667-54.741334a21.333333 21.333333 0 0 1 0-30.165333L860.16 478.933333c22.698667-22.677333 62.229333-22.677333 84.906667 0a60.138667 60.138667 0 0 1 0 84.949334l-284.373334 284.373333a21.376 21.376 0 0 1-15.082666 6.229333z m-24.597334-76.096l24.597334 24.576 269.290666-269.290666a17.408 17.408 0 0 0 0-24.597334 17.856 17.856 0 0 0-24.597333 0L621.013333 778.389333zM533.696 911.637333a21.312 21.312 0 0 1-15.082667-36.416l37.312-37.312a21.312 21.312 0 1 1 30.165334 30.165334l-37.312 37.312a21.248 21.248 0 0 1-15.082667 6.250666zM843.178667 525.994667l54.762666 54.762666-30.165333 30.165334-54.762667-54.741334zM587.413333 874.581333a21.269333 21.269333 0 0 1-15.082666-6.250666l-16.661334-16.661334a21.312 21.312 0 0 1-5.077333-22.037333l20.074667-58.197333a21.290667 21.290667 0 0 1 35.264-8.106667l54.762666 54.741333a21.333333 21.333333 0 0 1-8.106666 35.242667l-58.197334 20.096a21.290667 21.290667 0 0 1-6.976 1.173333z" /></svg>
|
||||
<?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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M841.237333 960.746667H165.973333a21.333333 21.333333 0 0 1 0-42.666667h675.242667a37.973333 37.973333 0 0 0 37.952-37.952V584.576a21.333333 21.333333 0 0 1 42.666667 0v295.552a80.661333 80.661333 0 0 1-80.597334 80.618667zM264.810667 785.621333a21.333333 21.333333 0 0 1-21.333334-21.333333V143.872a80.704 80.704 0 0 1 80.618667-80.618667h517.12a80.704 80.704 0 0 1 80.618667 80.618667v332.693333a21.333333 21.333333 0 0 1-42.666667 0V143.872a37.973333 37.973333 0 0 0-37.952-37.952h-517.12a37.973333 37.973333 0 0 0-37.952 37.952v620.416a21.333333 21.333333 0 0 1-21.333333 21.333333zM751.36 341.354667H405.44a21.333333 21.333333 0 0 1 0-42.666667H751.36a21.333333 21.333333 0 0 1 0 42.666667zM645.077333 497.130667H405.44a21.333333 21.333333 0 0 1 0-42.666667h239.637333a21.333333 21.333333 0 0 1 0 42.666667zM560.234667 652.864h-154.794667a21.333333 21.333333 0 0 1 0-42.666667h154.794667a21.333333 21.333333 0 0 1 0 42.666667zM173.781333 960.746667c-61.994667 0-112.448-61.717333-112.448-137.578667V505.386667c0-0.832 0.170667-3.285333 0.277334-4.117334 1.258667-10.752 10.474667-20.245333 21.312-20.245333h181.781333a21.333333 21.333333 0 0 1 21.333333 21.333333c0.106667 0.533333 0.213333 1.770667 0.213334 3.029334v317.781333c-0.021333 75.861333-50.474667 137.578667-112.469334 137.578667zM104 523.712v299.456c0 52.330667 31.296 94.912 69.781333 94.912 38.485333 0 69.781333-42.581333 69.781334-94.912V523.712H104zM645.610667 854.485333a21.269333 21.269333 0 0 1-15.082667-6.250666l-54.762667-54.741334a21.333333 21.333333 0 0 1 0-30.165333L860.16 478.933333c22.698667-22.677333 62.229333-22.677333 84.906667 0a60.138667 60.138667 0 0 1 0 84.949334l-284.373334 284.373333a21.376 21.376 0 0 1-15.082666 6.229333z m-24.597334-76.096l24.597334 24.576 269.290666-269.290666a17.408 17.408 0 0 0 0-24.597334 17.856 17.856 0 0 0-24.597333 0L621.013333 778.389333zM533.696 911.637333a21.312 21.312 0 0 1-15.082667-36.416l37.312-37.312a21.312 21.312 0 1 1 30.165334 30.165334l-37.312 37.312a21.248 21.248 0 0 1-15.082667 6.250666zM843.178667 525.994667l54.762666 54.762666-30.165333 30.165334-54.762667-54.741334zM587.413333 874.581333a21.269333 21.269333 0 0 1-15.082666-6.250666l-16.661334-16.661334a21.312 21.312 0 0 1-5.077333-22.037333l20.074667-58.197333a21.290667 21.290667 0 0 1 35.264-8.106667l54.762666 54.741333a21.333333 21.333333 0 0 1-8.106666 35.242667l-58.197334 20.096a21.290667 21.290667 0 0 1-6.976 1.173333z" /></svg>
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.7 KiB |
1
src/assets/icons/svg/xunjiandian.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M512.01 713.75c-9.34 0-18.19-4.17-24.13-11.38-22.46-27.26-219.43-269.95-219.43-394.8C268.44 173.25 377.7 64 512.01 64c134.29 0 243.56 109.25 243.56 243.57 0 124.85-196.96 367.54-219.42 394.8a31.34 31.34 0 0 1-24.14 11.38z m0-587.21c-99.82 0-181.03 81.2-181.03 181.03 0 76.44 114.61 239.52 181.03 324.81 66.42-85.29 181.02-248.37 181.02-324.81 0-99.83-81.21-181.03-181.02-181.03z" /><path fill="#000000" d="M512.01 429.99c-63.22 0-114.65-51.44-114.65-114.65S448.79 200.7 512.01 200.7s114.65 51.44 114.65 114.65-51.44 114.64-114.65 114.64z m0-166.76c-28.73 0-52.11 23.37-52.11 52.11s23.38 52.11 52.11 52.11 52.11-23.37 52.11-52.11-23.38-52.11-52.11-52.11zM858.87 960H227.35c-17.27 0-31.27-14.01-31.27-31.27s14-31.27 31.27-31.27h631.53c17.24 0 31.27-14.03 31.27-31.27 0-17.43-14.03-31.45-31.27-31.45H165.13c-51.73 0-93.8-42.08-93.8-93.8 0-53.07 42.08-95.15 93.8-95.15h90.57c17.27 0 31.27 14.01 31.27 31.27 0 17.26-14 31.27-31.27 31.27h-90.57c-17.24 0-31.27 14.03-31.27 31.27 0 18.59 14.03 32.61 31.27 32.61h693.75c51.73 0 93.8 42.08 93.8 93.8 0 51.91-42.08 93.99-93.81 93.99z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
src/assets/icons/svg/xunjianjianyan.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M724.8 448H490.4c46.4-37.6 84-78.4 113.6-121.6 29.6 43.2 70.4 84 120.8 121.6zM896 160v704c0 17.6-14.4 32-32 32H160c-17.6 0-32-14.4-32-32V160c0-17.6 14.4-32 32-32h704c17.6 0 32 14.4 32 32zM768 720h-72.8c10.4-27.2 24.8-70.4 40.8-121.6 8.8-25.6 16-45.6 20-59.2l-53.6-13.6c-3.2 8-6.4 20.8-11.2 39.2-19.2 68.8-36 122.4-48 156H416v48h352V720z m-277.6-21.6l51.2-13.6c-13.6-50.4-28-98.4-44.8-143.2L448 552.8c14.4 48 28.8 96 42.4 145.6z m102.4-24.8l48.8-8.8c-8.8-46.4-19.2-92-31.2-136l-51.2 8.8c15.2 52 26.4 97.6 33.6 136z m198.4-250.4c-61.6-32.8-116.8-79.2-162.4-140.8L640 256h-66.4c-33.6 69.6-76.8 121.6-142.4 164V368h-56V256h-56v112h-64v48H320c-17.6 60-42.4 116-73.6 168.8 5.6 31.2 10.4 57.6 13.6 79.2 26.4-43.2 47.2-87.2 60-130.4V768h55.2l0.8-225.6 42.4 42.4 28.8-49.6c-25.6-20.8-48.8-40.8-71.2-58.4V416h52.8c-5.6 4.8-12.8 8-20 11.2 10.4 17.6 20 35.2 28.8 53.6 3.2-1.6 6.4-4 11.2-6.4 13.6-10.4 24-18.4 31.2-24.8V496h240v-46.4c1.6 1.6 3.2 2.4 6.4 4 16 12 29.6 20 40 24.8 7.2-17.6 16-37.6 24.8-55.2z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
src/assets/icons/svg/xunjianjihua.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M747.408179 810.663621l-67.896367-62.56113 188.560417-220.498751V58.468346h-94.280208V30.695882a30.622796 30.622796 0 0 0-60.807081 0V58.468346h-59.710798V30.695882a30.622796 30.622796 0 0 0-61.172508 0V58.468346h-59.856969V30.695882a30.695882 30.695882 0 0 0-61.391764 0V58.468346h-60.880165V30.695882a30.549711 30.549711 0 0 0-61.099422 0V58.468346H289.08943V30.695882a30.622796 30.622796 0 0 0-61.172508 0V58.468346h-59.710798V30.695882a30.622796 30.622796 0 0 0-61.245593 0V58.468346H11.364785v965.531654h856.561273V669.681821zM609.422882 269.173649c29.234173 11.0359 46.555421 16.517308 52.840768 16.517308a6.066091 6.066091 0 0 0 2.631076-0.584683 307.762758 307.762758 0 0 0-30.184284 51.159803Q614.10035 376.974663 581.431161 447.940618q84.925273 150.190565 81.124831 153.040897c-15.786454 4.458211-28.722575 8.258654-38.954536 11.547498-4.019699 1.534794-7.966312 2.996503-11.83984 4.31204Q579.384769 531.988866 560.96724 489.6724c-12.351438-28.284063-20.025409-43.04732-23.168082-43.851259v-2.338734a987.895796 987.895796 0 0 0 51.159803-102.319606 259.745628 259.745628 0 0 0 20.463921-71.989152z m-113.428592-9.501106a273.631861 273.631861 0 0 0 29.234173 11.693669 224.51845 224.51845 0 0 0 28.284063 7.308544c-5.627578 4.238955-15.640283 20.390836-30.184284 48.528727s-33.838555 68.33488-57.883663 120.66405q6.577689 4.604382 78.786097 155.37963l-48.455642 18.490614q-18.271358-76.228106-73.743202-171.458425Q477.211334 336.192991 495.99429 259.672543z m-113.794019-4.677468l27.699379 13.593891c10.816644 5.189066 19.36764 9.135679 25.726073 11.83984q-27.187781 42.754978-76.228107 167.511812 28.576404 46.263079 73.889373 162.030405l-46.189994 16.444222q-32.669188-112.039969-74.474056-183.371351 48.455642-78.055242 69.577332-188.048819z m-125.341517 11.912926q1.388623 1.388623 34.934837 99.907787v2.265648L252.546713 385.306402h-4.896724q2.850332-4.604382-31.792163-102.319606z m322.014417 462.411534l-76.520448-0.80394c-26.23767 0-50.063522-0.438513-71.623724-0.438513a191.922347 191.922347 0 0 1-69.211905-13.301548 291.683963 291.683963 0 0 1-69.723503-39.831561 42.24338 42.24338 0 0 1-4.604383-2.046393c-7.308543-2.338734-12.351438-4.019699-16.15188-5.189065q-24.922133 3.215759-62.707302 69.796588l-39.539219-29.965027q2.631076-7.308543 69.869674-60.368568V480.317465s-8.770252 0-25.652987 0.95011-31.719078 1.315538-44.216687 1.315538V440.70516l43.85126 2.338734h69.869674c-0.584683 7.308543-1.096281 17.321248-1.60788 31.20748s-0.730854 35.958033-0.730854 66.361573v101.661837q11.83984 11.83984 44.509029 23.533509a695.846406 695.846406 0 0 0 85.729212 23.241168 159.399329 159.399329 0 0 0 41.29327 3.508101q68.773392 0 230.146028-17.613589l-19.294554 53.133109-3.727357 1.096282c-4.969809 0.438513-11.255157 0.584683-18.782957 0.584683q-23.972022 0-61.172507-0.438512z m62.268789 130.530583l22.583399-93.037756 67.823281 62.56113zM885.466562 506.993648l67.896367 62.488045 54.814075-62.853472a18.709871 18.709871 0 0 0-2.923418-26.89544 423.895511 423.895511 0 0 0-37.638997-31.207479s-20.098494-14.105489-34.642496 2.923417z" /></svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
1
src/assets/icons/svg/xunjianluxian.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M716.8 204.8c-168.96 0-307.2 138.24-307.2 307.2 0 174.08 165.12 373.76 247.04 460.8H172.8c-66.56 0-121.6-51.2-121.6-115.2 0-62.72 56.32-115.2 121.6-115.2h61.44c70.4 0 128-57.6 128-128s-57.6-128-128-128H102.4c-28.16 0-51.2-23.04-51.2-51.2S74.24 384 102.4 384h51.2c2.56 0 5.12 0 7.68-1.28h1.28c2.56-1.28 5.12-2.56 6.4-3.84 6.4-5.12 138.24-111.36 138.24-225.28C307.2 69.12 238.08 0 153.6 0S0 69.12 0 153.6C0 224 49.92 290.56 89.6 334.08 38.4 340.48 0 384 0 435.2c0 56.32 46.08 102.4 102.4 102.4h131.84c42.24 0 76.8 34.56 76.8 76.8s-34.56 76.8-76.8 76.8H172.8C78.08 691.2 0 765.44 0 857.6S78.08 1024 172.8 1024h551.68c1.28 0 1.28 0 2.56-1.28 1.28 0 1.28-1.28 2.56-1.28s1.28-1.28 2.56-1.28 1.28-1.28 2.56-1.28l1.28-1.28c10.24-11.52 288-279.04 288-505.6 0-168.96-138.24-307.2-307.2-307.2zM153.6 51.2c56.32 0 102.4 46.08 102.4 102.4 0 69.12-70.4 140.8-102.4 170.24-32-29.44-102.4-101.12-102.4-170.24 0-56.32 46.08-102.4 102.4-102.4z m563.2 911.36c-60.16-62.72-256-277.76-256-450.56 0-140.8 115.2-256 256-256s256 115.2 256 256c0 172.8-195.84 387.84-256 450.56zM716.8 396.8c-64 0-115.2 51.2-115.2 115.2s51.2 115.2 115.2 115.2S832 576 832 512s-51.2-115.2-115.2-115.2z m0 179.2c-35.84 0-64-28.16-64-64s28.16-64 64-64 64 28.16 64 64-28.16 64-64 64z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
1
src/assets/icons/svg/xunjianrenwu.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M864.239616 5.74464H189.19424c-93.200384 0-175.21664 67.063808-175.21664 160.262144v675.055616c0 93.198336 82.016256 181.352448 175.21664 181.352448h675.047424c93.200384 0 154.120192-88.154112 154.120192-181.352448V166.006784C1018.359808 72.8064 957.44 5.74464 864.239616 5.74464z m78.548992 825.1392c0 57.063424-28.03712 113.836032-85.106688 113.836032H195.354624c-57.063424 0-105.805824-56.772608-105.805824-113.836032V168.546304c0-57.063424 48.7424-85.106688 105.805824-85.106688H857.68192c57.069568 0 85.106688 28.043264 85.106688 85.106688v662.337536zM293.435392 573.274112c-63.977472 0-116.021248 52.035584-116.021248 116.021248s52.043776 116.021248 116.021248 116.021248c63.985664 0 116.02944-52.035584 116.02944-116.021248s-52.043776-116.021248-116.02944-116.021248z m0 168.759296c-29.09184 0-52.738048-23.646208-52.738048-52.738048s23.646208-52.738048 52.738048-52.738048c29.093888 0 52.738048 23.646208 52.738048 52.738048s-23.64416 52.738048-52.738048 52.738048z m539.78112-92.571648H542.79168c-17.471488 0-31.6416 22.355968-31.6416 39.8336 0 17.477632 14.170112 39.8336 31.6416 39.8336h290.422784c17.477632 0 31.6416-22.355968 31.6416-39.8336 0-17.477632-14.16192-39.8336-31.639552-39.8336z m0-341.622784H542.79168c-17.471488 0-31.6416 22.362112-31.6416 39.8336 0 17.47968 14.170112 39.8336 31.6416 39.8336h290.422784c17.477632 0 31.6416-22.35392 31.6416-39.8336 0-17.471488-14.16192-39.8336-31.639552-39.8336z m-452.896768-62.21824l-99.373056 101.419008-41.07264-34.236416c-13.4144-11.196416-33.374208-5.296128-44.568576 8.126464-11.20256 13.416448-9.392128 37.470208 4.02432 48.664576l63.289344 52.738048c12.560384 10.512384 31.074304 9.689088 42.6496-1.898496l119.812096-121.860096c11.812864-12.45184 11.556864-36.13696-0.579584-48.279552-12.1344-12.132352-31.731712-16.4864-44.181504-4.673536z m0 0" /></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
1
src/assets/icons/svg/xunjianshuju.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M821.7966769 152.76360717h-30.91579189c-0.63875438-34.8760805-29.12727426-62.98134372-64.13110703-62.98134375h-55.316271v-1.53301653c0-35.38708263-28.87177319-64.25885581-64.2588592-64.25885588H419.50812533c-35.38708263 0-64.25885581 28.74402095-64.25885584 64.25885588l-58.38230078 1.53301653c-35.0038293 0-63.62010147 28.10526662-64.25885578 62.98134375h-30.91579197c-38.19761133 0-69.36890432 31.04354414-69.36890773 69.36890426v709.53020085c0 38.19761133 31.17129301 69.36890432 69.36890773 69.36890437h619.84885149c38.19761133 0 69.36890432-31.17129301 69.36890428-69.36890437v-709.53020085c0.12775226-38.32536356-30.91579188-69.36890432-69.11339983-69.36890426z m-527.7402335 1.14975989c0-1.66076539 1.40526435-2.93827751 3.06602638-2.93827752h88.91483937c16.86315859 0 30.66029086-13.66938006 30.66029088-30.66028749v-32.06555516c0-1.66076539 1.40526435-2.93827751 2.93827753-2.93827757h187.66652241c1.66076539 0 2.93827751 1.27751206 2.93827751 2.93827757v32.06555516c0 16.86315859 13.66938006 30.66029086 30.66029089 30.66028749h85.84880961c1.66076539 0 2.93827751 1.27751206 2.93827756 2.93827752v75.62871607c0 1.66076539-1.40526435 2.93827751-2.93827756 2.9382775H296.99472095c-1.66076539 0-3.06602977-1.40526435-3.0660298-2.9382775v-75.62871607z m535.78855953 777.74934522c0 4.4712907-3.70478412 8.17607823-8.17607823 8.17607826H201.94782201c-4.4712907 0-8.17607823-3.70478412-8.1760782-8.17607826v-709.53020085c0-4.4712907 3.70478412-8.17607823 8.1760782-8.17607478h30.78803971v15.58564648c0 35.38708263 28.87177319 64.25885581 64.25885923 64.2588558H726.62202577c35.38708263 0 64.25885581-28.74402095 64.25885924-64.2588558v-15.58564648h30.78803969c4.4712907 0 8.17607823 3.70478412 8.17607823 8.17607478v709.53020085z m0 0M637.45168533 589.54498253h88.91483938c8.55933152 0 15.58564646-11.62536131 15.58564649-25.93349564 0-14.30813436-7.02631498-25.93349567-15.58564649-25.93349569h-88.91483938c-8.55933152 0-15.58564646 11.62536131-15.58564651 25.93349569 0 14.30813436 7.02631498 25.93349567 15.58564651 25.93349564z m-297.27705682 162.11628014h366.9014622c18.52392403 0 33.59856837-11.62536131 33.59856834-25.93349575 0-14.30813436-15.07464095-25.93349567-33.59856834-25.93349224H340.17462851c-18.52392403 0-33.59856837 11.62536131-33.59856836 25.93349224 0 14.30813436 14.94689214 25.93349567 33.59856836 25.93349575z m-10.73110249 114.46508174h249.75360733c12.64736898 0 22.86746589-11.62536131 22.86746592-25.93349572 0-14.30813436-10.22009698-25.93349567-22.86746592-25.93349567H329.44352602c-12.64736898 0-22.86746589 11.62536131-22.86746587 25.93349567 0 14.30813436 10.22009698 25.93349567 22.86746587 25.93349572z m0 0M430.62248112 354.86601615c-80.73876114 0-146.40288133 63.2368482-146.4028814 141.0373318 0 77.80048362 65.6641202 141.29283279 146.4028814 141.29283289 50.46172699 0 96.83541317-24.52823133 123.7909199-65.79186899 14.81913988-22.61196483 22.73971371-48.67320935 22.73971367-75.37321166-0.12775226-77.9282358-65.79187241-141.16508404-146.53063357-141.16508404z m82.52727876 191.24355438c-18.01291845 27.33875662-48.67320935 43.6909131-82.1440255 43.69091309-53.52775677 0-97.2186665-42.03014769-97.21866643-93.64163454s43.56316085-93.64163458 97.21866643-93.64163465c53.52775677 0 97.2186665 42.03014769 97.21866983 93.64163465 0 17.75741744-5.23780074 34.8760805-15.07464433 49.95072145zM431.26123886 619.31101456c39.7306245 0 75.24545933-17.75741744 98.24067753-45.60718295 4.72679517-5.62105401 3.19377863-14.18038553-2.93827756-18.01291851l-89.80909816-54.67751664c-3.57703531-2.17177099-5.74880281-6.00430732-5.74880629-10.22009697v-102.45646718c0-7.02631498-5.87655505-12.51961673-12.51961671-11.88086233-63.87560247 6.00430732-113.69857517 57.99904746-113.69857522 120.98039119 0 67.32488557 56.59378308 121.87464998 126.47369641 121.87465339zM641.28422167 474.56889527h88.9148394c8.55933152 0 15.58564646-11.62536131 15.58564646-25.93349228 0-14.30813436-7.02631498-25.93349567-15.58564646-25.93349567h-88.9148394c-8.55933152 0-15.58564646 11.62536131-15.5856465 25.93349567 0.12775226 14.30813436 7.02631498 25.93349567 15.5856465 25.93349228z" /></svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
1
src/assets/icons/svg/xunjianxiangmu.svg
Normal 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 class="icon" width="200px" height="177.78px" viewBox="0 0 1152 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M550.96 59.86l-4.096-2.485c9.058 11.957 8.807 6.594 4.096 2.484zM31.25 582.315L495.313 790.94c40.988 19.32 58.668 19.32 103.099 0l464.064-208.626c22.883-10.638 31.25-60.858 31.25-87.923-29.803 14.941-72.045 36.219-72.905 36.452L546.864 749.324l-473.96-218.48C74.507 531.861 30.975 512.148 0 494.39c0 26.441 6.649 74.862 31.25 87.925z m515.614 385.567L72.904 749.328C74.507 750.345 30.975 730.63 0 712.952c0 26.44 6.649 74.86 31.25 87.925l464.063 208.542c40.988 19.399 58.668 19.399 103.099 0l464.064-208.545c22.883-10.717 31.25-60.94 31.25-87.925-29.803 14.861-72.045 36.216-72.905 36.375L546.864 967.883zM31.25 363.836L495.313 572.46c40.988 19.321 58.668 19.321 103.099 0l464.064-208.624c34.145-15.958 35.32-83.7 0-103.02L598.413 15.799c-36.452-21.629-62.11-20.494-103.099 0L31.25 260.816c-35.319 22.763-36.452 83.7 0 103.02zM546.864 57.375a4.21 4.21 0 0 1 1.255 0.675l472.703 254.237-473.958 199.785-473.96-199.784 473.96-254.913z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
src/assets/icons/svg/yucunkuan.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M1006.61536 510.56a349.056 349.056 0 0 1-26.048 166.816c-11.84 28-18.72 46.272-39.2 102.56-29.312 80.608-46.08 121.184-72.64 169.28a83.744 83.744 0 0 1-73.344 42.944H704.63136c-34.88 0-52.992-16.64-70.016-46.24-2.24-3.936-3.232-5.728-4.032-7.04a99.936 99.936 0 0 0-1.952-3.264l-2.144-3.36a608.832 608.832 0 0 1-87.584 2.976l-1.056 4.224-1.856 4.032a83.744 83.744 0 0 1-76.224 48.64H368.63136c-42.752 0-78.592-31.904-83.072-73.472l-22.784-73.344c-70.208-44.352-124.32-104.704-155.008-174.24l-49.12-24.736A77.248 77.248 0 0 1 15.99136 577.44V468.8c0-43.264 35.744-77.696 78.72-77.408l18.4 0.096a378.656 378.656 0 0 1 71.936-100.48l-24.864-49.216c-24.512-49.024 8.576-106.4 62.752-111.392 73.536-7.04 146.432 0.512 209.824 31.104 74.432-12.384 215.424-9.6 317.888 27.648a468.192 468.192 0 0 1 135.392 83.2 362.048 362.048 0 0 1 120.576 238.176z m-155.456 236.544c21.088-57.92 28.288-77.024 40.96-107.072a253.024 253.024 0 0 0 18.88-120.96 266.048 266.048 0 0 0-88.704-174.912 370.496 370.496 0 0 0-106.112-65.376c-51.616-18.752-114.56-27.072-181.664-26.912-43.072 0.096-88.16 4.384-97.6 6.656l-18.368 4.48-16.48-9.28c-40.032-22.496-90.432-31.136-143.2-29.44l45.344 89.696-29.088 24.448c-40 33.664-69.248 74.016-85.44 117.824l-11.616 31.488-33.6-0.128L111.99136 487.488v78.208l71.744 36.128 6.592 17.568c22.816 60.8 71.04 114.752 136.832 152.704l16.288 9.376 35.648 114.688h70.624l16.096-64.64 42.048 4.992a466.72 466.72 0 0 0 139.52-4.544l37.888-7.008 26.624 62.784a229.664 229.664 0 0 1 4.864 8.416h71.584c21.44-39.84 36.576-76.928 62.816-149.056z" /><path fill="#000000" d="M319.99136 480c-26.56 0-48-21.44-48-48S293.43136 384 319.99136 384s48 21.44 48 48-21.44 48-48 48zM575.35136 339.776A176.32 176.32 0 0 1 463.99136 176 176 176 0 0 1 640.05536 0 175.84 175.84 0 0 1 815.99136 176a175.36 175.36 0 0 1-34.144 104.256A175.424 175.424 0 0 1 640.05536 352c-22.4 0-44.256-4.192-64.704-12.224zM640.05536 256a79.68 79.68 0 0 0 64.448-32.64c10.016-13.6 15.488-29.984 15.488-47.424A79.872 79.872 0 0 0 640.05536 96a80 80 0 0 0-73.28 112.32 80.352 80.352 0 0 0 43.808 42.144c9.28 3.648 19.2 5.536 29.44 5.536z" /><path fill="#000000" d="M490.71136 456.992a48 48 0 0 1-21.44-93.568c118.816-27.2 220.16-5.92 298.848 64.864a48 48 0 1 1-64.224 71.36c-54.08-48.64-123.392-63.2-213.184-42.656z" /></svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
1
src/assets/icons/svg/yuebao.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M960 64v896H64V64h896z m-64 224H128V896h768V288zM480 400v384H256v-64h160v-96H256v-64h160v-96H256v-64h224z m288 0v384H544v-384H768z m-64 64H608v256H704v-256zM896 128H128v96h768V128z" /></svg>
|
||||
|
After Width: | Height: | Size: 473 B |
1
src/assets/icons/svg/zhangdanguanli.svg
Normal 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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M821.478329 827.174151c-4.543858-4.351864-4.47986-4.287866-9.823693-9.503703a18.015437 18.015437 0 0 0-24.223243 0.927971l-117.43633 120.700228-21.75932 51.1984c-1.151964 2.719915 1.119965 5.343833 3.711884 4.191869l52.286366-22.271304s108.284616-110.71654 117.244336-119.932252c8.927721-9.151714 4.47986-20.895347 0-25.311209z m-131.291897 68.861848a22.143308 22.143308 0 0 0-5.727821-30.751039 166.3948 166.3948 0 0 0-20.287366-11.903628A112.31649 112.31649 0 0 0 703.466017 767.976001c0-62.07806-50.494422-112.540483-112.572482-112.540483S478.353051 705.92994 478.353051 767.976001c0 34.142933 15.263523 64.765976 39.326772 85.43733a165.75482 165.75482 0 0 0-92.285117 148.443361 22.111309 22.111309 0 1 0 44.222618 0 121.404206 121.404206 0 0 1 189.882067-100.092872 22.047311 22.047311 0 0 0 30.687041-5.727821z m-99.292897-59.742133c-37.662823 0-68.317865-30.655042-68.317865-68.317865s30.655042-68.317865 68.317865-68.317865c37.694822 0 68.349864 30.655042 68.349864 68.317865a68.47786 68.47786 0 0 1-68.349864 68.317865z m140.7956 130.363926a22.111309 22.111309 0 0 0-20.031374 24.063248c0.31999 3.679885 0.511984 7.423768 0.511984 11.135652a22.143308 22.143308 0 0 0 44.222618 0c0-5.055842-0.191994-10.143683-0.671979-15.167526a22.07931 22.07931 0 0 0-24.031249-20.031374z m-305.366458-604.557108a11.231649 11.231649 0 0 0-11.231649-11.007656h-94.845036V288.086997h94.845036v-0.031999a11.19965 11.19965 0 0 0 11.231649-11.007656v-10.335677a11.231649 11.231649 0 0 0-11.231649-11.007656h-77.533577l38.71879-63.166026s8.831724-14.047561-5.919815-25.119215c-12.095622-8.63973-26.079185-5.279835-31.551014 3.871879L285.527077 255.704009h-3.071904L226.424924 171.290647s-13.247586-10.335677-27.615137-1.91994c-11.263648 6.463798-11.071654 19.455392-7.295772 26.143183l37.854817 60.222118H161.018968a11.231649 11.231649 0 0 0-11.231649 11.007656v10.335677c0 5.983813 5.11984 11.007656 11.231649 11.007656h95.709009v63.006031H161.018968a11.19965 11.19965 0 0 0-11.231649 11.007656v9.343708c0 5.983813 5.11984 11.007656 11.231649 11.007656h95.709009v54.334302c0 5.983813 5.11984 11.007656 11.231649 11.007656h39.070779c6.111809 0 13.215587-4.991844 13.215587-11.007656v-54.334302h94.877035a11.19965 11.19965 0 0 0 11.231649-11.007656l-0.031999-9.343708z m-68.669854 116.79635h-162.23493a32.95897 32.95897 0 0 0 0 65.821944h162.266929a32.95897 32.95897 0 0 0-0.031999-65.821944zM838.661792 0H185.338208C83.133402 0 0 78.109559 0 174.138558v675.018906C0 945.186463 83.133402 1023.968001 185.338208 1023.968001h149.051342c18.175432 0 32.894972-12.735602 32.894972-30.911034s-14.71954-32.894972-32.894972-32.894972H184.31424c-65.91794 0-119.516265-49.246461-119.516265-109.020593V172.47461c0-59.742133 53.598325-108.348614 119.516265-108.348614h656.33149c65.91794 0 119.516265 48.606481 119.516265 108.348614v678.666792c0 59.774132-53.598325 108.028624-119.516265 108.028624-18.175432 0-32.894972 14.71954-32.894972 32.894972s14.71954 31.903003 32.894972 31.903003C942.850536 1023.968001 1023.968001 947.170401 1023.968001 851.141402V174.138558C1023.968001 78.109559 940.834599 0 838.661792 0z m-309.910315 319.926002h302.998531c18.175432 0 32.926971-14.751539 32.926971-32.926971s-14.751539-31.903003-32.926971-31.903003h-302.998531c-18.175432 0-32.926971 13.727571-32.926972 31.903003s14.751539 32.926971 32.926972 32.926971z m0 223.801007h302.998531c18.175432 0 32.926971-13.75957 32.926971-31.935003a32.95897 32.95897 0 0 0-32.926971-32.894972h-302.998531a32.95897 32.95897 0 0 0-32.926972 32.894972c0 18.175432 14.751539 31.935002 32.926972 31.935003z" /></svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
1
src/assets/icons/svg/zhoubao.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1776493932808" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2056" width="200" height="200"><path d="M885.0432 127.9488H138.9568C110.336 127.9488 87.04 151.2448 87.04 179.9168V883.0464c0 28.6208 23.296 51.9168 51.9168 51.9168h746.0352c28.6208 0 51.9168-23.296 51.9168-51.9168V179.9168c0.0512-28.672-23.2448-51.968-51.8656-51.968z m10.4448 755.0464c0 5.7856-4.7104 10.496-10.496 10.496H138.9568c-5.7856 0-10.496-4.7104-10.496-10.496V340.4288h766.976v542.5664zM128.512 298.9568V179.9168c0-5.7856 4.7104-10.496 10.496-10.496h746.0352c5.7856 0 10.496 4.7104 10.496 10.496V299.008H128.512z" fill="#000000" p-id="2057"></path><path d="M322.56 91.8016c-11.264 0-20.48 9.216-20.48 20.48v97.28c0 11.264 9.216 20.48 20.48 20.48s20.48-9.216 20.48-20.48v-97.28c0-11.264-9.216-20.48-20.48-20.48zM701.44 91.8016c-11.264 0-20.48 9.216-20.48 20.48v97.28c0 11.264 9.216 20.48 20.48 20.48s20.48-9.216 20.48-20.48v-97.28c0-11.264-9.216-20.48-20.48-20.48z" fill="#000000" p-id="2058"></path><path d="M682.0352 427.52c14.7456-2.2016 27.9552 9.216 27.9552 24.064v297.8816c0 6.5024-1.1776 12.9536-3.4816 19.3536-2.3552 6.3488-5.5808 12.1344-9.7792 17.2544s-9.1136 9.216-14.6944 12.3392c-5.5808 3.1232-11.4688 4.6592-17.7152 4.6592h-41.1648c-8.448 0-15.872-5.5808-18.176-13.7216-3.4304-12.032 5.632-24.0128 18.176-24.0128h20.224c6.3488 0 11.8784-2.304 16.64-6.8608 5.0176-4.8128 7.5776-11.6224 7.5776-18.5344V470.8864c0-4.6592-3.7376-8.3968-8.3968-8.3968H408.9856c-4.096 0-7.3728 3.328-7.3728 7.3728v151.5008c0 15.2064-1.3312 31.2832-3.9424 48.2304-2.6624 16.9472-6.3488 33.792-11.1616 50.5344-4.8128 16.7936-10.6496 33.0752-17.4592 48.9472-4.1984 9.7792-8.704 18.944-13.5168 27.4944a16.6912 16.6912 0 0 1-23.7568 5.8368l-5.4784-3.584a16.32256 16.32256 0 0 1-5.1712-21.8112l0.1536-0.256c5.12-8.8576 10.8032-20.8896 16.9984-36.096 5.5808-13.9776 11.008-31.2832 16.2816-51.968 5.2736-20.6336 7.936-43.1104 7.936-67.328V443.9552c0-9.0624 7.3216-16.384 16.384-16.384h303.1552v-0.0512zM442.368 574.7712H517.12v-36.352H455.168c-9.2672 0-16.7936-7.5264-16.7936-16.7936 0-9.2672 7.5264-16.7936 16.7936-16.7936H517.12v-22.528c0-4.5056 3.6352-8.192 8.192-8.192h25.1392c4.5056 0 8.192 3.6352 8.192 8.192v22.5792h41.472l15.9232-1.6896a17.664 17.664 0 0 1 1.8432 35.2256H558.592v36.352h56.3712l15.3088-1.8432a17.54112 17.54112 0 0 1 19.6096 17.408c0 9.6768-7.8336 17.5104-17.5104 17.5104H442.368c-9.1136 0-16.5376-7.424-16.5376-16.5376s7.3728-16.5376 16.5376-16.5376z m183.7568 148.1728c0 8.0896-3.0208 14.8992-9.0624 20.48-6.0416 5.5808-13.2608 8.3968-21.6576 8.3968H469.76a21.6064 21.6064 0 0 1-21.6064-21.6064v-76.4928c0-8.8576 7.168-16.0256 16.0256-16.0256h140.032c11.52-1.7408 21.9136 7.2192 21.9136 18.8928v66.3552z m-47.5136-0.9216c3.4304 0 6.1952-1.024 8.3968-3.0208 2.1504-1.9968 3.2768-4.4032 3.2768-7.2192v-36.2496c0-4.9152-3.9936-8.96-8.96-8.96H492.032c-4.9152 0-8.96 3.9936-8.96 8.96v36.9152c0 5.2736 4.3008 9.5744 9.5744 9.5744h85.9648z" fill="#000000" p-id="2059"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -1 +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="1776396534053" class="icon" viewBox="0 0 1720 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1550" xmlns:xlink="http://www.w3.org/1999/xlink" width="335.9375" height="200"><path d="M1159.39775971 64.93377365H491.45358333a39.21859817 39.21859817 0 1 0 0 78.43719788h667.92700125a39.21859817 39.21859817 0 0 0 0-78.43719788z m0 0" p-id="1551"></path><path d="M1461.0039846 141.58479455h-88.58749034v-7.48820143l0.3606704-119.96580418A146.98172431 146.98172431 0 0 0 1225.3660709-133.10855799L409.83905232-131.39108012A143.23762356 143.23762356 0 0 0 342.58263429-114.0273824C295.69549713-88.71176346 262.01576423-38.45837274 261.86119096 16.63830668l0.36067041 283.0746417a146.91302525 146.91302525 0 0 0 147.06759851 147.25652209l815.35527018-1.71747788a148.81942513 148.81942513 0 0 0 148.1324346-148.13243462l-1.06483609-64.52562951v-12.48606181h48.84506095c4.99785884 0.36067041 31.55006227 3.91584915 34.76174418 41.3568579 0 0.70416565 0.17174839 1.42550652 0.17174838 1.95792379v188.2355344c-0.36067041 14.0833152-5.34135566 67.20489411-60.78152879 77.28648757a83.76137838 83.76137838 0 0 1-10.30486571 1.06483612H861.69020884s-93.22467875-0.70416565-125.37585735 77.71585703c0 0-10.5109629 19.61359286-11.764721 54.37533858v40.29202183h-104.02761302a57.58702048 57.58702048 0 0 0-57.39809691 57.3980985v409.10314079a57.58702048 57.58702048 0 0 0 57.39809691 57.3980985h275.39751827a57.58702048 57.58702048 0 0 0 57.39809847-57.3980985v-408.75964554a57.58702048 57.58702048 0 0 0-57.39809847-57.39809849h-99.45912207v-38.67759328s-0.18892201-25.84803621 15.4572978-42.24994562c7.84887187-8.19236714 18.54875678-13.19022753 34.93349261-13.01848068h558.18018856c15.68057014-0.70416565 27.27354272-2.14684737 27.27354273-2.14684578 23.16877157-2.66208948 47.23063085-10.8716333 64.88629995-25.76216357 16.93432825-14.25506361 24.5942781-32.44314999 28.33837878-42.61061602 6.86990997-18.53158158 8.58738785-50.27056591 8.58738784-50.27056748l0.17174685-253.12183434c0.36067041-91.79917222-73.26759065-93.24185391-73.26758904-93.2418539z m-179.6824969 202.66234648a60.30063541 60.30063541 0 0 1-42.93693767 17.99916277l-842.98948334 1.95792535A59.33884708 59.33884708 0 0 1 336.03904442 304.84820689l-0.53241884-293.05318733c0-20.14601169 13.89439319-42.07819876 34.93349258-53.24180187a54.10054082 54.10054082 0 0 1 25.67628936-6.86990998L1239.10589084-50.39484059a59.32167354 59.32167354 0 0 1 59.54494582 59.71669266l-0.36067039 123.65838105-0.53241884 101.60596786 1.2537581 68.8021491c0.17174839 14.27223878-6.06269492 29.19711776-17.6556675 40.82444064zM846.54205755 781.72300942a29.83258437 29.83258437 0 0 1 29.42039007 30.12455575v305.88274444a29.83258437 29.83258437 0 0 1-29.42039007 30.1245542H669.53882684a29.83258437 29.83258437 0 0 1-29.42039007-30.1245542V811.84756521a29.83258437 29.83258437 0 0 1 29.42039007-30.12455579z m0 0" p-id="1552"></path></svg>
|
||||
<?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 class="icon" width="200px" height="119.07px" viewBox="0 0 1720 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M1159.39775971 64.93377365H491.45358333a39.21859817 39.21859817 0 1 0 0 78.43719788h667.92700125a39.21859817 39.21859817 0 0 0 0-78.43719788z m0 0M1461.0039846 141.58479455h-88.58749034v-7.48820143l0.3606704-119.96580418A146.98172431 146.98172431 0 0 0 1225.3660709-133.10855799L409.83905232-131.39108012A143.23762356 143.23762356 0 0 0 342.58263429-114.0273824C295.69549713-88.71176346 262.01576423-38.45837274 261.86119096 16.63830668l0.36067041 283.0746417a146.91302525 146.91302525 0 0 0 147.06759851 147.25652209l815.35527018-1.71747788a148.81942513 148.81942513 0 0 0 148.1324346-148.13243462l-1.06483609-64.52562951v-12.48606181h48.84506095c4.99785884 0.36067041 31.55006227 3.91584915 34.76174418 41.3568579 0 0.70416565 0.17174839 1.42550652 0.17174838 1.95792379v188.2355344c-0.36067041 14.0833152-5.34135566 67.20489411-60.78152879 77.28648757a83.76137838 83.76137838 0 0 1-10.30486571 1.06483612H861.69020884s-93.22467875-0.70416565-125.37585735 77.71585703c0 0-10.5109629 19.61359286-11.764721 54.37533858v40.29202183h-104.02761302a57.58702048 57.58702048 0 0 0-57.39809691 57.3980985v409.10314079a57.58702048 57.58702048 0 0 0 57.39809691 57.3980985h275.39751827a57.58702048 57.58702048 0 0 0 57.39809847-57.3980985v-408.75964554a57.58702048 57.58702048 0 0 0-57.39809847-57.39809849h-99.45912207v-38.67759328s-0.18892201-25.84803621 15.4572978-42.24994562c7.84887187-8.19236714 18.54875678-13.19022753 34.93349261-13.01848068h558.18018856c15.68057014-0.70416565 27.27354272-2.14684737 27.27354273-2.14684578 23.16877157-2.66208948 47.23063085-10.8716333 64.88629995-25.76216357 16.93432825-14.25506361 24.5942781-32.44314999 28.33837878-42.61061602 6.86990997-18.53158158 8.58738785-50.27056591 8.58738784-50.27056748l0.17174685-253.12183434c0.36067041-91.79917222-73.26759065-93.24185391-73.26758904-93.2418539z m-179.6824969 202.66234648a60.30063541 60.30063541 0 0 1-42.93693767 17.99916277l-842.98948334 1.95792535A59.33884708 59.33884708 0 0 1 336.03904442 304.84820689l-0.53241884-293.05318733c0-20.14601169 13.89439319-42.07819876 34.93349258-53.24180187a54.10054082 54.10054082 0 0 1 25.67628936-6.86990998L1239.10589084-50.39484059a59.32167354 59.32167354 0 0 1 59.54494582 59.71669266l-0.36067039 123.65838105-0.53241884 101.60596786 1.2537581 68.8021491c0.17174839 14.27223878-6.06269492 29.19711776-17.6556675 40.82444064zM846.54205755 781.72300942a29.83258437 29.83258437 0 0 1 29.42039007 30.12455575v305.88274444a29.83258437 29.83258437 0 0 1-29.42039007 30.1245542H669.53882684a29.83258437 29.83258437 0 0 1-29.42039007-30.1245542V811.84756521a29.83258437 29.83258437 0 0 1 29.42039007-30.12455579z m0 0" /></svg>
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
src/assets/images/villageimage.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
@@ -223,6 +223,12 @@ aside {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
/* 默认 1920 以上 */
|
||||
.container {
|
||||
width: 1400px;
|
||||
|
||||
@@ -203,7 +203,9 @@ h6 {
|
||||
box-shadow: var(--app-shadow-sm);
|
||||
border-color: var(--el-border-color-lighter);
|
||||
overflow: hidden;
|
||||
transition: box-shadow 0.2s ease, transform 0.2s ease;
|
||||
transition:
|
||||
box-shadow 0.2s ease,
|
||||
transform 0.2s ease;
|
||||
}
|
||||
|
||||
.el-card:hover {
|
||||
|
||||
43
src/components/MapContainer/index.vue
Normal file
@@ -0,0 +1,43 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted, onUnmounted } from 'vue';
|
||||
import AMapLoader from '@amap/amap-jsapi-loader';
|
||||
|
||||
let map = null;
|
||||
|
||||
onMounted(() => {
|
||||
window._AMapSecurityConfig = {
|
||||
securityJsCode: '「你申请的安全密钥」'
|
||||
};
|
||||
AMapLoader.load({
|
||||
key: '', // 申请好的Web端开发者Key,首次调用 load 时必填
|
||||
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
|
||||
plugins: ['AMap.Scale'] //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
|
||||
})
|
||||
.then((AMap) => {
|
||||
map = new AMap.Map('container', {
|
||||
// 设置地图容器id
|
||||
viewMode: '3D', // 是否为3D地图模式
|
||||
zoom: 11, // 初始化地图级别
|
||||
center: [116.397428, 39.90923] // 初始化地图中心点位置
|
||||
});
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log(e);
|
||||
});
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
map?.destroy();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div id="container"></div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
#container {
|
||||
width: 100%;
|
||||
height: 800px;
|
||||
}
|
||||
</style>
|
||||
@@ -6,7 +6,7 @@
|
||||
<!-- 页面标题 -->
|
||||
<div class="pageTitleBox flex items-center">
|
||||
<div class="line"></div>
|
||||
<div class="pagetitle">{{ props.title }}</div>
|
||||
<div class="pagetitle">{{ title }}</div>
|
||||
</div>
|
||||
<!-- solt -->
|
||||
<slot name="content" v-if="Boolean(showSlot.content)"></slot>
|
||||
@@ -28,14 +28,15 @@ const showSlot = computed(() => {
|
||||
operate: slots.operate ?? null
|
||||
};
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
default: '房屋管理'
|
||||
default: ''
|
||||
}
|
||||
});
|
||||
|
||||
const title = computed(() => (props.title ? props.title : route.meta.title));
|
||||
defineSlots<{
|
||||
content?: () => void;
|
||||
operate?: () => void;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<section class="app-main">
|
||||
<router-view v-slot="{ Component, route }">
|
||||
<router-view v-slot="{ Component, route }" :key="$route.fullPath">
|
||||
<transition :enter-active-class="animate" mode="out-in">
|
||||
<keep-alive :include="tagsViewStore.cachedViews">
|
||||
<component :is="Component" v-if="!route.meta.link" :key="route.path" />
|
||||
@@ -57,7 +57,6 @@ function addIframe() {
|
||||
min-height: calc(100vh - 50px);
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
|
||||
@@ -1,61 +1,23 @@
|
||||
<template>
|
||||
<!-- 👇 加这一层全局缩放容器 -->
|
||||
<div class="global-scale-wrapper">
|
||||
<div class="scale-content" :style="{ transform: `scale(${scale})` }">
|
||||
<div :class="classObj" class="app-wrapper" :style="{ '--current-color': theme }">
|
||||
<side-bar class="sidebar-container" />
|
||||
<div :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }" class="main-container">
|
||||
<div>
|
||||
<navbar ref="navbarRef" @set-layout="setLayout" />
|
||||
</div>
|
||||
<app-main />
|
||||
<settings ref="settingRef" />
|
||||
</div>
|
||||
<div :class="classObj" class="app-wrapper" :style="{ '--current-color': theme }">
|
||||
<side-bar class="sidebar-container" />
|
||||
<div :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }" class="main-container">
|
||||
<div>
|
||||
<navbar ref="navbarRef" @set-layout="setLayout" />
|
||||
</div>
|
||||
<app-main />
|
||||
<settings ref="settingRef" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { ref, onMounted, onUnmounted } from 'vue';
|
||||
|
||||
// 缩放比例
|
||||
const scale = ref(1);
|
||||
// 你的设计稿宽度(若伊默认1920,不用改)
|
||||
const DESIGN_WIDTH = 1920;
|
||||
|
||||
// 计算缩放
|
||||
const calcScale = () => {
|
||||
const width = document.documentElement.clientWidth;
|
||||
let ratio = width / DESIGN_WIDTH;
|
||||
// 最小缩到0.7(防止太小看不清)
|
||||
if (ratio < 0.7) ratio = 0.7;
|
||||
// 最大不超过1(大屏不拉伸)
|
||||
if (ratio > 1) ratio = 1;
|
||||
scale.value = ratio;
|
||||
console.log(scale.value);
|
||||
};
|
||||
|
||||
// 监听窗口变化
|
||||
let timer = null;
|
||||
const resize = () => {
|
||||
console.log(scale.value);
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(calcScale, 100);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
calcScale();
|
||||
window.addEventListener('resize', resize);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', resize);
|
||||
clearTimeout(timer);
|
||||
});
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
// ==========================================
|
||||
// ✅ 第1步:统一 import
|
||||
// ==========================================
|
||||
import { ref, computed, watchEffect, onMounted, onUnmounted } from 'vue';
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import SideBar from './components/Sidebar/index.vue';
|
||||
import { AppMain, Navbar, Settings, TagsView } from './components';
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
@@ -64,6 +26,50 @@ import { NavTypeEnum } from '@/enums/NavTypeEnum';
|
||||
import { initWebSocket } from '@/utils/websocket';
|
||||
import { initSSE } from '@/utils/sse';
|
||||
|
||||
// ==========================================
|
||||
// ✅ 第2步:缩放逻辑(从旧 script 移过来)
|
||||
// ==========================================
|
||||
const scale = ref(1);
|
||||
const DESIGN_WIDTH = 1920;
|
||||
|
||||
const calcScale = () => {
|
||||
const width = document.documentElement.clientWidth;
|
||||
let ratio = width / DESIGN_WIDTH;
|
||||
if (ratio < 0.7) ratio = 0.7;
|
||||
if (ratio > 1) ratio = 1;
|
||||
scale.value = ratio;
|
||||
};
|
||||
|
||||
let timer: any = null;
|
||||
const resize = () => {
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(calcScale, 100);
|
||||
};
|
||||
|
||||
// ==========================================
|
||||
// ✅ 第3步:生命周期钩子(统一写在这里)
|
||||
// ==========================================
|
||||
onMounted(() => {
|
||||
// 缩放初始化
|
||||
calcScale();
|
||||
window.addEventListener('resize', resize);
|
||||
|
||||
// WebSocket
|
||||
const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';
|
||||
initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket');
|
||||
|
||||
// SSE
|
||||
initSSE(import.meta.env.VITE_APP_BASE_API + '/resource/sse');
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', resize);
|
||||
clearTimeout(timer);
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// ✅ 第4步:原有业务逻辑
|
||||
// ==========================================
|
||||
const settingsStore = useSettingsStore();
|
||||
const theme = computed(() => settingsStore.theme);
|
||||
const sidebar = computed(() => useAppStore().sidebar);
|
||||
@@ -72,7 +78,6 @@ const needTagsView = computed(() => settingsStore.tagsView);
|
||||
const fixedHeader = computed(() => settingsStore.fixedHeader);
|
||||
const layout = computed(() => settingsStore.navType);
|
||||
|
||||
// 根据布局模式判断是否显示侧边栏
|
||||
const showSidebar = computed(() => {
|
||||
if (sidebar.value.hide) return false;
|
||||
return layout.value === NavTypeEnum.LEFT || layout.value === NavTypeEnum.MIX;
|
||||
@@ -86,7 +91,7 @@ const classObj = computed(() => ({
|
||||
}));
|
||||
|
||||
const { width } = useWindowSize();
|
||||
const WIDTH = 992; // refer to Bootstrap's responsive design
|
||||
const WIDTH = 992;
|
||||
|
||||
watchEffect(() => {
|
||||
if (device.value === 'mobile') {
|
||||
@@ -103,15 +108,6 @@ watchEffect(() => {
|
||||
const navbarRef = ref<InstanceType<typeof Navbar>>();
|
||||
const settingRef = ref<InstanceType<typeof Settings>>();
|
||||
|
||||
onMounted(() => {
|
||||
const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';
|
||||
initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket');
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
initSSE(import.meta.env.VITE_APP_BASE_API + '/resource/sse');
|
||||
});
|
||||
|
||||
const handleClickOutside = () => {
|
||||
useAppStore().closeSideBar({ withoutAnimation: false });
|
||||
};
|
||||
@@ -125,25 +121,6 @@ const setLayout = () => {
|
||||
@use '@/assets/styles/mixin.scss';
|
||||
@use '@/assets/styles/variables.module.scss' as *;
|
||||
|
||||
// 全局缩放容器
|
||||
.global-scale-wrapper {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
// // 缩放内容区
|
||||
// .scale-content {
|
||||
// width: 1920px;
|
||||
// height: 100vh;
|
||||
// position: absolute;
|
||||
// left: 50%;
|
||||
// top: 0;
|
||||
// transform-origin: center center;
|
||||
// margin-left: -960px; /* 1920/2 居中 */
|
||||
// }
|
||||
|
||||
.app-wrapper {
|
||||
@include mixin.clearfix;
|
||||
position: relative;
|
||||
|
||||
@@ -13,58 +13,69 @@ import { ElMessage } from 'element-plus/es';
|
||||
NProgress.configure({ showSpinner: false });
|
||||
const whiteList = ['/login', '/register', '/social-callback', '/register*', '/register/*'];
|
||||
|
||||
// ✅ 关键:防止重复添加动态路由
|
||||
let isDynamicRoutesAdded = false;
|
||||
|
||||
const isWhiteList = (path: string) => {
|
||||
return whiteList.some((pattern) => isPathMatch(pattern, path));
|
||||
};
|
||||
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
router.beforeEach(async (to, from) => {
|
||||
NProgress.start();
|
||||
if (getToken()) {
|
||||
to.meta.title && useSettingsStore().setTitle(to.meta.title as string);
|
||||
/* has token*/
|
||||
|
||||
if (to.path === '/login') {
|
||||
next({ path: '/' });
|
||||
NProgress.done();
|
||||
return '/';
|
||||
} else if (isWhiteList(to.path)) {
|
||||
next();
|
||||
return;
|
||||
} else {
|
||||
if (useUserStore().roles.length === 0) {
|
||||
// ✅ 关键:判断是否已添加过动态路由
|
||||
if (useUserStore().roles.length === 0 || !isDynamicRoutesAdded) {
|
||||
isRelogin.show = true;
|
||||
// 判断当前用户是否已拉取完user_info信息
|
||||
const [err, res] = await tos(useUserStore().getInfo());
|
||||
if (err) {
|
||||
await useUserStore().logout();
|
||||
ElMessage.error(err);
|
||||
next({ path: '/' });
|
||||
isDynamicRoutesAdded = false; // 重置标志
|
||||
return '/';
|
||||
} else {
|
||||
isRelogin.show = false;
|
||||
const accessRoutes = await usePermissionStore().generateRoutes();
|
||||
// 根据roles权限生成可访问的路由表
|
||||
|
||||
accessRoutes.forEach((route) => {
|
||||
if (!isHttp(route.path)) {
|
||||
router.addRoute(route); // 动态添加可访问路由表
|
||||
if (!isHttp(route.path) && !router.hasRoute(route.name)) {
|
||||
router.addRoute(route);
|
||||
}
|
||||
});
|
||||
|
||||
isDynamicRoutesAdded = true; // ✅ 标记已添加
|
||||
|
||||
if (res.user.userId === 1 && from.path === '/login') {
|
||||
// 管理员 → 强制跳转到社区列表
|
||||
next('/community/communitylist');
|
||||
// ✅ 关键:返回完整路由对象 + replace
|
||||
return { path: '/community/communitylist', replace: true };
|
||||
} else {
|
||||
// 普通用户 → 正常跳转目标页
|
||||
next(to.fullPath);
|
||||
// ✅ 终极修复:返回完整路由对象,强制 replace,防止白屏
|
||||
return {
|
||||
path: to.path,
|
||||
query: to.query,
|
||||
hash: to.hash,
|
||||
replace: true
|
||||
};
|
||||
}
|
||||
}
|
||||
} else {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 没有token
|
||||
isDynamicRoutesAdded = false; // ✅ 退出时重置标志
|
||||
if (isWhiteList(to.path)) {
|
||||
// 在免登录白名单,直接进入
|
||||
next();
|
||||
return;
|
||||
} else {
|
||||
next(`/login`); // 否则全部重定向到登录页
|
||||
NProgress.done();
|
||||
return '/login';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -366,3 +366,9 @@ export function buildTreeByLevel<T = any>(list: T[]): T[] {
|
||||
|
||||
return tree;
|
||||
}
|
||||
|
||||
export const splitImages = (url) => {
|
||||
if (!url) return '';
|
||||
const imgUrl = import.meta.env.VITE_IMG_URL + url;
|
||||
return imgUrl;
|
||||
};
|
||||
|
||||
@@ -36,7 +36,8 @@ const service = axios.create({
|
||||
});
|
||||
|
||||
// 不需要小区id 或者 加上小区id报错的接口地址
|
||||
const whiteVillageId = ['/decoration/list', '/parking/list'];
|
||||
const whiteVillageId = [];
|
||||
|
||||
function handleWhiteVillageid(url) {
|
||||
const spliturl = url.split('?')[0];
|
||||
if (whiteVillageId.includes(spliturl)) {
|
||||
|
||||
@@ -115,3 +115,22 @@ export function numToWeek(num: number): string {
|
||||
const weekMap = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
|
||||
return weekMap[num - 1] || '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据数字 1-7 生成对应星期
|
||||
* @param num 1=周一,2=周二...7=周日
|
||||
* @returns 周一 / 周二 ... / 周日
|
||||
*/
|
||||
export function numToWeek2(num: number): string {
|
||||
const weekMap = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'];
|
||||
return weekMap[num - 1] || '';
|
||||
}
|
||||
|
||||
// 生成过去7天的日期
|
||||
export const getLast7Days = (days = 7) => {
|
||||
const dates = [];
|
||||
for (let i = days - 1; i >= 0; i--) {
|
||||
dates.push(new Date(new Date().getTime() - i * 24 * 60 * 60 * 1000).toLocaleDateString());
|
||||
}
|
||||
return dates;
|
||||
};
|
||||
|
||||
@@ -119,6 +119,7 @@ import { useUserStore } from '@/store/modules/user';
|
||||
import { CascaderValue } from 'element-plus';
|
||||
import { addVillageAPI, editVillageAPI, getVillageByIdAPI, uploadVillageImageAPI } from '@/api/system/community/index';
|
||||
import { communitylist_rows_type } from '@/api/system/community/type';
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const editId = ref(route.query.id as string);
|
||||
@@ -151,6 +152,7 @@ const formRef = ref();
|
||||
const uploadRef = ref();
|
||||
|
||||
const form = ref<communitylist_rows_type>({
|
||||
villageId: null,
|
||||
villageName: '',
|
||||
villageCode: '',
|
||||
address: '',
|
||||
@@ -182,7 +184,8 @@ const rules = ref({
|
||||
|
||||
/** 获取编辑小区的信息 */
|
||||
function getCommunityinfo() {
|
||||
getVillageByIdAPI(editId.value).then((res) => {
|
||||
const id = Number(editId.value);
|
||||
getVillageByIdAPI(id).then((res) => {
|
||||
city.value = (res.data.city as string).split('/');
|
||||
if (res.data.villageImageUrl) {
|
||||
villageImg.value = res.data.villageImageUrl
|
||||
@@ -203,6 +206,7 @@ function getCommunityinfo() {
|
||||
});
|
||||
}
|
||||
if (isedit.value) {
|
||||
console.log('编辑小区id', editId.value, typeof editId.value, Boolean(editId.value));
|
||||
getCommunityinfo();
|
||||
}
|
||||
// 请求头
|
||||
@@ -308,48 +312,47 @@ const submitForm = () => {
|
||||
|
||||
function submitFormInfo() {
|
||||
if (form.value.managePhone.trim()) {
|
||||
if (reg.phone.test(form.value.managePhone)) {
|
||||
if (!reg.phone.test(form.value.managePhone)) {
|
||||
ElMessage.error('请输入正确的手机号码');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (form.value.manageVx.trim()) {
|
||||
if (reg.wechat.test(form.value.manageVx)) {
|
||||
if (!reg.wechat.test(form.value.manageVx)) {
|
||||
ElMessage.error('请输入正确的微信号');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (form.value.manageQq.trim()) {
|
||||
if (reg.qq.test(form.value.manageQq)) {
|
||||
if (!reg.qq.test(form.value.manageQq)) {
|
||||
ElMessage.error('请输入正确的QQ号码');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (form.value.manageEmail.trim()) {
|
||||
if (reg.email.test(form.value.manageEmail)) {
|
||||
if (!reg.email.test(form.value.manageEmail)) {
|
||||
ElMessage.error('请输入正确的邮箱号码');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (isedit.value) {
|
||||
console.log('编辑小区提交的数据', form.value);
|
||||
editVillageAPI<communitylist_rows_type>(form.value).then((res) => {
|
||||
ElMessage.success('编辑成功');
|
||||
router.push({
|
||||
path: '/community'
|
||||
});
|
||||
cancelForm();
|
||||
});
|
||||
} else {
|
||||
addVillageAPI<communitylist_rows_type>(form.value).then((res) => {
|
||||
ElMessage.success('添加成功');
|
||||
router.push({
|
||||
path: '/community'
|
||||
});
|
||||
cancelForm();
|
||||
});
|
||||
}
|
||||
}
|
||||
const cancelForm = () => {
|
||||
console.log('取消');
|
||||
router.push({
|
||||
path: '/community'
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
<div class="communityBody">
|
||||
<div class="coummunity_card" v-for="(item, index) in list" :key="index">
|
||||
<el-image :src="item.villageImageUrl ? item.villageImageUrl.split(',')[0] : ''">
|
||||
<el-image :src="item.villageImageUrl ? splitImages(item.villageImageUrl.split(',')[0]) : defaultVilageinfoImage">
|
||||
<template #error>
|
||||
<div class="image-viewer-slot image-slot">
|
||||
<el-icon><Picture /></el-icon>
|
||||
@@ -44,11 +44,13 @@
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import defaultVilageinfoImage from '@/assets/images/villageimage.png';
|
||||
import Navbar from '@/layout/components/Navbar.vue';
|
||||
import { deleteVillageByIdAPI, switchVillageAPI, getCommunitylistAPI } from '@/api/system/community/index';
|
||||
import type { communitylist_rows_type } from '@/api/system/community/type';
|
||||
import { Picture } from '@element-plus/icons-vue';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { splitImages } from '@/utils';
|
||||
const houseStore = useHouseStore();
|
||||
const router = useRouter();
|
||||
const list = ref<communitylist_rows_type[]>([]);
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</el-form-item>
|
||||
<div class="remberBox">
|
||||
<el-checkbox v-model="loginForm.rememberMe" style="color: #fff">{{ proxy.$t('login.rememberPassword') }}</el-checkbox>
|
||||
<el-button class="hoverbutn" text>忘记密码</el-button>
|
||||
<!-- <el-button class="hoverbutn" text>忘记密码</el-button> -->
|
||||
</div>
|
||||
|
||||
<el-form-item style="width: 100%">
|
||||
@@ -98,7 +98,6 @@ const handleLogin = () => {
|
||||
loginRef.value?.validate(async (valid: boolean, fields: any) => {
|
||||
if (valid) {
|
||||
loading.value = true;
|
||||
// 勾选了需要记住密码设置在 localStorage 中设置记住用户名和密码
|
||||
if (loginForm.value.rememberMe) {
|
||||
localStorage.setItem('tenantId', String(loginForm.value.tenantId));
|
||||
localStorage.setItem('username', String(loginForm.value.username));
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="标题" prop="titile">
|
||||
<el-input v-model="queryParams.titile" placeholder="请输入标题" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
@@ -105,7 +105,7 @@ const dialog = reactive<DialogOption>({
|
||||
|
||||
const initFormData: ActivityForm = {
|
||||
id: undefined,
|
||||
titile: undefined,
|
||||
title: undefined,
|
||||
author: undefined,
|
||||
content: undefined,
|
||||
status: undefined,
|
||||
@@ -117,7 +117,7 @@ const data = reactive<PageData<ActivityForm, ActivityQuery>>({
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
titile: undefined,
|
||||
title: undefined,
|
||||
author: undefined,
|
||||
content: undefined,
|
||||
status: undefined,
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="月卡状态" prop="payMethod">
|
||||
<!-- <el-form-item label="月卡状态" prop="payMethod">
|
||||
<el-select v-model="queryParams.parkingStatus" placeholder="请选择" clearable>
|
||||
<el-option v-for="dict in com_month_card_status" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="月卡编号" prop="cardCode">
|
||||
<el-input v-model="queryParams.cardCode" placeholder="请输入月卡编号" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
@@ -62,11 +62,11 @@
|
||||
<dict-tag :options="com_pay_method" :value="scope.row.payMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="月卡状态" align="center" prop="payMethod">
|
||||
<!-- <el-table-column label="月卡状态" align="center" prop="payMethod">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="com_pay_method" :value="scope.row.payMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="备注" align="center" prop="remark"></el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
|
||||
165
src/views/system/Questionnaire/QuestionnaireView.vue
Normal file
@@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<div class="container_box">
|
||||
<div class="titlebox flex justify-between items-center">
|
||||
<span>问卷内容</span>
|
||||
<el-button link type="primary" @click="router.back()">返回</el-button>
|
||||
</div>
|
||||
<div class="contentBox h-full" v-loading="viewLoading">
|
||||
<div class="detail-header">
|
||||
<h2>{{ viewData.title }}</h2>
|
||||
<p style="color: #666">{{ viewData.description }}</p>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div class="detail-content">
|
||||
<div v-for="(q, index) in viewData.content" :key="q.cid" class="question-item">
|
||||
<div class="title">
|
||||
<span style="font-weight: bold">{{ index + 1 }}. {{ q.title }}</span>
|
||||
<span style="color: #f56c6c; margin-left: 5px" v-if="q.required">*</span>
|
||||
</div>
|
||||
<div class="type-tag">
|
||||
<el-tag size="small">{{ getComponentLabel(q.type) }}</el-tag>
|
||||
</div>
|
||||
|
||||
<!-- 单选题/多选题选项展示 -->
|
||||
<div v-if="q.type === 'radio' || q.type === 'checkbox'" class="options">
|
||||
<div v-for="(opt, idx) in q.options" :key="idx" class="option-item">
|
||||
<span>{{ opt.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 填空题/多行文本展示 -->
|
||||
<div v-else-if="q.type === 'input'" class="input-placeholder">
|
||||
<el-input v-model="q.placeholder" placeholder="用户输入区域" />
|
||||
</div>
|
||||
<div v-else-if="q.type === 'textarea'" class="input-placeholder">
|
||||
<el-input type="textarea" v-model="q.placeholder" placeholder="用户输入区域" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div>
|
||||
<span>备注: {{ viewData.remark ? viewData.remark : '暂无' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getQuestionnaire } from '@/api/system/Questionnaire';
|
||||
import { QuestionComponentItem } from '@/api/system/Questionnaire/type';
|
||||
import { ref } from 'vue';
|
||||
const viewLoading = ref(false);
|
||||
const viewData = ref({
|
||||
'id': '',
|
||||
'villageId': null,
|
||||
'title': '',
|
||||
'description': '',
|
||||
'content': [] as QuestionComponentItem[],
|
||||
'status': '0',
|
||||
'scope': '0',
|
||||
'residents': '',
|
||||
'startTime': '2026-04-03 00:00:00',
|
||||
'endTime': '2026-04-09 00:00:00',
|
||||
'remark': ''
|
||||
});
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
const viewid = ref(null);
|
||||
// 组件库定义(用于获取类型名称)
|
||||
const componentList = [
|
||||
{ type: 'radio', label: '单选题' },
|
||||
{ type: 'checkbox', label: '多选题' },
|
||||
{ type: 'input', label: '填空题' },
|
||||
{ type: 'textarea', label: '多行文本' }
|
||||
];
|
||||
// 辅助方法:获取组件名称
|
||||
function getComponentLabel(type) {
|
||||
const item = componentList.find((c) => c.type === type);
|
||||
return item ? item.label : '';
|
||||
}
|
||||
|
||||
function init() {
|
||||
if (route.query.id) {
|
||||
viewid.value = route.query.id;
|
||||
}
|
||||
viewLoading.value = true;
|
||||
getQuestionnaire(viewid.value).then((res) => {
|
||||
viewData.value = {
|
||||
...viewData.value,
|
||||
...res.data
|
||||
};
|
||||
if (typeof res.data.content === 'string') {
|
||||
viewData.value.content = JSON.parse(res.data.content) as QuestionComponentItem[];
|
||||
} else {
|
||||
viewData.value.content = res.data.content as QuestionComponentItem[];
|
||||
}
|
||||
|
||||
console.log('问卷内容:', viewData.value);
|
||||
viewLoading.value = false;
|
||||
});
|
||||
}
|
||||
init();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.titlebox {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
margin-bottom: 20px;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
.container_box {
|
||||
background-color: white;
|
||||
height: inherit;
|
||||
font-size: 16px;
|
||||
padding: 20px;
|
||||
}
|
||||
.contentBox {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.detail-header {
|
||||
margin-bottom: 20px;
|
||||
|
||||
h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.question-item {
|
||||
margin-bottom: 25px;
|
||||
padding: 15px;
|
||||
border-radius: 8px;
|
||||
background: #fafafa;
|
||||
|
||||
.title {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.type-tag {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.options {
|
||||
margin-top: 10px;
|
||||
.option-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
color: #666;
|
||||
|
||||
.el-icon {
|
||||
margin-right: 8px;
|
||||
color: #909399;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.input-placeholder {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -62,24 +62,9 @@
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" fixed="right" width="200">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['questionnaire:questionnaire:edit']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['questionnaire:questionnaire:remove']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
<el-button link type="primary" @click="handleView(scope.row)">查看</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['questionnaire:questionnaire:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['questionnaire:questionnaire:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -207,6 +192,15 @@ const handleUpdate = async (row?: QuestionnaireVO) => {
|
||||
});
|
||||
};
|
||||
|
||||
// 查看按钮操作
|
||||
const handleView = (row: QuestionnaireVO) => {
|
||||
router.push({
|
||||
path: '/repair/QuestionnaireView',
|
||||
query: {
|
||||
id: row.id
|
||||
}
|
||||
});
|
||||
};
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
questionnaireFormRef.value?.validate(async (valid: boolean) => {
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
:initial-index="0"
|
||||
v-for="(item, index) in form.problemImageUrlList"
|
||||
:key="index"
|
||||
:src="item"
|
||||
:src="splitImages(item)"
|
||||
class="carinfoImage"
|
||||
></el-image>
|
||||
</div>
|
||||
@@ -156,6 +156,7 @@ import { listResident } from '@/api/system/resident';
|
||||
import { RepairVO } from '@/api/system/Repair/type';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { listRepairProcess, updateRepairProcess } from '@/api/system/repairProcess';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const houseStore = useHouseStore();
|
||||
const { treedata } = storeToRefs(houseStore);
|
||||
|
||||
12
src/views/system/Sdb/SdbBill/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/Sdb/SdbCashier/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader title="收银台管理"></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<PageHeader></PageHeader>
|
||||
<div class="EditBody">
|
||||
<div class="title">
|
||||
<div>基本信息</div>
|
||||
</div>
|
||||
<div class="bodybox">
|
||||
<el-form label-width="100px" label-position="right">
|
||||
<el-form-item label="设备编码" prop="deviceCode">
|
||||
<el-input v-model="form.deviceCode" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址" prop="address">
|
||||
<el-input v-model="form.address" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="分合状态">
|
||||
<el-radio-group v-model="form.electricityRecord.status">
|
||||
<el-radio v-for="(item, index) in com_electricity_readrecord_status" :key="index" :value="item.value" :label="item.label"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary">提交</el-button>
|
||||
<el-button @click="routeback">返回</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getElectricityDevice } from '@/api/system/SdbElectricityDevice';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { ref } from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_electricity_readrecord_status } = toRefs<any>(proxy?.useDict('com_electricity_readrecord_status'));
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const form = ref({
|
||||
id: null,
|
||||
'deviceCode': '',
|
||||
'address': '',
|
||||
electricityRecord: {
|
||||
'status': '1'
|
||||
}
|
||||
});
|
||||
|
||||
const editid = ref(null);
|
||||
function init() {
|
||||
if (route.query.id) {
|
||||
editid.value = route.query.id;
|
||||
getElectricityDevice(editid.value).then((res) => {
|
||||
form.value = {
|
||||
...form.value,
|
||||
...res.data
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
function routeback() {
|
||||
router.back();
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.EditBody {
|
||||
margin-top: 20px;
|
||||
padding: 30px;
|
||||
background-color: white;
|
||||
.bodybox {
|
||||
width: 600px;
|
||||
margin: 0 auto;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.week-items {
|
||||
width: 90px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
margin: 10px 5px;
|
||||
background-color: #ccc;
|
||||
color: #000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.iconbox {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-left: 5px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
}
|
||||
&.active {
|
||||
color: rgba(26, 117, 255, 1);
|
||||
background-color: rgba(26, 117, 255, 0.15);
|
||||
}
|
||||
}
|
||||
|
||||
.mapbox {
|
||||
margin-top: 20px;
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
264
src/views/system/Sdb/SdbElectricityDevice/index.vue
Normal file
@@ -0,0 +1,264 @@
|
||||
<template>
|
||||
<div class="h-full flex flex-col p-2">
|
||||
<pageheader></pageheader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="设备编码" prop="deviceCode">
|
||||
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编码" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button :disabled="true" type="warning" plain @click="handleExport">导入</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="electricityDeviceList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="设备编码" align="center" prop="deviceCode" />
|
||||
<el-table-column label="设备状态" align="center">
|
||||
<template #default="scope">
|
||||
<DictTag :options="com_waterdevice_on_status" :value="scope.row.status"></DictTag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分合状态" align="center">
|
||||
<template #default="scope">
|
||||
<div class="readRecord" v-if="scope.row.electricityRecord">
|
||||
<DictTag :options="com_electricity_readrecord_status" :value="scope.row.electricityRecord.status"></DictTag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="余额" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.electricityRecord">{{ scope.row.electricityRecord.balance }}</span>
|
||||
<span v-else>--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="图片" width="85" align="center" prop="deleted">
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
v-if="scope.row.url && scope.row.url.includes('http')"
|
||||
:src="scope.row.url"
|
||||
:preview-src-list="[scope.row.url]"
|
||||
style="width: 40px; height: 40px; border-radius: 4px; margin-right: 5px"
|
||||
fit="cover"
|
||||
preview-teleported
|
||||
/>
|
||||
<span v-else>暂未生成</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="抄表时间" align="center">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.waterRecord ? scope.row.waterRecord.readTime : '--' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备地址" align="center" prop="address" />
|
||||
<el-table-column label="操作" align="center" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleProject(scope.row)">生成二维码</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['system:electricityDevice:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['system:electricityDevice:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改电设备对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="electricityDeviceFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="设备编码" prop="deviceCode">
|
||||
<el-input v-model="form.deviceCode" placeholder="请输入设备编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="安装地址" prop="address">
|
||||
<el-input v-model="form.address" placeholder="请输入安装地址" />
|
||||
</el-form-item>
|
||||
<el-form-item label="0.未删除,1.删除" prop="deleted">
|
||||
<el-input v-model="form.deleted" placeholder="请输入0.未删除,1.删除" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="url">
|
||||
<el-input v-model="form.url" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="openid">
|
||||
<el-input v-model="form.openid" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ElectricityDevice" lang="ts">
|
||||
import {
|
||||
listElectricityDevice,
|
||||
getElectricityDevice,
|
||||
delElectricityDevice,
|
||||
addElectricityDevice,
|
||||
updateElectricityDevice
|
||||
} from '@/api/system/SdbElectricityDevice/index';
|
||||
import { ElectricityDeviceVO, ElectricityDeviceQuery, ElectricityDeviceForm } from '@/api/system/SdbElectricityDevice/type';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_waterdevice_on_status } = toRefs<any>(proxy?.useDict('com_waterdevice_on_status'));
|
||||
const { com_electricity_readrecord_status } = toRefs<any>(proxy?.useDict('com_electricity_readrecord_status'));
|
||||
|
||||
const electricityDeviceList = ref<ElectricityDeviceVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const electricityDeviceFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: ElectricityDeviceForm = {
|
||||
id: undefined,
|
||||
deviceCode: undefined,
|
||||
address: undefined,
|
||||
deleted: undefined,
|
||||
url: undefined,
|
||||
openid: undefined
|
||||
};
|
||||
const data = reactive<PageData<ElectricityDeviceForm, ElectricityDeviceQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
deviceCode: undefined,
|
||||
address: undefined,
|
||||
deleted: undefined,
|
||||
url: undefined,
|
||||
openid: undefined,
|
||||
params: {}
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询电设备列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listElectricityDevice(queryParams.value);
|
||||
electricityDeviceList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
electricityDeviceFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: ElectricityDeviceVO[]) => {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
const router = useRouter();
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
router.push({
|
||||
path: '/sdb/addSdbElectricityDevice'
|
||||
});
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: ElectricityDeviceVO) => {
|
||||
router.push({
|
||||
path: '/sdb/addSdbElectricityDevice',
|
||||
query: { id: row?.id }
|
||||
});
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
electricityDeviceFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateElectricityDevice(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addElectricityDevice(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
const handleProject = (row) => {
|
||||
row.url = 'https://www.bugtc.com/static/dsb/20260107/272d59d5-bff1-49b3-b899-046169c07257.png';
|
||||
};
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ElectricityDeviceVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除电设备编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delElectricityDevice(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.$modal.msgError('暂不支持导出功能');
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.el-table {
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
</style>
|
||||
12
src/views/system/Sdb/SdbElectricityDevice/index3.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader title="电表管理"></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/Sdb/SdbRetainer/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader title="预存款管理"></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
283
src/views/system/Sdb/SdbTopupRecord/index.vue
Normal file
@@ -0,0 +1,283 @@
|
||||
<template>
|
||||
<div class="flex flex-col h-full p-2">
|
||||
<pageheader></pageheader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="充值金额" prop="rechargeAmount">
|
||||
<el-input v-model="queryParams.rechargeAmount" placeholder="请输入充值金额" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="充值时间" prop="rechargeTime">
|
||||
<el-date-picker clearable v-model="queryParams.rechargeTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择充值时间" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['topupRecord:topupRecord:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['topupRecord:topupRecord:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['topupRecord:topupRecord:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['topupRecord:topupRecord:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="topupRecordList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="充值时间" align="center" prop="rechargeTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.rechargeTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单表" align="center" prop="orderId" />
|
||||
<el-table-column label="充值金额" align="center" prop="rechargeAmount" />
|
||||
<el-table-column label="类型" align="center" prop="type">
|
||||
<template #default="scope">
|
||||
<DictTag :options="com_waterelectricity_topup_type" :value="scope.row.type"></DictTag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<DictTag :options="com_waterelectricity_topup_status" :value="scope.row.status"></DictTag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="缴费状态" align="center" prop="getOver">
|
||||
<template #default="scope">
|
||||
<DictTag :options="com_waterelectricity_topup_getOver" :value="scope.row.getOver"></DictTag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['topupRecord:topupRecord:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['topupRecord:topupRecord:remove']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改充值记录对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="topupRecordFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="用户ID" prop="userId">
|
||||
<el-input v-model="form.userId" placeholder="请输入用户ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="充值金额" prop="rechargeAmount">
|
||||
<el-input v-model="form.rechargeAmount" placeholder="请输入充值金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="充值时间" prop="rechargeTime">
|
||||
<el-date-picker clearable v-model="form.rechargeTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择充值时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备ID" prop="deviceCode">
|
||||
<el-input v-model="form.deviceCode" placeholder="请输入设备ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="订单表" prop="orderId">
|
||||
<el-input v-model="form.orderId" placeholder="请输入订单表" />
|
||||
</el-form-item>
|
||||
<el-form-item label="0.待接收 1.已接收" prop="getOver">
|
||||
<el-input v-model="form.getOver" placeholder="请输入0.待接收 1.已接收" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="TopupRecord" lang="ts">
|
||||
import { listTopupRecord, getTopupRecord, delTopupRecord, addTopupRecord, updateTopupRecord } from '@/api/system/SdbTopupRecord';
|
||||
import { TopupRecordVO, TopupRecordQuery, TopupRecordForm } from '@/api/system/SdbTopupRecord/type';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_waterelectricity_topup_type } = toRefs<any>(proxy?.useDict('com_waterelectricity_topup_type'));
|
||||
const { com_waterelectricity_topup_status } = toRefs<any>(proxy?.useDict('com_waterelectricity_topup_status'));
|
||||
const { com_waterelectricity_topup_getOver } = toRefs<any>(proxy?.useDict('com_waterelectricity_topup_getOver'));
|
||||
|
||||
const topupRecordList = ref<TopupRecordVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const topupRecordFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: TopupRecordForm = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
rechargeAmount: undefined,
|
||||
rechargeTime: undefined,
|
||||
deviceCode: undefined,
|
||||
orderId: undefined,
|
||||
type: undefined,
|
||||
status: undefined,
|
||||
getOver: undefined
|
||||
};
|
||||
const data = reactive<PageData<TopupRecordForm, TopupRecordQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
userId: undefined,
|
||||
rechargeAmount: undefined,
|
||||
rechargeTime: undefined,
|
||||
deviceCode: undefined,
|
||||
orderId: undefined,
|
||||
type: undefined,
|
||||
status: undefined,
|
||||
getOver: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询充值记录列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listTopupRecord(queryParams.value);
|
||||
topupRecordList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
topupRecordFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: TopupRecordVO[]) => {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加充值记录';
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: TopupRecordVO) => {
|
||||
reset();
|
||||
const _id = row?.id || ids.value[0];
|
||||
const res = await getTopupRecord(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改充值记录';
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
topupRecordFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateTopupRecord(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addTopupRecord(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: TopupRecordVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除充值记录编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delTopupRecord(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'topupRecord/topupRecord/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`topupRecord_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.el-table {
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
</style>
|
||||
12
src/views/system/Sdb/SdbTopupRecord/index3.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader title="充值记录"></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
259
src/views/system/Sdb/SdbWaterDevice/index.vue
Normal file
@@ -0,0 +1,259 @@
|
||||
<template>
|
||||
<div class="h-full flex flex-col p-2">
|
||||
<pageheader></pageheader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" label-width="100px" :model="queryParams" :inline="true">
|
||||
<el-form-item label="水表设备编码" prop="deviceCode">
|
||||
<el-input v-model="queryParams.deviceCode" placeholder="请输入水表设备编码" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd">导入</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="waterDeviceList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="水表设备编码" align="center" prop="deviceCode" />
|
||||
<el-table-column label="地址" align="center" prop="address" />
|
||||
<el-table-column label="设备状态" align="center" prop="deleted">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="com_waterdevice_on_status" :value="scope.row.deleted"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分合状态" align="center">
|
||||
<template #default="scope">
|
||||
<div class="readRecord" v-if="scope.row.waterRecord">
|
||||
<el-tag type="success" v-if="scope.row.waterRecord.status == 1">供水</el-tag>
|
||||
<el-tag type="info" v-else>断水</el-tag>
|
||||
</div>
|
||||
<span v-else>--</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="图片" align="center" prop="deleted">
|
||||
<template #default="scope">
|
||||
<el-image
|
||||
v-if="scope.row.url && scope.row.url.includes('http')"
|
||||
:src="scope.row.url"
|
||||
:preview-src-list="[scope.row.url]"
|
||||
style="width: 40px; height: 40px; border-radius: 4px; margin-right: 5px"
|
||||
fit="cover"
|
||||
preview-teleported
|
||||
/>
|
||||
<span v-else>暂未生成</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="抄表时间" align="center">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.waterRecord ? scope.row.waterRecord.readTime : '--' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleProject(scope.row)">生成二维码</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['system:waterDevice:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['system:waterDevice:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改水 设备对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="waterDeviceFormRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="水表设备编码" prop="deviceCode">
|
||||
<el-input v-model="form.deviceCode" placeholder="请输入水表设备编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="地址" prop="address">
|
||||
<el-input v-model="form.address" placeholder="请输入地址" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="WaterDevice" lang="ts">
|
||||
import { listWaterDevice, getWaterDevice, delWaterDevice, addWaterDevice, updateWaterDevice } from '@/api/system/SdbWaterDevice/index';
|
||||
import { WaterDeviceVO, WaterDeviceQuery, WaterDeviceForm } from '@/api/system/SdbWaterDevice/type';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_waterdevice_on_status } = toRefs<any>(proxy?.useDict('com_waterdevice_on_status'));
|
||||
|
||||
const waterDeviceList = ref<WaterDeviceVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const waterDeviceFormRef = ref<ElFormInstance>();
|
||||
|
||||
const splitImages = (url) => {
|
||||
if (!url) return '';
|
||||
const imgUrl = import.meta.env.VITE_IMG_URL + url;
|
||||
return imgUrl;
|
||||
};
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: WaterDeviceForm = {
|
||||
id: undefined,
|
||||
deviceCode: undefined,
|
||||
address: undefined,
|
||||
deleted: undefined,
|
||||
url: undefined,
|
||||
openid: undefined
|
||||
};
|
||||
const data = reactive<PageData<WaterDeviceForm, WaterDeviceQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
deviceCode: undefined,
|
||||
address: undefined,
|
||||
deleted: undefined,
|
||||
url: undefined,
|
||||
openid: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: 'id不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询水 设备列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listWaterDevice(queryParams.value);
|
||||
waterDeviceList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
waterDeviceFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: WaterDeviceVO[]) => {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加水 设备';
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: WaterDeviceVO) => {
|
||||
reset();
|
||||
const _id = row?.id || ids.value[0];
|
||||
const res = await getWaterDevice(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改水 设备';
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
waterDeviceFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateWaterDevice(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addWaterDevice(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: WaterDeviceVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除水 设备编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delWaterDevice(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
const handleProject = (row) => {
|
||||
row.url = 'https://www.bugtc.com/static/dsb/20260107/272d59d5-bff1-49b3-b899-046169c07257.png';
|
||||
};
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'system/waterDevice/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`waterDevice_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.el-table {
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
</style>
|
||||
12
src/views/system/Sdb/SdbWaterDevice/index2.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader title="水表管理"></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
@@ -56,7 +56,7 @@
|
||||
<div>通行证</div>
|
||||
<div class="content-imageBox">
|
||||
<i></i>
|
||||
<el-image :src="form.url"></el-image>
|
||||
<el-image :src="splitImages(form.url)"></el-image>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -86,6 +86,7 @@ import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { getVisitor } from '@/api/system/Visitor';
|
||||
import { formatTimeDiff } from '@/utils/time';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { sys_user_sex } = toRefs<any>(proxy?.useDict('sys_user_sex'));
|
||||
|
||||
12
src/views/system/equipment/Archive/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/equipment/Category/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/equipment/Repair/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="descriptionsbox">
|
||||
<div class="label">房屋照片:</div>
|
||||
<div class="value grid grid-cols-4 gap-4">
|
||||
<el-image v-for="(item, index) in HouseInfo.houseImageUrls" :key="index" :src="item" class="houseImage"></el-image>
|
||||
<el-image v-for="(item, index) in HouseInfo.houseImageUrls" :key="index" :src="splitImages(item)" class="houseImage"></el-image>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -91,6 +91,7 @@ import { getHouseRental } from '@/api/system/houseRental';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { getHousePathById } from '@/utils/house';
|
||||
import { listHouseFacilities } from '@/api/system/HouseFacilities';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const houseStore = useHouseStore();
|
||||
const { treedata } = storeToRefs(houseStore);
|
||||
|
||||
12
src/views/system/inspection/Daily/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
13
src/views/system/inspection/Item/index.vue
Normal file
@@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<PageHeader></PageHeader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/inspection/Monthly/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
13
src/views/system/inspection/Overview/index.vue
Normal file
@@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<PageHeader></PageHeader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
@@ -7,11 +7,11 @@
|
||||
</div>
|
||||
<div class="bodybox">
|
||||
<el-form label-width="100px" label-position="right">
|
||||
<el-form-item label="巡检计划名称">
|
||||
<el-input placeholder="请输入"></el-input>
|
||||
<el-form-item label="巡检计划名称" prop="planName">
|
||||
<el-input v-model="form.planName" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="巡检人员">
|
||||
<el-input placeholder="请输入"></el-input>
|
||||
<el-form-item label="巡检人员" prop="inspectorIds">
|
||||
<el-input v-model="form.inspectorIds" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="执行周期">
|
||||
<el-date-picker
|
||||
@@ -61,7 +61,7 @@
|
||||
<el-select v-model="form.routeIds" placeholder="Select" style="width: 100%">
|
||||
<el-option v-for="item in routeIdsoptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
<div class="mapbox">123</div>
|
||||
<div class="mapbox"></div>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary">提交</el-button>
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<Pageheader></Pageheader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
@@ -113,10 +114,7 @@ const data = reactive<PageData<PlanForm, PlanQuery>>({
|
||||
executeDay: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
|
||||
planName: [{ required: true, message: '巡检计划名称不能为空', trigger: 'blur' }]
|
||||
}
|
||||
rules: {}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
@@ -165,14 +163,14 @@ const router = useRouter();
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
router.push({
|
||||
path: '/Inspection/addInspectionPlan'
|
||||
path: '/tool/addInspectionPlan'
|
||||
});
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: PlanVO) => {
|
||||
router.push({
|
||||
path: '/Inspection/addInspectionPlan',
|
||||
path: '/tool/addInspectionPlan',
|
||||
query: {
|
||||
id: row.id
|
||||
}
|
||||
9
src/views/system/inspection/Point/addInspectionPoint.vue
Normal file
@@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<div class=" "></div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
221
src/views/system/inspection/Point/index.vue
Normal file
@@ -0,0 +1,221 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<PageHeader></PageHeader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="巡检点名称" prop="pointName">
|
||||
<el-input v-model="queryParams.pointName" placeholder="请输入巡检点名称" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:point:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:point:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:point:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="pointList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="巡检点名称" align="center" prop="pointName" />
|
||||
<el-table-column label="巡检项目id" align="center" prop="itemId" />
|
||||
<el-table-column label="打卡方式:9999定位打卡、9998蓝牙打卡、9997NFC打卡" align="center" prop="checkMode" />
|
||||
<el-table-column label="巡检点位置" align="center" prop="location" />
|
||||
<el-table-column label="状态:0-开启,1-关闭" align="center" prop="status" />
|
||||
<el-table-column label="添加人" align="center" prop="isCheck" />
|
||||
<el-table-column label="添加时间" align="center" prop="isCheck" />
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:point:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:point:remove']"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Point" lang="ts">
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { listPoint, getPoint, delPoint, addPoint, updatePoint } from '@/api/system/InspectionPoint/index';
|
||||
import { PointVO, PointQuery, PointForm } from '@/api/system/InspectionPoint/type';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
const pointList = ref<PointVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const pointFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: PointForm = {
|
||||
id: undefined,
|
||||
pointName: undefined,
|
||||
itemId: undefined,
|
||||
routeId: undefined,
|
||||
location: undefined,
|
||||
checkMode: undefined,
|
||||
status: undefined,
|
||||
remark: undefined,
|
||||
pointCode: undefined,
|
||||
isCheck: undefined
|
||||
};
|
||||
const data = reactive<PageData<PointForm, PointQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pointName: undefined,
|
||||
itemId: undefined,
|
||||
routeId: undefined,
|
||||
location: undefined,
|
||||
checkMode: undefined,
|
||||
status: undefined,
|
||||
pointCode: undefined,
|
||||
isCheck: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
|
||||
pointName: [{ required: true, message: '巡检点名称不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询巡检点列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listPoint(queryParams.value);
|
||||
pointList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
pointFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: PointVO[]) => {
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
const router = useRouter();
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
router.push({
|
||||
path: '/inspection/addInspectionPoint'
|
||||
});
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: PointVO) => {
|
||||
router.push({
|
||||
path: '/inspection/addInspectionPoint',
|
||||
query: {
|
||||
id: row?.id
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
pointFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updatePoint(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addPoint(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: PointVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除巡检点编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delPoint(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'system/point/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`point_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
@@ -2,7 +2,10 @@
|
||||
<div class="AddBuildingBox">
|
||||
<PageHeader title="记录详情"></PageHeader>
|
||||
<div class="AddBuildingBody">
|
||||
<div class="title">基本信息</div>
|
||||
<div class="title flex flex-justify-between flex-items-center">
|
||||
<span>基本信息</span>
|
||||
<el-button @click="cancelForm">返回</el-button>
|
||||
</div>
|
||||
<div class="addBuildingFormBody">
|
||||
<div class="infobox">
|
||||
<div class="label">任务名称 :</div>
|
||||
@@ -61,7 +64,6 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addMonthCard, getMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
||||
import { getRecord } from '@/api/system/InspectionRecord';
|
||||
import { RecordVO } from '@/api/system/InspectionRecord/type';
|
||||
|
||||
@@ -1,17 +1,25 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<PageHeader></PageHeader>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="执行状态" prop="routeId">
|
||||
<el-input v-model="queryParams.routeId" placeholder="请输入巡检路线ID" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="执行状态" prop="status">
|
||||
<el-input v-model="queryParams.status" placeholder="请输入执行状态" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="巡检日期" prop="routeId">
|
||||
<el-input v-model="queryParams.routeId" placeholder="请输入巡检路线ID" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="巡检日期" prop="taskTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.taskTime"
|
||||
@update:model-value="handleDate"
|
||||
type="daterange"
|
||||
range-separator="到"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务名称" prop="routeId">
|
||||
<el-input v-model="queryParams.routeId" placeholder="请输入巡检路线ID" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="任务名称" prop="taskName">
|
||||
<el-input v-model="queryParams.taskName" placeholder="请输入任务名称" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
@@ -104,23 +112,14 @@ const data = reactive<PageData<RecordForm, RecordQuery>>({
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
taskId: undefined,
|
||||
planId: undefined,
|
||||
inspectorId: undefined,
|
||||
routeId: undefined,
|
||||
startTime: undefined,
|
||||
endTime: undefined,
|
||||
execStatus: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
|
||||
taskId: [{ required: true, message: '关联巡检任务ID不能为空', trigger: 'blur' }],
|
||||
inspectorId: [{ required: true, message: '巡检人员ID不能为空', trigger: 'blur' }]
|
||||
|
||||
taskName: '',
|
||||
status: '',
|
||||
taskTime: ''
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { queryParams, form } = toRefs(data);
|
||||
|
||||
/** 查询巡检记录主列表 */
|
||||
const getList = async () => {
|
||||
@@ -131,6 +130,11 @@ const getList = async () => {
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
// 处理日期选择
|
||||
const handleDate = (val) => {
|
||||
console.log(val);
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
12
src/views/system/inspection/Route/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/inspection/Statistics/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/inspection/Task/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
12
src/views/system/inspection/Weekly/index.vue
Normal file
@@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<Pageheader></Pageheader>
|
||||
<div class="flex-1 color-gray flex h-full font-size-6 flex-center">系统还在维护中,敬请期待...</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
@@ -41,7 +41,7 @@
|
||||
<div class="userinfo_item img">
|
||||
<div class="title_item">身份证正面:</div>
|
||||
<div class="userinfo_itme_img">
|
||||
<el-image class="w-full h-full" fit="fill" :src="userInfo.cardImageFront"></el-image>
|
||||
<el-image class="w-full h-full" fit="fill" :src="splitImages(userInfo.cardImageFront)"></el-image>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -143,6 +143,7 @@ import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { getResident, getresidentReviewlistAPI, UpdateResidentReviewAPI } from '@/api/system/resident';
|
||||
import { ResidentVO } from '@/api/system/resident/type';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_review } = toRefs<any>(proxy?.useDict('com_review'));
|
||||
|
||||
@@ -140,25 +140,25 @@ const rules = ref({
|
||||
houseId: [{ required: true, message: '请选择房屋', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
|
||||
// cardImageFront: [{ required: true, message: '请上传身份证照片', trigger: 'blur' }],
|
||||
// cardImageBack: [{ required: true, message: '请上传身份证照片', trigger: 'blur' }],
|
||||
// idCard: [
|
||||
// { required: true, message: '请输入身份证号', trigger: 'blur' },
|
||||
// {
|
||||
// validator: (_, value) => validator(value, 'idCard'),
|
||||
// message: '请输入正确的18位身份证号码',
|
||||
// trigger: 'blur'
|
||||
// }
|
||||
// ],
|
||||
type: [{ required: true, message: '请选择与业主关系', trigger: 'blur' }]
|
||||
// phone: [
|
||||
// { required: true, message: '请输入手机号', trigger: 'blur' },
|
||||
// {
|
||||
// validator: (_, value) => validator(value, 'phone'),
|
||||
// message: '请输入正确的手机号码',
|
||||
// trigger: 'blur'
|
||||
// }
|
||||
// ]
|
||||
cardImageFront: [{ required: true, message: '请上传身份证照片', trigger: 'blur' }],
|
||||
cardImageBack: [{ required: true, message: '请上传身份证照片', trigger: 'blur' }],
|
||||
idCard: [
|
||||
{ required: true, message: '请输入身份证号', trigger: 'blur' },
|
||||
{
|
||||
validator: (_, value) => validator(value, 'idCard'),
|
||||
message: '请输入正确的18位身份证号码',
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
type: [{ required: true, message: '请选择与业主关系', trigger: 'blur' }],
|
||||
phone: [
|
||||
{ required: true, message: '请输入手机号', trigger: 'blur' },
|
||||
{
|
||||
validator: (_, value) => validator(value, 'phone'),
|
||||
message: '请输入正确的手机号码',
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// !== 楼栋房屋 =============================================================================
|
||||
@@ -190,15 +190,11 @@ const upload2 = ref<UploadInstance>();
|
||||
const handleAvatarSuccess: UploadProps['onSuccess'] = (response, uploadFile) => {
|
||||
if (response.data && response.data.url) {
|
||||
form.value.cardImageFront = response.data.url;
|
||||
} else {
|
||||
ElMessage.error('短时间内不允许重复提交,请稍候再试');
|
||||
}
|
||||
};
|
||||
const handleAvatar2Success: UploadProps['onSuccess'] = (response, uploadFile) => {
|
||||
if (response.data && response.data.url) {
|
||||
form.value.cardImageBack = response.data.url;
|
||||
} else {
|
||||
ElMessage.error('短时间内不允许重复提交,请稍候再试');
|
||||
}
|
||||
};
|
||||
const handleExceed: UploadProps['onExceed'] = (files) => {
|
||||
@@ -227,12 +223,12 @@ const handleError2: UploadProps['onError'] = (error: Error, uploadFile: UploadFi
|
||||
const submitForm = () => {
|
||||
formRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
// if (!form.value.cardImageFront.trim()) {
|
||||
// return ElMessage.error('请上传身份证正面照片');
|
||||
// }
|
||||
// if (!form.value.cardImageBack.trim()) {
|
||||
// return ElMessage.error('请上传身份证背面照片');
|
||||
// }
|
||||
if (!form.value.cardImageFront.trim()) {
|
||||
return ElMessage.error('请上传身份证正面照片');
|
||||
}
|
||||
if (!form.value.cardImageBack.trim()) {
|
||||
return ElMessage.error('请上传身份证背面照片');
|
||||
}
|
||||
const obj = {
|
||||
...form.value
|
||||
};
|
||||
|
||||
@@ -264,6 +264,7 @@ const defaultProps = {
|
||||
// ! 树形------------------------------------------------------------------------
|
||||
const treedata = ref([]);
|
||||
function gettree() {
|
||||
treedata.value = [];
|
||||
houseStore.getCurrentVilageTreeHouse().then((res) => {
|
||||
treedata.value = res;
|
||||
});
|
||||
@@ -274,6 +275,7 @@ gettree();
|
||||
/** 查询住户管理列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
residentList.value = [];
|
||||
const res = await listResident(queryParams.value);
|
||||
residentList.value = res.rows;
|
||||
residentList.value.forEach((item) => {
|
||||
@@ -363,7 +365,6 @@ onMounted(() => {
|
||||
<style lang="scss" scoped>
|
||||
.residentBody {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.treebox {
|
||||
width: 250px;
|
||||
margin-right: 10px;
|
||||
|
||||