ui库合并版本完成
This commit is contained in:
		
							
								
								
									
										88
									
								
								ui/lib/js/area.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								ui/lib/js/area.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| import request from "./request"; | ||||
|  | ||||
|  | ||||
| export default class Area { | ||||
|   constructor(code, hash = {}) { | ||||
|     this.id = code | ||||
|     this.level = Area.getLevelByAreaId(code) | ||||
|     this.areaMap = Object.values(this.getAreaInfo(code)) | ||||
|     if (Object.keys(hash).length > 0) { | ||||
|       this.getName(this.areaMap.map(id => hash[id])) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 获取地区的行政等级 | ||||
|    * @param code 地区编码 | ||||
|    * @returns {number} | ||||
|    */ | ||||
|   static getLevelByAreaId(code) { | ||||
|     if (code) { | ||||
|       if (code.length === 2 || /0{10}$/.test(code)) return 0; | ||||
|       else if (/0{8}$/.test(code)) return 1; | ||||
|       else if (/0{6}$/.test(code)) return 2; | ||||
|       else if (/0{3}$/.test(code)) return 3; | ||||
|       else return 4 | ||||
|     } else return -1 | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 根据地区编码获取指定等级的地区编码 | ||||
|    * @param value 地区编码 | ||||
|    * @param level 指定等级 | ||||
|    * @returns {string|null|*} | ||||
|    */ | ||||
|   static getAreaCodeByLevel(value, level) { | ||||
|     if (value) { | ||||
|       const areaNumber = value.toString(); | ||||
|       switch (level) { | ||||
|         case 0: | ||||
|           return areaNumber.substring(0, 2) + '0000000000'; | ||||
|         case 1: | ||||
|           return areaNumber.substring(0, 4) + '00000000'; | ||||
|         case 2: | ||||
|           return areaNumber.substring(0, 6) + '000000'; | ||||
|         case 3: | ||||
|           return areaNumber.substring(0, 9) + '000'; | ||||
|         case 4: | ||||
|           return areaNumber | ||||
|       } | ||||
|     } else return null | ||||
|   } | ||||
|  | ||||
|   static createByAction(areaId, ins = request, action = "/admin/area/getAllParentAreaId") { | ||||
|     return ins.post(action, null, {params: {areaId}, withoutToken: 1}).then(res => res?.data?.reverse() || []) | ||||
|   } | ||||
|  | ||||
|   getAreaInfo(id) { | ||||
|     let info = {} | ||||
|     const currentLevel = Area.getLevelByAreaId(id); | ||||
|     for (let i = 0; i <= currentLevel; i++) { | ||||
|       info[i] = Area.getAreaCodeByLevel(id, i); | ||||
|     } | ||||
|     return info | ||||
|   } | ||||
|  | ||||
|   async getAreaName() { | ||||
|     const names = await Area.createByAction(this.id); | ||||
|     this.getName(names) | ||||
|   } | ||||
|  | ||||
|   getName(names) { | ||||
|     this.meta = names | ||||
|     this.nameMap = names?.map(e => e.name) || [] | ||||
|     this.name = names?.slice(-1)?.[0]?.name | ||||
|     this.fullname = this.nameMap.join('') | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 异步从数据库中获取地区信息 | ||||
|    * @returns {Promise<void>} | ||||
|    */ | ||||
|   static async init(code) { | ||||
|     const names = await Area.createByAction(code), | ||||
|         area = new Area(code) | ||||
|     area.getName(names) | ||||
|     return area | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								ui/lib/js/coin.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ui/lib/js/coin.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| export default { | ||||
|   cny(money) { | ||||
|     if (money) { | ||||
|       money.toLocaleString('zh-Hans-CN', {style: 'currency', currency: "CNY"}) | ||||
|     } | ||||
|     return money | ||||
|   }, | ||||
|   cn(money) { | ||||
|     let num = parseFloat(money), cnMoney = '', | ||||
|         units = '仟佰拾亿仟佰拾万仟佰拾元角分', | ||||
|         cnNum = '零壹贰叁肆伍陆柒捌玖' | ||||
|     num = num.toFixed(2).replace(/\./g,'') | ||||
|     units = units.substring(units.length - num.length) | ||||
|     console.log(num, units.length, num.length) | ||||
|     Array.from(num).map((e, i) => { | ||||
|       cnMoney += cnNum.charAt(e) + units.charAt(i) | ||||
|     }) | ||||
|     return cnMoney.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元") | ||||
|   } | ||||
| } | ||||
							
								
								
									
										77
									
								
								ui/lib/js/dict.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								ui/lib/js/dict.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| import request from "./request"; | ||||
|  | ||||
| /** | ||||
|  * 封装字典工具类 | ||||
|  */ | ||||
| const $dict = { | ||||
|   url: "/admin/dictionary/queryValsByCodeList", | ||||
|   loading: [], | ||||
|   resolves: [], | ||||
|   getStorage() { | ||||
|     const dicts = JSON.parse(localStorage.getItem('dicts') || null) | ||||
|     return dicts?.data || dicts || []; | ||||
|   }, | ||||
|   setUrl(v) { | ||||
|     this.url = v | ||||
|   }, | ||||
|   getData(codeList) { | ||||
|     codeList = [codeList].flat().filter(Boolean).toString() | ||||
|     return request.post(this.url, null, { | ||||
|       withoutToken: true, params: {codeList} | ||||
|     }).then(res => res?.data && this.setStorage(res.data)) | ||||
|   }, | ||||
|   load(...code) { | ||||
|     return new Promise(resolve => { | ||||
|       this.resolves.push(resolve) | ||||
|       if (this.loading.length == 2) { | ||||
|         const [timer, codes] = this.loading; | ||||
|         clearTimeout(timer) | ||||
|         code = Array.from(new Set([codes, code].flat())) | ||||
|       } | ||||
|       const timer = setTimeout(() => { | ||||
|         this.getData(code).then(() => Promise.all(this.resolves.map(e => e())).then(() => this.resolves = [])) | ||||
|       }, 500) | ||||
|       this.loading = [timer, code] | ||||
|     }) | ||||
|   }, | ||||
|   setStorage(data) { | ||||
|     let ds = this.getStorage() | ||||
|     data.map(p => { | ||||
|       if (ds.some(d => d.key == p.key)) { | ||||
|         const index = ds.findIndex(d => d.key == p.key) | ||||
|         ds.splice(index, 1, p) | ||||
|       } else { | ||||
|         ds.push(p) | ||||
|       } | ||||
|     }) | ||||
|     localStorage.setItem("dicts", JSON.stringify([ds].flat())) | ||||
|   }, | ||||
|   getDict(key) { | ||||
|     let dict = this.getStorage().find(e => e.key == key) | ||||
|     !dict && console.warn("字典%s缺少加载...", key) | ||||
|     return dict ? dict.values : [] | ||||
|   }, | ||||
|   getValue(key, label) { | ||||
|     let dict = this.getDict(key) | ||||
|     if (dict) { | ||||
|       let item = dict.find(v => v.dictName == label) | ||||
|       return item ? item.dictValue : label | ||||
|     } else return label | ||||
|   }, | ||||
|   getLabel(key, value) { | ||||
|     let dict = this.getDict(key) | ||||
|     if (dict) { | ||||
|       let item = dict.find(v => v.dictValue == value) | ||||
|       return item ? item.dictName : value | ||||
|     } else return value | ||||
|   }, | ||||
|   getColor(key, value) { | ||||
|     let dict = this.getDict(key) | ||||
|     if (dict) { | ||||
|       let item = dict.find(v => v.dictValue == value) | ||||
|       return item ? item.dictColor : value | ||||
|     } else return value | ||||
|   }, | ||||
| } | ||||
|  | ||||
| export default $dict | ||||
							
								
								
									
										23
									
								
								ui/lib/js/encryption.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								ui/lib/js/encryption.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| import CryptoJs from  "crypto-js"; | ||||
|  | ||||
| /** | ||||
|  * 密码加密工具 | ||||
|  * @param params | ||||
|  * @param c 加载尝试计数器 | ||||
|  * @returns {string} | ||||
|  */ | ||||
| export const $encryption = (params, c = 0) => { | ||||
|   if (CryptoJs) { | ||||
|     const key = "thanks,villcloud" | ||||
|     let iv = CryptoJs.enc.Latin1.parse(key) | ||||
|     let encrypted = CryptoJs.AES.encrypt(params.password, iv, { | ||||
|       iv, | ||||
|       mode: CryptoJs.mode.CBC, | ||||
|       padding: CryptoJs.pad.ZeroPadding | ||||
|     }) | ||||
|     return encrypted.toString() | ||||
|   } else if (c < 10) { | ||||
|     setTimeout(() => $encryption(params, ++c), 200) | ||||
|   } else console.error("无法加载CryptoJs") | ||||
| } | ||||
| export default $encryption | ||||
							
								
								
									
										238
									
								
								ui/lib/js/identity.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								ui/lib/js/identity.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| import dayjs from "./moment"; | ||||
|  | ||||
|  | ||||
| const PARAMS = { | ||||
|   /* 省,直辖市代码表 */ | ||||
|   provinceAndCitys: { | ||||
|     11: '北京', | ||||
|     12: '天津', | ||||
|     13: '河北', | ||||
|     14: '山西', | ||||
|     15: '内蒙古', | ||||
|     21: '辽宁', | ||||
|     22: '吉林', | ||||
|     23: '黑龙江', | ||||
|     31: '上海', | ||||
|     32: '江苏', | ||||
|     33: '浙江', | ||||
|     34: '安徽', | ||||
|     35: '福建', | ||||
|     36: '江西', | ||||
|     37: '山东', | ||||
|     41: '河南', | ||||
|     42: '湖北', | ||||
|     43: '湖南', | ||||
|     44: '广东', | ||||
|     45: '广西', | ||||
|     46: '海南', | ||||
|     50: '重庆', | ||||
|     51: '四川', | ||||
|     52: '贵州', | ||||
|     53: '云南', | ||||
|     54: '西藏', | ||||
|     61: '陕西', | ||||
|     62: '甘肃', | ||||
|     63: '青海', | ||||
|     64: '宁夏', | ||||
|     65: '新疆', | ||||
|     71: '台湾', | ||||
|     81: '香港', | ||||
|     82: '澳门', | ||||
|     91: '国外' | ||||
|   }, | ||||
|  | ||||
|   /* 每位加权因子 */ | ||||
|   powers: [ | ||||
|     '7', | ||||
|     '9', | ||||
|     '10', | ||||
|     '5', | ||||
|     '8', | ||||
|     '4', | ||||
|     '2', | ||||
|     '1', | ||||
|     '6', | ||||
|     '3', | ||||
|     '7', | ||||
|     '9', | ||||
|     '10', | ||||
|     '5', | ||||
|     '8', | ||||
|     '4', | ||||
|     '2' | ||||
|   ], | ||||
|  | ||||
|   /* 第18位校检码 */ | ||||
|   parityBit: ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'], | ||||
|  | ||||
|   /* 性别 */ | ||||
|   genders: {1: '男', 0: '女'}, | ||||
| } | ||||
|  | ||||
| const Check = { | ||||
|   /* 校验地址码 */ | ||||
|   checkAddressCode(addressCode) { | ||||
|     const check = /^[1-9]\d{5}$/.test(addressCode) | ||||
|     if (!check) return false | ||||
|     return !!PARAMS.provinceAndCitys[parseInt(addressCode.substring(0, 2))] | ||||
|   }, | ||||
|   /* 校验日期码 */ | ||||
|   checkBirthDayCode(birDayCode) { | ||||
|     const check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test( | ||||
|         birDayCode | ||||
|     ) | ||||
|     if (!check) return false | ||||
|     const yyyy = parseInt(birDayCode.substring(0, 4), 10) | ||||
|     const mm = parseInt(birDayCode.substring(4, 6), 10) | ||||
|     const dd = parseInt(birDayCode.substring(6), 10) | ||||
|     const xdata = new Date(yyyy, mm - 1, dd) | ||||
|     if (xdata > new Date()) { | ||||
|       return false // 生日不能大于当前日期 | ||||
|     } else { | ||||
|       return ( | ||||
|           xdata.getFullYear() == yyyy && | ||||
|           xdata.getMonth() == mm - 1 && | ||||
|           xdata.getDate() == dd | ||||
|       ) | ||||
|     } | ||||
|   }, | ||||
|   /* 验证校检码 */ | ||||
|   checkParityBit(idCardNo) { | ||||
|     const parityBit = idCardNo.charAt(17).toUpperCase() | ||||
|     return this.getParityBit(idCardNo) == parityBit | ||||
|   }, | ||||
| // 校验15位的身份证号码 | ||||
|   check15IdCardNo(idCardNo) { | ||||
|     // 15位身份证号码的基本校验 | ||||
|     let check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test( | ||||
|         idCardNo | ||||
|     ) | ||||
|     if (!check) return false | ||||
|     // 校验地址码 | ||||
|     const addressCode = idCardNo.substring(0, 6) | ||||
|     check = this.checkAddressCode(addressCode) | ||||
|     if (!check) return false | ||||
|     const birDayCode = '19' + idCardNo.substring(6, 12) | ||||
|     // 校验日期码 | ||||
|     return this.checkBirthDayCode(birDayCode) | ||||
|   }, | ||||
|  | ||||
| // 校验18位的身份证号码 | ||||
|   check18IdCardNo(idCardNo) { | ||||
|     // 18位身份证号码的基本格式校验 | ||||
|     let check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test( | ||||
|         idCardNo | ||||
|     ) | ||||
|     if (!check) return false | ||||
|     // 校验地址码 | ||||
|     const addressCode = idCardNo.substring(0, 6) | ||||
|     check = this.checkAddressCode(addressCode) | ||||
|     if (!check) return false | ||||
|     // 校验日期码 | ||||
|     const birDayCode = idCardNo.substring(6, 14) | ||||
|     check = this.checkBirthDayCode(birDayCode) | ||||
|     if (!check) return false | ||||
|     // 验证校检码 | ||||
|     return this.checkParityBit(idCardNo) | ||||
|   }, | ||||
|   /* 计算校检码 */ | ||||
|   getParityBit(idCardNo) { | ||||
|     const id17 = idCardNo.substring(0, 17) | ||||
|     /* 加权 */ | ||||
|     let power = 0 | ||||
|     for (let i = 0; i < 17; i++) { | ||||
|       power += parseInt(id17.charAt(i), 10) * parseInt(PARAMS.powers[i]) | ||||
|     } | ||||
|     /* 取模 */ | ||||
|     const mod = power % 11 | ||||
|     return PARAMS.parityBit[mod] | ||||
|   } | ||||
| } | ||||
|  | ||||
| export default class Identity { | ||||
|   constructor(code) { | ||||
|     this.code = this.getId18(code) | ||||
|     this.init() | ||||
|   } | ||||
|  | ||||
|   init() { | ||||
|     const {code} = this | ||||
|     if (!!code) { | ||||
|       this.hideCode = Identity.hideId(code) | ||||
|       this.getIdCardInfo(code) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   static hideId(code) { | ||||
|     return code?.replace(/^(\d{10})\d{4}(.{4}$)/g, `$1${Array(5).join('*')}$2`) | ||||
|   } | ||||
|  | ||||
|   getId18(code) { | ||||
|     if (code.length == 15) { | ||||
|       const id17 = code.substring(0, 6) + '19' + code.substring(6) | ||||
|       const parityBit = Check.getParityBit(id17) | ||||
|       return id17 + parityBit | ||||
|     } else if (code.length == 18) { | ||||
|       return code | ||||
|     } else { | ||||
|       return null | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   getIdCardInfo(idCardNo) { | ||||
|     this.birthday = Identity.getBirthday(idCardNo) | ||||
|     this.sex = Identity.getSex(idCardNo) | ||||
|     this.gender = PARAMS.genders[this.sex] | ||||
|     this.age = Identity.getAge(idCardNo) | ||||
|     this.areaId = Identity.getArea(idCardNo) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 获取性别 | ||||
|    * @param code | ||||
|    * @returns {string} | ||||
|    */ | ||||
|   static getSex(code) { | ||||
|     return (Number(code.substring(16, 17)) % 2).toString() | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 获取年龄 | ||||
|    * @param code | ||||
|    * @returns {number} | ||||
|    */ | ||||
|   static getAge(code) { | ||||
|     const birthday = dayjs(code.substring(6, 14), 'YYYYMMDD') | ||||
|     return Math.ceil(dayjs.duration(dayjs().unix() - dayjs(birthday).unix(), 's').asYears()) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 获取地区编码 | ||||
|    * @param code | ||||
|    */ | ||||
|   static getArea(code) { | ||||
|     return code.substring(0, 6) + new Array(7).join(0) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 获取生日 | ||||
|    */ | ||||
|   static getBirthday(code) { | ||||
|     return dayjs(code.substring(6, 14), 'YYYYMMDD').format("YYYY-MM-DD").replace('Invalid Date', '') | ||||
|   } | ||||
|  | ||||
|   /* 校验15位或18位的身份证号码 */ | ||||
|   static check(idCardNo) { | ||||
|     // 15位和18位身份证号码的基本校验 | ||||
|     const check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo) | ||||
|     if (!check) return false | ||||
|     // 判断长度为15位或18位 | ||||
|     if (idCardNo.length == 15) { | ||||
|       return Check.check15IdCardNo(idCardNo) | ||||
|     } else if (idCardNo.length == 18) { | ||||
|       return Check.check18IdCardNo(idCardNo) | ||||
|     } else { | ||||
|       return false | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										305
									
								
								ui/lib/js/modules.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										305
									
								
								ui/lib/js/modules.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,305 @@ | ||||
| import http from "./request"; | ||||
| import utils from "./utils"; | ||||
| import Vue from "vue" | ||||
|  | ||||
| export const sys = { | ||||
|   state: () => ({ | ||||
|     info: {}, | ||||
|     theme: {} | ||||
|   }), | ||||
|   mutations: { | ||||
|     setSysInfo(state, info) { | ||||
|       state.info = info | ||||
|     }, | ||||
|     setTheme(state, theme) { | ||||
|       state.theme = theme | ||||
|     } | ||||
|   }, | ||||
|   actions: { | ||||
|     getSystem({commit}, info) { | ||||
|       return http.post("/app/appdvcpconfig/getSystemInfo", null, {withoutToken: true}).then(res => { | ||||
|         if (res?.data) { | ||||
|           let {systemInfo, colorScheme, enableGreyFilter} = res.data | ||||
|           systemInfo = JSON.parse(systemInfo || null) || {} | ||||
|           colorScheme = JSON.parse(colorScheme || null) || {} | ||||
|           commit("setSysInfo", {...info, ...systemInfo}) | ||||
|           commit("setTheme", {colorScheme, enableGreyFilter}) | ||||
|           return res.data | ||||
|         } else return Promise.reject() | ||||
|       }).catch(() => commit("setSysInfo", info)) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| /** | ||||
|  * 用户信息 | ||||
|  */ | ||||
| export const user = { | ||||
|   state: () => ({ | ||||
|     token: "", | ||||
|     info: {}, | ||||
|     routes: [] | ||||
|   }), | ||||
|   mutations: { | ||||
|     setToken(state, token) { | ||||
|       state.token = token; | ||||
|     }, | ||||
|     setUserInfo(state, info) { | ||||
|       state.info = info | ||||
|     }, | ||||
|     cleanUserInfo(state) { | ||||
|       state.info = {} | ||||
|       state.token = "" | ||||
|     }, | ||||
|     setUserExtra(state, extra = {}) { | ||||
|       Object.keys(extra).map(e => Vue.set(state, e, extra[e])) | ||||
|     }, | ||||
|     setRoutes(state,routes){ | ||||
|       state.routes = routes | ||||
|     } | ||||
|   }, | ||||
|   actions: { | ||||
|     getToken({commit}, params) { | ||||
|       let action = "/auth/oauth/token" | ||||
|       if (params?.action) { | ||||
|         action = params?.action | ||||
|         delete params?.action | ||||
|       } | ||||
|       const password = utils.$encryption(params) | ||||
|       return http.post(action, null, { | ||||
|         auth: { | ||||
|           username: 'villcloud', | ||||
|           password: "villcloud" | ||||
|         }, | ||||
|         params: {grant_type: 'password', scope: 'server', ...params, password} | ||||
|       }).then(res => { | ||||
|         if (res?.access_token) { | ||||
|           const {token_type, access_token} = res, token = [token_type, access_token].join(" ") | ||||
|           return commit('setToken', token) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     getUserInfo({commit, dispatch}) { | ||||
|       return http.post("/admin/user/detail-phone").then(res => { | ||||
|         if (res?.data) { | ||||
|           commit("setUserInfo", res.data) | ||||
|           return Promise.all([dispatch('getWorkflowConfigs')]).then(() => res.data) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     getRouteName({state}, appName) { | ||||
|       return state.routes.find(e => e.component == appName)?.route || appName | ||||
|     } | ||||
|   } | ||||
| } | ||||
| /** | ||||
|  * 企微jssdk功能 | ||||
|  */ | ||||
| let timer = {injectJWeixin: null, initOpenData: null} | ||||
| export const wxwork = { | ||||
|   state: () => ({ | ||||
|     agentSignURL: "", | ||||
|     apiList: [], | ||||
|     config: {} | ||||
|   }), | ||||
|   mutations: { | ||||
|     setConfig(state, config) { | ||||
|       state.config = config | ||||
|     }, | ||||
|     setAgentSignURL(state, url) { | ||||
|       state.agentSignURL = url | ||||
|     }, | ||||
|     setApiList(state, list) { | ||||
|       state.apiList = list | ||||
|     }, | ||||
|   }, | ||||
|   actions: { | ||||
|     agentSign({state, commit, rootState}, params) { | ||||
|       //授权jssdk在url上使用,并获取corpId | ||||
|       let url = window.location.href | ||||
|       if (state.agentSignURL == url && state.config.corpId) { | ||||
|         return Promise.resolve() | ||||
|       } else { | ||||
|         commit("setAgentSignURL", url) | ||||
|         commit("setApiList", []) | ||||
|         let action = "/app/wxcptp/portal/agentSign" | ||||
|         if (!!params?.action) { | ||||
|           action = params.action | ||||
|           delete params.action | ||||
|         } | ||||
|         const {corpId} = rootState.user.info | ||||
|         return http.post(action, null, { | ||||
|           withoutToken: true, | ||||
|           params: {corpId, ...params, url} | ||||
|         }).then(res => { | ||||
|           if (res?.data) { | ||||
|             let config = { | ||||
|               ...params, | ||||
|               debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | ||||
|               beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题 | ||||
|               corpid: res.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 | ||||
|               agentid: res.data.agentId, // 必填,企业微信的应用id (e.g. 1000247) | ||||
|               timestamp: Number(res.data.timestamp), // 必填,生成签名的时间戳 | ||||
|               nonceStr: res.data.nonceStr, // 必填,生成签名的随机串 | ||||
|               signature: res.data.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法 | ||||
|               ...res.data | ||||
|             } | ||||
|             commit("setConfig", config) | ||||
|             return config | ||||
|           } | ||||
|         }).catch(err => { | ||||
|           commit("setAgentSignURL", "") | ||||
|           console.error(err) | ||||
|         }) | ||||
|       } | ||||
|     }, | ||||
|     injectJWeixin({state, commit}, apis) { | ||||
|       const inject = (jsApiList) => new Promise((resolve, reject) => { | ||||
|         jsApiList = jsApiList || [] | ||||
|         if (timer.injectJWeixin) {//节流设置,50ms内的多次请求合并到一处 | ||||
|           clearTimeout(timer.injectJWeixin) | ||||
|           jsApiList = [...new Set([...state.apiList, ...jsApiList])] | ||||
|           commit("setApiList", jsApiList) | ||||
|         } | ||||
|         timer.injectJWeixin = setTimeout(() => { | ||||
|           const sdk = wx?.agentConfig ? wx : jWeixin | ||||
|           sdk?.agentConfig({ | ||||
|             ...state.config, jsApiList, | ||||
|             success: res => resolve(res), | ||||
|             fail: err => { | ||||
|               console.error(err) | ||||
|               reject(err) | ||||
|             } | ||||
|           }) | ||||
|         }, 50) | ||||
|       }) | ||||
|       return inject(apis) | ||||
|     }, | ||||
|     initOpenData({dispatch, commit}, params = {}) { | ||||
|       const initWOD = (count = 0) => { | ||||
|         if (!!window?.WWOpenData) { | ||||
|           const canvas = params?.canvas | ||||
|           if (canvas) delete params.canvas | ||||
|           if (timer.initOpenData) { | ||||
|             clearTimeout(timer.initOpenData) | ||||
|           } | ||||
|           const init = () => canvas ? dispatch('initCanvas') : dispatch('bindElements') | ||||
|           timer.initOpenData = setTimeout(() => { | ||||
|             window?.WWOpenData?.checkSession({ | ||||
|               success: () => init(), | ||||
|               fail: () => { | ||||
|                 dispatch('agentSign', params).then(() => dispatch("injectJWeixin")).then(() => init()) | ||||
|               } | ||||
|             }) | ||||
|           }, 50) | ||||
|         } else if (count > 10) { | ||||
|           console.log("无法获取WWOpenData") | ||||
|         } else { | ||||
|           setTimeout(() => { | ||||
|             initWOD(++count) | ||||
|           }, 200) | ||||
|         } | ||||
|       } | ||||
|       dispatch('agentSign', params).then(() => dispatch("injectJWeixin")).then(() => initWOD()) | ||||
|     }, | ||||
|     bindElements() { | ||||
|       const nodes = document.querySelectorAll('.AiOpenData') | ||||
|       window.WWOpenData?.bindAll(nodes) | ||||
|     }, | ||||
|     initCanvas() { | ||||
|       window.WWOpenData?.initCanvas() | ||||
|     }, | ||||
|     transCanvas(store, items) { | ||||
|       return new Promise((resolve, reject) => { | ||||
|         window.WWOpenData?.prefetch({items}, (err, data) => { | ||||
|           err ? reject(err) : resolve(data) | ||||
|         }) | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| /** | ||||
|  * 各种前端方案记录选择 | ||||
|  */ | ||||
| export const logs = { | ||||
|   state: () => ({ | ||||
|     closeIntro: [] | ||||
|   }), | ||||
|   mutations: { | ||||
|     addCloseIntro(state, app) { | ||||
|       state.closeIntro.push(app) | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| /** | ||||
|  * 流程信息 | ||||
|  */ | ||||
| const startProcess = (form) => { | ||||
|   const {bid, app, flows = {}} = form | ||||
|   const process = flows[app] | ||||
|   if (!!process) { | ||||
|     const {id: pid, config} = process | ||||
|     let workflowConfig = JSON.parse(config || null), nowNodeId = [], startId | ||||
|     workflowConfig?.nodes?.map(e => { | ||||
|       if (e.type == "start") { | ||||
|         e.properties.isStart = true | ||||
|         e.properties.updateTime = utils.$moment().format("YYYY-MM-DD HH:mm:ss") | ||||
|         startId = e.id | ||||
|       } | ||||
|     }) | ||||
|     workflowConfig?.edges?.map(e => { | ||||
|       if (e.sourceNodeId == startId) { | ||||
|         nowNodeId.push(e.targetNodeId) | ||||
|       } | ||||
|     }) | ||||
|     nowNodeId = nowNodeId?.toString() | ||||
|     return !!nowNodeId && http.post("/app/appworkflowlog/addOrUpdate", {bid, pid, nowNodeId, workflowConfig: JSON.stringify(workflowConfig)}) | ||||
|   } | ||||
| } | ||||
| export const workflow = { | ||||
|   state: () => ({}), | ||||
|   mutations: { | ||||
|     setWfConfigs(state, configs) { | ||||
|       configs.map(e => { | ||||
|         Vue.set(state, e.app, e) | ||||
|       }) | ||||
|     } | ||||
|   }, | ||||
|   actions: { | ||||
|     getWorkflowConfigs({commit}) { | ||||
|       return http.post("/app/appworkflowmanage/list", null, { | ||||
|         params: {size: 999} | ||||
|       }).then(res => { | ||||
|         if (res?.data) { | ||||
|           return commit("setWfConfigs", res.data.records) | ||||
|         } | ||||
|       }).catch(() => 0) | ||||
|     }, | ||||
|     startFlow(context, form) { | ||||
|       startProcess(form) | ||||
|     }, | ||||
|     endFlow(context, form) { | ||||
|       let {workflowConfig = {}, nowNodeId} = form | ||||
|       workflowConfig?.nodes?.map(e => { | ||||
|         if (e.type == "end") { | ||||
|           e.properties.isFinished = true | ||||
|           e.properties.updateTime = utils.$moment().format("YYYY-MM-DD HH:mm:ss") | ||||
|           nowNodeId = "nowNodeId" | ||||
|         } | ||||
|       }) | ||||
|       return http.post("/app/appworkflowlog/addOrUpdate", {...form, nowNodeId, workflowConfig: JSON.stringify(workflowConfig)}) | ||||
|     } | ||||
|   }, | ||||
|   processAdapter(config) {//流程业务拦截器 | ||||
|     if (/addOrUpdate/.test(config.url)) { | ||||
|       let app = config.url.replace(/.+(app[^\\\/]+).+/g, '$1') | ||||
|       if (/appapplicationinfo/.test(app)) {//动态台账表单 | ||||
|         app = config.params?.appId | ||||
|       } else if (/appcontentinfo/.test(app)) {//内容发布 | ||||
|         app = config.data?.moduleId | ||||
|       } | ||||
|       config.workflow = app | ||||
|     } | ||||
|     return config | ||||
|   }, | ||||
|   startProcess | ||||
| } | ||||
							
								
								
									
										35
									
								
								ui/lib/js/moment.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ui/lib/js/moment.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| import moment from 'dayjs' | ||||
| import duration from 'dayjs/plugin/duration' | ||||
| import updateLocale from 'dayjs/plugin/updateLocale' | ||||
| import customParseFormat from 'dayjs/plugin/customParseFormat' | ||||
| import 'dayjs/locale/zh-cn' | ||||
|  | ||||
| moment.locale('zh-cn') | ||||
| moment.extend(updateLocale) | ||||
| moment.extend(customParseFormat) | ||||
| moment.extend(duration) | ||||
| moment.updateLocale('zh-cn', { | ||||
|   weekdays: "星期日|星期一|星期二|星期三|星期四|星期五|星期六".split("|"), | ||||
|   meridiem(hour) { | ||||
|     let word = "" | ||||
|     if (hour < 6) { | ||||
|       word = "凌晨" | ||||
|     } else if (hour < 9) { | ||||
|       word = "早上" | ||||
|     } else if (hour < 12) { | ||||
|       word = "上午" | ||||
|     } else if (hour < 14) { | ||||
|       word = "中午" | ||||
|     } else if (hour < 17) { | ||||
|       word = "下午" | ||||
|     } else if (hour < 19) { | ||||
|       word = "傍晚" | ||||
|     } else if (hour < 22) { | ||||
|       word = "晚上" | ||||
|     } else { | ||||
|       word = "夜里" | ||||
|     } | ||||
|     return word; | ||||
|   } | ||||
| }) | ||||
| export default moment | ||||
							
								
								
									
										15
									
								
								ui/lib/js/regular.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								ui/lib/js/regular.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| export default { | ||||
|   phone: /^((0\d{2,3}-\d{7,8})|((13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}))$/, | ||||
|   password: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*,.?_-])[\da-zA-Z~!@#$%^&*,.?_-]{8,16}$/, | ||||
|   money: /^([1-9]\d*|0)(\.\d{1,2})?$/, | ||||
|   area: { | ||||
|     village: /^\d{9}[^0]0{0,2}$/, | ||||
|     town: /^\d{6}[^0]0{0,2}000$/, | ||||
|     country: /^\d{4}[^0]0?0{6}$/, | ||||
|     city: /^\d{2}[^0]0?0{8}$/, | ||||
|     province: /^[^0]0?0{10}$/, | ||||
|   }, | ||||
|   zh: /^[\u4e00-\u9fa5]+$/, | ||||
|   email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, | ||||
|   ip: /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/ | ||||
| } | ||||
							
								
								
									
										83
									
								
								ui/lib/js/request.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ui/lib/js/request.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| /* eslint-disable */ | ||||
| import axios from 'axios' | ||||
| import {Message} from "element-ui"; | ||||
| import {workflow} from "./modules"; | ||||
|  | ||||
| const instance = axios.create({ | ||||
|   baseURL: process.env.NODE_ENV === "production" ? "/" : "/lan", | ||||
|   timeout: 600000, | ||||
|   withCredentials: true, | ||||
| }) | ||||
|  | ||||
| const getStore = () => JSON.parse(localStorage.getItem("vuex") || null) || {} | ||||
|  | ||||
| const getToken = () => getStore().user?.token | ||||
| /** | ||||
|  * 节流工具 | ||||
|  */ | ||||
| let throttleMap = {} | ||||
| const source = axios.CancelToken.source(); | ||||
| instance.interceptors.request.use(config => { | ||||
|   if (config.throttle) {// 节流处理 | ||||
|     let timer = throttleMap[config.url] | ||||
|     if (!!timer) { | ||||
|       config.cancelToken = source.token | ||||
|       source.cancel("节流控制,取消请求:" + config.url) | ||||
|     } | ||||
|     throttleMap[config.url] = setTimeout(() => { | ||||
|       throttleMap[config.url] = null | ||||
|     }, config.throttle) | ||||
|   } | ||||
|   if (!config.withoutToken && getToken()) { | ||||
|     config.headers["Authorization"] = getToken() | ||||
|   } | ||||
|   //BUG 9456 去除传参空格 | ||||
|   if (config.params) { | ||||
|     Object.keys(config.params).map(e => { | ||||
|       if (typeof config.params[e] == "string") config.params[e] = config.params[e].trim() | ||||
|     }) | ||||
|   } | ||||
|   config = workflow.processAdapter(config) | ||||
|   return config | ||||
| }, err => { | ||||
|   console.error(err) | ||||
| }) | ||||
| instance.interceptors.response.use(res => { | ||||
|   if (res && !!res.config.workflow) { | ||||
|     const {config: {workflow: app}, data: {data: bid}} = res | ||||
|     bid && workflow.startProcess({app, bid, flows: getStore().workflow}) | ||||
|   } | ||||
|   if (res && res.data) { | ||||
|     if (!!res.data.code?.toString()) { | ||||
|       if (res.data.code == 0) { | ||||
|         return res.data | ||||
|       } else if (!!res.config.pureBack) { | ||||
|         return res.data | ||||
|       } else if (res.data.code == 401) { | ||||
|         console.error("安全令牌验证无法通过!") | ||||
|         return Promise.reject(res.data) | ||||
|       } else { | ||||
|         Message.error(res.data.msg || "请求失败!") | ||||
|         return !!res.config.returnError ? res.data : Promise.reject(res.data.msg) | ||||
|       } | ||||
|     } else return res.data | ||||
|   } else { | ||||
|     Message.error("服务器异常,请联系管理员!") | ||||
|   } | ||||
| }, err => { | ||||
|   if (err) { | ||||
|     if (err.response) { | ||||
|       if (err.response.status == 401) { | ||||
|         console.error("安全令牌验证无法通过!") | ||||
|       } else { | ||||
|         console.error(err.response.statusText) | ||||
|       } | ||||
|     } else { | ||||
|       console.error(err) | ||||
|     } | ||||
|   } else { | ||||
|     console.error("通信异常,请联系管理员!") | ||||
|   } | ||||
| }) | ||||
|  | ||||
| export default instance | ||||
							
								
								
									
										215
									
								
								ui/lib/js/utils.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								ui/lib/js/utils.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,215 @@ | ||||
| import {MessageBox} from 'element-ui' | ||||
| import $moment from './moment' | ||||
| import $dict from './dict' | ||||
| import $encryption from './encryption' | ||||
| import $coin from './coin' | ||||
| import Area from "./area" | ||||
| import ID from "./identity" | ||||
| import $reg from "./regular" | ||||
|  | ||||
| /** | ||||
|  * 生成子节点的递归方法 | ||||
|  * @param parent 父元素 | ||||
|  * @param pending 待递归的数组 | ||||
|  * @param config 配置 | ||||
|  */ | ||||
| const addChild = (parent, pending, config) => { | ||||
|   let conf = { | ||||
|         key: 'id', | ||||
|         parent: 'parentId', | ||||
|         children: 'children', | ||||
|         ...config | ||||
|       }, | ||||
|       doBeforeCount = pending.length | ||||
|   for (let i = pending.length - 1; i >= 0; i--) { | ||||
|     let e = pending[i] | ||||
|     if (e[conf.parent] == parent[conf.key]) { | ||||
|       parent[conf.children] = [...(parent[conf.children] || []), e] | ||||
|       pending.splice(i, 1) | ||||
|     } | ||||
|   } | ||||
|   parent[conf.children] && | ||||
|   (parent[conf.children] = parent[conf.children].reverse()) | ||||
|   if (pending.length > 0 && doBeforeCount > pending.length) { | ||||
|     parent[conf.children].map(c => addChild(c, pending, conf)) | ||||
|   } | ||||
| } | ||||
| /** | ||||
|  * 数组转tree | ||||
|  * @param list 待转化的数组 | ||||
|  * @param config 配置 | ||||
|  */ | ||||
| const $arr2tree = (list, config = {}) => { | ||||
|   const {key = 'id', parent = 'parentId', children = 'children'} = config, result = [], itemMap = {}, ids = list?.map(e => `${e[key]}`)?.toString() | ||||
|   for (const e of list) { | ||||
|     const id = e[key], pid = e[parent] | ||||
|     itemMap[id] = {...e, [children]: [itemMap[id]?.[children]].flat().filter(Boolean)} | ||||
|     const treeItem = itemMap[id] | ||||
|     if (!!pid && ids.indexOf(pid) > -1) { | ||||
|       if (!itemMap[pid]) { | ||||
|         itemMap[pid] = { | ||||
|           children: [], | ||||
|         } | ||||
|       } | ||||
|       itemMap[pid].children.push(treeItem) | ||||
|     } else result.push(treeItem) | ||||
|   } | ||||
|   return result | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * 封装提示框 | ||||
|  */ | ||||
| const $confirm = (content, options) => { | ||||
|   return MessageBox.confirm(content, { | ||||
|     type: 'warning', | ||||
|     confirmButtonText: '确认', | ||||
|     center: true, | ||||
|     title: '提示', | ||||
|     dangerouslyUseHTMLString: true, | ||||
|     customClass: "AiConfirm", | ||||
|     ...options | ||||
|   }).catch(() => 0) | ||||
| } | ||||
|  | ||||
|  | ||||
| const $decimalCalc = (...arr) => { | ||||
|   // 确认提升精度 | ||||
|   let decimalLengthes = arr.map(e => { | ||||
|     let index = ('' + e).indexOf('.') | ||||
|     return ('' + e).length - index | ||||
|   }) | ||||
|   let maxDecimal = Math.max(...decimalLengthes), | ||||
|       precision = Math.pow(10, maxDecimal) | ||||
|   // 计算 | ||||
|   let intArr = arr.map(e => (Number(e) || 0) * precision) | ||||
|   // 返回计算值 | ||||
|   return intArr.reduce((t, a) => t + a) / precision | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * 封装权限判断方法 | ||||
|  */ | ||||
| const $permissions = flag => { | ||||
|   let buttons = [] | ||||
|   if (localStorage.getItem('vuex')) { | ||||
|     const vuex = JSON.parse(localStorage.getItem('vuex')) | ||||
|     buttons = vuex.user.info.buttons | ||||
|   } | ||||
|   if (buttons && buttons.length > 0) { | ||||
|     return buttons.some(b => b.id == flag || b.permission == flag) | ||||
|   } else return false | ||||
| } | ||||
|  | ||||
| const $colorUtils = { | ||||
|   Hex2RGBA(color, alpha = 1) { | ||||
|     let hex = 0 | ||||
|     if (color.charAt(0) == '#') { | ||||
|       if (color.length == 4) { | ||||
|         // 检测诸如#FFF简写格式 | ||||
|         color = | ||||
|             '#' + | ||||
|             color.charAt(1).repeat(2) + | ||||
|             color.charAt(2).repeat(2) + | ||||
|             color.charAt(3).repeat(2) | ||||
|       } | ||||
|       hex = parseInt(color.slice(1), 16) | ||||
|     } | ||||
|     let r = (hex >> 16) & 0xff | ||||
|     let g = (hex >> 8) & 0xff | ||||
|     let b = hex & 0xff | ||||
|     return `rgba(${r},${g},${b},${alpha})` | ||||
|   }, | ||||
|   RGBtoHex(r, g, b) { | ||||
|     let hex = (r << 16) | (g << 8) | b | ||||
|     return '#' + hex.toString(16) | ||||
|   } | ||||
| } | ||||
| export const $copy = any => { | ||||
|   if (any) { | ||||
|     return JSON.parse(JSON.stringify(any)) | ||||
|   } else return any | ||||
| } | ||||
| let debounceWait = null | ||||
| export const $debounce = (fn, wait) => { | ||||
|   if (debounceWait !== null) clearTimeout(debounceWait); | ||||
|   debounceWait = setTimeout(function () { | ||||
|     typeof fn === 'function' && fn(); | ||||
|   }, wait); | ||||
| } | ||||
| export const $checkJson = str => { | ||||
|   if (typeof str == 'string') { | ||||
|     try { | ||||
|       let obj = JSON.parse(str); | ||||
|       return !!(typeof obj == 'object' && obj); | ||||
|     } catch (e) { | ||||
|       return false; | ||||
|     } | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
| const $load = (sdk, interval = 200, name = "", c = 0) => { | ||||
|   if (!!sdk) { | ||||
|     return Promise.resolve() | ||||
|   } else if (c < 10) { | ||||
|     return new Promise(resolve => setTimeout(() => resolve($load(sdk, interval, name, ++c)), interval)) | ||||
|   } else return Promise.reject("无法加载" + name) | ||||
| } | ||||
|  | ||||
| export {Area, ID} | ||||
|  | ||||
| export default { | ||||
|   addChild, | ||||
|   $confirm, | ||||
|   $decimalCalc, | ||||
|   $dict, | ||||
|   $permissions, | ||||
|   $colorUtils, | ||||
|   $moment, | ||||
|   $encryption, | ||||
|   $coin, | ||||
|   $injectLib: (url, cb = () => 0) => { | ||||
|     const scriptList = document.body.querySelectorAll('script') | ||||
|     if (Object.values(scriptList || {}).findIndex(e => e.src == url) == -1) { | ||||
|       const script = document.createElement('script') | ||||
|       script.type = 'text/javascript' | ||||
|       script.src = url | ||||
|       script.addEventListener('load', () => cb()) | ||||
|       document.body.appendChild(script) | ||||
|     } else cb() | ||||
|   }, | ||||
|   $injectCss: (url, cb = () => 0) => { | ||||
|     const linkList = document.body.querySelectorAll('link') | ||||
|     if (Object.values(linkList || {}).findIndex(e => e.href == url) == -1) { | ||||
|       const link = document.createElement('link') | ||||
|       link.rel = "stylesheet" | ||||
|       link.type = "text/css" | ||||
|       link.href = url | ||||
|       link.addEventListener('load', () => cb()) | ||||
|       document.head.appendChild(link) | ||||
|     } else cb() | ||||
|   }, | ||||
|   $dateFormat: (time, format) => { | ||||
|     return $moment(time) | ||||
|     .format(format || 'YYYY-MM-DD') | ||||
|     .replace('Invalid Date', '') | ||||
|   }, | ||||
|   $copy, | ||||
|   $download: url => { | ||||
|     fetch(url).then(res => res.blob()).then(blob => { | ||||
|       const link = document.createElement('a') | ||||
|       link.style.display = 'none' | ||||
|       link.href = URL.createObjectURL(blob) | ||||
|       document.body.appendChild(link) | ||||
|       link.click() | ||||
|       document.body.removeChild(link) | ||||
|     }) | ||||
|   }, | ||||
|   $debounce, | ||||
|   $checkJson, | ||||
|   $arr2tree, | ||||
|   $load, | ||||
|   $reg, | ||||
|   Area, | ||||
|   ID | ||||
| } | ||||
							
								
								
									
										522
									
								
								ui/lib/styles/ckeditor.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										522
									
								
								ui/lib/styles/ckeditor.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,522 @@ | ||||
| /* | ||||
|  * CKEditor 5 (v34.2.0) content styles. | ||||
|  * Generated on Fri, 29 Jul 2022 13:03:52 GMT. | ||||
|  * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/content-styles.html | ||||
|  */ | ||||
|  | ||||
| :root { | ||||
|   --ck-color-base-active: hsl(208, 88%, 52%); | ||||
|   --ck-color-image-caption-background: hsl(0, 0%, 97%); | ||||
|   --ck-color-image-caption-text: hsl(0, 0%, 20%); | ||||
|   --ck-color-mention-background: hsla(341, 100%, 30%, 0.1); | ||||
|   --ck-color-mention-text: hsl(341, 100%, 30%); | ||||
|   --ck-color-table-caption-background: hsl(0, 0%, 97%); | ||||
|   --ck-color-table-caption-text: hsl(0, 0%, 20%); | ||||
|   --ck-color-table-column-resizer-hover: var(--ck-color-base-active); | ||||
|   --ck-highlight-marker-blue: hsl(201, 97%, 72%); | ||||
|   --ck-highlight-marker-green: hsl(120, 93%, 68%); | ||||
|   --ck-highlight-marker-pink: hsl(345, 96%, 73%); | ||||
|   --ck-highlight-marker-yellow: hsl(60, 97%, 73%); | ||||
|   --ck-highlight-pen-green: hsl(112, 100%, 27%); | ||||
|   --ck-highlight-pen-red: hsl(0, 85%, 49%); | ||||
|   --ck-image-style-spacing: 1.5em; | ||||
|   --ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2); | ||||
|   --ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px); | ||||
|   --ck-table-column-resizer-width: 7px; | ||||
|   --ck-todo-list-checkmark-size: 16px; | ||||
|   --ck-z-default: 1; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-block-quote/theme/blockquote.css */ | ||||
| .ck-content blockquote { | ||||
|   overflow: hidden; | ||||
|   padding-right: 1.5em; | ||||
|   padding-left: 1.5em; | ||||
|   margin-left: 0; | ||||
|   margin-right: 0; | ||||
|   font-style: italic; | ||||
|   border-left: solid 5px hsl(0, 0%, 80%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-block-quote/theme/blockquote.css */ | ||||
| .ck-content[dir="rtl"] blockquote { | ||||
|   border-left: 0; | ||||
|   border-right: solid 5px hsl(0, 0%, 80%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-basic-styles/theme/code.css */ | ||||
| .ck-content code { | ||||
|   background-color: hsla(0, 0%, 78%, 0.3); | ||||
|   padding: .15em; | ||||
|   border-radius: 2px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-font/theme/fontsize.css */ | ||||
| .ck-content .text-tiny { | ||||
|   font-size: .7em; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-font/theme/fontsize.css */ | ||||
| .ck-content .text-small { | ||||
|   font-size: .85em; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-font/theme/fontsize.css */ | ||||
| .ck-content .text-big { | ||||
|   font-size: 1.4em; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-font/theme/fontsize.css */ | ||||
| .ck-content .text-huge { | ||||
|   font-size: 1.8em; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .marker-yellow { | ||||
|   background-color: var(--ck-highlight-marker-yellow); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .marker-green { | ||||
|   background-color: var(--ck-highlight-marker-green); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .marker-pink { | ||||
|   background-color: var(--ck-highlight-marker-pink); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .marker-blue { | ||||
|   background-color: var(--ck-highlight-marker-blue); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .pen-red { | ||||
|   color: var(--ck-highlight-pen-red); | ||||
|   background-color: transparent; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-highlight/theme/highlight.css */ | ||||
| .ck-content .pen-green { | ||||
|   color: var(--ck-highlight-pen-green); | ||||
|   background-color: transparent; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/image.css */ | ||||
| .ck-content .image { | ||||
|   display: table; | ||||
|   clear: both; | ||||
|   text-align: center; | ||||
|   margin: 0.9em auto; | ||||
|   min-width: 50px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/image.css */ | ||||
| .ck-content .image img { | ||||
|   display: block; | ||||
|   margin: 0 auto; | ||||
|   max-width: 100%; | ||||
|   min-width: 100%; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/image.css */ | ||||
| .ck-content .image-inline { | ||||
|   /* | ||||
|    * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).; | ||||
|    * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root. | ||||
|    * This strange behavior does not happen with inline-flex. | ||||
|    */ | ||||
|   display: inline-flex; | ||||
|   max-width: 100%; | ||||
|   align-items: flex-start; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/image.css */ | ||||
| .ck-content .image-inline picture { | ||||
|   display: flex; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/image.css */ | ||||
| .ck-content .image-inline picture, | ||||
| .ck-content .image-inline img { | ||||
|   flex-grow: 1; | ||||
|   flex-shrink: 1; | ||||
|   max-width: 100%; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-block-align-left, | ||||
| .ck-content .image-style-block-align-right { | ||||
|   max-width: calc(100% - var(--ck-image-style-spacing)); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-align-left, | ||||
| .ck-content .image-style-align-right { | ||||
|   clear: none; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-side { | ||||
|   float: right; | ||||
|   margin-left: var(--ck-image-style-spacing); | ||||
|   max-width: 50%; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-align-left { | ||||
|   float: left; | ||||
|   margin-right: var(--ck-image-style-spacing); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-align-center { | ||||
|   margin-left: auto; | ||||
|   margin-right: auto; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-align-right { | ||||
|   float: right; | ||||
|   margin-left: var(--ck-image-style-spacing); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-block-align-right { | ||||
|   margin-right: 0; | ||||
|   margin-left: auto; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-style-block-align-left { | ||||
|   margin-left: 0; | ||||
|   margin-right: auto; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content p + .image-style-align-left, | ||||
| .ck-content p + .image-style-align-right, | ||||
| .ck-content p + .image-style-side { | ||||
|   margin-top: 0; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-inline.image-style-align-left, | ||||
| .ck-content .image-inline.image-style-align-right { | ||||
|   margin-top: var(--ck-inline-image-style-spacing); | ||||
|   margin-bottom: var(--ck-inline-image-style-spacing); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-inline.image-style-align-left { | ||||
|   margin-right: var(--ck-inline-image-style-spacing); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagestyle.css */ | ||||
| .ck-content .image-inline.image-style-align-right { | ||||
|   margin-left: var(--ck-inline-image-style-spacing); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imagecaption.css */ | ||||
| .ck-content .image > figcaption { | ||||
|   display: table-caption; | ||||
|   caption-side: bottom; | ||||
|   word-break: break-word; | ||||
|   color: var(--ck-color-image-caption-text); | ||||
|   background-color: var(--ck-color-image-caption-background); | ||||
|   padding: .6em; | ||||
|   font-size: .75em; | ||||
|   outline-offset: -1px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imageresize.css */ | ||||
| .ck-content .image.image_resized { | ||||
|   max-width: 100%; | ||||
|   display: block; | ||||
|   box-sizing: border-box; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imageresize.css */ | ||||
| .ck-content .image.image_resized img { | ||||
|   width: 100%; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-image/theme/imageresize.css */ | ||||
| .ck-content .image.image_resized > figcaption { | ||||
|   display: block; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-language/theme/language.css */ | ||||
| .ck-content span[lang] { | ||||
|   font-style: italic; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list { | ||||
|   list-style: none; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list li { | ||||
|   margin-bottom: 5px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list li .todo-list { | ||||
|   margin-top: 5px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label > input { | ||||
|   -webkit-appearance: none; | ||||
|   display: inline-block; | ||||
|   position: relative; | ||||
|   width: var(--ck-todo-list-checkmark-size); | ||||
|   height: var(--ck-todo-list-checkmark-size); | ||||
|   vertical-align: middle; | ||||
|   border: 0; | ||||
|   left: -25px; | ||||
|   margin-right: -15px; | ||||
|   right: 0; | ||||
|   margin-left: 0; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label > input::before { | ||||
|   display: block; | ||||
|   position: absolute; | ||||
|   box-sizing: border-box; | ||||
|   content: ''; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   border: 1px solid hsl(0, 0%, 20%); | ||||
|   border-radius: 2px; | ||||
|   transition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label > input::after { | ||||
|   display: block; | ||||
|   position: absolute; | ||||
|   box-sizing: content-box; | ||||
|   pointer-events: none; | ||||
|   content: ''; | ||||
|   left: calc(var(--ck-todo-list-checkmark-size) / 3); | ||||
|   top: calc(var(--ck-todo-list-checkmark-size) / 5.3); | ||||
|   width: calc(var(--ck-todo-list-checkmark-size) / 5.3); | ||||
|   height: calc(var(--ck-todo-list-checkmark-size) / 2.6); | ||||
|   border-style: solid; | ||||
|   border-color: transparent; | ||||
|   border-width: 0 calc(var(--ck-todo-list-checkmark-size) / 8) calc(var(--ck-todo-list-checkmark-size) / 8) 0; | ||||
|   transform: rotate(45deg); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label > input[checked]::before { | ||||
|   background: hsl(126, 64%, 41%); | ||||
|   border-color: hsl(126, 64%, 41%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label > input[checked]::after { | ||||
|   border-color: hsl(0, 0%, 100%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-list/theme/todolist.css */ | ||||
| .ck-content .todo-list .todo-list__label .todo-list__label__description { | ||||
|   vertical-align: middle; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-media-embed/theme/mediaembed.css */ | ||||
| .ck-content .media { | ||||
|   clear: both; | ||||
|   margin: 0.9em 0; | ||||
|   display: block; | ||||
|   min-width: 15em; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-page-break/theme/pagebreak.css */ | ||||
| .ck-content .page-break { | ||||
|   position: relative; | ||||
|   clear: both; | ||||
|   padding: 5px 0; | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   justify-content: center; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-page-break/theme/pagebreak.css */ | ||||
| .ck-content .page-break::after { | ||||
|   content: ''; | ||||
|   position: absolute; | ||||
|   border-bottom: 2px dashed hsl(0, 0%, 77%); | ||||
|   width: 100%; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-page-break/theme/pagebreak.css */ | ||||
| .ck-content .page-break__label { | ||||
|   position: relative; | ||||
|   z-index: 1; | ||||
|   padding: .3em .6em; | ||||
|   display: block; | ||||
|   text-transform: uppercase; | ||||
|   border: 1px solid hsl(0, 0%, 77%); | ||||
|   border-radius: 2px; | ||||
|   font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif; | ||||
|   font-size: 0.75em; | ||||
|   font-weight: bold; | ||||
|   color: hsl(0, 0%, 20%); | ||||
|   background: hsl(0, 0%, 100%); | ||||
|   box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15); | ||||
|   -webkit-user-select: none; | ||||
|   -moz-user-select: none; | ||||
|   -ms-user-select: none; | ||||
|   user-select: none; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecaption.css */ | ||||
| .ck-content .table > figcaption { | ||||
|   display: table-caption; | ||||
|   caption-side: top; | ||||
|   word-break: break-word; | ||||
|   text-align: center; | ||||
|   color: var(--ck-color-table-caption-text); | ||||
|   background-color: var(--ck-color-table-caption-background); | ||||
|   padding: .6em; | ||||
|   font-size: .75em; | ||||
|   outline-offset: -1px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content .table { | ||||
|   margin: 0.9em auto; | ||||
|   display: table; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content .table table { | ||||
|   border-collapse: collapse; | ||||
|   border-spacing: 0; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   border: 1px double hsl(0, 0%, 70%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content .table table td, | ||||
| .ck-content .table table th { | ||||
|   min-width: 2em; | ||||
|   padding: .4em; | ||||
|   border: 1px solid hsl(0, 0%, 75%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content .table table th { | ||||
|   font-weight: bold; | ||||
|   background: hsla(0, 0%, 0%, 5%); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content[dir="rtl"] .table th { | ||||
|   text-align: right; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/table.css */ | ||||
| .ck-content[dir="ltr"] .table th { | ||||
|   text-align: left; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content .table table { | ||||
|   overflow: hidden; | ||||
|   table-layout: fixed; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content .table td, | ||||
| .ck-content .table th { | ||||
|   position: relative; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content .table .table-column-resizer { | ||||
|   position: absolute; | ||||
|   top: -999999px; | ||||
|   bottom: -999999px; | ||||
|   right: var(--ck-table-column-resizer-position-offset); | ||||
|   width: var(--ck-table-column-resizer-width); | ||||
|   cursor: col-resize; | ||||
|   user-select: none; | ||||
|   z-index: var(--ck-z-default); | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content .table[draggable] .table-column-resizer { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content .table .table-column-resizer:hover, | ||||
| .ck-content .table .table-column-resizer__active { | ||||
|   background-color: var(--ck-color-table-column-resizer-hover); | ||||
|   opacity: 0.25; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content[dir=rtl] .table .table-column-resizer { | ||||
|   left: var(--ck-table-column-resizer-position-offset); | ||||
|   right: unset; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-table/theme/tablecolumnresize.css */ | ||||
| .ck-content.ck-read-only .table .table-column-resizer { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-code-block/theme/codeblock.css */ | ||||
| .ck-content pre { | ||||
|   padding: 1em; | ||||
|   color: hsl(0, 0%, 20.8%); | ||||
|   background: hsla(0, 0%, 78%, 0.3); | ||||
|   border: 1px solid hsl(0, 0%, 77%); | ||||
|   border-radius: 2px; | ||||
|   text-align: left; | ||||
|   direction: ltr; | ||||
|   tab-size: 4; | ||||
|   white-space: pre-wrap; | ||||
|   font-style: normal; | ||||
|   min-width: 200px; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-code-block/theme/codeblock.css */ | ||||
| .ck-content pre code { | ||||
|   background: unset; | ||||
|   padding: 0; | ||||
|   border-radius: 0; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-horizontal-line/theme/horizontalline.css */ | ||||
| .ck-content hr { | ||||
|   margin: 15px 0; | ||||
|   height: 4px; | ||||
|   background: hsl(0, 0%, 87%); | ||||
|   border: 0; | ||||
| } | ||||
|  | ||||
| /* ckeditor5-mention/theme/mention.css */ | ||||
| .ck-content .mention { | ||||
|   background: var(--ck-color-mention-background); | ||||
|   color: var(--ck-color-mention-text); | ||||
| } | ||||
|  | ||||
| @media print { | ||||
|   /* ckeditor5-page-break/theme/pagebreak.css */ | ||||
|   .ck-content .page-break { | ||||
|     padding: 0; | ||||
|   } | ||||
|   /* ckeditor5-page-break/theme/pagebreak.css */ | ||||
|   .ck-content .page-break::after { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										673
									
								
								ui/lib/styles/common.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										673
									
								
								ui/lib/styles/common.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,673 @@ | ||||
| @import "iconfont/iconfont"; | ||||
| @import 'iconfont/logofont'; | ||||
| @import "ckeditor"; | ||||
| @import "vars"; | ||||
|  | ||||
| $cdn: "https://cdn.cunwuyun.cn/"; | ||||
| $--color-primary: $primaryColor; | ||||
| $--color-text-placeholder: $placeholderColor; | ||||
| $--border-color-base: $borderColor; | ||||
| $--color-success: $successColor; | ||||
| $--color-warning: $warnColor; | ||||
| $--color-danger: $errorColor; | ||||
| $--color-info: $infoColor; | ||||
| $--font-path: '~element-ui/lib/theme-chalk/fonts'; | ||||
| @import "~element-ui/packages/theme-chalk/src/index"; | ||||
|  | ||||
| /** | ||||
| 常用内外边距样式 | ||||
|  */ | ||||
| @each $padMar, $pm in (mar:margin, pad:padding) { | ||||
|   @each $pos, $p in (l:left, r:right, t:top, b:bottom) { | ||||
|     @each $v in (8, 10, 16, 20, 32, 48, 60) { | ||||
|       .#{$padMar}-#{$pos+$v} { | ||||
|         #{$pm}-#{$p}: #{$v}px | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   不换行文本 | ||||
|  */ | ||||
| .nowarp-text { | ||||
|   white-space: nowrap; | ||||
|   overflow: hidden; | ||||
|   text-overflow: ellipsis; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   表头式样 | ||||
|  */ | ||||
| .table-header { | ||||
|   background-color: rgba(243, 246, 249, 1) !important; | ||||
|   color: #333; | ||||
|   line-height: 44px; | ||||
|   font-size: 14px; | ||||
|   font-weight: bold; | ||||
|   padding: 0 !important; | ||||
|   border-bottom: none !important; | ||||
| } | ||||
|  | ||||
| * { | ||||
|   box-sizing: border-box; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   表行样式 | ||||
|  */ | ||||
| .table-row { | ||||
|   height: 44px; | ||||
|  | ||||
|   &:hover, &:hover td.table-cell { | ||||
|     background-color: #EFF6FF !important; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   表格样式 | ||||
|  */ | ||||
| .table-cell { | ||||
|   font-size: 14px; | ||||
|   padding: 0 !important; | ||||
|  | ||||
|   .cell { | ||||
|     line-height: 15px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   图标统一样式 | ||||
|  */ | ||||
| .iconfont { | ||||
|   font-size: 14px; | ||||
| } | ||||
|  | ||||
| .iconShow:hover, .iconEdit:hover, .iconParent:hover, .iconChange:hover { | ||||
|   color: $primaryColor; | ||||
| } | ||||
|  | ||||
| .iconDelete:hover { | ||||
|   color: $errorColor; | ||||
| } | ||||
|  | ||||
| .iconBack_Large { | ||||
|   width: 16px; | ||||
|   height: 16px; | ||||
|   color: $primaryColor; | ||||
|   cursor: pointer; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   缺省页相关样式 | ||||
|  */ | ||||
| .no-data { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/NoData.svg") no-repeat center; | ||||
|   background-size: 120px 120px; | ||||
|   height: 120px; | ||||
|   margin: 48px auto 10px; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   缺省页相关样式 | ||||
|  */ | ||||
| .ai-empty__bg { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/empty.svg") no-repeat center; | ||||
|   background-size: 120px 120px; | ||||
|   height: 120px; | ||||
|   margin: 48px auto 0; | ||||
| } | ||||
|  | ||||
| .no-permission { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/NoAuthority.svg") no-repeat center; | ||||
|   background-size: 120px 120px; | ||||
|   height: 120px; | ||||
|   margin-top: 48px; | ||||
| } | ||||
|  | ||||
| .no-message { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/NoMessage.svg") no-repeat center; | ||||
|   background-size: 120px 120px; | ||||
|   height: 120px; | ||||
|   margin-top: 48px; | ||||
| } | ||||
|  | ||||
| .done-success { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/Success.svg") no-repeat center; | ||||
|   background-size: 120px 120px; | ||||
|   height: 120px; | ||||
| } | ||||
|  | ||||
| .no-div-text { | ||||
|   text-align: center; | ||||
|   font-size: 14px; | ||||
|   color: #666 | ||||
| } | ||||
|  | ||||
| .developing { | ||||
|   background: url("https://cdn.cunwuyun.cn/ui/svg/developing.svg") no-repeat center; | ||||
|   background-size: 400px 320px; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   display: flex; | ||||
|   justify-content: center; | ||||
|   align-items: center; | ||||
|  | ||||
|   &:after { | ||||
|     margin-top: 270px; | ||||
|     font-size: 14px; | ||||
|     color: $primaryColor; | ||||
|     display: block; | ||||
|     content: "功能正在开发中..." | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   placeholder 样式 | ||||
|  */ | ||||
| input::-webkit-input-placeholder { | ||||
|   color: #ccc; | ||||
| } | ||||
|  | ||||
| input::-moz-placeholder { | ||||
|   color: #ccc; | ||||
| } | ||||
|  | ||||
| input::-ms-input-placeholder { | ||||
|   color: #ccc; | ||||
| } | ||||
|  | ||||
| //切换地区Tab 样式 | ||||
| .area-popover { | ||||
|   right: 0; | ||||
| } | ||||
|  | ||||
| //弹窗树菜单的样式 | ||||
| .dialog-tree { | ||||
|   &.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { | ||||
|     background: rgba(239, 246, 255, 1); | ||||
|     border-radius: 2px; | ||||
|     font-weight: normal; | ||||
|     color: rgba(80, 136, 255, 1); | ||||
|   } | ||||
| } | ||||
|  | ||||
| //发起群聊的按钮样式 | ||||
| .openIM { | ||||
|   width: 26px; | ||||
|   height: 20px; | ||||
|   background: rgba(255, 255, 255, 1); | ||||
|   border-radius: 12px; | ||||
|   border: 1px solid rgba(208, 212, 220, 1); | ||||
|   box-sizing: border-box; | ||||
|   text-align: center; | ||||
|   cursor: pointer; | ||||
|  | ||||
|   &.iconGroup_IM { | ||||
|     color: #89B; | ||||
|     font-size: 16px; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|   } | ||||
|  | ||||
|   &:hover { | ||||
|     background: $primaryColor; | ||||
|     border-color: $primaryColor; | ||||
|  | ||||
|     &.iconGroup_IM { | ||||
|       color: #fff; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .fuzzy { | ||||
|   text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); | ||||
|   color: transparent !important; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   马赛克样式 | ||||
|  */ | ||||
| .mosaic { | ||||
|   position: relative; | ||||
|  | ||||
|   &:before { | ||||
|     content: ""; | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     height: 100%; | ||||
|     width: 100%; | ||||
|     background-position: 0 0, 10px 10px; | ||||
|     background-size: 20px 20px; | ||||
|     background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee 100%), linear-gradient(45deg, #eee 25%, white 25%, white 75%, #eee 75%, #eee 100%); | ||||
|     z-index: 202011051009; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
| 自定义弹性盒子快速用 | ||||
|  */ | ||||
| div[flex] { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|  | ||||
|   &.column { | ||||
|     flex-direction: column; | ||||
|   } | ||||
|  | ||||
|   &.wrap { | ||||
|     flex-wrap: wrap; | ||||
|   } | ||||
|  | ||||
|   &.gap { | ||||
|     gap: 20px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .fill { | ||||
|   flex: 1; | ||||
|   min-height: 0; | ||||
|   min-width: 0; | ||||
| } | ||||
|  | ||||
| .el-input { | ||||
|   input[type="number"] { | ||||
|     -moz-appearance: textfield; | ||||
|  | ||||
|     &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { | ||||
|       -webkit-appearance: none; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| // 2.0公共样式 | ||||
|  | ||||
| .ai-form { | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
|   flex-wrap: wrap; | ||||
|   width: 100%; | ||||
|  | ||||
|   .el-form-item { | ||||
|     width: 50%; | ||||
|     margin-bottom: 24px; | ||||
|  | ||||
|     .el-form-item__content { | ||||
|       margin-left: 134px !important; | ||||
|     } | ||||
|  | ||||
|     ::v-deep.el-form-item__content { | ||||
|       & .el-input--small, & > .el-range-editor--small, & > .el-cascader, & > .el-select { | ||||
|         width: 325px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .el-message-box { | ||||
|   width: 520px; | ||||
|   padding-bottom: 0; | ||||
|  | ||||
|   .el-message-box__header { | ||||
|     padding-left: 40px; | ||||
|   } | ||||
|  | ||||
|   .el-message-box__content { | ||||
|     padding-left: 77px; | ||||
|     padding-top: 4px; | ||||
|   } | ||||
|  | ||||
|   .el-message-box__title { | ||||
|     justify-content: start; | ||||
|     font-size: 14px; | ||||
|  | ||||
|     .el-icon-error:before { | ||||
|       content: "\e7a3"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .el-message-box__status { | ||||
|     padding-right: 12px; | ||||
|   } | ||||
|  | ||||
|   .el-message-box__message { | ||||
|     text-align: start; | ||||
|     font-size: 16px; | ||||
|     color: #333; | ||||
|     font-weight: bold; | ||||
|     min-height: 60px; | ||||
|   } | ||||
|  | ||||
|   .el-message-box__btns { | ||||
|     box-sizing: border-box; | ||||
|     text-align: center; | ||||
|     background-color: #F3F6F9; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     height: 64px; | ||||
|  | ||||
|     .el-button { | ||||
|       padding: 0 32px; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .table-options { | ||||
|   .el-button--text { | ||||
|     height: auto; | ||||
|     margin-right: 8px !important; | ||||
|     margin-left: 0 !important; | ||||
|     padding: 0; | ||||
|     border-radius: unset; | ||||
|  | ||||
|     &:last-child { | ||||
|       margin-right: 0 !important; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   span { | ||||
|     margin-right: 8px; | ||||
|     color: $primaryColor; | ||||
|     font-size: 14px; | ||||
|  | ||||
|     &:last-child { | ||||
|       margin-right: 0; | ||||
|     } | ||||
|  | ||||
|     &:hover { | ||||
|       opacity: 0.8; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .is-disabled span { | ||||
|     color: #999 !important; | ||||
|   } | ||||
| } | ||||
|  | ||||
| textarea { | ||||
|   font-family: inherit; | ||||
| } | ||||
|  | ||||
| .el-button--primary { | ||||
|   border: none; | ||||
|   background: $primaryBtnColor; | ||||
|  | ||||
|   &:hover { | ||||
|     opacity: 0.6; | ||||
|     background: $primaryBtnColor; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .el-button { | ||||
|   font-size: 14px; | ||||
|   border-radius: 2px; | ||||
|   height: 32px; | ||||
|   padding: 8px; | ||||
|   box-sizing: border-box; | ||||
|  | ||||
|   [class*=iconfont] { | ||||
|     font-size: 14px; | ||||
|  | ||||
|     & + span { | ||||
|       margin-left: 5px; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .el-button--text [class*=iconfont] { | ||||
|   color: inherit; | ||||
|   font-size: inherit; | ||||
| } | ||||
|  | ||||
| .wechat-message__container { | ||||
|   padding: 8px !important; | ||||
|   background: #F6F9FF !important; | ||||
|   border-radius: 2px !important; | ||||
|   color: #222222 !important; | ||||
|   font-size: 14px !important; | ||||
|   border: 1px solid $primaryColor !important; | ||||
|  | ||||
|   h2 { | ||||
|     color: #222222; | ||||
|     font-weight: 500; | ||||
|     font-size: 14px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| h1, h2, h3, p { | ||||
|   margin: 0; | ||||
| } | ||||
|  | ||||
| .el-tooltip__popper { | ||||
|   max-width: 600px; | ||||
|   word-break: break-all; | ||||
| } | ||||
|  | ||||
|  | ||||
| .ai-personselect .el-input__suffix .el-input__validateIcon { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .AiWechatSelecter-container .el-input__suffix .el-input__validateIcon { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .AiWechatSelecter-container .el-input__suffix .el-input__validateIcon { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .icon-color89B { | ||||
|   color: #89B; | ||||
| } | ||||
|  | ||||
| // flex 布局 | ||||
| .flex-between { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   justify-content: space-between; | ||||
| } | ||||
|  | ||||
| .flex-start { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
| } | ||||
|  | ||||
| .ailist-wrapper { | ||||
|   div, p, h2, h1, h3, h5, span { | ||||
|     box-sizing: border-box; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .mt10 { | ||||
|   margin-top: 10px; | ||||
| } | ||||
|  | ||||
| .ai-scan { | ||||
|   display: flex; | ||||
|   position: absolute; | ||||
|   top: -10px; | ||||
|   right: -14px; | ||||
|   cursor: pointer; | ||||
|  | ||||
|   .poptip-arrow { | ||||
|     position: relative; | ||||
|     height: 24px; | ||||
|     line-height: 24px; | ||||
|     margin-right: 8px; | ||||
|     margin-top: 4px; | ||||
|     padding: 0 10px; | ||||
|     color: $primaryColor; | ||||
|     font-size: 12px; | ||||
|     text-align: center; | ||||
|     background: $primaryLightColor; | ||||
|     border: 1px solid $primaryColor; | ||||
|  | ||||
|     em { | ||||
|       position: absolute; | ||||
|       width: 0; | ||||
|       height: 0; | ||||
|       border-color: hsla(0, 0%, 100%, 0); | ||||
|       border-style: solid; | ||||
|       overflow: hidden; | ||||
|       top: 50%; | ||||
|       right: -6px; | ||||
|       transform: translateY(-50%); | ||||
|       border-left-color: $primaryLightColor; | ||||
|       border-width: 6px 0 6px 6px; | ||||
|     } | ||||
|  | ||||
|     a { | ||||
|       position: absolute; | ||||
|       width: 0; | ||||
|       height: 0; | ||||
|       border-color: hsla(0, 0%, 100%, 0); | ||||
|       border-style: solid; | ||||
|       overflow: hidden; | ||||
|       top: 50%; | ||||
|       right: -7px; | ||||
|       transform: translateY(-50%); | ||||
|       border-left-color: $primaryColor; | ||||
|       border-width: 6px 0 6px 6px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   & > i { | ||||
|     padding: 0; | ||||
|     color: $primaryColor; | ||||
|     font-size: 48px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
| 背景图设置 | ||||
|  */ | ||||
|  | ||||
| .signLeftBg { | ||||
|   background-image: url('#{$cdn}/ui/background/#{$theme}/loginLeft.png'); | ||||
| } | ||||
|  | ||||
| .navBg { | ||||
|   background-image: url('#{$cdn}/ui/background/#{$theme}/nav_bg.png'); | ||||
| } | ||||
|  | ||||
| /** | ||||
| 特殊样式字体 | ||||
|  */ | ||||
| .projectName { | ||||
|   font-family: "Microsoft YaHei UI", "Microsoft YaHei", serif; | ||||
|   height: 56px; | ||||
|   line-height: 56px; | ||||
|   font-size: 42px; | ||||
|   font-weight: 800; | ||||
|   white-space: nowrap; | ||||
|   position: relative; | ||||
|   text-shadow: 0 6px 3px rgba(#222, .1); | ||||
|   color: transparent; | ||||
|  | ||||
|   &:after { | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     content: attr(title); | ||||
|     background: $projectName; | ||||
|     -webkit-background-clip: text; | ||||
|     -webkit-text-fill-color: transparent; | ||||
|     z-index: 99; | ||||
|   } | ||||
|  | ||||
|   &:before { | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     content: attr(title); | ||||
|     text-shadow: 3px 0 0 #fff, -3px 0 0 #fff, 0 -3px 0 #fff, 0 3px 0 #fff; | ||||
|     z-index: 66; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .textShadow { | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   text-shadow: 0 2px 0 $textShadow; | ||||
|   color: transparent; | ||||
|   z-index: -1; | ||||
| } | ||||
|  | ||||
| #ai-waiting { | ||||
|   color: $primaryColor | ||||
| } | ||||
|  | ||||
| .color-primary { | ||||
|   color: $primaryColor | ||||
| } | ||||
|  | ||||
| .hoverActive { | ||||
|   &:hover, &.current, &.isActive { | ||||
|     color: $primaryColor !important; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** 登录页左侧标题样式 **/ | ||||
| .signLeftContent { | ||||
|   .titlePane { | ||||
|     margin-top: 124px; | ||||
|     font-size: 20px; | ||||
|     margin-bottom: 64px; | ||||
|  | ||||
|     & > b { | ||||
|       display: block; | ||||
|       font-size: 40px; | ||||
|       margin-bottom: 16px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .subTitle { | ||||
|     margin-bottom: 16px; | ||||
|     opacity: 0.8; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 6px; | ||||
|  | ||||
|     &:before { | ||||
|       content: " "; | ||||
|       background: transparent; | ||||
|       border-radius: 50%; | ||||
|       border: 1px solid #fff; | ||||
|       width: 8px; | ||||
|       height: 8px; | ||||
|     } | ||||
|  | ||||
|     &:last-of-type { | ||||
|       margin-bottom: 0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .AiConfirm { | ||||
|   position: fixed; | ||||
|   z-index: 202210261023; | ||||
|   top: 50%; | ||||
|   left: 50%; | ||||
|   transform: translate(-50%, -50%); | ||||
| } | ||||
|  | ||||
| /** | ||||
| 节流器 | ||||
|  */ | ||||
| .throttle { | ||||
|   animation: throttle 0.5s step-end forwards; | ||||
| } | ||||
|  | ||||
| .throttle:active { | ||||
|   animation: none; | ||||
| } | ||||
|  | ||||
| @keyframes throttle { | ||||
|   from { | ||||
|     pointer-events: none; | ||||
|   } | ||||
|   to { | ||||
|     pointer-events: all; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										958
									
								
								ui/lib/styles/iconfont/iconfont.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										958
									
								
								ui/lib/styles/iconfont/iconfont.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,958 @@ | ||||
| @font-face { | ||||
|     font-family: "iconfont"; /* Project id 1309749 */ | ||||
|     src: url('//at.alicdn.com/t/c/font_1309749_t7bf1dhlp7e.woff2?t=1666749875458') format('woff2'), | ||||
|     url('//at.alicdn.com/t/c/font_1309749_t7bf1dhlp7e.woff?t=1666749875458') format('woff'), | ||||
|     url('//at.alicdn.com/t/c/font_1309749_t7bf1dhlp7e.ttf?t=1666749875458') format('truetype'); | ||||
| } | ||||
|  | ||||
| .iconfont { | ||||
|     font-family: "iconfont" !important; | ||||
|     font-size: 16px; | ||||
|     font-style: normal; | ||||
|     -webkit-font-smoothing: antialiased; | ||||
|     -moz-osx-font-smoothing: grayscale; | ||||
| } | ||||
|  | ||||
| .iconpingfenkaohe:before { | ||||
|     content: "\e736"; | ||||
| } | ||||
|  | ||||
| .iconcloss:before { | ||||
|     content: "\e735"; | ||||
| } | ||||
|  | ||||
| .iconzhengcefuwu:before { | ||||
|     content: "\e731"; | ||||
| } | ||||
|  | ||||
| .iconpeixunguanli:before { | ||||
|     content: "\e730"; | ||||
| } | ||||
|  | ||||
| .iconxiaoxizhongxin:before { | ||||
|     content: "\e72f"; | ||||
| } | ||||
|  | ||||
| .iconzhaopinhuiguanli:before { | ||||
|     content: "\e72e"; | ||||
| } | ||||
|  | ||||
| .iconshuzixiangcun:before { | ||||
|     content: "\e72d"; | ||||
| } | ||||
|  | ||||
| .iconteshurenqun:before { | ||||
|     content: "\e72c"; | ||||
| } | ||||
|  | ||||
| .iconzhengminhudong:before { | ||||
|     content: "\e72b"; | ||||
| } | ||||
|  | ||||
| .iconjicengzhili:before { | ||||
|     content: "\e72a"; | ||||
| } | ||||
|  | ||||
| .iconxiaochengxuguanli:before { | ||||
|     content: "\e729"; | ||||
| } | ||||
|  | ||||
| .iconyingjizhihui:before { | ||||
|     content: "\e728"; | ||||
| } | ||||
|  | ||||
| .iconjicengdangjian:before { | ||||
|     content: "\e727"; | ||||
| } | ||||
|  | ||||
| .iconxiangcunchanye:before { | ||||
|     content: "\e726"; | ||||
| } | ||||
|  | ||||
| .iconfangfanpin:before { | ||||
|     content: "\e725"; | ||||
| } | ||||
|  | ||||
| .iconnumber:before { | ||||
|     content: "\e724"; | ||||
| } | ||||
|  | ||||
| .iconattachments:before { | ||||
|     content: "\e719"; | ||||
| } | ||||
|  | ||||
| .icondate:before { | ||||
|     content: "\e71a"; | ||||
| } | ||||
|  | ||||
| .iconcard:before { | ||||
|     content: "\e71b"; | ||||
| } | ||||
|  | ||||
| .iconid:before { | ||||
|     content: "\e71c"; | ||||
| } | ||||
|  | ||||
| .iconcascade:before { | ||||
|     content: "\e71d"; | ||||
| } | ||||
|  | ||||
| .iconlocation:before { | ||||
|     content: "\e71e"; | ||||
| } | ||||
|  | ||||
| .iconname:before { | ||||
|     content: "\e71f"; | ||||
| } | ||||
|  | ||||
| .iconrich_text:before { | ||||
|     content: "\e720"; | ||||
| } | ||||
|  | ||||
| .iconphone_number:before { | ||||
|     content: "\e721"; | ||||
| } | ||||
|  | ||||
| .iconswitch:before { | ||||
|     content: "\e722"; | ||||
| } | ||||
|  | ||||
| .icontime:before { | ||||
|     content: "\e723"; | ||||
| } | ||||
|  | ||||
| .icondianliang:before { | ||||
|     content: "\e711"; | ||||
| } | ||||
|  | ||||
| .iconxueya:before { | ||||
|     content: "\e714"; | ||||
| } | ||||
|  | ||||
| .iconzhuangtai:before { | ||||
|     content: "\e715"; | ||||
| } | ||||
|  | ||||
| .iconxinlv:before { | ||||
|     content: "\e716"; | ||||
| } | ||||
|  | ||||
| .icontiwen:before { | ||||
|     content: "\e717"; | ||||
| } | ||||
|  | ||||
| .iconxueyang:before { | ||||
|     content: "\e718"; | ||||
| } | ||||
|  | ||||
| .iconzongzhizuzhi:before { | ||||
|     content: "\e710"; | ||||
| } | ||||
|  | ||||
| .iconvideolink:before { | ||||
|     content: "\e70f"; | ||||
| } | ||||
|  | ||||
| .iconfacial_recognition:before { | ||||
|     content: "\e70e"; | ||||
| } | ||||
|  | ||||
| .iconunpublish:before { | ||||
|     content: "\e70c"; | ||||
| } | ||||
|  | ||||
| .iconpreview:before { | ||||
|     content: "\e708"; | ||||
| } | ||||
|  | ||||
| .iconpublish:before { | ||||
|     content: "\e709"; | ||||
| } | ||||
|  | ||||
| .iconmore:before { | ||||
|     content: "\e70a"; | ||||
| } | ||||
|  | ||||
| .iconshare:before { | ||||
|     content: "\e70b"; | ||||
| } | ||||
|  | ||||
| .iconcheck_box:before { | ||||
|     content: "\e700"; | ||||
| } | ||||
|  | ||||
| .iconline:before { | ||||
|     content: "\e701"; | ||||
| } | ||||
|  | ||||
| .iconradio:before { | ||||
|     content: "\e702"; | ||||
| } | ||||
|  | ||||
| .icontext_box:before { | ||||
|     content: "\e703"; | ||||
| } | ||||
|  | ||||
| .icontext_area:before { | ||||
|     content: "\e704"; | ||||
| } | ||||
|  | ||||
| .iconpage:before { | ||||
|     content: "\e705"; | ||||
| } | ||||
|  | ||||
| .iconpic:before { | ||||
|     content: "\e706"; | ||||
| } | ||||
|  | ||||
| .iconSelect:before { | ||||
|     content: "\e707"; | ||||
| } | ||||
|  | ||||
| .iconhuluhuxian:before { | ||||
|     content: "\e6f6"; | ||||
| } | ||||
|  | ||||
| .iconkaoheguanli:before { | ||||
|     content: "\e6f9"; | ||||
| } | ||||
|  | ||||
| .iconhujiaozhongxin:before { | ||||
|     content: "\e6fa"; | ||||
| } | ||||
|  | ||||
| .iconliangxinzuzhi:before { | ||||
|     content: "\e6fb"; | ||||
| } | ||||
|  | ||||
| .iconxiaoyuananfang:before { | ||||
|     content: "\e6fc"; | ||||
| } | ||||
|  | ||||
| .iconzhongdianqingshaonian:before { | ||||
|     content: "\e6fd"; | ||||
| } | ||||
|  | ||||
| .iconanquanshengchan:before { | ||||
|     content: "\e6fe"; | ||||
| } | ||||
|  | ||||
| .iconshehuizhian:before { | ||||
|     content: "\e6ff"; | ||||
| } | ||||
|  | ||||
| .iconguangbofabu:before { | ||||
|     content: "\e6f4"; | ||||
| } | ||||
|  | ||||
| .iconwangshangbanshi:before { | ||||
|     content: "\e6f3"; | ||||
| } | ||||
|  | ||||
| .iconyunyingzhongxin:before { | ||||
|     content: "\e6f1"; | ||||
| } | ||||
|  | ||||
| .iconzhengwuweixin:before { | ||||
|     content: "\e6f2"; | ||||
| } | ||||
|  | ||||
| .iconkaoqinguanli:before { | ||||
|     content: "\e6eb"; | ||||
| } | ||||
|  | ||||
| .iconshijianguanli:before { | ||||
|     content: "\e6ec"; | ||||
| } | ||||
|  | ||||
| .iconyifangzhaoren:before { | ||||
|     content: "\e6ed"; | ||||
| } | ||||
|  | ||||
| .iconwanggeguanli:before { | ||||
|     content: "\e6ee"; | ||||
| } | ||||
|  | ||||
| .iconxinfangguanli:before { | ||||
|     content: "\e6ef"; | ||||
| } | ||||
|  | ||||
| .iconshipinjiankong:before { | ||||
|     content: "\e6f0"; | ||||
| } | ||||
|  | ||||
| .iconloudongmoxing:before { | ||||
|     content: "\e6ea"; | ||||
| } | ||||
|  | ||||
| .iconwanggeyuan:before { | ||||
|     content: "\e6e8"; | ||||
| } | ||||
|  | ||||
| .iconjinqishijian:before { | ||||
|     content: "\e6e6"; | ||||
| } | ||||
|  | ||||
| .iconxiaoquzonglan:before { | ||||
|     content: "\e6e7"; | ||||
| } | ||||
|  | ||||
| .iconloudongxinxi:before { | ||||
|     content: "\e6e9"; | ||||
| } | ||||
|  | ||||
| .iconchuangyebutie:before { | ||||
|     content: "\e6db"; | ||||
| } | ||||
|  | ||||
| .icondanweiguanli:before { | ||||
|     content: "\e6dc"; | ||||
| } | ||||
|  | ||||
| .iconjiuyefuwu:before { | ||||
|     content: "\e6e2"; | ||||
| } | ||||
|  | ||||
| .iconchuangyejiuyeguanli:before { | ||||
|     content: "\e6e3"; | ||||
| } | ||||
|  | ||||
| .iconchuangyedanbaodaikuan:before { | ||||
|     content: "\e6e4"; | ||||
| } | ||||
|  | ||||
| .icondaxueshengshixishixun:before { | ||||
|     content: "\e6e5"; | ||||
| } | ||||
|  | ||||
| .iconsearch:before { | ||||
|     content: "\e732"; | ||||
| } | ||||
|  | ||||
| .iconxqhd:before { | ||||
|     content: "\e733"; | ||||
| } | ||||
|  | ||||
| .iconwdhd:before { | ||||
|     content: "\e734"; | ||||
| } | ||||
|  | ||||
| .iconrobot:before { | ||||
|     content: "\e6da"; | ||||
| } | ||||
|  | ||||
| .iconfangda:before { | ||||
|     content: "\e6d7"; | ||||
| } | ||||
|  | ||||
| .iconsuoxiao:before { | ||||
|     content: "\e6d8"; | ||||
| } | ||||
|  | ||||
| .iconEarth:before { | ||||
|     content: "\e6d9"; | ||||
| } | ||||
|  | ||||
| .iconxianfengyeweihui:before { | ||||
|     content: "\e6d6"; | ||||
| } | ||||
|  | ||||
| .iconhuiyuanguanli:before { | ||||
|     content: "\e6d1"; | ||||
| } | ||||
|  | ||||
| .iconcunganbuguanli:before { | ||||
|     content: "\e6d2"; | ||||
| } | ||||
|  | ||||
| .iconzhaopinguanli:before { | ||||
|     content: "\e6d3"; | ||||
| } | ||||
|  | ||||
| .iconqiyeguanli:before { | ||||
|     content: "\e6d5"; | ||||
| } | ||||
|  | ||||
| .iconxingfujifen:before { | ||||
|     content: "\e6ce"; | ||||
| } | ||||
|  | ||||
| .iconxinxizhongxin:before { | ||||
|     content: "\e6cf"; | ||||
| } | ||||
|  | ||||
| .iconpinyipin:before { | ||||
|     content: "\e6d0"; | ||||
| } | ||||
|  | ||||
| .iconUnpublish:before { | ||||
|     content: "\e6cc"; | ||||
| } | ||||
|  | ||||
| .iconPublish:before { | ||||
|     content: "\e6cd"; | ||||
| } | ||||
|  | ||||
| .iconDelay:before { | ||||
|     content: "\e6cb"; | ||||
| } | ||||
|  | ||||
| .iconwarning:before { | ||||
|     content: "\e6f5"; | ||||
| } | ||||
|  | ||||
| .iconzpg:before { | ||||
|     content: "\e6f7"; | ||||
| } | ||||
|  | ||||
| .iconsqy:before { | ||||
|     content: "\e6f8"; | ||||
| } | ||||
|  | ||||
| .iconzxjyzdls:before { | ||||
|     content: "\e6dd"; | ||||
| } | ||||
|  | ||||
| .iconzxjygwgl:before { | ||||
|     content: "\e6de"; | ||||
| } | ||||
|  | ||||
| .iconzxjywdzy:before { | ||||
|     content: "\e6df"; | ||||
| } | ||||
|  | ||||
| .iconzxjycydb:before { | ||||
|     content: "\e6e0"; | ||||
| } | ||||
|  | ||||
| .iconzxjyckmb:before { | ||||
|     content: "\e6e1"; | ||||
| } | ||||
|  | ||||
| .iconarea:before { | ||||
|     content: "\e6d4"; | ||||
| } | ||||
|  | ||||
| .iconyiqingfangkong:before { | ||||
|     content: "\e6ca"; | ||||
| } | ||||
|  | ||||
| .iconPostil:before { | ||||
|     content: "\e6c9"; | ||||
| } | ||||
|  | ||||
| .iconjiaonadangfei:before { | ||||
|     content: "\e6c8"; | ||||
| } | ||||
|  | ||||
| .iconSuccess:before { | ||||
|     content: "\e6c7"; | ||||
| } | ||||
|  | ||||
| .iconAccount_Login:before { | ||||
|     content: "\e6c5"; | ||||
| } | ||||
|  | ||||
| .iconQR_code:before { | ||||
|     content: "\e6c6"; | ||||
| } | ||||
|  | ||||
| .iconMediaPlayer_Play:before { | ||||
|     content: "\e6c3"; | ||||
| } | ||||
|  | ||||
| .iconMediaPlayer_Stop:before { | ||||
|     content: "\e6c4"; | ||||
| } | ||||
|  | ||||
| .icondangyuan:before { | ||||
|     content: "\e6b0"; | ||||
| } | ||||
|  | ||||
| .iconEnvironment:before { | ||||
|     content: "\e6bc"; | ||||
| } | ||||
|  | ||||
| .iconLaw:before { | ||||
|     content: "\e6bd"; | ||||
| } | ||||
|  | ||||
| .iconjicengbangong:before { | ||||
|     content: "\e6be"; | ||||
| } | ||||
|  | ||||
| .iconjicengzhuzhi:before { | ||||
|     content: "\e6bf"; | ||||
| } | ||||
|  | ||||
| .iconwenmingxiangfeng:before { | ||||
|     content: "\e6c0"; | ||||
| } | ||||
|  | ||||
| .iconyangguangcunwu:before { | ||||
|     content: "\e6c1"; | ||||
| } | ||||
|  | ||||
| .iconminzhuyishi:before { | ||||
|     content: "\e6c2"; | ||||
| } | ||||
|  | ||||
| .iconshehuijiuzhu:before { | ||||
|     content: "\e6b8"; | ||||
| } | ||||
|  | ||||
| .iconshujugongxiang:before { | ||||
|     content: "\e6b9"; | ||||
| } | ||||
|  | ||||
| .iconjuminxinxi:before { | ||||
|     content: "\e6ba"; | ||||
| } | ||||
|  | ||||
| .iconxinxiguanli:before { | ||||
|     content: "\e6bb"; | ||||
| } | ||||
|  | ||||
| .iconRecommend:before { | ||||
|     content: "\e6af"; | ||||
| } | ||||
|  | ||||
| .iconqiandao:before { | ||||
|     content: "\e6ad"; | ||||
| } | ||||
|  | ||||
| .iconqingjia:before { | ||||
|     content: "\e6ae"; | ||||
| } | ||||
|  | ||||
| .iconhistogram:before { | ||||
|     content: "\e6ac"; | ||||
| } | ||||
|  | ||||
| .iconAudit:before { | ||||
|     content: "\e6a9"; | ||||
| } | ||||
|  | ||||
| .iconVerify:before { | ||||
|     content: "\e6aa"; | ||||
| } | ||||
|  | ||||
| .iconTransaction:before { | ||||
|     content: "\e6ab"; | ||||
| } | ||||
|  | ||||
| .iconEwm:before { | ||||
|     content: "\e6a6"; | ||||
| } | ||||
|  | ||||
| .iconIOS:before { | ||||
|     content: "\e6a7"; | ||||
| } | ||||
|  | ||||
| .iconAndroid:before { | ||||
|     content: "\e6a8"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_clean:before { | ||||
|     content: "\e67a"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_edit:before { | ||||
|     content: "\e67b"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Led:before { | ||||
|     content: "\e680"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Led1:before { | ||||
|     content: "\e681"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Right:before { | ||||
|     content: "\e688"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Ledjiesu:before { | ||||
|     content: "\e689"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_show:before { | ||||
|     content: "\e68a"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Ledwx:before { | ||||
|     content: "\e68b"; | ||||
| } | ||||
|  | ||||
| .iconjdq_led_Lednrhg:before { | ||||
|     content: "\e68c"; | ||||
| } | ||||
|  | ||||
| .iconClean1:before { | ||||
|     content: "\e6a4"; | ||||
| } | ||||
|  | ||||
| .iconLoading:before { | ||||
|     content: "\e6a5"; | ||||
| } | ||||
|  | ||||
| .iconSubordinates:before { | ||||
|     content: "\e6a1"; | ||||
| } | ||||
|  | ||||
| .iconDownload:before { | ||||
|     content: "\e6a2"; | ||||
| } | ||||
|  | ||||
| .iconNext_Mission:before { | ||||
|     content: "\e6a3"; | ||||
| } | ||||
|  | ||||
| .iconAdmitted:before { | ||||
|     content: "\e69c"; | ||||
| } | ||||
|  | ||||
| .iconEmployment_Confirmation:before { | ||||
|     content: "\e69d"; | ||||
| } | ||||
|  | ||||
| .iconRepulsebeifen:before { | ||||
|     content: "\e69e"; | ||||
| } | ||||
|  | ||||
| .iconUpdate_Files:before { | ||||
|     content: "\e69f"; | ||||
| } | ||||
|  | ||||
| .iconRepulse:before { | ||||
|     content: "\e6a0"; | ||||
| } | ||||
|  | ||||
| .iconOverrule:before { | ||||
|     content: "\e69a"; | ||||
| } | ||||
|  | ||||
| .iconWithdrawn:before { | ||||
|     content: "\e69b"; | ||||
| } | ||||
|  | ||||
| .iconDetails:before { | ||||
|     content: "\e699"; | ||||
| } | ||||
|  | ||||
| .iconSpecial_Populations:before { | ||||
|     content: "\e698"; | ||||
| } | ||||
|  | ||||
| .iconPerson_Transfer:before { | ||||
|     content: "\e693"; | ||||
| } | ||||
|  | ||||
| .iconCreate_Files:before { | ||||
|     content: "\e694"; | ||||
| } | ||||
|  | ||||
| .iconPrint:before { | ||||
|     content: "\e695"; | ||||
| } | ||||
|  | ||||
| .iconPerson_Transfered:before { | ||||
|     content: "\e696"; | ||||
| } | ||||
|  | ||||
| .iconReject:before { | ||||
|     content: "\e697"; | ||||
| } | ||||
|  | ||||
| .iconGroup_IM:before { | ||||
|     content: "\e692"; | ||||
| } | ||||
|  | ||||
| .iconData_Screen:before { | ||||
|     content: "\e68f"; | ||||
| } | ||||
|  | ||||
| .iconCustomer_Service:before { | ||||
|     content: "\e690"; | ||||
| } | ||||
|  | ||||
| .iconDocumentation:before { | ||||
|     content: "\e691"; | ||||
| } | ||||
|  | ||||
| .iconTriangle_Up:before { | ||||
|     content: "\e68d"; | ||||
| } | ||||
|  | ||||
| .iconTriangle_Left:before { | ||||
|     content: "\e68e"; | ||||
| } | ||||
|  | ||||
| .iconDouble_Up:before { | ||||
|     content: "\e686"; | ||||
| } | ||||
|  | ||||
| .iconDouble_Down:before { | ||||
|     content: "\e687"; | ||||
| } | ||||
|  | ||||
| .iconServer:before { | ||||
|     content: "\e685"; | ||||
| } | ||||
|  | ||||
| .iconIM:before { | ||||
|     content: "\e682"; | ||||
| } | ||||
|  | ||||
| .iconStatistics:before { | ||||
|     content: "\e683"; | ||||
| } | ||||
|  | ||||
| .iconData_Reporting:before { | ||||
|     content: "\e684"; | ||||
| } | ||||
|  | ||||
| .iconMoveUp:before { | ||||
|     content: "\e67c"; | ||||
| } | ||||
|  | ||||
| .iconRevoke:before { | ||||
|     content: "\e67d"; | ||||
| } | ||||
|  | ||||
| .iconMoveDown:before { | ||||
|     content: "\e67e"; | ||||
| } | ||||
|  | ||||
| .iconAll_Profile:before { | ||||
|     content: "\e67f"; | ||||
| } | ||||
|  | ||||
| .iconzu:before { | ||||
|     content: "\e712"; | ||||
| } | ||||
|  | ||||
| .iconzu1:before { | ||||
|     content: "\e713"; | ||||
| } | ||||
|  | ||||
| .iconShow_Content:before { | ||||
|     content: "\e66e"; | ||||
| } | ||||
|  | ||||
| .iconShow:before { | ||||
|     content: "\e66f"; | ||||
| } | ||||
|  | ||||
| .iconCCP:before { | ||||
|     content: "\e70d"; | ||||
| } | ||||
|  | ||||
| .iconAlready_Read:before { | ||||
|     content: "\e669"; | ||||
| } | ||||
|  | ||||
| .iconRegister:before { | ||||
|     content: "\e66a"; | ||||
| } | ||||
|  | ||||
| .iconNotice:before { | ||||
|     content: "\e66b"; | ||||
| } | ||||
|  | ||||
| .iconUnfinished:before { | ||||
|     content: "\e66c"; | ||||
| } | ||||
|  | ||||
| .iconDate1:before { | ||||
|     content: "\e664"; | ||||
| } | ||||
|  | ||||
| .iconLogout:before { | ||||
|     content: "\e665"; | ||||
| } | ||||
|  | ||||
| .iconPhoto:before { | ||||
|     content: "\e666"; | ||||
| } | ||||
|  | ||||
| .iconResetting:before { | ||||
|     content: "\e667"; | ||||
| } | ||||
|  | ||||
| .iconProfile_Picture:before { | ||||
|     content: "\e668"; | ||||
| } | ||||
|  | ||||
| .iconModal_Success:before { | ||||
|     content: "\e662"; | ||||
| } | ||||
|  | ||||
| .iconModal_Warning:before { | ||||
|     content: "\e663"; | ||||
| } | ||||
|  | ||||
| .iconSteps_Finished:before { | ||||
|     content: "\e660"; | ||||
| } | ||||
|  | ||||
| .iconSteps_In_Progress:before { | ||||
|     content: "\e661"; | ||||
| } | ||||
|  | ||||
| .iconAdd_Subordinates:before { | ||||
|     content: "\e65d"; | ||||
| } | ||||
|  | ||||
| .iconAdd_Peers:before { | ||||
|     content: "\e65e"; | ||||
| } | ||||
|  | ||||
| .iconHide_Content:before { | ||||
|     content: "\e65f"; | ||||
| } | ||||
|  | ||||
| .iconLogo:before { | ||||
|     content: "\e65c"; | ||||
| } | ||||
|  | ||||
| .iconAdd:before { | ||||
|     content: "\e657"; | ||||
| } | ||||
|  | ||||
| .iconFunction_Management:before { | ||||
|     content: "\e658"; | ||||
| } | ||||
|  | ||||
| .iconDelete:before { | ||||
|     content: "\e659"; | ||||
| } | ||||
|  | ||||
| .iconExported:before { | ||||
|     content: "\e65a"; | ||||
| } | ||||
|  | ||||
| .iconImport:before { | ||||
|     content: "\e65b"; | ||||
| } | ||||
|  | ||||
| .iconTriangle_Down:before { | ||||
|     content: "\e655"; | ||||
| } | ||||
|  | ||||
| .iconTriangle_Right:before { | ||||
|     content: "\e656"; | ||||
| } | ||||
|  | ||||
| .iconNav_DataCenter:before { | ||||
|     content: "\e650"; | ||||
| } | ||||
|  | ||||
| .iconNav_Dashborad:before { | ||||
|     content: "\e651"; | ||||
| } | ||||
|  | ||||
| .iconNav_Pack_Up:before { | ||||
|     content: "\e652"; | ||||
| } | ||||
|  | ||||
| .iconNav_Setting:before { | ||||
|     content: "\e653"; | ||||
| } | ||||
|  | ||||
| .iconNav_Application:before { | ||||
|     content: "\e654"; | ||||
| } | ||||
|  | ||||
| .iconSkip:before { | ||||
|     content: "\e64a"; | ||||
| } | ||||
|  | ||||
| .iconSearch:before { | ||||
|     content: "\e64b"; | ||||
| } | ||||
|  | ||||
| .iconWeChat:before { | ||||
|     content: "\e64c"; | ||||
| } | ||||
|  | ||||
| .iconParent:before { | ||||
|     content: "\e64e"; | ||||
| } | ||||
|  | ||||
| .iconSetting:before { | ||||
|     content: "\e64f"; | ||||
| } | ||||
|  | ||||
| .iconChange:before { | ||||
|     content: "\e63c"; | ||||
| } | ||||
|  | ||||
| .iconBack_Large:before { | ||||
|     content: "\e63d"; | ||||
| } | ||||
|  | ||||
| .iconCorrect:before { | ||||
|     content: "\e63e"; | ||||
| } | ||||
|  | ||||
| .iconMessage:before { | ||||
|     content: "\e63f"; | ||||
| } | ||||
|  | ||||
| .iconDate:before { | ||||
|     content: "\e640"; | ||||
| } | ||||
|  | ||||
| .iconMore:before { | ||||
|     content: "\e641"; | ||||
| } | ||||
|  | ||||
| .iconEdit:before { | ||||
|     content: "\e642"; | ||||
| } | ||||
|  | ||||
| .iconPhone:before { | ||||
|     content: "\e643"; | ||||
| } | ||||
|  | ||||
| .iconClean:before { | ||||
|     content: "\e644"; | ||||
| } | ||||
|  | ||||
| .iconProlife:before { | ||||
|     content: "\e645"; | ||||
| } | ||||
|  | ||||
| .iconClock:before { | ||||
|     content: "\e646"; | ||||
| } | ||||
|  | ||||
| .iconLocation:before { | ||||
|     content: "\e647"; | ||||
| } | ||||
|  | ||||
| .iconPassword:before { | ||||
|     content: "\e648"; | ||||
| } | ||||
|  | ||||
| .iconCopy:before { | ||||
|     content: "\e649"; | ||||
| } | ||||
|  | ||||
| .iconArrow_Up:before { | ||||
|     content: "\e638"; | ||||
| } | ||||
|  | ||||
| .iconArrow_Left:before { | ||||
|     content: "\e639"; | ||||
| } | ||||
|  | ||||
| .iconArrow_Down:before { | ||||
|     content: "\e63a"; | ||||
| } | ||||
|  | ||||
| .iconArrow_Right:before { | ||||
|     content: "\e63b"; | ||||
| } | ||||
							
								
								
									
										1
									
								
								ui/lib/styles/iconfont/iconfont.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ui/lib/styles/iconfont/iconfont.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										78
									
								
								ui/lib/styles/iconfont/logofont.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								ui/lib/styles/iconfont/logofont.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| @font-face { | ||||
|     font-family: "logofont"; /* Project id 1557923 */ | ||||
|     src: url('//at.alicdn.com/t/c/font_1557923_ymu4rpvijlo.woff2?t=1661421638099') format('woff2'), | ||||
|     url('//at.alicdn.com/t/c/font_1557923_ymu4rpvijlo.woff?t=1661421638099') format('woff'), | ||||
|     url('//at.alicdn.com/t/c/font_1557923_ymu4rpvijlo.ttf?t=1661421638099') format('truetype'); | ||||
| } | ||||
|  | ||||
| .logofont { | ||||
|     font-family: "logofont" !important; | ||||
|     font-size: 16px; | ||||
|     font-style: normal; | ||||
|     -webkit-font-smoothing: antialiased; | ||||
|     -moz-osx-font-smoothing: grayscale; | ||||
| } | ||||
|  | ||||
| .iconhuizhili:before { | ||||
|     content: "\e720"; | ||||
| } | ||||
|  | ||||
| .iconxiuxingtong1:before { | ||||
|     content: "\e71e"; | ||||
| } | ||||
|  | ||||
| .iconhuizhengwu2:before { | ||||
|     content: "\e71a"; | ||||
| } | ||||
|  | ||||
| .iconhuizhengwu:before { | ||||
|     content: "\e719"; | ||||
| } | ||||
|  | ||||
| .iconxiuxingtong:before { | ||||
|     content: "\e717"; | ||||
| } | ||||
|  | ||||
| .iconzgydzhsq:before { | ||||
|     content: "\e6fb"; | ||||
| } | ||||
|  | ||||
| .iconzhongguoyidong2:before { | ||||
|     content: "\e6fa"; | ||||
| } | ||||
|  | ||||
| .iconzhongguoyidong:before { | ||||
|     content: "\e6f8"; | ||||
| } | ||||
|  | ||||
| .iconcunwei:before { | ||||
|     content: "\e6f3"; | ||||
| } | ||||
|  | ||||
| .iconcunwei1:before { | ||||
|     content: "\e6f0"; | ||||
| } | ||||
|  | ||||
| .iconccb:before { | ||||
|     content: "\e6d7"; | ||||
| } | ||||
|  | ||||
| .iconzhongzhi:before { | ||||
|     content: "\e6cb"; | ||||
| } | ||||
|  | ||||
| .iconzxjy:before { | ||||
|     content: "\e6c2"; | ||||
| } | ||||
|  | ||||
| .iconLogo:before { | ||||
|     content: "\e6a9"; | ||||
| } | ||||
|  | ||||
| .iconminzhengju:before { | ||||
|     content: "\e667"; | ||||
| } | ||||
|  | ||||
| .iconzhongguoliantong:before { | ||||
|     content: "\e618"; | ||||
| } | ||||
							
								
								
									
										72
									
								
								ui/lib/styles/theme.hzl.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ui/lib/styles/theme.hzl.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| $theme: "hzl"; | ||||
| @import "common"; | ||||
| .signLeftContent { | ||||
|   color: #333; | ||||
|   font-family: -apple-system, BlinkMacSystemFont, PingFang SC, Source Han Sans CN, Microsoft Yahei, sans-serif; | ||||
|  | ||||
|   .titlePane { | ||||
|     margin-top: 84px; | ||||
|     margin-bottom: 40px; | ||||
|     font-family: MicrosoftYaHei, sans-serif; | ||||
|   } | ||||
|  | ||||
|   .subTitle:before { | ||||
|     border-color: #333; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .projectName { | ||||
|   font-family: MicrosoftYaHeiS0pxibold; | ||||
|   font-size: 48px; | ||||
| } | ||||
|  | ||||
| .ai-sign { | ||||
|   width: 420px !important; | ||||
|  | ||||
|   & > .el-row--flex { | ||||
|     align-items: flex-start; | ||||
|   } | ||||
|  | ||||
|   .is-always-shadow { | ||||
|     box-shadow: 0 24px 48px 0 rgba(15, 56, 139, 0.05); | ||||
|     width: 420px !important; | ||||
|     min-height: 430px; | ||||
|  | ||||
|     & > .el-card__body { | ||||
|       padding: 20px 40px; | ||||
|     } | ||||
|  | ||||
|     .ai-scan { | ||||
|       right: -30px; | ||||
|  | ||||
|       .iconfont { | ||||
|         line-height: normal; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   } | ||||
|  | ||||
|   .reset-password-row { | ||||
|     text-align: center !important; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .headerNav { | ||||
|   .AiIcon { | ||||
|     font-size: 28px !important; | ||||
|     -webkit-text-fill-color: white !important; | ||||
|     font-weight: normal !important; | ||||
|   } | ||||
|  | ||||
|   .headerTitle { | ||||
|     font-family: FZZZHONGJW--GB1-0 !important; | ||||
|     line-height: normal !important; | ||||
|     font-weight: normal !important; | ||||
|     -webkit-text-fill-color: white !important; | ||||
|   } | ||||
|  | ||||
|   .textShadow { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										7
									
								
								ui/lib/styles/theme.yellow.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ui/lib/styles/theme.yellow.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| $theme: "yellow"; | ||||
| $primaryColor: #f62; | ||||
| $primaryBtnColor: linear-gradient(90deg, #FFA322 0%, #FF6622 100%); | ||||
| $projectName: linear-gradient(180deg, #FFA322 0%, #FF6622 100%); | ||||
| $primaryLightColor: #FFF7F4; | ||||
| $textShadow: #CA693E; | ||||
| @import "common"; | ||||
							
								
								
									
										12
									
								
								ui/lib/styles/vars.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ui/lib/styles/vars.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| $primaryColor: #26f !default; | ||||
| $borderColor: #d0d4dc !default; | ||||
| $primaryBtnColor: linear-gradient(90deg, #299FFF 0%, #0C61FF 100%) !default; | ||||
| $successColor: #2EA222 !default; | ||||
| $warnColor: #F82 !default; | ||||
| $errorColor: #F46 !default; | ||||
| $infoColor: #8D96A9 !default; | ||||
| $theme: "blue" !default; | ||||
| $projectName: linear-gradient(180deg, #5AC4FF 11%, #1347B6 100%) !default; | ||||
| $primaryLightColor: rgba(239, 246, 255, 1) !default; | ||||
| $textShadow: #384DC3 !default; | ||||
| $placeholderColor: #888 !default; | ||||
		Reference in New Issue
	
	Block a user