Commit f1270ea4 by pangchong

feat: 技术评估开发

parent 6f0b28ff
......@@ -11258,9 +11258,9 @@
}
},
"node_modules/uview-plus": {
"version": "3.2.22",
"resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.2.22.tgz",
"integrity": "sha512-ouhq0CCGP/ElR7eCCu0rBFNPTGW/EctcrxKIerjj1DOkEIY9BwKBbdI0VTSSkMFnr6RFejSQLBw/aKkqd6Q+7g==",
"version": "3.3.5",
"resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.3.5.tgz",
"integrity": "sha512-yyNBmUTNiIzslEb8/HQA3uAwhEyS/A6DrAm0ZZXDHT+jm2CKnkJyKHt7xh3WrhC/qimziuHZCTEOk4Oca27epQ==",
"dependencies": {
"clipboard": "^2.0.11",
"dayjs": "^1.11.3"
......
import { createSSRApp } from 'vue'
import App from './App.vue'
import pinia from 'mocp/store'
import uviewPlus from 'uview-plus'
import uviewPlus, { setConfig } from 'uview-plus'
import * as message from 'mocp/utils/message'
import * as tool from 'mocp/utils/tool'
import * as jump from 'mocp/utils/jump'
//mocp消息提示
uni.$mocpMessage = message
//mocp工具方法
......@@ -15,6 +16,20 @@ export function createApp() {
const app = createSSRApp(App)
app.use(pinia)
app.use(uviewPlus)
setConfig({
props: {
checkbox: {
activeColor: '#165dff',
labelColor: '#1D2129',
labelSize: 16
},
checkboxGroup: {
activeColor: '#165dff',
labelColor: '#1D2129',
labelSize: 16
}
}
})
return {
app
}
......
import { http } from 'mocp/utils/http'
//获取机号列表
export const getAircraftNumbersApi = (data, config) => {
return http({
method: 'POST',
......@@ -8,6 +9,7 @@ export const getAircraftNumbersApi = (data, config) => {
config
})
}
//通过机号查询飞机相关数据
export const getAcReduceListApi = (data, config) => {
return http({
method: 'POST',
......@@ -16,6 +18,7 @@ export const getAcReduceListApi = (data, config) => {
config
})
}
//获取用户基本信息分页列表
export const getAdminListApi = (data, config) => {
return http({
method: 'POST',
......@@ -24,6 +27,7 @@ export const getAdminListApi = (data, config) => {
config
})
}
//获取所有敏感词
export const getBasicParamsListApi = (data, config) => {
return http({
method: 'POST',
......@@ -32,6 +36,7 @@ export const getBasicParamsListApi = (data, config) => {
config
})
}
//获取航站列表
export const getAircraftTerminalsApi = (data, config) => {
return http({
method: 'POST',
......@@ -48,6 +53,7 @@ export const getAirLinesListApi = (data, config) => {
config
})
}
//获取航班号
export const getFlightNumApi = (data, config) => {
return http({
method: 'POST',
......@@ -56,3 +62,21 @@ export const getFlightNumApi = (data, config) => {
config
})
}
//获取mcc机型
export const getPlaneModelsRepairApi = (data, config) => {
return http({
method: 'POST',
url: '/resource/flight/getPlaneModelsRepair',
data,
config
})
}
//获取ATA章节
export const getATAApi = (data, config) => {
return http({
method: 'POST',
url: '/technical-support/getATA',
data,
config
})
}
import { http } from 'mocp/utils/http'
export const getTechnicalEvaluationApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/getTechnicalEvaluation',
data,
config
})
}
export const addEngineeringApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/addEngineering',
data,
config
})
}
export const addOpinionApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/addOpinion',
data,
config
})
}
export const addRatifyApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/addRatify',
data,
config
})
}
export const addSupportFileApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/addSupportFile',
data,
config
})
}
<template>
<up-action-sheet
:actions="actions"
:title="title"
:description="description"
:cancelText="cancelText"
:round="round"
:show="show"
:closeOnClickAction="true"
:closeOnClickOverlay="true"
@select="handleSelect"
@close="handleClose"
></up-action-sheet>
</template>
<script setup>
import { ref } from 'vue'
const show = ref(false)
const es = defineEmits(['select', 'close'])
const ps = defineProps({
actions: {
type: Array,
default: () => {
return []
}
},
title: {
type: String,
default: ''
},
description: {
type: String,
default: ''
},
cancelText: {
type: String,
default: '取消'
},
round: {
type: [String, Number],
default: 10
}
})
const open = () => {
show.value = true
}
const handleSelect = (data) => {
show.value = false
es('select', data)
}
const handleClose = () => {
show.value = false
es('close')
}
defineExpose({
open
})
</script>
<style lang="scss" scoped></style>
......@@ -52,6 +52,9 @@
&:active {
@include global-button-light-active;
}
&::after {
border: none;
}
}
&.primary {
@include global-button-primary;
......
......@@ -116,6 +116,9 @@ const getCustomStyle = computed(() => {
if (ps.placement == 'row') {
_style.marginLeft = '16rpx'
}
if (ps.placement == 'column') {
_style.marginBottom = '40rpx'
}
return _style
})
//获取下拉框的内容Columns
......@@ -157,4 +160,10 @@ const checkboxChange = (value) => {
.checkbox {
display: flex;
}
:deep(.u-checkbox) {
&:last-child {
margin-bottom: 0 !important;
margin-left: 0 !important;
}
}
</style>
......@@ -37,6 +37,11 @@ const ps = defineProps({
type: String,
default: 'date'
},
//是否时间戳
timestamp: {
type: Boolean,
default: true
},
//显示为空的value值
emptyValue: {
type: [String, Number],
......@@ -52,7 +57,7 @@ const ps = defineProps({
},
placeholder: {
type: String,
default: '请选择'
default: '请选择日期'
},
disabled: {
type: Boolean,
......@@ -66,6 +71,10 @@ const ps = defineProps({
type: String,
default: 'YYYY/MM/DD'
},
valueFormat: {
type: String,
default: 'YYYY/MM/DD HH:mm:ss'
},
cancelText: {
type: String,
default: '取消'
......@@ -121,10 +130,19 @@ watch(
() => ps.modelValue,
() => {
if (ps.modelValue != 0 && ps.modelValue != ps.emptyValue) {
labelValue.value = parseInt(ps.modelValue)
defaultValue.value = parseInt(ps.modelValue)
if (ps.timestamp) {
labelValue.value = parseInt(ps.modelValue)
defaultValue.value = parseInt(ps.modelValue)
} else {
labelValue.value = ps.modelValue
defaultValue.value = ps.modelValue
}
} else {
defaultValue.value = Day().valueOf()
if (ps.timestamp) {
defaultValue.value = Day().valueOf()
} else {
defaultValue.value = Day().format(ps.valueFormat)
}
}
},
{ immediate: true }
......@@ -134,8 +152,13 @@ const confirm = (e) => {
show.value = false
labelValue.value = e.value
defaultValue.value = e.value
es('update:modelValue', defaultValue.value)
es('change', defaultValue.value)
if (ps.timestamp) {
es('update:modelValue', defaultValue.value)
es('change', defaultValue.value)
} else {
es('update:modelValue', Day(defaultValue.value).format(ps.valueFormat))
es('change', Day(defaultValue.value).format(ps.valueFormat))
}
}
//点击清空按钮
const clear = () => {
......
......@@ -51,11 +51,19 @@
</view>
<slot name="bottom"></slot>
</template>
<up-toast ref="uToastRef" v-if="showToast"></up-toast>
<!-- <up-loading-page
:loading="false"
loadingText="正在加载中..."
bg-color="rgba(0, 0, 0, 0.3)"
loadingMode="spinner"
fontSize="15"
></up-loading-page> -->
</z-paging>
</template>
<script setup>
import { filterEmptyValues } from 'mocp/utils/tool'
import { computed, ref } from 'vue'
import { computed, nextTick, ref } from 'vue'
const dataList = ref([])
const es = defineEmits(['query', 'handleLeftClick', 'handleRightClick', 'handleFooterClick'])
......@@ -258,6 +266,20 @@ const handleLeftClick = () => {
const handleRightClick = () => {
es('handleRightClick')
}
//消息提示
const uToastRef = ref()
const showToast = ref(true)
uni.$on('useMessage', (params) => {
nextTick(() => {
uToastRef.value?.show(params)
})
})
uni.$on('closeMessage', () => {
showToast.value = false
nextTick(() => {
showToast.value = true
})
})
//点击底部按钮
const handleFooterClick = () => {
es('handleFooterClick')
......
......@@ -50,7 +50,7 @@
</template>
<script setup>
import { computed, ref, watch } from 'vue'
import { computed, nextTick, ref, watch } from 'vue'
import * as dictData from 'mocp/hooks/use-dict/dict-data'
import { cloneDeep } from 'lodash'
......@@ -189,7 +189,9 @@ watch(
const index = getColumns.value.findIndex((option) => String(option[ps.valueField]) === String(ps.modelValue))
if (option) {
labelValue.value = option[ps.labelField]
defaultIndex.value = index
nextTick(() => {
defaultIndex.value = index
})
} else {
labelValue.value = ps.modelValue
defaultIndex.value = 0
......
export * from './appraisal-record'
export * from './assign-work'
export * from './move-decision'
export * from './technology-evaluation'
// 建议以文件名首字母作为前缀te_
export const te_state = [
{ label: 'OPEN', value: '1' },
{ label: '跟踪', value: '2' },
{ label: 'CLOSE', value: '3' }
]
export const te_opinionType = [
{ label: '同意工程评估意见', value: '1' },
{ label: '建议结束技术评估', value: '2' }
]
export const te_customType = [
{ label: '同意评估意见,批准放行', value: '1' },
{ label: '同意厂家批复文件,批准放行', value: '2' },
{ label: '结束技术评估', value: '3' }
]
export const useMessage = () => {
return {
// 消息提示
toast(message) {
uni.$emit('useMessage', { type: 'default', message })
},
// 错误消息
error(message) {
uni.$emit('useMessage', { type: 'error', message })
},
// 成功消息
success(message) {
uni.$emit('useMessage', { type: 'success', message })
},
// 警告消息
loading(message) {
uni.$emit('useMessage', { type: 'loading', duration: 200000, message: message || '加载中...' })
},
close() {
uni.$emit('closeMessage')
}
}
}
import { getAirLinesListApi, getAircraftNumbersApi, getAircraftTerminalsApi, getBasicParamsListApi, getFlightNumApi } from 'mocp/api/base'
import {
getATAApi,
getAdminListApi,
getAirLinesListApi,
getAircraftNumbersApi,
getAircraftTerminalsApi,
getBasicParamsListApi,
getFlightNumApi,
getPlaneModelsRepairApi
} from 'mocp/api/base'
import { uniqueArray } from 'mocp/utils/tool'
import { defineStore } from 'pinia'
const useBaseStore = defineStore('base', {
......@@ -8,7 +18,9 @@ const useBaseStore = defineStore('base', {
deviceNumList: [], //机号
terminalList: [], //航站下拉数据
airlineCodeList: [], //航司下拉数据
flightNumList: [] //航班号下拉数据
flightNumList: [], //航班号下拉数据
typeList: [], //机型下拉数据
ATAList: [] //章节下拉数据
},
allBasicParams: {} //系统基础参数
}
......@@ -37,6 +49,29 @@ const useBaseStore = defineStore('base', {
zOP2: z.value,
label: z.zOP3 + z.shortName
}))
},
//格式化机型数据
getTypeSelect(state) {
return state.selectList.typeList.map((a) => ({
label: a,
value: a
}))
},
//章节下拉数据
getAllATASelect(state) {
return state.selectList.ATAList.map((q) => ({
label: q.label + `(${q.zstortGc})`,
value: q.label,
id: q.id
}))
},
getATASelect(state) {
return uniqueArray(
state.selectList.ATAList.map((q) => ({
label: q.label,
value: q.label
}))
)
}
},
actions: {
......@@ -46,22 +81,23 @@ const useBaseStore = defineStore('base', {
mask: true
})
try {
await Promise.all(
await Promise.all([
this.getAircraftNumbers(),
this.getBasicParamsList(),
this.getAircraftTerminals(),
this.getAirLinesList(),
this.getFlightNum()
)
uni.hideLoading()
} catch (error) {
this.getFlightNum(),
this.getPlaneModelsRepair(),
this.getATA()
])
} finally {
uni.hideLoading()
}
},
async getAircraftNumbers() {
const res = await getAircraftNumbersApi({})
if (res.code == 200) {
this.selectList.deviceNumList = res.data
this.selectList.deviceNumList = ['0000', ...res.data]
}
},
async getAircraftTerminals() {
......@@ -104,6 +140,41 @@ const useBaseStore = defineStore('base', {
}, {})
}
},
async getPlaneModelsRepair() {
const res = await getPlaneModelsRepairApi({})
if (res.code == 200) {
this.selectList.typeList = res.data
}
},
async getATA() {
const res = await getATAApi({})
if (res.code == 200) {
this.selectList.ATAList = res.data.ataList
}
},
async getAdminList(realName = '') {
return new Promise((resolve, reject) => {
const params = {
pageIndex: 1,
pageSize: 100,
realName
}
getAdminListApi(params, { loading: true }).then((res) => {
if (res.code == 200) {
const selectList = res.data.list.map((item) => {
return {
label: `${item.nickname}(${(item.enetAccount || '无易网号') + '-' + (item.deptFullName || '无机构')})`,
value: item.id
}
})
resolve(selectList)
} else {
uni.$mocpMessage.showToast(res.message)
reject()
}
})
})
},
getParamsByType(paramType) {
return this.allBasicParams[paramType]
?.filter((item) => item.isDel == 0)
......@@ -111,7 +182,18 @@ const useBaseStore = defineStore('base', {
return { label: item.paramName, value: item.paramCode }
})
},
getParamNameByValue(paramType, paramName) {
getParamNameByValue(paramType, paramName, extend = {}) {
if (extend && extend.isArray) {
const paramNameArray = paramName.split(',')
return paramNameArray
.reduce((q, w) => {
if (this.getParamNameByValue(paramType, w)) {
q.push(this.getParamNameByValue(paramType, w))
}
return q
}, [])
.join(',')
}
return this.getParamsByType(paramType).find((item) => item.value == paramName)?.label || ''
}
},
......
import { defineStore } from 'pinia'
const useTechnologyEvaluationStore = defineStore('technologyEvaluation', {
state: () => {
return {
details: undefined
}
},
getters: {},
actions: {
setState(...args) {
this.$patch({ [args[0]]: args[1] })
}
},
// 配置持久化
persist: {
// 调整为兼容多端的API
storage: {
setItem(key, value) {
uni.setStorageSync(key, value)
},
getItem(key) {
return uni.getStorageSync(key)
}
}
}
})
export default useTechnologyEvaluationStore
......@@ -5,7 +5,7 @@ const menuList = ref([
{ id: 2, name: '机队状态', icon: 'jdzt', group: '技术支援', count: 0 },
{ id: 3, name: '支援申请', icon: 'zysq', group: '技术支援', count: 0 },
{ id: 4, name: '工作指令', icon: 'gzzl', group: '技术支援', count: 0 },
{ id: 5, name: '技术评估', icon: 'jspg', group: '技术支援', count: 0 },
{ id: 5, name: '技术评估', icon: 'jspg', group: '技术支援', count: 0, url: '/panel/technology-evaluation/list' },
{ id: 6, name: '运行调查', icon: 'yxdc', group: '维修控制', count: 0 },
{ id: 7, name: '运行决策', icon: 'yxjc', group: '维修控制', count: 0, url: '/panel/move-decision/list' },
{ id: 8, name: '布置工作', icon: 'bzgz', group: '维修控制', count: 0, url: '/panel/assign-work/list' },
......
......@@ -54,7 +54,7 @@ export const httpInterceptor = (options) => {
options.url = baseURL + options.url
}
// 请求超时, 默认 60s
options.timeout = 10000
options.timeout = 60000
// 添加小程序端请求头标识
if (options.name == 'file') {
options.formData = {
......
......@@ -25,3 +25,19 @@ export const filterEmptyValues = (obj) => {
return acc
}, {})
}
/**
*数组去重
*/
export const uniqueArray = (arr) => {
let uniqueArr = []
let obj = {}
for (let i = 0; i < arr.length; i++) {
let str = JSON.stringify(arr[i])
if (!obj[str]) {
uniqueArr.push(arr[i])
obj[str] = true
}
}
return uniqueArr
}
......@@ -169,7 +169,48 @@
"style": {
"navigationBarTitleText": "编辑运行决策"
}
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/list",
"style": {
"navigationBarTitleText": "技术评估"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/search",
"style": {
"navigationBarTitleText": "筛选"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/details",
"style": {
"navigationBarTitleText": "技术评估详情"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/add-engineering",
"style": {
"navigationBarTitleText": "第二类超出持续适航文件的缺陷,需完成工程评估"
}
},{
"path": "pages/modules/mocp/panel/technology-evaluation/add-opinion",
"style": {
"navigationBarTitleText": "经理或授权人意见"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/add-support-file",
"style": {
"navigationBarTitleText": "厂家提供技术支援文件"
}
},
{
"path": "pages/modules/mocp/panel/technology-evaluation/add-ratify",
"style": {
"navigationBarTitleText": "客户工程授权人意见"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "white",
......
......@@ -193,7 +193,7 @@
</template>
<script setup>
import { computed, ref } from 'vue'
import { ref } from 'vue'
import CardDetails from './components/card-details.vue'
import CardDetailsItem from './components/card-details-item.vue'
import CardDetailsFooter from './components/card-details-footer.vue'
......
......@@ -84,7 +84,6 @@ const handleSave = async () => {
return uni.$mocpMessage.showToast(`请输入分解计划的内容`)
}
}
console.log(formData.value)
uni.$emit('changeDecompose', formData.value)
uni.$mocpJump.navigateBack()
}
......
......@@ -6,11 +6,7 @@
v-model="formData.state"
pickAlign="right"
clearable
:options="[
{ label: 'OPEN', value: 1 },
{ label: '跟踪', value: 2 },
{ label: 'CLOSE', value: 3 }
]"
dictkey="md_state"
></global-picker>
</up-form-item>
<up-form-item label="航站" prop="terminal" :borderBottom="true">
......
<template>
<global-page
title="第二类超出持续适航文件的缺陷,需完成工程评估"
navLeftType="text"
:showNavRight="true"
navRightType="button"
navRightText="保存"
@handleRightClick="handleSave"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="授权工程师" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.estimateEngineer" clearable :options="estimateOpts"></global-picker>
</up-form-item>
<up-form-item label="日期" :borderBottom="true">
<global-date pickAlign="right" v-model="formData.engineerTime" clearable :timestamp="false"></global-date>
</up-form-item>
<up-form-item label="缺陷对飞机重要系统/结构的影响" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
v-model="formData.estimateEffect"
border="none"
></up-textarea>
</up-form-item>
<up-form-item label="缺陷的扩展可能造成的潜在影响" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
v-model="formData.estimatePotential"
border="none"
></up-textarea>
</up-form-item>
<up-form-item
label="历史上对类似缺陷的处理经验, 包括厂家已发布的超出持续适航文件范围的技术支援类文件"
:borderBottom="true"
labelPosition="top"
>
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
v-model="formData.estimateHandle"
></up-textarea>
</up-form-item>
<up-form-item label="评估结论" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.estimateType"
clearable
:options="baseStore.getParamsByType('EvaluateEstimateType')"
emptyValue="0"
></global-picker>
</up-form-item>
</up-form>
</view>
</global-page>
</template>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addEngineeringApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({
id: '',
num: '',
estimateEffect: '',
estimatePotential: '',
estimateHandle: '',
estimateEngineer: '',
estimateType: null,
engineerTime: null
})
//页面初始化
const estimateOpts = ref([])
onLoad(() => {
formData.id = details.value.id
formData.num = details.value.num
formData.estimateEffect = details.value.estimateEffect
formData.estimatePotential = details.value.estimatePotential
formData.estimateHandle = details.value.estimateHandle
formData.estimateEngineer = details.value.estimateEngineer
formData.estimateType = details.value.estimateType
formData.engineerTime = details.value.engineerTime
baseStore.getAdminList(details.value.estimateEngineerName).then((res) => {
estimateOpts.value = res
})
})
//保存
const handleSave = async () => {
const res = await addEngineeringApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.showToast(res.message)
res.data.estimateEngineerName = estimateOpts.value.find((item) => item.value == formData.estimateEngineer)?.label.split('(')[0] || ''
//更新详情
technologyEvaluationStore.setState('details', res.data)
} else {
uni.$mocpMessage.showToast(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
margin-bottom: 24rpx;
padding: 0 32rpx;
}
</style>
<template>
<global-page
title="经理或授权人意见"
navLeftType="text"
:showNavRight="true"
navRightType="button"
navRightText="保存"
@handleRightClick="handleSave"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="机队经理或其授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.otherName" clearable :options="otherNameOpts"></global-picker>
</up-form-item>
<up-form-item label="机队经理或其授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.opinionType" clearable dictkey="te_opinionType" emptyValue="0"></global-picker>
</up-form-item>
</up-form>
</view>
</global-page>
</template>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addOpinionApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({
id: '',
num: '',
otherName: '',
opinionType: ''
})
//页面初始化
const otherNameOpts = ref([])
onLoad(() => {
formData.id = details.value.id
formData.num = details.value.num
formData.otherName = details.value.otherName
formData.opinionType = details.value.opinionType
baseStore.getAdminList(details.value.otherFullName).then((res) => {
otherNameOpts.value = res
})
})
//保存
const handleSave = async () => {
const res = await addOpinionApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.showToast(res.message)
res.data.otherFullName = otherNameOpts.value.find((item) => item.value == formData.otherName)?.label.split('(')[0] || ''
//更新详情
technologyEvaluationStore.setState('details', res.data)
} else {
uni.$mocpMessage.showToast(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
margin-bottom: 24rpx;
padding: 0 32rpx;
}
</style>
<template>
<global-page
title="客户工程授权人意见"
navLeftType="text"
:showNavRight="true"
navRightType="button"
navRightText="保存"
@handleRightClick="handleSave"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="客户工程授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customName" clearable :options="customNameOpts"></global-picker>
</up-form-item>
<up-form-item label="客户工程授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customType" clearable dictkey="te_customType" emptyValue="0"></global-picker>
</up-form-item>
</up-form>
</view>
</global-page>
</template>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addRatifyApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({
id: '',
num: '',
customName: '',
customType: ''
})
//页面初始化
const customNameOpts = ref([])
onLoad(() => {
formData.id = details.value.id
formData.num = details.value.num
formData.customName = details.value.customName
formData.customType = details.value.customType
baseStore.getAdminList(details.value.customFullName).then((res) => {
customNameOpts.value = res
})
})
//保存
const handleSave = async () => {
const res = await addRatifyApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.showToast(res.message)
res.data.customFullName = customNameOpts.value.find((item) => item.value == formData.customName)?.label.split('(')[0] || ''
//更新详情
technologyEvaluationStore.setState('details', res.data)
} else {
uni.$mocpMessage.showToast(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
margin-bottom: 24rpx;
padding: 0 32rpx;
}
</style>
<template>
<global-page
title="厂家提供技术支援文件 "
navLeftType="text"
:showNavRight="true"
navRightType="button"
navRightText="保存"
@handleRightClick="handleSave"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<view class="form">
<view class="form-title">非持续适航文件</view>
<view class="form-item">
<up-form-item :borderBottom="true">
<global-checkbox
v-model="formData.nonFileType"
placement="column"
:options="baseStore.getParamsByType('EvaluateNonFileType')"
></global-checkbox>
</up-form-item>
<up-form-item label="非持续适航文件描述" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
v-model="formData.nonName"
></up-textarea>
</up-form-item>
</view>
</view>
<view class="form">
<view class="form-title">持续适航文件</view>
<view class="form-item">
<up-form-item :borderBottom="true">
<global-checkbox
v-model="formData.fileType"
placement="column"
:options="baseStore.getParamsByType('EvaluateFileType')"
></global-checkbox>
</up-form-item>
<up-form-item label="持续适航文件描述" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
v-model="formData.fileTypeName"
></up-textarea>
</up-form-item>
</view>
</view>
<view class="form">
<view class="form-title">批准类别</view>
<view class="form-item">
<up-form-item :borderBottom="true">
<global-checkbox
v-model="formData.ratifyType"
placement="column"
:options="baseStore.getParamsByType('EvaluateRatifyType')"
></global-checkbox>
</up-form-item>
</view>
</view>
</up-form>
</view>
</global-page>
</template>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia'
import { reactive } from 'vue'
import useBaseStore from 'mocp/store/base'
import { addSupportFileApi } from 'mocp/api/technology-evaluation'
const baseStore = useBaseStore()
const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore)
const formData = reactive({
id: '',
nonFileType: '',
nonName: '',
fileType: '',
fileTypeName: '',
ratifyType: ''
})
//页面初始化
onLoad(() => {
formData.id = details.value.id
formData.num = details.value.num
formData.nonFileType = details.value.nonFileType
formData.nonName = details.value.nonName
formData.fileType = details.value.fileType
formData.fileTypeName = details.value.fileTypeName
formData.ratifyType = details.value.ratifyType
console.log(formData)
})
//保存
const handleSave = async () => {
const res = await addSupportFileApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.showToast(res.message)
//更新详情
technologyEvaluationStore.setState('details', res.data)
} else {
uni.$mocpMessage.showToast(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
.form {
&-title {
padding: 20rpx 32rpx;
background: #f7f8fa;
color: $mocp-text-5;
}
&-item {
padding: 0 32rpx;
}
}
}
</style>
.border-top {
border-top: 2rpx solid #f4f4f4;
margin-bottom: 0 !important;
}
.padding-x {
padding: 16rpx 0;
}
.details {
&-header {
padding: 24rpx;
background: #fff;
margin-bottom: 16rpx;
&-center {
margin: 16rpx 0;
}
&-bottom {
display: flex;
align-items: center;
justify-content: space-between;
}
}
&-body {
line-height: 48rpx;
&-list {
border-bottom: 2rpx solid #f4f4f4;
}
&-item {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16rpx;
}
&-footer {
display: flex;
align-items: center;
justify-content: space-between;
}
&-cell {
margin-bottom: 16rpx;
&:first-child {
margin-top: 16rpx;
}
.title {
font-size: 34rpx;
color: $mocp-text-5;
margin-bottom: 16rpx;
}
.label {
font-size: 30rpx;
color: $mocp-text-4;
}
}
}
&-edit {
text-align: right;
color: $mocp-primary-6;
margin-bottom: 16rpx;
}
:deep(.u-collapse-item) {
background: #fff;
margin-bottom: 16rpx;
.u-cell__body {
padding: 24rpx !important;
}
.u-cell__title {
color: $mocp-text-5;
font-size: 34rpx;
}
}
}
.item {
padding: 24rpx;
margin-bottom: 16rpx;
border-radius: 12rpx;
background: linear-gradient(#e6eeff, #ffffff, #ffffff);
&-title {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 16rpx;
border-bottom: 2rpx solid #f4f4f4;
.left {
display: flex;
align-items: center;
.txt {
color: $mocp-text-5;
font-size: 34rpx;
margin-left: 16rpx;
}
}
.right {
display: flex;
align-items: center;
justify-content: space-between;
.label {
margin-right: 32rpx;
.txt {
margin-left: 16rpx;
}
&:last-child {
margin-right: 0;
}
}
}
}
&-content {
padding-top: 16rpx;
font-size: 30rpx;
color: $mocp-text-4;
line-height: 40rpx;
}
&-footer {
display: flex;
align-items: center;
justify-content: space-between;
.label {
display: flex;
align-items: center;
margin-top: 16rpx;
.txt {
margin-left: 16rpx;
}
}
}
}
import { ref } from 'vue'
export const formRef = ref()
// 表单数据
export const formData = ref({
state: null,
ac: '',
model: '',
ata: '',
startDateTime: null,
endDateTime: null
})
export const status = ref([])
import { toRaw } from 'vue'
import { formData, formRef } from './search.compositions'
export const handleReset = () => {
formData.value = {
state: null,
presenter: '',
seat: '',
workType: null,
startTime: null,
stopTime: null
}
formRef.value?.resetFields()
handleConfirm()
}
export const handleConfirm = () => {
uni.$mocpJump.navigateBack()
uni.$emit('technologyEvaluationReload', { params: toRaw(formData.value) })
}
<template>
<global-page :padding="24" title="技术评估详情">
<view class="details" v-if="details">
<view class="details-header">
<view class="details-header-top">
<custom-state :value="useGetDictByValue('te_state', details.state)" :size="48"></custom-state>
</view>
<view class="details-header-center">
<global-icon icon="mind-mapping"></global-icon>
<global-field class="txt" label="编号:" :value="details.num" style="margin-left: 8rpx"></global-field>
</view>
<view class="details-header-bottom">
<global-field label="关闭人:" :value="details.closeBy || '-'"></global-field>
<global-field label="关闭时间:" :value="timeStampFormat(details.closeTime, { format: 'YYYY/MM/DD HH:mm' }) || '-'"></global-field>
</view>
</view>
<up-collapse :value="getDefaultCollapse">
<up-collapse-item title="客户管控技术支援工程师完成初始评估" name="updat-technology">
<view class="details-body">
<view class="details-body-list">
<view class="details-body-item">
<global-field label="机号:" :value="details.ac || '-'"></global-field>
<global-field label="机型:" :value="details.model || '-'"></global-field>
</view>
<view class="details-body-item">
<global-field
label="航司:"
:value="useGetDictByValue('', details.aviation, { data: baseStore.getAirlineSelect }) || '-'"
></global-field>
<global-field label="航站:" :value="baseStore.getTerminalObject[details.terminal] || '-'"></global-field>
</view>
<view class="details-body-item">
<global-field label="日期:" :value="Day(details.dateTime).format('YYYY/MM/DD') || '-'"></global-field>
<global-field label="ATA章节:" :value="details.ata || '-'"></global-field>
</view>
</view>
<view class="details-body-list">
<view class="details-body-cell">
<view class="title">缺陷描述</view>
<view class="label">{{ details.description || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">缺陷处理方案简要描述</view>
<view class="label">{{ details.handleOption || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">放行前维护要求</view>
<view class="label">{{ details.demand || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">运行/操作限制</view>
<view class="label">{{ details.controls || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">评估结论</view>
</view>
<view class="details-body-cell">
<view class="title">1、缺陷对飞机重要系统/结构的影响</view>
<view class="label">{{ details.influence || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">2、缺陷的扩展可能造成的潜在影响</view>
<view class="label">{{ details.latent || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">3、历史上对类似缺陷的处理经验, 包括厂家已发布的超出持续适航文件范围的技术支援类文件</view>
<view class="label">{{ details.experience || '无' }}</view>
</view>
<view class="details-body-item border-top padding-x">
<global-field label="授权工程师:" :value="details.accredit || '-'"></global-field>
<global-field label="日期:" :value="Day(details.accreditTime).format('YYYY/MM/DD') || '-'"></global-field>
</view>
</view>
<view class="details-body-item" style="padding-top: 16rpx; margin-bottom: 0">
<global-field label="生成人:" :value="details.creationName || '-'"></global-field>
<global-field label="生成时间:" :value="details.creationTime || '-'"></global-field>
</view>
<view class="details-body-footer" style="margin-bottom: 0">
<view></view>
<global-field label="邮件发送时间:" :value="details.mailTime || '-'"></global-field>
</view>
</view>
</up-collapse-item>
<up-collapse-item title="第二类超出持续适航文件的缺陷,需完成工程评估" name="add-engineering">
<view class="details-body">
<view class="details-body-list">
<view class="details-body-item">
<global-field label="授权工程师:" :value="details.estimateEngineerName || '-'"></global-field>
<view class="details-edit" @tap.stop="handleEdit('add-engineering')">编辑</view>
</view>
<view class="details-body-cell">
<view class="title">工程评估</view>
</view>
<view class="details-body-cell">
<view class="title">1、缺陷对飞机重要系统/结构的影响</view>
<view class="label">{{ details.estimateEffect || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">2、缺陷的扩展可能造成的潜在影响</view>
<view class="label">{{ details.estimatePotential || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">3、历史上对类似缺陷的处理经验, 包括厂家已发布的超出持续适航文件范围的技术支援类文件</view>
<view class="label">{{ details.estimateHandle || '无' }}</view>
</view>
<view class="details-body-cell">
<view class="title">评估结论</view>
<view class="label">{{ baseStore.getParamNameByValue('EvaluateEstimateType', details.estimateType) || '无' }}</view>
</view>
</view>
<view class="details-body-footer" style="margin-top: 16rpx">
<global-field label="保存人:" :value="details.estimateName || '-'"></global-field>
<global-field label="保存时间:" :value="details.estimateTime || '-'"></global-field>
</view>
</view>
</up-collapse-item>
<up-collapse-item title="经理或授权人意见" name="add-opinion">
<view class="details-body">
<view class="details-body-list">
<view class="details-body-item">
<global-field label="机队经理或其授权人:" :value="details.otherFullName || '-'"></global-field>
<view class="details-edit" @tap="handleEdit('add-opinion')">编辑</view>
</view>
<view class="details-body-cell">
<view class="title">机队经理或其授权人意见</view>
<view class="label">{{ useGetDictByValue('te_opinionType', details.opinionType) || '无' }}</view>
</view>
</view>
<view class="details-body-footer" style="margin-top: 16rpx">
<global-field label="保存人:" :value="details.opinionName || '-'"></global-field>
<global-field label="保存时间:" :value="details.opinionTime || '-'"></global-field>
</view>
</view>
</up-collapse-item>
<up-collapse-item title="厂家提供技术支援文件" name="add-support-file">
<view class="details-body">
<view class="details-body-list">
<view class="details-body-cell" style="margin-top: 0; display: flex; justify-content: space-between">
<view class="title">文件编号</view>
<view class="details-edit" @tap="handleEdit('add-support-file')">编辑</view>
</view>
<view class="details-body-cell">
<view class="title">非持续适航文件</view>
<view class="label">
{{ baseStore.getParamNameByValue('EvaluateNonFileType', details.nonFileType, { isArray: true }) || '无' }}
</view>
</view>
<view class="details-body-cell">
<view class="title">非持续适航描述</view>
<view class="label">
{{ details.nonName || '无' }}
</view>
</view>
<view class="details-body-cell">
<view class="title">持续适航文件</view>
<view class="label">
{{ baseStore.getParamNameByValue('EvaluateFileType', details.fileType, { isArray: true }) || '无' }}
</view>
</view>
<view class="details-body-cell">
<view class="title">持续适航描述</view>
<view class="label">
{{ details.fileTypeName || '无' }}
</view>
</view>
<view class="details-body-item">
<global-field
label="批准类别:"
:value="baseStore.getParamNameByValue('EvaluateRatifyType', details.ratifyType, { isArray: true }) || '无'"
></global-field>
</view>
</view>
<view class="details-body-footer" style="margin-top: 16rpx">
<global-field label="保存人:" :value="details.fileName || '-'"></global-field>
<global-field label="保存时间:" :value="details.fileTime || '-'"></global-field>
</view>
</view>
</up-collapse-item>
<up-collapse-item title="客户工程授权人意见" name="add-ratify">
<view class="details-body">
<view class="details-body-list">
<view class="details-body-item">
<global-field label="客户工程授权人:" :value="details.customFullName || '-'"></global-field>
<view class="details-edit" @tap="handleEdit('add-ratify')">编辑</view>
</view>
<view class="details-body-cell">
<view class="title">客户工程授权人意见</view>
<view class="label">{{ useGetDictByValue('te_customType', details.customType) }}</view>
</view>
</view>
<view class="details-body-footer" style="margin-top: 16rpx">
<global-field label="保存人:" :value="details.approver || '-'"></global-field>
<global-field label="保存时间:" :value="details.approverTime || '-'"></global-field>
</view>
</view>
</up-collapse-item>
</up-collapse>
</view>
</global-page>
</template>
<script setup>
import Day from 'mocp/utils/dayjs'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { storeToRefs } from 'pinia'
import useBaseStore from 'mocp/store/base'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import { timeStampFormat } from 'mocp/utils/tool'
import { computed } from 'vue'
const technologyEvaluationStore = useTechnologyEvaluationStore()
const { details } = storeToRefs(technologyEvaluationStore)
const baseStore = useBaseStore()
//获取默认展开项
const getDefaultCollapse = computed(() => {
const defaultCollapse = ['updat-technology']
if (details.value?.estimateTime) {
defaultCollapse.push('add-engineering')
}
if (details.value?.opinionTime) {
defaultCollapse.push('add-opinion')
}
if (details.value?.fileTime) {
defaultCollapse.push('add-support-file')
}
if (details.value?.approverTime) {
defaultCollapse.push('add-ratify')
}
return defaultCollapse
})
//点击编辑
const handleEdit = (path) => {
uni.$mocpJump.navigateTo('/panel/technology-evaluation/' + path)
}
</script>
<style lang="scss" scoped>
@import './constants/details.scss';
</style>
<template>
<global-page
title="技术评估"
isDataList
refresherEnabled
loadingMoreEnabled
auto
ref="paging"
:params="searchParams"
showNavRight
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="getTechnicalEvaluationApi"
:padding="24"
>
<template #="{ dataList }">
<view class="item" v-for="item in dataList" :key="item.id" @tap="goDetails(item)">
<view class="item-title">
<view class="left">
<custom-state :value="useGetDictByValue('te_state', item.state)"></custom-state>
</view>
<view class="right">
<view class="label">
<global-field class="txt" label="机号:" :value="item.ac || '-'"></global-field>
</view>
<view class="label">
<global-field class="txt" label="机型:" :value="item.model || '-'"></global-field>
</view>
</view>
</view>
<view class="item-content u-line-3">
{{ item.description || '暂无内容~' }}
</view>
<view class="item-footer">
<view class="label">
<global-icon icon="calendar"></global-icon>
<text class="txt">
{{ Day(item.dateTime).format('YYYY/MM/DD') }}
</text>
</view>
</view>
</view>
</template>
</global-page>
</template>
<script setup>
import { ref } from 'vue'
import Day from 'mocp/utils/dayjs'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import useTechnologyEvaluationStore from 'mocp/store/technology-evaluation'
import { onUnload } from '@dcloudio/uni-app'
import { getTechnicalEvaluationApi } from 'mocp/api/technology-evaluation'
//跳转
const technologyEvaluationStore = useTechnologyEvaluationStore()
const goDetails = (data) => {
uni.$mocpJump.navigateTo('/panel/technology-evaluation/details', { id: data.id }).then(() => {
technologyEvaluationStore.setState('details', data)
})
}
//筛选
const handleRightClick = () => {
uni.$mocpJump.navigateTo('/panel/technology-evaluation/search')
}
//刷新
const searchParams = ref()
const paging = ref()
uni.$on('technologyEvaluationReload', ({ params }) => {
if (params) {
searchParams.value = params
}
paging.value?.reload()
})
onUnload(() => {
uni.$off('technologyEvaluationReload')
})
</script>
<style lang="scss" scoped>
@import './constants/list.scss';
</style>
<template>
<global-page :padding="24" title="筛选">
<up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef">
<up-form-item label="状态" prop="state" :borderBottom="true">
<global-picker v-model="formData.state" pickAlign="right" clearable dictkey="te_state"></global-picker>
</up-form-item>
<up-form-item label="机号" prop="ac" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.ac" :options="deviceNumList" clearable filter></global-picker>
</up-form-item>
<up-form-item label="机型" prop="model" :borderBottom="true">
<global-picker v-model="formData.model" pickAlign="right" :options="baseStore.getTypeSelect" clearable filter></global-picker>
</up-form-item>
<up-form-item label="ATA章节" prop="ata" :borderBottom="true">
<global-picker v-model="formData.ata" pickAlign="right" :options="baseStore.getATASelect" clearable filter></global-picker>
</up-form-item>
<up-form-item label="日期" :borderBottom="true">
<global-calendar
pickAlign="right"
v-model:startTime="formData.startDateTime"
v-model:endTime="formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
<template #bottom>
<view class="footer-btn">
<up-row gutter="10">
<up-col span="6">
<global-button type="light" size="large" :radius="5" @tap="handleReset">重置</global-button>
</up-col>
<up-col span="6"><global-button type="primary" size="large" :radius="5" @tap="handleConfirm">确定</global-button></up-col>
</up-row>
</view>
</template>
</global-page>
</template>
<script setup>
import { formData, formRef } from './constants/search.compositions'
import useBaseStore from 'mocp/store/base'
import { handleConfirm, handleReset } from './constants/search.functionals'
//获取下拉框选项
const baseStore = useBaseStore()
const {
selectList: { deviceNumList }
} = useBaseStore()
</script>
<style lang="scss" scoped>
.footer-btn {
padding: 24rpx 32rpx;
background-color: #fff;
}
</style>
......@@ -55,6 +55,12 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe6e3;</span>
<div class="name">fly</div>
<div class="code-name">&amp;#xe6e3;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe6e2;</span>
<div class="name">saixuan</div>
<div class="code-name">&amp;#xe6e2;</div>
......@@ -162,9 +168,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1720423308442') format('woff2'),
url('iconfont.woff?t=1720423308442') format('woff'),
url('iconfont.ttf?t=1720423308442') format('truetype');
src: url('iconfont.woff2?t=1720593389064') format('woff2'),
url('iconfont.woff?t=1720593389064') format('woff'),
url('iconfont.ttf?t=1720593389064') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
......@@ -191,6 +197,15 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-fly"></span>
<div class="name">
fly
</div>
<div class="code-name">.icon-fly
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-saixuan-01"></span>
<div class="name">
saixuan
......@@ -354,6 +369,14 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fly"></use>
</svg>
<div class="name">fly</div>
<div class="code-name">#icon-fly</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-saixuan-01"></use>
</svg>
<div class="name">saixuan</div>
......
@font-face {
font-family: "iconfont"; /* Project id 4550048 */
src: url('iconfont.woff2?t=1720423308442') format('woff2'),
url('iconfont.woff?t=1720423308442') format('woff'),
url('iconfont.ttf?t=1720423308442') format('truetype');
src: url('iconfont.woff2?t=1720593389064') format('woff2'),
url('iconfont.woff?t=1720593389064') format('woff'),
url('iconfont.ttf?t=1720593389064') format('truetype');
}
.iconfont {
......@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-fly:before {
content: "\e6e3";
}
.icon-saixuan-01:before {
content: "\e6e2";
}
......
window._iconfont_svg_string_4550048='<svg><symbol id="icon-saixuan-01" viewBox="0 0 1024 1024"><path d="M89.6 172.8c6.4-12.8 19.2-25.6 38.4-25.6h768c19.2 0 32 12.8 38.4 25.6 6.4 12.8 6.4 32-6.4 44.8L633.6 569.6V896c0 12.8-6.4 25.6-19.2 38.4-12.8 6.4-25.6 6.4-38.4 0l-153.6-76.8c-12.8-6.4-25.6-19.2-25.6-38.4v-256L96 217.6c-12.8-12.8-12.8-25.6-6.4-44.8z m128 64l249.6 288c6.4 6.4 12.8 19.2 12.8 25.6v243.2l70.4 32V550.4c0-12.8 6.4-19.2 12.8-25.6l249.6-288H217.6z" ></path></symbol><symbol id="icon-jpg" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#65C466" ></path><path d="M256 320c0-70.4 57.6-128 128-128s128 57.6 128 128-57.6 128-128 128-128-57.6-128-128zM736 384c19.2 12.8 32 25.6 32 44.8v358.4c0 25.6-19.2 44.8-44.8 44.8H300.8c-25.6 0-44.8-19.2-44.8-44.8V588.8c0-12.8 6.4-32 19.2-38.4 12.8-12.8 32-12.8 44.8-6.4l166.4 64 198.4-211.2c12.8-12.8 38.4-19.2 51.2-12.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-pdf" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#F7CE46" ></path><path d="M640 339.2H384c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8h83.2v300.8c0 19.2 19.2 38.4 44.8 38.4s44.8-19.2 44.8-44.8V428.8H640c25.6 0 44.8-19.2 44.8-44.8s-19.2-44.8-44.8-44.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-video" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#165DFF" ></path><path d="M256 428.8c0-25.6 19.2-44.8 44.8-44.8h288c25.6 0 44.8 19.2 44.8 44.8v12.8l83.2-32c12.8-6.4 25.6-6.4 38.4 6.4 6.4 6.4 12.8 19.2 12.8 38.4V704c0 12.8-6.4 32-19.2 38.4-12.8 6.4-25.6 12.8-38.4 6.4l-83.2-32v12.8c0 25.6-19.2 44.8-44.8 44.8H300.8c-25.6-6.4-44.8-25.6-44.8-51.2V428.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-delete-01" viewBox="0 0 1024 1024"><path d="M723.2 192V108.8H300.8V192h-192v83.2h76.8v576c0 38.4 25.6 64 64 64h531.2c38.4 0 64-25.6 64-64v-576h76.8V192h-198.4zM268.8 832V275.2h492.8V832H268.8zM384 384v320h83.2V384H384z m172.8 0v320H640V384H556.8z" ></path></symbol><symbol id="icon-navbarright" viewBox="0 0 1024 1024"><path d="M896 748.8H128V832h768v-83.2z m0-281.6H467.2v83.2H896V467.2zM128 192h768v83.2H128V192z m172.8 448c12.8 6.4 32 0 32-19.2V409.6c0-19.2-19.2-25.6-32-19.2L140.8 499.2c-12.8 6.4-12.8 25.6 0 38.4L300.8 640z" ></path></symbol><symbol id="icon-drive" viewBox="0 0 1024 1024"><path d="M236.8 172.8v684.8h556.8v-448H620.8c-38.4 0-64-25.6-64-64V172.8h-320z m403.2 57.6V320h89.6L640 230.4zM147.2 147.2c0-38.4 25.6-64 64-64h403.2l262.4 262.4v531.2c0 38.4-25.6 64-64 64H211.2c-38.4 0-64-25.6-64-64V147.2z" ></path></symbol><symbol id="icon-safe" viewBox="0 0 1024 1024"><path d="M512 76.8l19.2 12.8c70.4 38.4 153.6 64 217.6 83.2 32 6.4 57.6 12.8 76.8 19.2 12.8 0 19.2 0 25.6 6.4h44.8v371.2l-44.8-6.4h44.8V576c0 6.4-6.4 19.2-12.8 32-6.4 25.6-25.6 64-51.2 108.8-51.2 83.2-147.2 172.8-307.2 224H512l-12.8-6.4c-160-44.8-256-140.8-307.2-224-25.6-32-38.4-70.4-51.2-102.4-6.4-12.8-6.4-25.6-6.4-32v-12.8l44.8-6.4-51.2 6.4V198.4l38.4-6.4h6.4c6.4 0 12.8 0 25.6-6.4 19.2 0 44.8-6.4 76.8-19.2 64-12.8 147.2-38.4 217.6-83.2l19.2-6.4z m-300.8 192v288c0 6.4 6.4 12.8 6.4 25.6 6.4 25.6 19.2 51.2 44.8 89.6 44.8 64 115.2 140.8 249.6 179.2 128-38.4 204.8-115.2 249.6-179.2 19.2-32 32-64 44.8-89.6 6.4-12.8 6.4-19.2 6.4-25.6V268.8c-19.2-6.4-51.2-6.4-83.2-19.2-64-12.8-140.8-38.4-217.6-76.8-76.8 44.8-153.6 64-217.6 83.2-32 6.4-57.6 12.8-83.2 12.8z m518.4 147.2l-243.2 243.2-160-153.6L384 448l96 96 185.6-185.6 64 57.6z" ></path></symbol><symbol id="icon-subscribed" viewBox="0 0 1024 1024"><path d="M234.688 170.688v654.208L512 676.992l277.312 147.904V170.688H234.688z m-85.376-21.312a64 64 0 0 1 64-64h597.376a64 64 0 0 1 64 64v739.52c0 35.456-37.76 58.112-69.056 41.408L512 773.76l-293.632 156.608a46.912 46.912 0 0 1-69.056-41.408V149.376zM471.36 468.48l165.952-165.952 60.352 60.352-226.304 226.304-135.68-135.744 60.288-60.352L471.36 468.48z" fill="#4E5969" ></path></symbol><symbol id="icon-mind-mapping" viewBox="0 0 1024 1024"><path d="M106.688 213.312a85.312 85.312 0 1 1 128 73.92v182.08h106.624v85.376H234.688V768h106.624v85.312h-192V287.232a85.312 85.312 0 0 1-42.624-73.92zM917.312 256H426.688V170.688h490.624V256z m0 298.688H426.688V469.312h490.624v85.376z m0 298.624H426.688V768h490.624v85.312z" fill="#4E5969" ></path></symbol><symbol id="icon-email" viewBox="0 0 1024 1024"><path d="M149.312 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h725.376a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H149.312z m21.376 682.688V213.312h682.624v597.376H170.688z m88.32-483.072L512 502.784l253.056-175.168 48.576 70.144-265.216 183.552a64 64 0 0 1-72.832 0L210.368 397.76l48.64-70.144z" fill="#4E5969" ></path></symbol><symbol id="icon-idcard" viewBox="0 0 1024 1024"><path d="M85.312 213.312C85.312 166.208 123.52 128 170.688 128h682.624c47.168 0 85.376 38.208 85.376 85.312v597.376c0 47.104-38.208 85.312-85.376 85.312H170.688a85.312 85.312 0 0 1-85.376-85.312V213.312z m768 0H170.688v597.376h682.624V213.312z m-426.624 192h-192V320h192v85.312z m0 149.376h-192V469.312h192v85.376zM341.312 704H234.688V618.688h106.624V704z m277.376-106.688C559.808 597.312 512 645.12 512 704H426.688a192 192 0 0 1 114.24-175.616 128 128 0 1 1 155.456 0A192 192 0 0 1 810.688 704h-85.376c0-58.88-47.744-106.688-106.624-106.688zM576 426.688a42.688 42.688 0 1 1 85.312 0 42.688 42.688 0 0 1-85.312 0z" fill="#4E5969" ></path></symbol><symbol id="icon-calendar" viewBox="0 0 1024 1024"><path d="M256 149.312v-42.688h85.312v42.688h341.376v-42.688H768v42.688h85.312a64 64 0 0 1 64 64v640a64 64 0 0 1-64 64H170.688a64 64 0 0 1-64-64v-640a64 64 0 0 1 64-64H256z m0 85.312H192v192h640v-192h-64v42.688h-85.312v-42.688H341.312v42.688H256v-42.688zM832 512H192v320h640V512z" fill="#4E5969" ></path></symbol><symbol id="icon-message" viewBox="0 0 1024 1024"><path d="M106.688 512a405.312 405.312 0 1 1 810.624 0v13.44a391.936 391.936 0 0 1-391.872 391.872H106.688V512zM512 192a320 320 0 0 0-320 320v320h333.44A306.56 306.56 0 0 0 832 525.44V512a320 320 0 0 0-320-320z m192 192v85.312H320V384h384z m-192 277.312H320V576h192v85.312z" fill="#4E5969" ></path></symbol><symbol id="icon-Vector" viewBox="0 0 1228 1024"><path d="M285.360264 841.131887c15.870413 7.372063 15.870413 22.013799 23.754425 36.553144 0 22.013799-15.768023 43.925207-47.50885 43.925208-23.754425 7.269673-47.611239-14.641736-55.49525-43.925208 0-21.911409 15.870413-43.822818 47.508849-65.734226a263.960804 263.960804 0 0 1 150.615339 0c95.222478 36.553145 182.356164 116.929107 206.110588 168.123988-47.508849-175.49605-253.619438-321.708629-443.859614-241.332667-71.365663 29.283472-103.106489 87.748025-103.106489 153.584641C71.365663 965.637836 134.744926 1024 221.981002 1024c47.508849 0 87.133687-14.641736 110.990501-43.925207 31.740826-51.194881 15.768023-116.929107-47.611239-138.942906z m657.956604 0c-15.870413 7.372063-23.754425 14.641736-23.754424 36.553144 0 22.013799 15.768023 43.925207 47.508849 43.925208 23.754425 7.269673 47.611239-14.641736 55.49525-43.925208 0-21.911409-15.870413-43.822818-47.508849-65.734226a263.960804 263.960804 0 0 0-150.615338 0c-95.222478 36.553145-182.356164 116.929107-213.994601 168.123988 47.508849-175.49605 261.50345-321.708629 451.743626-241.332667 63.481652 22.013799 103.106489 80.478352 95.222478 146.314968-7.986401 73.106289-63.481652 131.673233-150.717729 131.673233-47.508849 0-87.133687-14.641736-110.990501-43.925208-23.754425-43.925207-15.768023-109.659434 47.611239-131.673232zM610.242976 387.750025C784.817518 387.750025 927.446455 307.271673 927.446455 204.881912c0-80.478352-87.236076-146.314969-206.110589-175.496051 142.731327 29.181082 245.735426 109.659434 245.735427 197.40746C967.071293 336.555144 832.428757 409.661434 713.451855 424.30317c-71.365663 7.269673-79.249675 7.269673-103.10649 29.283471-7.884012-22.013799-23.754425-22.013799-87.133686-29.283471C404.234777 409.661434 269.489851 329.183082 269.489851 226.793321c0-87.748025 103.106489-168.226377 245.735426-197.40746C388.466753 58.464554 301.230677 124.40356 301.230677 204.881912c0 102.389761 142.628937 182.868113 309.217078 182.868113z m0 117.031497c31.740826-22.013799 79.249675-29.283472 118.976902-36.655535C903.692031 431.572843 1014.682532 351.29927 1014.682532 241.435056c0-43.822818-15.870413-80.478352-47.611239-109.659434-63.481652-58.566943-158.49935-102.389761-277.476253-117.031496 213.994601 14.641736 372.69873 124.30117 372.698731 255.974402 0 117.031497-118.976902 204.779522-309.217079 248.60234-79.249675 22.013799-118.874513 36.655534-142.731327 73.208679-15.870413-36.553145-55.49525-43.925207-134.744925-73.208679-190.240176-43.822818-309.217078-131.570843-309.217078-248.60234 0-131.673233 158.70413-234.062994 372.69873-255.974402C427.989201 29.385861 332.971503 73.208679 269.489851 131.775622c-31.740826 29.181082-47.508849 73.106289-47.508849 109.659434 0 109.761824 110.990501 190.137786 285.360264 226.690931 31.740826 7.372063 79.249675 14.641736 103.004099 36.655535z m0 175.49605c39.624838-58.566943 118.976902-87.748025 190.240176-109.761824 23.856814-7.269673 31.740826-14.539346 55.49525-14.539346 150.615338-51.194881 245.735426-146.314969 253.721828-255.974402 0-153.584642-198.226577-277.988201-443.962004-299.89961C975.057694 14.744126 1228.677132 175.59844 1228.677132 358.466553c0 124.30117-95.120088 234.062994-277.476252 299.89961-79.249675 21.911409-285.360264 80.375962-340.855515 292.527548-47.508849-204.779522-253.619438-270.616138-332.869113-292.527548C95.120088 585.157484 0 482.767723 0 358.466553 0 175.59844 253.619438 22.013799 562.836516 0.10239 317.10109 14.744126 118.772123 139.045295 118.772123 292.629937c7.986401 109.761824 103.106489 204.779522 245.735426 255.974403 23.856814 7.372063 31.740826 14.641736 55.495251 14.641735 79.249675 29.283472 158.60174 58.464554 190.240176 117.031497z m-110.990501-511.948805C499.354865 109.659434 546.966103 58.464554 618.434157 58.464554 689.59504 58.566943 737.206279 102.492151 737.206279 168.328767c0 58.464554-47.611239 109.659434-118.874512 109.659434-71.365663 0-118.976902-43.822818-118.976902-109.659434z" fill="#DD4012" ></path></symbol></svg>',function(e){var t=(t=document.getElementsByTagName("script"))[t.length-1],c=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var i,o,l,a,n,h=function(t,c){c.parentNode.insertBefore(t,c)};if(c&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}i=function(){var t,c=document.createElement("div");c.innerHTML=e._iconfont_svg_string_4550048,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(t=document.body).firstChild?h(c,t.firstChild):t.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),i()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(l=i,a=e.document,n=!1,d(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,v())})}function v(){n||(n=!0,l())}function d(){try{a.documentElement.doScroll("left")}catch(t){return void setTimeout(d,50)}v()}}(window);
\ No newline at end of file
window._iconfont_svg_string_4550048='<svg><symbol id="icon-fly" viewBox="0 0 1024 1024"><path d="M435.2 224c0-83.2 51.2-128 76.8-140.8 25.6 12.8 76.8 51.2 76.8 140.8V384l332.8 275.2v83.2L576 576v192l108.8 172.8-172.8-64-172.8 64L448 768V576l-339.2 172.8v-83.2L435.2 384V224z" ></path></symbol><symbol id="icon-saixuan-01" viewBox="0 0 1024 1024"><path d="M89.6 172.8c6.4-12.8 19.2-25.6 38.4-25.6h768c19.2 0 32 12.8 38.4 25.6 6.4 12.8 6.4 32-6.4 44.8L633.6 569.6V896c0 12.8-6.4 25.6-19.2 38.4-12.8 6.4-25.6 6.4-38.4 0l-153.6-76.8c-12.8-6.4-25.6-19.2-25.6-38.4v-256L96 217.6c-12.8-12.8-12.8-25.6-6.4-44.8z m128 64l249.6 288c6.4 6.4 12.8 19.2 12.8 25.6v243.2l70.4 32V550.4c0-12.8 6.4-19.2 12.8-25.6l249.6-288H217.6z" ></path></symbol><symbol id="icon-jpg" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#65C466" ></path><path d="M256 320c0-70.4 57.6-128 128-128s128 57.6 128 128-57.6 128-128 128-128-57.6-128-128zM736 384c19.2 12.8 32 25.6 32 44.8v358.4c0 25.6-19.2 44.8-44.8 44.8H300.8c-25.6 0-44.8-19.2-44.8-44.8V588.8c0-12.8 6.4-32 19.2-38.4 12.8-12.8 32-12.8 44.8-6.4l166.4 64 198.4-211.2c12.8-12.8 38.4-19.2 51.2-12.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-pdf" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#F7CE46" ></path><path d="M640 339.2H384c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8h83.2v300.8c0 19.2 19.2 38.4 44.8 38.4s44.8-19.2 44.8-44.8V428.8H640c25.6 0 44.8-19.2 44.8-44.8s-19.2-44.8-44.8-44.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-video" viewBox="0 0 1024 1024"><path d="M128 128C128 83.2 166.4 44.8 211.2 44.8H640c12.8 0 19.2 6.4 32 12.8l211.2 211.2c6.4 6.4 12.8 19.2 12.8 32V896c0 44.8-38.4 83.2-83.2 83.2H211.2c-44.8 0-83.2-38.4-83.2-83.2V128z" fill="#165DFF" ></path><path d="M256 428.8c0-25.6 19.2-44.8 44.8-44.8h288c25.6 0 44.8 19.2 44.8 44.8v12.8l83.2-32c12.8-6.4 25.6-6.4 38.4 6.4 6.4 6.4 12.8 19.2 12.8 38.4V704c0 12.8-6.4 32-19.2 38.4-12.8 6.4-25.6 12.8-38.4 6.4l-83.2-32v12.8c0 25.6-19.2 44.8-44.8 44.8H300.8c-25.6-6.4-44.8-25.6-44.8-51.2V428.8z" fill="#FFFFFF" ></path></symbol><symbol id="icon-delete-01" viewBox="0 0 1024 1024"><path d="M723.2 192V108.8H300.8V192h-192v83.2h76.8v576c0 38.4 25.6 64 64 64h531.2c38.4 0 64-25.6 64-64v-576h76.8V192h-198.4zM268.8 832V275.2h492.8V832H268.8zM384 384v320h83.2V384H384z m172.8 0v320H640V384H556.8z" ></path></symbol><symbol id="icon-navbarright" viewBox="0 0 1024 1024"><path d="M896 748.8H128V832h768v-83.2z m0-281.6H467.2v83.2H896V467.2zM128 192h768v83.2H128V192z m172.8 448c12.8 6.4 32 0 32-19.2V409.6c0-19.2-19.2-25.6-32-19.2L140.8 499.2c-12.8 6.4-12.8 25.6 0 38.4L300.8 640z" ></path></symbol><symbol id="icon-drive" viewBox="0 0 1024 1024"><path d="M236.8 172.8v684.8h556.8v-448H620.8c-38.4 0-64-25.6-64-64V172.8h-320z m403.2 57.6V320h89.6L640 230.4zM147.2 147.2c0-38.4 25.6-64 64-64h403.2l262.4 262.4v531.2c0 38.4-25.6 64-64 64H211.2c-38.4 0-64-25.6-64-64V147.2z" ></path></symbol><symbol id="icon-safe" viewBox="0 0 1024 1024"><path d="M512 76.8l19.2 12.8c70.4 38.4 153.6 64 217.6 83.2 32 6.4 57.6 12.8 76.8 19.2 12.8 0 19.2 0 25.6 6.4h44.8v371.2l-44.8-6.4h44.8V576c0 6.4-6.4 19.2-12.8 32-6.4 25.6-25.6 64-51.2 108.8-51.2 83.2-147.2 172.8-307.2 224H512l-12.8-6.4c-160-44.8-256-140.8-307.2-224-25.6-32-38.4-70.4-51.2-102.4-6.4-12.8-6.4-25.6-6.4-32v-12.8l44.8-6.4-51.2 6.4V198.4l38.4-6.4h6.4c6.4 0 12.8 0 25.6-6.4 19.2 0 44.8-6.4 76.8-19.2 64-12.8 147.2-38.4 217.6-83.2l19.2-6.4z m-300.8 192v288c0 6.4 6.4 12.8 6.4 25.6 6.4 25.6 19.2 51.2 44.8 89.6 44.8 64 115.2 140.8 249.6 179.2 128-38.4 204.8-115.2 249.6-179.2 19.2-32 32-64 44.8-89.6 6.4-12.8 6.4-19.2 6.4-25.6V268.8c-19.2-6.4-51.2-6.4-83.2-19.2-64-12.8-140.8-38.4-217.6-76.8-76.8 44.8-153.6 64-217.6 83.2-32 6.4-57.6 12.8-83.2 12.8z m518.4 147.2l-243.2 243.2-160-153.6L384 448l96 96 185.6-185.6 64 57.6z" ></path></symbol><symbol id="icon-subscribed" viewBox="0 0 1024 1024"><path d="M234.688 170.688v654.208L512 676.992l277.312 147.904V170.688H234.688z m-85.376-21.312a64 64 0 0 1 64-64h597.376a64 64 0 0 1 64 64v739.52c0 35.456-37.76 58.112-69.056 41.408L512 773.76l-293.632 156.608a46.912 46.912 0 0 1-69.056-41.408V149.376zM471.36 468.48l165.952-165.952 60.352 60.352-226.304 226.304-135.68-135.744 60.288-60.352L471.36 468.48z" fill="#4E5969" ></path></symbol><symbol id="icon-mind-mapping" viewBox="0 0 1024 1024"><path d="M106.688 213.312a85.312 85.312 0 1 1 128 73.92v182.08h106.624v85.376H234.688V768h106.624v85.312h-192V287.232a85.312 85.312 0 0 1-42.624-73.92zM917.312 256H426.688V170.688h490.624V256z m0 298.688H426.688V469.312h490.624v85.376z m0 298.624H426.688V768h490.624v85.312z" fill="#4E5969" ></path></symbol><symbol id="icon-email" viewBox="0 0 1024 1024"><path d="M149.312 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h725.376a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H149.312z m21.376 682.688V213.312h682.624v597.376H170.688z m88.32-483.072L512 502.784l253.056-175.168 48.576 70.144-265.216 183.552a64 64 0 0 1-72.832 0L210.368 397.76l48.64-70.144z" fill="#4E5969" ></path></symbol><symbol id="icon-idcard" viewBox="0 0 1024 1024"><path d="M85.312 213.312C85.312 166.208 123.52 128 170.688 128h682.624c47.168 0 85.376 38.208 85.376 85.312v597.376c0 47.104-38.208 85.312-85.376 85.312H170.688a85.312 85.312 0 0 1-85.376-85.312V213.312z m768 0H170.688v597.376h682.624V213.312z m-426.624 192h-192V320h192v85.312z m0 149.376h-192V469.312h192v85.376zM341.312 704H234.688V618.688h106.624V704z m277.376-106.688C559.808 597.312 512 645.12 512 704H426.688a192 192 0 0 1 114.24-175.616 128 128 0 1 1 155.456 0A192 192 0 0 1 810.688 704h-85.376c0-58.88-47.744-106.688-106.624-106.688zM576 426.688a42.688 42.688 0 1 1 85.312 0 42.688 42.688 0 0 1-85.312 0z" fill="#4E5969" ></path></symbol><symbol id="icon-calendar" viewBox="0 0 1024 1024"><path d="M256 149.312v-42.688h85.312v42.688h341.376v-42.688H768v42.688h85.312a64 64 0 0 1 64 64v640a64 64 0 0 1-64 64H170.688a64 64 0 0 1-64-64v-640a64 64 0 0 1 64-64H256z m0 85.312H192v192h640v-192h-64v42.688h-85.312v-42.688H341.312v42.688H256v-42.688zM832 512H192v320h640V512z" fill="#4E5969" ></path></symbol><symbol id="icon-message" viewBox="0 0 1024 1024"><path d="M106.688 512a405.312 405.312 0 1 1 810.624 0v13.44a391.936 391.936 0 0 1-391.872 391.872H106.688V512zM512 192a320 320 0 0 0-320 320v320h333.44A306.56 306.56 0 0 0 832 525.44V512a320 320 0 0 0-320-320z m192 192v85.312H320V384h384z m-192 277.312H320V576h192v85.312z" fill="#4E5969" ></path></symbol><symbol id="icon-Vector" viewBox="0 0 1228 1024"><path d="M285.360264 841.131887c15.870413 7.372063 15.870413 22.013799 23.754425 36.553144 0 22.013799-15.768023 43.925207-47.50885 43.925208-23.754425 7.269673-47.611239-14.641736-55.49525-43.925208 0-21.911409 15.870413-43.822818 47.508849-65.734226a263.960804 263.960804 0 0 1 150.615339 0c95.222478 36.553145 182.356164 116.929107 206.110588 168.123988-47.508849-175.49605-253.619438-321.708629-443.859614-241.332667-71.365663 29.283472-103.106489 87.748025-103.106489 153.584641C71.365663 965.637836 134.744926 1024 221.981002 1024c47.508849 0 87.133687-14.641736 110.990501-43.925207 31.740826-51.194881 15.768023-116.929107-47.611239-138.942906z m657.956604 0c-15.870413 7.372063-23.754425 14.641736-23.754424 36.553144 0 22.013799 15.768023 43.925207 47.508849 43.925208 23.754425 7.269673 47.611239-14.641736 55.49525-43.925208 0-21.911409-15.870413-43.822818-47.508849-65.734226a263.960804 263.960804 0 0 0-150.615338 0c-95.222478 36.553145-182.356164 116.929107-213.994601 168.123988 47.508849-175.49605 261.50345-321.708629 451.743626-241.332667 63.481652 22.013799 103.106489 80.478352 95.222478 146.314968-7.986401 73.106289-63.481652 131.673233-150.717729 131.673233-47.508849 0-87.133687-14.641736-110.990501-43.925208-23.754425-43.925207-15.768023-109.659434 47.611239-131.673232zM610.242976 387.750025C784.817518 387.750025 927.446455 307.271673 927.446455 204.881912c0-80.478352-87.236076-146.314969-206.110589-175.496051 142.731327 29.181082 245.735426 109.659434 245.735427 197.40746C967.071293 336.555144 832.428757 409.661434 713.451855 424.30317c-71.365663 7.269673-79.249675 7.269673-103.10649 29.283471-7.884012-22.013799-23.754425-22.013799-87.133686-29.283471C404.234777 409.661434 269.489851 329.183082 269.489851 226.793321c0-87.748025 103.106489-168.226377 245.735426-197.40746C388.466753 58.464554 301.230677 124.40356 301.230677 204.881912c0 102.389761 142.628937 182.868113 309.217078 182.868113z m0 117.031497c31.740826-22.013799 79.249675-29.283472 118.976902-36.655535C903.692031 431.572843 1014.682532 351.29927 1014.682532 241.435056c0-43.822818-15.870413-80.478352-47.611239-109.659434-63.481652-58.566943-158.49935-102.389761-277.476253-117.031496 213.994601 14.641736 372.69873 124.30117 372.698731 255.974402 0 117.031497-118.976902 204.779522-309.217079 248.60234-79.249675 22.013799-118.874513 36.655534-142.731327 73.208679-15.870413-36.553145-55.49525-43.925207-134.744925-73.208679-190.240176-43.822818-309.217078-131.570843-309.217078-248.60234 0-131.673233 158.70413-234.062994 372.69873-255.974402C427.989201 29.385861 332.971503 73.208679 269.489851 131.775622c-31.740826 29.181082-47.508849 73.106289-47.508849 109.659434 0 109.761824 110.990501 190.137786 285.360264 226.690931 31.740826 7.372063 79.249675 14.641736 103.004099 36.655535z m0 175.49605c39.624838-58.566943 118.976902-87.748025 190.240176-109.761824 23.856814-7.269673 31.740826-14.539346 55.49525-14.539346 150.615338-51.194881 245.735426-146.314969 253.721828-255.974402 0-153.584642-198.226577-277.988201-443.962004-299.89961C975.057694 14.744126 1228.677132 175.59844 1228.677132 358.466553c0 124.30117-95.120088 234.062994-277.476252 299.89961-79.249675 21.911409-285.360264 80.375962-340.855515 292.527548-47.508849-204.779522-253.619438-270.616138-332.869113-292.527548C95.120088 585.157484 0 482.767723 0 358.466553 0 175.59844 253.619438 22.013799 562.836516 0.10239 317.10109 14.744126 118.772123 139.045295 118.772123 292.629937c7.986401 109.761824 103.106489 204.779522 245.735426 255.974403 23.856814 7.372063 31.740826 14.641736 55.495251 14.641735 79.249675 29.283472 158.60174 58.464554 190.240176 117.031497z m-110.990501-511.948805C499.354865 109.659434 546.966103 58.464554 618.434157 58.464554 689.59504 58.566943 737.206279 102.492151 737.206279 168.328767c0 58.464554-47.611239 109.659434-118.874512 109.659434-71.365663 0-118.976902-43.822818-118.976902-109.659434z" fill="#DD4012" ></path></symbol></svg>',function(e){var t=(t=document.getElementsByTagName("script"))[t.length-1],c=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var i,o,l,a,h,n=function(t,c){c.parentNode.insertBefore(t,c)};if(c&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}i=function(){var t,c=document.createElement("div");c.innerHTML=e._iconfont_svg_string_4550048,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(t=document.body).firstChild?n(c,t.firstChild):t.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),i()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(l=i,a=e.document,h=!1,d(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,v())})}function v(){h||(h=!0,l())}function d(){try{a.documentElement.doScroll("left")}catch(t){return void setTimeout(d,50)}v()}}(window);
\ No newline at end of file
......@@ -6,6 +6,13 @@
"description": "",
"glyphs": [
{
"icon_id": "41020181",
"name": "fly",
"font_class": "fly",
"unicode": "e6e3",
"unicode_decimal": 59107
},
{
"icon_id": "40993233",
"name": "saixuan",
"font_class": "saixuan-01",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment