diff --git a/src/api/production/produceReport/produceReportApi.js b/src/api/production/produceReport/produceReportApi.js new file mode 100644 index 0000000..5117b1a --- /dev/null +++ b/src/api/production/produceReport/produceReportApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/report/` + url, ...arg) + +/** + * 生产汇报单Api接口管理器 + * + * @author Luck + * @date 2024/08/15 10:56 + **/ +export default { + // 获取生产汇报单分页 + produceReportPage(data) { + return request('page', data, 'get') + }, + // 提交生产汇报单表单 edit为true时为编辑,默认为新增 + produceReportSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产汇报单 + produceReportDelete(data) { + return request('delete', data) + }, + // 获取生产汇报单详情 + produceReportDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/production/produceTask/producePackageBarcodeApi.js b/src/api/production/produceTask/producePackageBarcodeApi.js new file mode 100644 index 0000000..0040385 --- /dev/null +++ b/src/api/production/produceTask/producePackageBarcodeApi.js @@ -0,0 +1,39 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/barcode/` + url, ...arg) + +/** + * 生产产品包装条码Api接口管理器 + * + * @author Luck + * @date 2024/08/16 14:50 + **/ +export default { + // 获取生产产品包装条码分页 + producePackageBarcodePage(data) { + return request('page', data, 'get') + }, + // 根据汇报单明细 获取条码树结构 + produceReportDetailTree(data) { + return request('reportDetail/tree', data, 'get') + }, + // 提交生产产品包装条码表单 edit为true时为编辑,默认为新增 + producePackageBarcodeSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产产品包装条码 + producePackageBarcodeDelete(data) { + return request('delete', data) + }, + // 获取生产产品包装条码详情 + producePackageBarcodeDetail(data) { + return request('detail', data, 'get') + }, + producePackageBarcodeTreeList(data) { + return request('tree/list', data, 'get') + }, + producePackageBarcodeTreeChildrenList(data) { + return request('tree/childrenList', data, 'get') + }, + +} diff --git a/src/api/production/produceTask/produceReportApi.js b/src/api/production/produceTask/produceReportApi.js new file mode 100644 index 0000000..66b8687 --- /dev/null +++ b/src/api/production/produceTask/produceReportApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/report/` + url, ...arg) + +/** + * 生产汇报单Api接口管理器 + * + * @author Luck + * @date 2024/08/16 13:50 + **/ +export default { + // 获取生产汇报单分页 + produceReportPage(data) { + return request('page', data, 'get') + }, + // 提交生产汇报单表单 edit为true时为编辑,默认为新增 + produceReportSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产汇报单 + produceReportDelete(data) { + return request('delete', data) + }, + // 获取生产汇报单详情 + produceReportDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/production/produceTask/produceReportDetailApi.js b/src/api/production/produceTask/produceReportDetailApi.js new file mode 100644 index 0000000..29b300d --- /dev/null +++ b/src/api/production/produceTask/produceReportDetailApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/reportDetail/` + url, ...arg) + +/** + * 生产汇报单明细Api接口管理器 + * + * @author Luck + * @date 2024/08/17 21:38 + **/ +export default { + // 获取生产汇报单明细分页 + produceReportDetailPage(data) { + return request('list', data, 'get') + }, + // 提交生产汇报单明细表单 edit为true时为编辑,默认为新增 + produceReportDetailSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产汇报单明细 + produceReportDetailDelete(data) { + return request('delete', data) + }, + // 获取生产汇报单明细详情 + produceReportDetailDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/components/DynamicSearchForm/index.vue b/src/components/DynamicSearchForm/index.vue new file mode 100644 index 0000000..a9d0503 --- /dev/null +++ b/src/components/DynamicSearchForm/index.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/DynamicTable/index.vue b/src/components/DynamicTable/index.vue new file mode 100644 index 0000000..d9b6479 --- /dev/null +++ b/src/components/DynamicTable/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/src/App.vue b/src/src/App.vue new file mode 100644 index 0000000..9fa7dfa --- /dev/null +++ b/src/src/App.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/src/api/auth/loginApi.js b/src/src/api/auth/loginApi.js new file mode 100644 index 0000000..dadcfa1 --- /dev/null +++ b/src/src/api/auth/loginApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { moduleRequest } from '@/utils/request' + +const request = moduleRequest(`/auth/b/`) +/** + * 登录 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // B端获取图片验证码 + getPicCaptcha(data) { + return request('getPicCaptcha', data, 'get') + }, + // B端获取手机验证码 + getPhoneValidCode(data) { + return request('getPhoneValidCode', data, 'get') + }, + // B端账号密码登录 + login(data) { + return request('doLogin', data, 'post', false) + }, + // B端手机验证码登录 + loginByPhone(data) { + return request('doLoginByPhone', data, 'post', false) + }, + // 退出 + logout(data) { + return request('doLogout', data, 'get') + }, + // 获取用户信息 + getLoginUser(data) { + return request('getLoginUser', data, 'get') + } +} diff --git a/src/src/api/auth/monitorApi.js b/src/src/api/auth/monitorApi.js new file mode 100644 index 0000000..984c8f3 --- /dev/null +++ b/src/src/api/auth/monitorApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/` + url, ...arg) +/** + * 绘画 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 会话统计 + monitorAnalysis(data) { + return request('session/analysis', data, 'get') + }, + // 获取会话分页 + monitorBPage(data) { + return request('session/b/page', data, 'get') + }, + // 获取会话分页 + monitorCPage(data) { + return request('session/c/page', data, 'get') + }, + // 强退B端session + monitorBExit(data) { + return request('session/b/exit', data) + }, + // 强退C端session + monitorCExit(data) { + return request('session/c/exit', data) + }, + // 强退B端token + monitorTokenBExit(data) { + return request('token/b/exit', data) + }, + // 强退C端token + monitorTokenCExit(data) { + return request('token/c/exit', data) + } +} diff --git a/src/src/api/auth/oauthApi.js b/src/src/api/auth/oauthApi.js new file mode 100644 index 0000000..bb0c219 --- /dev/null +++ b/src/src/api/auth/oauthApi.js @@ -0,0 +1,29 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/third/` + url, ...arg) +/** + * 三方登录 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 第三方登录页面渲染 + thirdRender(data) { + return request('render', data, 'get') + }, + // 第三方登录授权回调 + thirdCallback(data) { + return request('callback', data, 'get') + } +} diff --git a/src/src/api/auth/thirdApi.js b/src/src/api/auth/thirdApi.js new file mode 100644 index 0000000..1a01c44 --- /dev/null +++ b/src/src/api/auth/thirdApi.js @@ -0,0 +1,33 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/third/` + url, ...arg) +/** + * 三方用户 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取三方用户分页 + thirdPage(data) { + return request('page', data, 'get') + }, + // 第三方登录页面渲染 + thirdRender(data) { + return request('render', data, 'get') + }, + // 第三方登录授权回调 + thirdCallback(data) { + return request('callback', data, 'get') + } +} diff --git a/src/src/api/base/brand/sysBrandApi.js b/src/src/api/base/brand/sysBrandApi.js new file mode 100644 index 0000000..fc30e23 --- /dev/null +++ b/src/src/api/base/brand/sysBrandApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/brand/` + url, ...arg) + +/** + * 品牌Api接口管理器 + * + * @author Luck + * @date 2024/07/23 16:20 + **/ +export default { + // 获取品牌分页 + page(data) { + return request('page', data, 'get') + }, + // 获取品牌列表 + sysBrandList(data) { + return request('list', data, 'get') + }, + // 提交品牌表单 edit为true时为编辑,默认为新增 + sysBrandSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除品牌 + sysBrandDelete(data) { + return request('delete', data) + }, + // 获取品牌详情 + sysBrandDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/customer/customerApi.js b/src/src/api/base/customer/customerApi.js new file mode 100644 index 0000000..b756b69 --- /dev/null +++ b/src/src/api/base/customer/customerApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/customer/` + url, ...arg) + +/** + * 客户Api接口管理器 + * + * @author Luck + * @date 2024/07/23 16:31 + **/ +export default { + // 获取客户分页 + customerPage(data) { + return request('page', data, 'get') + }, + // 获取销售区域列表 + customerSaleAreaList(data) { + return request('saleArea/list', data, 'get') + }, + // 提交客户表单 edit为true时为编辑,默认为新增 + customerSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除客户 + customerDelete(data) { + return request('delete', data) + }, + // 获取客户详情 + customerDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/customer/customerCategoryApi.js b/src/src/api/base/customer/customerCategoryApi.js new file mode 100644 index 0000000..81f32c6 --- /dev/null +++ b/src/src/api/base/customer/customerCategoryApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/customerCategory/` + url, ...arg) + +/** + * 客户分类Api接口管理器 + * + * @author Luck + * @date 2024/07/23 17:02 + **/ +export default { + // 获取客户分类分页 + customerCategoryPage(data) { + return request('page', data, 'get') + }, + // 获取树结构 + customerCategoryTree(data) { + return request('tree', data, 'get') + }, + // 提交客户分类表单 edit为true时为编辑,默认为新增 + customerCategorySubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除客户分类 + customerCategoryDelete(data) { + return request('delete', data) + }, + // 获取客户分类详情 + customerCategoryDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/employee/employeeApi.js b/src/src/api/base/employee/employeeApi.js new file mode 100644 index 0000000..081aa8f --- /dev/null +++ b/src/src/api/base/employee/employeeApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/employee/` + url, ...arg) + +/** + * 员工Api接口管理器 + * + * @author Luck + * @date 2024/07/23 17:31 + **/ +export default { + // 获取员工分页 + employeePage(data) { + return request('page', data, 'get') + }, + // 提交员工表单 edit为true时为编辑,默认为新增 + employeeSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除员工 + employeeDelete(data) { + return request('delete', data) + }, + // 获取员工详情 + employeeDetail(data) { + return request('detail', data, 'get') + }, + // 添加员工基本信息 + employeeAddShort(data) { + return request('addShort', data, 'post') + } +} diff --git a/src/src/api/base/employee/employeeCategoryApi.js b/src/src/api/base/employee/employeeCategoryApi.js new file mode 100644 index 0000000..3474868 --- /dev/null +++ b/src/src/api/base/employee/employeeCategoryApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/employeeCategory/` + url, ...arg) + +/** + * 员工分类Api接口管理器 + * + * @author Luck + * @date 2024/07/23 17:05 + **/ +export default { + // 获取员工分类分页 + employeeCategoryPage(data) { + return request('page', data, 'get') + }, + // 获取员工分类 树结构 + employeeCategoryTree(data) { + return request('tree', data, 'get') + }, + // 提交员工分类表单 edit为true时为编辑,默认为新增 + employeeCategorySubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除员工分类 + employeeCategoryDelete(data) { + return request('delete', data) + }, + // 获取员工分类详情 + employeeCategoryDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/extendfield/extendFieldApi.js b/src/src/api/base/extendfield/extendFieldApi.js new file mode 100644 index 0000000..93519ef --- /dev/null +++ b/src/src/api/base/extendfield/extendFieldApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/extendfield/` + url, ...arg) + +/** + * 扩展字段配置Api接口管理器 + * + * @author Luck + * @date 2024/07/28 17:18 + **/ +export default { + // 获取扩展字段配置分页 + extendFieldPage(data) { + return request('page', data, 'get') + }, + // 提交扩展字段配置表单 edit为true时为编辑,默认为新增 + extendFieldSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 获取扩展字段配置详情 + extendFieldDetail(data) { + return request('detail', data, 'get') + }, + // 获取扩展字段配置列表(根据分类) + extendFieldTypeList(data) { + return request('typeList', data, 'get') + } +} diff --git a/src/src/api/base/manual-task/manualTaskApi.js b/src/src/api/base/manual-task/manualTaskApi.js new file mode 100644 index 0000000..b802668 --- /dev/null +++ b/src/src/api/base/manual-task/manualTaskApi.js @@ -0,0 +1,36 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/manualtask/` + url, ...arg) + +/** + * 手工任务单Api接口管理器 + * + * @author Luck + * @date 2024/08/06 16:54 + **/ +export default { + // 获取手工任务单分页 + manualTaskPage(data) { + return request('page', data, 'get') + }, + // 获取手工任务单【详情】分页 + manualTaskDetailPage(data) { + return request('/detail/page', data, 'get') + }, + // 提交手工任务单表单 edit为true时为编辑,默认为新增 + manualTaskSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 提交 保存任务单 标签、备注信息 + manualTaskSaveTag(data) { + return request('saveTag', data) + }, + // 删除手工任务单 + manualTaskDelete(data) { + return request('delete', data) + }, + // 获取手工任务单详情 + manualTaskDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/manual-task/manualTaskDetailApi.js b/src/src/api/base/manual-task/manualTaskDetailApi.js new file mode 100644 index 0000000..9f41fad --- /dev/null +++ b/src/src/api/base/manual-task/manualTaskDetailApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/manualtaskdetail/` + url, ...arg) + +/** + * 手工任务单详情Api接口管理器 + * + * @author Luck + * @date 2024/08/06 17:10 + **/ +export default { + // 获取手工任务单详情分页 + manualTaskDetailPage(data) { + return request('page', data, 'get') + }, + // 提交手工任务单详情表单 edit为true时为编辑,默认为新增 + manualTaskDetailSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除手工任务单详情 + manualTaskDetailDelete(data) { + return request('delete', data) + }, + // 获取手工任务单详情详情 + manualTaskDetailDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/manual-task/manualTaskTagApi.js b/src/src/api/base/manual-task/manualTaskTagApi.js new file mode 100644 index 0000000..f849350 --- /dev/null +++ b/src/src/api/base/manual-task/manualTaskTagApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/manualtasktag/` + url, ...arg) + +/** + * 手工任务单标签Api接口管理器 + * + * @author Luck + * @date 2024/08/06 18:28 + **/ +export default { + // 获取手工任务单标签分页 + manualTaskTagPage(data) { + return request('page', data, 'get') + }, + // 获取手工任务单标签 列表 + manualTaskTagList(data) { + return request('list', data, 'get') + }, + // 提交手工任务单标签表单 edit为true时为编辑,默认为新增 + manualTaskTagSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除手工任务单标签 + manualTaskTagDelete(data) { + return request('delete', data) + }, + // 获取手工任务单标签详情 + manualTaskTagDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/material/materialApi.js b/src/src/api/base/material/materialApi.js new file mode 100644 index 0000000..e34d881 --- /dev/null +++ b/src/src/api/base/material/materialApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/material/` + url, ...arg) + +/** + * 物料Api接口管理器 + * + * @author Luck + * @date 2024/07/24 19:54 + **/ +export default { + // 获取物料分页 + materialPage(data) { + return request('page', data, 'get') + }, + // 获取物料 -- 物料包装数据 + materialPackageData(data) { + return request('package/data', data, 'get') + }, + // 提交物料表单 edit为true时为编辑,默认为新增 + materialSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除物料 + materialDelete(data) { + return request('delete', data) + }, + // 获取物料详情 + materialDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/material/materialCategoryApi.js b/src/src/api/base/material/materialCategoryApi.js new file mode 100644 index 0000000..5c32f5e --- /dev/null +++ b/src/src/api/base/material/materialCategoryApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/materialCategory/` + url, ...arg) + +/** + * 物料分类Api接口管理器 + * + * @author Luck + * @date 2024/07/24 19:35 + **/ +export default { + // 获取物料分类分页 + materialCategoryPage(data) { + return request('page', data, 'get') + }, + // 获取物料分类 树结构 + materialCategoryTree(data) { + return request('tree', data, 'get') + }, + // 提交物料分类表单 edit为true时为编辑,默认为新增 + materialCategorySubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除物料分类 + materialCategoryDelete(data) { + return request('delete', data) + }, + // 获取物料分类详情 + materialCategoryDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/production-organization/productionOrganizationApi.js b/src/src/api/base/production-organization/productionOrganizationApi.js new file mode 100644 index 0000000..f3e0451 --- /dev/null +++ b/src/src/api/base/production-organization/productionOrganizationApi.js @@ -0,0 +1,36 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/productionorganization/` + url, ...arg) + +/** + * 生产组织Api接口管理器 + * + * @author Luck + * @date 2024/07/23 15:26 + **/ +export default { + // 获取生产组织分页 + productionOrganizationPage(data) { + return request('page', data, 'get') + }, + // 获取生产组织 列表 + productionOrganizationList(data) { + return request('list', data, 'get') + }, + // 获取生产组织 树结构 + productionOrganizationTree(data) { + return request('tree', data, 'get') + }, + // 提交生产组织表单 edit为true时为编辑,默认为新增 + productionOrganizationSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产组织 + productionOrganizationDelete(data) { + return request('delete', data) + }, + // 获取生产组织详情 + productionOrganizationDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/base/store/sysStoreApi.js b/src/src/api/base/store/sysStoreApi.js new file mode 100644 index 0000000..cd38569 --- /dev/null +++ b/src/src/api/base/store/sysStoreApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/store/` + url, ...arg) + +/** + * 仓库Api接口管理器 + * + * @author Luck + * @date 2024/07/25 13:42 + **/ +export default { + // 获取仓库分页 + page(data) { + return request('page', data, 'get') + }, + // 提交仓库表单 edit为true时为编辑,默认为新增 + sysStoreSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除仓库 + sysStoreDelete(data) { + return request('delete', data) + }, + // 获取仓库详情 + sysStoreDetail(data) { + return request('detail', data, 'get') + }, + // 获取仓库树结构 + sysStoreTree(data) { + return request('tree', data, 'get') + }, +} diff --git a/src/src/api/base/unit/unitApi.js b/src/src/api/base/unit/unitApi.js new file mode 100644 index 0000000..41360c4 --- /dev/null +++ b/src/src/api/base/unit/unitApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/sysunit/` + url, ...arg) + +/** + * 单位Api接口管理器 + * + * @author Luck + * @date 2024/07/23 11:36 + **/ +export default { + // 获取单位分页 + sysUnitPage(data) { + return request('page', data, 'get') + }, + // 提交单位表单 edit为true时为编辑,默认为新增 + sysUnitSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除单位 + sysUnitDelete(data) { + return request('delete', data) + }, + // 获取单位详情 + sysUnitDetail(data) { + return request('detail', data, 'get') + }, + // 获取单位列表 + sysUnitList(data) { + return request(`groupList`, data, 'get') + }, +} diff --git a/src/src/api/base/unit/unitGroupsApi.js b/src/src/api/base/unit/unitGroupsApi.js new file mode 100644 index 0000000..753c0ef --- /dev/null +++ b/src/src/api/base/unit/unitGroupsApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/base/sysunitgroup/` + url, ...arg) + +/** + * 单位组Api接口管理器 + * + * @author Luck + * @date 2024/07/26 10:46 + **/ +export default { + // 获取单位组分页 + sysUnitGroupPage(data) { + return request('page', data, 'get') + }, + // 提交单位组表单 edit为true时为编辑,默认为新增 + sysUnitGroupSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除单位组 + sysUnitGroupDelete(data) { + return request('delete', data) + }, + // 获取单位组详情 + sysUnitGroupDetail(data) { + return request('detail', data, 'get') + }, + // 单位组列表 + sysUnitGroupList(data) { + return request('list', data, 'get') + }, +} diff --git a/src/src/api/base/wx/officialAccountApi.js b/src/src/api/base/wx/officialAccountApi.js new file mode 100644 index 0000000..97c6e15 --- /dev/null +++ b/src/src/api/base/wx/officialAccountApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/wx/officialaccount/` + url, ...arg) + +/** + * 公众号Api接口管理器 + * + * @author Luck + * @date 2024/07/25 11:03 + **/ +export default { + // 获取公众号分页 + page(data) { + return request('page', data, 'get') + }, + // 提交公众号表单 edit为true时为编辑,默认为新增 + officialAccountSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除公众号 + officialAccountDelete(data) { + return request('delete', data) + }, + // 获取公众号详情 + officialAccountDetail(data) { + return request('detail', data, 'get') + }, + // 获取公众号详情 + officialAccountList(data) { + return request('list', data, 'get') + } +} diff --git a/src/src/api/biz/bizDictApi.js b/src/src/api/biz/bizDictApi.js new file mode 100644 index 0000000..cc49cc0 --- /dev/null +++ b/src/src/api/biz/bizDictApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/dict/` + url, ...arg) +/** + * 字典 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取业务字典分页 + dictPage(data) { + return request('page', data, 'get') + }, + // 获取业务字典树 + dictTree(data) { + return request('tree', data, 'get') + }, + // 获取所有字典树 + dictTreeAll(data) { + return request('treeAll', data, 'get') + }, + // 编辑业务字典 + submitForm(data) { + return request('edit', data) + } +} diff --git a/src/src/api/biz/bizIndexApi.js b/src/src/api/biz/bizIndexApi.js new file mode 100644 index 0000000..f1ded64 --- /dev/null +++ b/src/src/api/biz/bizIndexApi.js @@ -0,0 +1,24 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/index/` + url, ...arg) + +/** + * 业务主页Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/11 14:46 + **/ +export default { + // 获取轮播图列表 + bizIndexSlideshowList(data) { + return request('slideshow/list', data, 'get') + }, + // 获取通知公告列表 + bizIndexNoticeList(data) { + return request('notice/list', data, 'get') + }, + // 获取通知公告详情 + bizIndexNoticeDetail(data) { + return request('notice/detail', data, 'get') + } +} diff --git a/src/src/api/biz/bizNoticeApi.js b/src/src/api/biz/bizNoticeApi.js new file mode 100644 index 0000000..c75200b --- /dev/null +++ b/src/src/api/biz/bizNoticeApi.js @@ -0,0 +1,36 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/notice/` + url, ...arg) + +/** + * 通知公告Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/11 14:46 + **/ +export default { + // 获取通知公告分页 + bizNoticePage(data) { + return request('page', data, 'get') + }, + // 提交通知公告表单 edit为true时为编辑,默认为新增 + bizNoticeSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除通知公告 + bizNoticeDelete(data) { + return request('delete', data) + }, + // 获取通知公告详情 + bizNoticeDetail(data) { + return request('detail', data, 'get') + }, + // 禁用通知公告 + bizNoticeDisableStatus(data) { + return request('disableStatus', data) + }, + // 启用通知公告 + bizNoticeEnableStatus(data) { + return request('enableStatus', data) + } +} diff --git a/src/src/api/biz/bizOrgApi.js b/src/src/api/biz/bizOrgApi.js new file mode 100644 index 0000000..bca4ea8 --- /dev/null +++ b/src/src/api/biz/bizOrgApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/org/` + url, ...arg) +/** + * 机构 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取机构分页 + orgPage(data) { + return request('page', data, 'get') + }, + // 获取机构列表 + orgList(data) { + return request('list', data, 'get') + }, + // 获取机构树 + orgTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除机构 + orgDelete(data) { + return request('delete', data) + }, + // 获取机构详情 + orgDetail(data) { + return request('detail', data, 'get') + }, + // 获取机构树选择器 + orgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取人员选择器 + orgUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/src/api/biz/bizPositionApi.js b/src/src/api/biz/bizPositionApi.js new file mode 100644 index 0000000..bf78532 --- /dev/null +++ b/src/src/api/biz/bizPositionApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/position/` + url, ...arg) +/** + * 岗位 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取岗位分页 + positionPage(data) { + return request('page', data, 'get') + }, + // 获取岗位列表 + positionList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除岗位 + positionDelete(data) { + return request('delete', data) + }, + // 获取岗位详情 + positionDetail(data) { + return request('detail', data, 'get') + }, + // 获取机构树选择器 + positionOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取岗位选择器 + positionPositionSelector(data) { + return request('positionSelector', data, 'get') + } +} diff --git a/src/src/api/biz/bizUserApi.js b/src/src/api/biz/bizUserApi.js new file mode 100644 index 0000000..afc81d8 --- /dev/null +++ b/src/src/api/biz/bizUserApi.js @@ -0,0 +1,85 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/user/` + url, ...arg) +/** + * 人员接口api + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取人员分页 + userPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除人员 + userDelete(data) { + return request('delete', data) + }, + // 获取人员详情 + userDetail(data) { + return request('detail', data, 'get') + }, + // 禁用人员 + userDisableUser(data) { + return request('disableUser', data) + }, + // 启用人员 + userEnableUser(data) { + return request('enableUser', data) + }, + // 重置人员密码 + userResetPassword(data) { + return request('resetPassword', data) + }, + // 获取组织选择器 + userOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + userPositionSelector(data) { + return request('positionSelector', data, 'get') + }, + // 获取角色选择器 + userRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取人员选择器 + userSelector(data) { + return request('userSelector', data, 'get') + }, + // 人员拥有角色 + userOwnRole(data) { + return request('ownRole', data, 'get') + }, + // 给人员授权角色 + grantRole(data) { + return request('grantRole', data) + }, + // 人员导出 + userExport(data) { + return request('export', data, 'get', { + responseType: 'blob' + }) + }, + // 导出人员个人信息 + userExportUserInfo(data) { + return request('exportUserInfo', data, 'get', { + responseType: 'blob' + }) + } +} diff --git a/src/src/api/biz/produceTagApi.js b/src/src/api/biz/produceTagApi.js new file mode 100644 index 0000000..a16b4d0 --- /dev/null +++ b/src/src/api/biz/produceTagApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/tag/` + url, ...arg) + +/** + * 生产标签Api接口管理器 + * + * @author Luck + * @date 2024/08/07 22:07 + **/ +export default { + // 获取生产标签分页 + produceTagPage(data) { + return request('page', data, 'get') + }, + // 获取生产标签 列表 + produceTagList(data) { + return request('list', data, 'get') + }, + // 提交生产标签表单 edit为true时为编辑,默认为新增 + produceTagSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产标签 + produceTagDelete(data) { + return request('delete', data) + }, + // 获取生产标签详情 + produceTagDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/dev/configApi.js b/src/src/api/dev/configApi.js new file mode 100644 index 0000000..736fb83 --- /dev/null +++ b/src/src/api/dev/configApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/config/` + url, ...arg) +/** + * 配置 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取配置分页 + configPage(data) { + return request('page', data, 'get') + }, + // 获取配置列表 + configList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除配置 + configDelete(data) { + return request('delete', data) + }, + // 获取配置详情 + configDetail(data) { + return request('detail', data, 'get') + }, + // 配置批量更新 + configEditForm(data) { + return request('editBatch', data) + }, + // 获取系统基础配置 + configSysBaseList(data) { + return request('sysBaseList', data, 'get') + } +} diff --git a/src/src/api/dev/dictApi.js b/src/src/api/dev/dictApi.js new file mode 100644 index 0000000..b4defe6 --- /dev/null +++ b/src/src/api/dev/dictApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/dict/` + url, ...arg) +/** + * 字典 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取字典分页 + dictPage(data) { + return request('page', data, 'get') + }, + // 获取字典列表 + dictList(data) { + return request('list', data, 'get') + }, + // 获取字典树 + dictTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除字典 + dictDelete(data) { + return request('delete', data) + }, + // 获取字典详情 + dictDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/dev/emailApi.js b/src/src/api/dev/emailApi.js new file mode 100644 index 0000000..8deea4c --- /dev/null +++ b/src/src/api/dev/emailApi.js @@ -0,0 +1,65 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/email/` + url, ...arg) +/** + * 邮件 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取邮件分页 + emailPage(data) { + return request('page', data, 'get') + }, + // 发送邮件——本地TXT + emailSendLocalTxt(data) { + return request('sendLocalTxt', data) + }, + // 发送邮件——本地HTML + emailSendLocalHtml(data) { + return request('sendLocalHtml', data) + }, + // 发送邮件——阿里云TXT + emailSendAliyunTxt(data) { + return request('sendAliyunTxt', data) + }, + // 发送邮件——阿里云HTML + emailSendAliyunHtml(data) { + return request('sendAliyunHtml', data) + }, + // 发送邮件——阿里云TMP + emailSendAliyunTmp(data) { + return request('sendAliyunTmp', data) + }, + // 发送邮件——腾讯云TXT + emailSendTencentTxt(data) { + return request('sendTencentTxt', data) + }, + // 发送邮件——腾讯云HTML + emailSendTencentHtml(data) { + return request('sendTencentHtml', data) + }, + // 发送邮件——腾讯云TMP + emailSendTencentTmp(data) { + return request('sendTencentTmp', data) + }, + // 删除邮件 + emailDelete(data) { + return request('delete', data) + }, + // 获取邮件详情 + emailDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/dev/fileApi.js b/src/src/api/dev/fileApi.js new file mode 100644 index 0000000..5c6d8f4 --- /dev/null +++ b/src/src/api/dev/fileApi.js @@ -0,0 +1,87 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/file/` + url, ...arg) +/** + * 文件 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 动态上传文件返回id + fileUploadDynamicReturnId(data) { + return request('uploadDynamicReturnId', data) + }, + // 动态上传文件返回url + fileUploadDynamicReturnUrl(data) { + return request('uploadDynamicReturnUrl', data) + }, + // 本地文件上传,返回文件id + fileUploadReturnId(data) { + return request('uploadLocalReturnId', data) + }, + // 阿里云文件上传,返回文件id + fileUploadAliyunReturnId(data) { + return request('uploadAliyunReturnId', data) + }, + // 腾讯云文件上传,返回文件id + fileUploadTencentReturnId(data) { + return request('uploadTencentReturnId', data) + }, + // MINIO文件上传,返回文件id + fileUploadMinioReturnId(data) { + return request('uploadMinioReturnId', data) + }, + // 本地文件上传,返回文件Url + fileUploadLocalReturnUrl(data) { + return request('uploadLocalReturnUrl', data) + }, + // 阿里云文件上传,返回文件Url + fileUploadAliyunReturnUrl(data) { + return request('uploadAliyunReturnUrl', data) + }, + // 腾讯云文件上传,返回文件Url + fileUploadTencentReturnUrl(data) { + return request('uploadTencentReturnUrl', data) + }, + // MINIO文件上传,返回文件Url + fileUploadMinioReturnUrl(data) { + return request('uploadMinioReturnUrl', data) + }, + // 获取文件分页列表 + filePage(data) { + return request('page', data, 'get') + }, + // 获取文件列表 + fileList(data) { + return request('list', data, 'get') + }, + // 下载文件,这里要带上blob类型 + fileDownload(data) { + return request('download', data, 'get', { + responseType: 'blob' + }) + }, + // 获取文件详情 + fileDetail(data) { + return request('detail', data, 'get') + }, + // 根据文件url集合获取文件集合 + fileGetFileListByUrlList(data) { + return request('getFileListByUrlList', data) + }, + // 删除文件 + fileDelete(data) { + return request('delete', data) + } +} diff --git a/src/src/api/dev/jobApi.js b/src/src/api/dev/jobApi.js new file mode 100644 index 0000000..a519c4a --- /dev/null +++ b/src/src/api/dev/jobApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/job/` + url, ...arg) +/** + * 定时任务 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取定时任务分页 + jobPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除定时任务 + jobDelete(data) { + return request('delete', data) + }, + // 获取定时任务详情 + jobDetail(data) { + return request('detail', data, 'get') + }, + // 停止定时任务 + jobStopJob(data) { + return request('stopJob', data) + }, + // 运行定时任务 + jobRunJob(data) { + return request('runJob', data) + }, + // 运行定时任务 + jobRunJobNow(data) { + return request('runJobNow', data) + }, + // 获取定时任务类 + jobGetActionClass(data) { + return request('getActionClass', data, 'get') + } +} diff --git a/src/src/api/dev/logApi.js b/src/src/api/dev/logApi.js new file mode 100644 index 0000000..e4dcf78 --- /dev/null +++ b/src/src/api/dev/logApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/log/` + url, ...arg) +/** + * 日志 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取日志分页 + logPage(data) { + return request('page', data, 'get') + }, + // 获取日志详情 + logDetail(data) { + return request('detail', data, 'get') + }, + // 获取访问日志折线图数据 + logVisLineChartData(data) { + return request('vis/lineChartData', data, 'get') + }, + // 获取访问日志饼状图数据 + logVisPieChartData(data) { + return request('vis/pieChartData', data, 'get') + }, + // 获取操作日志柱状图数据 + logOpBarChartData(data) { + return request('op/barChartData', data, 'get') + }, + // 获取操作日志饼状图数据 + logOpPieChartData(data) { + return request('op/pieChartData', data, 'get') + }, + // 清空日志 + logDelete(data) { + return request('delete', data) + } +} diff --git a/src/src/api/dev/messageApi.js b/src/src/api/dev/messageApi.js new file mode 100644 index 0000000..8cd2cb4 --- /dev/null +++ b/src/src/api/dev/messageApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/message/` + url, ...arg) +/** + * 站内信 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取站内信分页 + messagePage(data) { + return request('page', data, 'get') + }, + // 获取站内信分页 + messageSend(data) { + return request('send', data) + }, + // 删除站内信 + messageDelete(data) { + return request('delete', data) + }, + // 获取站内信详情 + messageDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/dev/monitorApi.js b/src/src/api/dev/monitorApi.js new file mode 100644 index 0000000..166cf85 --- /dev/null +++ b/src/src/api/dev/monitorApi.js @@ -0,0 +1,29 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/monitor/` + url, ...arg) +/** + * 监控 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取服务器监控信息 + monitorServerInfo(data) { + return request('serverInfo', data, 'get') + }, + // 获取服务器网络情况 + monitorNetworkInfo(data) { + return request('networkInfo', data, 'get') + } +} diff --git a/src/src/api/dev/slideshowApi.js b/src/src/api/dev/slideshowApi.js new file mode 100644 index 0000000..2f61c81 --- /dev/null +++ b/src/src/api/dev/slideshowApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/slideshow/` + url, ...arg) + +/** + * 轮播图Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/13 00:31 + **/ +export default { + // 获取轮播图分页 + devSlideshowPage(data) { + return request('page', data, 'get') + }, + // 提交轮播图表单 edit为true时为编辑,默认为新增 + devSlideshowSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除轮播图 + devSlideshowDelete(data) { + return request('delete', data) + }, + // 禁用轮播图 + devSlideshowDisableStatus(data) { + return request('disableStatus', data) + }, + // 启用轮播图 + devSlideshowEnableStatus(data) { + return request('enableStatus', data) + } +} diff --git a/src/src/api/dev/smsApi.js b/src/src/api/dev/smsApi.js new file mode 100644 index 0000000..82f6e55 --- /dev/null +++ b/src/src/api/dev/smsApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/sms/` + url, ...arg) +/** + * 短信 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取短信分页 + smsPage(data) { + return request('page', data, 'get') + }, + // 发送短信——阿里云 + smsSendAliyun(data) { + return request('sendAliyun', data) + }, + // 发送短信——腾讯云 + smsSendTencent(data) { + return request('sendTencent', data) + }, + // 发送短信——小诺短信 + smsSendXiaonuo(data) { + return request('sendXiaonuo', data) + }, + // 删除短信 + smsDelete(data) { + return request('delete', data) + }, + // 获取短信详情 + smsDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/gen/genBasicApi.js b/src/src/api/gen/genBasicApi.js new file mode 100644 index 0000000..45845c3 --- /dev/null +++ b/src/src/api/gen/genBasicApi.js @@ -0,0 +1,49 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/gen/basic/` + url, ...arg) + +export default { + // 获取代码生成基础分页 + basicPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除代码生成基础 + basicDelete(data) { + return request('delete', data) + }, + // 获取代码生成基础详情 + basicDetail(data) { + return request('detail', data, 'get') + }, + // 获取所有表信息 + basicTables(data) { + return request('tables', data, 'get') + }, + // 获取表内所有字段信息 + basicTableColumns(data) { + return request('tableColumns', data, 'get') + }, + // 执行代码生成 压缩包 + basicExecGenBiz(data) { + const options = { + responseType: 'blob' + } + return request('execGenZip', data, 'get', options) + }, + // 执行代码生成 项目内 + basicExecGenPro(data) { + return request('execGenPro', data) + }, + // 预览代码生成 + basicPreviewGen(data) { + return request('previewGen', data, 'get') + }, + // 获取所有移动端模块 + basicMobileModuleSelector(data) { + return request('mobileModuleSelector', data, 'get') + } +} diff --git a/src/src/api/gen/genConfigApi.js b/src/src/api/gen/genConfigApi.js new file mode 100644 index 0000000..491efaa --- /dev/null +++ b/src/src/api/gen/genConfigApi.js @@ -0,0 +1,26 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/gen/config/` + url, ...arg) + +export default { + // 获取代码生成详情配置列表 + configList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除代码生成详情配置 + configDelete(data) { + return request('delete', data) + }, + // 获取代码生成详情配置详情 + configDetail(data) { + return request('detail', data, 'get') + }, + // 批量编辑代码生成详细配置 + configEditBatch(data) { + return request('editBatch', data) + } +} diff --git a/src/src/api/mobile/resource/buttonApi.js b/src/src/api/mobile/resource/buttonApi.js new file mode 100644 index 0000000..cddb4d9 --- /dev/null +++ b/src/src/api/mobile/resource/buttonApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/button/` + url, ...arg) +/** + * 按钮 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取按钮分页 + mobileButtonPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + mobileButtonSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除按钮 + mobileButtonDelete(data) { + return request('delete', data) + }, + // 获取按钮详情 + mobileButtonDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/mobile/resource/menuApi.js b/src/src/api/mobile/resource/menuApi.js new file mode 100644 index 0000000..43ba5ff --- /dev/null +++ b/src/src/api/mobile/resource/menuApi.js @@ -0,0 +1,40 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/menu/` + url, ...arg) + +/** + * 移动端菜单Api接口管理器 + * + * @author yubaoshan + * @date 2023/01/28 22:42 + **/ +export default { + // 获取移动端菜单tree + mobileMenuTree(data) { + return request('tree', data, 'get') + }, + // 提交移动端菜单表单 edit为true时为编辑,默认为新增 + mobileMenuSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 更改菜单所属模块 + mobileMenuChangeModule(data) { + return request('changeModule', data) + }, + // 删除移动端菜单 + mobileMenuDelete(data) { + return request('delete', data) + }, + // 获取移动端菜单详情 + mobileMenuDetail(data) { + return request('detail', data, 'get') + }, + // 获取模块选择器 + mobileMenuModuleSelector(data) { + return request('moduleSelector', data, 'get') + }, + // 获取菜单树选择器 + mobileMenuTreeSelector(data) { + return request('menuTreeSelector', data, 'get') + } +} diff --git a/src/src/api/mobile/resource/moduleApi.js b/src/src/api/mobile/resource/moduleApi.js new file mode 100644 index 0000000..c216eba --- /dev/null +++ b/src/src/api/mobile/resource/moduleApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/module/` + url, ...arg) +/** + * 类别 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取类别分页 + modulePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除类别 + moduleDelete(data) { + return request('delete', data) + }, + // 获取类别详情 + moduleDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/production/produce/produceTagApi.js b/src/src/api/production/produce/produceTagApi.js new file mode 100644 index 0000000..1b91db8 --- /dev/null +++ b/src/src/api/production/produce/produceTagApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/tag/` + url, ...arg) + +/** + * 生产标签Api接口管理器 + * + * @author Luck + * @date 2024/08/08 20:15 + **/ +export default { + // 获取生产标签分页 + produceTagPage(data) { + return request('page', data, 'get') + }, + // 提交生产标签表单 edit为true时为编辑,默认为新增 + produceTagSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产标签 + produceTagDelete(data) { + return request('delete', data) + }, + // 获取生产标签详情 + produceTagDetail(data) { + return request('detail', data, 'get') + }, + // 获取生产标签详情 + produceTagList(data) { + return request('list', data, 'get') + } +} diff --git a/src/src/api/production/produceReport/produceReportApi.js b/src/src/api/production/produceReport/produceReportApi.js new file mode 100644 index 0000000..5117b1a --- /dev/null +++ b/src/src/api/production/produceReport/produceReportApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/report/` + url, ...arg) + +/** + * 生产汇报单Api接口管理器 + * + * @author Luck + * @date 2024/08/15 10:56 + **/ +export default { + // 获取生产汇报单分页 + produceReportPage(data) { + return request('page', data, 'get') + }, + // 提交生产汇报单表单 edit为true时为编辑,默认为新增 + produceReportSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产汇报单 + produceReportDelete(data) { + return request('delete', data) + }, + // 获取生产汇报单详情 + produceReportDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/production/produceTask/producePackageBarcodeApi.js b/src/src/api/production/produceTask/producePackageBarcodeApi.js new file mode 100644 index 0000000..731ec9b --- /dev/null +++ b/src/src/api/production/produceTask/producePackageBarcodeApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/barcode/` + url, ...arg) + +/** + * 生产产品包装条码Api接口管理器 + * + * @author Luck + * @date 2024/08/16 14:50 + **/ +export default { + // 获取生产产品包装条码分页 + producePackageBarcodePage(data) { + return request('page', data, 'get') + }, + // 提交生产产品包装条码表单 edit为true时为编辑,默认为新增 + producePackageBarcodeSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产产品包装条码 + producePackageBarcodeDelete(data) { + return request('delete', data) + }, + // 获取生产产品包装条码详情 + producePackageBarcodeDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/production/produceTask/produceReportApi.js b/src/src/api/production/produceTask/produceReportApi.js new file mode 100644 index 0000000..66b8687 --- /dev/null +++ b/src/src/api/production/produceTask/produceReportApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/report/` + url, ...arg) + +/** + * 生产汇报单Api接口管理器 + * + * @author Luck + * @date 2024/08/16 13:50 + **/ +export default { + // 获取生产汇报单分页 + produceReportPage(data) { + return request('page', data, 'get') + }, + // 提交生产汇报单表单 edit为true时为编辑,默认为新增 + produceReportSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产汇报单 + produceReportDelete(data) { + return request('delete', data) + }, + // 获取生产汇报单详情 + produceReportDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/production/produceTask/produceTaskApi.js b/src/src/api/production/produceTask/produceTaskApi.js new file mode 100644 index 0000000..5dc3f63 --- /dev/null +++ b/src/src/api/production/produceTask/produceTaskApi.js @@ -0,0 +1,36 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/produce/task/` + url, ...arg) + +/** + * 生产任务单Api接口管理器 + * + * @author Luck + * @date 2024/08/06 10:39 + **/ +export default { + // 获取生产任务单分页 + produceTaskPage(data) { + return request('page', data, 'get') + }, + // 提交生产任务单表单 edit为true时为编辑,默认为新增 + produceTaskSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除生产任务单 + produceTaskDelete(data) { + return request('delete', data) + }, + // 获取生产任务单详情 + produceTaskDetail(data) { + return request('detail', data, 'get') + }, + // 审核任务单 + produceTaskAuditPass(data) { + return request('audit/pass', data, 'post') + }, + // 回退任务单 + produceTaskAudiTask(data) { + return request('audit/back', data, 'post') + } +} diff --git a/src/src/api/sys/indexApi.js b/src/src/api/sys/indexApi.js new file mode 100644 index 0000000..2b746c7 --- /dev/null +++ b/src/src/api/sys/indexApi.js @@ -0,0 +1,65 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/index/` + url, ...arg) +/** + * 系统首页控制器 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 添加当前用户日程 + indexScheduleAdd(data) { + return request('schedule/add', data) + }, + // 删除日程 + indexScheduleDeleteSchedule(data) { + return request('schedule/deleteSchedule', data) + }, + // 获取当前用户日程列表 + indexScheduleList(data) { + return request('schedule/list', data, 'get') + }, + // 获取当前用户站内信列表 + indexMessageList(data) { + return request('message/list', data, 'get') + }, + // 获取站内信详情 + indexMessageDetail(data) { + return request('message/detail', data, 'get') + }, + //站内信全部标记已读 + indexMessageAllMarkRead(data) { + return request('message/allMessageMarkRead', data) + }, + // 获取当前用户访问日志列表 + indexVisLogList(data) { + return request('visLog/list', data, 'get') + }, + // 获取当前用户操作日志列表 + indexOpLogList(data) { + return request('opLog/list', data, 'get') + }, + // 获取基础系统业务数据 + indexBizDataCount(data) { + return request('bizDataCount', data, 'get') + }, + // 获取运维一览数据 + indexOpDataCount(data) { + return request('opDataCount', data, 'get') + }, + // 获取基础工具数据 + indexToolDataCount(data) { + return request('toolDataCount', data, 'get') + } +} diff --git a/src/src/api/sys/orgApi.js b/src/src/api/sys/orgApi.js new file mode 100644 index 0000000..45d9570 --- /dev/null +++ b/src/src/api/sys/orgApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/org/` + url, ...arg) +/** + * 机构 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取组织分页 + orgPage(data) { + return request('page', data, 'get') + }, + // 获取组织列表 + orgList(data) { + return request('list', data, 'get') + }, + // 获取组织树 + orgTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除组织 + orgDelete(data) { + return request('delete', data) + }, + // 获取组织详情 + orgDetail(data) { + return request('detail', data, 'get') + }, + // 获取组织树选择器 + orgOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取用户选择器 + orgUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/src/api/sys/positionApi.js b/src/src/api/sys/positionApi.js new file mode 100644 index 0000000..f15b535 --- /dev/null +++ b/src/src/api/sys/positionApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/position/` + url, ...arg) +/** + * 职位 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取职位分页 + positionPage(data) { + return request('page', data, 'get') + }, + // 获取职位列表 + positionList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除职位 + positionDelete(data) { + return request('delete', data) + }, + // 获取职位详情 + positionDetail(data) { + return request('detail', data, 'get') + }, + // 获取组织树选择器 + positionOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + positionPositionSelector(data) { + return request('positionSelector', data, 'get') + } +} diff --git a/src/src/api/sys/resource/buttonApi.js b/src/src/api/sys/resource/buttonApi.js new file mode 100644 index 0000000..d609524 --- /dev/null +++ b/src/src/api/sys/resource/buttonApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/button/` + url, ...arg) +/** + * 按钮 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取按钮分页 + buttonPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除按钮 + buttonDelete(data) { + return request('delete', data) + }, + // 获取按钮详情 + buttonDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/sys/resource/fieldApi.js b/src/src/api/sys/resource/fieldApi.js new file mode 100644 index 0000000..381cc90 --- /dev/null +++ b/src/src/api/sys/resource/fieldApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/field/` + url, ...arg) +/** + * 字段 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取字段分页 + fieldPage(data) { + return request('page', data, 'get') + }, + // 获取字段树 + fieldTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除字段 + fieldDelete(data) { + return request('delete', data) + }, + // 获取字段详情 + fieldDetail(data) { + return request('detail', data, 'get') + }, + // 获取菜单树选择器 + fieldMenuTreeSelector(data) { + return request('MenuTreeSelector', data, 'get') + } +} diff --git a/src/src/api/sys/resource/menuApi.js b/src/src/api/sys/resource/menuApi.js new file mode 100644 index 0000000..fb6df87 --- /dev/null +++ b/src/src/api/sys/resource/menuApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/menu/` + url, ...arg) +/** + * 菜单 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取菜单树 + menuTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 更改菜单所属模块 + menuChangeModule(data) { + return request('changeModule', data) + }, + // 删除菜单 + menuDelete(data) { + return request('delete', data) + }, + // 获取菜单详情 + menuDetail(data) { + return request('detail', data, 'get') + }, + // 获取模块选择器 + menuModuleSelector(data) { + return request('moduleSelector', data, 'get') + }, + // 获取菜单树选择器 + menuTreeSelector(data) { + return request('menuTreeSelector', data, 'get') + } +} diff --git a/src/src/api/sys/resource/moduleApi.js b/src/src/api/sys/resource/moduleApi.js new file mode 100644 index 0000000..15cd153 --- /dev/null +++ b/src/src/api/sys/resource/moduleApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/module/` + url, ...arg) +/** + * 模块 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取模块分页 + modulePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除模块 + moduleDelete(data) { + return request('delete', data) + }, + // 获取模块详情 + moduleDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/src/api/sys/roleApi.js b/src/src/api/sys/roleApi.js new file mode 100644 index 0000000..8f1f116 --- /dev/null +++ b/src/src/api/sys/roleApi.js @@ -0,0 +1,93 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/role/` + url, ...arg) +/** + * 角色 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取角色分页 + rolePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除角色 + roleDelete(data) { + return request('delete', data) + }, + // 获取角色详情 + roleDetail(data) { + return request('detail', data, 'get') + }, + // 获取角色拥有资源 + roleOwnResource(data) { + return request('ownResource', data, 'get') + }, + // 给角色授权资源 + roleGrantResource(data) { + return request('grantResource', data) + }, + // 获取角色拥有移动端菜单 + roleOwnMobileMenu(data) { + return request('ownMobileMenu', data, 'get') + }, + // 给角色授权移动端菜单 + roleGrantMobileMenu(data) { + return request('grantMobileMenu', data) + }, + // 获取角色拥有权限 + roleOwnPermission(data) { + return request('ownPermission', data, 'get') + }, + // 给角色授权权限 + roleGrantPermission(data) { + return request('grantPermission', data) + }, + // 获取角色下的用户 + roleOwnUser(data) { + return request('ownUser', data, 'get') + }, + // 给角色授权用户 + roleGrantUser(data) { + return request('grantUser', data) + }, + // 获取机构树 + roleOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取资源授权树 + roleResourceTreeSelector(data) { + return request('resourceTreeSelector', data, 'get') + }, + // 获取移动端菜单授权树 + roleMobileMenuTreeSelector(data) { + return request('mobileMenuTreeSelector', data, 'get') + }, + // 获取权限授权树 + rolePermissionTreeSelector(data) { + return request('permissionTreeSelector', data, 'get') + }, + // 获取角色选择器 + roleRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取用户选择器 + roleUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/src/api/sys/userApi.js b/src/src/api/sys/userApi.js new file mode 100644 index 0000000..eefea01 --- /dev/null +++ b/src/src/api/sys/userApi.js @@ -0,0 +1,111 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/user/` + url, ...arg) +/** + * 用户接口api + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取用户分页 + userPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除用户 + userDelete(data) { + return request('delete', data) + }, + // 获取用户详情 + userDetail(data) { + return request('detail', data, 'get') + }, + // 禁用用户 + userDisableUser(data) { + return request('disableUser', data) + }, + // 启用用户 + userEnableUser(data) { + return request('enableUser', data) + }, + // 重置用户密码 + userResetPassword(data) { + return request('resetPassword', data) + }, + // 获取组织选择器 + userOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + userPositionSelector(data) { + return request('positionSelector', data, 'get') + }, + // 获取角色选择器 + userRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取用户选择器 + userSelector(data) { + return request('userSelector', data, 'get') + }, + // 用户拥有角色 + userOwnRole(data) { + return request('ownRole', data, 'get') + }, + // 给用户授权角色 + grantRole(data) { + return request('grantRole', data) + }, + // 获取用户拥有资源 + userOwnResource(data) { + return request('ownResource', data, 'get') + }, + // 给用户授权资源 + userGrantResource(data) { + return request('grantResource', data) + }, + // 获取用户拥有权限 + userOwnPermission(data) { + return request('ownPermission', data, 'get') + }, + // 给用户授权权限 + userGrantPermission(data) { + return request('grantPermission', data) + }, + // 下载用户导入模板 + userDownloadImportUserTemplate(data) { + return request('downloadImportUserTemplate', data, 'get', { + responseType: 'blob' + }) + }, + // 用户导入 + userImport(data) { + return request('import', data) + }, + // 用户导出 + userExport(data) { + return request('export', data, 'get', { + responseType: 'blob' + }) + }, + // 导出用户个人信息 + userExportUserInfo(data) { + return request('exportUserInfo', data, 'get', { + responseType: 'blob' + }) + } +} diff --git a/src/src/api/sys/userCenterApi.js b/src/src/api/sys/userCenterApi.js new file mode 100644 index 0000000..e66105c --- /dev/null +++ b/src/src/api/sys/userCenterApi.js @@ -0,0 +1,105 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/userCenter/` + url, ...arg) +/** + * 用户个人控制器 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取图片验证码 + userGetPicCaptcha(data) { + return request('getPicCaptcha', data, 'get') + }, + // 找回密码获取手机验证码 + userFindPasswordGetPhoneValidCode(data) { + return request('findPasswordGetPhoneValidCode', data, 'get') + }, + // 找回密码获取邮箱验证码 + userFindPasswordGetEmailValidCode(data) { + return request('findPasswordGetEmailValidCode', data, 'get') + }, + // 通过手机号找回用户密码 + userFindPasswordByPhone(data) { + return request('findPasswordByPhone', data) + }, + // 通过邮箱找回用户密码 + userFindPasswordByEmail(data) { + return request('findPasswordByEmail', data) + }, + // 修改用户密码 + userUpdatePassword(data) { + return request('updatePassword', data) + }, + // 修改用户头像 + userUpdateAvatar(data) { + return request('updateAvatar', data) + }, + // 修改用户签名图片 + userUpdateSignature(data) { + return request('updateSignature', data) + }, + // 获取登录用户的菜单 + userLoginMenu(data) { + return request('loginMenu', data, 'get') + }, + // 获取登录用户组织树 + userLoginOrgTree(data) { + return request('loginOrgTree', data, 'get') + }, + // 获取登录用户的职位信息 + userLoginPositionInfo(data) { + return request('loginPositionInfo', data, 'get') + }, + // 编辑个人信息 + userUpdateUserInfo(data) { + return request('updateUserInfo', data) + }, + // 编辑个人工作台 + userUpdateUserWorkbench(data) { + return request('updateUserWorkbench', data) + }, + // 获取登录用户的工作台 + userLoginWorkbench(data) { + return request('loginWorkbench', data, 'get') + }, + // 获取登录用户的站内信分页 + userLoginUnreadMessagePage(data) { + return request('loginUnreadMessagePage', data, 'get') + }, + // 读取登录用户站内信详情 + userLoginUnreadMessageDetail(data) { + return request('loginUnreadMessageDetail', data, 'get') + }, + // 根据id集合获取组织集合 + userCenterGetOrgListByIdList(data) { + return request('getOrgListByIdList', data) + }, + // 根据id集合获取用户集合 + userCenterGetUserListByIdList(data) { + return request('getUserListByIdList', data) + }, + // 根据id集合获取职位集合 + userCenterGetPositionListByIdList(data) { + return request('getPositionListByIdList', data) + }, + // 根据id集合获取角色集合 + userCenterGetRoleListByIdList(data) { + return request('getRoleListByIdList', data) + }, + // 根据id获取头像 + userCenterGtAvatarById(data) { + return request('getAvatarById', data) + } +} diff --git a/src/src/assets/icons/GiteeIcon.vue b/src/src/assets/icons/GiteeIcon.vue new file mode 100644 index 0000000..21dcad1 --- /dev/null +++ b/src/src/assets/icons/GiteeIcon.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/src/assets/icons/index.js b/src/src/assets/icons/index.js new file mode 100644 index 0000000..c0d89c6 --- /dev/null +++ b/src/src/assets/icons/index.js @@ -0,0 +1,13 @@ +/* + ** 全局注册Icon组件 + * 推荐前往https://icones.js.org下载图标的Vue文件,然后放在src/assets/icons文件夹里面 + * 这个网址有118个图标集,包括antd、bootstrap、eleme等累计140456个图标 + */ +import { defineAsyncComponent } from 'vue' +const components = import.meta.glob('./**/*.vue') // 异步方式 +export default function install(app) { + for (const [key, value] of Object.entries(components)) { + const name = key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')) + app.component(name, defineAsyncComponent(value)) + } +} diff --git a/src/src/assets/icons/mobile/filled/iconfont.css b/src/src/assets/icons/mobile/filled/iconfont.css new file mode 100644 index 0000000..a4e757d --- /dev/null +++ b/src/src/assets/icons/mobile/filled/iconfont.css @@ -0,0 +1,173 @@ +@font-face { + font-family: "snowy"; /* Project id 3880534 */ + src: url('iconfont.ttf?t=1675528061732') format('truetype'); +} + +.snowy { + font-family: "snowy" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.arrow-up-filling:before { + content: "\e688"; +} + +.arrow-down-filling:before { + content: "\e689"; +} + +.arrow-left-filling:before { + content: "\e68a"; +} + +.arrow-right-filling:before { + content: "\e68b"; +} + +.caps-unlock-filling:before { + content: "\e68c"; +} + +.comment-filling:before { + content: "\e68d"; +} + +.check-item-filling:before { + content: "\e68e"; +} + +.clock-filling:before { + content: "\e68f"; +} + +.delete-filling:before { + content: "\e690"; +} + +.decline-filling:before { + content: "\e691"; +} + +.dynamic-filling:before { + content: "\e692"; +} + +.intermediate-filling:before { + content: "\e693"; +} + +.favorite-filling:before { + content: "\e694"; +} + +.layout-filling:before { + content: "\e695"; +} + +.help-filling:before { + content: "\e696"; +} + +.history-filling:before { + content: "\e697"; +} + +.filter-filling:before { + content: "\e698"; +} + +.file-common-filling:before { + content: "\e699"; +} + +.news-filling:before { + content: "\e69a"; +} + +.edit-filling:before { + content: "\e69b"; +} + +.fullscreen-expand-filling:before { + content: "\e69c"; +} + +.smile-filling:before { + content: "\e69d"; +} + +.rise-filling:before { + content: "\e69e"; +} + +.picture-filling:before { + content: "\e69f"; +} + +.notification-filling:before { + content: "\e6a0"; +} + +.user-filling:before { + content: "\e6a1"; +} + +.setting-filling:before { + content: "\e6a2"; +} + +.switch-filling:before { + content: "\e6a3"; +} + +.work-filling:before { + content: "\e6a4"; +} + +.task-filling:before { + content: "\e6a5"; +} + +.success-filling:before { + content: "\e6a6"; +} + +.warning-filling:before { + content: "\e6a7"; +} + +.folder-filling:before { + content: "\e6a8"; +} + +.map-filling:before { + content: "\e6a9"; +} + +.prompt-filling:before { + content: "\e6aa"; +} + +.meh-filling:before { + content: "\e6ab"; +} + +.cry-filling:before { + content: "\e6ac"; +} + +.top-filling:before { + content: "\e6ad"; +} + +.home-filling:before { + content: "\e6ae"; +} + +.sorting:before { + content: "\e6af"; +} + diff --git a/src/src/assets/icons/mobile/filled/iconfont.json b/src/src/assets/icons/mobile/filled/iconfont.json new file mode 100644 index 0000000..5189f8e --- /dev/null +++ b/src/src/assets/icons/mobile/filled/iconfont.json @@ -0,0 +1,289 @@ +{ + "id": "3880534", + "name": "snowy-app-filled", + "font_family": "snowy", + "css_prefix_text": "", + "description": "", + "glyphs": [ + { + "icon_id": "15838581", + "name": "arrow-up-filling", + "font_class": "arrow-up-filling", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "15838582", + "name": "arrow-down-filling", + "font_class": "arrow-down-filling", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "15838583", + "name": "arrow-left-filling", + "font_class": "arrow-left-filling", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15838584", + "name": "arrow-right-filling", + "font_class": "arrow-right-filling", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15838585", + "name": "caps-unlock-filling", + "font_class": "caps-unlock-filling", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "15838586", + "name": "comment-filling", + "font_class": "comment-filling", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "15838587", + "name": "check-item-filling", + "font_class": "check-item-filling", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "15838588", + "name": "clock-filling", + "font_class": "clock-filling", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "15838589", + "name": "delete-filling", + "font_class": "delete-filling", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "15838590", + "name": "decline-filling", + "font_class": "decline-filling", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "15838591", + "name": "dynamic-filling", + "font_class": "dynamic-filling", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "15838592", + "name": "intermediate-filling", + "font_class": "intermediate-filling", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "15838593", + "name": "favorite-filling", + "font_class": "favorite-filling", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "15838594", + "name": "layout-filling", + "font_class": "layout-filling", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "15838595", + "name": "help-filling", + "font_class": "help-filling", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "15838596", + "name": "history-filling", + "font_class": "history-filling", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "15838597", + "name": "filter-filling", + "font_class": "filter-filling", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "15838598", + "name": "file-common-filling", + "font_class": "file-common-filling", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "15838599", + "name": "news-filling", + "font_class": "news-filling", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "15838600", + "name": "edit-filling", + "font_class": "edit-filling", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "15838601", + "name": "fullscreen-expand-filling", + "font_class": "fullscreen-expand-filling", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "15838602", + "name": "smile-filling", + "font_class": "smile-filling", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "15838603", + "name": "rise-filling", + "font_class": "rise-filling", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "15838604", + "name": "picture-filling", + "font_class": "picture-filling", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "15838605", + "name": "notification-filling", + "font_class": "notification-filling", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "15838606", + "name": "user-filling", + "font_class": "user-filling", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "15838607", + "name": "setting-filling", + "font_class": "setting-filling", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "15838608", + "name": "switch-filling", + "font_class": "switch-filling", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "15838609", + "name": "work-filling", + "font_class": "work-filling", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "15838610", + "name": "task-filling", + "font_class": "task-filling", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "15838611", + "name": "success-filling", + "font_class": "success-filling", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "15838612", + "name": "warning-filling", + "font_class": "warning-filling", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "15838613", + "name": "folder-filling", + "font_class": "folder-filling", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "15838614", + "name": "map-filling", + "font_class": "map-filling", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "15838615", + "name": "prompt-filling", + "font_class": "prompt-filling", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "15838616", + "name": "meh-filling", + "font_class": "meh-filling", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "15838617", + "name": "cry-filling", + "font_class": "cry-filling", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "15838618", + "name": "top-filling", + "font_class": "top-filling", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "15838619", + "name": "home-filling", + "font_class": "home-filling", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "15838620", + "name": "sorting", + "font_class": "sorting", + "unicode": "e6af", + "unicode_decimal": 59055 + } + ] +} diff --git a/src/src/assets/icons/mobile/filled/iconfont.ttf b/src/src/assets/icons/mobile/filled/iconfont.ttf new file mode 100644 index 0000000..8fbd181 Binary files /dev/null and b/src/src/assets/icons/mobile/filled/iconfont.ttf differ diff --git a/src/src/assets/icons/mobile/index.js b/src/src/assets/icons/mobile/index.js new file mode 100644 index 0000000..6ed837b --- /dev/null +++ b/src/src/assets/icons/mobile/index.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import './line/iconfont.css' +import lineJsonData from './line/iconfont.json' + +import './filled/iconfont.css' +import filledJsonData from './filled/iconfont.json' + +export default { + icons: [ + { + name: '基础', + key: 'default', + iconItem: [ + { + name: '线框风格', + key: 'default', + item: lineJsonData.glyphs + }, + { + name: '实底风格', + key: 'filled', + item: filledJsonData.glyphs + } + ] + } + ] +} diff --git a/src/src/assets/icons/mobile/line/iconfont.css b/src/src/assets/icons/mobile/line/iconfont.css new file mode 100644 index 0000000..4042c72 --- /dev/null +++ b/src/src/assets/icons/mobile/line/iconfont.css @@ -0,0 +1,825 @@ +@font-face { + font-family: "snowy"; /* Project id 3791763 */ + src: url('iconfont.ttf?t=1675526220710') format('truetype'); +} + +.snowy { + font-family: "snowy" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.export-outlined:before { + content: "\e792"; +} + +.experiment-outlined:before { + content: "\e7c9"; +} + +.expand-outlined:before { + content: "\e915"; +} + +.expand-alt-outlined:before { + content: "\e7e9"; +} + +.exception-outlined:before { + content: "\e7bb"; +} + +.euro-outlined:before { + content: "\e78f"; +} + +.euro-circle-outlined:before { + content: "\eb62"; +} + +.environment-outlined:before { + content: "\e790"; +} + +.ellipsis-outlined:before { + content: "\e815"; +} + +.download-outlined:before { + content: "\e814"; +} + +.dollar-outlined:before { + content: "\e78d"; +} + +.dollar-circle-outlined:before { + content: "\eb61"; +} + +.dislike-outlined:before { + content: "\e7c8"; +} + +.disconnect-outlined:before { + content: "\e7e8"; +} + +.dingtalk-outlined:before { + content: "\e881"; +} + +.desktop-outlined:before { + content: "\e845"; +} + +.deployment-unit-outlined:before { + content: "\e7d2"; +} + +.delivered-procedure-outlined:before { + content: "\e911"; +} + +.delete-column-outlined:before { + content: "\e901"; +} + +.delete-row-outlined:before { + content: "\e902"; +} + +.database-outlined:before { + content: "\e7b9"; +} + +.dashboard-outlined:before { + content: "\e78b"; +} + +.customer-service-outlined:before { + content: "\e7ca"; +} + +.crown-outlined:before { + content: "\e844"; +} + +.credit-card-outlined:before { + content: "\e7e5"; +} + +.copyright-outlined:before { + content: "\e789"; +} + +.copyright-circle-outlined:before { + content: "\eb60"; +} + +.control-outlined:before { + content: "\e79c"; +} + +.container-outlined:before { + content: "\e7b8"; +} + +.contacts-outlined:before { + content: "\e7e4"; +} + +.console-sql-outlined:before { + content: "\e910"; +} + +.compress-outlined:before { + content: "\e914"; +} + +.compass-outlined:before { + content: "\e786"; +} + +.comment-outlined:before { + content: "\e8ea"; +} + +.coffee-outlined:before { + content: "\e6b5"; +} + +.code-outlined:before { + content: "\e79b"; +} + +.cloud-server-outlined:before { + content: "\e7db"; +} + +.cloud-upload-outlined:before { + content: "\e7dc"; +} + +.cloud-outlined:before { + content: "\e7dd"; +} + +.cloud-download-outlined:before { + content: "\e7de"; +} + +.cloud-sync-outlined:before { + content: "\e7e0"; +} + +.clear-outlined:before { + content: "\e900"; +} + +.ci-circle-outlined:before { + content: "\e77f"; +} + +.carry-out-outlined:before { + content: "\e7d6"; +} + +.car-outlined:before { + content: "\e7da"; +} + +.ci-outlined:before { + content: "\eb5f"; +} + +.camera-outlined:before { + content: "\e7d9"; +} + +.calendar-outlined:before { + content: "\e7d4"; +} + +.calculator-outlined:before { + content: "\e79a"; +} + +.bulb-outlined:before { + content: "\e7c7"; +} + +.build-outlined:before { + content: "\e7d5"; +} + +.bug-outlined:before { + content: "\e8e9"; +} + +.branches-outlined:before { + content: "\e7e7"; +} + +.borderless-table-outlined:before { + content: "\e813"; +} + +.border-outlined:before { + content: "\e7b7"; +} + +.book-outlined:before { + content: "\e7b6"; +} + +.block-outlined:before { + content: "\e7df"; +} + +.bell-outlined:before { + content: "\e7c5"; +} + +.bars-outlined:before { + content: "\e71a"; +} + +.barcode-outlined:before { + content: "\e7d8"; +} + +.bank-outlined:before { + content: "\e7c6"; +} + +.audit-outlined:before { + content: "\e7c0"; +} + +.audio-outlined:before { + content: "\e89b"; +} + +.audio-muted-outlined:before { + content: "\e8e8"; +} + +.api-outlined:before { + content: "\e7e3"; +} + +.apartment-outlined:before { + content: "\e89a"; +} + +.alert-outlined:before { + content: "\e7c4"; +} + +.aim-outlined:before { + content: "\e913"; +} + +.account-book-outlined:before { + content: "\e7d3"; +} + +.column-height-outlined:before { + content: "\e811"; +} + +.column-width-outlined:before { + content: "\e812"; +} + +.radius-setting-outlined:before { + content: "\e7b5"; +} + +.unordered-list-outlined:before { + content: "\e80f"; +} + +.ordered-list-outlined:before { + content: "\e810"; +} + +.drag-outlined:before { + content: "\e843"; +} + +.sort-descending-outlined:before { + content: "\e80d"; +} + +.sort-ascending-outlined:before { + content: "\e80e"; +} + +.font-colors-outlined:before { + content: "\e808"; +} + +.font-size-outlined:before { + content: "\e809"; +} + +.line-height-outlined:before { + content: "\e80a"; +} + +.dash-outlined:before { + content: "\e80b"; +} + +.small-dash-outlined:before { + content: "\e80c"; +} + +.zoom-out-outlined:before { + content: "\e898"; +} + +.zoom-in-outlined:before { + content: "\e899"; +} + +.undo-outlined:before { + content: "\e787"; +} + +.redo-outlined:before { + content: "\e788"; +} + +.bold-outlined:before { + content: "\e804"; +} + +.strikethrough-outlined:before { + content: "\e805"; +} + +.underline-outlined:before { + content: "\e806"; +} + +.italic-outlined:before { + content: "\e807"; +} + +.bg-colors-outlined:before { + content: "\e803"; +} + +.align-right-outlined:before { + content: "\e7fb"; +} + +.align-left-outlined:before { + content: "\e802"; +} + +.align-center-outlined:before { + content: "\e7f5"; +} + +.highlight-outlined:before { + content: "\e7e2"; +} + +.diff-outlined:before { + content: "\e7bf"; +} + +.snippets-outlined:before { + content: "\e7bd"; +} + +.delete-outlined:before { + content: "\e7c3"; +} + +.scissor-outlined:before { + content: "\e7e6"; +} + +.copy-outlined:before { + content: "\e7bc"; +} + +.form-outlined:before { + content: "\e791"; +} + +.edit-outlined:before { + content: "\e7e1"; +} + +.stop-outlined:before { + content: "\e842"; +} + +.issues-close-outlined:before { + content: "\e68e"; +} + +.warning-outlined:before { + content: "\e682"; +} + +.clock-circle-outlined:before { + content: "\e784"; +} + +.check-circle-outlined:before { + content: "\e77d"; +} + +.check-square-outlined:before { + content: "\e794"; +} + +.check-outlined:before { + content: "\e7fc"; +} + +.exclamation-circle-outlined:before { + content: "\e785"; +} + +.exclamation-outlined:before { + content: "\e7fa"; +} + +.info-circle-outlined:before { + content: "\e77e"; +} + +.info-outlined:before { + content: "\e7f9"; +} + +.minus-square-outlined:before { + content: "\e796"; +} + +.plus-square-outlined:before { + content: "\e797"; +} + +.minus-circle-outlined:before { + content: "\e780"; +} + +.minus-outlined:before { + content: "\e801"; +} + +.pause-circle-outlined:before { + content: "\e783"; +} + +.pause-outlined:before { + content: "\e800"; +} + +.plus-circle-outlined:before { + content: "\e781"; +} + +.plus-outlined:before { + content: "\e8fe"; +} + +.question-circle-outlined:before { + content: "\e782"; +} + +.question-outlined:before { + content: "\e7ff"; +} + +.fullscreen-outlined:before { + content: "\e7ec"; +} + +.fullscreen-exit-outlined:before { + content: "\e7ed"; +} + +.radius-bottomleft-outlined:before { + content: "\e7b1"; +} + +.radius-bottomright-outlined:before { + content: "\e7b2"; +} + +.radius-upleft-outlined:before { + content: "\e7b3"; +} + +.radius-upright-outlined:before { + content: "\e7b4"; +} + +.pic-center-outlined:before { + content: "\e7f6"; +} + +.pic-right-outlined:before { + content: "\e7f7"; +} + +.pic-left-outlined:before { + content: "\e7f8"; +} + +.border-outer-outlined:before { + content: "\e7a9"; +} + +.border-top-outlined:before { + content: "\e7aa"; +} + +.border-bottom-outlined:before { + content: "\e7ab"; +} + +.border-left-outlined:before { + content: "\e7ac"; +} + +.border-right-outlined:before { + content: "\e7ad"; +} + +.border-inner-outlined:before { + content: "\e7ae"; +} + +.border-verticle-outlined:before { + content: "\e7af"; +} + +.border-horizontal-outlined:before { + content: "\e7b0"; +} + +.menu-unfold-outlined:before { + content: "\e7f3"; +} + +.menu-fold-outlined:before { + content: "\e7f4"; +} + +.logout-outlined:before { + content: "\e78c"; +} + +.login-outlined:before { + content: "\e8f4"; +} + +.cluster-outlined:before { + content: "\e7d7"; +} + +.down-square-outlined:before { + content: "\e793"; +} + +.left-square-outlined:before { + content: "\e795"; +} + +.right-square-outlined:before { + content: "\e798"; +} + +.up-Square-outlined:before { + content: "\e799"; +} + +.play-circle-outlined:before { + content: "\e67a"; +} + +.arrow-down-outlined:before { + content: "\e66d"; +} + +.arrow-right-outlined:before { + content: "\e66e"; +} + +.arrow-up-outlined:before { + content: "\e66f"; +} + +.arrow-left-outlined:before { + content: "\e670"; +} + +.swap-outlined:before { + content: "\e7f2"; +} + +.swap-right-outlined:before { + content: "\e8f2"; +} + +.swap-left-outlined:before { + content: "\e8f3"; +} + +.enter-outlined:before { + content: "\e7fd"; +} + +.rollback-outlined:before { + content: "\e7fe"; +} + +.retweet-outlined:before { + content: "\e8f1"; +} + +.fast-backward-outlined:before { + content: "\e8ed"; +} + +.fast-forward-outlined:before { + content: "\e8ee"; +} + +.vertical-align-bottom-outlined:before { + content: "\e7ef"; +} + +.vertical-align-middle-outlined:before { + content: "\e7f0"; +} + +.vertical-align-top-outlined:before { + content: "\e7f1"; +} + +.vertical-right-outlined:before { + content: "\e7ea"; +} + +.vertical-left-outlined:before { + content: "\e7eb"; +} + +.double-left-outlined:before { + content: "\e66b"; +} + +.double-right-outlined:before { + content: "\e66c"; +} + +.up-circle-outlined:before { + content: "\e666"; +} + +.right-circle-outlined:before { + content: "\e667"; +} + +.left-circle-outlined:before { + content: "\e66a"; +} + +.down-circle-outlined:before { + content: "\eb5e"; +} + +.caret-up-outlined:before { + content: "\e689"; +} + +.caret-down-outlined:before { + content: "\e68a"; +} + +.caret-left-outlined:before { + content: "\e68b"; +} + +.caret-right-outlined:before { + content: "\e68c"; +} + +.left-outlined:before { + content: "\e685"; +} + +.up-outlined:before { + content: "\e686"; +} + +.down-outlined:before { + content: "\e687"; +} + +.right-outlined:before { + content: "\e688"; +} + +.arrows-alt-outlined:before { + content: "\e665"; +} + +.shrink-outlined:before { + content: "\e68d"; +} + +.step-backward-outlined:before { + content: "\e8ef"; +} + +.step-forward-outlined:before { + content: "\e8f0"; +} + +.robot-outlined:before { + content: "\e897"; +} + +.file-word-outlined:before { + content: "\e7ba"; +} + +.usergroup-delete-outlined:before { + content: "\e760"; +} + +.field-time-outlined:before { + content: "\eb5d"; +} + +.setting-outlined:before { + content: "\e78e"; +} + +.file-search-outlined:before { + content: "\e730"; +} + +.team-outlined:before { + content: "\e67d"; +} + +.message-outlined:before { + content: "\e78a"; +} + +.mail-outlined:before { + content: "\e62e"; +} + +.send-outlined:before { + content: "\e622"; +} + +.appstore-add-outlined:before { + content: "\e8eb"; +} + +.user-outlined:before { + content: "\e641"; +} + +.project-outlined:before { + content: "\e746"; +} + +.hdd-outlined:before { + content: "\e734"; +} + +.tool-outlined:before { + content: "\e75b"; +} + +.user-switch-outlined:before { + content: "\ea3d"; +} + +.appstore-outlined:before { + content: "\e601"; +} + +.home-outlined:before { + content: "\e965"; +} + diff --git a/src/src/assets/icons/mobile/line/iconfont.json b/src/src/assets/icons/mobile/line/iconfont.json new file mode 100644 index 0000000..6f38067 --- /dev/null +++ b/src/src/assets/icons/mobile/line/iconfont.json @@ -0,0 +1,1430 @@ +{ + "id": "3791763", + "name": "snowy-app", + "font_family": "snowy", + "css_prefix_text": "", + "description": "", + "glyphs": [ + { + "icon_id": "4765958", + "name": "export", + "font_class": "export-outlined", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "4766679", + "name": "experiment", + "font_class": "experiment-outlined", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "9230692", + "name": "expend", + "font_class": "expand-outlined", + "unicode": "e915", + "unicode_decimal": 59669 + }, + { + "icon_id": "4767007", + "name": "arrawsalt", + "font_class": "expand-alt-outlined", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "4766461", + "name": "file -exception", + "font_class": "exception-outlined", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "4765730", + "name": "EURO", + "font_class": "euro-outlined", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "33968870", + "name": "EURO-copy", + "font_class": "euro-circle-outlined", + "unicode": "eb62", + "unicode_decimal": 60258 + }, + { + "icon_id": "4765897", + "name": "location", + "font_class": "environment-outlined", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "4767094", + "name": "ellipsis", + "font_class": "ellipsis-outlined", + "unicode": "e815", + "unicode_decimal": 59413 + }, + { + "icon_id": "4767031", + "name": "download", + "font_class": "download-outlined", + "unicode": "e814", + "unicode_decimal": 59412 + }, + { + "icon_id": "4765723", + "name": "Dollar", + "font_class": "dollar-outlined", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "33968867", + "name": "Dollar-copy", + "font_class": "dollar-circle-outlined", + "unicode": "eb61", + "unicode_decimal": 60257 + }, + { + "icon_id": "4766693", + "name": "unlike", + "font_class": "dislike-outlined", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "4766962", + "name": "disconnect", + "font_class": "disconnect-outlined", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "4936979", + "name": "dingtalk", + "font_class": "dingtalk-outlined", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "4936457", + "name": "desktop", + "font_class": "desktop-outlined", + "unicode": "e845", + "unicode_decimal": 59461 + }, + { + "icon_id": "4766849", + "name": "deployment unit", + "font_class": "deployment-unit-outlined", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "9229182", + "name": "Stored procedure", + "font_class": "delivered-procedure-outlined", + "unicode": "e911", + "unicode_decimal": 59665 + }, + { + "icon_id": "8094808", + "name": "delete column", + "font_class": "delete-column-outlined", + "unicode": "e901", + "unicode_decimal": 59649 + }, + { + "icon_id": "8094822", + "name": "delete row", + "font_class": "delete-row-outlined", + "unicode": "e902", + "unicode_decimal": 59650 + }, + { + "icon_id": "4766439", + "name": "database", + "font_class": "database-outlined", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "4765881", + "name": "dashboard", + "font_class": "dashboard-outlined", + "unicode": "e78b", + "unicode_decimal": 59275 + }, + { + "icon_id": "4766762", + "name": "customerservice", + "font_class": "customer-service-outlined", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "4936455", + "name": "crown", + "font_class": "crown-outlined", + "unicode": "e844", + "unicode_decimal": 59460 + }, + { + "icon_id": "4766921", + "name": "credit card", + "font_class": "credit-card-outlined", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "4765731", + "name": "copyright", + "font_class": "copyright-outlined", + "unicode": "e789", + "unicode_decimal": 59273 + }, + { + "icon_id": "33968858", + "name": "copyright-copy", + "font_class": "copyright-circle-outlined", + "unicode": "eb60", + "unicode_decimal": 60256 + }, + { + "icon_id": "4765969", + "name": "control", + "font_class": "control-outlined", + "unicode": "e79c", + "unicode_decimal": 59292 + }, + { + "icon_id": "4766438", + "name": "container", + "font_class": "container-outlined", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "4766855", + "name": "contacts", + "font_class": "contacts-outlined", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "9229185", + "name": "Console-SQL", + "font_class": "console-sql-outlined", + "unicode": "e910", + "unicode_decimal": 59664 + }, + { + "icon_id": "9230691", + "name": "compress", + "font_class": "compress-outlined", + "unicode": "e914", + "unicode_decimal": 59668 + }, + { + "icon_id": "4765724", + "name": "compass", + "font_class": "compass-outlined", + "unicode": "e786", + "unicode_decimal": 59270 + }, + { + "icon_id": "6598316", + "name": "comment", + "font_class": "comment-outlined", + "unicode": "e8ea", + "unicode_decimal": 59626 + }, + { + "icon_id": "12258804", + "name": "coffee", + "font_class": "coffee-outlined", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "4765970", + "name": "code library", + "font_class": "code-outlined", + "unicode": "e79b", + "unicode_decimal": 59291 + }, + { + "icon_id": "4766900", + "name": "cloud-server", + "font_class": "cloud-server-outlined", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "4766901", + "name": "cloud-upload", + "font_class": "cloud-upload-outlined", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "4766902", + "name": "cloud", + "font_class": "cloud-outlined", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "4766903", + "name": "cloud-download", + "font_class": "cloud-download-outlined", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "4766904", + "name": "cloud-sync", + "font_class": "cloud-sync-outlined", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "8094805", + "name": "clear", + "font_class": "clear-outlined", + "unicode": "e900", + "unicode_decimal": 59648 + }, + { + "icon_id": "4765722", + "name": "CI", + "font_class": "ci-circle-outlined", + "unicode": "e77f", + "unicode_decimal": 59263 + }, + { + "icon_id": "4766856", + "name": "carry out", + "font_class": "carry-out-outlined", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "4766886", + "name": "car", + "font_class": "car-outlined", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "33968843", + "name": "CI-copy", + "font_class": "ci-outlined", + "unicode": "eb5f", + "unicode_decimal": 60255 + }, + { + "icon_id": "4766883", + "name": "camera", + "font_class": "camera-outlined", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "4766858", + "name": "calendar", + "font_class": "calendar-outlined", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "4765978", + "name": "calculator", + "font_class": "calculator-outlined", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "4766678", + "name": "bulb", + "font_class": "bulb-outlined", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "4766872", + "name": "build", + "font_class": "build-outlined", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "6598314", + "name": "bug", + "font_class": "bug-outlined", + "unicode": "e8e9", + "unicode_decimal": 59625 + }, + { + "icon_id": "4766986", + "name": "branches", + "font_class": "branches-outlined", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "4767086", + "name": "number", + "font_class": "borderless-table-outlined", + "unicode": "e813", + "unicode_decimal": 59411 + }, + { + "icon_id": "4766265", + "name": "border", + "font_class": "border-outlined", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "4766454", + "name": "book", + "font_class": "book-outlined", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "4766952", + "name": "block", + "font_class": "block-outlined", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "4766680", + "name": "bell", + "font_class": "bell-outlined", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "7239635", + "name": "bars", + "font_class": "bars-outlined", + "unicode": "e71a", + "unicode_decimal": 59162 + }, + { + "icon_id": "4766882", + "name": "barcode", + "font_class": "barcode-outlined", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "4766686", + "name": "bank", + "font_class": "bank-outlined", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "4766507", + "name": "audit", + "font_class": "audit-outlined", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "5756281", + "name": "audio", + "font_class": "audio-outlined", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "6598315", + "name": "audio static", + "font_class": "audio-muted-outlined", + "unicode": "e8e8", + "unicode_decimal": 59624 + }, + { + "icon_id": "4766961", + "name": "api", + "font_class": "api-outlined", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "5756280", + "name": "apartment", + "font_class": "apartment-outlined", + "unicode": "e89a", + "unicode_decimal": 59546 + }, + { + "icon_id": "4766675", + "name": "alert", + "font_class": "alert-outlined", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "9230690", + "name": "aim", + "font_class": "aim-outlined", + "unicode": "e913", + "unicode_decimal": 59667 + }, + { + "icon_id": "4766854", + "name": "account book", + "font_class": "account-book-outlined", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "4767026", + "name": "colum-height", + "font_class": "column-height-outlined", + "unicode": "e811", + "unicode_decimal": 59409 + }, + { + "icon_id": "4767092", + "name": "column-width", + "font_class": "column-width-outlined", + "unicode": "e812", + "unicode_decimal": 59410 + }, + { + "icon_id": "4766286", + "name": "radius-setting", + "font_class": "radius-setting-outlined", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "4767060", + "name": "unordered list", + "font_class": "unordered-list-outlined", + "unicode": "e80f", + "unicode_decimal": 59407 + }, + { + "icon_id": "4767061", + "name": "ordered list", + "font_class": "ordered-list-outlined", + "unicode": "e810", + "unicode_decimal": 59408 + }, + { + "icon_id": "4936456", + "name": "drag", + "font_class": "drag-outlined", + "unicode": "e843", + "unicode_decimal": 59459 + }, + { + "icon_id": "4767038", + "name": "sort-descending", + "font_class": "sort-descending-outlined", + "unicode": "e80d", + "unicode_decimal": 59405 + }, + { + "icon_id": "4767039", + "name": "sort-ascending", + "font_class": "sort-ascending-outlined", + "unicode": "e80e", + "unicode_decimal": 59406 + }, + { + "icon_id": "4767079", + "name": "font-colors", + "font_class": "font-colors-outlined", + "unicode": "e808", + "unicode_decimal": 59400 + }, + { + "icon_id": "4767081", + "name": "font-size", + "font_class": "font-size-outlined", + "unicode": "e809", + "unicode_decimal": 59401 + }, + { + "icon_id": "4767083", + "name": "line-height", + "font_class": "line-height-outlined", + "unicode": "e80a", + "unicode_decimal": 59402 + }, + { + "icon_id": "4767095", + "name": "dash", + "font_class": "dash-outlined", + "unicode": "e80b", + "unicode_decimal": 59403 + }, + { + "icon_id": "4767103", + "name": "small-dash", + "font_class": "small-dash-outlined", + "unicode": "e80c", + "unicode_decimal": 59404 + }, + { + "icon_id": "5756279", + "name": "zoom out", + "font_class": "zoom-out-outlined", + "unicode": "e898", + "unicode_decimal": 59544 + }, + { + "icon_id": "5756284", + "name": "zoom in", + "font_class": "zoom-in-outlined", + "unicode": "e899", + "unicode_decimal": 59545 + }, + { + "icon_id": "4765837", + "name": "undo", + "font_class": "undo-outlined", + "unicode": "e787", + "unicode_decimal": 59271 + }, + { + "icon_id": "4765838", + "name": "redo", + "font_class": "redo-outlined", + "unicode": "e788", + "unicode_decimal": 59272 + }, + { + "icon_id": "4767078", + "name": "bold", + "font_class": "bold-outlined", + "unicode": "e804", + "unicode_decimal": 59396 + }, + { + "icon_id": "4767084", + "name": "strikethrough", + "font_class": "strikethrough-outlined", + "unicode": "e805", + "unicode_decimal": 59397 + }, + { + "icon_id": "4767085", + "name": "underline", + "font_class": "underline-outlined", + "unicode": "e806", + "unicode_decimal": 59398 + }, + { + "icon_id": "4767087", + "name": "italic", + "font_class": "italic-outlined", + "unicode": "e807", + "unicode_decimal": 59399 + }, + { + "icon_id": "4767106", + "name": "bg-colors", + "font_class": "bg-colors-outlined", + "unicode": "e803", + "unicode_decimal": 59395 + }, + { + "icon_id": "4767062", + "name": "align-right", + "font_class": "align-right-outlined", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "4767064", + "name": "align-left", + "font_class": "align-left-outlined", + "unicode": "e802", + "unicode_decimal": 59394 + }, + { + "icon_id": "4767063", + "name": "align-center", + "font_class": "align-center-outlined", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "4766963", + "name": "highlight", + "font_class": "highlight-outlined", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "4766508", + "name": "diff", + "font_class": "diff-outlined", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "4766482", + "name": "snippets", + "font_class": "snippets-outlined", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "4766676", + "name": "delete", + "font_class": "delete-outlined", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "4766982", + "name": "scissor", + "font_class": "scissor-outlined", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "4766481", + "name": "file-copy", + "font_class": "copy-outlined", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "4765957", + "name": "edit-square", + "font_class": "form-outlined", + "unicode": "e791", + "unicode_decimal": 59281 + }, + { + "icon_id": "4766959", + "name": "edit", + "font_class": "edit-outlined", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "4936459", + "name": "stop", + "font_class": "stop-outlined", + "unicode": "e842", + "unicode_decimal": 59458 + }, + { + "icon_id": "23563617", + "name": "WarningOctagon", + "font_class": "issues-close-outlined", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "15838551", + "name": "warning", + "font_class": "warning-outlined", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "4765741", + "name": "time-circle", + "font_class": "clock-circle-outlined", + "unicode": "e784", + "unicode_decimal": 59268 + }, + { + "icon_id": "4765725", + "name": "close-circle", + "font_class": "check-circle-outlined", + "unicode": "e77d", + "unicode_decimal": 59261 + }, + { + "icon_id": "4765964", + "name": "close-square", + "font_class": "check-square-outlined", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "4767096", + "name": "close", + "font_class": "check-outlined", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "4765746", + "name": "warning-circle", + "font_class": "exclamation-circle-outlined", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "4767080", + "name": "exclaimination", + "font_class": "exclamation-outlined", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "4765727", + "name": "info-circle", + "font_class": "info-circle-outlined", + "unicode": "e77e", + "unicode_decimal": 59262 + }, + { + "icon_id": "4767082", + "name": "infomation", + "font_class": "info-outlined", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "4765972", + "name": "minus-square", + "font_class": "minus-square-outlined", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "4765973", + "name": "plus-square", + "font_class": "plus-square-outlined", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "4765732", + "name": "minus-circle", + "font_class": "minus-circle-outlined", + "unicode": "e780", + "unicode_decimal": 59264 + }, + { + "icon_id": "4767099", + "name": "minus", + "font_class": "minus-outlined", + "unicode": "e801", + "unicode_decimal": 59393 + }, + { + "icon_id": "4765742", + "name": "time out", + "font_class": "pause-circle-outlined", + "unicode": "e783", + "unicode_decimal": 59267 + }, + { + "icon_id": "4767104", + "name": "pause", + "font_class": "pause-outlined", + "unicode": "e800", + "unicode_decimal": 59392 + }, + { + "icon_id": "4765734", + "name": "plus-circle", + "font_class": "plus-circle-outlined", + "unicode": "e781", + "unicode_decimal": 59265 + }, + { + "icon_id": "7834345", + "name": "plus", + "font_class": "plus-outlined", + "unicode": "e8fe", + "unicode_decimal": 59646 + }, + { + "icon_id": "4765736", + "name": "question-circle", + "font_class": "question-circle-outlined", + "unicode": "e782", + "unicode_decimal": 59266 + }, + { + "icon_id": "4767100", + "name": "question", + "font_class": "question-outlined", + "unicode": "e7ff", + "unicode_decimal": 59391 + }, + { + "icon_id": "4767015", + "name": "fullscreen", + "font_class": "fullscreen-outlined", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "4767016", + "name": "fullscreen-exit", + "font_class": "fullscreen-exit-outlined", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "4766282", + "name": "radius-bottomleft", + "font_class": "radius-bottomleft-outlined", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "4766283", + "name": "radius-bottomright", + "font_class": "radius-bottomright-outlined", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "4766284", + "name": "radius-upleft", + "font_class": "radius-upleft-outlined", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "4766285", + "name": "radius-upright", + "font_class": "radius-upright-outlined", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "4767072", + "name": "pic-center", + "font_class": "pic-center-outlined", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "4767073", + "name": "pic-right", + "font_class": "pic-right-outlined", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "4767074", + "name": "pic-left", + "font_class": "pic-left-outlined", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "4766266", + "name": "border-outer", + "font_class": "border-outer-outlined", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "4766268", + "name": "border-top", + "font_class": "border-top-outlined", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "4766269", + "name": "border-bottom", + "font_class": "border-bottom-outlined", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "4766270", + "name": "border-left", + "font_class": "border-left-outlined", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "4766271", + "name": "border-right", + "font_class": "border-right-outlined", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "4766276", + "name": "border-inner", + "font_class": "border-inner-outlined", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "4766277", + "name": "border-verticle", + "font_class": "border-verticle-outlined", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "4766278", + "name": "border-horizontal", + "font_class": "border-horizontal-outlined", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "4767050", + "name": "indent", + "font_class": "menu-unfold-outlined", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "4767051", + "name": "outdent", + "font_class": "menu-fold-outlined", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "4765888", + "name": "logout", + "font_class": "logout-outlined", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "6598349", + "name": "login", + "font_class": "login-outlined", + "unicode": "e8f4", + "unicode_decimal": 59636 + }, + { + "icon_id": "4766884", + "name": "cluster", + "font_class": "cluster-outlined", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "4765965", + "name": "down-square", + "font_class": "down-square-outlined", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "4765967", + "name": "left-square", + "font_class": "left-square-outlined", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "4765974", + "name": "right-square", + "font_class": "right-square-outlined", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "4765977", + "name": "up-square", + "font_class": "up-Square-outlined", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "15838511", + "name": "play", + "font_class": "play-circle-outlined", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "15838455", + "name": "direction-down", + "font_class": "arrow-down-outlined", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "15838460", + "name": "direction-right", + "font_class": "arrow-right-outlined", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "15838461", + "name": "direction-up", + "font_class": "arrow-up-outlined", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "15838463", + "name": "direction-left", + "font_class": "arrow-left-outlined", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "4767044", + "name": "swap", + "font_class": "swap-outlined", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "6598352", + "name": "swap-right", + "font_class": "swap-right-outlined", + "unicode": "e8f2", + "unicode_decimal": 59634 + }, + { + "icon_id": "6598353", + "name": "swap-left", + "font_class": "swap-left-outlined", + "unicode": "e8f3", + "unicode_decimal": 59635 + }, + { + "icon_id": "4767097", + "name": "enter", + "font_class": "enter-outlined", + "unicode": "e7fd", + "unicode_decimal": 59389 + }, + { + "icon_id": "4767102", + "name": "rollback", + "font_class": "rollback-outlined", + "unicode": "e7fe", + "unicode_decimal": 59390 + }, + { + "icon_id": "6598348", + "name": "retweet", + "font_class": "retweet-outlined", + "unicode": "e8f1", + "unicode_decimal": 59633 + }, + { + "icon_id": "6598344", + "name": "fast-backward", + "font_class": "fast-backward-outlined", + "unicode": "e8ed", + "unicode_decimal": 59629 + }, + { + "icon_id": "6598346", + "name": "fast-forward", + "font_class": "fast-forward-outlined", + "unicode": "e8ee", + "unicode_decimal": 59630 + }, + { + "icon_id": "4767027", + "name": "vertical-align-botto", + "font_class": "vertical-align-bottom-outlined", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "4767028", + "name": "vertical-align-middl", + "font_class": "vertical-align-middle-outlined", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "4767030", + "name": "vertical-align-top", + "font_class": "vertical-align-top-outlined", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "4767009", + "name": "vertical right", + "font_class": "vertical-right-outlined", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "4767010", + "name": "vertical left", + "font_class": "vertical-left-outlined", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "15838436", + "name": "arrow-double-left", + "font_class": "double-left-outlined", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "15838438", + "name": "arrow-double-right", + "font_class": "double-right-outlined", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "15838427", + "name": "arrow-up-circle", + "font_class": "up-circle-outlined", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "15838428", + "name": "arrow-right-circle", + "font_class": "right-circle-outlined", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "15838437", + "name": "arrow-left-circle", + "font_class": "left-circle-outlined", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "33966825", + "name": "arrow-right-circle-copy", + "font_class": "down-circle-outlined", + "unicode": "eb5e", + "unicode_decimal": 60254 + }, + { + "icon_id": "15838581", + "name": "arrow-up-filling", + "font_class": "caret-up-outlined", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "15838582", + "name": "arrow-down-filling", + "font_class": "caret-down-outlined", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15838583", + "name": "arrow-left-filling", + "font_class": "caret-left-outlined", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15838584", + "name": "arrow-right-filling", + "font_class": "caret-right-outlined", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "15838561", + "name": "arrow-left-bold", + "font_class": "left-outlined", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "15838562", + "name": "arrow-up-bold", + "font_class": "up-outlined", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "15838564", + "name": "arrow-down-bold", + "font_class": "down-outlined", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "15838566", + "name": "arrow-right-bold", + "font_class": "right-outlined", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "22894640", + "name": "arrowsalt", + "font_class": "arrows-alt-outlined", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "22894827", + "name": "shrink", + "font_class": "shrink-outlined", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "6598350", + "name": "step-backward", + "font_class": "step-backward-outlined", + "unicode": "e8ef", + "unicode_decimal": 59631 + }, + { + "icon_id": "6598351", + "name": "step-forward", + "font_class": "step-forward-outlined", + "unicode": "e8f0", + "unicode_decimal": 59632 + }, + { + "icon_id": "5756283", + "name": "robot", + "font_class": "robot-outlined", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "4766477", + "name": "file-word", + "font_class": "file-word-outlined", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "7239944", + "name": "usergroup-delete", + "font_class": "usergroup-delete-outlined", + "unicode": "e760", + "unicode_decimal": 59232 + }, + { + "icon_id": "19685392", + "name": "时间", + "font_class": "field-time-outlined", + "unicode": "eb5d", + "unicode_decimal": 60253 + }, + { + "icon_id": "4765891", + "name": "setting", + "font_class": "setting-outlined", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "7239751", + "name": "file-search", + "font_class": "file-search-outlined", + "unicode": "e730", + "unicode_decimal": 59184 + }, + { + "icon_id": "11538085", + "name": "team", + "font_class": "team-outlined", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "4765866", + "name": "message", + "font_class": "message-outlined", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "109759", + "name": "mail", + "font_class": "mail-outlined", + "unicode": "e62e", + "unicode_decimal": 58926 + }, + { + "icon_id": "1302559", + "name": "send", + "font_class": "send-outlined", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "6598323", + "name": "appstore add", + "font_class": "appstore-add-outlined", + "unicode": "e8eb", + "unicode_decimal": 59627 + }, + { + "icon_id": "23701226", + "name": "User-Outlined", + "font_class": "user-outlined", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "7239852", + "name": "project", + "font_class": "project-outlined", + "unicode": "e746", + "unicode_decimal": 59206 + }, + { + "icon_id": "7239770", + "name": "hdd", + "font_class": "hdd-outlined", + "unicode": "e734", + "unicode_decimal": 59188 + }, + { + "icon_id": "7239921", + "name": "tool", + "font_class": "tool-outlined", + "unicode": "e75b", + "unicode_decimal": 59227 + }, + { + "icon_id": "24342656", + "name": "user switch-line", + "font_class": "user-switch-outlined", + "unicode": "ea3d", + "unicode_decimal": 59965 + }, + { + "icon_id": "5226469", + "name": "apps", + "font_class": "appstore-outlined", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "11981662", + "name": "home_outlined", + "font_class": "home-outlined", + "unicode": "e965", + "unicode_decimal": 59749 + } + ] +} diff --git a/src/src/assets/icons/mobile/line/iconfont.ttf b/src/src/assets/icons/mobile/line/iconfont.ttf new file mode 100644 index 0000000..439f7b4 Binary files /dev/null and b/src/src/assets/icons/mobile/line/iconfont.ttf differ diff --git a/src/src/assets/icons/uiw/UiwAdobe.vue b/src/src/assets/icons/uiw/UiwAdobe.vue new file mode 100644 index 0000000..eeb251c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAdobe.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/src/assets/icons/uiw/UiwAlipay.vue b/src/src/assets/icons/uiw/UiwAlipay.vue new file mode 100644 index 0000000..f1302fe --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAlipay.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/src/assets/icons/uiw/UiwAliwangwang.vue b/src/src/assets/icons/uiw/UiwAliwangwang.vue new file mode 100644 index 0000000..8929ce5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAliwangwang.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/src/assets/icons/uiw/UiwAndroid.vue b/src/src/assets/icons/uiw/UiwAndroid.vue new file mode 100644 index 0000000..018a0e2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAndroid.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwAndroidO.vue b/src/src/assets/icons/uiw/UiwAndroidO.vue new file mode 100644 index 0000000..f9bd480 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAndroidO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwApple.vue b/src/src/assets/icons/uiw/UiwApple.vue new file mode 100644 index 0000000..5b79aab --- /dev/null +++ b/src/src/assets/icons/uiw/UiwApple.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwAppstore.vue b/src/src/assets/icons/uiw/UiwAppstore.vue new file mode 100644 index 0000000..8c8e253 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAppstore.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwAppstoreO.vue b/src/src/assets/icons/uiw/UiwAppstoreO.vue new file mode 100644 index 0000000..8530de5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAppstoreO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwAreaChart.vue b/src/src/assets/icons/uiw/UiwAreaChart.vue new file mode 100644 index 0000000..b0e401f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAreaChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwArrowDown.vue b/src/src/assets/icons/uiw/UiwArrowDown.vue new file mode 100644 index 0000000..04615a7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwArrowDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwArrowLeft.vue b/src/src/assets/icons/uiw/UiwArrowLeft.vue new file mode 100644 index 0000000..5a66e4c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwArrowLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwArrowRight.vue b/src/src/assets/icons/uiw/UiwArrowRight.vue new file mode 100644 index 0000000..0918899 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwArrowRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwArrowUp.vue b/src/src/assets/icons/uiw/UiwArrowUp.vue new file mode 100644 index 0000000..0763b8a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwArrowUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwArrowsAlt.vue b/src/src/assets/icons/uiw/UiwArrowsAlt.vue new file mode 100644 index 0000000..40f4221 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwArrowsAlt.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwAsterisk.vue b/src/src/assets/icons/uiw/UiwAsterisk.vue new file mode 100644 index 0000000..507d5bb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwAsterisk.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwBackward.vue b/src/src/assets/icons/uiw/UiwBackward.vue new file mode 100644 index 0000000..b0b34e9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwBackward.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwBaidu.vue b/src/src/assets/icons/uiw/UiwBaidu.vue new file mode 100644 index 0000000..a27af05 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwBaidu.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwBarChart.vue b/src/src/assets/icons/uiw/UiwBarChart.vue new file mode 100644 index 0000000..6a4e002 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwBarChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwBarcode.vue b/src/src/assets/icons/uiw/UiwBarcode.vue new file mode 100644 index 0000000..3f2f272 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwBarcode.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwBell.vue b/src/src/assets/icons/uiw/UiwBell.vue new file mode 100644 index 0000000..234bce7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwBell.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCameraO.vue b/src/src/assets/icons/uiw/UiwCameraO.vue new file mode 100644 index 0000000..1c9b6cf --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCameraO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCaretDown.vue b/src/src/assets/icons/uiw/UiwCaretDown.vue new file mode 100644 index 0000000..2be10a9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCaretDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCaretLeft.vue b/src/src/assets/icons/uiw/UiwCaretLeft.vue new file mode 100644 index 0000000..85015dd --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCaretLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCaretRight.vue b/src/src/assets/icons/uiw/UiwCaretRight.vue new file mode 100644 index 0000000..10a02eb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCaretRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCaretUp.vue b/src/src/assets/icons/uiw/UiwCaretUp.vue new file mode 100644 index 0000000..6661bbb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCaretUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCheck.vue b/src/src/assets/icons/uiw/UiwCheck.vue new file mode 100644 index 0000000..9b2277f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCheck.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCheckSquare.vue b/src/src/assets/icons/uiw/UiwCheckSquare.vue new file mode 100644 index 0000000..fb5d191 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCheckSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCheckSquareO.vue b/src/src/assets/icons/uiw/UiwCheckSquareO.vue new file mode 100644 index 0000000..f1cb1fc --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCheckSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwChrome.vue b/src/src/assets/icons/uiw/UiwChrome.vue new file mode 100644 index 0000000..c458e8a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwChrome.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCircleCheck.vue b/src/src/assets/icons/uiw/UiwCircleCheck.vue new file mode 100644 index 0000000..419ddb5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCircleCheck.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCircleCheckO.vue b/src/src/assets/icons/uiw/UiwCircleCheckO.vue new file mode 100644 index 0000000..0238a4a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCircleCheckO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCircleClose.vue b/src/src/assets/icons/uiw/UiwCircleClose.vue new file mode 100644 index 0000000..2fde618 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCircleClose.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCircleCloseO.vue b/src/src/assets/icons/uiw/UiwCircleCloseO.vue new file mode 100644 index 0000000..751487b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCircleCloseO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCircleO.vue b/src/src/assets/icons/uiw/UiwCircleO.vue new file mode 100644 index 0000000..d85fb1c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwClose.vue b/src/src/assets/icons/uiw/UiwClose.vue new file mode 100644 index 0000000..b06d661 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwClose.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloseSquare.vue b/src/src/assets/icons/uiw/UiwCloseSquare.vue new file mode 100644 index 0000000..deb736b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloseSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloseSquareO.vue b/src/src/assets/icons/uiw/UiwCloseSquareO.vue new file mode 100644 index 0000000..6b9768d --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloseSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloudDownload.vue b/src/src/assets/icons/uiw/UiwCloudDownload.vue new file mode 100644 index 0000000..1b2a118 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloudDownload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloudDownloadO.vue b/src/src/assets/icons/uiw/UiwCloudDownloadO.vue new file mode 100644 index 0000000..c52b56c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloudDownloadO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloudUpload.vue b/src/src/assets/icons/uiw/UiwCloudUpload.vue new file mode 100644 index 0000000..f001bbd --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloudUpload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCloudUploadO.vue b/src/src/assets/icons/uiw/UiwCloudUploadO.vue new file mode 100644 index 0000000..2c1c839 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCloudUploadO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCoffee.vue b/src/src/assets/icons/uiw/UiwCoffee.vue new file mode 100644 index 0000000..2993f2a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCoffee.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwComponent.vue b/src/src/assets/icons/uiw/UiwComponent.vue new file mode 100644 index 0000000..3ef4f88 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwComponent.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCopy.vue b/src/src/assets/icons/uiw/UiwCopy.vue new file mode 100644 index 0000000..c139047 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCopy.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCopyright.vue b/src/src/assets/icons/uiw/UiwCopyright.vue new file mode 100644 index 0000000..a4edc57 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCopyright.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCss3.vue b/src/src/assets/icons/uiw/UiwCss3.vue new file mode 100644 index 0000000..831ce0b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCss3.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwCut.vue b/src/src/assets/icons/uiw/UiwCut.vue new file mode 100644 index 0000000..8431803 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwCut.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDArrowLeft.vue b/src/src/assets/icons/uiw/UiwDArrowLeft.vue new file mode 100644 index 0000000..0a56aba --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDArrowLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDArrowRight.vue b/src/src/assets/icons/uiw/UiwDArrowRight.vue new file mode 100644 index 0000000..726ecc9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDArrowRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDCaret.vue b/src/src/assets/icons/uiw/UiwDCaret.vue new file mode 100644 index 0000000..b5fc335 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDCaret.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDashboard.vue b/src/src/assets/icons/uiw/UiwDashboard.vue new file mode 100644 index 0000000..28fe35b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDashboard.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDate.vue b/src/src/assets/icons/uiw/UiwDate.vue new file mode 100644 index 0000000..fb471e8 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDate.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDelete.vue b/src/src/assets/icons/uiw/UiwDelete.vue new file mode 100644 index 0000000..d8f27a4 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDingding.vue b/src/src/assets/icons/uiw/UiwDingding.vue new file mode 100644 index 0000000..1b7c0d9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDingding.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDislikeO.vue b/src/src/assets/icons/uiw/UiwDislikeO.vue new file mode 100644 index 0000000..a801e22 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDislikeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDocument.vue b/src/src/assets/icons/uiw/UiwDocument.vue new file mode 100644 index 0000000..76bb35c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDocument.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDotChart.vue b/src/src/assets/icons/uiw/UiwDotChart.vue new file mode 100644 index 0000000..37a0bb7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDotChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDown.vue b/src/src/assets/icons/uiw/UiwDown.vue new file mode 100644 index 0000000..4f35548 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDownCircle.vue b/src/src/assets/icons/uiw/UiwDownCircle.vue new file mode 100644 index 0000000..5e11567 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDownCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDownCircleO.vue b/src/src/assets/icons/uiw/UiwDownCircleO.vue new file mode 100644 index 0000000..ce5d1ca --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDownCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDownSquare.vue b/src/src/assets/icons/uiw/UiwDownSquare.vue new file mode 100644 index 0000000..d410116 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDownSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDownSquareO.vue b/src/src/assets/icons/uiw/UiwDownSquareO.vue new file mode 100644 index 0000000..7bdadbb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDownSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwDownload.vue b/src/src/assets/icons/uiw/UiwDownload.vue new file mode 100644 index 0000000..f7bf9b6 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwDownload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEdit.vue b/src/src/assets/icons/uiw/UiwEdit.vue new file mode 100644 index 0000000..51c461a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEdit.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEnter.vue b/src/src/assets/icons/uiw/UiwEnter.vue new file mode 100644 index 0000000..083fd97 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEnter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEnvironment.vue b/src/src/assets/icons/uiw/UiwEnvironment.vue new file mode 100644 index 0000000..4ec4248 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEnvironment.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEnvironmentO.vue b/src/src/assets/icons/uiw/UiwEnvironmentO.vue new file mode 100644 index 0000000..128610d --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEnvironmentO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEye.vue b/src/src/assets/icons/uiw/UiwEye.vue new file mode 100644 index 0000000..6f6a027 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEye.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwEyeO.vue b/src/src/assets/icons/uiw/UiwEyeO.vue new file mode 100644 index 0000000..ec5aae8 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwEyeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFacebook.vue b/src/src/assets/icons/uiw/UiwFacebook.vue new file mode 100644 index 0000000..3e17586 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFacebook.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFileAdd.vue b/src/src/assets/icons/uiw/UiwFileAdd.vue new file mode 100644 index 0000000..54ad300 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFileAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFileExcel.vue b/src/src/assets/icons/uiw/UiwFileExcel.vue new file mode 100644 index 0000000..3232020 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFileExcel.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFileJpg.vue b/src/src/assets/icons/uiw/UiwFileJpg.vue new file mode 100644 index 0000000..4131142 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFileJpg.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFilePdf.vue b/src/src/assets/icons/uiw/UiwFilePdf.vue new file mode 100644 index 0000000..c6256da --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFilePdf.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFileText.vue b/src/src/assets/icons/uiw/UiwFileText.vue new file mode 100644 index 0000000..20f5f85 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFileText.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFileUnknown.vue b/src/src/assets/icons/uiw/UiwFileUnknown.vue new file mode 100644 index 0000000..83f8f94 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFileUnknown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFilter.vue b/src/src/assets/icons/uiw/UiwFilter.vue new file mode 100644 index 0000000..462e957 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFilter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFirefox.vue b/src/src/assets/icons/uiw/UiwFirefox.vue new file mode 100644 index 0000000..84e6a65 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFirefox.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFolder.vue b/src/src/assets/icons/uiw/UiwFolder.vue new file mode 100644 index 0000000..517f279 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFolder.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFolderAdd.vue b/src/src/assets/icons/uiw/UiwFolderAdd.vue new file mode 100644 index 0000000..2a0725f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFolderAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFolderOpen.vue b/src/src/assets/icons/uiw/UiwFolderOpen.vue new file mode 100644 index 0000000..b7067f2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFolderOpen.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwForward.vue b/src/src/assets/icons/uiw/UiwForward.vue new file mode 100644 index 0000000..37c450b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwForward.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFoursquare.vue b/src/src/assets/icons/uiw/UiwFoursquare.vue new file mode 100644 index 0000000..e140ec2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFoursquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFrown.vue b/src/src/assets/icons/uiw/UiwFrown.vue new file mode 100644 index 0000000..93a5f2d --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFrown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwFrownO.vue b/src/src/assets/icons/uiw/UiwFrownO.vue new file mode 100644 index 0000000..fdeeb14 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwFrownO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwGithub.vue b/src/src/assets/icons/uiw/UiwGithub.vue new file mode 100644 index 0000000..7355bb7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwGithub.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwGithubO.vue b/src/src/assets/icons/uiw/UiwGithubO.vue new file mode 100644 index 0000000..b84067b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwGithubO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwGlobal.vue b/src/src/assets/icons/uiw/UiwGlobal.vue new file mode 100644 index 0000000..c15f2fa --- /dev/null +++ b/src/src/assets/icons/uiw/UiwGlobal.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwHeartOff.vue b/src/src/assets/icons/uiw/UiwHeartOff.vue new file mode 100644 index 0000000..12e21a5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwHeartOff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwHeartOn.vue b/src/src/assets/icons/uiw/UiwHeartOn.vue new file mode 100644 index 0000000..fff274a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwHeartOn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwHome.vue b/src/src/assets/icons/uiw/UiwHome.vue new file mode 100644 index 0000000..d02254a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwHome.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwHtml5.vue b/src/src/assets/icons/uiw/UiwHtml5.vue new file mode 100644 index 0000000..553f31c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwHtml5.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwIe.vue b/src/src/assets/icons/uiw/UiwIe.vue new file mode 100644 index 0000000..38dffc4 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwIe.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwInbox.vue b/src/src/assets/icons/uiw/UiwInbox.vue new file mode 100644 index 0000000..4af3125 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwInbox.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwInformation.vue b/src/src/assets/icons/uiw/UiwInformation.vue new file mode 100644 index 0000000..ff4b4b5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwInformation.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwInformationO.vue b/src/src/assets/icons/uiw/UiwInformationO.vue new file mode 100644 index 0000000..a202497 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwInformationO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLaptop.vue b/src/src/assets/icons/uiw/UiwLaptop.vue new file mode 100644 index 0000000..a65bc1c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLaptop.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLeft.vue b/src/src/assets/icons/uiw/UiwLeft.vue new file mode 100644 index 0000000..6f14627 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLeftCircle.vue b/src/src/assets/icons/uiw/UiwLeftCircle.vue new file mode 100644 index 0000000..187a2b2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLeftCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLeftCircleO.vue b/src/src/assets/icons/uiw/UiwLeftCircleO.vue new file mode 100644 index 0000000..1e53313 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLeftCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLeftSquare.vue b/src/src/assets/icons/uiw/UiwLeftSquare.vue new file mode 100644 index 0000000..69e752b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLeftSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLeftSquareO.vue b/src/src/assets/icons/uiw/UiwLeftSquareO.vue new file mode 100644 index 0000000..eb18ac6 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLeftSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLikeO.vue b/src/src/assets/icons/uiw/UiwLikeO.vue new file mode 100644 index 0000000..f5b27ab --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLikeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLink.vue b/src/src/assets/icons/uiw/UiwLink.vue new file mode 100644 index 0000000..85efeff --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLink.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLinkedin.vue b/src/src/assets/icons/uiw/UiwLinkedin.vue new file mode 100644 index 0000000..2fe04eb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLinkedin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLinux.vue b/src/src/assets/icons/uiw/UiwLinux.vue new file mode 100644 index 0000000..13d9b58 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLinux.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLoading.vue b/src/src/assets/icons/uiw/UiwLoading.vue new file mode 100644 index 0000000..fb9227f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLoading.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLock.vue b/src/src/assets/icons/uiw/UiwLock.vue new file mode 100644 index 0000000..28f6dbc --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLock.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLogin.vue b/src/src/assets/icons/uiw/UiwLogin.vue new file mode 100644 index 0000000..a898091 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLogin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwLogout.vue b/src/src/assets/icons/uiw/UiwLogout.vue new file mode 100644 index 0000000..1f7a40c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwLogout.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMail.vue b/src/src/assets/icons/uiw/UiwMail.vue new file mode 100644 index 0000000..fa2ffc4 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMail.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMailO.vue b/src/src/assets/icons/uiw/UiwMailO.vue new file mode 100644 index 0000000..32ec3f7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMailO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMan.vue b/src/src/assets/icons/uiw/UiwMan.vue new file mode 100644 index 0000000..13f22b5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMan.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMap.vue b/src/src/assets/icons/uiw/UiwMap.vue new file mode 100644 index 0000000..4365d9a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMap.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMeh.vue b/src/src/assets/icons/uiw/UiwMeh.vue new file mode 100644 index 0000000..c615aec --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMeh.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMehO.vue b/src/src/assets/icons/uiw/UiwMehO.vue new file mode 100644 index 0000000..9105467 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMehO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMenu.vue b/src/src/assets/icons/uiw/UiwMenu.vue new file mode 100644 index 0000000..9f2d21f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMenu.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMenuFold.vue b/src/src/assets/icons/uiw/UiwMenuFold.vue new file mode 100644 index 0000000..3aacfea --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMenuFold.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMenuUnfold.vue b/src/src/assets/icons/uiw/UiwMenuUnfold.vue new file mode 100644 index 0000000..c9c46d3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMenuUnfold.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMessage.vue b/src/src/assets/icons/uiw/UiwMessage.vue new file mode 100644 index 0000000..84d51c8 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMessage.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMinus.vue b/src/src/assets/icons/uiw/UiwMinus.vue new file mode 100644 index 0000000..c430d03 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMinus.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMinusCircle.vue b/src/src/assets/icons/uiw/UiwMinusCircle.vue new file mode 100644 index 0000000..c782b1f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMinusCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMinusCircleO.vue b/src/src/assets/icons/uiw/UiwMinusCircleO.vue new file mode 100644 index 0000000..665cd87 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMinusCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMinusSquare.vue b/src/src/assets/icons/uiw/UiwMinusSquare.vue new file mode 100644 index 0000000..3a0aed2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMinusSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMinusSquareO.vue b/src/src/assets/icons/uiw/UiwMinusSquareO.vue new file mode 100644 index 0000000..228a1e3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMinusSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMobile.vue b/src/src/assets/icons/uiw/UiwMobile.vue new file mode 100644 index 0000000..95f3306 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMobile.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwMore.vue b/src/src/assets/icons/uiw/UiwMore.vue new file mode 100644 index 0000000..7fe9138 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwMore.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwNotification.vue b/src/src/assets/icons/uiw/UiwNotification.vue new file mode 100644 index 0000000..22bf4cd --- /dev/null +++ b/src/src/assets/icons/uiw/UiwNotification.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwOpera.vue b/src/src/assets/icons/uiw/UiwOpera.vue new file mode 100644 index 0000000..81d1c2b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwOpera.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPaperClip.vue b/src/src/assets/icons/uiw/UiwPaperClip.vue new file mode 100644 index 0000000..90e1721 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPaperClip.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPause.vue b/src/src/assets/icons/uiw/UiwPause.vue new file mode 100644 index 0000000..7f545ab --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPause.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPauseCircle.vue b/src/src/assets/icons/uiw/UiwPauseCircle.vue new file mode 100644 index 0000000..ced2cfb --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPauseCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPauseCircleO.vue b/src/src/assets/icons/uiw/UiwPauseCircleO.vue new file mode 100644 index 0000000..73b76b7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPauseCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPay.vue b/src/src/assets/icons/uiw/UiwPay.vue new file mode 100644 index 0000000..8c04151 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPay.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPayCircleO.vue b/src/src/assets/icons/uiw/UiwPayCircleO.vue new file mode 100644 index 0000000..c187d65 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPayCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPicasa.vue b/src/src/assets/icons/uiw/UiwPicasa.vue new file mode 100644 index 0000000..d2879fc --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPicasa.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPicture.vue b/src/src/assets/icons/uiw/UiwPicture.vue new file mode 100644 index 0000000..57392e4 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPicture.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPieChart.vue b/src/src/assets/icons/uiw/UiwPieChart.vue new file mode 100644 index 0000000..7d4c5f3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPieChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPinterest.vue b/src/src/assets/icons/uiw/UiwPinterest.vue new file mode 100644 index 0000000..8ff5f67 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPinterest.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlayCircle.vue b/src/src/assets/icons/uiw/UiwPlayCircle.vue new file mode 100644 index 0000000..e0fccf6 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlayCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlayCircleO.vue b/src/src/assets/icons/uiw/UiwPlayCircleO.vue new file mode 100644 index 0000000..003e0fa --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlayCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlus.vue b/src/src/assets/icons/uiw/UiwPlus.vue new file mode 100644 index 0000000..6d88042 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlus.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlusCircle.vue b/src/src/assets/icons/uiw/UiwPlusCircle.vue new file mode 100644 index 0000000..a671f61 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlusCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlusCircleO.vue b/src/src/assets/icons/uiw/UiwPlusCircleO.vue new file mode 100644 index 0000000..d05b1b4 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlusCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlusSquare.vue b/src/src/assets/icons/uiw/UiwPlusSquare.vue new file mode 100644 index 0000000..4e0f869 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlusSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPlusSquareO.vue b/src/src/assets/icons/uiw/UiwPlusSquareO.vue new file mode 100644 index 0000000..2f4a2d8 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPlusSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPoweroff.vue b/src/src/assets/icons/uiw/UiwPoweroff.vue new file mode 100644 index 0000000..7672085 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPoweroff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwPrinter.vue b/src/src/assets/icons/uiw/UiwPrinter.vue new file mode 100644 index 0000000..28bb2c9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwPrinter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwQq.vue b/src/src/assets/icons/uiw/UiwQq.vue new file mode 100644 index 0000000..9cca28c --- /dev/null +++ b/src/src/assets/icons/uiw/UiwQq.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwQrcode.vue b/src/src/assets/icons/uiw/UiwQrcode.vue new file mode 100644 index 0000000..e5d5cea --- /dev/null +++ b/src/src/assets/icons/uiw/UiwQrcode.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwQuestionCircle.vue b/src/src/assets/icons/uiw/UiwQuestionCircle.vue new file mode 100644 index 0000000..c061060 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwQuestionCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwQuestionCircleO.vue b/src/src/assets/icons/uiw/UiwQuestionCircleO.vue new file mode 100644 index 0000000..7da5678 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwQuestionCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwReddit.vue b/src/src/assets/icons/uiw/UiwReddit.vue new file mode 100644 index 0000000..d9c3df7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwReddit.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwReload.vue b/src/src/assets/icons/uiw/UiwReload.vue new file mode 100644 index 0000000..ff72db3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwReload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRight.vue b/src/src/assets/icons/uiw/UiwRight.vue new file mode 100644 index 0000000..e055f65 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRightCircle.vue b/src/src/assets/icons/uiw/UiwRightCircle.vue new file mode 100644 index 0000000..5decfb0 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRightCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRightCircleO.vue b/src/src/assets/icons/uiw/UiwRightCircleO.vue new file mode 100644 index 0000000..19fca27 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRightCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRightSquare.vue b/src/src/assets/icons/uiw/UiwRightSquare.vue new file mode 100644 index 0000000..7f87286 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRightSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRightSquareO.vue b/src/src/assets/icons/uiw/UiwRightSquareO.vue new file mode 100644 index 0000000..99f16ce --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRightSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwRollback.vue b/src/src/assets/icons/uiw/UiwRollback.vue new file mode 100644 index 0000000..87137b0 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwRollback.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSafari.vue b/src/src/assets/icons/uiw/UiwSafari.vue new file mode 100644 index 0000000..9bbe4e5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSafari.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSafety.vue b/src/src/assets/icons/uiw/UiwSafety.vue new file mode 100644 index 0000000..7be65c5 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSafety.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSave.vue b/src/src/assets/icons/uiw/UiwSave.vue new file mode 100644 index 0000000..627fed2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSave.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSearch.vue b/src/src/assets/icons/uiw/UiwSearch.vue new file mode 100644 index 0000000..62af70a --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSearch.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSetting.vue b/src/src/assets/icons/uiw/UiwSetting.vue new file mode 100644 index 0000000..097b695 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSetting.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSettingO.vue b/src/src/assets/icons/uiw/UiwSettingO.vue new file mode 100644 index 0000000..20741a3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSettingO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwShare.vue b/src/src/assets/icons/uiw/UiwShare.vue new file mode 100644 index 0000000..573e2dc --- /dev/null +++ b/src/src/assets/icons/uiw/UiwShare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwShoppingCart.vue b/src/src/assets/icons/uiw/UiwShoppingCart.vue new file mode 100644 index 0000000..13d0b61 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwShoppingCart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwShrink.vue b/src/src/assets/icons/uiw/UiwShrink.vue new file mode 100644 index 0000000..a451807 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwShrink.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSmile.vue b/src/src/assets/icons/uiw/UiwSmile.vue new file mode 100644 index 0000000..548500f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSmile.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSmileO.vue b/src/src/assets/icons/uiw/UiwSmileO.vue new file mode 100644 index 0000000..248852b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSmileO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSquareO.vue b/src/src/assets/icons/uiw/UiwSquareO.vue new file mode 100644 index 0000000..1371e41 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwStarOff.vue b/src/src/assets/icons/uiw/UiwStarOff.vue new file mode 100644 index 0000000..2a9013f --- /dev/null +++ b/src/src/assets/icons/uiw/UiwStarOff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwStarOn.vue b/src/src/assets/icons/uiw/UiwStarOn.vue new file mode 100644 index 0000000..3c372c3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwStarOn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwStop.vue b/src/src/assets/icons/uiw/UiwStop.vue new file mode 100644 index 0000000..7806abf --- /dev/null +++ b/src/src/assets/icons/uiw/UiwStop.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwStopO.vue b/src/src/assets/icons/uiw/UiwStopO.vue new file mode 100644 index 0000000..288ec37 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwStopO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSwap.vue b/src/src/assets/icons/uiw/UiwSwap.vue new file mode 100644 index 0000000..8b2a3e3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSwap.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSwapLeft.vue b/src/src/assets/icons/uiw/UiwSwapLeft.vue new file mode 100644 index 0000000..61205d8 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSwapLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwSwapRight.vue b/src/src/assets/icons/uiw/UiwSwapRight.vue new file mode 100644 index 0000000..26e2f9b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwSwapRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTable.vue b/src/src/assets/icons/uiw/UiwTable.vue new file mode 100644 index 0000000..353321d --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTable.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTag.vue b/src/src/assets/icons/uiw/UiwTag.vue new file mode 100644 index 0000000..679a364 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTag.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTagO.vue b/src/src/assets/icons/uiw/UiwTagO.vue new file mode 100644 index 0000000..593b145 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTagO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTags.vue b/src/src/assets/icons/uiw/UiwTags.vue new file mode 100644 index 0000000..a02e393 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTags.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTagsO.vue b/src/src/assets/icons/uiw/UiwTagsO.vue new file mode 100644 index 0000000..a635ebf --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTagsO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTaobao.vue b/src/src/assets/icons/uiw/UiwTaobao.vue new file mode 100644 index 0000000..f2d4d78 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTaobao.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTime.vue b/src/src/assets/icons/uiw/UiwTime.vue new file mode 100644 index 0000000..f3ed896 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTime.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTimeO.vue b/src/src/assets/icons/uiw/UiwTimeO.vue new file mode 100644 index 0000000..f7f9320 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTimeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwTwitter.vue b/src/src/assets/icons/uiw/UiwTwitter.vue new file mode 100644 index 0000000..f5c42d1 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwTwitter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUiw.vue b/src/src/assets/icons/uiw/UiwUiw.vue new file mode 100644 index 0000000..8c6afea --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUiw.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUnlock.vue b/src/src/assets/icons/uiw/UiwUnlock.vue new file mode 100644 index 0000000..2e86e07 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUnlock.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUp.vue b/src/src/assets/icons/uiw/UiwUp.vue new file mode 100644 index 0000000..e330168 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUpCircle.vue b/src/src/assets/icons/uiw/UiwUpCircle.vue new file mode 100644 index 0000000..8862168 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUpCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUpCircleO.vue b/src/src/assets/icons/uiw/UiwUpCircleO.vue new file mode 100644 index 0000000..2921df3 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUpCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUpSquare.vue b/src/src/assets/icons/uiw/UiwUpSquare.vue new file mode 100644 index 0000000..4370ae6 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUpSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUpSquareO.vue b/src/src/assets/icons/uiw/UiwUpSquareO.vue new file mode 100644 index 0000000..ebb29da --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUpSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUpload.vue b/src/src/assets/icons/uiw/UiwUpload.vue new file mode 100644 index 0000000..2363302 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUpload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUser.vue b/src/src/assets/icons/uiw/UiwUser.vue new file mode 100644 index 0000000..2caa308 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUser.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUserAdd.vue b/src/src/assets/icons/uiw/UiwUserAdd.vue new file mode 100644 index 0000000..a149a3b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUserAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUserDelete.vue b/src/src/assets/icons/uiw/UiwUserDelete.vue new file mode 100644 index 0000000..39a9187 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUserDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUsergroupAdd.vue b/src/src/assets/icons/uiw/UiwUsergroupAdd.vue new file mode 100644 index 0000000..6cbd224 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUsergroupAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwUsergroupDelete.vue b/src/src/assets/icons/uiw/UiwUsergroupDelete.vue new file mode 100644 index 0000000..79c69b2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwUsergroupDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwVerification.vue b/src/src/assets/icons/uiw/UiwVerification.vue new file mode 100644 index 0000000..d45c3d6 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwVerification.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwVerticleLeft.vue b/src/src/assets/icons/uiw/UiwVerticleLeft.vue new file mode 100644 index 0000000..69e4578 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwVerticleLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwVerticleRight.vue b/src/src/assets/icons/uiw/UiwVerticleRight.vue new file mode 100644 index 0000000..65320b7 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwVerticleRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwVideoCamera.vue b/src/src/assets/icons/uiw/UiwVideoCamera.vue new file mode 100644 index 0000000..da01578 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwVideoCamera.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWarning.vue b/src/src/assets/icons/uiw/UiwWarning.vue new file mode 100644 index 0000000..e740ba9 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWarning.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWarningO.vue b/src/src/assets/icons/uiw/UiwWarningO.vue new file mode 100644 index 0000000..b3bd388 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWarningO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWeibo.vue b/src/src/assets/icons/uiw/UiwWeibo.vue new file mode 100644 index 0000000..8fe7363 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWeibo.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWeixin.vue b/src/src/assets/icons/uiw/UiwWeixin.vue new file mode 100644 index 0000000..c745892 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWeixin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWifi.vue b/src/src/assets/icons/uiw/UiwWifi.vue new file mode 100644 index 0000000..8d5a977 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWifi.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWindows.vue b/src/src/assets/icons/uiw/UiwWindows.vue new file mode 100644 index 0000000..8217385 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWindows.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwWoman.vue b/src/src/assets/icons/uiw/UiwWoman.vue new file mode 100644 index 0000000..38d88a2 --- /dev/null +++ b/src/src/assets/icons/uiw/UiwWoman.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwZoomIn.vue b/src/src/assets/icons/uiw/UiwZoomIn.vue new file mode 100644 index 0000000..fcc4f8b --- /dev/null +++ b/src/src/assets/icons/uiw/UiwZoomIn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/icons/uiw/UiwZoomOut.vue b/src/src/assets/icons/uiw/UiwZoomOut.vue new file mode 100644 index 0000000..e9a1bfa --- /dev/null +++ b/src/src/assets/icons/uiw/UiwZoomOut.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/src/assets/images/fileImg/README.md b/src/src/assets/images/fileImg/README.md new file mode 100644 index 0000000..2da6114 --- /dev/null +++ b/src/src/assets/images/fileImg/README.md @@ -0,0 +1 @@ +图标文件来源:https://www.aigei.com/s?q=%E6%96%87%E4%BB%B6&detailTab=file&type=icon_7&page=11#resContainer diff --git a/src/src/assets/images/fileImg/docx.png b/src/src/assets/images/fileImg/docx.png new file mode 100644 index 0000000..d7bc3aa Binary files /dev/null and b/src/src/assets/images/fileImg/docx.png differ diff --git a/src/src/assets/images/fileImg/file.png b/src/src/assets/images/fileImg/file.png new file mode 100644 index 0000000..5731c21 Binary files /dev/null and b/src/src/assets/images/fileImg/file.png differ diff --git a/src/src/assets/images/fileImg/gif.png b/src/src/assets/images/fileImg/gif.png new file mode 100644 index 0000000..f7de519 Binary files /dev/null and b/src/src/assets/images/fileImg/gif.png differ diff --git a/src/src/assets/images/fileImg/html.png b/src/src/assets/images/fileImg/html.png new file mode 100644 index 0000000..ab82663 Binary files /dev/null and b/src/src/assets/images/fileImg/html.png differ diff --git a/src/src/assets/images/fileImg/img.png b/src/src/assets/images/fileImg/img.png new file mode 100644 index 0000000..04b1118 Binary files /dev/null and b/src/src/assets/images/fileImg/img.png differ diff --git a/src/src/assets/images/fileImg/pdf.png b/src/src/assets/images/fileImg/pdf.png new file mode 100644 index 0000000..1fbb05b Binary files /dev/null and b/src/src/assets/images/fileImg/pdf.png differ diff --git a/src/src/assets/images/fileImg/png.png b/src/src/assets/images/fileImg/png.png new file mode 100644 index 0000000..58de69c Binary files /dev/null and b/src/src/assets/images/fileImg/png.png differ diff --git a/src/src/assets/images/fileImg/ppt.png b/src/src/assets/images/fileImg/ppt.png new file mode 100644 index 0000000..c4b2b8d Binary files /dev/null and b/src/src/assets/images/fileImg/ppt.png differ diff --git a/src/src/assets/images/fileImg/rar.png b/src/src/assets/images/fileImg/rar.png new file mode 100644 index 0000000..898d931 Binary files /dev/null and b/src/src/assets/images/fileImg/rar.png differ diff --git a/src/src/assets/images/fileImg/txt.png b/src/src/assets/images/fileImg/txt.png new file mode 100644 index 0000000..46cfd32 Binary files /dev/null and b/src/src/assets/images/fileImg/txt.png differ diff --git a/src/src/assets/images/fileImg/xlsx.png b/src/src/assets/images/fileImg/xlsx.png new file mode 100644 index 0000000..43c079d Binary files /dev/null and b/src/src/assets/images/fileImg/xlsx.png differ diff --git a/src/src/assets/images/fileImg/zip.png b/src/src/assets/images/fileImg/zip.png new file mode 100644 index 0000000..410e70f Binary files /dev/null and b/src/src/assets/images/fileImg/zip.png differ diff --git a/src/src/assets/images/login_home.jpg b/src/src/assets/images/login_home.jpg new file mode 100644 index 0000000..f22a146 Binary files /dev/null and b/src/src/assets/images/login_home.jpg differ diff --git a/src/src/components/AdvancedSearchForm/index.vue b/src/src/components/AdvancedSearchForm/index.vue new file mode 100644 index 0000000..dc93d45 --- /dev/null +++ b/src/src/components/AdvancedSearchForm/index.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/src/components/CardTitle/index.vue b/src/src/components/CardTitle/index.vue new file mode 100644 index 0000000..8902be5 --- /dev/null +++ b/src/src/components/CardTitle/index.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue b/src/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue new file mode 100644 index 0000000..e748881 --- /dev/null +++ b/src/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue b/src/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue new file mode 100644 index 0000000..b250f93 --- /dev/null +++ b/src/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue b/src/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue new file mode 100644 index 0000000..64f7b08 --- /dev/null +++ b/src/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue b/src/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue new file mode 100644 index 0000000..96bc235 --- /dev/null +++ b/src/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/src/components/Chart/eCKXianTu/BasicCandlestick.vue b/src/src/components/Chart/eCKXianTu/BasicCandlestick.vue new file mode 100644 index 0000000..2ba80ed --- /dev/null +++ b/src/src/components/Chart/eCKXianTu/BasicCandlestick.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue b/src/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue new file mode 100644 index 0000000..3579116 --- /dev/null +++ b/src/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue @@ -0,0 +1,207 @@ + + + diff --git a/src/src/components/Chart/eCKXianTu/ShangHaiIndex.vue b/src/src/components/Chart/eCKXianTu/ShangHaiIndex.vue new file mode 100644 index 0000000..bd03c99 --- /dev/null +++ b/src/src/components/Chart/eCKXianTu/ShangHaiIndex.vue @@ -0,0 +1,324 @@ + + + diff --git a/src/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue b/src/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue new file mode 100644 index 0000000..dbe223c --- /dev/null +++ b/src/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue @@ -0,0 +1,100 @@ + + diff --git a/src/src/components/Chart/eCLouDouTu/FunnelChart.vue b/src/src/components/Chart/eCLouDouTu/FunnelChart.vue new file mode 100644 index 0000000..90153e0 --- /dev/null +++ b/src/src/components/Chart/eCLouDouTu/FunnelChart.vue @@ -0,0 +1,81 @@ + + diff --git a/src/src/components/Chart/eCLouDouTu/FunnelCompare.vue b/src/src/components/Chart/eCLouDouTu/FunnelCompare.vue new file mode 100644 index 0000000..37cde53 --- /dev/null +++ b/src/src/components/Chart/eCLouDouTu/FunnelCompare.vue @@ -0,0 +1,114 @@ + + diff --git a/src/src/components/Chart/eCLouDouTu/MultipleFunnels.vue b/src/src/components/Chart/eCLouDouTu/MultipleFunnels.vue new file mode 100644 index 0000000..e09aa3c --- /dev/null +++ b/src/src/components/Chart/eCLouDouTu/MultipleFunnels.vue @@ -0,0 +1,114 @@ + + diff --git a/src/src/components/Chart/eCSanDianTu/BasicScatterChart.vue b/src/src/components/Chart/eCSanDianTu/BasicScatterChart.vue new file mode 100644 index 0000000..3c815a9 --- /dev/null +++ b/src/src/components/Chart/eCSanDianTu/BasicScatterChart.vue @@ -0,0 +1,51 @@ + + diff --git a/src/src/components/Chart/eCSanDianTu/ClusteringProcess.vue b/src/src/components/Chart/eCSanDianTu/ClusteringProcess.vue new file mode 100644 index 0000000..e1780e3 --- /dev/null +++ b/src/src/components/Chart/eCSanDianTu/ClusteringProcess.vue @@ -0,0 +1,139 @@ + + diff --git a/src/src/components/Chart/eCSanDianTu/EffectScatterChart.vue b/src/src/components/Chart/eCSanDianTu/EffectScatterChart.vue new file mode 100644 index 0000000..a9a3dd5 --- /dev/null +++ b/src/src/components/Chart/eCSanDianTu/EffectScatterChart.vue @@ -0,0 +1,92 @@ + + diff --git a/src/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue b/src/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue new file mode 100644 index 0000000..a44e60a --- /dev/null +++ b/src/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue @@ -0,0 +1,264 @@ + + diff --git a/src/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue b/src/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue new file mode 100644 index 0000000..3d57210 --- /dev/null +++ b/src/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue @@ -0,0 +1,182 @@ + + diff --git a/src/src/components/Chart/eCXianXingTu/BasicLineChart.vue b/src/src/components/Chart/eCXianXingTu/BasicLineChart.vue new file mode 100644 index 0000000..5c071a2 --- /dev/null +++ b/src/src/components/Chart/eCXianXingTu/BasicLineChart.vue @@ -0,0 +1,34 @@ + + diff --git a/src/src/components/Chart/eCXianXingTu/StackedAreaChart.vue b/src/src/components/Chart/eCXianXingTu/StackedAreaChart.vue new file mode 100644 index 0000000..9e82448 --- /dev/null +++ b/src/src/components/Chart/eCXianXingTu/StackedAreaChart.vue @@ -0,0 +1,115 @@ + + diff --git a/src/src/components/Chart/eCXianXingTu/StackedLineChart.vue b/src/src/components/Chart/eCXianXingTu/StackedLineChart.vue new file mode 100644 index 0000000..8442da8 --- /dev/null +++ b/src/src/components/Chart/eCXianXingTu/StackedLineChart.vue @@ -0,0 +1,81 @@ + + diff --git a/src/src/components/Chart/eCXianXingTu/StepLine.vue b/src/src/components/Chart/eCXianXingTu/StepLine.vue new file mode 100644 index 0000000..6e27326 --- /dev/null +++ b/src/src/components/Chart/eCXianXingTu/StepLine.vue @@ -0,0 +1,68 @@ + + diff --git a/src/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue b/src/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue new file mode 100644 index 0000000..f55b7d7 --- /dev/null +++ b/src/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue @@ -0,0 +1,37 @@ + + diff --git a/src/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue b/src/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue new file mode 100644 index 0000000..785deac --- /dev/null +++ b/src/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue @@ -0,0 +1,106 @@ + + diff --git a/src/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue b/src/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue new file mode 100644 index 0000000..367075c --- /dev/null +++ b/src/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue @@ -0,0 +1,83 @@ + + diff --git a/src/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue b/src/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue new file mode 100644 index 0000000..0bbdc25 --- /dev/null +++ b/src/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue @@ -0,0 +1,147 @@ + + diff --git a/src/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue b/src/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue new file mode 100644 index 0000000..5122cd0 --- /dev/null +++ b/src/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue @@ -0,0 +1,77 @@ + + diff --git a/src/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue b/src/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue new file mode 100644 index 0000000..9449c41 --- /dev/null +++ b/src/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue @@ -0,0 +1,132 @@ + + diff --git a/src/src/components/Chart/eCZhuZhuangTu/BasicBar.vue b/src/src/components/Chart/eCZhuZhuangTu/BasicBar.vue new file mode 100644 index 0000000..542751a --- /dev/null +++ b/src/src/components/Chart/eCZhuZhuangTu/BasicBar.vue @@ -0,0 +1,32 @@ + + diff --git a/src/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue b/src/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue new file mode 100644 index 0000000..080f7d0 --- /dev/null +++ b/src/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue @@ -0,0 +1,249 @@ + + diff --git a/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue new file mode 100644 index 0000000..069039b --- /dev/null +++ b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue new file mode 100644 index 0000000..89bb896 --- /dev/null +++ b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue new file mode 100644 index 0000000..5da57e9 --- /dev/null +++ b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue new file mode 100644 index 0000000..1d5e7b0 --- /dev/null +++ b/src/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/src/components/Chart/g2CiYunTu/CiYunTu01.vue b/src/src/components/Chart/g2CiYunTu/CiYunTu01.vue new file mode 100644 index 0000000..0b6c52b --- /dev/null +++ b/src/src/components/Chart/g2CiYunTu/CiYunTu01.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/src/components/Chart/g2CiYunTu/CiYunTu02.vue b/src/src/components/Chart/g2CiYunTu/CiYunTu02.vue new file mode 100644 index 0000000..8f34326 --- /dev/null +++ b/src/src/components/Chart/g2CiYunTu/CiYunTu02.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/components/Chart/g2JinDuTu/JinDuTu01.vue b/src/src/components/Chart/g2JinDuTu/JinDuTu01.vue new file mode 100644 index 0000000..3d0784c --- /dev/null +++ b/src/src/components/Chart/g2JinDuTu/JinDuTu01.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/src/components/Chart/g2JinDuTu/JinDuTu02.vue b/src/src/components/Chart/g2JinDuTu/JinDuTu02.vue new file mode 100644 index 0000000..46fc47f --- /dev/null +++ b/src/src/components/Chart/g2JinDuTu/JinDuTu02.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/src/components/Chart/g2JinDuTu/JinDuTu03.vue b/src/src/components/Chart/g2JinDuTu/JinDuTu03.vue new file mode 100644 index 0000000..675b100 --- /dev/null +++ b/src/src/components/Chart/g2JinDuTu/JinDuTu03.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/src/components/Chart/g2JinDuTu/JinDuTu04.vue b/src/src/components/Chart/g2JinDuTu/JinDuTu04.vue new file mode 100644 index 0000000..c025a9f --- /dev/null +++ b/src/src/components/Chart/g2JinDuTu/JinDuTu04.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/src/components/Chart/g2LouDouTu/LouDouTu01.vue b/src/src/components/Chart/g2LouDouTu/LouDouTu01.vue new file mode 100644 index 0000000..4a9ab53 --- /dev/null +++ b/src/src/components/Chart/g2LouDouTu/LouDouTu01.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/src/components/Chart/g2LouDouTu/LouDouTu02.vue b/src/src/components/Chart/g2LouDouTu/LouDouTu02.vue new file mode 100644 index 0000000..d800bb2 --- /dev/null +++ b/src/src/components/Chart/g2LouDouTu/LouDouTu02.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/src/components/Chart/g2MianJiTu/MianJiTu01.vue b/src/src/components/Chart/g2MianJiTu/MianJiTu01.vue new file mode 100644 index 0000000..5efb7ab --- /dev/null +++ b/src/src/components/Chart/g2MianJiTu/MianJiTu01.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/src/components/Chart/g2MianJiTu/MianJiTu02.vue b/src/src/components/Chart/g2MianJiTu/MianJiTu02.vue new file mode 100644 index 0000000..1c1eae4 --- /dev/null +++ b/src/src/components/Chart/g2MianJiTu/MianJiTu02.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/src/components/Chart/g2MianJiTu/MianJiTu03.vue b/src/src/components/Chart/g2MianJiTu/MianJiTu03.vue new file mode 100644 index 0000000..92b3e3c --- /dev/null +++ b/src/src/components/Chart/g2MianJiTu/MianJiTu03.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/src/components/Chart/g2MianJiTu/MianJiTu04.vue b/src/src/components/Chart/g2MianJiTu/MianJiTu04.vue new file mode 100644 index 0000000..27160ba --- /dev/null +++ b/src/src/components/Chart/g2MianJiTu/MianJiTu04.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/src/components/Chart/g2SanDianTu/SanDianTu01.vue b/src/src/components/Chart/g2SanDianTu/SanDianTu01.vue new file mode 100644 index 0000000..cf8bc43 --- /dev/null +++ b/src/src/components/Chart/g2SanDianTu/SanDianTu01.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/src/components/Chart/g2SanDianTu/SanDianTu02.vue b/src/src/components/Chart/g2SanDianTu/SanDianTu02.vue new file mode 100644 index 0000000..8be7761 --- /dev/null +++ b/src/src/components/Chart/g2SanDianTu/SanDianTu02.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/src/components/Chart/g2SanDianTu/SanDianTu03.vue b/src/src/components/Chart/g2SanDianTu/SanDianTu03.vue new file mode 100644 index 0000000..49fa842 --- /dev/null +++ b/src/src/components/Chart/g2SanDianTu/SanDianTu03.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/src/components/Chart/g2SanDianTu/SanDianTu04.vue b/src/src/components/Chart/g2SanDianTu/SanDianTu04.vue new file mode 100644 index 0000000..4ff3fd9 --- /dev/null +++ b/src/src/components/Chart/g2SanDianTu/SanDianTu04.vue @@ -0,0 +1,337 @@ + + + diff --git a/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue new file mode 100644 index 0000000..d76c686 --- /dev/null +++ b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue new file mode 100644 index 0000000..20d06f6 --- /dev/null +++ b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue new file mode 100644 index 0000000..09d45ae --- /dev/null +++ b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue new file mode 100644 index 0000000..515f98c --- /dev/null +++ b/src/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue b/src/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue new file mode 100644 index 0000000..63249f2 --- /dev/null +++ b/src/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue b/src/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue new file mode 100644 index 0000000..b61e39c --- /dev/null +++ b/src/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue b/src/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue new file mode 100644 index 0000000..34cae3a --- /dev/null +++ b/src/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue b/src/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue new file mode 100644 index 0000000..18a5eb2 --- /dev/null +++ b/src/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue new file mode 100644 index 0000000..bf8fcf3 --- /dev/null +++ b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue new file mode 100644 index 0000000..f05769b --- /dev/null +++ b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue new file mode 100644 index 0000000..128bff9 --- /dev/null +++ b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue @@ -0,0 +1,120 @@ + + + diff --git a/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue new file mode 100644 index 0000000..1222331 --- /dev/null +++ b/src/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue b/src/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue new file mode 100644 index 0000000..08727da --- /dev/null +++ b/src/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue b/src/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue new file mode 100644 index 0000000..19db78c --- /dev/null +++ b/src/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue @@ -0,0 +1,96 @@ + + + diff --git a/src/src/components/ColorPicker/index.vue b/src/src/components/ColorPicker/index.vue new file mode 100644 index 0000000..6952228 --- /dev/null +++ b/src/src/components/ColorPicker/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/src/components/Cron/data.js b/src/src/components/Cron/data.js new file mode 100644 index 0000000..c7abcfc --- /dev/null +++ b/src/src/components/Cron/data.js @@ -0,0 +1,103 @@ +export const getYear = () => { + let v = [] + let y = new Date().getFullYear() + for (let i = 0; i < 11; i++) { + v.push(y + i) + } + return v +} +export const data = { + second: ['0', '5', '15', '20', '25', '30', '35', '40', '45', '50', '55', '59'], + minute: ['0', '5', '15', '20', '25', '30', '35', '40', '45', '50', '55', '59'], + hour: [ + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23' + ], + day: [ + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', + '24', + '25', + '26', + '27', + '28', + '29', + '30', + '31' + ], + month: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + week: [ + { + value: '0', + label: '周日' + }, + { + value: '1', + label: '周一' + }, + { + value: '2', + label: '周二' + }, + { + value: '3', + label: '周三' + }, + { + value: '4', + label: '周四' + }, + { + value: '5', + label: '周五' + }, + { + value: '6', + label: '周六' + } + ], + year: getYear() +} diff --git a/src/src/components/Cron/index.vue b/src/src/components/Cron/index.vue new file mode 100644 index 0000000..fedfc99 --- /dev/null +++ b/src/src/components/Cron/index.vue @@ -0,0 +1,756 @@ + + + + + diff --git a/src/src/components/CropUpload/index.vue b/src/src/components/CropUpload/index.vue new file mode 100644 index 0000000..e17bee0 --- /dev/null +++ b/src/src/components/CropUpload/index.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/src/components/DragModal/index.vue b/src/src/components/DragModal/index.vue new file mode 100644 index 0000000..b925aa4 --- /dev/null +++ b/src/src/components/DragModal/index.vue @@ -0,0 +1,318 @@ + + + diff --git a/src/src/components/DragModal/props.js b/src/src/components/DragModal/props.js new file mode 100644 index 0000000..f29069f --- /dev/null +++ b/src/src/components/DragModal/props.js @@ -0,0 +1,30 @@ +export default { + props: [ + 'afterClose', // Modal 完全关闭后的回调 function 无 + 'bodyStyle', // Modal body 样式 object {} + 'cancelText', // 取消按钮文字 string| slot 取消 + 'centered', // 垂直居中展示 Modal Boolean false + 'closable', // 是否显示右上角的关闭按钮 boolean true + 'closeIcon', // 自定义关闭图标 VNode | slot - 1.5.0 + 'confirmLoading', // 确定按钮 loading boolean 无 + 'destroyOnClose', // 关闭时销毁 Modal 里的子元素 boolean false + 'footer', // 底部内容,当不需要默认底部按钮时,可以设为 :footer="null" string|slot 确定取消按钮 + 'forceRender', // 强制渲染 Modal boolean false + 'getContainer', // 指定 Modal 挂载的 HTML 节点 (instance): HTMLElement () => document.body + 'keyboard', // 是否支持键盘 esc 关闭 boolean true + 'mask', // 是否展示遮罩 Boolean true + 'maskClosable', // 点击蒙层是否允许关闭 boolean true + 'maskStyle', // 遮罩样式 object {} + 'okText', // 确认按钮文字 string|slot 确定 + 'okType', // 确认按钮类型 string primary + 'okButtonProps', // ok 按钮 props, 遵循 jsx规范 {props: ButtonProps, on: {}} - + 'cancelButtonProps', // cancel 按钮 props, 遵循 jsx规范 {props: ButtonProps, on: {}} - + 'title', // 标题 string|slot 无 + // 'visible', // (v-model) 对话框是否可见 boolean 无 + // 'width', // 宽度 string|number 520 + // 'wrapClassName', // 对话框外层容器的类名 string - + 'zIndex', // 设置 Modal 的 z-index Number 1000 + 'dialogStyle', // 可用于设置浮层的样式,调整浮层位置等 object - 1.6.1 + 'dialogClass' // 可用于设置浮层的类名 string + ] +} diff --git a/src/src/components/DynamicForm/index.vue b/src/src/components/DynamicForm/index.vue new file mode 100644 index 0000000..cd8b1bf --- /dev/null +++ b/src/src/components/DynamicForm/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/src/components/DynamicSearchForm/index.vue b/src/src/components/DynamicSearchForm/index.vue new file mode 100644 index 0000000..a9d0503 --- /dev/null +++ b/src/src/components/DynamicSearchForm/index.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/src/components/DynamicTable/index.vue b/src/src/components/DynamicTable/index.vue new file mode 100644 index 0000000..d9b6479 --- /dev/null +++ b/src/src/components/DynamicTable/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/src/components/DynamicTree/index.vue b/src/src/components/DynamicTree/index.vue new file mode 100644 index 0000000..de5ad3c --- /dev/null +++ b/src/src/components/DynamicTree/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/src/components/Editor/README.md b/src/src/components/Editor/README.md new file mode 100644 index 0000000..a9fb1a6 --- /dev/null +++ b/src/src/components/Editor/README.md @@ -0,0 +1,15 @@ +## 富文本 + +### 说明 + +这个组件将在3.2版本移除,请及时更新使用xn-editor + +> 更新提示 +> +> 1、将 改为 +> +> 2、v-model绑定改为v-model:value +> +> 3、整体写法为: +> +> 4、移除业务内跟此组件无关的其他代码即可 diff --git a/src/src/components/Editor/index.vue b/src/src/components/Editor/index.vue new file mode 100644 index 0000000..e95fd2c --- /dev/null +++ b/src/src/components/Editor/index.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/src/components/Ellipsis/index.md b/src/src/components/Ellipsis/index.md new file mode 100644 index 0000000..e4316bf --- /dev/null +++ b/src/src/components/Ellipsis/index.md @@ -0,0 +1,33 @@ +# Ellipsis 文本自动省略号 + +文本过长自动处理省略号,支持按照文本长度和最大行数两种方式截取。 + + + +引用方式: + +```javascript +import Ellipsis from '@/components/Ellipsis' +// vue3 不需要利用compoents去注册组件,引入后可直接使用 +``` + + + +## 代码演示 [demo](https://snowy.xiaonuo.vip) + +```html + + There were injuries alleged in three cases in 2015, and a + fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall. + +``` + + + +## API + + +参数 | 说明 | 类型 | 默认值 +----|------|-----|------ +tooltip | 移动到文本展示完整内容的提示 | boolean | - +length | 在按照长度截取下的文本最大字符数,超过则截取省略 | number | - diff --git a/src/src/components/Ellipsis/index.vue b/src/src/components/Ellipsis/index.vue new file mode 100644 index 0000000..4f8c64d --- /dev/null +++ b/src/src/components/Ellipsis/index.vue @@ -0,0 +1,48 @@ + + diff --git a/src/src/components/Ellipsis/util.js b/src/src/components/Ellipsis/util.js new file mode 100644 index 0000000..b9577bb --- /dev/null +++ b/src/src/components/Ellipsis/util.js @@ -0,0 +1,44 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ + +/** + * 获取字符串长度,英文字符 长度1,中文字符长度2 + * @param {*} str + */ +export const getStrFullLength = (str = '') => + str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + return pre + 1 + } + return pre + 2 + }, 0) + +/** + * 截取字符串,根据 maxLength 截取后返回 + * @param {*} str + * @param {*} maxLength + */ +export const cutStrByFullLength = (str = '', maxLength) => { + let showLength = 0 + return str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + showLength += 1 + } else { + showLength += 2 + } + if (showLength <= maxLength) { + return pre + cur + } + return pre + }, '') +} diff --git a/src/src/components/FounderForm/index.vue b/src/src/components/FounderForm/index.vue new file mode 100644 index 0000000..c6338c3 --- /dev/null +++ b/src/src/components/FounderForm/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/src/components/HomeCard/BizMiniMessageCard/index.vue b/src/src/components/HomeCard/BizMiniMessageCard/index.vue new file mode 100644 index 0000000..7301f30 --- /dev/null +++ b/src/src/components/HomeCard/BizMiniMessageCard/index.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/src/components/HomeCard/BizNoticeCard/detail.vue b/src/src/components/HomeCard/BizNoticeCard/detail.vue new file mode 100644 index 0000000..1285bfd --- /dev/null +++ b/src/src/components/HomeCard/BizNoticeCard/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/src/components/HomeCard/BizNoticeCard/index.vue b/src/src/components/HomeCard/BizNoticeCard/index.vue new file mode 100644 index 0000000..321a834 --- /dev/null +++ b/src/src/components/HomeCard/BizNoticeCard/index.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/src/components/HomeCard/BizScheduleCard/index.vue b/src/src/components/HomeCard/BizScheduleCard/index.vue new file mode 100644 index 0000000..8232811 --- /dev/null +++ b/src/src/components/HomeCard/BizScheduleCard/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/src/components/HomeCard/BizShortcutCard/index.vue b/src/src/components/HomeCard/BizShortcutCard/index.vue new file mode 100644 index 0000000..77478f5 --- /dev/null +++ b/src/src/components/HomeCard/BizShortcutCard/index.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/src/components/HomeCard/BizSlideshowCard/index.vue b/src/src/components/HomeCard/BizSlideshowCard/index.vue new file mode 100644 index 0000000..481ed92 --- /dev/null +++ b/src/src/components/HomeCard/BizSlideshowCard/index.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/src/components/HomeCard/SysBizDataCard/index.vue b/src/src/components/HomeCard/SysBizDataCard/index.vue new file mode 100644 index 0000000..ae65873 --- /dev/null +++ b/src/src/components/HomeCard/SysBizDataCard/index.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/src/components/HomeCard/SysOpDataCard/index.vue b/src/src/components/HomeCard/SysOpDataCard/index.vue new file mode 100644 index 0000000..8e2ba73 --- /dev/null +++ b/src/src/components/HomeCard/SysOpDataCard/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/src/components/HomeCard/SysOpLogCard/index.vue b/src/src/components/HomeCard/SysOpLogCard/index.vue new file mode 100644 index 0000000..a2a4174 --- /dev/null +++ b/src/src/components/HomeCard/SysOpLogCard/index.vue @@ -0,0 +1,58 @@ + + + + diff --git a/src/src/components/HomeCard/SysToolDataCard/index.vue b/src/src/components/HomeCard/SysToolDataCard/index.vue new file mode 100644 index 0000000..205d105 --- /dev/null +++ b/src/src/components/HomeCard/SysToolDataCard/index.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/src/components/HomeCard/SysUserInfoCard/index.vue b/src/src/components/HomeCard/SysUserInfoCard/index.vue new file mode 100644 index 0000000..cd01735 --- /dev/null +++ b/src/src/components/HomeCard/SysUserInfoCard/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/src/components/HomeCard/SysVisChartDataCard/index.vue b/src/src/components/HomeCard/SysVisChartDataCard/index.vue new file mode 100644 index 0000000..1e62eb2 --- /dev/null +++ b/src/src/components/HomeCard/SysVisChartDataCard/index.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/src/components/HomeCard/SysVisLogCard/index.vue b/src/src/components/HomeCard/SysVisLogCard/index.vue new file mode 100644 index 0000000..4b9db19 --- /dev/null +++ b/src/src/components/HomeCard/SysVisLogCard/index.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/src/components/Map/baiduMap/README.md b/src/src/components/Map/baiduMap/README.md new file mode 100644 index 0000000..3a821e0 --- /dev/null +++ b/src/src/components/Map/baiduMap/README.md @@ -0,0 +1,187 @@ +BMap +==== + +> 百度地图组件,常用于地图展示使用 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + +### 使用方式 + +```text +申请key +``` + +访问 [百度地图官网](https://lbsyun.baidu.com/apiconsole/center#/home) 注册账号,申请应用获得key + +```vue + + + +``` + +### Prop属性 + +| 名称 | 说明 | 类型 | 默认值 | +|---------------|------------|--------|----------| +| mid | 容器ID | String | 时间戳 | +| height | 容器高度 | Number | 800,单位px | +| apiKey | 地图Key | String | | +| center | 地图中心点 | String | 自动定位 | +| plugins | 地图控件 | Array | | +| viewMode | 效果:2D,3D | String | 3D | +| rotationAngle | 旋转角度 | Number | 60 | +| tiltAngle | 倾斜角度 | Number | 70 | +| zoom | 地图缩放比例 | Number | 12 | +| mapStyle | 地图样式:个性化地图 | String | | + +#### 地图控件 + +- BMap.ScaleControl:比例尺 +- BMap.ZoomControl:缩放 +- BMap.LocationControl:定位 +- BMap.NavigationControl3D:3D控件 + +### 事件 + +| 名称 | 说明 | 参数 | 参数类型 | +|-------------|---------------|----------|-------| +| complete | 当地图初始化完成时触发 | - | - | +| markerClick | 当点击了点覆盖物时触发 | position | Array | + +### 方法 + +| 名称 | 说明 | 参数 | 参数类型 | +|----------------------|-----------|------------------------|-------------------| +| renderMarker | 渲染 点标记 | dataArr | Array | +| renderIconMarker | 渲染 图标标记 | dataArr | Array | +| render3DCircleMarker | 渲染 3D圆点标记 | dataArr | Array | +| render3DIconMarker | 渲染 3D图标标记 | dataArr | Array | +| renderPolyline | 渲染 线 | dataArr,option | Array,JSON | +| renderCircle | 渲染 圆 | position,radius,option | Array,Number,JSON | +| renderPolygon | 渲染 面 | dataArr,option | Array,JSON | +| renderInfoWindow | 渲染 信息窗体 | dataArr | Array | +| openInfoWindow | 打开 信息窗体 | position | Array | +| clearOverlay | 清理 覆盖物 | | | + +### 方法参数```dataArr```结构 + +> 点标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示" +}] +``` + +> 图标标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示", + "img": "图片地址", + "imgWidth": "图片宽度,默认40", + "imgHeight": "图片高度,默认40" +}] +``` + +> 3D圆点标记 + +```json +[{ + "position": "坐标数组", + "height": "高度,默认8000", + "size": "大小,默认50", + "fillColor": "填充颜色,默认#006600" +}] +``` + +> 3D图标标记 + +```json +[{ + "position": "坐标数组", + "height": "高度,默认8000", + "size": "大小,默认50", + "img": "图片地址", + "imgWidth": "图片宽度,默认40", + "imgHeight": "图片高度,默认40" +}] +``` + +> 线、面 + +```json +[{ + "position": "坐标数组" +}] +``` + +> 信息窗体 + +```json +[{ + "position": "坐标数组", + "title": "标题", + "content": "内容,文本数组,会以换行进行连接", + "width": "窗体宽度", + "height": "窗体高度" +}] +``` + +### 方法参数```option```结构 + +> 线、圆 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5" +} +``` + +> 面 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "fillColor": "填充颜色,默认blue", + "fllOpacity": "填充透明度,默认0.5" +} +``` diff --git a/src/src/components/Map/baiduMap/index.vue b/src/src/components/Map/baiduMap/index.vue new file mode 100644 index 0000000..d327dd8 --- /dev/null +++ b/src/src/components/Map/baiduMap/index.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/src/src/components/Map/gaodeMap/README.md b/src/src/components/Map/gaodeMap/README.md new file mode 100644 index 0000000..4ab6d00 --- /dev/null +++ b/src/src/components/Map/gaodeMap/README.md @@ -0,0 +1,205 @@ +AMap +==== + +> 高德地图组件,常用于地图展示使用 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + +### 使用方式 + +```text +申请key +``` + +访问 [高德地图官网](https://console.amap.com/dev/index) 注册账号,申请应用获得key + +```vue + + + + +``` + +### Prop属性 + +| 名称 | 说明 | 类型 | 默认值 | +|---------------|-------------------|----------|-----------| +| mid | 容器ID | String | 时间戳 | +| height | 容器高度 | Number | 800,单位px | +| apiKey | 地图Key | String | | +| center | 地图中心点 | String | 自动定位 | +| plugins | 地图控件 | Array | | +| viewMode | 效果:2D,3D | String | 3D | +| zoom | 地图缩放比例 | Number | 12 | +| pitch | 地图俯仰角度,有效范围 0-83 | String | 50 | +| mapStyle | 地图样式 | String | normal | +| markerCluster | 点聚合 | Boolean | true | + +#### 地图控件 + +- AMap.ToolBar:缩放工具条 +- AMap.Scale:比例尺 +- AMap.HawkEye:鹰眼 +- AMap.MapType:图层切换 +- AMap.Geolocation:定位 +- AMap.MarkerCluster:点聚合 + +#### 地图样式 + +- normal +- macaron +- dark +- fresh +- grey + +### 事件 + +| 名称 | 说明 | 参数 | 参数类型 | +|-------------|---------------|----------|-------| +| complete | 当地图初始化完成时触发 | - | - | +| markerClick | 当点击了点覆盖物时触发 | position | Array | + +### 方法 + +| 名称 | 说明 | 参数 | 参数类型 | +|---------------------|----------|---------------------|-------------------| +| renderMarker | 渲染 点标记 | dataArr | Array | +| renderCircleMarker | 渲染 圆点标记 | dataArr | Array | +| renderSimpleMarker | 渲染 简单点标记 | dataArr, theme | Array, String | +| renderAwesomeMarker | 渲染 字体点标记 | dataArr | Array | +| renderPolyline | 渲染 线 | dataArr,opt | Array,JSON | +| renderCircle | 渲染 圆 | position,radius,opt | Array,Number,JSON | +| renderPolygon | 渲染 面 | dataArr,opt | Array,JSON | +| renderInfoWindow | 渲染 信息窗体 | dataArr | Array | +| openInfoWindow | 打开 信息窗体 | position | Array | +| clearOverlay | 清理 覆盖物 | | | + +### 方法参数```dataArr```结构 + +> 点标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示", + "content": "显示内容,content有效时,icon属性将被覆盖", + "icon": "图标", + "label": { + "content": "文本标注" + } +}] +``` + +> 圆点标记 + +```json +[{ + "position": "坐标数组,圆心位置", + "radius": "圆点半径", + "strokeColor": "线条颜色,默认#006600", + "fillColor": "填充颜色,默认#006600" +}] +``` + +> 简单点标记 + +```json +[{ + "position": "坐标数组", + "label": "前景文字", + "labelStyle": { + "color": "颜色", + "fontSize": "字体大小" + }, + "style": "背景图标样式" +}] +``` + +> 字体点标记 + +```json +[{ + "position": "坐标数组", + "awesomeIcon": "图标,参见:http://fontawesome.io/icons/", + "labelStyle": { + "color": "颜色", + "fontSize": "字体大小" + }, + "style": "背景图标样式" +}] +``` + +> 线、面 + +```json +[{ + "position": "坐标数组" +}] +``` + +> 信息窗体 + +```json +[{ + "position": "坐标数组", + "content": "显示内容,文本数组,会以换行进行连接" +}] +``` + +### 方法参数```opt```结构 + +> 线 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "isOutline": "是否显示描边,默认false", + "borderWeight": "描边宽度,默认1" +} +``` + +> 圆、面 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "fillColor": "填充颜色,默认blue", + "fllOpacity": "填充透明度,默认0.5" +} +``` diff --git a/src/src/components/Map/gaodeMap/index.vue b/src/src/components/Map/gaodeMap/index.vue new file mode 100644 index 0000000..b95597b --- /dev/null +++ b/src/src/components/Map/gaodeMap/index.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/src/components/NumberInfo/NumberInfo.vue b/src/src/components/NumberInfo/NumberInfo.vue new file mode 100644 index 0000000..a524626 --- /dev/null +++ b/src/src/components/NumberInfo/NumberInfo.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/src/components/NumberInfo/index.less b/src/src/components/NumberInfo/index.less new file mode 100644 index 0000000..18233ae --- /dev/null +++ b/src/src/components/NumberInfo/index.less @@ -0,0 +1,55 @@ +@import "../index.less"; + +@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info"; + +.@{numberInfo-prefix-cls} { + + .ant-pro-number-info-subtitle { + color: @text-color-secondary; + font-size: @font-size-base; + height: 22px; + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + } + + .number-info-value { + margin-top: 4px; + font-size: 0; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + + & > span { + color: @heading-color; + display: inline-block; + line-height: 32px; + height: 32px; + font-size: 24px; + margin-right: 32px; + } + + .sub-total { + color: @text-color-secondary; + font-size: @font-size-lg; + vertical-align: top; + margin-right: 0; + i { + font-size: 12px; + transform: scale(0.82); + margin-left: 4px; + } + // :global { + // .anticon-caret-up { + // color: @red-6; + // } + // .anticon-caret-down { + // color: @green-6; + // } + // } + } + } +} \ No newline at end of file diff --git a/src/src/components/OperationalInformation/index.vue b/src/src/components/OperationalInformation/index.vue new file mode 100644 index 0000000..8750e81 --- /dev/null +++ b/src/src/components/OperationalInformation/index.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/src/components/Selector/employeeSelectorPlus.vue b/src/src/components/Selector/employeeSelectorPlus.vue new file mode 100644 index 0000000..0c1767d --- /dev/null +++ b/src/src/components/Selector/employeeSelectorPlus.vue @@ -0,0 +1,401 @@ + + + + + diff --git a/src/src/components/Selector/iconMobileSelector.vue b/src/src/components/Selector/iconMobileSelector.vue new file mode 100644 index 0000000..9e78944 --- /dev/null +++ b/src/src/components/Selector/iconMobileSelector.vue @@ -0,0 +1,145 @@ + + + + diff --git a/src/src/components/Selector/iconSelector.vue b/src/src/components/Selector/iconSelector.vue new file mode 100644 index 0000000..3a88994 --- /dev/null +++ b/src/src/components/Selector/iconSelector.vue @@ -0,0 +1,161 @@ + + + + diff --git a/src/src/components/Selector/iconSelector_README.md b/src/src/components/Selector/iconSelector_README.md new file mode 100644 index 0000000..265ecfa --- /dev/null +++ b/src/src/components/Selector/iconSelector_README.md @@ -0,0 +1,48 @@ +iconSelector +==== + +> 图标选择组件,常用于为某一个数据设定一个图标时使用 +> eg: 设定菜单列表时,为每个菜单设定一个图标 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + + + +### 使用方式 + +```vue + + + +``` + + + +### 事件 + +| 名称 | 说明 | 类型 | 默认值 | +| ------------ | -------------------------- | ------ | ------ | +| iconCallBack | 当改变了 `icon` 选中项触发 | String | - | + +### 方法 + +| 名称 | 说明 | 类型 | 默认值 | +| --------- | --------------------------------------- | ------ | ------ | +| showIconModal | 打开选择器Model触发,携带图标时默认选中 | String | - | diff --git a/src/src/components/Selector/lineSelectorPlus.vue b/src/src/components/Selector/lineSelectorPlus.vue new file mode 100644 index 0000000..00a0a81 --- /dev/null +++ b/src/src/components/Selector/lineSelectorPlus.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/src/components/Selector/materielSelectorPlus.vue b/src/src/components/Selector/materielSelectorPlus.vue new file mode 100644 index 0000000..6779134 --- /dev/null +++ b/src/src/components/Selector/materielSelectorPlus.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/src/components/Selector/orgSelectorPlus.vue b/src/src/components/Selector/orgSelectorPlus.vue new file mode 100644 index 0000000..fb512cf --- /dev/null +++ b/src/src/components/Selector/orgSelectorPlus.vue @@ -0,0 +1,400 @@ + + + + + diff --git a/src/src/components/Selector/posSelectorPlus.vue b/src/src/components/Selector/posSelectorPlus.vue new file mode 100644 index 0000000..8a695e5 --- /dev/null +++ b/src/src/components/Selector/posSelectorPlus.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/src/src/components/Selector/roleSelectorPlus.vue b/src/src/components/Selector/roleSelectorPlus.vue new file mode 100644 index 0000000..31d5c25 --- /dev/null +++ b/src/src/components/Selector/roleSelectorPlus.vue @@ -0,0 +1,448 @@ + + + + + diff --git a/src/src/components/Selector/userSelectorPlus.vue b/src/src/components/Selector/userSelectorPlus.vue new file mode 100644 index 0000000..a0a0496 --- /dev/null +++ b/src/src/components/Selector/userSelectorPlus.vue @@ -0,0 +1,407 @@ + + + + + diff --git a/src/src/components/ShortcutCard/index.vue b/src/src/components/ShortcutCard/index.vue new file mode 100644 index 0000000..c3ab6b1 --- /dev/null +++ b/src/src/components/ShortcutCard/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/src/components/Table/README.md b/src/src/components/Table/README.md new file mode 100644 index 0000000..94d51e1 --- /dev/null +++ b/src/src/components/Table/README.md @@ -0,0 +1,375 @@ +Table 重封装组件说明 +==== + + +封装说明 +---- + +> 基础的使用方式与 API 与 [官方版(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 本一致,在其基础上,封装了加载数据的方法。 +> +> 你无需在你是用表格的页面进行分页逻辑处理,仅需向 Table 组件传递绑定 `:data="Promise"` 对象即可 + +该 `table` 由 [@Saraka](https://github.com/saraka-tsukai) 完成封装 + +由 `小诺技术团队` 完成Vue3升级并二次封装改进 + +例子1 +---- +(基础使用) + +```vue + + + + +``` + + + +例子2 +---- + +(简单的表格,最后一列是各种操作) + +```vue + + + +``` + + + +内置方法 +---- + +通过 `声明的ref去调用 ==> tableRef.value` 调用 + +`tableRef.value.refresh(true)` 刷新列表 (用户新增/修改数据后,重载列表数据) + +> 注意:要调用 `refresh(bool)` 需要给表格组件设定 `ref` 值 +> +> `refresh()` 方法可以传一个 `bool` 值,当有传值 或值为 `true` 时,则刷新时会强制刷新到第一页(常用户页面 搜索 按钮进行搜索时,结果从第一页开始分页) + + +内置属性 +---- +> 除去 `a-table` 自带属性外,还而外提供了一些额外属性属性 + + +| 属性 | 说明 | 类型 | 默认值 | +| -------------- | ----------------------------------------------- | ----------------- | ------ | +| alert | 设置是否显示表格信息栏 | [object, boolean] | null | +| showPagination | 显示分页选择器,可传 'auto' \| boolean | [string, boolean] | 'auto' | +| data | 加载数据方法 必须为 `Promise` 对象 **必须绑定** | Promise | - | +| lineSelection | 是否开启点击行高亮显示并选中 | Boolean | 'false' | + + +`alert` 属性对象: + +```javascript +alert: { + show: Boolean, + clear: [Function, Boolean] +} +``` + +注意事项 +---- + +> 你可能需要为了与后端提供的接口返回结果一致而去修改以下代码: +> (需要注意的是,这里的修改是全局性的,意味着整个项目所有使用该 table 组件都需要遵守这个返回结果定义的字段。) +> +> 文档中的结构有可能由于组件 bug 进行修正而改动。实际修改请以当时最新版本为准 + +修改 `@/components/table/index.js` 第 348 行起 + + + +```javascript +const data = reactive({ + needTotalList: [], + localLoading: false, + localDataSource: [], + localPagination: Object.assign({}, props.pagination), + isFullscreen: false, + customSize: props.compSize, + columnsSetting: [], + localSettings: { + rowClassName: props.rowClassName, + rowClassNameSwitch: Boolean(props.rowClassName) + } + }) + +// 这里的 data.xxx 是之前声明的 +// 在 loadData() 方法中去获取后端数据,进行一个数据的加载更新 +result.then((r) => { + if (r == null) { + data.localLoading = false + return + } + // 获取分页数据及分页的显示内容 + data.localPagination = + (props.showPagination && + Object.assign({}, data.localPagination, { + current: r.current, // pageNo, // 返回结果中的当前分页数 + total: r.total, // totalRows, // 返回结果中的总记录数 + showSizeChanger: props.showSizeChanger, + pageSizeOptions: props.pageSizeOptions, + showTotal: (total, range) => { + return `${range[0]}-${range[1]} 共 ${total} 条 ` + }, + pageSize: (pagination && pagination.pageSize) || data.localPagination.pageSize + })) || + false + + // 后端数据records为null保存修复 + if (r.records == null) { + r.records = [] + } + + // 为防止删除数据后导致页面当前页面数据长度为 0 ,自动翻页到上一页 + if (r.records.length === 0 && props.showPagination && data.localPagination.current > 1) { + data.localPagination.current-- + loadData() + return + } + + try { + // 当情况满足时,表示数据不满足分页大小,关闭 table 分页功能 + // 没有数据或只有一页数据时隐藏分页栏 + // if ((['auto', true].includes(props.showPagination) && r.total <= (r.pages * data.localPagination.pageSize))) { + // data.localPagination.hideOnSinglePage = true + // } + if (!props.showPagination) { + data.localPagination.hideOnSinglePage = true + } + } catch (e) { + data.localPagination = false + } + + // if (props.showPagination === false) { + // // 既然配置了不分页,那么我们这里接收到肯定是数组 + // console.log(r); + // data.localDataSource = [] + // if (r instanceof Array) { + // data.localDataSource = r + // } + // } else { + // data.localDataSource = r.records + // } + + // 返回结果中的数组数据 + data.localDataSource = r.records + data.localLoading = false + getTableProps() + }) +``` +返回 JSON 例子: +```json +{ + "message": "", + "result": { + "data": [{ + id: 1, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', + title: 'Alipay', + description: '那是一种内在的东西, 他们到达不了,也无法触及的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 2, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', + title: 'Angular', + description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 3, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', + title: 'Ant Design', + description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 4, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', + title: 'Snowy', + description: '那时候我只会想自己想要什么,从不想自己拥有什么', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 5, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', + title: 'Bootstrap', + description: '凛冬将至', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 6, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', + title: 'Vue', + description: '生命就像一盒巧克力,结果往往出人意料', + status: 1, + updatedAt: '2018-07-26 00:00:00' + } + ], + "pageSize": 10, + "pageNo": 0, + "totalPage": 6, + "totalCount": 57 + }, + "status": 200, + "timestamp": 1534955098193 +} +``` + + + +更新时间 +---- + +该文档最后更新于: 2023-12-27 PM 16:45 diff --git a/src/src/components/Table/columnSetting.vue b/src/src/components/Table/columnSetting.vue new file mode 100644 index 0000000..3dbd5f0 --- /dev/null +++ b/src/src/components/Table/columnSetting.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/src/components/Table/index.vue b/src/src/components/Table/index.vue new file mode 100644 index 0000000..58a9602 --- /dev/null +++ b/src/src/components/Table/index.vue @@ -0,0 +1,672 @@ + + + diff --git a/src/src/components/TagModal/index.vue b/src/src/components/TagModal/index.vue new file mode 100644 index 0000000..ca2eec0 --- /dev/null +++ b/src/src/components/TagModal/index.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/src/components/TreeSelect/menuTreeSelect.vue b/src/src/components/TreeSelect/menuTreeSelect.vue new file mode 100644 index 0000000..a07098f --- /dev/null +++ b/src/src/components/TreeSelect/menuTreeSelect.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/src/components/Trend/Trend.vue b/src/src/components/Trend/Trend.vue new file mode 100644 index 0000000..c70fa98 --- /dev/null +++ b/src/src/components/Trend/Trend.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/src/components/Trend/index.less b/src/src/components/Trend/index.less new file mode 100644 index 0000000..8a3d24c --- /dev/null +++ b/src/src/components/Trend/index.less @@ -0,0 +1,42 @@ +@import "../index"; + +@trend-prefix-cls: ~"@{ant-pro-prefix}-trend"; + +.@{trend-prefix-cls} { + display: inline-block; + font-size: @font-size-base; + line-height: 22px; + + .up, + .down { + margin-left: 4px; + position: relative; + top: 1px; + + i { + font-size: 12px; + transform: scale(0.83); + } + } + + .item-text { + display: inline-block; + margin-left: 8px; + color: rgba(0,0,0,.85); + } + + .up { + color: @red-6; + } + .down { + color: @green-6; + top: -1px; + } + + &.reverse-color .up { + color: @green-6; + } + &.reverse-color .down { + color: @red-6; + } +} \ No newline at end of file diff --git a/src/src/components/XnBatchButton/index.vue b/src/src/components/XnBatchButton/index.vue new file mode 100644 index 0000000..1fa17b8 --- /dev/null +++ b/src/src/components/XnBatchButton/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/src/components/XnBatchDelete/index.vue b/src/src/components/XnBatchDelete/index.vue new file mode 100644 index 0000000..f4023ef --- /dev/null +++ b/src/src/components/XnBatchDelete/index.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/src/components/XnCardList/README.md b/src/src/components/XnCardList/README.md new file mode 100644 index 0000000..e1b17a1 --- /dev/null +++ b/src/src/components/XnCardList/README.md @@ -0,0 +1,62 @@ +# 小诺卡片列表的组件 + +## 说明 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|------------|---------|--------|------------------------| +| 1 | grid | Object | grid布局 | 见:and-design定义(Grid栅格) | +| 2 | dataSource | Array | 数据源 | 见:dataSource字段定义 | +| 3 | page | Object | 分页 | 见:page字段定义 | +| 4 | actions | Array | 操作数组 | 见:action字段定义 | +| 5 | loading | Boolean | 加载中提示 | - | + +> dataSource字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|----------|--------|-----------------|---------------| +| 1 | title | String | 标题 | 设备编码 | +| 2 | subTitle | String | 副标题 | 设备名称 | +| 3 | img | String | 图片 | | +| 4 | contents | Array | 内容 | 见:content字段定义 | +| 5 | badge | Object | 徽标 | 见:badge字段定义 | +| 6 | record | Object | 数据记录,emit触发回调参数 | | + +> content字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|------| +| 1 | label | String | 标签 | 所属产品 | +| 2 | value | Object | 值 | 透传 | + +> badge字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|------------------------| +| 1 | text | String | 标签 | 所属产品 | +| 2 | color | String | 颜色 | 见:ant-design定义(预设、自定义) | + +> action字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|---------| +| 1 | key | String | 键 | setting | +| 2 | label | String | 标签 | 所属产品 | +| 3 | icon | String | 图标 | setting | +| 4 | color | String | 颜色 | red | + +> page字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|------|----| +| 1 | current | Number | 当前页 | 1 | +| 2 | size | Number | 每页大小 | 6 | +| 3 | total | Number | 总数 | 0 | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 参数示例 | +|----|-------------|--------|-----------------------------| +| 1 | action | Object | {key: 'edit', record:{...}} | +| 2 | page-change | Number | 1 | diff --git a/src/src/components/XnCardList/index.vue b/src/src/components/XnCardList/index.vue new file mode 100644 index 0000000..44844c5 --- /dev/null +++ b/src/src/components/XnCardList/index.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/src/src/components/XnContextMenu/index.vue b/src/src/components/XnContextMenu/index.vue new file mode 100644 index 0000000..3264afc --- /dev/null +++ b/src/src/components/XnContextMenu/index.vue @@ -0,0 +1,82 @@ + + diff --git a/src/src/components/XnDataList/README.md b/src/src/components/XnDataList/README.md new file mode 100644 index 0000000..e016364 --- /dev/null +++ b/src/src/components/XnDataList/README.md @@ -0,0 +1,67 @@ +# 小诺数据列表的组件 + +## 说明 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|------------|---------|-------|------------------| +| 1 | dataSource | Array | 数据源 | 见:dataSource字段定义 | +| 2 | page | Object | 分页 | 见:page字段定义 | +| 3 | actions | Array | 操作数组 | 见:action字段定义 | +| 4 | loading | Boolean | 加载中提示 | - | + +> dataSource字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|--------------|--------|-----------------|-------------------| +| 1 | title | String | 标题 | 设备编码 | +| 2 | descriptions | Array | 描述 | 见:description字段定义 | +| 3 | contents | Array | 内容 | 见:content字段定义 | +| 4 | record | Object | 数据记录,emit触发回调参数 | | + +> description字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|----|------| +| 1 | title | String | 标题 | 设备名称 | +| 2 | content | Object | 内容 | 测试设备 | + +> content字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|----|---------------------| +| 1 | title | String | 标题 | 数据更新时间 | +| 2 | content | Object | 内容 | 2023-11-14 09:00:00 | + +> action字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|---------| +| 1 | key | String | 键 | setting | +| 2 | label | String | 标签 | 所属产品 | +| 3 | icon | String | 图标 | setting | +| 4 | color | String | 颜色 | red | + +> page字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|------|----| +| 1 | current | Number | 当前页 | 1 | +| 2 | size | Number | 每页大小 | 6 | +| 3 | total | Number | 总数 | 0 | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 参数示例 | +|----|-------------|--------|-----------------------------| +| 1 | title | Object | {record: {...}} | +| 1 | action | Object | {key: 'edit', record:{...}} | +| 2 | page-change | Number | 1 | + +### slots定义 + +| 序号 | 名称 | 说明 | 示例 | +|----|--------------|--------|----| +| 1 | title-prefix | 标题前缀插槽 | - | +| 2 | title-suffix | 内容后缀插槽 | - | diff --git a/src/src/components/XnDataList/index.vue b/src/src/components/XnDataList/index.vue new file mode 100644 index 0000000..07beb9a --- /dev/null +++ b/src/src/components/XnDataList/index.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/src/components/XnEditor/index.vue b/src/src/components/XnEditor/index.vue new file mode 100644 index 0000000..f04a984 --- /dev/null +++ b/src/src/components/XnEditor/index.vue @@ -0,0 +1,125 @@ + + + + diff --git a/src/src/components/XnFilePreview/README.md b/src/src/components/XnFilePreview/README.md new file mode 100644 index 0000000..0e82169 --- /dev/null +++ b/src/src/components/XnFilePreview/README.md @@ -0,0 +1,9 @@ +# 小诺文件预览的组件 + +## 说明 + +该组件支持图片、PDF、OFFICE、WORD在线预览,其他类型的不支持 + +## 使用 + +使用的时候直接在界面引入即可,配置相关参数就能行 diff --git a/src/src/components/XnFilePreview/index.vue b/src/src/components/XnFilePreview/index.vue new file mode 100644 index 0000000..f8af5d4 --- /dev/null +++ b/src/src/components/XnFilePreview/index.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/src/components/XnFormContainer/index.vue b/src/src/components/XnFormContainer/index.vue new file mode 100644 index 0000000..ef29a45 --- /dev/null +++ b/src/src/components/XnFormContainer/index.vue @@ -0,0 +1,49 @@ + + + + diff --git a/src/src/components/XnHighlightjs/index.vue b/src/src/components/XnHighlightjs/index.vue new file mode 100644 index 0000000..33d44fa --- /dev/null +++ b/src/src/components/XnHighlightjs/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/src/components/XnOrgSelector/README.md b/src/src/components/XnOrgSelector/README.md new file mode 100644 index 0000000..47d6aa0 --- /dev/null +++ b/src/src/components/XnOrgSelector/README.md @@ -0,0 +1,36 @@ +## 小诺机构选择器 + +### 说明 + +改组件为小诺机构选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|-------------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | orgPageApi | function | 机构分页接口 | - | +| 5 | orgListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择机构(非表单内、单纯的选择机构需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择机构后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除机构 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在机构新增按钮后可以插入自定义按钮 | 不满足新增机构按钮样式,可以自定义 | diff --git a/src/src/components/XnOrgSelector/index.vue b/src/src/components/XnOrgSelector/index.vue new file mode 100644 index 0000000..c5df64e --- /dev/null +++ b/src/src/components/XnOrgSelector/index.vue @@ -0,0 +1,579 @@ + + + + diff --git a/src/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif b/src/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif new file mode 100644 index 0000000..be20102 Binary files /dev/null and b/src/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif differ diff --git a/src/src/components/XnPageSelect/README.md b/src/src/components/XnPageSelect/README.md new file mode 100644 index 0000000..7c45cf2 --- /dev/null +++ b/src/src/components/XnPageSelect/README.md @@ -0,0 +1,192 @@ +XnPageSelect 分页下拉选择器 +==== + + +封装说明 +---- + +> 基础的使用方式与 API 与 [官方版(Select)](https://www.antdv.com/components/select-cn/) 本一致,在其基础上,封装了加载数据的方法。(调用后端分页接口,懒加载的效果查询下拉数据) +> +> @zhanggengbi在此基础上完善了功能:下拉查询同时支持搜索框搜索--调用后端数据搜索。 + +例子1 +---- +(基础使用) + +```vue + + + + +``` + + + +例子2 +---- + +(支持搜索框搜索--调用后端数据搜索) + +```vue + + + +``` + +![分页下拉查询展示](.\README.assets\分页下拉查询展示.gif) + +内置方法 +---- + + +| 方法 | 说明 | 参数类型 | 参数示例 | +| ------ | ------------ | -------- | ------------ | +| onPage | 请求分页数据 | Object | {current: 1} | + + +内置属性 +---- +> 除去 `a-select` 自带属性外,还而外提供了一些额外属性属性 + + +| 属性 | 说明 | 类型 | 默认值 | +| ------------- | ------------------------------------------- | ------- | ------ | +| pageFunction | 分页函数 必须为 `Promise` 对象 **必须绑定** | Promise | - | +| pageSize | 分页条数 | Number | 10 | +| showSearch | 配置是否可搜索 | Boolean | false | +| searchKeyName | 搜索字段属性名 | String | '' | + +注意事项 +---- + +> 分页函数,返回的Promise对象的data数据是分页格式的数据 +> +> data.records格式如下:{ name: name, id: id } id最后是你的value,name是你的显示名称 + +如果返回的数据data.records格式命名不对,可以重新封装一下 + +```javascript +// 示例重新封装一下data.records +const selectApiFunction = { + customerSelector: (param) => { + return customerInfoApi.customerPage(Object.assign(param, {envFlag: searchFormState.value.envFlag})).then((data) => { + if (data.records){ + data.records = data.records.map((item) => { + return { + name: item.customerName, + id: item.customerInfoId, + }; + }); + } + return Promise.resolve(data) + }) + } +} +``` +更新时间 +---- + +该文档最后更新于: 2024-06-28 PM 16:45 diff --git a/src/src/components/XnPageSelect/index.vue b/src/src/components/XnPageSelect/index.vue new file mode 100644 index 0000000..ba8ff4a --- /dev/null +++ b/src/src/components/XnPageSelect/index.vue @@ -0,0 +1,172 @@ + + + diff --git a/src/src/components/XnPositionSelector/README.md b/src/src/components/XnPositionSelector/README.md new file mode 100644 index 0000000..2964be3 --- /dev/null +++ b/src/src/components/XnPositionSelector/README.md @@ -0,0 +1,36 @@ +## 小诺职位选择器 + +### 说明 + +改组件为小诺职位选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | positionPageApi | function | 职位分页接口 | - | +| 5 | positionListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择职位(非表单内、单纯的选择职位需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择职位后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除职位 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在职位新增按钮后可以插入自定义按钮 | 不满足新增职位按钮样式,可以自定义 | diff --git a/src/src/components/XnPositionSelector/index.vue b/src/src/components/XnPositionSelector/index.vue new file mode 100644 index 0000000..81aa587 --- /dev/null +++ b/src/src/components/XnPositionSelector/index.vue @@ -0,0 +1,579 @@ + + + + diff --git a/src/src/components/XnRoleSelector/README.md b/src/src/components/XnRoleSelector/README.md new file mode 100644 index 0000000..0b26be8 --- /dev/null +++ b/src/src/components/XnRoleSelector/README.md @@ -0,0 +1,36 @@ +## 小诺角色选择器 + +### 说明 + +改组件为小诺角色选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | rolePageApi | function | 角色分页接口 | - | +| 5 | roleListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择角色(非表单内、单纯的选择角色需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择角色后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除角色 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在角色新增按钮后可以插入自定义按钮 | 不满足新增角色按钮样式,可以自定义 | diff --git a/src/src/components/XnRoleSelector/index.vue b/src/src/components/XnRoleSelector/index.vue new file mode 100644 index 0000000..86c5527 --- /dev/null +++ b/src/src/components/XnRoleSelector/index.vue @@ -0,0 +1,607 @@ + + + + diff --git a/src/src/components/XnSignName/README.md b/src/src/components/XnSignName/README.md new file mode 100644 index 0000000..36b3522 --- /dev/null +++ b/src/src/components/XnSignName/README.md @@ -0,0 +1,117 @@ +# vue-esign + +https://github.com/JaimeCheng/vue-esign#readme + +> Canvas 手写签字 电子签名 +![npm](https://img.shields.io/npm/dm/vue-esign) ![GitHub package.json version](https://img.shields.io/github/package-json/v/jaimecheng/vue-esign) + +## 时隔三年的更新!!支持vue3 +- **支持vue3!!!!更新依赖后,仅`bgColor`原来的`.sync`修饰符需改为vue3写法`v-model:bgColor`**; +- 新增属性 `isClearBgColor`,默认值`true`, 清空画布时(reset)是否同时清空设置的背景色(bgColor) ; +- 直接`npm install vue-esign@latest --save`即可,对vue2版本无任何影响; +## 功能 +1. 兼容 PC 和 Mobile; +2. 画布自适应屏幕大小变化(窗口缩放、屏幕旋转时画布无需重置,自动校正坐标); +3. 自定义画布尺寸(导出图尺寸),画笔粗细、颜色,画布背景色; +4. 支持裁剪 (针对需求:有的签字需要裁剪掉四周空白)。 +5. 导出图片格式为 `base64`; +6. [示例demo](https://jaimecheng.github.io/vue-esign/demo/) + +## 安装 + +``` bash +npm install vue-esign --save +``` + +## 使用 +1. 全局使用 、局部 +```js +// 全局 vue2 main.js +import vueEsign from 'vue-esign' +Vue.use(vueEsign) +// 全局vue3 main.js +import { createApp } from 'vue' +import App from './App.vue' +import vueEsign from 'vue-esign' +const app = createApp(App) +app.use(vueEsign) +// 局部 +import vueEsign from 'vue-esign' +// vue3 中只需需引入组件就可以使用无需注册 +``` +2. 页面中使用 + // 在组件中使用 ref="esign" + **在script中必须设置 `const esign = ref()` ,用来调用组件的两个内置方法 `reset()` 和 `generate()`** + + 无需给组件设置 `style` 的宽高,如果画布的 `width`属性值没超出父元素的样式宽度,则该组件的样式宽度就是画布宽度,超出的话,组件样式宽度则是父元素的100%; 所以只需设置好父元素的宽度即可; +```html + + + + + + +预览 +清屏 +``` + +```vue + +3. 说明 + +| 属性 | 类型 | 默认值 | 说明 | +| :-: | :-- | :-: | :-- | +| width | Number | 800 | 画布宽度,即导出图片的宽度 | +| height | Number | 300 | 画布高度,即导出图片的高度 | +| lineWidth | 4 | Number | 画笔粗细 | +| lineColor | String | #000000 | 画笔颜色 | +| bgColor | String | 空 | 画布背景色,为空时画布背景透明,
支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red' | +| isCrop | Boolean | false | 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 | +| isClearBgColor | Boolean | true | 清空画布时(reset)是否同时清空设置的背景色(bgColor) | +| format | String | image/png | 生成图片格式 image/jpeg(jpg格式下生成的图片透明背景会变黑色请慎用或指定背景色)、 image/webp | +| quality | Number | 1 | 生成图片质量;在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。 | + +两个内置方法,通过给组件设置 `ref` 调用: + +**清空画布** +```js +esign.value.reset() +``` + +**生成图片** + +```js +// 可选配置参数 ,在未设置format或quality属性时可在生成图片时配置 例如: {format:'image/jpeg', quality: 0.5} +// this.$refs.esign.generate({format:'image/jpeg', quality: 0.5}) +esign.value.generate().then(res => { + console.log(res) // base64图片 +}).catch(err => { + alert(err) // 画布没有签字时会执行这里 'Not Signned' +}) +``` + +![](./static/demo.gif) diff --git a/src/src/components/XnSignName/index.vue b/src/src/components/XnSignName/index.vue new file mode 100644 index 0000000..01e2b2a --- /dev/null +++ b/src/src/components/XnSignName/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/src/components/XnSignName/vueEsign.vue b/src/src/components/XnSignName/vueEsign.vue new file mode 100644 index 0000000..db0d292 --- /dev/null +++ b/src/src/components/XnSignName/vueEsign.vue @@ -0,0 +1,297 @@ + + + + diff --git a/src/src/components/XnUpload/README.md b/src/src/components/XnUpload/README.md new file mode 100644 index 0000000..d424653 --- /dev/null +++ b/src/src/components/XnUpload/README.md @@ -0,0 +1,39 @@ +## 小诺文件上传 + +### 说明 + +改组件为文件上传、支持单个、多个文件;返回id、返回数组、返回所有 + +@author yubaoshan + +@data 2024年5月27日09:15:17 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------------|---------|---------------------------------------------------------------------------------------------|----------------------------------| +| 1 | uploadReturnIdApi | String | 上传返回id接口地址 | /dev/file/uploadLocalReturnId | +| 2 | uploadDynamicReturnUrlApi | String | 上传返回url接口地址 | /dev/file/uploadDynamicReturnUrl | +| 3 | uploadIdDownloadUrl | String | 当上传接口为id的情况下,配置下载接口 | /dev/file/download?id= | +| 4 | uploadMode | String | 上传样式或图片方式 file、drag、image | file | +| 5 | uploadNumber | Number | 上传数量 | 1 | +| 6 | uploadText | String | 上传文字 | 上传 | +| 7 | uploadResultType | String | 上传返回分类 字符串逗号隔离或数组 interval、array | interval | +| 8 | showUploadList | Boolean | 跟antdv官方一样,是否显示文件列表 | true | +| 9 | accept | String | 跟antdv官方一样,接受上传的文件类型,如果uploadMode配置了image类型,上传的必须是图片,该参数也只能配置图片的某一项或多项,具体百度查看文件上传accept类型配置 | - | +| 10 | completeResult | Boolean | 是否是完整的结果(就是文件上传返回什么,该组件返回什么,uploadResultCategory必须为array) | false | +| 11 | value | String, Array | 父组件传来的参数,通过v-model:value绑定 | - | + + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|---------------------------------------|-----------------------------| +| 1 | value | 根据uploadResultType、completeResult 而定 | 当选择用户后通过v-model:value绑定到组件上 | +| 2 | onChange | 根据uploadResultType、completeResult 而定 | 通过@onChange 方法返回上传的数据 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | +|----|--------|-------------| +| 1 | explain | 主要用于一些提示性文字 | diff --git a/src/src/components/XnUpload/index.vue b/src/src/components/XnUpload/index.vue new file mode 100644 index 0000000..a30a932 --- /dev/null +++ b/src/src/components/XnUpload/index.vue @@ -0,0 +1,359 @@ + + + diff --git a/src/src/components/XnUserSelector/README.md b/src/src/components/XnUserSelector/README.md new file mode 100644 index 0000000..d62d4bf --- /dev/null +++ b/src/src/components/XnUserSelector/README.md @@ -0,0 +1,36 @@ +## 小诺人员选择器 + +### 说明 + +改组件为小诺人员选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年4月13日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | userPageApi | function | 用户分页接口 | - | +| 5 | userListByIdListApi | function | 通过id数组查询list数据接口 | - | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | userShow | Boolean | 是否显示已选择用户(非表单内、单纯的选择用户需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择用户后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除用户 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在人员新增按钮后可以插入自定义按钮 | 不满足新增人员按钮样式,可以自定义 | diff --git a/src/src/components/XnUserSelector/index.vue b/src/src/components/XnUserSelector/index.vue new file mode 100644 index 0000000..3c6cb35 --- /dev/null +++ b/src/src/components/XnUserSelector/index.vue @@ -0,0 +1,623 @@ + + + + diff --git a/src/src/components/XnUserSelector/userSelectorTest.vue b/src/src/components/XnUserSelector/userSelectorTest.vue new file mode 100644 index 0000000..57e3ec2 --- /dev/null +++ b/src/src/components/XnUserSelector/userSelectorTest.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/src/components/global.less b/src/src/components/global.less new file mode 100644 index 0000000..fda3196 --- /dev/null +++ b/src/src/components/global.less @@ -0,0 +1,503 @@ +@import './index.less'; + +body { + + +} + +#app { + height: 100%; + + &.colorWeak { + filter: invert(80%); + } + &.userLayout { + overflow: auto; + } +} + +.layout.ant-layout { + height: auto; + overflow-x: hidden; + + &.mobile, + &.tablet { + .ant-layout-content { + .content { + margin: 24px 0 0; + } + } + .topmenu { + /* 必须为 topmenu 才能启用流式布局 */ + &.content-width-Fluid { + .header-index-wide { + margin-left: 0; + } + } + } + } + + &.mobile { + .sidemenu { + .ant-header-fixedHeader { + &.ant-header-side-opened, + &.ant-header-side-closed { + width: 100%; + } + } + } + } + + &.ant-layout-has-sider { + flex-direction: row; + } + + .trigger { + font-size: 20px; + line-height: 55px; + padding: 0 24px; + cursor: pointer; + transition: color 0.3s; + &:hover { + background: rgba(0, 0, 0, 0.025); + } + } + + .topmenu { + .ant-header-fixedHeader { + position: fixed; + top: 0; + right: 0; + z-index: 9; + width: 100%; + transition: width 0.2s; + + &.ant-header-side-opened { + width: 100%; + } + + &.ant-header-side-closed { + width: 100%; + } + } + /* 必须为 topmenu 才能启用流式布局 */ + &.content-width-Fluid { + .header-index-wide { + max-width: unset; + .header-index-left { + flex: 1 1 1000px; + .logo{ + margin-left: 25px; + } + .ant-menu.ant-menu-horizontal{ + max-width: calc(100vw - 190px - 238px - 25px); + flex: 1 1 calc(100vw - 190px - 238px - 25px); + } + } + .header-index-right{ + margin-right:25px; + } + } + + .page-header-index-wide { + max-width: unset; + } + } + } + + .sidemenu { + .ant-header-fixedHeader { + position: fixed; + top: 0; + right: 0; + z-index: 9; + width: 100%; + transition: width 0.2s; + + &.ant-header-side-opened { + width: calc(100% - 230px); + } + + &.ant-header-side-closed { + width: calc(100% - 80px); + } + } + } + + .header { + height: 55px; + // padding: 0 12px 0 0; + background: #fff; + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + position: relative; + } + + .header, + .top-nav-header-index { + .user-wrapper { + float: right; + height: 100%; + + .action { + line-height: 55px; + cursor: pointer; + padding: 0 12px; + display: inline-block; + transition: all 0.3s; + height: 100%; + color: rgba(0, 0, 0, 0.65); + + &:hover { + background: rgba(0, 0, 0, 0.025); + } + + .avatar { + margin: 15px 8px 15px 0; + color: #1890ff; + background: hsla(0, 0%, 100%, 0.85); + vertical-align: middle; + } + + .icon { + font-size: 16px; + padding: 4px; + } + } + } + + &.dark { + .user-wrapper { + .action { + color: rgba(255, 255, 255, 0.85); + a { + color: rgba(255, 255, 255, 0.85); + } + + &:hover { + background: rgba(255, 255, 255, 0.16); + } + } + } + } + } + + &.mobile, + &.tablet { + .top-nav-header-index { + .header-index-wide { + .header-index-left { + .trigger { + color: rgba(255, 255, 255, 0.85); + padding: 0 12px; + } + + .logo.top-nav-header { + flex: 0 0 56px; + text-align: center; + line-height: 58px; + h1 { + display: none; + } + } + } + } + + &.light { + .header-index-wide { + .header-index-left { + .trigger { + color: rgba(0, 0, 0, 0.65); + } + } + } + } + } + } + + &.tablet { + // overflow: hidden; text-overflow:ellipsis; white-space: nowrap; + .top-nav-header-index { + .header-index-wide { + .header-index-left { + .logo > a { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + .ant-menu.ant-menu-horizontal { + flex: 1 1 auto; + white-space: normal; + } + } + } + } + + .top-nav-header-index { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + position: relative; + transition: background 0.3s, width 0.2s; + + .header-index-wide { + max-width: 1200px; + margin: auto; + padding-left: 0; + display: flex; + height: 55px; + + .ant-menu.ant-menu-horizontal { + max-width: 835px; + flex: 0 1 835px; + border: none; + height: 55px; + line-height: 55px; + } + + .header-index-left { + flex: 0 1 1000px; + display: flex; + + .logo.top-nav-header { + flex: 0 0 165px; + width: 165px; + height: 55px; + position: relative; + line-height: 55px; + transition: all 0.3s; + overflow: hidden; + + img, + svg { + display: inline-block; + vertical-align: middle; + height: 32px; + width: 32px; + } + + h1 { + color: #fff; + display: inline-block; + vertical-align: top; + font-size: 16px; + margin: 0 0 0 12px; + font-weight: 400; + } + } + } + + .header-index-right { + flex: 0 0 238px; + align-self: flex-end; + height: 55px; + overflow: hidden; + + .content-box { + float: right; + .action { + max-width: 140px; + overflow: hidden; + text-overflow:ellipsis; + white-space:nowrap; + } + } + } + } + + &.light { + background-color: #fff; + + .header-index-wide { + .header-index-left { + .logo { + h1 { + color: #002140; + } + } + } + } + } + } + + // 内容区 + .layout-content { + margin: 24px 24px 0px; + //height: 100%; + //height: 64px; + padding: 0 12px 0 0; + } + + // footer + .ant-layout-footer { + padding: 0; + } +} + +.topmenu { + .page-header-index-wide { + max-width: 1200px; + margin: 0 auto; + } +} + +// drawer-sider 自定义 +.ant-drawer.drawer-sider { + .sider { + box-shadow: none; + } + + &.dark { + .ant-drawer-content { + background-color: rgb(0, 21, 41); + } + } + &.light { + box-shadow: none; + .ant-drawer-content { + background-color: #fff; + } + } + + .ant-drawer-body { + padding: 0; + } +} + +// 菜单样式 +.sider { + box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); + position: relative; + z-index: @ant-global-sider-zindex; + min-height: 100vh; + + .ant-layout-sider-children { + overflow-y: hidden; + + &:hover { + overflow-y: auto; + } + } + + &.ant-fixed-sidemenu { + position: fixed; + height: 100%; + } + + // logo区域样式 + .logo { + position: relative; + height: 55px; + padding-left: 24px; + overflow: hidden; + line-height: 55px; + background: #002140; + transition: all .3s; + + img, + svg, + h1 { + display: inline-block; + vertical-align: middle; + } + + img, + svg { + height: 32px; + width: 32px; + } + + h1 { + color: #fff; + font-size: 20px; + margin: 0 0 0 12px; + font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; + font-weight: 600; + vertical-align: middle; + } + } + + &.light { + background-color: #fff; + box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05); + + .logo { + background: #fff; + box-shadow: 1px 1px 0px 0px #e8e8e8; + + h1 { + color: unset; + } + } + + .ant-menu-light { + border-right-color: transparent; + } + } +} + +// 外置的样式控制 +.user-dropdown-menu { + span { + user-select: none; + } +} +.user-dropdown-menu-wrapper.ant-dropdown-menu { + padding: 4px 0; + + .ant-dropdown-menu-item { + width: 160px; + } + + .ant-dropdown-menu-item > .anticon:first-child, + .ant-dropdown-menu-item > a > .anticon:first-child, + .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child { + min-width: 12px; + margin-right: 8px; + } +} + +// 数据列表 样式 +.table-alert { + margin-bottom: 16px; +} + +.table-page-search-wrapper { + .ant-form-inline { + .ant-form-item { + display: flex; + margin-bottom: 24px; + margin-right: 0; + + .ant-form-item-control-wrapper { + flex: 1 1; + display: inline-block; + vertical-align: middle; + } + + > .ant-form-item-label { + line-height: 32px; + padding-right: 8px; + width: auto; + } + .ant-form-item-control { + height: 32px; + line-height: 32px; + } + } + } + + .table-page-search-submitButtons { + display: block; + margin-bottom: 24px; + white-space: nowrap; + } +} + +.content { + .table-operator { + margin-bottom: 18px; + + button { + margin-right: 8px; + } + } +} diff --git a/src/src/components/index.less b/src/src/components/index.less new file mode 100644 index 0000000..25cb200 --- /dev/null +++ b/src/src/components/index.less @@ -0,0 +1,6 @@ +@import "ant-design-vue/lib/style/index"; + +// The prefix to use on all css classes from ant-pro. +@ant-pro-prefix : ant-pro; +@ant-global-sider-zindex : 106; +@ant-global-header-zindex : 105; diff --git a/src/src/config/iconSelect.js b/src/src/config/iconSelect.js new file mode 100644 index 0000000..0c57c0b --- /dev/null +++ b/src/src/config/iconSelect.js @@ -0,0 +1,827 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * 图标选择器基础数据 + * 推荐前往https://icones.js.org下载图标的Vue文件,然后放在src/assets/icons文件夹里面 + * 这个网址有118个图标集,包括antd、font awesome、bootstrap、eleme等累计140456个图标 + */ +const uiwIconComponentMap = import.meta.glob('../assets/icons/uiw/*.vue') // 异步方式 + +const uiwIcons = Object.keys(uiwIconComponentMap).map((key) => { + return key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')) +}) + +export default { + icons: [ + { + name: '基础', + key: 'default', + iconItem: [ + { + name: '线框风格', + key: 'default', + item: [ + 'step-backward-outlined', + 'step-forward-outlined', + 'fast-backward-outlined', + 'fast-forward-outlined', + 'shrink-outlined', + 'arrows-alt-outlined', + 'down-outlined', + 'up-outlined', + 'left-outlined', + 'right-outlined', + 'caret-up-outlined', + 'caret-down-outlined', + 'caret-left-outlined', + 'caret-right-outlined', + 'up-circle-outlined', + 'down-circle-outlined', + 'left-circle-outlined', + 'right-circle-outlined', + 'double-right-outlined', + 'double-left-outlined', + 'vertical-left-outlined', + 'vertical-right-outlined', + 'vertical-align-top-outlined', + 'vertical-align-middle-outlined', + 'vertical-align-bottom-outlined', + 'forward-outlined', + 'backward-outlined', + 'rollback-outlined', + 'enter-outlined', + 'retweet-outlined', + 'swap-outlined', + 'swap-left-outlined', + 'swap-right-outlined', + 'arrow-up-outlined', + 'arrow-down-outlined', + 'arrow-left-outlined', + 'arrow-right-outlined', + 'play-circle-outlined', + 'up-Square-outlined', + 'down-square-outlined', + 'left-square-outlined', + 'right-square-outlined', + 'login-outlined', + 'logout-outlined', + 'menu-fold-outlined', + 'menu-unfold-outlined', + 'border-bottom-outlined', + 'border-horizontal-outlined', + 'border-inner-outlined', + 'border-outer-outlined', + 'border-left-outlined', + 'border-right-outlined', + 'border-top-outlined', + 'border-verticle-outlined', + 'pic-center-outlined', + 'pic-left-outlined', + 'pic-right-outlined', + 'radius-bottomleft-outlined', + 'radius-bottomright-outlined', + 'radius-upleft-outlined', + 'radius-upright-outlined', + 'fullscreen-outlined', + 'fullscreen-exit-outlined', + 'question-outlined', + 'question-circle-outlined', + 'plus-outlined', + 'plus-circle-outlined', + 'pause-outlined', + 'pause-circle-outlined', + 'minus-outlined', + 'minus-circle-outlined', + 'plus-square-outlined', + 'minus-square-outlined', + 'info-outlined', + 'info-circle-outlined', + 'exclamation-outlined', + 'exclamation-circle-outlined', + 'close-outlined', + 'close-circle-outlined', + 'close-square-outlined', + 'check-outlined', + 'check-circle-outlined', + 'check-square-outlined', + 'clock-circle-outlined', + 'warning-outlined', + 'issues-close-outlined', + 'stop-outlined', + 'edit-outlined', + 'form-outlined', + 'copy-outlined', + 'scissor-outlined', + 'delete-outlined', + 'snippets-outlined', + 'diff-outlined', + 'highlight-outlined', + 'align-center-outlined', + 'align-left-outlined', + 'align-right-outlined', + 'bg-colors-outlined', + 'bold-outlined', + 'italic-outlined', + 'underline-outlined', + 'strikethrough-outlined', + 'redo-outlined', + 'undo-outlined', + 'zoom-in-outlined', + 'zoom-out-outlined', + 'font-colors-outlined', + 'font-size-outlined', + 'line-height-outlined', + 'dash-outlined', + 'small-dash-outlined', + 'sort-ascending-outlined', + 'sort-descending-outlined', + 'drag-outlined', + 'ordered-list-outlined', + 'unordered-list-outlined', + 'radius-setting-outlined', + 'column-width-outlined', + 'column-height-outlined', + 'account-book-outlined', + 'aim-outlined', + 'alert-outlined', + 'apartment-outlined', + 'api-outlined', + 'appstore-add-outlined', + 'appstore-outlined', + 'audio-outlined', + 'audio-muted-outlined', + 'audit-outlined', + 'bank-outlined', + 'barcode-outlined', + 'bars-outlined', + 'bell-outlined', + 'block-outlined', + 'book-outlined', + 'border-outlined', + 'borderless-table-outlined', + 'branches-outlined', + 'bug-outlined', + 'build-outlined', + 'bulb-outlined', + 'calculator-outlined', + 'calendar-outlined', + 'camera-outlined', + 'car-outlined', + 'carry-out-outlined', + 'ci-circle-outlined', + 'ci-outlined', + 'clear-outlined', + 'cloud-download-outlined', + 'cloud-outlined', + 'cloud-server-outlined', + 'cloud-sync-outlined', + 'cloud-upload-outlined', + 'cluster-outlined', + 'code-outlined', + 'coffee-outlined', + 'comment-outlined', + 'compass-outlined', + 'compress-outlined', + 'console-sql-outlined', + 'contacts-outlined', + 'container-outlined', + 'control-outlined', + 'copyright-circle-outlined', + 'copyright-outlined', + 'credit-card-outlined', + 'crown-outlined', + 'customer-service-outlined', + 'dashboard-outlined', + 'database-outlined', + 'delete-column-outlined', + 'delete-row-outlined', + 'delivered-procedure-outlined', + 'deployment-unit-outlined', + 'desktop-outlined', + 'dingtalk-outlined', + 'disconnect-outlined', + 'dislike-outlined', + 'dollar-circle-outlined', + 'dollar-outlined', + 'download-outlined', + 'ellipsis-outlined', + 'environment-outlined', + 'euro-circle-outlined', + 'euro-outlined', + 'exception-outlined', + 'expand-alt-outlined', + 'expand-outlined', + 'experiment-outlined', + 'export-outlined', + 'eye-outlined', + 'eye-invisible-outlined', + 'field-binary-outlined', + 'field-number-outlined', + 'field-string-outlined', + 'field-time-outlined', + 'file-add-outlined', + 'file-done-outlined', + 'file-excel-outlined', + 'file-exclamation-outlined', + 'file-outlined', + 'file-gif-outlined', + 'file-image-outlined', + 'file-jpg-outlined', + 'file-markdown-outlined', + 'file-pdf-outlined', + 'file-ppt-outlined', + 'file-protect-outlined', + 'file-search-outlined', + 'file-sync-outlined', + 'file-text-outlined', + 'file-unknown-outlined', + 'file-word-outlined', + 'file-zip-outlined', + 'filter-outlined', + 'fire-outlined', + 'flag-outlined', + 'folder-add-outlined', + 'folder-outlined', + 'folder-open-outlined', + 'folder-view-outlined', + 'fork-outlined', + 'format-painter-outlined', + 'frown-outlined', + 'function-outlined', + 'fund-projection-screen-outlined', + 'fund-view-outlined', + 'funnel-plot-outlined', + 'gateway-outlined', + 'gif-outlined', + 'gift-outlined', + 'global-outlined', + 'gold-outlined', + 'group-outlined', + 'hdd-outlined', + 'heart-outlined', + 'history-outlined', + 'holder-outlined', + 'home-outlined', + 'hourglass-outlined', + 'idcard-outlined', + 'import-outlined', + 'inbox-outlined', + 'insert-row-above-outlined', + 'insert-row-below-outlined', + 'insert-row-left-outlined', + 'insert-row-right-outlined', + 'insurance-outlined', + 'interaction-outlined', + 'key-outlined', + 'laptop-outlined', + 'layout-outlined', + 'like-outlined', + 'line-outlined', + 'link-outlined', + 'loading3-quarters-outlined', + 'loading-outlined', + 'lock-outlined', + 'mac-command-outlined', + 'mail-outlined', + 'man-outlined', + 'medicine-box-outlined', + 'meh-outlined', + 'menu-outlined', + 'merge-cells-outlined', + 'message-outlined', + 'mobile-outlined', + 'money-collect-outlined', + 'monitor-outlined', + 'more-outlined', + 'node-collapse-outlined', + 'node-expand-outlined', + 'node-index-outlined', + 'notification-outlined', + 'number-outlined', + 'one-to-one-outlined', + 'paper-clip-outlined', + 'partition-outlined', + 'pay-circle-outlined', + 'percentage-outlined', + 'phone-outlined', + 'picture-outlined', + 'play-square-outlined', + 'pound-circle-outlined', + 'pound-outlined', + 'poweroff-outlined', + 'printer-outlined', + 'profile-outlined', + 'project-outlined', + 'property-safety-outlined', + 'pull-request-outlined', + 'pushpin-outlined', + 'qrcode-outlined', + 'read-outlined', + 'reconciliation-outlined', + 'red-envelope-outlined', + 'reload-outlined', + 'rest-outlined', + 'robot-outlined', + 'rocket-outlined', + 'rotate-left-outlined', + 'rotate-right-outlined', + 'safety-certificate-outlined', + 'safety-outlined', + 'save-outlined', + 'scan-outlined', + 'schedule-outlined', + 'search-outlined', + 'security-scan-outlined', + 'select-outlined', + 'send-outlined', + 'setting-outlined', + 'shake-outlined', + 'share-alt-outlined', + 'shop-outlined', + 'shopping-cart-outlined', + 'shopping-outlined', + 'sisternode-outlined', + 'skin-outlined', + 'smile-outlined', + 'solution-outlined', + 'sound-outlined', + 'split-cells-outlined', + 'star-outlined', + 'subnode-outlined', + 'switcher-outlined', + 'sync-outlined', + 'table-outlined', + 'tablet-outlined', + 'tag-outlined', + 'tags-outlined', + 'team-outlined', + 'thunderbolt-outlined', + 'to-top-outlined', + 'tool-outlined', + 'trademark-circle-outlined', + 'trademark-outlined', + 'transaction-outlined', + 'translation-outlined', + 'trophy-outlined', + 'ungroup-outlined', + 'unlock-outlined', + 'upload-outlined', + 'usb-outlined', + 'user-add-outlined', + 'user-delete-outlined', + 'user-outlined', + 'user-switch-outlined', + 'usergroup-add-outlined', + 'usergroup-delete-outlined', + 'verified-outlined', + 'video-camera-add-outlined', + 'video-camera-outlined', + 'wallet-outlined', + 'whats-app-outlined', + 'wifi-outlined', + 'woman-outlined' + ] + }, + { + name: '实底风格', + key: 'filled', + item: [ + 'step-backward-filled', + 'step-forward-filled', + 'fast-backward-filled', + 'fast-forward-filled', + 'caret-up-filled', + 'caret-down-filled', + 'caret-left-filled', + 'caret-right-filled', + 'up-circle-filled', + 'down-circle-filled', + 'left-circle-filled', + 'right-circle-filled', + 'forward-filled', + 'backward-filled', + 'play-circle-filled', + 'up-square-filled', + 'down-square-filled', + 'left-square-filled', + 'right-square-filled', + 'question-circle-filled', + 'plus-circle-filled', + 'pause-circle-filled', + 'minus-circle-filled', + 'plus-square-filled', + 'minus-square-filled', + 'info-circle-filled', + 'exclamation-circle-filled', + 'close-circle-filled', + 'close-square-filled', + 'check-circle-filled', + 'check-square-filled', + 'clock-circle-filled', + 'warning-filled', + 'stop-filled', + 'edit-filled', + 'copy-filled', + 'delete-filled', + 'snippets-filled', + 'diff-filled', + 'highlight-filled', + 'pie-chart-filled', + 'box-plot-filled', + 'fund-filled', + 'sliders-filled', + 'android-filled', + 'apple-filled', + 'windows-filled', + 'chrome-filled', + 'github-filled', + 'aliwangwang-filled', + 'weibo-square-filled', + 'weibo-circle-filled', + 'taobao-circle-filled', + 'html5-filled', + 'wechat-filled', + 'youtube-filled', + 'alipay-circle-filled', + 'skype-filled', + 'gitlab-filled', + 'linkedin-filled', + 'facebook-filled', + 'code-sandbox-circle-filled', + 'codepen-circle-filled', + 'slack-square-filled', + 'behance-square-filled', + 'dribbble-square-filled', + 'instagram-filled', + 'yuque-filled', + 'yahoo-filled', + 'account-book-filled', + 'alert-filled', + 'alipay-square-filled', + 'amazon-circle-filled', + 'amazon-square-filled', + 'api-filled', + 'appstore-filled', + 'audio-filled', + 'bank-filled', + 'behance-circle-filled', + 'bell-filled', + 'book-filled', + 'bug-filled', + 'build-filled', + 'bulb-filled', + 'calculator-filled', + 'calendar-filled', + 'camera-filled', + 'car-filled', + 'carry-out-filled', + 'ci-circle-filled', + 'cloud-filled', + 'code-filled', + 'code-sandbox-square-filled', + 'codepen-square-filled', + 'compass-filled', + 'contacts-filled', + 'container-filled', + 'control-filled', + 'copyright-circle-filled', + 'credit-card-filled', + 'crown-filled', + 'customer-service-filled', + 'dashboard-filled', + 'database-filled', + 'dingtalk-circle-filled', + 'dingtalk-square-filled', + 'dislike-filled', + 'dollar-circle-filled', + 'dribbble-circle-filled', + 'dropbox-circle-filled', + 'dropbox-square-filled', + 'environment-filled', + 'euro-circle-filled', + 'experiment-filled', + 'eye-filled', + 'eye-invisible-filled', + 'file-add-filled', + 'file-excel-filled', + 'file-exclamation-filled', + 'file-filled', + 'file-image-filled', + 'file-markdown-filled', + 'file-pdf-filled', + 'file-ppt-filled', + 'file-text-filled', + 'file-unknown-filled', + 'file-word-filled', + 'file-zip-filled', + 'filter-filled', + 'fire-filled', + 'flag-filled', + 'folder-add-filled', + 'folder-filled', + 'folder-open-filled', + 'format-painter-filled', + 'frown-filled', + 'funnel-plot-filled', + 'gift-filled', + 'gold-filled', + 'golden-filled', + 'google-circle-filled', + 'google-plus-circle-filled', + 'google-plus-square-filled', + 'google-square-filled', + 'hdd-filled', + 'heart-filled', + 'home-filled', + 'hourglass-filled', + 'idcard-filled', + 'ie-circle-filled', + 'ie-square-filled', + 'insurance-filled', + 'interaction-filled', + 'layout-filled', + 'like-filled', + 'lock-filled', + 'mac-command-filled', + 'mail-filled', + 'medicine-box-filled', + 'medium-circle-filled', + 'medium-square-filled', + 'meh-filled', + 'message-filled', + 'mobile-filled', + 'money-collect-filled', + 'notification-filled', + 'pay-circle-filled', + 'phone-filled', + 'picture-filled', + 'play-square-filled', + 'pound-circle-filled', + 'printer-filled', + 'profile-filled', + 'project-filled', + 'property-safety-filled', + 'pushpin-filled', + 'qq-circle-filled', + 'qq-square-filled', + 'read-filled', + 'reconciliation-filled', + 'red-envelope-filled', + 'reddit-circle-filled', + 'reddit-square-filled', + 'rest-filled', + 'robot-filled', + 'rocket-filled', + 'safety-certificate-filled', + 'save-filled', + 'schedule-filled', + 'security-scan-filled', + 'setting-filled', + 'shop-filled', + 'shopping-filled', + 'signal-filled', + 'sketch-circle-filled', + 'sketch-square-filled', + 'skin-filled', + 'slack-circle-filled', + 'smile-filled', + 'sound-filled', + 'star-filled', + 'switcher-filled', + 'tablet-filled', + 'tag-filled', + 'tags-filled', + 'taobao-square-filled', + 'thunderbolt-filled', + 'tool-filled', + 'trademark-circle-filled', + 'trophy-filled', + 'twitter-circle-filled', + 'twitter-square-filled', + 'unlock-filled', + 'usb-filled', + 'video-camera-filled', + 'wallet-filled', + 'zhihu-circle-filled', + 'zhihu-square-filled' + ] + }, + { + name: '双色风格', + key: 'twotone', + item: [ + 'up-circle-two-tone', + 'down-circle-two-tone', + 'left-circle-two-tone', + 'right-circle-two-tone', + 'play-circle-two-tone', + 'up-square-two-tone', + 'down-square-two-tone', + 'left-square-two-tone', + 'right-square-two-tone', + 'question-circle-two-tone', + 'plus-circle-two-tone', + 'pause-circle-two-tone', + 'minus-circle-two-tone', + 'plus-square-two-tone', + 'minus-square-two-tone', + 'info-circle-two-tone', + 'exclamation-circle-two-tone', + 'close-circle-two-tone', + 'close-square-two-tone', + 'check-circle-two-tone', + 'check-square-two-tone', + 'clock-circle-two-tone', + 'warning-two-tone', + 'stop-two-tone', + 'edit-two-tone', + 'copy-two-tone', + 'delete-two-tone', + 'snippets-two-tone', + 'diff-two-tone', + 'highlight-two-tone', + 'pie-chart-two-tone', + 'box-plot-two-tone', + 'fund-two-tone', + 'sliders-two-tone', + 'account-book-two-tone', + 'alert-two-tone', + 'api-two-tone', + 'appstore-two-tone', + 'audio-two-tone', + 'bank-two-tone', + 'bell-two-tone', + 'book-two-tone', + 'bug-two-tone', + 'build-two-tone', + 'bulb-two-tone', + 'calculator-two-tone', + 'calendar-two-tone', + 'camera-two-tone', + 'car-two-tone', + 'carry-out-two-tone', + 'ci-circle-two-tone', + 'ci-two-tone', + 'cloud-two-tone', + 'code-two-tone', + 'compass-two-tone', + 'contacts-two-tone', + 'container-two-tone', + 'control-two-tone', + 'copyright-circle-two-tone', + 'copyright-two-tone', + 'credit-card-two-tone', + 'crown-two-tone', + 'customer-service-two-tone', + 'dashboard-two-tone', + 'database-two-tone', + 'dislike-two-tone', + 'dollar-circle-two-tone', + 'dollar-two-tone', + 'environment-two-tone', + 'euro-circle-two-tone', + 'account-book-two-tone', + 'alert-two-tone', + 'api-two-tone', + 'appstore-two-tone', + 'audio-two-tone', + 'bank-two-tone', + 'bell-two-tone', + 'book-two-tone', + 'bug-two-tone', + 'build-two-tone', + 'bulb-two-tone', + 'calculator-two-tone', + 'calendar-two-tone', + 'camera-two-tone', + 'car-two-tone', + 'carry-out-two-tone', + 'ci-circle-two-tone', + 'ci-two-tone', + 'cloud-two-tone', + 'code-two-tone', + 'compass-two-tone', + 'contacts-two-tone', + 'container-two-tone', + 'control-two-tone', + 'copyright-circle-two-tone', + 'copyright-two-tone', + 'credit-card-two-tone', + 'crown-two-tone', + 'customer-service-two-tone', + 'dashboard-two-tone', + 'database-two-tone', + 'dislike-two-tone', + 'dollar-circle-two-tone', + 'dollar-two-tone', + 'environment-two-tone', + 'euro-circle-two-tone', + 'euro-two-tone', + 'experiment-two-tone', + 'eye-two-tone', + 'eye-invisible-two-tone', + 'file-add-two-tone', + 'file-excel-two-tone', + 'file-exclamation-two-tone', + 'file-two-tone', + 'file-image-two-tone', + 'file-markdown-two-tone', + 'file-pdf-two-tone', + 'file-ppt-two-tone', + 'file-text-two-tone', + 'file-unknown-two-tone', + 'file-word-two-tone', + 'file-zip-two-tone', + 'filter-two-tone', + 'fire-two-tone', + 'flag-two-tone', + 'folder-add-two-tone', + 'folder-two-tone', + 'folder-open-two-tone', + 'frown-two-tone', + 'funnel-plot-two-tone', + 'gift-two-tone', + 'gold-two-tone', + 'hdd-two-tone', + 'heart-two-tone', + 'home-two-tone', + 'hourglass-two-tone', + 'idcard-two-tone', + 'insurance-two-tone', + 'interaction-two-tone', + 'layout-two-tone', + 'like-two-tone', + 'lock-two-tone', + 'mail-two-tone', + 'medicine-box-two-tone', + 'meh-two-tone', + 'message-two-tone', + 'mobile-two-tone', + 'money-collect-two-tone', + 'notification-two-tone', + 'phone-two-tone', + 'picture-two-tone', + 'play-square-two-tone', + 'pound-circle-two-tone', + 'printer-two-tone', + 'profile-two-tone', + 'project-two-tone', + 'property-safety-two-tone', + 'pushpin-two-tone', + 'reconciliation-two-tone', + 'red-envelope-two-tone', + 'rest-two-tone', + 'rocket-two-tone', + 'safety-certificate-two-tone', + 'save-two-tone', + 'schedule-two-tone', + 'security-scan-two-tone', + 'setting-two-tone', + 'shop-two-tone', + 'shopping-two-tone', + 'skin-two-tone', + 'smile-two-tone', + 'sound-two-tone', + 'star-two-tone', + 'switcher-two-tone', + 'tablet-two-tone', + 'tag-two-tone', + 'tags-two-tone', + 'thunderbolt-two-tone', + 'tool-two-tone', + 'trademark-circle-two-tone', + 'trophy-two-tone', + 'unlock-two-tone', + 'usb-two-tone', + 'video-camera-two-tone', + 'wallet-two-tone' + ] + } + ] + }, + { + name: '扩展', + key: 'extend', + iconItem: [ + { + name: '常用', + key: 'default', + item: uiwIcons + }, + { + name: '其他', + key: 'other', + item: ['GiteeIcon'] + } + ] + } + ] +} diff --git a/src/src/config/index.js b/src/src/config/index.js new file mode 100644 index 0000000..5e1c9d1 --- /dev/null +++ b/src/src/config/index.js @@ -0,0 +1,101 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const DEFAULT_CONFIG = { + // 首页地址 + DASHBOARD_URL: '/index', + + // 接口地址 + API_URL: import.meta.env.VITE_API_BASEURL, + + // 请求超时 + TIMEOUT: 60000, + + // TokenName // Authorization + TOKEN_NAME: 'token', + + // Token前缀,注意最后有个空格,如不需要需设置空字符串 // Bearer + TOKEN_PREFIX: '', + + // 追加其他头 + HEADERS: {}, + + // 请求是否开启缓存 + REQUEST_CACHE: false, + + // 布局 经典:classical,双排菜单:doublerow, 顶栏菜单:top + SNOWY_LAYOUT: 'classical', + + // 菜单是否折叠 + SNOWY_MENU_COLLAPSE: false, + + // 模块坞 + SNOWY_MODULE_UNFOLD_OPEN: true, + + // 是否开启多标签 + SNOWY_LAYOUT_TAGS_OPEN: true, + + // 是否开启展示面包屑 + SNOWY_BREADCRUMD_OPEN: false, + + // 顶栏是否应用主题色 + SNOWY_TOP_HEADER_THEME_COLOR_OPEN: false, + + // 顶栏主题色通栏 + SNOWY_TOP_HEADER_THEME_COLOR_SPREAD: false, + + // 侧边菜单是否排他展开 + SNOWY_SIDE_UNIQUE_OPEN: true, + + // 登录用户水印 + SNOWY_LOGIN_USER_WATERMARK_OPEN: false, + + // 页脚版权信息 + SNOWY_FOOTER_COPYRIGHT_OPEN: true, + + // 圆角风格 + SNOWY_ROUNDED_CORNER_STYLE_OPEN: true, + + // 语言 + LANG: 'zh-cn', + + // 主题颜色 + COLOR: '#1677FF', + + // 默认整体主题 + SNOWY_THEME: 'light', + + // 整体表单风格 + SNOWY_FORM_STYLE: 'drawer', + + // 系统基础配置,这些是数据库中保存起来的 + SYS_BASE_CONFIG: { + // 默认logo + SNOWY_SYS_LOGO: '/img/logo.png', + // 背景图 + SNOWY_SYS_BACK_IMAGE: '', + // 系统名称 + SNOWY_SYS_NAME: 'Snowy', + // 版本 + SNOWY_SYS_VERSION: '2.0', + // 版权 + SNOWY_SYS_COPYRIGHT: 'Snowy ©2022 Created by xiaonuo.vip', + // 版权跳转URL + SNOWY_SYS_COPYRIGHT_URL: 'https://www.xiaonuo.vip', + // 默认文件存储 + SNOWY_SYS_DEFAULT_FILE_ENGINE: 'LOCAL', + // 是否开启验证码 + SNOWY_SYS_DEFAULT_CAPTCHA_OPEN: 'false', + // 默认重置密码 + SNOWY_SYS_DEFAULT_PASSWORD: '123456' + } +} + +export default DEFAULT_CONFIG diff --git a/src/src/config/route.js b/src/src/config/route.js new file mode 100644 index 0000000..21e1d17 --- /dev/null +++ b/src/src/config/route.js @@ -0,0 +1,44 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +// 静态路由配置 +const routes = { + // 默认模块,仅限于后端未添加任何单页配置,用此路由 + module: [ + { + id: '01', + name: 'homeModule', + path: '/homeModule', + component: '', + meta: { + title: '默认', + type: 'module', + icon: 'bank-outlined' + }, + children: [] + } + ], + // 默认谁都有个人中心 + menu: [ + { + id: '001', + name: 'usercenter', + path: '/usercenter', + component: 'sys/user/userCenter', + meta: { + title: '个人中心', + type: 'menu', + hidden: true + } + } + ] +} + +export default routes diff --git a/src/src/config/settingConfig.js b/src/src/config/settingConfig.js new file mode 100644 index 0000000..9d071df --- /dev/null +++ b/src/src/config/settingConfig.js @@ -0,0 +1,64 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const colorList = [ + { + key: '薄暮', + color: '#F5222D' + }, + { + key: '火山', + color: '#FA541C' + }, + { + key: '胭脂粉', + color: '#EB2F96' + }, + { + key: '日暮', + color: '#FAAD14' + }, + { + key: '明青', + color: '#13C2C2' + }, + { + key: '极光绿', + color: '#52C41A' + }, + { + key: '深绿', + color: '#009688' + }, + { + key: '拂晓蓝(默认)', + color: '#1677FF' + }, + { + key: '极客蓝', + color: '#2F54EB' + }, + { + key: '酱紫', + color: '#722ED1' + }, + { + key: '主题黑', + color: '#001529' + } +] + +const updateColorWeak = (colorWeak) => { + // document.body.className = colorWeak ? 'colorWeak' : ''; + const app = document.body.querySelector('#app') + colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak') +} + +export { colorList, updateColorWeak } diff --git a/src/src/config/themeColor.js b/src/src/config/themeColor.js new file mode 100644 index 0000000..b9f5456 --- /dev/null +++ b/src/src/config/themeColor.js @@ -0,0 +1,10 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ diff --git a/src/src/hook/useFormHandler.js b/src/src/hook/useFormHandler.js new file mode 100644 index 0000000..4880040 --- /dev/null +++ b/src/src/hook/useFormHandler.js @@ -0,0 +1,160 @@ +import { useRoute, useRouter } from 'vue-router' +import { cloneDeep } from 'lodash-es' +import useTabs from '@/utils/useTabs' +import extendFieldApi from '@/api/base/extendfield/extendFieldApi' + +export default function useFormHandler(formItems, api, backRouter) { + const state = reactive({ + PAGE_TYPE: '' + }) + + const extendFormData = ref({}) + const inform = reactive({ + createUserName: '', + createTime: '', + updateUserName: '', + updateTime: '' + }) + + const formData = reactive({}) + const submitLoading = ref(false) + const formRefs = ref([]) + + const route = useRoute() + const router = useRouter() + + // 初始化表单数据 + const initializeFormData = () => { + formItems.forEach((item) => { + formData[item.name] = item.defaultValue || null + }) + } + + // 提交表单 + const onSubmit = async (params = {}) => { + submitLoading.value = true + try { + await validateForms() + + const formDataParam = params.isDeep ? cloneDeep(params) : formData + const safeId = validateAndCleanId(route.query.id || params.id) + if (safeId) { + formDataParam.id = safeId + } + + const res = await api.submitForm(formDataParam, safeId) + + if (params.isEnable) return res + + handleBack() + } catch (error) { + console.error('Validation or submission error:', error) + throw error + } finally { + submitLoading.value = false + } + } + + // 验证表单 + const validateForms = () => { + return Promise.all(formRefs.value.map((form) => form.validate())) + } + + // 校验并清洁ID + const validateAndCleanId = (id) => { + return id && /^[a-zA-Z0-9\-_]+$/.test(id) ? id : undefined + } + + // 返回并关闭当前标签页 + const handleBack = () => { + useTabs.close('', backRouter) + } + + // 根据页面类型加载表单数据 + const fetchData = async (pageType) => { + initializeFormData() + if (pageType && pageType !== 'ADD') { + try { + const res = await api.getDetail({ id: route.query.id }) + populateFormData(res) + if (res.extJson) { + extendFormData.value = JSON.parse(res.extJson) + } + return res + } catch (error) { + console.error('Failed to fetch data:', error) + } + } + } + + // 填充表单数据 + const populateFormData = (data) => { + Object.keys(formData).forEach((key) => { + if (data[key] !== undefined) formData[key] = data[key] + }) + + Object.keys(inform).forEach((key) => { + if (data[key] !== undefined) inform[key] = data[key] + }) + } + + // 获取扩展字段 + const getExtendField = async (model) => { + try { + const resExtendField = await extendFieldApi.extendFieldTypeList({ + enabledState: 'ENABLE', + model + }) + console.log(resExtendField, 'resExtendField') + const extendData = + resExtendField?.map((item) => { + if (item.enabledState === 'ENABLE') { + const options = item.showValues + ? JSON.parse(item.showValues).map((value) => ({ + value: value.name, + label: value.name + })) + : [] + return { + label: item.name, + name: item.fieldName, + type: item.showType, + span: 6, + attrs: { + placeholder: '请输入内容', + options + } + } + } + }) || [] + + extendData.forEach((item) => { + if (item && item.fieldName) extendFormData.value[item.fieldName] = null + }) + + console.log(extendData.length, 'extendData') + if (extendData) { + return extendData + } else { + return [] + } + } catch (error) { + console.error('Failed to get extend fields:', error) + return [] + } + } + + return { + formData, + submitLoading, + formRefs, + inform, + extendFormData, + populateFormData, + getExtendField, + onSubmit, + handleBack, + fetchData, + initializeFormData + } +} diff --git a/src/src/hook/useNavigation.js b/src/src/hook/useNavigation.js new file mode 100644 index 0000000..994d522 --- /dev/null +++ b/src/src/hook/useNavigation.js @@ -0,0 +1,25 @@ +import { useRouter } from 'vue-router' + +/** + * 封装路由跳转的 Hook + */ +export function useNavigation() { + // 创建 router 实例 + const router = useRouter() + + /** + * 跳转到指定的路由 + * @param {string|object} to - 目标路由的路径或路由对象 + * @param {object} params - 跳转所需的参数 + */ + const navigateTo = (to, params) => { + router.push({ + path: to, + query: params + }) + } + + return { + navigateTo + } +} diff --git a/src/src/hook/useTableManagement.js b/src/src/hook/useTableManagement.js new file mode 100644 index 0000000..8bdfafc --- /dev/null +++ b/src/src/hook/useTableManagement.js @@ -0,0 +1,103 @@ +import { cloneDeep } from 'lodash-es' +import { hasPerm } from '@/utils/permission' +import { useRouter } from 'vue-router' +import useTabs from '@/utils/useTabs' + +/** + * 列表页面表格信息 hook 封装(数据操作) + * @param apiModule 调用接口 + * @param tableColumns 表格头部信息 + * @param hasPermData 权限控制 + * @param isShowAction 是否在列首添加列 + * @returns {{searchFormRef: Ref>, toolConfig: {columnSetting: boolean, striped: boolean, refresh: boolean, height: boolean}, searchFormState: Ref>, tableRef: Ref>, selectedRowKeys: Ref>, columns: Ref>, options: {rowSelection: {onChange: options.rowSelection.onChange}, alert: {show: boolean, clear: options.alert.clear}}, reset: reset, loadData: (function(*): *), deleteBatchRecords: deleteBatchRecords, deleteRecord: deleteRecord}} + */ +export function useTableManagement(apiModule = {}, tableColumns, hasPermData, isShowAction = true) { + const searchFormState = ref({}) + const selectedRowKeys = ref([]) + + const router = useRouter() + + const tableRef = ref(null) + + // 动态列配置 + const columns = ref(tableColumns) + + // 选择配置 + const options = { + alert: { + show: true, + clear: () => { + selectedRowKeys.value = [] + } + }, + rowSelection: { + onChange: (selectedRowKey, selectedRows) => { + selectedRowKeys.value = selectedRowKey + } + }, + toolConfig: { refresh: true, height: true, columnSetting: true, striped: false } + } + + // 根据权限添加操作列 + if (hasPerm(hasPermData)) { + // 判断columns 是否有操作 + const columnsFilter = columns.value.filter((item) => item.dataIndex === 'action') + if (columnsFilter.length === 0 && isShowAction) + columns.value.unshift({ + title: '操作', + dataIndex: 'action', + align: 'center', + width: 150, + fixed: 'left' + }) + } + + // 加载数据 + const loadData = (parameter) => { + const searchFormParam = cloneDeep(searchFormState.value) + return apiModule.page(Object.assign(parameter, searchFormParam)).then((data) => { + return data + }) + } + + // 删除 + const deleteRecord = (record) => { + let params = [{ id: record.id }] + return apiModule.delete(params).then(() => { + if (tableRef.value) { + tableRef.value.refresh(true) + } + }) + } + + // 批量删除 + const deleteBatchRecords = (params) => { + apiModule.delete(params).then(() => { + if (tableRef.value) { + tableRef.value.clearRefreshSelected() + } + }) + } + + // 页面跳转 + const navigateTo = (to, params) => { + router.push({ + path: to, + query: params + }) + } + + + // 返回Hook的值 + return { + searchFormState, + tableRef, + selectedRowKeys, + columns, + options, + loadData, + deleteRecord, + deleteBatchRecords, + navigateTo + } +} diff --git a/src/src/layout/components/NavMenu.vue b/src/src/layout/components/NavMenu.vue new file mode 100644 index 0000000..acc532b --- /dev/null +++ b/src/src/layout/components/NavMenu.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/src/layout/components/breadcrumb.vue b/src/src/layout/components/breadcrumb.vue new file mode 100644 index 0000000..bd852ac --- /dev/null +++ b/src/src/layout/components/breadcrumb.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/src/layout/components/iframeView.vue b/src/src/layout/components/iframeView.vue new file mode 100644 index 0000000..c714a98 --- /dev/null +++ b/src/src/layout/components/iframeView.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/src/layout/components/message.vue b/src/src/layout/components/message.vue new file mode 100644 index 0000000..5166f30 --- /dev/null +++ b/src/src/layout/components/message.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/src/layout/components/moduleMenu.vue b/src/src/layout/components/moduleMenu.vue new file mode 100644 index 0000000..fe47994 --- /dev/null +++ b/src/src/layout/components/moduleMenu.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/src/layout/components/panel-search/index.vue b/src/src/layout/components/panel-search/index.vue new file mode 100644 index 0000000..7ac2320 --- /dev/null +++ b/src/src/layout/components/panel-search/index.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/src/src/layout/components/panel-search/item.vue b/src/src/layout/components/panel-search/item.vue new file mode 100644 index 0000000..5201dee --- /dev/null +++ b/src/src/layout/components/panel-search/item.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/src/layout/components/setting.vue b/src/src/layout/components/setting.vue new file mode 100644 index 0000000..ea70ed8 --- /dev/null +++ b/src/src/layout/components/setting.vue @@ -0,0 +1,489 @@ + + + + diff --git a/src/src/layout/components/sideM.vue b/src/src/layout/components/sideM.vue new file mode 100644 index 0000000..ba66128 --- /dev/null +++ b/src/src/layout/components/sideM.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/src/layout/components/tags.vue b/src/src/layout/components/tags.vue new file mode 100644 index 0000000..162f791 --- /dev/null +++ b/src/src/layout/components/tags.vue @@ -0,0 +1,473 @@ + + + + diff --git a/src/src/layout/components/topbar.vue b/src/src/layout/components/topbar.vue new file mode 100644 index 0000000..4e8e61f --- /dev/null +++ b/src/src/layout/components/topbar.vue @@ -0,0 +1,36 @@ + + diff --git a/src/src/layout/components/userbar.vue b/src/src/layout/components/userbar.vue new file mode 100644 index 0000000..9a0c0ab --- /dev/null +++ b/src/src/layout/components/userbar.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/src/layout/enum/layoutEnum.js b/src/src/layout/enum/layoutEnum.js new file mode 100644 index 0000000..60b916e --- /dev/null +++ b/src/src/layout/enum/layoutEnum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const layoutEnum = { + CLASSICAL: 'classical', + DOUBLEROW: 'doublerow', + TOP: 'top' +} diff --git a/src/src/layout/enum/themeEnum.js b/src/src/layout/enum/themeEnum.js new file mode 100644 index 0000000..d0503b4 --- /dev/null +++ b/src/src/layout/enum/themeEnum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const themeEnum = { + LIGHT: 'light', + DARK: 'dark', + REAL_DARK: 'realDark' +} diff --git a/src/src/layout/index.vue b/src/src/layout/index.vue new file mode 100644 index 0000000..d55a81e --- /dev/null +++ b/src/src/layout/index.vue @@ -0,0 +1,650 @@ + + + + + diff --git a/src/src/layout/menu/classicalMenu.vue b/src/src/layout/menu/classicalMenu.vue new file mode 100644 index 0000000..882da50 --- /dev/null +++ b/src/src/layout/menu/classicalMenu.vue @@ -0,0 +1,154 @@ + + + + diff --git a/src/src/layout/menu/doubleRowMenu.vue b/src/src/layout/menu/doubleRowMenu.vue new file mode 100644 index 0000000..a4e8038 --- /dev/null +++ b/src/src/layout/menu/doubleRowMenu.vue @@ -0,0 +1,185 @@ + + + + diff --git a/src/src/layout/menu/topMenu.vue b/src/src/layout/menu/topMenu.vue new file mode 100644 index 0000000..90402c2 --- /dev/null +++ b/src/src/layout/menu/topMenu.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/src/layout/other/403.vue b/src/src/layout/other/403.vue new file mode 100644 index 0000000..32fa3f5 --- /dev/null +++ b/src/src/layout/other/403.vue @@ -0,0 +1,3 @@ + diff --git a/src/src/layout/other/404.vue b/src/src/layout/other/404.vue new file mode 100644 index 0000000..27b3fe8 --- /dev/null +++ b/src/src/layout/other/404.vue @@ -0,0 +1,20 @@ + + diff --git a/src/src/layout/other/empty.vue b/src/src/layout/other/empty.vue new file mode 100644 index 0000000..497d470 --- /dev/null +++ b/src/src/layout/other/empty.vue @@ -0,0 +1,3 @@ + diff --git a/src/src/locales/index.js b/src/src/locales/index.js new file mode 100644 index 0000000..08e82b9 --- /dev/null +++ b/src/src/locales/index.js @@ -0,0 +1,38 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { createI18n } from 'vue-i18n' +import zhCN from 'ant-design-vue/es/locale/zh_CN' +import enGB from 'ant-design-vue/es/locale/en_GB' +import zh_cn from './lang/zh-cn.js' +import en from './lang/en.js' +import tool from '@/utils/tool' +import sysConfig from '@/config/index' + +export const messages = { + 'zh-cn': { + lang: zhCN, + ...zh_cn + }, + en: { + lang: enGB, + ...en + } +} + +const i18n = createI18n({ + legacy: false, + locale: tool.data.get('APP_LANG') || sysConfig.LANG, + fallbackLocale: 'zh-cn', + globalInjection: true, + messages +}) + +export default i18n diff --git a/src/src/locales/lang/en.js b/src/src/locales/lang/en.js new file mode 100644 index 0000000..75ac196 --- /dev/null +++ b/src/src/locales/lang/en.js @@ -0,0 +1,72 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export default { + common: { + searchButton: 'search', + resetButton: 'reset', + addButton: 'add', + editButton: 'edit', + removeButton: 'delete', + batchRemoveButton: 'batch Remove', + detailButton: 'detail', + searchKey: 'Search Key', + imports: 'Import', + more: 'More', + export: 'Export' + }, + model: { + user: 'user', + org: 'org', + pos: 'pos', + role: 'role', + bizUser: 'bizUser' + }, + login: { + signInTitle: 'Sign in', + forgetPassword: 'Forget password', + signIn: 'Sign in', + signInOther: 'Sign in with', + accountPlaceholder: 'Please input a user account', + accountError: 'Please input a user account', + PWPlaceholder: 'Please input a password', + PWError: 'Please input a password', + validLaceholder: 'Please input a valid', + validError: 'Please input a valid', + accountPassword: 'Account Password', + phoneSms: 'Phone SMS', + phonePlaceholder: 'Please input a phone', + smsCodePlaceholder: 'Please input a SMS code', + getSmsCode: 'SMS code', + machineValidation: 'Machine Validation', + sendingSmsMessage: 'Sending SMS Message', + newPwdPlaceholder: 'Please input a new password', + backLogin: 'Back Login', + restPassword: 'Rest Password', + emailPlaceholder: 'Please input a email', + emailCodePlaceholder: 'Please input a Email code', + restPhoneType: 'For phone rest', + restEmailType: 'For email rest' + }, + user: { + userStatus: 'User Status', + resetPassword: 'Reset Password', + role: 'Role', + batchExportButton: 'Batch Export', + grantRole: 'Grant Role', + grantResource: 'Grant Resource', + grantPermission: 'Grant Permission', + exportUserInfo: 'Export UserInfo', + placeholderNameAndSearchKey: 'Please enter your name or keyword', + placeholderUserStatus: 'Please select status', + popconfirmDeleteUser: 'Are you sure you want to delete it?', + popconfirmResatUserPwd: 'Are you sure you want to reset?' + } +} diff --git a/src/src/locales/lang/zh-cn.js b/src/src/locales/lang/zh-cn.js new file mode 100644 index 0000000..b25b2d0 --- /dev/null +++ b/src/src/locales/lang/zh-cn.js @@ -0,0 +1,74 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import 'dayjs/locale/zh-cn' + +export default { + common: { + searchButton: '查询', + resetButton: '重置', + addButton: '增加', + editButton: '编辑', + removeButton: '删除', + batchRemoveButton: '批量删除', + detailButton: '详情', + searchKey: '关键词', + imports: '导入', + more: '更多', + export: '导出' + }, + model: { + user: '用户', + org: '机构', + pos: '职位', + role: '角色', + bizUser: '人员' + }, + login: { + signInTitle: '用户登录', + forgetPassword: '忘记密码', + signIn: '登录', + signInOther: '其他登录方式', + accountPlaceholder: '请输入账号', + accountError: '请输入账号', + PWPlaceholder: '请输入密码', + PWError: '请输入密码', + validLaceholder: '请输入验证码', + validError: '请输入验证码', + accountPassword: '账号密码', + phoneSms: '手机号登录', + phonePlaceholder: '请输入手机号', + smsCodePlaceholder: '请输入短信验证码', + getSmsCode: '获取验证码', + machineValidation: '机器验证', + sendingSmsMessage: '短信发送中', + newPwdPlaceholder: '请输入新密码', + backLogin: '返回登录', + restPassword: '重置密码', + emailPlaceholder: '请输入邮箱号', + emailCodePlaceholder: '请输入邮件验证码', + restPhoneType: '手机号找回', + restEmailType: '邮箱找回' + }, + user: { + userStatus: '用户状态', + resetPassword: '重置密码', + role: '角色', + batchExportButton: '批量导出', + grantRole: '授权角色', + grantResource: '授权资源', + grantPermission: '授权权限', + exportUserInfo: '导出信息', + placeholderNameAndSearchKey: '请输入姓名或关键词', + placeholderUserStatus: '请选择状态', + popconfirmDeleteUser: '确定要删除吗?', + popconfirmResatUserPwd: '确定要重置吗?' + } +} diff --git a/src/src/main.js b/src/src/main.js new file mode 100644 index 0000000..e3b5ecb --- /dev/null +++ b/src/src/main.js @@ -0,0 +1,20 @@ +import { createApp } from 'vue' +import Antd from 'ant-design-vue' +import { createPinia } from 'pinia' + +import './style/index.less' +import snowy from './snowy' +import i18n from './locales' +import router from './router' +import App from './App.vue' +import './tailwind.css' + +const app = createApp(App) +app.use(createPinia()) +app.use(router) +app.use(Antd) +app.use(i18n) +app.use(snowy) + +// 挂载app +app.mount('#app') diff --git a/src/src/router/index.js b/src/src/router/index.js new file mode 100644 index 0000000..b11228f --- /dev/null +++ b/src/src/router/index.js @@ -0,0 +1,172 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router' +import { notification } from 'ant-design-vue' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import systemRouter from './systemRouter' +import { afterEach, beforeEach } from './scrollBehavior' +import whiteListRouters from './whiteList' +import userRoutes from '@/config/route' +import tool from '@/utils/tool' +import { cloneDeep } from 'lodash-es' +import { globalStore } from '@/store' +import { NextLoading } from '@/utils/loading' +import { useMenuStore } from '@/store/menu' + +// 进度条配置 +NProgress.configure({ showSpinner: false, speed: 500 }) + +// 系统特殊路由 +const routes_404 = [ + { + path: '/:pathMatch(.*)*', + hidden: true, + component: () => import('@/layout/other/404.vue') + } +] +// 系统路由 +const routes = [...systemRouter, ...whiteListRouters, ...routes_404] + +const router = createRouter({ + history: createWebHashHistory(), + routes +}) + +// 设置标题 +// document.title = sysBaseConfig.SNOWY_SYS_NAME + +// 判断是否已加载过动态/静态路由 +const isGetRouter = ref(false) + +// 白名单校验 +const exportWhiteListFromRouter = (router) => { + const res = [] + for (const item of router) res.push(item.path) + return res +} +const whiteList = exportWhiteListFromRouter(whiteListRouters) + +router.beforeEach(async (to, from, next) => { + NProgress.start() + const store = globalStore() + + const sysBaseConfig = tool.data.get('SNOWY_SYS_BASE_CONFIG') || store.sysBaseConfig + // 动态标题 + document.title = to.meta.title + ? `${to.meta.title} - ${sysBaseConfig.SNOWY_SYS_NAME}` + : `${sysBaseConfig.SNOWY_SYS_NAME}` + + // 过滤白名单 + if (whiteList.includes(to.path)) { + next() + // NProgress.done() + return false + } + + if (!isGetRouter.value) { + // 初始化菜单加载,代码位置不能变动 + const menuStore = useMenuStore() + menuStore.refreshMenu() + isGetRouter.value = true + next({ ...to, replace: true }) + return false + } + + const token = tool.data.get('TOKEN') + + // 页面刷新,加载loading + if (from.path === '/' && to.path !== '/login' && !window.nextLoading && token) { + NextLoading.start() + } + if (to.path === '/login') { + // 当用户输入了login路由,将其跳转首页即可 + if (token) { + next({ + path: '/' + }) + return false + } + // 删除路由(替换当前layout路由) + router.addRoute(routes[0]) + next() + return false + } else { + if (token) { + // 有token的时候才保存登录之前要访问的页面 + tool.data.set('LAST_VIEWS_PATH', to.fullPath) + } + } + if (!token) { + next({ + path: '/login' + }) + return false + } + // 整页路由处理 + if (to.meta.fullpage) { + to.matched = [to.matched[to.matched.length - 1]] + } + beforeEach(to, from) + next() +}) + +router.afterEach((to, from) => { + afterEach(to, from) + NProgress.done() + window.nextLoading && NextLoading.done() +}) + +router.onError((error) => { + NProgress.done() + window.nextLoading && NextLoading.done() + notification.error({ + message: '路由错误', + description: error.message + }) +}) + +// 入侵追加自定义方法、对象 +router.getMenu = () => { + const menuStore = useMenuStore() + let apiMenu = menuStore.menuData.value || tool.data.get('MENU') || [] + // 增加固定路由 + if (apiMenu.length === 0) { + // 创建默认模块,显示默认菜单 + apiMenu[0] = cloneDeep(userRoutes.module[0]) + } + const childrenApiMenu = apiMenu[0].children + apiMenu[0].children = [...(childrenApiMenu ? childrenApiMenu : []), ...userRoutes.menu] + return filterUrl(apiMenu) +} + +const filterUrl = (map) => { + const newMap = [] + const traverse = (maps) => { + maps && + maps.forEach((item) => { + item.meta = item.meta ? item.meta : {} + // 处理iframe + if (item.meta.type === 'iframe') { + item.path = `/${item.name}` + } + // 递归循环 + if (item.children && item.children.length > 0) { + item.children = filterUrl(item.children) + } + newMap.push(item) + }) + } + traverse(map) + return newMap +} + +export default router diff --git a/src/src/router/scrollBehavior.js b/src/src/router/scrollBehavior.js new file mode 100644 index 0000000..040f60b --- /dev/null +++ b/src/src/router/scrollBehavior.js @@ -0,0 +1,38 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { nextTick } from 'vue' +import { viewTagsStore } from '@/store' + +export function beforeEach(to, from) { + const adminMain = document.querySelector('#admin-ui-main') + if (!adminMain) { + return false + } + const store = viewTagsStore() + store.updateViewTags({ + fullPath: from.fullPath, + scrollTop: adminMain.scrollTop + }) +} + +export function afterEach(to) { + const adminMain = document.querySelector('#admin-ui-main') + if (!adminMain) { + return false + } + nextTick(() => { + const store = viewTagsStore() + const beforeRoute = store.viewTags.filter((v) => v.fullPath == to.fullPath)[0] + if (beforeRoute) { + adminMain.scrollTop = beforeRoute.scrollTop || 0 + } + }) +} diff --git a/src/src/router/systemRouter.js b/src/src/router/systemRouter.js new file mode 100644 index 0000000..e3d19ea --- /dev/null +++ b/src/src/router/systemRouter.js @@ -0,0 +1,52 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import config from '@/config' +import tool from '@/utils/tool' +import routerUtil from '@/utils/routerUtil' + +import Layout from '@/layout/index.vue' +import Login from '@/views/auth/login/login.vue' +import Findpwd from '@/views/auth/findPwd/index.vue' +import Callback from '@/views/auth/login/callback.vue' + +// 系统路由 +const routes = [ + { + name: 'layout', + path: '/', + component: Layout, + redirect: tool.data.get('MENU') ? routerUtil.getIndexMenu(tool.data.get('MENU')).path : config.DASHBOARD_URL, + children: [] + }, + { + path: '/login', + component: Login, + meta: { + title: '登录' + } + }, + { + path: '/findpwd', + component: Findpwd, + meta: { + title: '找回密码' + } + }, + { + path: '/callback', + component: Callback, + meta: { + title: '三方登录' + } + } +] + +export default routes diff --git a/src/src/router/whiteList.js b/src/src/router/whiteList.js new file mode 100644 index 0000000..7da14bf --- /dev/null +++ b/src/src/router/whiteList.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const constRouters = [ + { + path: '/findpwd' + }, + { + path: '/callback' + }, + { + path: '/other', + name: 'other', + component: () => import('@/views/other/index.vue'), + meta: { + title: '其他' + } + } +] +/** + * 路由白名单(数组形式) + * + * 如果组件像登录一样,那就简单的写一个path,即可实现放开, + * 如果组件不在这边的,需要手动添加组件,就像other一样, + * 因为没登陆你没法拿到后端给你返回的那一坨,当然就找不到component + * + * @author yubaoshan + */ +export default constRouters diff --git a/src/src/snowy.js b/src/src/snowy.js new file mode 100644 index 0000000..d3feb5b --- /dev/null +++ b/src/src/snowy.js @@ -0,0 +1,40 @@ +import * as antdvIcons from '@ant-design/icons-vue' +import config from './config' +import tool from './utils/tool' +import { hasPerm } from './utils/permission/index' +import errorHandler from './utils/errorHandler' +import customIcons from './assets/icons/index.js' +import 'highlight.js/styles/atom-one-dark.css' +import hljsCommon from 'highlight.js/lib/common' +import hljsVuePlugin from '@highlightjs/vue-plugin' +import STable from './components/Table/index.vue' +import Ellipsis from './components/Ellipsis/index.vue' +import DragModal from './components/DragModal/index.vue' + +export default { + install(app) { + // 挂载全局对象 + app.config.globalProperties.$CONFIG = config + app.config.globalProperties.$TOOL = tool + app.config.globalProperties.hasPerm = hasPerm + + // 注册常用组件 + app.component('STable', STable) + app.component('Ellipsis', Ellipsis) + app.component('DragModal', DragModal) + + // 统一注册antdv图标 + for (const icon in antdvIcons) { + app.component(icon, antdvIcons[icon]) + } + // 统一注册自定义全局图标 + app.use(customIcons) + // 注册代码高亮组件 (博客:https://blog.csdn.net/weixin_41897680/article/details/124925222) + // 注意:解决Vue使用highlight.js build打包发布后样式消失问题,原因是webpack在打包的时候没有把未被使用的代码打包进去,因此,在此处引用一下,看似无意义实则有用 + hljsCommon.highlightAuto('

Highlight.js has been registered successfully!

').value + app.use(hljsVuePlugin) + + // 全局代码错误捕捉 + app.config.errorHandler = errorHandler + } +} diff --git a/src/src/store/global.js b/src/src/store/global.js new file mode 100644 index 0000000..7337fcd --- /dev/null +++ b/src/src/store/global.js @@ -0,0 +1,174 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import { changeColor } from '@/utils/themeUtil' +import config from '@/config' +import { message } from 'ant-design-vue' +import tool from '@/utils/tool' + +const toolDataGet = (key) => { + return tool.data.get(key) +} + +// 获取缓存中的,如果取不到那就用配置的 +const getCacheConfig = (value) => { + const data = toolDataGet(value) + if (data === null) { + return config[value] + } + return data +} + +// deprecated 请使用 useGlobalStore +export const globalStore = defineStore('global', () => { + // 移动端布局 + const isMobile = ref(false) + // 布局 + const layout = ref(getCacheConfig('SNOWY_LAYOUT')) + // 菜单是否折叠 toggle + const menuIsCollapse = ref(getCacheConfig('SNOWY_MENU_COLLAPSE')) + // 侧边菜单是否排他展开 + const sideUniqueOpen = ref(getCacheConfig('SNOWY_SIDE_UNIQUE_OPEN')) + // 多标签栏 + const layoutTagsOpen = ref(getCacheConfig('SNOWY_LAYOUT_TAGS_OPEN')) + // 是否展示面包屑 + const breadcrumbOpen = ref(getCacheConfig('SNOWY_BREADCRUMD_OPEN')) + // 是否开启固定宽度(顶栏菜单) + const fixedWidth = ref(getCacheConfig('SNOWY_FIXEDWIDTH_OPEN')) + // 顶栏是否应用主题色 + const topHeaderThemeColorOpen = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_OPEN')) + // 顶栏主题色通栏 + const topHeaderThemeColorSpread = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_SPREAD')) + // 登录用户水印 + const loginUserWatermarkOpen = ref(getCacheConfig('SNOWY_LOGIN_USER_WATERMARK_OPEN')) + // 页脚版权信息 + const footerCopyrightOpen = ref(getCacheConfig('SNOWY_FOOTER_COPYRIGHT_OPEN')) + // 模块坞 + const moduleUnfoldOpen = ref(getCacheConfig('SNOWY_MODULE_UNFOLD_OPEN')) + // 主题 + const theme = ref(getCacheConfig('SNOWY_THEME')) + // 主题颜色 + const themeColor = ref(toolDataGet('SNOWY_THEME_COLOR') || config.COLOR) + // 圆角分格 + const roundedCornerStyleOpen = ref(getCacheConfig('SNOWY_ROUNDED_CORNER_STYLE_OPEN')) + // 整体表单风格 + const formStyle = ref(getCacheConfig('SNOWY_FORM_STYLE')) + // 用户信息 + const userInfo = ref(toolDataGet('USER_INFO') || {}) + // 系统配置 + const sysBaseConfig = ref(toolDataGet('SNOWY_SYS_BASE_CONFIG') || config.SYS_BASE_CONFIG) + // 默认应用 + const module = ref(getCacheConfig('SNOWY_MENU_MODULE_ID')) + + // 定义action + const setIsMobile = (key) => { + isMobile.value = key + } + const setLayout = (key) => { + layout.value = key + } + const setTheme = (key) => { + theme.value = key + changeColor(themeColor.value, key).then() + } + const setThemeColor = (key) => { + themeColor.value = key + changeColor(key, theme.value).then() + } + const initTheme = () => { + changeColor(themeColor.value, theme.value).then() + } + const toggleConfig = (key) => { + switch (key) { + case 'menuIsCollapse': + menuIsCollapse.value = !menuIsCollapse.value + break + case 'topHeaderThemeColorSpread': + topHeaderThemeColorSpread.value = !topHeaderThemeColorSpread.value + break + case 'sideUniqueOpen': + sideUniqueOpen.value = !sideUniqueOpen.value + break + case 'layoutTagsOpen': + layoutTagsOpen.value = !layoutTagsOpen.value + break + case 'breadcrumbOpen': + breadcrumbOpen.value = !breadcrumbOpen.value + break + case 'fixedWidth': + fixedWidth.value = !fixedWidth.value + break + case 'topHeaderThemeColorOpen': + topHeaderThemeColorOpen.value = !topHeaderThemeColorOpen.value + topHeaderThemeColorSpread.value = topHeaderThemeColorOpen.value + ? topHeaderThemeColorSpread.value + : topHeaderThemeColorOpen.value + break + case 'loginUserWatermarkOpen': + loginUserWatermarkOpen.value = !loginUserWatermarkOpen.value + break + case 'footerCopyrightOpen': + footerCopyrightOpen.value = !footerCopyrightOpen.value + break + case 'roundedCornerStyleOpen': + roundedCornerStyleOpen.value = !roundedCornerStyleOpen.value + break + case 'moduleUnfoldOpen': + moduleUnfoldOpen.value = !moduleUnfoldOpen.value + break + } + } + const setFormStyle = (key) => { + formStyle.value = key + } + const setUserInfo = (key) => { + userInfo.value = key + } + const setSysBaseConfig = (key) => { + sysBaseConfig.value = key + } + const setModule = (key) => { + module.value = key + } + return { + isMobile, + layout, + menuIsCollapse, + sideUniqueOpen, + layoutTagsOpen, + breadcrumbOpen, + fixedWidth, + topHeaderThemeColorOpen, + topHeaderThemeColorSpread, + loginUserWatermarkOpen, + footerCopyrightOpen, + moduleUnfoldOpen, + theme, + themeColor, + roundedCornerStyleOpen, + formStyle, + userInfo, + sysBaseConfig, + module, + setIsMobile, + setLayout, + setTheme, + setThemeColor, + initTheme, + toggleConfig, + setFormStyle, + setUserInfo, + setSysBaseConfig, + setModule + } +}) + +export const useGlobalStore = globalStore diff --git a/src/src/store/iframe.js b/src/src/store/iframe.js new file mode 100644 index 0000000..a3a8e9c --- /dev/null +++ b/src/src/store/iframe.js @@ -0,0 +1,58 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const iframeStore = defineStore('iframe', () => { + // 定义state + const iframeList = ref([]) + const setIframeList = (route) => { + iframeList.value = [] + iframeList.value.push(route) + } + + // 定义action + const pushIframeList = (route) => { + const target = iframeList.value.find((item) => item.path === route.path) + if (!target) { + iframeList.value.push(route) + } + } + const removeIframeList = (route) => { + iframeList.value.forEach((item, index) => { + if (item.path === route.path) { + iframeList.value.splice(index, 1) + } + }) + } + const refreshIframe = (route) => { + iframeList.value.forEach((item) => { + if (item.path === route.path) { + const url = route.meta.url + item.meta.url = '' + setTimeout(() => { + item.meta.url = url + }, 200) + } + }) + } + const clearIframeList = () => { + iframeList.value = [] + } + + return { + iframeList, + setIframeList, + pushIframeList, + removeIframeList, + refreshIframe, + clearIframeList + } +}) diff --git a/src/src/store/index.js b/src/src/store/index.js new file mode 100644 index 0000000..c4004d2 --- /dev/null +++ b/src/src/store/index.js @@ -0,0 +1,5 @@ +export * from './global' +export * from './search' +export * from './iframe' +export * from './keepAlive' +export * from './viewTags' diff --git a/src/src/store/keepAlive.js b/src/src/store/keepAlive.js new file mode 100644 index 0000000..d40546b --- /dev/null +++ b/src/src/store/keepAlive.js @@ -0,0 +1,55 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const keepAliveStore = defineStore('keepAlive', () => { + // 定义state + const keepLiveRoute = ref([]) + const routeKey = ref(null) + const routeShow = ref(true) + + // 定义action + const pushKeepLive = (component) => { + if (!keepLiveRoute.value.includes(component)) { + keepLiveRoute.value.push(component) + } + } + const removeKeepLive = (component) => { + const index = keepLiveRoute.value.indexOf(component) + if (index !== -1) { + keepLiveRoute.value.splice(index, 1) + } + } + const clearKeepLive = () => { + keepLiveRoute.value = [] + } + const setRouteKey = (key) => { + routeKey.value = key + } + const setRouteShow = (key) => { + routeShow.value = key + } + const setRouteKeyAction = (key) => { + setRouteKey(key) + } + + return { + keepLiveRoute, + routeKey, + routeShow, + pushKeepLive, + removeKeepLive, + clearKeepLive, + setRouteKey, + setRouteShow, + setRouteKeyAction + } +}) diff --git a/src/src/store/menu.js b/src/src/store/menu.js new file mode 100644 index 0000000..62aca7b --- /dev/null +++ b/src/src/store/menu.js @@ -0,0 +1,142 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import tool from '@/utils/tool' +import { cloneDeep } from 'lodash-es' +import userRoutes from '@/config/route' +import { searchStore } from '@/store/search' +import router from '@/router' +import userCenterApi from '@/api/sys/userCenterApi' +import whiteList from '@/router/whiteList' +import routesData from '@/router/systemRouter' + +const modules = import.meta.glob('/src/views/**/**.vue') +export const useMenuStore = defineStore('menuStore', () => { + const menuData = ref([]) + const refreshFlag = ref(false) + // 改变刷新标志 + const changeRefreshFlag = (flag) => { + refreshFlag.value = flag + } + // 加载菜单 + const loadMenu = () => { + // 获取用户菜单 + const apiMenu = tool.data.get('MENU') || [] + if (apiMenu.length === 0) { + // 创建默认模块,显示默认菜单 + apiMenu[0] = cloneDeep(userRoutes.module[0]) + } + const childrenApiMenu = apiMenu[0].children + apiMenu[0].children = [...(childrenApiMenu ? childrenApiMenu : []), ...userRoutes.menu] + let menuRouter = filterAsyncRouter(apiMenu) + menuRouter = flatAsyncRoutes(menuRouter) + menuData.value = menuRouter + // 初始化搜索 + const search_store = searchStore() + search_store.init(menuRouter) + } + // 过滤异步路由 + const filterAsyncRouter = (routerMap) => { + const accessedRouters = [] + routerMap.forEach((item) => { + item.meta = item.meta ? item.meta : {} + // 处理外部链接特殊路由 + if (item.meta.type === 'iframe') { + item.meta.url = item.path + item.path = `/${item.name}` + } + // MAP转路由对象 + const route = { + path: item.path, + name: item.name, + meta: item.meta, + redirect: item.redirect, + children: item.children ? filterAsyncRouter(item.children) : null, + component: loadComponent(item.component) + } + accessedRouters.push(route) + }) + return accessedRouters + } + // 将异步路由扁平化 + const flatAsyncRoutes = (routes, breadcrumb = []) => { + const res = [] + routes.forEach((route) => { + const tmp = { ...route } + if (tmp.children) { + const childrenBreadcrumb = [...breadcrumb] + childrenBreadcrumb.push(route) + const tmpRoute = { ...route } + tmpRoute.meta.breadcrumb = childrenBreadcrumb + delete tmpRoute.children + res.push(tmpRoute) + const childrenRoutes = flatAsyncRoutes(tmp.children, childrenBreadcrumb) + childrenRoutes.map((item) => { + res.push(item) + }) + } else { + const tmpBreadcrumb = [...breadcrumb] + tmpBreadcrumb.push(tmp) + tmp.meta.breadcrumb = tmpBreadcrumb + res.push(tmp) + } + }) + return res + } + // 动态加载组件 + const loadComponent = (component) => { + if (component) { + if (component.includes('/')) { + return modules[`/src/views/${component}.vue`] + } + return modules[`/src/views/${component}/index.vue`] + } else { + return () => import(/* @vite-ignore */ `/src/layout/other/empty.vue`) + } + } + // 从路由中移除菜单 + const removeFromRouter = () => { + const routes = router.getRoutes() + // 遍历所有路由 + routes.forEach((route) => { + // 过滤白名单 + if ( + whiteList.filter((e) => e.path === route.path).length > 0 || + routesData.filter((e) => e.path === route.path).length > 0 + ) { + return + } + if (route.name && route.name !== 'layout') { + router.removeRoute(route.name) + } + }) + } + // 获取用户菜单 + const fetchMenu = async () => { + const menu = await userCenterApi.userLoginMenu() + tool.data.set('MENU', menu) + refreshMenu() + } + // 刷新菜单 + const refreshMenu = () => { + loadMenu() + removeFromRouter() + addToRouter() + changeRefreshFlag(true) + } + // 将菜单添加到路由 + const addToRouter = () => { + menuData.value.forEach((item) => { + router.addRoute('layout', item) + }) + } + return { menuData, loadMenu, addToRouter, refreshMenu, changeRefreshFlag, refreshFlag, fetchMenu } +}) diff --git a/src/src/store/search.js b/src/src/store/search.js new file mode 100644 index 0000000..e1ca521 --- /dev/null +++ b/src/src/store/search.js @@ -0,0 +1,63 @@ +import '@/utils/objects' +import { defineStore } from 'pinia' + +export const searchStore = defineStore('search', () => { + // 定义state + const pool = ref([]) + const hotkey = ref({ + open: 's', + close: 'esc' + }) + const active = ref(false) + + // 定义action + const toggleActive = () => { + active.value = !active.value + } + const setActive = (val) => { + active.value = val + } + const init = (menu) => { + const poolList = [] + const getFullName = function (meta) { + if (meta.breadcrumb) { + let list = [] + meta.breadcrumb.forEach((item) => { + list.push(item.meta.title) + }) + return list.join(' / ') + } + return meta.title + } + const push = function (menu) { + menu.forEach((m) => { + if ('menu' === m.meta.type) { + if (m.children) { + push(m.children) + } else if (m.children === null) { + poolList.push({ + icon: m.meta.icon, + path: m.path, + fullPath: m.path, + name: m.meta.title, + fullName: getFullName(m.meta), + namePinyin: m.meta.title.toPinyin(), + namePinyinFirst: m.meta.title.toPinyin(true) + }) + } + } + }) + } + push(menu) + pool.value = poolList + } + + return { + pool, + hotkey, + active, + toggleActive, + setActive, + init + } +}) diff --git a/src/src/store/sysBaseConfig.js b/src/src/store/sysBaseConfig.js new file mode 100644 index 0000000..33fb235 --- /dev/null +++ b/src/src/store/sysBaseConfig.js @@ -0,0 +1,40 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import configApi from '@/api/dev/configApi' +import { message } from 'ant-design-vue' + +const formData = ref({ + SNOWY_SYS_LOGO: '', + SNOWY_SYS_BACK_IMAGE: '', + SNOWY_SYS_NAME: '', + SNOWY_SYS_VERSION: '', + SNOWY_SYS_COPYRIGHT: '', + SNOWY_SYS_COPYRIGHT_URL: '', + SNOWY_SYS_DEFAULT_FILE_ENGINE: 'LOCAL', + SNOWY_SYS_DEFAULT_CAPTCHA_OPEN: false, + SNOWY_SYS_DEFAULT_PASSWORD: '' +}) + +const param = { + category: 'SYS_BASE' +} + +const getSysBaseConfig = () => { + configApi.configList(param).then((data) => { + if (data) { + data.forEach((item) => { + formData.value[item.configKey] = item.configValue ? '' : item.configValue + }) + } else { + message.warning('表单项不存在,请初始化数据库') + } + }) +} diff --git a/src/src/store/user.js b/src/src/store/user.js new file mode 100644 index 0000000..6fb7401 --- /dev/null +++ b/src/src/store/user.js @@ -0,0 +1,32 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import loginApi from '@/api/auth/loginApi' +import { useGlobalStore } from '@/store' +import tool from '@/utils/tool' +export const userStore = defineStore('userStore', () => { + // 初始化用户信息 + const initUserInfo = async () => { + const data = await loginApi.getLoginUser() + const globalStore = useGlobalStore() + globalStore.setUserInfo(data) + tool.data.set('USER_INFO', data) + } + // 刷新登录用户信息 + const refreshUserLoginUserInfo = () => { + loginApi.getLoginUser().then((data) => { + const globalStore = useGlobalStore() + globalStore.setUserInfo(data) + tool.data.set('USER_INFO', data) + }) + } + return { initUserInfo, refreshUserLoginUserInfo } +}) diff --git a/src/src/store/viewTags.js b/src/src/store/viewTags.js new file mode 100644 index 0000000..b0862cc --- /dev/null +++ b/src/src/store/viewTags.js @@ -0,0 +1,89 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const viewTagsStore = defineStore('viewTags', () => { + // 定义state + const viewTags = ref([]) + + // 定义action + const pushViewTags = (route) => { + const target = viewTags.value.find((item) => item.path === route.path) + const isName = route.name + if (!target && isName) { + viewTags.value.push(route) + } + if (target) { + viewTags.value.forEach((item, index) => { + if (item.path === route.path) { + viewTags.value[index] = { ...route, ...item } + // Object.assign(item, route) + } + }) + } + } + const removeViewTags = (route) => { + viewTags.value.forEach((item, index) => { + if (item.fullPath === route.fullPath) { + viewTags.value.splice(index, 1) + } + }) + } + const updateViewTags = (route) => { + viewTags.value.forEach((item, index) => { + if (item.fullPath === route.fullPath) { + viewTags.value[index] = { ...route, ...item } + // Object.assign(item, route) + } + }) + } + // 更新或删除视图标签 + const updateOrRemoveViewTags = (routes) => { + if (routes && routes.length > 0) { + viewTags.value.forEach((item, index) => { + const target = routes.find((route) => route.path === item.fullPath) + if (!target) { + // 路由不存在,删除 + viewTags.value.splice(index, 1) + } else { + // 路由存在,更新 + viewTags.value = viewTags.value.map((item) => { + if (item.fullPath === target.path) { + return { ...item, meta: target.meta } + } + return item + }) + } + }) + } + } + const updateViewTagsTitle = (title = '') => { + const nowFullPath = location.hash.substring(1) + viewTags.value.forEach((item) => { + if (item.fullPath === nowFullPath) { + item.meta.title = title + } + }) + } + const clearViewTags = () => { + viewTags.value = [] + } + + return { + viewTags, + pushViewTags, + removeViewTags, + updateViewTags, + updateViewTagsTitle, + clearViewTags, + updateOrRemoveViewTags + } +}) diff --git a/src/src/style/default.less b/src/src/style/default.less new file mode 100644 index 0000000..c3846d6 --- /dev/null +++ b/src/src/style/default.less @@ -0,0 +1,399 @@ +:root { + --blue-1: #e6f7ff; + --blue-2: #bae7ff; + --blue-3: #91d5ff; + --blue-4: #69c0ff; + --blue-5: #40a9ff; + --blue-6: #1677FF; + --blue-7: #096dd9; + --blue-8: #0050b3; + --blue-9: #003a8c; + --blue-10: #002766; + + --green-1: #f6ffed; + --green-2: #d9f7be; + --green-3: #b7eb8f; + --green-4: #95de64; + --green-5: #73d13d; + --green-6: #52c41a; + --green-7: #389e0d; + --green-8: #237804; + --green-9: #135200; + --green-10: #092b00; + + --red-1: #fff1f0; + --red-2: #ffccc7; + --red-3: #ffa39e; + --red-4: #ff7875; + --red-5: #ff4d4f; + --red-6: #f5222d; + --red-7: #cf1322; + --red-8: #a8071a; + --red-9: #820014; + --red-10: #5c0011; + + --gold-1: #fffbe6; + --gold-2: #fff1b8; + --gold-3: #ffe58f; + --gold-4: #ffd666; + --gold-5: #ffc53d; + --gold-6: #faad14; + --gold-7: #d48806; + --gold-8: #ad6800; + --gold-9: #874d00; + --gold-10: #613400; + + --purple-1: #f9f0ff; + --purple-2: #efdbff; + --purple-3: #d3adf7; + --purple-4: #b37feb; + --purple-5: #9254de; + --purple-6: #722ed1; + --purple-7: #531dab; + --purple-8: #391085; + --purple-9: #22075e; + --purple-10: #120338; + + --cyan-1: #e6fffb; + --cyan-2: #b5f5ec; + --cyan-3: #87e8de; + --cyan-4: #5cdbd3; + --cyan-5: #36cfc9; + --cyan-6: #13c2c2; + --cyan-7: #08979c; + --cyan-8: #006d75; + --cyan-9: #00474f; + --cyan-10: #002329; + + --pink-1: #fff0f6; + --pink-2: #ffd6e7; + --pink-3: #ffadd2; + --pink-4: #ff85c0; + --pink-5: #f759ab; + --pink-6: #eb2f96; + --pink-7: #c41d7f; + --pink-8: #9e1068; + --pink-9: #780650; + --pink-10: #520339; + + --orange-1: #fff7e6; + --orange-2: #ffe7ba; + --orange-3: #ffd591; + --orange-4: #ffc069; + --orange-5: #ffa940; + --orange-6: #fa8c16; + --orange-7: #d46b08; + --orange-8: #ad4e00; + --orange-9: #873800; + --orange-10: #612500; + + --primary-radius: #fff; + --primary-1: var(--blue-1); + --primary-2: var(--blue-2); + --primary-3: var(--blue-3); + --primary-4: var(--blue-4); + --primary-5: var(--blue-5); + --primary-6: var(--blue-6); + --primary-7: var(--blue-7); + --primary-8: var(--blue-8); + --primary-9: var(--blue-9); + --primary-10: var(--blue-10); + + --primary-color: var(--primary-6); + --primary-color-hover: var(--primary-5); + --primary-color-active: var(--primary-7); + --primary-color-outline: var(--primary-2); + + --info-color: var(--primary-color); + --success-color: var(--green-6); + --processing-color: var(--blue-6); + --highlight-color: var(--red-5); + + --warning-color: var(--gold-6); + --warning-color-hover: var(--gold-5); + --warning-color-active: var(--gold-7); + --warning-color-outline: var(--gold-2); + + --error-color: var(--red-5); + --error-color-hover: var(--red-4); + --error-color-active: var(--red-7); + --error-color-outline: var(--red-2); + + --body-background: #fff; + --component-background: #fff; + + --popover-background: @component-background; + --popover-customize-border-color: @border-color-split; + + --text-color: fade(@black, 85%); + --text-color-secondary: fade(@black, 45%); + --text-color-inverse: @white; + --icon-color-hover: fade(@black, 75%); + --heading-color: fade(@black, 85%); + + --item-hover-bg: #f5f5f5; + + // Border color + --border-color-base: hsv(0, 0, 85%); + --border-color-split: hsv(0, 0, 94%); + //--border-color-inverse: @white; + + // + --background-color-light: hsv(0, 0, 98%); + --background-color-base: hsv(0, 0, 96%); + + // Disabled states + --disabled-color: fade(#000, 25%); + --disabled-bg: @background-color-base; + --disabled-color-dark: fade(#fff, 35%); + + // Shadow + --shadow-color: rgba(195, 62, 62, 0.15); + --shadow-color-inverse: @component-background; + --box-shadow-base: @shadow-1-down; + --shadow-1-up: 0 -2px 8px @shadow-color; + --shadow-1-down: 0 2px 8px @shadow-color; + --shadow-1-left: -2px 0 8px @shadow-color; + --shadow-1-right: 2px 0 8px @shadow-color; + --shadow-2: 0 4px 12px @shadow-color; + + // Buttons + --btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + --btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); + --btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + + --btn-default-bg: @component-background; + + --btn-default-ghost-color: @component-background; + --btn-default-ghost-border: @component-background; + + --btn-text-hover-bg: rgba(0, 0, 0, 0.018); + --btn-text-active-bg: rgba(0, 0, 0, 0.028); + + // Checkbox + --checkbox-check-bg: @checkbox-check-color; + + // Descriptions + --descriptions-bg: #fafafa; + + // Divider + --divider-color: rgba(0, 0, 0, 6%); + + // Dropdown 有两个 + --dropdown-menu-submenu-disabled-bg: @component-background; + + // Radio + --radio-dot-disabled-color: fade(@black, 20%); + --radio-solid-checked-color: @component-background; + + // Radio buttons + --radio-disabled-button-checked-bg: coverTintMixin(@black, 90%); + --radio-disabled-button-checked-color: @disabled-color; + + // Layout + --layout-body-background: #f0f2f5; + --layout-header-background: #001529; + --layout-trigger-background: #002140; + //--layout-sider-background-1: coverTintMixin(#001529, 10%); + + // Dropdown 有两个 + --dropdown-menu-bg: @component-background; + + // Input + --input-placeholder-color: hsv(0, 0, 75%); + --input-icon-color: @input-color; + --input-bg: @component-background; + --input-number-handler-active-bg: #f4f4f4; + --input-icon-hover-color: fade(@black, 85%); + + // Mentions + --mentions-dropdown-bg: @component-background; + + // Select + --select-dropdown-bg: @component-background; + --select-background: @component-background; + --select-clear-background: @select-background; + --select-selection-item-bg: @background-color-base; + --select-selection-item-border-color: @border-color-split; + --select-multiple-disabled-background: @input-disabled-bg; + --select-multiple-item-disabled-color: #bfbfbf; + --select-multiple-item-disabled-border-color: @select-border-color; + + // Cascader + --cascader-bg: @component-background; + --cascader-menu-bg: @component-background; + --cascader-menu-border-color-split: @border-color-split; + + // Tooltip + --tooltip-bg: rgba(0, 0, 0, 0.75); + + // Popover + --popover-bg: @component-background; + + // Modal + --modal-header-bg: @component-background; + --modal-header-border-color-split: @border-color-split; + --modal-content-bg: @component-background; + --modal-footer-border-color-split: @border-color-split; + + // Progress + --progress-steps-item-bg: #f3f3f3; + + // Menu + --menu-popup-bg: @component-background; + --menu-dark-bg: @layout-header-background; + --menu-dark-inline-submenu-bg: #000c17; + + // Table + --table-header-bg: @background-color-light; + --table-header-sort-bg: @background-color-base; + --table-body-sort-bg: #fafafa; + --table-row-hover-bg: @background-color-light; + --table-expanded-row-bg: #fbfbfb; + --table-header-cell-split-color: rgba(0, 0, 0, 0.06); + --table-header-sort-active-bg: rgba(0, 0, 0, 0.04); + --table-header-filter-active-bg: rgba(0, 0, 0, 0.04); + --table-filter-btns-bg: inherit; + --table-filter-dropdown-bg: @component-background; + --table-expand-icon-bg: @component-background; + + // TimePicker + --picker-bg: @component-background; + --picker-basic-cell-disabled-bg: @disabled-bg; + --picker-border-color: @border-color-split; + + // Calendar + --calendar-bg: @component-background; + --calendar-input-bg: @input-bg; + --calendar-border-color: @border-color-inverse; + --calendar-full-bg: @calendar-bg; + + // Badge + --badge-text-color: @component-background; + + // Rate + --rate-star-bg: @border-color-split; + + // Card + --card-actions-background: @component-background; + --card-skeleton-bg: #cfd8dc; + --card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), + 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); + + // Comment + --comment-bg: inherit; + --comment-author-time-color: #ccc; + --comment-action-hover-color: #595959; + + // BackTop + --back-top-bg: @text-color-secondary; + --back-top-hover-bg: @text-color; + + // Avatar + --avatar-bg: #ccc; + + // Switch + --switch-bg: @component-background; + + // Pagination + --pagination-item-bg: @component-background; + --pagination-item-bg-active: @component-background; + --pagination-item-link-bg: @component-background; + --pagination-item-disabled-color-active: @white; + --pagination-item-disabled-bg-active: darken(hsv(0, 0, 96%), 10%); + --pagination-item-input-bg: @component-background; + + // PageHeader + --page-header-back-color: #000; + --page-header-ghost-bg: inherit; + + // Slider + --slider-rail-background-color: @background-color-base; + --slider-rail-background-color-hover: #e1e1e1; + --slider-dot-border-color: @border-color-split; + --slider-dot-border-color-active: @primary-4; + + // Tree + --tree-bg: @component-background; + + // Skeleton + --skeleton-to-color: coverShadeMixin(@skeleton-color, 5%); + + // Transfer + --transfer-item-hover-bg: @item-hover-bg; + + // Message + --message-notice-content-bg: @component-background; + + // List + --list-customize-card-bg: @component-background; + + // Drawer + --drawer-bg: @component-background; + + // Timeline + --timeline-color: @border-color-split; + --timeline-dot-color: @primary-color; + + // Image + --image-preview-operation-disabled-color: rgba(255, 255, 255, 0.45); + + // Steps + --steps-nav-arrow-color: fade(@black, 25%); + --steps-background: @component-background; + + // Notification + --notification-bg: @component-background; + + // 侧边栏 + --sidebar-light-shadow: 1px 3px 3px rgba(0, 21, 41, 0.08); + --sidebar-dark-shadow: 0 4px 4px rgba(0, 0, 0, 0.35); + + // 顶栏 + --header-light-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + --header-dark-shadow: 0 1px 4px rgba(0, 0, 0, 0.1); + --header-tool-hover-bg: rgba(0, 0, 0, 0.025); + --header-dark-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-color-split: rgba(0, 0, 0, 0.08); + + // logo + --logo-light-shadow: 1px 2px 3px rgba(0, 21, 41, 0.08); + --logo-dark-shadow: 0 3px 4px rgba(0, 0, 0, 0.35); + + // + --gradient-min: fade(#cfd8dc, 20%); + --gradient-max: fade(#cfd8dc, 40%); + + // font + --font-color: rgba(0, 0, 0, 0.88); + // header-bottom + --header-bottom: rgba(246, 246, 246, 0.85); + // breadcrumb-background + --breadcrumb-background: rgba(253, 253, 253, 0.85); + // background-color + --snowy-background-color: #FFFFFF; + // tag-background + --tag-background: rgba(253, 253, 253); + // + --success-fade-20: fade(#52c41a, 20%); + --error-fade-20: fade(#ff4d4f, 20%); + --warning-fade-20: fade(#faad14, 20%); + + //--primary-fade-20: fade(#1890ff, 20%); + --primary-fade-20: var(--primary-2); + //--primary-fade-8: fade(#1890ff, 8%); + + --white--fade--65: rgba(255,255,255,.65); + --menu-dark-highlight-color: #fff; + --btn-primary-color: #fff; + --tooltip-color: #fff; + --card-above-color: #F0F0F0; + --card-above-border-color: #CCCCCC; + + // workfolw design + --node-wrap-box-color: rgb(255, 255, 255); + --node-wrap-box-before-color: #FFFFFF; + --node-wrap-box-before-borde-color: rgb(202, 202, 202); + --auto-judge-before-color: #FFF; + --cover-line-before-color: #FFF; +} diff --git a/src/src/style/index.less b/src/src/style/index.less new file mode 100644 index 0000000..4daa801 --- /dev/null +++ b/src/src/style/index.less @@ -0,0 +1,519 @@ +@import './realdark'; +@import './default'; + +.body, html { + width: 100%; + height: 100%; + background-color: #f6f8f9; +} + +a, button, input, textarea { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + box-sizing: border-box; + outline: none !important; + -webkit-appearance: none; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none; +} + +/* 大布局样式 */ +.admin-ui { + overflow: hidden; + height: 100%; + display: flex; + flex-flow: column; +} + +.admin-ui-wrapper { + display: flex; + flex: 1; + overflow: auto; +} + +.admin-ui-main { + display: flex; + flex-direction: column; + height: 100%; + flex: 1; +} +.main-content-wrapper{ + padding: 11px 11px 0px; + overflow-y: auto; + overflow-x: hidden; + flex: auto; +} + +.main-bottom-wrapper { + height: 60px; + margin-top: 25px; + text-align: center; + flex: auto; + display: flex; + align-items: flex-end; + justify-content: center; + padding-bottom: 25px; +} + +/* 双排菜单布局 */ +.snowy-doublerow-layout-menu { + padding-right: 5px; + line-height: 0; + align-items: center; +} + +.snowy-doublerow-layout-menu-item-fort-div { + overflow: hidden; + text-overflow: ellipsis; + opacity: 1; + display: block; + flex: auto; +} + +.snowy-doublerow-layout-menu-item-fort-div-span { + font-size: 13px; + text-overflow: ellipsis; +} + +.snowy-title{ + color: var(--text-color); +} +.ant-layout-sider-collapsed{ + .logo-bar>span{ + display: none; + } +} +.ant-layout-sider-dark{ + .snowy-header-logo{ + color: #fff; + } +} + +/* 设置抽屉样式 */ +.layout-setting { + position: fixed; + width: 40px; + height: 40px; + border-radius: 3px 0 0 3px; + bottom: 50%; + right: 0px; + z-index: 100; + background: @primary-color; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + cursor: pointer; +} + +.layout-setting i { + color: #fff; +} + +/* 头部 */ +.snowy-header { + height: 50px; + display: flex; + justify-content: space-between; + border-bottom: 1px solid var(--header-bottom); + box-shadow: 0 0.4px 0.5px rgb(0 21 41 / 12%); + .ant-menu-item{ + height: 48px; + line-height: 48px; + } + background: var(--snowy-background-color); +} +// 应用主题色 +.snowy-header-primary-color { + color: white; + background-color: var(--primary-color); + .ant-badge{ + color: white; + } + .ant-breadcrumb-link { + color: white; + } + .ant-breadcrumb-separator { + color: white; + } + .ant-menu-light .ant-menu-item:hover{ + color: #ccc; + background-color: var(--primary-7); + } +} + +.ant-layout-sider-dark { + .snowy-title{ + color: #fff; + } +} + +.snowy-header-left { + display: flex; + align-items: center; + padding-left: 20px; +} + +.snowy-header-left .menu-unfold-outlined { + padding: 0 12px +} + +.snowy-header-right { + display: flex; + align-items: center; +} + +.snowy-header-logo { + height: 49px; + display: flex; + justify-content: space-between; + border-bottom: 1px solid rgba(255, 255, 255, 0.04); +} + +.snowy-header-logo-primary-color { + color: white; + background-color: var(--primary-color); +} + +.snowy-header-logo .logo-bar { + font-weight: bold; + display: flex; + align-items: center; + font-size: 20px; +} + +.snowy-header-logo .logo-bar .logo { + margin-right: 10px; + width: 35px; + height: 35px; +} + +.top-snowy-header { + background: #001529; + color: white; +} +.top-snowy-header-light { + background: #ffffff; + color: #000000; +} +.top-snowy-header-layout { + background: var(--primary-color); + color: #ffffff; +} +.panel-item { + padding: 0 10px; + cursor: pointer; + height: 100%; + display: flex; + align-items: center; + /*color: var(--font-color);*/ +} +.panel-item:hover { + background: var(--header-color-split); +} +.contextmenu { + position: fixed; + width: 200px; + margin:0; + border-radius: 0px; + background: @body-background; + border: 1px solid var(--border-color-split); + box-shadow: 0 2px 12px 0 rgba(0,0,0,.1); + z-index: 3000; + list-style-type: none; + padding: 10px 0; +} +.contextmenu hr { + margin:5px 0; + border: none; + height: 1px; + font-size: 0px; + background-color: var(--border-color-split) +} +.contextmenu li { + display: flex; + align-items: center; + margin:0; + cursor: pointer; + line-height: 30px; + padding: 0 17px; + color: @text-color; +} +.contextmenu li i { + font-size: 14px; + margin-right: 10px; +} +.contextmenu li:hover { + background-color: @component-background; + color: #66b1ff; +} +.contextmenu li.disabled { + cursor: not-allowed; + color: #bbb; + background: transparent; +} + +/*页面最大化*/ +.app-main.main-maximize { + .main-maximize-exit { + display: block; + } + .ant-layout-sider, .ant-layout-sider-dark, .layout-setting, .snowy-header, .admin-ui-breadcrumb, .snowy-tags { + display: none; + } + .main-content-wrapper { + padding: 0; + } +} + +/* 最大化后的退出按钮 */ +.main-maximize-exit { + display: none; + position: fixed; + z-index: 3000; + top: -20px; + padding-top: 18px; + left: 50%; + margin-left: -20px; + border-radius: 50%; + width: 40px; + height: 40px; + cursor: pointer; + background: rgba(0, 0, 0, 0.2); + text-align: center; +} + +.main-maximize-exit:hover { + background: rgba(0, 0, 0, 0.4); +} + +.ant-layout-sider{ + overflow: auto; +} + +/* 重写antdv的一些样式,定义到全局 */ +.ant-card-head-title { + padding: 12px 0!important; +} +.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab { + padding: 12px 0!important; +} +.ant-card-extra { + padding: 12px 0!important; +} +.ant-card-head { + border-bottom: 0px !important; + min-height: 50px !important; +} + +/* 重写antdv的表格滚动条 */ +.ant-table-body, .ant-table-content{ + &::-webkit-scrollbar { + height: 10px; + width: 10px; + } + &::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1); + background: @border-color-split; + } + &::-webkit-scrollbar-track { + -webkit-box-shadow: 0; + border-radius: 10px; + background: @background-color-base; + } +} + +.left-span-label { + border-left: 4px solid var(--primary-color); + font-size: 15px; + color: var(--font-color); + font-weight: 600; + padding-left: 8px; +} + +// 滚动条,需要哪里,加哪个class +body, +.ant-scrolling-effect, +.ant-drawer-wrapper-body, +.ant-drawer-body, +.admin-ui, +.ant-modal-wrap, +.ant-transfer-list-content, +.ant-card, +.ant-layout-sider, +.CodeMirror-scroll, +.main-content-wrapper, +.xn-icon-select-list, +.form-user-table, +.scopeDefineOrgTreeDiv, +.user-table, +.role-table, +.org-table, +.pos-table, +.poi-list, +.snowy-orgpos-vis, +.index-message-list, +.ant-picker-time-panel-column, +.timeline-div, +.gen-preview-content, +.ant-menu, +.ant-tabs-dropdown-menu, +.xn-table, +.selector-table, +.card-div, +.ant-table-body, + +.admin-ui-main{ + &::-webkit-scrollbar { + /*滚动条整体样式*/ + width : 5px; /*高宽分别对应横竖滚动条的尺寸*/ + height: 5px; + } + &::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + border-radius : 10px; + background-color: #CCCCCC; // skyblue + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.2) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.2) 50%, + rgba(255, 255, 255, 0.2) 75%, + transparent 75%, + transparent + ); + } + &::-webkit-scrollbar-track { + /*滚动条里面轨道*/ + box-shadow : inset 0 0 2px rgba(0, 0, 0, 0.2); + background : @component-background; + border-radius: 5px; + opacity: 0; + display: none; + } +} + +.json-box-9136076486841527{ + overflow: hidden!important;; + .CodeMirror-scrollbar-filler{ + display: none!important; + } +} +.ant-modal-close-x .anticon { + padding: 2px !important; +} +.xn-mb10 { + margin-bottom: 10px; +} +.xn-mt4 { + margin-top: 4px; +} +.xn-mg08 { + margin: 0 8px; +} +.xn-fdr { + float: right; +} +.xn-wd { + width: 100%; +} +.xn-wd90 { + width: 90px; +} +.xn-wdcalc-70 { + width: calc(100% - 70px); +} +.xn-mr8 { + margin-right: 8px; +} +.xn-ht400 { + height: 400px; +} +.xn-wh25 { + height: 25px; + width: 25px; +} +.xn-ml10 { + margin-left: 10px; +} +.xn-pl0 { + padding-left: 0px; +} +.xn-pd8 { + padding: 8px; +} +.xn-pb10 { + padding-bottom: 10px; +} +.xn-color-a0a0a0 { + color: #a0a0a0; +} +.xn-color-d9d9d9 { + color: #d9d9d9; +} +.xn-color-ff4d4f { + color: #ff4d4f; +} +.xn-color-00025 { + color: rgba(0, 0, 0, 0.25); +} +.xn-jk-line { + width: 188px; + margin-bottom: 8px; + display: block; +} +.xn-findform-line { + border: 1px solid var(--border-color-split); + cursor: pointer; + width: 100%; + height: 40px; +} +.odd { + background-color: var(--table-row-hover-bg); +} +.snowy-theme-dark .odd { + background-color: #1d1d1d +} +// 以下是重写表单设计器的样式 +.list-main { + background: var(--auto-judge-before-color) !important; +} +.drag-move-box:before { + background: var(--primary-color) !important; +} +.drag-move-box>.delete { + background: var(--primary-color) !important; +} +.drag-move-box>.copy { + background: var(--primary-color) !important; +} +.drag-move-box .show-key-box { + color: var(--primary-color) !important; +} +.left-ul-item:hover { + color: var(--primary-color) !important; + border: 1px solid var(--primary-color) !important; + -webkit-box-shadow: 0 2px 6px var(--primary-color) !important; + box-shadow: 0 2px 6px var(--primary-color) !important; +} +.list-main>.moving:before { + background: var(--primary-color) !important; +} +.operating-area a:hover { + color: var(--primary-color) !important; +} +.batch-box>.delete { + background: var(--primary-color) !important; +} +.batch-box>.copy { + background: var(--primary-color) !important; +} +.batch-box.active:before { + background: var(--primary-color) !important; +} diff --git a/src/src/style/readme.md b/src/src/style/readme.md new file mode 100644 index 0000000..700dda4 --- /dev/null +++ b/src/src/style/readme.md @@ -0,0 +1,7 @@ + +适配暗黑模式的操作 + +直接 var(--primary-color) + +例如:新建个变量,在default.less跟realdark.less中设定好,这个时候就会跟着颜色的主题变化 + diff --git a/src/src/style/realdark.less b/src/src/style/realdark.less new file mode 100644 index 0000000..644e6c6 --- /dev/null +++ b/src/src/style/realdark.less @@ -0,0 +1,417 @@ +[snowy-theme=realdark] { + .ant-btn-primary{ + color: #fff; + &:hover, &:focus{ + color: #fff; + } + } + +} +.fade() { + @functions: ~`(function() { + this.fade = function(color, amount) { + if (String(color).indexOf('var(') === 0) { + if (color.indexOf('--primary-color') !== -1 ) { + var m = amount > 10 ? amount/10 :amount + return color.replace('-color)', '-' + m + ')') + } + return color.replace(')', '--fade--' + parseInt(amount) + ')') + } + return color + } + })()`; +} +.fade(); + +@import 'ant-design-vue/dist/reset.css'; + +.snowy-theme-dark { + --blue-1: #111d2c; + --blue-2: #112a45; + --blue-3: #15395b; + --blue-4: #164c7e; + --blue-5: #1765ad; + --blue-6: #177ddc; + --blue-7: #3c9ae8; + --blue-8: #65b7f3; + --blue-9: #8dcff8; + --blue-10: #b7e3fa; + + --green-1: #162312; + --green-2: #1d3712; + --green-3: #274916; + --green-4: #306317; + --green-5: #3c8618; + --green-6: #49aa19; + --green-7: #6abe39; + --green-8: #8fd460; + --green-9: #b2e58b; + --green-10: #d5f2bb; + + --red-1: #2a1215; + --red-2: #431418; + --red-3: #58181c; + --red-4: #791a1f; + --red-5: #a61d24; + --red-6: #f5222d; + --red-7: #e84749; + --red-8: #f37370; + --red-9: #f89f9a; + --red-10: #fac8c3; + + --gold-1: #2b2111; + --gold-2: #443111; + --gold-3: #594214; + --gold-4: #7c5914; + --gold-5: #aa7714; + --gold-6: #d89614; + --gold-7: #e8b339; + --gold-8: #f3cc62; + --gold-9: #f8df8b; + --gold-10: #faedb5; + + --purple-1: #1a1325; + --purple-2: #24163a; + --purple-3: #301c4d; + --purple-4: #3e2069; + --purple-5: #51258f; + --purple-6: #642ab5; + --purple-7: #854eca; + --purple-8: #ab7ae0; + --purple-9: #cda8f0; + --purple-10: #ebd7fa; + + --cyan-1: #112123; + --cyan-2: #113536; + --cyan-3: #144848; + --cyan-4: #146262; + --cyan-5: #138585; + --cyan-6: #13a8a8; + --cyan-7: #33bcb7; + --cyan-8: #58d1c9; + --cyan-9: #84e2d8; + --cyan-10: #b2f1e8; + + --pink-1: #291321; + --pink-2: #40162f; + --pink-3: #551c3b; + --pink-4: #75204f; + --pink-5: #a02669; + --pink-6: #cb2b83; + --pink-7: #e0529c; + --pink-8: #f37fb7; + --pink-9: #f8a8cc; + --pink-10: #fad2e3; + + --orange-1: #2b1d11; + --orange-2: #442a11; + --orange-3: #593815; + --orange-4: #7c4a15; + --orange-5: #aa6215; + --orange-6: #d87a16; + --orange-7: #e89a3c; + --orange-8: #f3b765; + --orange-9: #f8cf8d; + --orange-10: #fae3b7; + + --primary-radius: #141414; + --primary-1: var(--blue-1); + --primary-2: var(--blue-2); + --primary-3: var(--blue-3); + --primary-4: var(--blue-4); + --primary-5: var(--blue-5); + --primary-6: var(--blue-6); + --primary-7: var(--blue-7); + --primary-8: var(--blue-8); + --primary-9: var(--blue-9); + --primary-10: var(--blue-10); + + --primary-color: var(--primary-6); + --primary-color-hover: var(--primary-5); + --primary-color-active: var(--primary-7); + --primary-color-outline: var(--primary-2); + + --info-color: var(--primary-color); + --success-color: var(--green-6); + --processing-color: var(--blue-6); + --highlight-color: var(--red-5); + + --warning-color: var(--gold-6); + --warning-color-hover: var(--gold-5); + --warning-color-active: var(--gold-7); + --warning-color-outline: var(--gold-2); + + --error-color: var(--red-5); + --error-color-hover: var(--red-4); + --error-color-active: var(--red-7); + --error-color-outline: var(--red-2); + + --body-background: @black; + --component-background: #141414; + --popover-background: #1f1f1f; + --popover-customize-border-color: #3a3a3a; + + --text-color: fade(@white, 85%); + --text-color-secondary: fade(@white, 45%); + --text-color-inverse: @white; + --icon-color-hover: fade(@white, 75%); + --heading-color: fade(@white, 85%); + + --item-hover-bg: fade(@white, 8%); + + // Border color + --border-color-base: #434343; + --border-color-split: #303030; + //--border-color-inverse: @black; + + // + --background-color-light: fade(@white, 4%); + --background-color-base: fade(@white, 8%); + + // Disabled states + --disabled-color: fade(@white, 30%); + --disabled-bg: @background-color-base; + --disabled-color-dark: fade(@white, 30%); + + // Shadow + --shadow-color: rgba(0, 0, 0, 0.45); + --shadow-color-inverse: @component-background; + --box-shadow-base: @shadow-2; + --shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), + 0 -9px 28px 0 rgba(0, 0, 0, 0.2), 0 -12px 48px 16px rgba(0, 0, 0, 0.12); + --shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.32), + 0 9px 28px 0 rgba(0, 0, 0, 0.2), 0 12px 48px 16px rgba(0, 0, 0, 0.12); + --shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.32), + 9px 0 28px 0 rgba(0, 0, 0, 0.2), 12px 0 48px 16px rgba(0, 0, 0, 0.12); + --shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.48), + 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2); + + // Buttons + --btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + --btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); + --btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + + --btn-default-bg: transparent; + + --btn-default-ghost-color: @text-color; + --btn-default-ghost-border: fade(@white, 25%); + + --btn-text-hover-bg: rgba(255, 255, 255, 0.03); + --btn-text-active-bg: rgba(255, 255, 255, 0.04); + + // Checkbox + --checkbox-check-bg: transparent; + + // Descriptions + --descriptions-bg: @background-color-light; + + // Divider + --divider-color: rgba(255, 255, 255, 12%); + + // Dropdown 有两个 + --dropdown-menu-submenu-disabled-bg: transparent; + + // Radio + --radio-dot-disabled-color: fade(@white, 20%); + --radio-solid-checked-color: @white; + + // Radio buttons + --radio-disabled-button-checked-bg: fade(@white, 20%); + --radio-disabled-button-checked-color: @disabled-color; + + // Layout + --layout-body-background: @body-background; + --layout-header-background: @popover-background; + --layout-trigger-background: #262626; + //--layout-sider-background-1: tint(#1f1f1f, 10%); + + // Dropdown 有两个 + --dropdown-menu-bg: @popover-background; + + // Input + --input-placeholder-color: fade(@white, 30%); + --input-icon-color: fade(@white, 30%); + --input-bg: transparent; + --input-number-handler-active-bg: @item-hover-bg; + --input-icon-hover-color: fade(@white, 85%); + + // Mentions + --mentions-dropdown-bg: @popover-background; + + // Select + --select-dropdown-bg: @popover-background; + --select-background: transparent; + --select-clear-background: @component-background; + --select-selection-item-bg: fade(@white, 8); + --select-selection-item-border-color: @border-color-split; + --select-multiple-disabled-background: @component-background; + --select-multiple-item-disabled-color: #595959; + --select-multiple-item-disabled-border-color: @popover-background; + + // Cascader + --cascader-bg: transparent; + --cascader-menu-bg: @popover-background; + --cascader-menu-border-color-split: @border-color-split; + + // Tooltip + --tooltip-bg: #434343; + + // Popover + --popover-bg: @popover-background; + + // Modal + --modal-header-bg: @popover-background; + --modal-header-border-color-split: @border-color-split; + --modal-content-bg: @popover-background; + --modal-footer-border-color-split: @border-color-split; + + // Progress + --progress-steps-item-bg: fade(@white, 8%); + + // Menu + --menu-popup-bg: @popover-background; + --menu-dark-bg: @popover-background; + --menu-dark-inline-submenu-bg: @component-background; + + // Table + --table-header-bg: #1d1d1d; + --table-header-sort-bg: #262626; + --table-body-sort-bg: fade(@white, 1%); + --table-row-hover-bg: #262626; + --table-expanded-row-bg: @table-header-bg; + --table-header-cell-split-color: fade(@white, 8%); + --table-header-sort-active-bg: #303030; + --table-header-filter-active-bg: #434343; + --table-filter-btns-bg: @popover-background; + --table-filter-dropdown-bg: @popover-background; + --table-expand-icon-bg: transparent; + + // TimePicker + --picker-bg: transparent; + --picker-basic-cell-disabled-bg: #303030; + --picker-border-color: @border-color-split; + + // Calendar + --calendar-bg: @popover-background; + --calendar-input-bg: @calendar-bg; + --calendar-border-color: transparent; + --calendar-full-bg: @component-background; + + // Badge + --badge-text-color: @white; + + // Rate + --rate-star-bg: fade(@white, 12%); + + // Card + --card-actions-background: @component-background; + --card-skeleton-bg: #303030; + --card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), + 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36); + + // Comment + --comment-bg: transparent; + --comment-author-time-color: fade(@white, 30%); + --comment-action-hover-color: fade(@white, 65%); + + // BackTop + --back-top-bg: var(--tooltip-bg); + --back-top-hover-bg: var(--border-color-split); + + // Avatar + --avatar-bg: fade(@white, 30%); + + // Switch + --switch-bg: @white; + + // Pagination + --pagination-item-bg: transparent; + --pagination-item-bg-active: transparent; + --pagination-item-link-bg: transparent; + --pagination-item-disabled-color-active: @black; + --pagination-item-disabled-bg-active: fade(@white, 25%); + --pagination-item-input-bg: @pagination-item-bg; + + // PageHeader + --page-header-back-color: @icon-color; + --page-header-ghost-bg: transparent; + + // Slider + --slider-rail-background-color: #262626; + --slider-rail-background-color-hover: @border-color-base; + --slider-dot-border-color: @border-color-split; + --slider-dot-border-color-active: @primary-4; + + // Tree + --tree-bg: transparent; + + // Skeleton + --skeleton-to-color: fade(@white, 16%); + + // Transfer + --transfer-item-hover-bg: #262626; + + // Message + --message-notice-content-bg: @popover-background; + + // List + --list-customize-card-bg: transparent; + + // Drawer + --drawer-bg: @popover-background; + + // Timeline + --timeline-color: @border-color-split; + --timeline-dot-color: @primary-color; + + // Steps + --steps-nav-arrow-color: fade(@white, 20%); + --steps-background: transparent; + + // Notification + --notification-bg: @popover-background; + + // 侧边栏 + --sidebar-light-shadow: 0 4px 4px rgba(0, 0, 0, 0.6); + --sidebar-dark-shadow: 0 4px 4px rgba(0, 0, 0, 0.6); + + // 顶栏 + --header-light-shadow: 0 1px 4px rgba(0, 0, 0, 0.6); + --header-dark-shadow: 0 1px 4px rgba(0, 0, 0, 0.6); + --header-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-dark-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-color-split: rgba(255, 255, 255, 0.15); + + // logo + --logo-light-shadow: 0 3px 4px rgba(0, 0, 0, 0.6); + --logo-dark-shadow: 0 3px 4px rgba(0, 0, 0, 0.6); + + // + --gradient-min: fade(#303030, 20%); + --gradient-max: fade(#303030, 40%); + + // font + --font-color: #FFFFFF; + // header-bottom + --header-bottom: rgba(54, 54, 54, 0.6); + // breadcrumb-background + --breadcrumb-background: rgba(54, 54, 54, 0.6); + // background-color + --snowy-background-color: #141414; + // tag-background + --tag-background: rgba(56, 56, 56); + // + --primary-fade-20: var(--primary-2); + + --black--fade--85: rgba(255, 255, 255, 0.85); + --switch-shadow-color: 0 2px 4px rgb(0 35 11 / 20%); + --card-above-color: #303030; + --card-above-border-color: #484848; + + // workfolw design + --node-wrap-box-color: #303030; + --node-wrap-box-before-color: rgba(255, 255, 255, 0.09); // 箭头旁边 + --node-wrap-box-before-borde-color: rgba(255, 255, 255, 0.09); // 箭头 + --auto-judge-before-color: #141414; // 箭头背景 + --cover-line-before-color: #141414; +} diff --git a/src/src/tailwind.css b/src/src/tailwind.css new file mode 100644 index 0000000..2f67a33 --- /dev/null +++ b/src/src/tailwind.css @@ -0,0 +1,91 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { +} + +@layer utilities { +} + +/*默认为row,横向排列*/ +.layout-items-center { + display: flex; + align-items: center; +} + +.layout-items-baseline { + display: flex; + align-items: baseline; +} + +.layout-baseline-between { + display: flex; + align-items: baseline; + justify-content: space-between; +} + +/*左右居中*/ +.layout-center { + display: flex; + justify-content: center; +} + +/*两边排列*/ +.layout-slide { + display: flex; + align-items: center; + justify-content: space-between; +} + +/*左中右排列*/ +.layout-around { + display: flex; + align-items: center; + justify-content: space-around; +} + +/*两边排列, 换行*/ +.layout-slide-wrap { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; +} + +/*上下排列*/ +.layout-col-slide { + display: flex; + flex-direction: column; + justify-content: space-between; +} + +/*左右垂直居中*/ + +.layout-abs-center { + display: flex; + justify-content: center; + align-items: center; +} + +/*横向左右垂直居右*/ +.layout-end { + display: flex; + justify-content: flex-end; + align-items: center; +} + +/*纵向左右垂直居中*/ +.layout-col-center { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.text-color{ + color: var(--text-color); +} + + + diff --git a/src/src/utils/cityOptions.js b/src/src/utils/cityOptions.js new file mode 100644 index 0000000..53e132e --- /dev/null +++ b/src/src/utils/cityOptions.js @@ -0,0 +1,16309 @@ +const cityOptions = [{ + "code": "110000", + "label": "北京市", + "value": "北京市", + "children": [ + { + "code": "110100", + "label": "北京市", + "value": "北京市", + "children": [ + { "code": "110101", "label": "东城区", "value": "东城区" }, + { "code": "110102", "label": "西城区", "value": "西城区" }, + { "code": "110105", "label": "朝阳区", "value": "朝阳区" }, + { "code": "110106", "label": "丰台区", "value": "丰台区" }, + { "code": "110107", "label": "石景山区", "value": "石景山区" }, + { "code": "110108", "label": "海淀区", "value": "海淀区" }, + { "code": "110109", "label": "门头沟区", "value": "门头沟区" }, + { "code": "110111", "label": "房山区", "value": "房山区" }, + { "code": "110112", "label": "通州区", "value": "通州区" }, + { "code": "110113", "label": "顺义区", "value": "顺义区" }, + { "code": "110114", "label": "昌平区", "value": "昌平区" }, + { "code": "110115", "label": "大兴区", "value": "大兴区" }, + { "code": "110116", "label": "怀柔区", "value": "怀柔区" }, + { "code": "110117", "label": "平谷区", "value": "平谷区" }, + { "code": "110228", "label": "密云区", "value": "密云区" }, + { "code": "110229", "label": "延庆区", "value": "延庆区" } + ] + } + ] +}, + { + "code": "120000", + "label": "天津市", + "value": "天津市", + "children": [ + { + "code": "120100", + "label": "天津市", + "value": "天津市", + "children": [ + { "code": "120101", "label": "和平区", "value": "和平区" }, + { "code": "120102", "label": "河东区", "value": "河东区" }, + { "code": "120103", "label": "河西区", "value": "河西区" }, + { "code": "120104", "label": "南开区", "value": "南开区" }, + { "code": "120105", "label": "河北区", "value": "河北区" }, + { "code": "120106", "label": "红桥区", "value": "红桥区" }, + { "code": "120110", "label": "东丽区", "value": "东丽区" }, + { "code": "120111", "label": "西青区", "value": "西青区" }, + { "code": "120112", "label": "津南区", "value": "津南区" }, + { "code": "120113", "label": "北辰区", "value": "北辰区" }, + { "code": "120114", "label": "武清区", "value": "武清区" }, + { "code": "120115", "label": "宝坻区", "value": "宝坻区" }, + { "code": "120116", "label": "滨海新区", "value": "滨海新区" }, + { "code": "120117", "label": "静海区", "value": "静海区" }, + { "code": "120118", "label": "蓟州区", "value": "蓟州区" } + ] + } + ] + }, + { + "code": "130000", + "value": "河北省", + "label": "河北省", + "children": [ + { + "code": "130100", + "value": "石家庄市", + "label": "石家庄市", + "children": [ + { + "code": "130102", + "value": "长安区", + "label": "长安区" + }, + { + "code": "130104", + "value": "桥西区", + "label": "桥西区" + }, + { + "code": "130105", + "value": "新华区", + "label": "新华区" + }, + { + "code": "130107", + "value": "井陉矿区", + "label": "井陉矿区" + }, + { + "code": "130108", + "value": "裕华区", + "label": "裕华区" + }, + { + "code": "130109", + "value": "藁城区", + "label": "藁城区" + }, + { + "code": "130110", + "value": "鹿泉区", + "label": "鹿泉区" + }, + { + "code": "130111", + "value": "栾城区", + "label": "栾城区" + }, + { + "code": "130121", + "value": "井陉县", + "label": "井陉县" + }, + { + "code": "130123", + "value": "正定县", + "label": "正定县" + }, + { + "code": "130125", + "value": "行唐县", + "label": "行唐县" + }, + { + "code": "130126", + "value": "灵寿县", + "label": "灵寿县" + }, + { + "code": "130127", + "value": "高邑县", + "label": "高邑县" + }, + { + "code": "130128", + "value": "深泽县", + "label": "深泽县" + }, + { + "code": "130129", + "value": "赞皇县", + "label": "赞皇县" + }, + { + "code": "130130", + "value": "无极县", + "label": "无极县" + }, + { + "code": "130131", + "value": "平山县", + "label": "平山县" + }, + { + "code": "130132", + "value": "元氏县", + "label": "元氏县" + }, + { + "code": "130133", + "value": "赵县", + "label": "赵县" + }, + { + "code": "130181", + "value": "辛集市", + "label": "辛集市" + }, + { + "code": "130183", + "value": "晋州市", + "label": "晋州市" + }, + { + "code": "130184", + "value": "新乐市", + "label": "新乐市" + } + ] + }, + { + "code": "130200", + "value": "唐山市", + "label": "唐山市", + "children": [ + { + "code": "130202", + "value": "路南区", + "label": "路南区" + }, + { + "code": "130203", + "value": "路北区", + "label": "路北区" + }, + { + "code": "130204", + "value": "古冶区", + "label": "古冶区" + }, + { + "code": "130205", + "value": "开平区", + "label": "开平区" + }, + { + "code": "130207", + "value": "丰南区", + "label": "丰南区" + }, + { + "code": "130208", + "value": "丰润区", + "label": "丰润区" + }, + { + "code": "130209", + "value": "曹妃甸区", + "label": "曹妃甸区" + }, + { + "code": "130224", + "value": "滦南县", + "label": "滦南县" + }, + { + "code": "130225", + "value": "乐亭县", + "label": "乐亭县" + }, + { + "code": "130227", + "value": "迁西县", + "label": "迁西县" + }, + { + "code": "130229", + "value": "玉田县", + "label": "玉田县" + }, + { + "code": "130281", + "value": "遵化市", + "label": "遵化市" + }, + { + "code": "130283", + "value": "迁安市", + "label": "迁安市" + }, + { + "code": "130284", + "value": "滦州市", + "label": "滦州市" + } + ] + }, + { + "code": "130300", + "value": "秦皇岛市", + "label": "秦皇岛市", + "children": [ + { + "code": "130302", + "value": "海港区", + "label": "海港区" + }, + { + "code": "130303", + "value": "山海关区", + "label": "山海关区" + }, + { + "code": "130304", + "value": "北戴河区", + "label": "北戴河区" + }, + { + "code": "130306", + "value": "抚宁区", + "label": "抚宁区" + }, + { + "code": "130321", + "value": "青龙满族自治县", + "label": "青龙满族自治县" + }, + { + "code": "130322", + "value": "昌黎县", + "label": "昌黎县" + }, + { + "code": "130324", + "value": "卢龙县", + "label": "卢龙县" + } + ] + }, + { + "code": "130400", + "value": "邯郸市", + "label": "邯郸市", + "children": [ + { + "code": "130402", + "value": "邯山区", + "label": "邯山区" + }, + { + "code": "130403", + "value": "丛台区", + "label": "丛台区" + }, + { + "code": "130404", + "value": "复兴区", + "label": "复兴区" + }, + { + "code": "130406", + "value": "峰峰矿区", + "label": "峰峰矿区" + }, + { + "code": "130407", + "value": "肥乡区", + "label": "肥乡区" + }, + { + "code": "130408", + "value": "永年区", + "label": "永年区" + }, + { + "code": "130423", + "value": "临漳县", + "label": "临漳县" + }, + { + "code": "130424", + "value": "成安县", + "label": "成安县" + }, + { + "code": "130425", + "value": "大名县", + "label": "大名县" + }, + { + "code": "130426", + "value": "涉县", + "label": "涉县" + }, + { + "code": "130427", + "value": "磁县", + "label": "磁县" + }, + { + "code": "130430", + "value": "邱县", + "label": "邱县" + }, + { + "code": "130431", + "value": "鸡泽县", + "label": "鸡泽县" + }, + { + "code": "130432", + "value": "广平县", + "label": "广平县" + }, + { + "code": "130433", + "value": "馆陶县", + "label": "馆陶县" + }, + { + "code": "130434", + "value": "魏县", + "label": "魏县" + }, + { + "code": "130435", + "value": "曲周县", + "label": "曲周县" + }, + { + "code": "130481", + "value": "武安市", + "label": "武安市" + } + ] + }, + { + "code": "130500", + "value": "邢台市", + "label": "邢台市", + "children": [ + { + "code": "130502", + "value": "襄都区", + "label": "襄都区" + }, + { + "code": "130503", + "value": "信都区", + "label": "信都区" + }, + { + "code": "130505", + "value": "任泽区", + "label": "任泽区" + }, + { + "code": "130506", + "value": "南和区", + "label": "南和区" + }, + { + "code": "130522", + "value": "临城县", + "label": "临城县" + }, + { + "code": "130523", + "value": "内丘县", + "label": "内丘县" + }, + { + "code": "130524", + "value": "柏乡县", + "label": "柏乡县" + }, + { + "code": "130525", + "value": "隆尧县", + "label": "隆尧县" + }, + { + "code": "130528", + "value": "宁晋县", + "label": "宁晋县" + }, + { + "code": "130529", + "value": "巨鹿县", + "label": "巨鹿县" + }, + { + "code": "130530", + "value": "新河县", + "label": "新河县" + }, + { + "code": "130531", + "value": "广宗县", + "label": "广宗县" + }, + { + "code": "130532", + "value": "平乡县", + "label": "平乡县" + }, + { + "code": "130533", + "value": "威县", + "label": "威县" + }, + { + "code": "130534", + "value": "清河县", + "label": "清河县" + }, + { + "code": "130535", + "value": "临西县", + "label": "临西县" + }, + { + "code": "130581", + "value": "南宫市", + "label": "南宫市" + }, + { + "code": "130582", + "value": "沙河市", + "label": "沙河市" + } + ] + }, + { + "code": "130600", + "value": "保定市", + "label": "保定市", + "children": [ + { + "code": "130602", + "value": "竞秀区", + "label": "竞秀区" + }, + { + "code": "130606", + "value": "莲池区", + "label": "莲池区" + }, + { + "code": "130607", + "value": "满城区", + "label": "满城区" + }, + { + "code": "130608", + "value": "清苑区", + "label": "清苑区" + }, + { + "code": "130609", + "value": "徐水区", + "label": "徐水区" + }, + { + "code": "130623", + "value": "涞水县", + "label": "涞水县" + }, + { + "code": "130624", + "value": "阜平县", + "label": "阜平县" + }, + { + "code": "130626", + "value": "定兴县", + "label": "定兴县" + }, + { + "code": "130627", + "value": "唐县", + "label": "唐县" + }, + { + "code": "130628", + "value": "高阳县", + "label": "高阳县" + }, + { + "code": "130629", + "value": "容城县", + "label": "容城县" + }, + { + "code": "130630", + "value": "涞源县", + "label": "涞源县" + }, + { + "code": "130631", + "value": "望都县", + "label": "望都县" + }, + { + "code": "130632", + "value": "安新县", + "label": "安新县" + }, + { + "code": "130633", + "value": "易县", + "label": "易县" + }, + { + "code": "130634", + "value": "曲阳县", + "label": "曲阳县" + }, + { + "code": "130635", + "value": "蠡县", + "label": "蠡县" + }, + { + "code": "130636", + "value": "顺平县", + "label": "顺平县" + }, + { + "code": "130637", + "value": "博野县", + "label": "博野县" + }, + { + "code": "130638", + "value": "雄县", + "label": "雄县" + }, + { + "code": "130681", + "value": "涿州市", + "label": "涿州市" + }, + { + "code": "130682", + "value": "定州市", + "label": "定州市" + }, + { + "code": "130683", + "value": "安国市", + "label": "安国市" + }, + { + "code": "130684", + "value": "高碑店市", + "label": "高碑店市" + } + ] + }, + { + "code": "130700", + "value": "张家口市", + "label": "张家口市", + "children": [ + { + "code": "130702", + "value": "桥东区", + "label": "桥东区" + }, + { + "code": "130703", + "value": "桥西区", + "label": "桥西区" + }, + { + "code": "130705", + "value": "宣化区", + "label": "宣化区" + }, + { + "code": "130706", + "value": "下花园区", + "label": "下花园区" + }, + { + "code": "130708", + "value": "万全区", + "label": "万全区" + }, + { + "code": "130709", + "value": "崇礼区", + "label": "崇礼区" + }, + { + "code": "130722", + "value": "张北县", + "label": "张北县" + }, + { + "code": "130723", + "value": "康保县", + "label": "康保县" + }, + { + "code": "130724", + "value": "沽源县", + "label": "沽源县" + }, + { + "code": "130725", + "value": "尚义县", + "label": "尚义县" + }, + { + "code": "130726", + "value": "蔚县", + "label": "蔚县" + }, + { + "code": "130727", + "value": "阳原县", + "label": "阳原县" + }, + { + "code": "130728", + "value": "怀安县", + "label": "怀安县" + }, + { + "code": "130730", + "value": "怀来县", + "label": "怀来县" + }, + { + "code": "130731", + "value": "涿鹿县", + "label": "涿鹿县" + }, + { + "code": "130732", + "value": "赤城县", + "label": "赤城县" + } + ] + }, + { + "code": "130800", + "value": "承德市", + "label": "承德市", + "children": [ + { + "code": "130802", + "value": "双桥区", + "label": "双桥区" + }, + { + "code": "130803", + "value": "双滦区", + "label": "双滦区" + }, + { + "code": "130804", + "value": "鹰手营子矿区", + "label": "鹰手营子矿区" + }, + { + "code": "130821", + "value": "承德县", + "label": "承德县" + }, + { + "code": "130822", + "value": "兴隆县", + "label": "兴隆县" + }, + { + "code": "130824", + "value": "滦平县", + "label": "滦平县" + }, + { + "code": "130825", + "value": "隆化县", + "label": "隆化县" + }, + { + "code": "130826", + "value": "丰宁满族自治县", + "label": "丰宁满族自治县" + }, + { + "code": "130827", + "value": "宽城满族自治县", + "label": "宽城满族自治县" + }, + { + "code": "130828", + "value": "围场满族蒙古族自治县", + "label": "围场满族蒙古族自治县" + }, + { + "code": "130881", + "value": "平泉市", + "label": "平泉市" + } + ] + }, + { + "code": "130900", + "value": "沧州市", + "label": "沧州市", + "children": [ + { + "code": "130902", + "value": "新华区", + "label": "新华区" + }, + { + "code": "130903", + "value": "运河区", + "label": "运河区" + }, + { + "code": "130921", + "value": "沧县", + "label": "沧县" + }, + { + "code": "130922", + "value": "青县", + "label": "青县" + }, + { + "code": "130923", + "value": "东光县", + "label": "东光县" + }, + { + "code": "130924", + "value": "海兴县", + "label": "海兴县" + }, + { + "code": "130925", + "value": "盐山县", + "label": "盐山县" + }, + { + "code": "130926", + "value": "肃宁县", + "label": "肃宁县" + }, + { + "code": "130927", + "value": "南皮县", + "label": "南皮县" + }, + { + "code": "130928", + "value": "吴桥县", + "label": "吴桥县" + }, + { + "code": "130929", + "value": "献县", + "label": "献县" + }, + { + "code": "130930", + "value": "孟村回族自治县", + "label": "孟村回族自治县" + }, + { + "code": "130981", + "value": "泊头市", + "label": "泊头市" + }, + { + "code": "130982", + "value": "任丘市", + "label": "任丘市" + }, + { + "code": "130983", + "value": "黄骅市", + "label": "黄骅市" + }, + { + "code": "130984", + "value": "河间市", + "label": "河间市" + } + ] + }, + { + "code": "131000", + "value": "廊坊市", + "label": "廊坊市", + "children": [ + { + "code": "131002", + "value": "安次区", + "label": "安次区" + }, + { + "code": "131003", + "value": "广阳区", + "label": "广阳区" + }, + { + "code": "131022", + "value": "固安县", + "label": "固安县" + }, + { + "code": "131023", + "value": "永清县", + "label": "永清县" + }, + { + "code": "131024", + "value": "香河县", + "label": "香河县" + }, + { + "code": "131025", + "value": "大城县", + "label": "大城县" + }, + { + "code": "131026", + "value": "文安县", + "label": "文安县" + }, + { + "code": "131028", + "value": "大厂回族自治县", + "label": "大厂回族自治县" + }, + { + "code": "131081", + "value": "霸州市", + "label": "霸州市" + }, + { + "code": "131082", + "value": "三河市", + "label": "三河市" + } + ] + }, + { + "code": "131100", + "value": "衡水市", + "label": "衡水市", + "children": [ + { + "code": "131102", + "value": "桃城区", + "label": "桃城区" + }, + { + "code": "131103", + "value": "冀州区", + "label": "冀州区" + }, + { + "code": "131121", + "value": "枣强县", + "label": "枣强县" + }, + { + "code": "131122", + "value": "武邑县", + "label": "武邑县" + }, + { + "code": "131123", + "value": "武强县", + "label": "武强县" + }, + { + "code": "131124", + "value": "饶阳县", + "label": "饶阳县" + }, + { + "code": "131125", + "value": "安平县", + "label": "安平县" + }, + { + "code": "131126", + "value": "故城县", + "label": "故城县" + }, + { + "code": "131127", + "value": "景县", + "label": "景县" + }, + { + "code": "131128", + "value": "阜城县", + "label": "阜城县" + }, + { + "code": "131182", + "value": "深州市", + "label": "深州市" + } + ] + } + ] + }, + { + "code": "140000", + "value": "山西省", + "label": "山西省", + "children": [ + { + "code": "140100", + "value": "太原市", + "label": "太原市", + "children": [ + { + "code": "140105", + "value": "小店区", + "label": "小店区" + }, + { + "code": "140106", + "value": "迎泽区", + "label": "迎泽区" + }, + { + "code": "140107", + "value": "杏花岭区", + "label": "杏花岭区" + }, + { + "code": "140108", + "value": "尖草坪区", + "label": "尖草坪区" + }, + { + "code": "140109", + "value": "万柏林区", + "label": "万柏林区" + }, + { + "code": "140110", + "value": "晋源区", + "label": "晋源区" + }, + { + "code": "140121", + "value": "清徐县", + "label": "清徐县" + }, + { + "code": "140122", + "value": "阳曲县", + "label": "阳曲县" + }, + { + "code": "140123", + "value": "娄烦县", + "label": "娄烦县" + }, + { + "code": "140181", + "value": "古交市", + "label": "古交市" + } + ] + }, + { + "code": "140200", + "value": "大同市", + "label": "大同市", + "children": [ + { + "code": "140212", + "value": "新荣区", + "label": "新荣区" + }, + { + "code": "140213", + "value": "平城区", + "label": "平城区" + }, + { + "code": "140214", + "value": "云冈区", + "label": "云冈区" + }, + { + "code": "140215", + "value": "云州区", + "label": "云州区" + }, + { + "code": "140221", + "value": "阳高县", + "label": "阳高县" + }, + { + "code": "140222", + "value": "天镇县", + "label": "天镇县" + }, + { + "code": "140223", + "value": "广灵县", + "label": "广灵县" + }, + { + "code": "140224", + "value": "灵丘县", + "label": "灵丘县" + }, + { + "code": "140225", + "value": "浑源县", + "label": "浑源县" + }, + { + "code": "140226", + "value": "左云县", + "label": "左云县" + } + ] + }, + { + "code": "140300", + "value": "阳泉市", + "label": "阳泉市", + "children": [ + { + "code": "140302", + "value": "城区", + "label": "城区" + }, + { + "code": "140303", + "value": "矿区", + "label": "矿区" + }, + { + "code": "140311", + "value": "郊区", + "label": "郊区" + }, + { + "code": "140321", + "value": "平定县", + "label": "平定县" + }, + { + "code": "140322", + "value": "盂县", + "label": "盂县" + } + ] + }, + { + "code": "140400", + "value": "长治市", + "label": "长治市", + "children": [ + { + "code": "140403", + "value": "潞州区", + "label": "潞州区" + }, + { + "code": "140404", + "value": "上党区", + "label": "上党区" + }, + { + "code": "140405", + "value": "屯留区", + "label": "屯留区" + }, + { + "code": "140406", + "value": "潞城区", + "label": "潞城区" + }, + { + "code": "140423", + "value": "襄垣县", + "label": "襄垣县" + }, + { + "code": "140425", + "value": "平顺县", + "label": "平顺县" + }, + { + "code": "140426", + "value": "黎城县", + "label": "黎城县" + }, + { + "code": "140427", + "value": "壶关县", + "label": "壶关县" + }, + { + "code": "140428", + "value": "长子县", + "label": "长子县" + }, + { + "code": "140429", + "value": "武乡县", + "label": "武乡县" + }, + { + "code": "140430", + "value": "沁县", + "label": "沁县" + }, + { + "code": "140431", + "value": "沁源县", + "label": "沁源县" + } + ] + }, + { + "code": "140500", + "value": "晋城市", + "label": "晋城市", + "children": [ + { + "code": "140502", + "value": "城区", + "label": "城区" + }, + { + "code": "140521", + "value": "沁水县", + "label": "沁水县" + }, + { + "code": "140522", + "value": "阳城县", + "label": "阳城县" + }, + { + "code": "140524", + "value": "陵川县", + "label": "陵川县" + }, + { + "code": "140525", + "value": "泽州县", + "label": "泽州县" + }, + { + "code": "140581", + "value": "高平市", + "label": "高平市" + } + ] + }, + { + "code": "140600", + "value": "朔州市", + "label": "朔州市", + "children": [ + { + "code": "140602", + "value": "朔城区", + "label": "朔城区" + }, + { + "code": "140603", + "value": "平鲁区", + "label": "平鲁区" + }, + { + "code": "140621", + "value": "山阴县", + "label": "山阴县" + }, + { + "code": "140622", + "value": "应县", + "label": "应县" + }, + { + "code": "140623", + "value": "右玉县", + "label": "右玉县" + }, + { + "code": "140681", + "value": "怀仁市", + "label": "怀仁市" + } + ] + }, + { + "code": "140700", + "value": "晋中市", + "label": "晋中市", + "children": [ + { + "code": "140702", + "value": "榆次区", + "label": "榆次区" + }, + { + "code": "140703", + "value": "太谷区", + "label": "太谷区" + }, + { + "code": "140721", + "value": "榆社县", + "label": "榆社县" + }, + { + "code": "140722", + "value": "左权县", + "label": "左权县" + }, + { + "code": "140723", + "value": "和顺县", + "label": "和顺县" + }, + { + "code": "140724", + "value": "昔阳县", + "label": "昔阳县" + }, + { + "code": "140725", + "value": "寿阳县", + "label": "寿阳县" + }, + { + "code": "140727", + "value": "祁县", + "label": "祁县" + }, + { + "code": "140728", + "value": "平遥县", + "label": "平遥县" + }, + { + "code": "140729", + "value": "灵石县", + "label": "灵石县" + }, + { + "code": "140781", + "value": "介休市", + "label": "介休市" + } + ] + }, + { + "code": "140800", + "value": "运城市", + "label": "运城市", + "children": [ + { + "code": "140802", + "value": "盐湖区", + "label": "盐湖区" + }, + { + "code": "140821", + "value": "临猗县", + "label": "临猗县" + }, + { + "code": "140822", + "value": "万荣县", + "label": "万荣县" + }, + { + "code": "140823", + "value": "闻喜县", + "label": "闻喜县" + }, + { + "code": "140824", + "value": "稷山县", + "label": "稷山县" + }, + { + "code": "140825", + "value": "新绛县", + "label": "新绛县" + }, + { + "code": "140826", + "value": "绛县", + "label": "绛县" + }, + { + "code": "140827", + "value": "垣曲县", + "label": "垣曲县" + }, + { + "code": "140828", + "value": "夏县", + "label": "夏县" + }, + { + "code": "140829", + "value": "平陆县", + "label": "平陆县" + }, + { + "code": "140830", + "value": "芮城县", + "label": "芮城县" + }, + { + "code": "140881", + "value": "永济市", + "label": "永济市" + }, + { + "code": "140882", + "value": "河津市", + "label": "河津市" + } + ] + }, + { + "code": "140900", + "value": "忻州市", + "label": "忻州市", + "children": [ + { + "code": "140902", + "value": "忻府区", + "label": "忻府区" + }, + { + "code": "140921", + "value": "定襄县", + "label": "定襄县" + }, + { + "code": "140922", + "value": "五台县", + "label": "五台县" + }, + { + "code": "140923", + "value": "代县", + "label": "代县" + }, + { + "code": "140924", + "value": "繁峙县", + "label": "繁峙县" + }, + { + "code": "140925", + "value": "宁武县", + "label": "宁武县" + }, + { + "code": "140926", + "value": "静乐县", + "label": "静乐县" + }, + { + "code": "140927", + "value": "神池县", + "label": "神池县" + }, + { + "code": "140928", + "value": "五寨县", + "label": "五寨县" + }, + { + "code": "140929", + "value": "岢岚县", + "label": "岢岚县" + }, + { + "code": "140930", + "value": "河曲县", + "label": "河曲县" + }, + { + "code": "140931", + "value": "保德县", + "label": "保德县" + }, + { + "code": "140932", + "value": "偏关县", + "label": "偏关县" + }, + { + "code": "140981", + "value": "原平市", + "label": "原平市" + } + ] + }, + { + "code": "141000", + "value": "临汾市", + "label": "临汾市", + "children": [ + { + "code": "141002", + "value": "尧都区", + "label": "尧都区" + }, + { + "code": "141021", + "value": "曲沃县", + "label": "曲沃县" + }, + { + "code": "141022", + "value": "翼城县", + "label": "翼城县" + }, + { + "code": "141023", + "value": "襄汾县", + "label": "襄汾县" + }, + { + "code": "141024", + "value": "洪洞县", + "label": "洪洞县" + }, + { + "code": "141025", + "value": "古县", + "label": "古县" + }, + { + "code": "141026", + "value": "安泽县", + "label": "安泽县" + }, + { + "code": "141027", + "value": "浮山县", + "label": "浮山县" + }, + { + "code": "141028", + "value": "吉县", + "label": "吉县" + }, + { + "code": "141029", + "value": "乡宁县", + "label": "乡宁县" + }, + { + "code": "141030", + "value": "大宁县", + "label": "大宁县" + }, + { + "code": "141031", + "value": "隰县", + "label": "隰县" + }, + { + "code": "141032", + "value": "永和县", + "label": "永和县" + }, + { + "code": "141033", + "value": "蒲县", + "label": "蒲县" + }, + { + "code": "141034", + "value": "汾西县", + "label": "汾西县" + }, + { + "code": "141081", + "value": "侯马市", + "label": "侯马市" + }, + { + "code": "141082", + "value": "霍州市", + "label": "霍州市" + } + ] + }, + { + "code": "141100", + "value": "吕梁市", + "label": "吕梁市", + "children": [ + { + "code": "141102", + "value": "离石区", + "label": "离石区" + }, + { + "code": "141121", + "value": "文水县", + "label": "文水县" + }, + { + "code": "141122", + "value": "交城县", + "label": "交城县" + }, + { + "code": "141123", + "value": "兴县", + "label": "兴县" + }, + { + "code": "141124", + "value": "临县", + "label": "临县" + }, + { + "code": "141125", + "value": "柳林县", + "label": "柳林县" + }, + { + "code": "141126", + "value": "石楼县", + "label": "石楼县" + }, + { + "code": "141127", + "value": "岚县", + "label": "岚县" + }, + { + "code": "141128", + "value": "方山县", + "label": "方山县" + }, + { + "code": "141129", + "value": "中阳县", + "label": "中阳县" + }, + { + "code": "141130", + "value": "交口县", + "label": "交口县" + }, + { + "code": "141181", + "value": "孝义市", + "label": "孝义市" + }, + { + "code": "141182", + "value": "汾阳市", + "label": "汾阳市" + } + ] + } + ] + }, + { + "code": "150000", + "value": "内蒙古自治区", + "label": "内蒙古自治区", + "children": [ + { + "code": "150100", + "value": "呼和浩特市", + "label": "呼和浩特市", + "children": [ + { + "code": "150102", + "value": "新城区", + "label": "新城区" + }, + { + "code": "150103", + "value": "回民区", + "label": "回民区" + }, + { + "code": "150104", + "value": "玉泉区", + "label": "玉泉区" + }, + { + "code": "150105", + "value": "赛罕区", + "label": "赛罕区" + }, + { + "code": "150121", + "value": "土默特左旗", + "label": "土默特左旗" + }, + { + "code": "150122", + "value": "托克托县", + "label": "托克托县" + }, + { + "code": "150123", + "value": "和林格尔县", + "label": "和林格尔县" + }, + { + "code": "150124", + "value": "清水河县", + "label": "清水河县" + }, + { + "code": "150125", + "value": "武川县", + "label": "武川县" + } + ] + }, + { + "code": "150200", + "value": "包头市", + "label": "包头市", + "children": [ + { + "code": "150202", + "value": "东河区", + "label": "东河区" + }, + { + "code": "150203", + "value": "昆都仑区", + "label": "昆都仑区" + }, + { + "code": "150204", + "value": "青山区", + "label": "青山区" + }, + { + "code": "150205", + "value": "石拐区", + "label": "石拐区" + }, + { + "code": "150206", + "value": "白云鄂博矿区", + "label": "白云鄂博矿区" + }, + { + "code": "150207", + "value": "九原区", + "label": "九原区" + }, + { + "code": "150221", + "value": "土默特右旗", + "label": "土默特右旗" + }, + { + "code": "150222", + "value": "固阳县", + "label": "固阳县" + }, + { + "code": "150223", + "value": "达尔罕茂明安联合旗", + "label": "达尔罕茂明安联合旗" + } + ] + }, + { + "code": "150300", + "value": "乌海市", + "label": "乌海市", + "children": [ + { + "code": "150302", + "value": "海勃湾区", + "label": "海勃湾区" + }, + { + "code": "150303", + "value": "海南区", + "label": "海南区" + }, + { + "code": "150304", + "value": "乌达区", + "label": "乌达区" + } + ] + }, + { + "code": "150400", + "value": "赤峰市", + "label": "赤峰市", + "children": [ + { + "code": "150402", + "value": "红山区", + "label": "红山区" + }, + { + "code": "150403", + "value": "元宝山区", + "label": "元宝山区" + }, + { + "code": "150404", + "value": "松山区", + "label": "松山区" + }, + { + "code": "150421", + "value": "阿鲁科尔沁旗", + "label": "阿鲁科尔沁旗" + }, + { + "code": "150422", + "value": "巴林左旗", + "label": "巴林左旗" + }, + { + "code": "150423", + "value": "巴林右旗", + "label": "巴林右旗" + }, + { + "code": "150424", + "value": "林西县", + "label": "林西县" + }, + { + "code": "150425", + "value": "克什克腾旗", + "label": "克什克腾旗" + }, + { + "code": "150426", + "value": "翁牛特旗", + "label": "翁牛特旗" + }, + { + "code": "150428", + "value": "喀喇沁旗", + "label": "喀喇沁旗" + }, + { + "code": "150429", + "value": "宁城县", + "label": "宁城县" + }, + { + "code": "150430", + "value": "敖汉旗", + "label": "敖汉旗" + } + ] + }, + { + "code": "150500", + "value": "通辽市", + "label": "通辽市", + "children": [ + { + "code": "150502", + "value": "科尔沁区", + "label": "科尔沁区" + }, + { + "code": "150521", + "value": "科尔沁左翼中旗", + "label": "科尔沁左翼中旗" + }, + { + "code": "150522", + "value": "科尔沁左翼后旗", + "label": "科尔沁左翼后旗" + }, + { + "code": "150523", + "value": "开鲁县", + "label": "开鲁县" + }, + { + "code": "150524", + "value": "库伦旗", + "label": "库伦旗" + }, + { + "code": "150525", + "value": "奈曼旗", + "label": "奈曼旗" + }, + { + "code": "150526", + "value": "扎鲁特旗", + "label": "扎鲁特旗" + }, + { + "code": "150581", + "value": "霍林郭勒市", + "label": "霍林郭勒市" + } + ] + }, + { + "code": "150600", + "value": "鄂尔多斯市", + "label": "鄂尔多斯市", + "children": [ + { + "code": "150602", + "value": "东胜区", + "label": "东胜区" + }, + { + "code": "150603", + "value": "康巴什区", + "label": "康巴什区" + }, + { + "code": "150621", + "value": "达拉特旗", + "label": "达拉特旗" + }, + { + "code": "150622", + "value": "准格尔旗", + "label": "准格尔旗" + }, + { + "code": "150623", + "value": "鄂托克前旗", + "label": "鄂托克前旗" + }, + { + "code": "150624", + "value": "鄂托克旗", + "label": "鄂托克旗" + }, + { + "code": "150625", + "value": "杭锦旗", + "label": "杭锦旗" + }, + { + "code": "150626", + "value": "乌审旗", + "label": "乌审旗" + }, + { + "code": "150627", + "value": "伊金霍洛旗", + "label": "伊金霍洛旗" + } + ] + }, + { + "code": "150700", + "value": "呼伦贝尔市", + "label": "呼伦贝尔市", + "children": [ + { + "code": "150702", + "value": "海拉尔区", + "label": "海拉尔区" + }, + { + "code": "150703", + "value": "扎赉诺尔区", + "label": "扎赉诺尔区" + }, + { + "code": "150721", + "value": "阿荣旗", + "label": "阿荣旗" + }, + { + "code": "150722", + "value": "莫力达瓦达斡尔族自治旗", + "label": "莫力达瓦达斡尔族自治旗" + }, + { + "code": "150723", + "value": "鄂伦春自治旗", + "label": "鄂伦春自治旗" + }, + { + "code": "150724", + "value": "鄂温克族自治旗", + "label": "鄂温克族自治旗" + }, + { + "code": "150725", + "value": "陈巴尔虎旗", + "label": "陈巴尔虎旗" + }, + { + "code": "150726", + "value": "新巴尔虎左旗", + "label": "新巴尔虎左旗" + }, + { + "code": "150727", + "value": "新巴尔虎右旗", + "label": "新巴尔虎右旗" + }, + { + "code": "150781", + "value": "满洲里市", + "label": "满洲里市" + }, + { + "code": "150782", + "value": "牙克石市", + "label": "牙克石市" + }, + { + "code": "150783", + "value": "扎兰屯市", + "label": "扎兰屯市" + }, + { + "code": "150784", + "value": "额尔古纳市", + "label": "额尔古纳市" + }, + { + "code": "150785", + "value": "根河市", + "label": "根河市" + } + ] + }, + { + "code": "150800", + "value": "巴彦淖尔市", + "label": "巴彦淖尔市", + "children": [ + { + "code": "150802", + "value": "临河区", + "label": "临河区" + }, + { + "code": "150821", + "value": "五原县", + "label": "五原县" + }, + { + "code": "150822", + "value": "磴口县", + "label": "磴口县" + }, + { + "code": "150823", + "value": "乌拉特前旗", + "label": "乌拉特前旗" + }, + { + "code": "150824", + "value": "乌拉特中旗", + "label": "乌拉特中旗" + }, + { + "code": "150825", + "value": "乌拉特后旗", + "label": "乌拉特后旗" + }, + { + "code": "150826", + "value": "杭锦后旗", + "label": "杭锦后旗" + } + ] + }, + { + "code": "150900", + "value": "乌兰察布市", + "label": "乌兰察布市", + "children": [ + { + "code": "150902", + "value": "集宁区", + "label": "集宁区" + }, + { + "code": "150921", + "value": "卓资县", + "label": "卓资县" + }, + { + "code": "150922", + "value": "化德县", + "label": "化德县" + }, + { + "code": "150923", + "value": "商都县", + "label": "商都县" + }, + { + "code": "150924", + "value": "兴和县", + "label": "兴和县" + }, + { + "code": "150925", + "value": "凉城县", + "label": "凉城县" + }, + { + "code": "150926", + "value": "察哈尔右翼前旗", + "label": "察哈尔右翼前旗" + }, + { + "code": "150927", + "value": "察哈尔右翼中旗", + "label": "察哈尔右翼中旗" + }, + { + "code": "150928", + "value": "察哈尔右翼后旗", + "label": "察哈尔右翼后旗" + }, + { + "code": "150929", + "value": "四子王旗", + "label": "四子王旗" + }, + { + "code": "150981", + "value": "丰镇市", + "label": "丰镇市" + } + ] + }, + { + "code": "152200", + "value": "兴安盟", + "label": "兴安盟", + "children": [ + { + "code": "152201", + "value": "乌兰浩特市", + "label": "乌兰浩特市" + }, + { + "code": "152202", + "value": "阿尔山市", + "label": "阿尔山市" + }, + { + "code": "152221", + "value": "科尔沁右翼前旗", + "label": "科尔沁右翼前旗" + }, + { + "code": "152222", + "value": "科尔沁右翼中旗", + "label": "科尔沁右翼中旗" + }, + { + "code": "152223", + "value": "扎赉特旗", + "label": "扎赉特旗" + }, + { + "code": "152224", + "value": "突泉县", + "label": "突泉县" + } + ] + }, + { + "code": "152500", + "value": "锡林郭勒盟", + "label": "锡林郭勒盟", + "children": [ + { + "code": "152501", + "value": "二连浩特市", + "label": "二连浩特市" + }, + { + "code": "152502", + "value": "锡林浩特市", + "label": "锡林浩特市" + }, + { + "code": "152522", + "value": "阿巴嘎旗", + "label": "阿巴嘎旗" + }, + { + "code": "152523", + "value": "苏尼特左旗", + "label": "苏尼特左旗" + }, + { + "code": "152524", + "value": "苏尼特右旗", + "label": "苏尼特右旗" + }, + { + "code": "152525", + "value": "东乌珠穆沁旗", + "label": "东乌珠穆沁旗" + }, + { + "code": "152526", + "value": "西乌珠穆沁旗", + "label": "西乌珠穆沁旗" + }, + { + "code": "152527", + "value": "太仆寺旗", + "label": "太仆寺旗" + }, + { + "code": "152528", + "value": "镶黄旗", + "label": "镶黄旗" + }, + { + "code": "152529", + "value": "正镶白旗", + "label": "正镶白旗" + }, + { + "code": "152530", + "value": "正蓝旗", + "label": "正蓝旗" + }, + { + "code": "152531", + "value": "多伦县", + "label": "多伦县" + } + ] + }, + { + "code": "152900", + "value": "阿拉善盟", + "label": "阿拉善盟", + "children": [ + { + "code": "152921", + "value": "阿拉善左旗", + "label": "阿拉善左旗" + }, + { + "code": "152922", + "value": "阿拉善右旗", + "label": "阿拉善右旗" + }, + { + "code": "152923", + "value": "额济纳旗", + "label": "额济纳旗" + } + ] + } + ] + }, + { + "code": "210000", + "value": "辽宁省", + "label": "辽宁省", + "children": [ + { + "code": "210100", + "value": "沈阳市", + "label": "沈阳市", + "children": [ + { + "code": "210102", + "value": "和平区", + "label": "和平区" + }, + { + "code": "210103", + "value": "沈河区", + "label": "沈河区" + }, + { + "code": "210104", + "value": "大东区", + "label": "大东区" + }, + { + "code": "210105", + "value": "皇姑区", + "label": "皇姑区" + }, + { + "code": "210106", + "value": "铁西区", + "label": "铁西区" + }, + { + "code": "210111", + "value": "苏家屯区", + "label": "苏家屯区" + }, + { + "code": "210112", + "value": "浑南区", + "label": "浑南区" + }, + { + "code": "210113", + "value": "沈北新区", + "label": "沈北新区" + }, + { + "code": "210114", + "value": "于洪区", + "label": "于洪区" + }, + { + "code": "210115", + "value": "辽中区", + "label": "辽中区" + }, + { + "code": "210123", + "value": "康平县", + "label": "康平县" + }, + { + "code": "210124", + "value": "法库县", + "label": "法库县" + }, + { + "code": "210181", + "value": "新民市", + "label": "新民市" + } + ] + }, + { + "code": "210200", + "value": "大连市", + "label": "大连市", + "children": [ + { + "code": "210202", + "value": "中山区", + "label": "中山区" + }, + { + "code": "210203", + "value": "西岗区", + "label": "西岗区" + }, + { + "code": "210204", + "value": "沙河口区", + "label": "沙河口区" + }, + { + "code": "210211", + "value": "甘井子区", + "label": "甘井子区" + }, + { + "code": "210212", + "value": "旅顺口区", + "label": "旅顺口区" + }, + { + "code": "210213", + "value": "金州区", + "label": "金州区" + }, + { + "code": "210214", + "value": "普兰店区", + "label": "普兰店区" + }, + { + "code": "210224", + "value": "长海县", + "label": "长海县" + }, + { + "code": "210281", + "value": "瓦房店市", + "label": "瓦房店市" + }, + { + "code": "210283", + "value": "庄河市", + "label": "庄河市" + } + ] + }, + { + "code": "210300", + "value": "鞍山市", + "label": "鞍山市", + "children": [ + { + "code": "210302", + "value": "铁东区", + "label": "铁东区" + }, + { + "code": "210303", + "value": "铁西区", + "label": "铁西区" + }, + { + "code": "210304", + "value": "立山区", + "label": "立山区" + }, + { + "code": "210311", + "value": "千山区", + "label": "千山区" + }, + { + "code": "210321", + "value": "台安县", + "label": "台安县" + }, + { + "code": "210323", + "value": "岫岩满族自治县", + "label": "岫岩满族自治县" + }, + { + "code": "210381", + "value": "海城市", + "label": "海城市" + } + ] + }, + { + "code": "210400", + "value": "抚顺市", + "label": "抚顺市", + "children": [ + { + "code": "210402", + "value": "新抚区", + "label": "新抚区" + }, + { + "code": "210403", + "value": "东洲区", + "label": "东洲区" + }, + { + "code": "210404", + "value": "望花区", + "label": "望花区" + }, + { + "code": "210411", + "value": "顺城区", + "label": "顺城区" + }, + { + "code": "210421", + "value": "抚顺县", + "label": "抚顺县" + }, + { + "code": "210422", + "value": "新宾满族自治县", + "label": "新宾满族自治县" + }, + { + "code": "210423", + "value": "清原满族自治县", + "label": "清原满族自治县" + } + ] + }, + { + "code": "210500", + "value": "本溪市", + "label": "本溪市", + "children": [ + { + "code": "210502", + "value": "平山区", + "label": "平山区" + }, + { + "code": "210503", + "value": "溪湖区", + "label": "溪湖区" + }, + { + "code": "210504", + "value": "明山区", + "label": "明山区" + }, + { + "code": "210505", + "value": "南芬区", + "label": "南芬区" + }, + { + "code": "210521", + "value": "本溪满族自治县", + "label": "本溪满族自治县" + }, + { + "code": "210522", + "value": "桓仁满族自治县", + "label": "桓仁满族自治县" + } + ] + }, + { + "code": "210600", + "value": "丹东市", + "label": "丹东市", + "children": [ + { + "code": "210602", + "value": "元宝区", + "label": "元宝区" + }, + { + "code": "210603", + "value": "振兴区", + "label": "振兴区" + }, + { + "code": "210604", + "value": "振安区", + "label": "振安区" + }, + { + "code": "210624", + "value": "宽甸满族自治县", + "label": "宽甸满族自治县" + }, + { + "code": "210681", + "value": "东港市", + "label": "东港市" + }, + { + "code": "210682", + "value": "凤城市", + "label": "凤城市" + } + ] + }, + { + "code": "210700", + "value": "锦州市", + "label": "锦州市", + "children": [ + { + "code": "210702", + "value": "古塔区", + "label": "古塔区" + }, + { + "code": "210703", + "value": "凌河区", + "label": "凌河区" + }, + { + "code": "210711", + "value": "太和区", + "label": "太和区" + }, + { + "code": "210726", + "value": "黑山县", + "label": "黑山县" + }, + { + "code": "210727", + "value": "义县", + "label": "义县" + }, + { + "code": "210781", + "value": "凌海市", + "label": "凌海市" + }, + { + "code": "210782", + "value": "北镇市", + "label": "北镇市" + } + ] + }, + { + "code": "210800", + "value": "营口市", + "label": "营口市", + "children": [ + { + "code": "210802", + "value": "站前区", + "label": "站前区" + }, + { + "code": "210803", + "value": "西市区", + "label": "西市区" + }, + { + "code": "210804", + "value": "鲅鱼圈区", + "label": "鲅鱼圈区" + }, + { + "code": "210811", + "value": "老边区", + "label": "老边区" + }, + { + "code": "210881", + "value": "盖州市", + "label": "盖州市" + }, + { + "code": "210882", + "value": "大石桥市", + "label": "大石桥市" + } + ] + }, + { + "code": "210900", + "value": "阜新市", + "label": "阜新市", + "children": [ + { + "code": "210902", + "value": "海州区", + "label": "海州区" + }, + { + "code": "210903", + "value": "新邱区", + "label": "新邱区" + }, + { + "code": "210904", + "value": "太平区", + "label": "太平区" + }, + { + "code": "210905", + "value": "清河门区", + "label": "清河门区" + }, + { + "code": "210911", + "value": "细河区", + "label": "细河区" + }, + { + "code": "210921", + "value": "阜新蒙古族自治县", + "label": "阜新蒙古族自治县" + }, + { + "code": "210922", + "value": "彰武县", + "label": "彰武县" + } + ] + }, + { + "code": "211000", + "value": "辽阳市", + "label": "辽阳市", + "children": [ + { + "code": "211002", + "value": "白塔区", + "label": "白塔区" + }, + { + "code": "211003", + "value": "文圣区", + "label": "文圣区" + }, + { + "code": "211004", + "value": "宏伟区", + "label": "宏伟区" + }, + { + "code": "211005", + "value": "弓长岭区", + "label": "弓长岭区" + }, + { + "code": "211011", + "value": "太子河区", + "label": "太子河区" + }, + { + "code": "211021", + "value": "辽阳县", + "label": "辽阳县" + }, + { + "code": "211081", + "value": "灯塔市", + "label": "灯塔市" + } + ] + }, + { + "code": "211100", + "value": "盘锦市", + "label": "盘锦市", + "children": [ + { + "code": "211102", + "value": "双台子区", + "label": "双台子区" + }, + { + "code": "211103", + "value": "兴隆台区", + "label": "兴隆台区" + }, + { + "code": "211104", + "value": "大洼区", + "label": "大洼区" + }, + { + "code": "211122", + "value": "盘山县", + "label": "盘山县" + } + ] + }, + { + "code": "211200", + "value": "铁岭市", + "label": "铁岭市", + "children": [ + { + "code": "211202", + "value": "银州区", + "label": "银州区" + }, + { + "code": "211204", + "value": "清河区", + "label": "清河区" + }, + { + "code": "211221", + "value": "铁岭县", + "label": "铁岭县" + }, + { + "code": "211223", + "value": "西丰县", + "label": "西丰县" + }, + { + "code": "211224", + "value": "昌图县", + "label": "昌图县" + }, + { + "code": "211281", + "value": "调兵山市", + "label": "调兵山市" + }, + { + "code": "211282", + "value": "开原市", + "label": "开原市" + } + ] + }, + { + "code": "211300", + "value": "朝阳市", + "label": "朝阳市", + "children": [ + { + "code": "211302", + "value": "双塔区", + "label": "双塔区" + }, + { + "code": "211303", + "value": "龙城区", + "label": "龙城区" + }, + { + "code": "211321", + "value": "朝阳县", + "label": "朝阳县" + }, + { + "code": "211322", + "value": "建平县", + "label": "建平县" + }, + { + "code": "211324", + "value": "喀喇沁左翼蒙古族自治县", + "label": "喀喇沁左翼蒙古族自治县" + }, + { + "code": "211381", + "value": "北票市", + "label": "北票市" + }, + { + "code": "211382", + "value": "凌源市", + "label": "凌源市" + } + ] + }, + { + "code": "211400", + "value": "葫芦岛市", + "label": "葫芦岛市", + "children": [ + { + "code": "211402", + "value": "连山区", + "label": "连山区" + }, + { + "code": "211403", + "value": "龙港区", + "label": "龙港区" + }, + { + "code": "211404", + "value": "南票区", + "label": "南票区" + }, + { + "code": "211421", + "value": "绥中县", + "label": "绥中县" + }, + { + "code": "211422", + "value": "建昌县", + "label": "建昌县" + }, + { + "code": "211481", + "value": "兴城市", + "label": "兴城市" + } + ] + } + ] + }, + { + "code": "220000", + "value": "吉林省", + "label": "吉林省", + "children": [ + { + "code": "220100", + "value": "长春市", + "label": "长春市", + "children": [ + { + "code": "220102", + "value": "南关区", + "label": "南关区" + }, + { + "code": "220103", + "value": "宽城区", + "label": "宽城区" + }, + { + "code": "220104", + "value": "朝阳区", + "label": "朝阳区" + }, + { + "code": "220105", + "value": "二道区", + "label": "二道区" + }, + { + "code": "220106", + "value": "绿园区", + "label": "绿园区" + }, + { + "code": "220112", + "value": "双阳区", + "label": "双阳区" + }, + { + "code": "220113", + "value": "九台区", + "label": "九台区" + }, + { + "code": "220122", + "value": "农安县", + "label": "农安县" + }, + { + "code": "220182", + "value": "榆树市", + "label": "榆树市" + }, + { + "code": "220183", + "value": "德惠市", + "label": "德惠市" + }, + { + "code": "220184", + "value": "公主岭市", + "label": "公主岭市" + } + ] + }, + { + "code": "220200", + "value": "吉林市", + "label": "吉林市", + "children": [ + { + "code": "220202", + "value": "昌邑区", + "label": "昌邑区" + }, + { + "code": "220203", + "value": "龙潭区", + "label": "龙潭区" + }, + { + "code": "220204", + "value": "船营区", + "label": "船营区" + }, + { + "code": "220211", + "value": "丰满区", + "label": "丰满区" + }, + { + "code": "220221", + "value": "永吉县", + "label": "永吉县" + }, + { + "code": "220281", + "value": "蛟河市", + "label": "蛟河市" + }, + { + "code": "220282", + "value": "桦甸市", + "label": "桦甸市" + }, + { + "code": "220283", + "value": "舒兰市", + "label": "舒兰市" + }, + { + "code": "220284", + "value": "磐石市", + "label": "磐石市" + } + ] + }, + { + "code": "220300", + "value": "四平市", + "label": "四平市", + "children": [ + { + "code": "220302", + "value": "铁西区", + "label": "铁西区" + }, + { + "code": "220303", + "value": "铁东区", + "label": "铁东区" + }, + { + "code": "220322", + "value": "梨树县", + "label": "梨树县" + }, + { + "code": "220323", + "value": "伊通满族自治县", + "label": "伊通满族自治县" + }, + { + "code": "220382", + "value": "双辽市", + "label": "双辽市" + } + ] + }, + { + "code": "220400", + "value": "辽源市", + "label": "辽源市", + "children": [ + { + "code": "220402", + "value": "龙山区", + "label": "龙山区" + }, + { + "code": "220403", + "value": "西安区", + "label": "西安区" + }, + { + "code": "220421", + "value": "东丰县", + "label": "东丰县" + }, + { + "code": "220422", + "value": "东辽县", + "label": "东辽县" + } + ] + }, + { + "code": "220500", + "value": "通化市", + "label": "通化市", + "children": [ + { + "code": "220502", + "value": "东昌区", + "label": "东昌区" + }, + { + "code": "220503", + "value": "二道江区", + "label": "二道江区" + }, + { + "code": "220521", + "value": "通化县", + "label": "通化县" + }, + { + "code": "220523", + "value": "辉南县", + "label": "辉南县" + }, + { + "code": "220524", + "value": "柳河县", + "label": "柳河县" + }, + { + "code": "220581", + "value": "梅河口市", + "label": "梅河口市" + }, + { + "code": "220582", + "value": "集安市", + "label": "集安市" + } + ] + }, + { + "code": "220600", + "value": "白山市", + "label": "白山市", + "children": [ + { + "code": "220602", + "value": "浑江区", + "label": "浑江区" + }, + { + "code": "220605", + "value": "江源区", + "label": "江源区" + }, + { + "code": "220621", + "value": "抚松县", + "label": "抚松县" + }, + { + "code": "220622", + "value": "靖宇县", + "label": "靖宇县" + }, + { + "code": "220623", + "value": "长白朝鲜族自治县", + "label": "长白朝鲜族自治县" + }, + { + "code": "220681", + "value": "临江市", + "label": "临江市" + } + ] + }, + { + "code": "220700", + "value": "松原市", + "label": "松原市", + "children": [ + { + "code": "220702", + "value": "宁江区", + "label": "宁江区" + }, + { + "code": "220721", + "value": "前郭尔罗斯蒙古族自治县", + "label": "前郭尔罗斯蒙古族自治县" + }, + { + "code": "220722", + "value": "长岭县", + "label": "长岭县" + }, + { + "code": "220723", + "value": "乾安县", + "label": "乾安县" + }, + { + "code": "220781", + "value": "扶余市", + "label": "扶余市" + } + ] + }, + { + "code": "220800", + "value": "白城市", + "label": "白城市", + "children": [ + { + "code": "220802", + "value": "洮北区", + "label": "洮北区" + }, + { + "code": "220821", + "value": "镇赉县", + "label": "镇赉县" + }, + { + "code": "220822", + "value": "通榆县", + "label": "通榆县" + }, + { + "code": "220881", + "value": "洮南市", + "label": "洮南市" + }, + { + "code": "220882", + "value": "大安市", + "label": "大安市" + } + ] + }, + { + "code": "222400", + "value": "延边朝鲜族自治州", + "label": "延边朝鲜族自治州", + "children": [ + { + "code": "222401", + "value": "延吉市", + "label": "延吉市" + }, + { + "code": "222402", + "value": "图们市", + "label": "图们市" + }, + { + "code": "222403", + "value": "敦化市", + "label": "敦化市" + }, + { + "code": "222404", + "value": "珲春市", + "label": "珲春市" + }, + { + "code": "222405", + "value": "龙井市", + "label": "龙井市" + }, + { + "code": "222406", + "value": "和龙市", + "label": "和龙市" + }, + { + "code": "222424", + "value": "汪清县", + "label": "汪清县" + }, + { + "code": "222426", + "value": "安图县", + "label": "安图县" + } + ] + } + ] + }, + { + "code": "230000", + "value": "黑龙江省", + "label": "黑龙江省", + "children": [ + { + "code": "230100", + "value": "哈尔滨市", + "label": "哈尔滨市", + "children": [ + { + "code": "230102", + "value": "道里区", + "label": "道里区" + }, + { + "code": "230103", + "value": "南岗区", + "label": "南岗区" + }, + { + "code": "230104", + "value": "道外区", + "label": "道外区" + }, + { + "code": "230108", + "value": "平房区", + "label": "平房区" + }, + { + "code": "230109", + "value": "松北区", + "label": "松北区" + }, + { + "code": "230110", + "value": "香坊区", + "label": "香坊区" + }, + { + "code": "230111", + "value": "呼兰区", + "label": "呼兰区" + }, + { + "code": "230112", + "value": "阿城区", + "label": "阿城区" + }, + { + "code": "230113", + "value": "双城区", + "label": "双城区" + }, + { + "code": "230123", + "value": "依兰县", + "label": "依兰县" + }, + { + "code": "230124", + "value": "方正县", + "label": "方正县" + }, + { + "code": "230125", + "value": "宾县", + "label": "宾县" + }, + { + "code": "230126", + "value": "巴彦县", + "label": "巴彦县" + }, + { + "code": "230127", + "value": "木兰县", + "label": "木兰县" + }, + { + "code": "230128", + "value": "通河县", + "label": "通河县" + }, + { + "code": "230129", + "value": "延寿县", + "label": "延寿县" + }, + { + "code": "230183", + "value": "尚志市", + "label": "尚志市" + }, + { + "code": "230184", + "value": "五常市", + "label": "五常市" + } + ] + }, + { + "code": "230200", + "value": "齐齐哈尔市", + "label": "齐齐哈尔市", + "children": [ + { + "code": "230202", + "value": "龙沙区", + "label": "龙沙区" + }, + { + "code": "230203", + "value": "建华区", + "label": "建华区" + }, + { + "code": "230204", + "value": "铁锋区", + "label": "铁锋区" + }, + { + "code": "230205", + "value": "昂昂溪区", + "label": "昂昂溪区" + }, + { + "code": "230206", + "value": "富拉尔基区", + "label": "富拉尔基区" + }, + { + "code": "230207", + "value": "碾子山区", + "label": "碾子山区" + }, + { + "code": "230208", + "value": "梅里斯达斡尔族区", + "label": "梅里斯达斡尔族区" + }, + { + "code": "230221", + "value": "龙江县", + "label": "龙江县" + }, + { + "code": "230223", + "value": "依安县", + "label": "依安县" + }, + { + "code": "230224", + "value": "泰来县", + "label": "泰来县" + }, + { + "code": "230225", + "value": "甘南县", + "label": "甘南县" + }, + { + "code": "230227", + "value": "富裕县", + "label": "富裕县" + }, + { + "code": "230229", + "value": "克山县", + "label": "克山县" + }, + { + "code": "230230", + "value": "克东县", + "label": "克东县" + }, + { + "code": "230231", + "value": "拜泉县", + "label": "拜泉县" + }, + { + "code": "230281", + "value": "讷河市", + "label": "讷河市" + } + ] + }, + { + "code": "230300", + "value": "鸡西市", + "label": "鸡西市", + "children": [ + { + "code": "230302", + "value": "鸡冠区", + "label": "鸡冠区" + }, + { + "code": "230303", + "value": "恒山区", + "label": "恒山区" + }, + { + "code": "230304", + "value": "滴道区", + "label": "滴道区" + }, + { + "code": "230305", + "value": "梨树区", + "label": "梨树区" + }, + { + "code": "230306", + "value": "城子河区", + "label": "城子河区" + }, + { + "code": "230307", + "value": "麻山区", + "label": "麻山区" + }, + { + "code": "230321", + "value": "鸡东县", + "label": "鸡东县" + }, + { + "code": "230381", + "value": "虎林市", + "label": "虎林市" + }, + { + "code": "230382", + "value": "密山市", + "label": "密山市" + } + ] + }, + { + "code": "230400", + "value": "鹤岗市", + "label": "鹤岗市", + "children": [ + { + "code": "230402", + "value": "向阳区", + "label": "向阳区" + }, + { + "code": "230403", + "value": "工农区", + "label": "工农区" + }, + { + "code": "230404", + "value": "南山区", + "label": "南山区" + }, + { + "code": "230405", + "value": "兴安区", + "label": "兴安区" + }, + { + "code": "230406", + "value": "东山区", + "label": "东山区" + }, + { + "code": "230407", + "value": "兴山区", + "label": "兴山区" + }, + { + "code": "230421", + "value": "萝北县", + "label": "萝北县" + }, + { + "code": "230422", + "value": "绥滨县", + "label": "绥滨县" + } + ] + }, + { + "code": "230500", + "value": "双鸭山市", + "label": "双鸭山市", + "children": [ + { + "code": "230502", + "value": "尖山区", + "label": "尖山区" + }, + { + "code": "230503", + "value": "岭东区", + "label": "岭东区" + }, + { + "code": "230505", + "value": "四方台区", + "label": "四方台区" + }, + { + "code": "230506", + "value": "宝山区", + "label": "宝山区" + }, + { + "code": "230521", + "value": "集贤县", + "label": "集贤县" + }, + { + "code": "230522", + "value": "友谊县", + "label": "友谊县" + }, + { + "code": "230523", + "value": "宝清县", + "label": "宝清县" + }, + { + "code": "230524", + "value": "饶河县", + "label": "饶河县" + } + ] + }, + { + "code": "230600", + "value": "大庆市", + "label": "大庆市", + "children": [ + { + "code": "230602", + "value": "萨尔图区", + "label": "萨尔图区" + }, + { + "code": "230603", + "value": "龙凤区", + "label": "龙凤区" + }, + { + "code": "230604", + "value": "让胡路区", + "label": "让胡路区" + }, + { + "code": "230605", + "value": "红岗区", + "label": "红岗区" + }, + { + "code": "230606", + "value": "大同区", + "label": "大同区" + }, + { + "code": "230621", + "value": "肇州县", + "label": "肇州县" + }, + { + "code": "230622", + "value": "肇源县", + "label": "肇源县" + }, + { + "code": "230623", + "value": "林甸县", + "label": "林甸县" + }, + { + "code": "230624", + "value": "杜尔伯特蒙古族自治县", + "label": "杜尔伯特蒙古族自治县" + } + ] + }, + { + "code": "230700", + "value": "伊春市", + "label": "伊春市", + "children": [ + { + "code": "230717", + "value": "伊美区", + "label": "伊美区" + }, + { + "code": "230718", + "value": "乌翠区", + "label": "乌翠区" + }, + { + "code": "230719", + "value": "友好区", + "label": "友好区" + }, + { + "code": "230722", + "value": "嘉荫县", + "label": "嘉荫县" + }, + { + "code": "230723", + "value": "汤旺县", + "label": "汤旺县" + }, + { + "code": "230724", + "value": "丰林县", + "label": "丰林县" + }, + { + "code": "230725", + "value": "大箐山县", + "label": "大箐山县" + }, + { + "code": "230726", + "value": "南岔县", + "label": "南岔县" + }, + { + "code": "230751", + "value": "金林区", + "label": "金林区" + }, + { + "code": "230781", + "value": "铁力市", + "label": "铁力市" + } + ] + }, + { + "code": "230800", + "value": "佳木斯市", + "label": "佳木斯市", + "children": [ + { + "code": "230803", + "value": "向阳区", + "label": "向阳区" + }, + { + "code": "230804", + "value": "前进区", + "label": "前进区" + }, + { + "code": "230805", + "value": "东风区", + "label": "东风区" + }, + { + "code": "230811", + "value": "郊区", + "label": "郊区" + }, + { + "code": "230822", + "value": "桦南县", + "label": "桦南县" + }, + { + "code": "230826", + "value": "桦川县", + "label": "桦川县" + }, + { + "code": "230828", + "value": "汤原县", + "label": "汤原县" + }, + { + "code": "230881", + "value": "同江市", + "label": "同江市" + }, + { + "code": "230882", + "value": "富锦市", + "label": "富锦市" + }, + { + "code": "230883", + "value": "抚远市", + "label": "抚远市" + } + ] + }, + { + "code": "230900", + "value": "七台河市", + "label": "七台河市", + "children": [ + { + "code": "230902", + "value": "新兴区", + "label": "新兴区" + }, + { + "code": "230903", + "value": "桃山区", + "label": "桃山区" + }, + { + "code": "230904", + "value": "茄子河区", + "label": "茄子河区" + }, + { + "code": "230921", + "value": "勃利县", + "label": "勃利县" + } + ] + }, + { + "code": "231000", + "value": "牡丹江市", + "label": "牡丹江市", + "children": [ + { + "code": "231002", + "value": "东安区", + "label": "东安区" + }, + { + "code": "231003", + "value": "阳明区", + "label": "阳明区" + }, + { + "code": "231004", + "value": "爱民区", + "label": "爱民区" + }, + { + "code": "231005", + "value": "西安区", + "label": "西安区" + }, + { + "code": "231025", + "value": "林口县", + "label": "林口县" + }, + { + "code": "231081", + "value": "绥芬河市", + "label": "绥芬河市" + }, + { + "code": "231083", + "value": "海林市", + "label": "海林市" + }, + { + "code": "231084", + "value": "宁安市", + "label": "宁安市" + }, + { + "code": "231085", + "value": "穆棱市", + "label": "穆棱市" + }, + { + "code": "231086", + "value": "东宁市", + "label": "东宁市" + } + ] + }, + { + "code": "231100", + "value": "黑河市", + "label": "黑河市", + "children": [ + { + "code": "231102", + "value": "爱辉区", + "label": "爱辉区" + }, + { + "code": "231123", + "value": "逊克县", + "label": "逊克县" + }, + { + "code": "231124", + "value": "孙吴县", + "label": "孙吴县" + }, + { + "code": "231181", + "value": "北安市", + "label": "北安市" + }, + { + "code": "231182", + "value": "五大连池市", + "label": "五大连池市" + }, + { + "code": "231183", + "value": "嫩江市", + "label": "嫩江市" + } + ] + }, + { + "code": "231200", + "value": "绥化市", + "label": "绥化市", + "children": [ + { + "code": "231202", + "value": "北林区", + "label": "北林区" + }, + { + "code": "231221", + "value": "望奎县", + "label": "望奎县" + }, + { + "code": "231222", + "value": "兰西县", + "label": "兰西县" + }, + { + "code": "231223", + "value": "青冈县", + "label": "青冈县" + }, + { + "code": "231224", + "value": "庆安县", + "label": "庆安县" + }, + { + "code": "231225", + "value": "明水县", + "label": "明水县" + }, + { + "code": "231226", + "value": "绥棱县", + "label": "绥棱县" + }, + { + "code": "231281", + "value": "安达市", + "label": "安达市" + }, + { + "code": "231282", + "value": "肇东市", + "label": "肇东市" + }, + { + "code": "231283", + "value": "海伦市", + "label": "海伦市" + } + ] + }, + { + "code": "232700", + "value": "大兴安岭地区", + "label": "大兴安岭地区", + "children": [ + { + "code": "232701", + "value": "漠河市", + "label": "漠河市" + }, + { + "code": "232721", + "value": "呼玛县", + "label": "呼玛县" + }, + { + "code": "232722", + "value": "塔河县", + "label": "塔河县" + } + ] + } + ] + }, + { + "code": "310000", + "label": "上海市", + "value": "上海市", + "children": [ + { + "code": "310100", + "label": "上海市", + "value": "上海市", + "children": [ + { "code": "310101", "label": "黄浦区", "value": "黄浦区" }, + { "code": "310104", "label": "徐汇区", "value": "徐汇区" }, + { "code": "310105", "label": "长宁区", "value": "长宁区" }, + { "code": "310106", "label": "静安区", "value": "静安区" }, + { "code": "310107", "label": "普陀区", "value": "普陀区" }, + { "code": "310109", "label": "虹口区", "value": "虹口区" }, + { "code": "310110", "label": "杨浦区", "value": "杨浦区" }, + { "code": "310112", "label": "浦东新区", "value": "浦东新区" }, + { "code": "310113", "label": "闵行区", "value": "闵行区" }, + { "code": "310114", "label": "宝山区", "value": "宝山区" }, + { "code": "310115", "label": "嘉定区", "value": "嘉定区" }, + { "code": "310116", "label": "南汇区", "value": "南汇区" }, + { "code": "310117", "label": "奉贤区", "value": "奉贤区" }, + { "code": "310118", "label": "青浦区", "value": "青浦区" }, + { "code": "310120", "label": "崇明区", "value": "崇明区" } + ] + } + ] + }, + + { + "code": "320000", + "value": "江苏省", + "label": "江苏省", + "children": [ + { + "code": "320100", + "value": "南京市", + "label": "南京市", + "children": [ + { + "code": "320102", + "value": "玄武区", + "label": "玄武区" + }, + { + "code": "320104", + "value": "秦淮区", + "label": "秦淮区" + }, + { + "code": "320105", + "value": "建邺区", + "label": "建邺区" + }, + { + "code": "320106", + "value": "鼓楼区", + "label": "鼓楼区" + }, + { + "code": "320111", + "value": "浦口区", + "label": "浦口区" + }, + { + "code": "320113", + "value": "栖霞区", + "label": "栖霞区" + }, + { + "code": "320114", + "value": "雨花台区", + "label": "雨花台区" + }, + { + "code": "320115", + "value": "江宁区", + "label": "江宁区" + }, + { + "code": "320116", + "value": "六合区", + "label": "六合区" + }, + { + "code": "320117", + "value": "溧水区", + "label": "溧水区" + }, + { + "code": "320118", + "value": "高淳区", + "label": "高淳区" + } + ] + }, + { + "code": "320200", + "value": "无锡市", + "label": "无锡市", + "children": [ + { + "code": "320205", + "value": "锡山区", + "label": "锡山区" + }, + { + "code": "320206", + "value": "惠山区", + "label": "惠山区" + }, + { + "code": "320211", + "value": "滨湖区", + "label": "滨湖区" + }, + { + "code": "320213", + "value": "梁溪区", + "label": "梁溪区" + }, + { + "code": "320214", + "value": "新吴区", + "label": "新吴区" + }, + { + "code": "320281", + "value": "江阴市", + "label": "江阴市" + }, + { + "code": "320282", + "value": "宜兴市", + "label": "宜兴市" + } + ] + }, + { + "code": "320300", + "value": "徐州市", + "label": "徐州市", + "children": [ + { + "code": "320302", + "value": "鼓楼区", + "label": "鼓楼区" + }, + { + "code": "320303", + "value": "云龙区", + "label": "云龙区" + }, + { + "code": "320305", + "value": "贾汪区", + "label": "贾汪区" + }, + { + "code": "320311", + "value": "泉山区", + "label": "泉山区" + }, + { + "code": "320312", + "value": "铜山区", + "label": "铜山区" + }, + { + "code": "320321", + "value": "丰县", + "label": "丰县" + }, + { + "code": "320322", + "value": "沛县", + "label": "沛县" + }, + { + "code": "320324", + "value": "睢宁县", + "label": "睢宁县" + }, + { + "code": "320381", + "value": "新沂市", + "label": "新沂市" + }, + { + "code": "320382", + "value": "邳州市", + "label": "邳州市" + } + ] + }, + { + "code": "320400", + "value": "常州市", + "label": "常州市", + "children": [ + { + "code": "320402", + "value": "天宁区", + "label": "天宁区" + }, + { + "code": "320404", + "value": "钟楼区", + "label": "钟楼区" + }, + { + "code": "320411", + "value": "新北区", + "label": "新北区" + }, + { + "code": "320412", + "value": "武进区", + "label": "武进区" + }, + { + "code": "320413", + "value": "金坛区", + "label": "金坛区" + }, + { + "code": "320481", + "value": "溧阳市", + "label": "溧阳市" + } + ] + }, + { + "code": "320500", + "value": "苏州市", + "label": "苏州市", + "children": [ + { + "code": "320505", + "value": "虎丘区", + "label": "虎丘区" + }, + { + "code": "320506", + "value": "吴中区", + "label": "吴中区" + }, + { + "code": "320507", + "value": "相城区", + "label": "相城区" + }, + { + "code": "320508", + "value": "姑苏区", + "label": "姑苏区" + }, + { + "code": "320509", + "value": "吴江区", + "label": "吴江区" + }, + { + "code": "320581", + "value": "常熟市", + "label": "常熟市" + }, + { + "code": "320582", + "value": "张家港市", + "label": "张家港市" + }, + { + "code": "320583", + "value": "昆山市", + "label": "昆山市" + }, + { + "code": "320585", + "value": "太仓市", + "label": "太仓市" + } + ] + }, + { + "code": "320600", + "value": "南通市", + "label": "南通市", + "children": [ + { + "code": "320602", + "value": "崇川区", + "label": "崇川区" + }, + { + "code": "320611", + "value": "港闸区", + "label": "港闸区" + }, + { + "code": "320612", + "value": "通州区", + "label": "通州区" + }, + { + "code": "320623", + "value": "如东县", + "label": "如东县" + }, + { + "code": "320681", + "value": "启东市", + "label": "启东市" + }, + { + "code": "320682", + "value": "如皋市", + "label": "如皋市" + }, + { + "code": "320684", + "value": "海门市", + "label": "海门市" + }, + { + "code": "320685", + "value": "海安市", + "label": "海安市" + } + ] + }, + { + "code": "320700", + "value": "连云港市", + "label": "连云港市", + "children": [ + { + "code": "320703", + "value": "连云区", + "label": "连云区" + }, + { + "code": "320706", + "value": "海州区", + "label": "海州区" + }, + { + "code": "320707", + "value": "赣榆区", + "label": "赣榆区" + }, + { + "code": "320722", + "value": "东海县", + "label": "东海县" + }, + { + "code": "320723", + "value": "灌云县", + "label": "灌云县" + }, + { + "code": "320724", + "value": "灌南县", + "label": "灌南县" + } + ] + }, + { + "code": "320800", + "value": "淮安市", + "label": "淮安市", + "children": [ + { + "code": "320803", + "value": "淮安区", + "label": "淮安区" + }, + { + "code": "320804", + "value": "淮阴区", + "label": "淮阴区" + }, + { + "code": "320812", + "value": "清江浦区", + "label": "清江浦区" + }, + { + "code": "320813", + "value": "洪泽区", + "label": "洪泽区" + }, + { + "code": "320826", + "value": "涟水县", + "label": "涟水县" + }, + { + "code": "320830", + "value": "盱眙县", + "label": "盱眙县" + }, + { + "code": "320831", + "value": "金湖县", + "label": "金湖县" + } + ] + }, + { + "code": "320900", + "value": "盐城市", + "label": "盐城市", + "children": [ + { + "code": "320902", + "value": "亭湖区", + "label": "亭湖区" + }, + { + "code": "320903", + "value": "盐都区", + "label": "盐都区" + }, + { + "code": "320904", + "value": "大丰区", + "label": "大丰区" + }, + { + "code": "320921", + "value": "响水县", + "label": "响水县" + }, + { + "code": "320922", + "value": "滨海县", + "label": "滨海县" + }, + { + "code": "320923", + "value": "阜宁县", + "label": "阜宁县" + }, + { + "code": "320924", + "value": "射阳县", + "label": "射阳县" + }, + { + "code": "320925", + "value": "建湖县", + "label": "建湖县" + }, + { + "code": "320981", + "value": "东台市", + "label": "东台市" + } + ] + }, + { + "code": "321000", + "value": "扬州市", + "label": "扬州市", + "children": [ + { + "code": "321002", + "value": "广陵区", + "label": "广陵区" + }, + { + "code": "321003", + "value": "邗江区", + "label": "邗江区" + }, + { + "code": "321012", + "value": "江都区", + "label": "江都区" + }, + { + "code": "321023", + "value": "宝应县", + "label": "宝应县" + }, + { + "code": "321081", + "value": "仪征市", + "label": "仪征市" + }, + { + "code": "321084", + "value": "高邮市", + "label": "高邮市" + } + ] + }, + { + "code": "321100", + "value": "镇江市", + "label": "镇江市", + "children": [ + { + "code": "321102", + "value": "京口区", + "label": "京口区" + }, + { + "code": "321111", + "value": "润州区", + "label": "润州区" + }, + { + "code": "321112", + "value": "丹徒区", + "label": "丹徒区" + }, + { + "code": "321181", + "value": "丹阳市", + "label": "丹阳市" + }, + { + "code": "321182", + "value": "扬中市", + "label": "扬中市" + }, + { + "code": "321183", + "value": "句容市", + "label": "句容市" + } + ] + }, + { + "code": "321200", + "value": "泰州市", + "label": "泰州市", + "children": [ + { + "code": "321202", + "value": "海陵区", + "label": "海陵区" + }, + { + "code": "321203", + "value": "高港区", + "label": "高港区" + }, + { + "code": "321204", + "value": "姜堰区", + "label": "姜堰区" + }, + { + "code": "321281", + "value": "兴化市", + "label": "兴化市" + }, + { + "code": "321282", + "value": "靖江市", + "label": "靖江市" + }, + { + "code": "321283", + "value": "泰兴市", + "label": "泰兴市" + } + ] + }, + { + "code": "321300", + "value": "宿迁市", + "label": "宿迁市", + "children": [ + { + "code": "321302", + "value": "宿城区", + "label": "宿城区" + }, + { + "code": "321311", + "value": "宿豫区", + "label": "宿豫区" + }, + { + "code": "321322", + "value": "沭阳县", + "label": "沭阳县" + }, + { + "code": "321323", + "value": "泗阳县", + "label": "泗阳县" + }, + { + "code": "321324", + "value": "泗洪县", + "label": "泗洪县" + } + ] + } + ] + }, + { + "code": "330000", + "value": "浙江省", + "label": "浙江省", + "children": [ + { + "code": "330100", + "value": "杭州市", + "label": "杭州市", + "children": [ + { + "code": "330102", + "value": "上城区", + "label": "上城区" + }, + { + "code": "330103", + "value": "下城区", + "label": "下城区" + }, + { + "code": "330104", + "value": "江干区", + "label": "江干区" + }, + { + "code": "330105", + "value": "拱墅区", + "label": "拱墅区" + }, + { + "code": "330106", + "value": "西湖区", + "label": "西湖区" + }, + { + "code": "330108", + "value": "滨江区", + "label": "滨江区" + }, + { + "code": "330109", + "value": "萧山区", + "label": "萧山区" + }, + { + "code": "330110", + "value": "余杭区", + "label": "余杭区" + }, + { + "code": "330111", + "value": "富阳区", + "label": "富阳区" + }, + { + "code": "330112", + "value": "临安区", + "label": "临安区" + }, + { + "code": "330122", + "value": "桐庐县", + "label": "桐庐县" + }, + { + "code": "330127", + "value": "淳安县", + "label": "淳安县" + }, + { + "code": "330182", + "value": "建德市", + "label": "建德市" + } + ] + }, + { + "code": "330200", + "value": "宁波市", + "label": "宁波市", + "children": [ + { + "code": "330203", + "value": "海曙区", + "label": "海曙区" + }, + { + "code": "330205", + "value": "江北区", + "label": "江北区" + }, + { + "code": "330206", + "value": "北仑区", + "label": "北仑区" + }, + { + "code": "330211", + "value": "镇海区", + "label": "镇海区" + }, + { + "code": "330212", + "value": "鄞州区", + "label": "鄞州区" + }, + { + "code": "330213", + "value": "奉化区", + "label": "奉化区" + }, + { + "code": "330225", + "value": "象山县", + "label": "象山县" + }, + { + "code": "330226", + "value": "宁海县", + "label": "宁海县" + }, + { + "code": "330281", + "value": "余姚市", + "label": "余姚市" + }, + { + "code": "330282", + "value": "慈溪市", + "label": "慈溪市" + } + ] + }, + { + "code": "330300", + "value": "温州市", + "label": "温州市", + "children": [ + { + "code": "330302", + "value": "鹿城区", + "label": "鹿城区" + }, + { + "code": "330303", + "value": "龙湾区", + "label": "龙湾区" + }, + { + "code": "330304", + "value": "瓯海区", + "label": "瓯海区" + }, + { + "code": "330305", + "value": "洞头区", + "label": "洞头区" + }, + { + "code": "330324", + "value": "永嘉县", + "label": "永嘉县" + }, + { + "code": "330326", + "value": "平阳县", + "label": "平阳县" + }, + { + "code": "330327", + "value": "苍南县", + "label": "苍南县" + }, + { + "code": "330328", + "value": "文成县", + "label": "文成县" + }, + { + "code": "330329", + "value": "泰顺县", + "label": "泰顺县" + }, + { + "code": "330381", + "value": "瑞安市", + "label": "瑞安市" + }, + { + "code": "330382", + "value": "乐清市", + "label": "乐清市" + }, + { + "code": "330383", + "value": "龙港市", + "label": "龙港市" + } + ] + }, + { + "code": "330400", + "value": "嘉兴市", + "label": "嘉兴市", + "children": [ + { + "code": "330402", + "value": "南湖区", + "label": "南湖区" + }, + { + "code": "330411", + "value": "秀洲区", + "label": "秀洲区" + }, + { + "code": "330421", + "value": "嘉善县", + "label": "嘉善县" + }, + { + "code": "330424", + "value": "海盐县", + "label": "海盐县" + }, + { + "code": "330481", + "value": "海宁市", + "label": "海宁市" + }, + { + "code": "330482", + "value": "平湖市", + "label": "平湖市" + }, + { + "code": "330483", + "value": "桐乡市", + "label": "桐乡市" + } + ] + }, + { + "code": "330500", + "value": "湖州市", + "label": "湖州市", + "children": [ + { + "code": "330502", + "value": "吴兴区", + "label": "吴兴区" + }, + { + "code": "330503", + "value": "南浔区", + "label": "南浔区" + }, + { + "code": "330521", + "value": "德清县", + "label": "德清县" + }, + { + "code": "330522", + "value": "长兴县", + "label": "长兴县" + }, + { + "code": "330523", + "value": "安吉县", + "label": "安吉县" + } + ] + }, + { + "code": "330600", + "value": "绍兴市", + "label": "绍兴市", + "children": [ + { + "code": "330602", + "value": "越城区", + "label": "越城区" + }, + { + "code": "330603", + "value": "柯桥区", + "label": "柯桥区" + }, + { + "code": "330604", + "value": "上虞区", + "label": "上虞区" + }, + { + "code": "330624", + "value": "新昌县", + "label": "新昌县" + }, + { + "code": "330681", + "value": "诸暨市", + "label": "诸暨市" + }, + { + "code": "330683", + "value": "嵊州市", + "label": "嵊州市" + } + ] + }, + { + "code": "330700", + "value": "金华市", + "label": "金华市", + "children": [ + { + "code": "330702", + "value": "婺城区", + "label": "婺城区" + }, + { + "code": "330703", + "value": "金东区", + "label": "金东区" + }, + { + "code": "330723", + "value": "武义县", + "label": "武义县" + }, + { + "code": "330726", + "value": "浦江县", + "label": "浦江县" + }, + { + "code": "330727", + "value": "磐安县", + "label": "磐安县" + }, + { + "code": "330781", + "value": "兰溪市", + "label": "兰溪市" + }, + { + "code": "330782", + "value": "义乌市", + "label": "义乌市" + }, + { + "code": "330783", + "value": "东阳市", + "label": "东阳市" + }, + { + "code": "330784", + "value": "永康市", + "label": "永康市" + } + ] + }, + { + "code": "330800", + "value": "衢州市", + "label": "衢州市", + "children": [ + { + "code": "330802", + "value": "柯城区", + "label": "柯城区" + }, + { + "code": "330803", + "value": "衢江区", + "label": "衢江区" + }, + { + "code": "330822", + "value": "常山县", + "label": "常山县" + }, + { + "code": "330824", + "value": "开化县", + "label": "开化县" + }, + { + "code": "330825", + "value": "龙游县", + "label": "龙游县" + }, + { + "code": "330881", + "value": "江山市", + "label": "江山市" + } + ] + }, + { + "code": "330900", + "value": "舟山市", + "label": "舟山市", + "children": [ + { + "code": "330902", + "value": "定海区", + "label": "定海区" + }, + { + "code": "330903", + "value": "普陀区", + "label": "普陀区" + }, + { + "code": "330921", + "value": "岱山县", + "label": "岱山县" + }, + { + "code": "330922", + "value": "嵊泗县", + "label": "嵊泗县" + } + ] + }, + { + "code": "331000", + "value": "台州市", + "label": "台州市", + "children": [ + { + "code": "331002", + "value": "椒江区", + "label": "椒江区" + }, + { + "code": "331003", + "value": "黄岩区", + "label": "黄岩区" + }, + { + "code": "331004", + "value": "路桥区", + "label": "路桥区" + }, + { + "code": "331022", + "value": "三门县", + "label": "三门县" + }, + { + "code": "331023", + "value": "天台县", + "label": "天台县" + }, + { + "code": "331024", + "value": "仙居县", + "label": "仙居县" + }, + { + "code": "331081", + "value": "温岭市", + "label": "温岭市" + }, + { + "code": "331082", + "value": "临海市", + "label": "临海市" + }, + { + "code": "331083", + "value": "玉环市", + "label": "玉环市" + } + ] + }, + { + "code": "331100", + "value": "丽水市", + "label": "丽水市", + "children": [ + { + "code": "331102", + "value": "莲都区", + "label": "莲都区" + }, + { + "code": "331121", + "value": "青田县", + "label": "青田县" + }, + { + "code": "331122", + "value": "缙云县", + "label": "缙云县" + }, + { + "code": "331123", + "value": "遂昌县", + "label": "遂昌县" + }, + { + "code": "331124", + "value": "松阳县", + "label": "松阳县" + }, + { + "code": "331125", + "value": "云和县", + "label": "云和县" + }, + { + "code": "331126", + "value": "庆元县", + "label": "庆元县" + }, + { + "code": "331127", + "value": "景宁畲族自治县", + "label": "景宁畲族自治县" + }, + { + "code": "331181", + "value": "龙泉市", + "label": "龙泉市" + } + ] + } + ] + }, + { + "code": "340000", + "value": "安徽省", + "label": "安徽省", + "children": [ + { + "code": "340100", + "value": "合肥市", + "label": "合肥市", + "children": [ + { + "code": "340102", + "value": "瑶海区", + "label": "瑶海区" + }, + { + "code": "340103", + "value": "庐阳区", + "label": "庐阳区" + }, + { + "code": "340104", + "value": "蜀山区", + "label": "蜀山区" + }, + { + "code": "340111", + "value": "包河区", + "label": "包河区" + }, + { + "code": "340121", + "value": "长丰县", + "label": "长丰县" + }, + { + "code": "340122", + "value": "肥东县", + "label": "肥东县" + }, + { + "code": "340123", + "value": "肥西县", + "label": "肥西县" + }, + { + "code": "340124", + "value": "庐江县", + "label": "庐江县" + }, + { + "code": "340181", + "value": "巢湖市", + "label": "巢湖市" + } + ] + }, + { + "code": "340200", + "value": "芜湖市", + "label": "芜湖市", + "children": [ + { + "code": "340202", + "value": "镜湖区", + "label": "镜湖区" + }, + { + "code": "340203", + "value": "弋江区", + "label": "弋江区" + }, + { + "code": "340207", + "value": "鸠江区", + "label": "鸠江区" + }, + { + "code": "340208", + "value": "三山区", + "label": "三山区" + }, + { + "code": "340221", + "value": "芜湖县", + "label": "芜湖县" + }, + { + "code": "340222", + "value": "繁昌县", + "label": "繁昌县" + }, + { + "code": "340223", + "value": "南陵县", + "label": "南陵县" + }, + { + "code": "340281", + "value": "无为市", + "label": "无为市" + } + ] + }, + { + "code": "340300", + "value": "蚌埠市", + "label": "蚌埠市", + "children": [ + { + "code": "340302", + "value": "龙子湖区", + "label": "龙子湖区" + }, + { + "code": "340303", + "value": "蚌山区", + "label": "蚌山区" + }, + { + "code": "340304", + "value": "禹会区", + "label": "禹会区" + }, + { + "code": "340311", + "value": "淮上区", + "label": "淮上区" + }, + { + "code": "340321", + "value": "怀远县", + "label": "怀远县" + }, + { + "code": "340322", + "value": "五河县", + "label": "五河县" + }, + { + "code": "340323", + "value": "固镇县", + "label": "固镇县" + } + ] + }, + { + "code": "340400", + "value": "淮南市", + "label": "淮南市", + "children": [ + { + "code": "340402", + "value": "大通区", + "label": "大通区" + }, + { + "code": "340403", + "value": "田家庵区", + "label": "田家庵区" + }, + { + "code": "340404", + "value": "谢家集区", + "label": "谢家集区" + }, + { + "code": "340405", + "value": "八公山区", + "label": "八公山区" + }, + { + "code": "340406", + "value": "潘集区", + "label": "潘集区" + }, + { + "code": "340421", + "value": "凤台县", + "label": "凤台县" + }, + { + "code": "340422", + "value": "寿县", + "label": "寿县" + } + ] + }, + { + "code": "340500", + "value": "马鞍山市", + "label": "马鞍山市", + "children": [ + { + "code": "340503", + "value": "花山区", + "label": "花山区" + }, + { + "code": "340504", + "value": "雨山区", + "label": "雨山区" + }, + { + "code": "340506", + "value": "博望区", + "label": "博望区" + }, + { + "code": "340521", + "value": "当涂县", + "label": "当涂县" + }, + { + "code": "340522", + "value": "含山县", + "label": "含山县" + }, + { + "code": "340523", + "value": "和县", + "label": "和县" + } + ] + }, + { + "code": "340600", + "value": "淮北市", + "label": "淮北市", + "children": [ + { + "code": "340602", + "value": "杜集区", + "label": "杜集区" + }, + { + "code": "340603", + "value": "相山区", + "label": "相山区" + }, + { + "code": "340604", + "value": "烈山区", + "label": "烈山区" + }, + { + "code": "340621", + "value": "濉溪县", + "label": "濉溪县" + } + ] + }, + { + "code": "340700", + "value": "铜陵市", + "label": "铜陵市", + "children": [ + { + "code": "340705", + "value": "铜官区", + "label": "铜官区" + }, + { + "code": "340706", + "value": "义安区", + "label": "义安区" + }, + { + "code": "340711", + "value": "郊区", + "label": "郊区" + }, + { + "code": "340722", + "value": "枞阳县", + "label": "枞阳县" + } + ] + }, + { + "code": "340800", + "value": "安庆市", + "label": "安庆市", + "children": [ + { + "code": "340802", + "value": "迎江区", + "label": "迎江区" + }, + { + "code": "340803", + "value": "大观区", + "label": "大观区" + }, + { + "code": "340811", + "value": "宜秀区", + "label": "宜秀区" + }, + { + "code": "340822", + "value": "怀宁县", + "label": "怀宁县" + }, + { + "code": "340825", + "value": "太湖县", + "label": "太湖县" + }, + { + "code": "340826", + "value": "宿松县", + "label": "宿松县" + }, + { + "code": "340827", + "value": "望江县", + "label": "望江县" + }, + { + "code": "340828", + "value": "岳西县", + "label": "岳西县" + }, + { + "code": "340881", + "value": "桐城市", + "label": "桐城市" + }, + { + "code": "340882", + "value": "潜山市", + "label": "潜山市" + } + ] + }, + { + "code": "341000", + "value": "黄山市", + "label": "黄山市", + "children": [ + { + "code": "341002", + "value": "屯溪区", + "label": "屯溪区" + }, + { + "code": "341003", + "value": "黄山区", + "label": "黄山区" + }, + { + "code": "341004", + "value": "徽州区", + "label": "徽州区" + }, + { + "code": "341021", + "value": "歙县", + "label": "歙县" + }, + { + "code": "341022", + "value": "休宁县", + "label": "休宁县" + }, + { + "code": "341023", + "value": "黟县", + "label": "黟县" + }, + { + "code": "341024", + "value": "祁门县", + "label": "祁门县" + } + ] + }, + { + "code": "341100", + "value": "滁州市", + "label": "滁州市", + "children": [ + { + "code": "341102", + "value": "琅琊区", + "label": "琅琊区" + }, + { + "code": "341103", + "value": "南谯区", + "label": "南谯区" + }, + { + "code": "341122", + "value": "来安县", + "label": "来安县" + }, + { + "code": "341124", + "value": "全椒县", + "label": "全椒县" + }, + { + "code": "341125", + "value": "定远县", + "label": "定远县" + }, + { + "code": "341126", + "value": "凤阳县", + "label": "凤阳县" + }, + { + "code": "341181", + "value": "天长市", + "label": "天长市" + }, + { + "code": "341182", + "value": "明光市", + "label": "明光市" + } + ] + }, + { + "code": "341200", + "value": "阜阳市", + "label": "阜阳市", + "children": [ + { + "code": "341202", + "value": "颍州区", + "label": "颍州区" + }, + { + "code": "341203", + "value": "颍东区", + "label": "颍东区" + }, + { + "code": "341204", + "value": "颍泉区", + "label": "颍泉区" + }, + { + "code": "341221", + "value": "临泉县", + "label": "临泉县" + }, + { + "code": "341222", + "value": "太和县", + "label": "太和县" + }, + { + "code": "341225", + "value": "阜南县", + "label": "阜南县" + }, + { + "code": "341226", + "value": "颍上县", + "label": "颍上县" + }, + { + "code": "341282", + "value": "界首市", + "label": "界首市" + } + ] + }, + { + "code": "341300", + "value": "宿州市", + "label": "宿州市", + "children": [ + { + "code": "341302", + "value": "埇桥区", + "label": "埇桥区" + }, + { + "code": "341321", + "value": "砀山县", + "label": "砀山县" + }, + { + "code": "341322", + "value": "萧县", + "label": "萧县" + }, + { + "code": "341323", + "value": "灵璧县", + "label": "灵璧县" + }, + { + "code": "341324", + "value": "泗县", + "label": "泗县" + } + ] + }, + { + "code": "341500", + "value": "六安市", + "label": "六安市", + "children": [ + { + "code": "341502", + "value": "金安区", + "label": "金安区" + }, + { + "code": "341503", + "value": "裕安区", + "label": "裕安区" + }, + { + "code": "341504", + "value": "叶集区", + "label": "叶集区" + }, + { + "code": "341522", + "value": "霍邱县", + "label": "霍邱县" + }, + { + "code": "341523", + "value": "舒城县", + "label": "舒城县" + }, + { + "code": "341524", + "value": "金寨县", + "label": "金寨县" + }, + { + "code": "341525", + "value": "霍山县", + "label": "霍山县" + } + ] + }, + { + "code": "341600", + "value": "亳州市", + "label": "亳州市", + "children": [ + { + "code": "341602", + "value": "谯城区", + "label": "谯城区" + }, + { + "code": "341621", + "value": "涡阳县", + "label": "涡阳县" + }, + { + "code": "341622", + "value": "蒙城县", + "label": "蒙城县" + }, + { + "code": "341623", + "value": "利辛县", + "label": "利辛县" + } + ] + }, + { + "code": "341700", + "value": "池州市", + "label": "池州市", + "children": [ + { + "code": "341702", + "value": "贵池区", + "label": "贵池区" + }, + { + "code": "341721", + "value": "东至县", + "label": "东至县" + }, + { + "code": "341722", + "value": "石台县", + "label": "石台县" + }, + { + "code": "341723", + "value": "青阳县", + "label": "青阳县" + } + ] + }, + { + "code": "341800", + "value": "宣城市", + "label": "宣城市", + "children": [ + { + "code": "341802", + "value": "宣州区", + "label": "宣州区" + }, + { + "code": "341821", + "value": "郎溪县", + "label": "郎溪县" + }, + { + "code": "341823", + "value": "泾县", + "label": "泾县" + }, + { + "code": "341824", + "value": "绩溪县", + "label": "绩溪县" + }, + { + "code": "341825", + "value": "旌德县", + "label": "旌德县" + }, + { + "code": "341881", + "value": "宁国市", + "label": "宁国市" + }, + { + "code": "341882", + "value": "广德市", + "label": "广德市" + } + ] + } + ] + }, + { + "code": "350000", + "value": "福建省", + "label": "福建省", + "children": [ + { + "code": "350100", + "value": "福州市", + "label": "福州市", + "children": [ + { + "code": "350102", + "value": "鼓楼区", + "label": "鼓楼区" + }, + { + "code": "350103", + "value": "台江区", + "label": "台江区" + }, + { + "code": "350104", + "value": "仓山区", + "label": "仓山区" + }, + { + "code": "350105", + "value": "马尾区", + "label": "马尾区" + }, + { + "code": "350111", + "value": "晋安区", + "label": "晋安区" + }, + { + "code": "350112", + "value": "长乐区", + "label": "长乐区" + }, + { + "code": "350121", + "value": "闽侯县", + "label": "闽侯县" + }, + { + "code": "350122", + "value": "连江县", + "label": "连江县" + }, + { + "code": "350123", + "value": "罗源县", + "label": "罗源县" + }, + { + "code": "350124", + "value": "闽清县", + "label": "闽清县" + }, + { + "code": "350125", + "value": "永泰县", + "label": "永泰县" + }, + { + "code": "350128", + "value": "平潭县", + "label": "平潭县" + }, + { + "code": "350181", + "value": "福清市", + "label": "福清市" + } + ] + }, + { + "code": "350200", + "value": "厦门市", + "label": "厦门市", + "children": [ + { + "code": "350203", + "value": "思明区", + "label": "思明区" + }, + { + "code": "350205", + "value": "海沧区", + "label": "海沧区" + }, + { + "code": "350206", + "value": "湖里区", + "label": "湖里区" + }, + { + "code": "350211", + "value": "集美区", + "label": "集美区" + }, + { + "code": "350212", + "value": "同安区", + "label": "同安区" + }, + { + "code": "350213", + "value": "翔安区", + "label": "翔安区" + } + ] + }, + { + "code": "350300", + "value": "莆田市", + "label": "莆田市", + "children": [ + { + "code": "350302", + "value": "城厢区", + "label": "城厢区" + }, + { + "code": "350303", + "value": "涵江区", + "label": "涵江区" + }, + { + "code": "350304", + "value": "荔城区", + "label": "荔城区" + }, + { + "code": "350305", + "value": "秀屿区", + "label": "秀屿区" + }, + { + "code": "350322", + "value": "仙游县", + "label": "仙游县" + } + ] + }, + { + "code": "350400", + "value": "三明市", + "label": "三明市", + "children": [ + { + "code": "350402", + "value": "梅列区", + "label": "梅列区" + }, + { + "code": "350403", + "value": "三元区", + "label": "三元区" + }, + { + "code": "350421", + "value": "明溪县", + "label": "明溪县" + }, + { + "code": "350423", + "value": "清流县", + "label": "清流县" + }, + { + "code": "350424", + "value": "宁化县", + "label": "宁化县" + }, + { + "code": "350425", + "value": "大田县", + "label": "大田县" + }, + { + "code": "350426", + "value": "尤溪县", + "label": "尤溪县" + }, + { + "code": "350427", + "value": "沙县", + "label": "沙县" + }, + { + "code": "350428", + "value": "将乐县", + "label": "将乐县" + }, + { + "code": "350429", + "value": "泰宁县", + "label": "泰宁县" + }, + { + "code": "350430", + "value": "建宁县", + "label": "建宁县" + }, + { + "code": "350481", + "value": "永安市", + "label": "永安市" + } + ] + }, + { + "code": "350500", + "value": "泉州市", + "label": "泉州市", + "children": [ + { + "code": "350502", + "value": "鲤城区", + "label": "鲤城区" + }, + { + "code": "350503", + "value": "丰泽区", + "label": "丰泽区" + }, + { + "code": "350504", + "value": "洛江区", + "label": "洛江区" + }, + { + "code": "350505", + "value": "泉港区", + "label": "泉港区" + }, + { + "code": "350521", + "value": "惠安县", + "label": "惠安县" + }, + { + "code": "350524", + "value": "安溪县", + "label": "安溪县" + }, + { + "code": "350525", + "value": "永春县", + "label": "永春县" + }, + { + "code": "350526", + "value": "德化县", + "label": "德化县" + }, + { + "code": "350527", + "value": "金门县", + "label": "金门县" + }, + { + "code": "350581", + "value": "石狮市", + "label": "石狮市" + }, + { + "code": "350582", + "value": "晋江市", + "label": "晋江市" + }, + { + "code": "350583", + "value": "南安市", + "label": "南安市" + } + ] + }, + { + "code": "350600", + "value": "漳州市", + "label": "漳州市", + "children": [ + { + "code": "350602", + "value": "芗城区", + "label": "芗城区" + }, + { + "code": "350603", + "value": "龙文区", + "label": "龙文区" + }, + { + "code": "350622", + "value": "云霄县", + "label": "云霄县" + }, + { + "code": "350623", + "value": "漳浦县", + "label": "漳浦县" + }, + { + "code": "350624", + "value": "诏安县", + "label": "诏安县" + }, + { + "code": "350625", + "value": "长泰县", + "label": "长泰县" + }, + { + "code": "350626", + "value": "东山县", + "label": "东山县" + }, + { + "code": "350627", + "value": "南靖县", + "label": "南靖县" + }, + { + "code": "350628", + "value": "平和县", + "label": "平和县" + }, + { + "code": "350629", + "value": "华安县", + "label": "华安县" + }, + { + "code": "350681", + "value": "龙海市", + "label": "龙海市" + } + ] + }, + { + "code": "350700", + "value": "南平市", + "label": "南平市", + "children": [ + { + "code": "350702", + "value": "延平区", + "label": "延平区" + }, + { + "code": "350703", + "value": "建阳区", + "label": "建阳区" + }, + { + "code": "350721", + "value": "顺昌县", + "label": "顺昌县" + }, + { + "code": "350722", + "value": "浦城县", + "label": "浦城县" + }, + { + "code": "350723", + "value": "光泽县", + "label": "光泽县" + }, + { + "code": "350724", + "value": "松溪县", + "label": "松溪县" + }, + { + "code": "350725", + "value": "政和县", + "label": "政和县" + }, + { + "code": "350781", + "value": "邵武市", + "label": "邵武市" + }, + { + "code": "350782", + "value": "武夷山市", + "label": "武夷山市" + }, + { + "code": "350783", + "value": "建瓯市", + "label": "建瓯市" + } + ] + }, + { + "code": "350800", + "value": "龙岩市", + "label": "龙岩市", + "children": [ + { + "code": "350802", + "value": "新罗区", + "label": "新罗区" + }, + { + "code": "350803", + "value": "永定区", + "label": "永定区" + }, + { + "code": "350821", + "value": "长汀县", + "label": "长汀县" + }, + { + "code": "350823", + "value": "上杭县", + "label": "上杭县" + }, + { + "code": "350824", + "value": "武平县", + "label": "武平县" + }, + { + "code": "350825", + "value": "连城县", + "label": "连城县" + }, + { + "code": "350881", + "value": "漳平市", + "label": "漳平市" + } + ] + }, + { + "code": "350900", + "value": "宁德市", + "label": "宁德市", + "children": [ + { + "code": "350902", + "value": "蕉城区", + "label": "蕉城区" + }, + { + "code": "350921", + "value": "霞浦县", + "label": "霞浦县" + }, + { + "code": "350922", + "value": "古田县", + "label": "古田县" + }, + { + "code": "350923", + "value": "屏南县", + "label": "屏南县" + }, + { + "code": "350924", + "value": "寿宁县", + "label": "寿宁县" + }, + { + "code": "350925", + "value": "周宁县", + "label": "周宁县" + }, + { + "code": "350926", + "value": "柘荣县", + "label": "柘荣县" + }, + { + "code": "350981", + "value": "福安市", + "label": "福安市" + }, + { + "code": "350982", + "value": "福鼎市", + "label": "福鼎市" + } + ] + } + ] + }, + { + "code": "360000", + "value": "江西省", + "label": "江西省", + "children": [ + { + "code": "360100", + "value": "南昌市", + "label": "南昌市", + "children": [ + { + "code": "360102", + "value": "东湖区", + "label": "东湖区" + }, + { + "code": "360103", + "value": "西湖区", + "label": "西湖区" + }, + { + "code": "360104", + "value": "青云谱区", + "label": "青云谱区" + }, + { + "code": "360111", + "value": "青山湖区", + "label": "青山湖区" + }, + { + "code": "360112", + "value": "新建区", + "label": "新建区" + }, + { + "code": "360113", + "value": "红谷滩区", + "label": "红谷滩区" + }, + { + "code": "360121", + "value": "南昌县", + "label": "南昌县" + }, + { + "code": "360123", + "value": "安义县", + "label": "安义县" + }, + { + "code": "360124", + "value": "进贤县", + "label": "进贤县" + } + ] + }, + { + "code": "360200", + "value": "景德镇市", + "label": "景德镇市", + "children": [ + { + "code": "360202", + "value": "昌江区", + "label": "昌江区" + }, + { + "code": "360203", + "value": "珠山区", + "label": "珠山区" + }, + { + "code": "360222", + "value": "浮梁县", + "label": "浮梁县" + }, + { + "code": "360281", + "value": "乐平市", + "label": "乐平市" + } + ] + }, + { + "code": "360300", + "value": "萍乡市", + "label": "萍乡市", + "children": [ + { + "code": "360302", + "value": "安源区", + "label": "安源区" + }, + { + "code": "360313", + "value": "湘东区", + "label": "湘东区" + }, + { + "code": "360321", + "value": "莲花县", + "label": "莲花县" + }, + { + "code": "360322", + "value": "上栗县", + "label": "上栗县" + }, + { + "code": "360323", + "value": "芦溪县", + "label": "芦溪县" + } + ] + }, + { + "code": "360400", + "value": "九江市", + "label": "九江市", + "children": [ + { + "code": "360402", + "value": "濂溪区", + "label": "濂溪区" + }, + { + "code": "360403", + "value": "浔阳区", + "label": "浔阳区" + }, + { + "code": "360404", + "value": "柴桑区", + "label": "柴桑区" + }, + { + "code": "360423", + "value": "武宁县", + "label": "武宁县" + }, + { + "code": "360424", + "value": "修水县", + "label": "修水县" + }, + { + "code": "360425", + "value": "永修县", + "label": "永修县" + }, + { + "code": "360426", + "value": "德安县", + "label": "德安县" + }, + { + "code": "360428", + "value": "都昌县", + "label": "都昌县" + }, + { + "code": "360429", + "value": "湖口县", + "label": "湖口县" + }, + { + "code": "360430", + "value": "彭泽县", + "label": "彭泽县" + }, + { + "code": "360481", + "value": "瑞昌市", + "label": "瑞昌市" + }, + { + "code": "360482", + "value": "共青城市", + "label": "共青城市" + }, + { + "code": "360483", + "value": "庐山市", + "label": "庐山市" + } + ] + }, + { + "code": "360500", + "value": "新余市", + "label": "新余市", + "children": [ + { + "code": "360502", + "value": "渝水区", + "label": "渝水区" + }, + { + "code": "360521", + "value": "分宜县", + "label": "分宜县" + } + ] + }, + { + "code": "360600", + "value": "鹰潭市", + "label": "鹰潭市", + "children": [ + { + "code": "360602", + "value": "月湖区", + "label": "月湖区" + }, + { + "code": "360603", + "value": "余江区", + "label": "余江区" + }, + { + "code": "360681", + "value": "贵溪市", + "label": "贵溪市" + } + ] + }, + { + "code": "360700", + "value": "赣州市", + "label": "赣州市", + "children": [ + { + "code": "360702", + "value": "章贡区", + "label": "章贡区" + }, + { + "code": "360703", + "value": "南康区", + "label": "南康区" + }, + { + "code": "360704", + "value": "赣县区", + "label": "赣县区" + }, + { + "code": "360722", + "value": "信丰县", + "label": "信丰县" + }, + { + "code": "360723", + "value": "大余县", + "label": "大余县" + }, + { + "code": "360724", + "value": "上犹县", + "label": "上犹县" + }, + { + "code": "360725", + "value": "崇义县", + "label": "崇义县" + }, + { + "code": "360726", + "value": "安远县", + "label": "安远县" + }, + { + "code": "360728", + "value": "定南县", + "label": "定南县" + }, + { + "code": "360729", + "value": "全南县", + "label": "全南县" + }, + { + "code": "360730", + "value": "宁都县", + "label": "宁都县" + }, + { + "code": "360731", + "value": "于都县", + "label": "于都县" + }, + { + "code": "360732", + "value": "兴国县", + "label": "兴国县" + }, + { + "code": "360733", + "value": "会昌县", + "label": "会昌县" + }, + { + "code": "360734", + "value": "寻乌县", + "label": "寻乌县" + }, + { + "code": "360735", + "value": "石城县", + "label": "石城县" + }, + { + "code": "360781", + "value": "瑞金市", + "label": "瑞金市" + }, + { + "code": "360783", + "value": "龙南市", + "label": "龙南市" + } + ] + }, + { + "code": "360800", + "value": "吉安市", + "label": "吉安市", + "children": [ + { + "code": "360802", + "value": "吉州区", + "label": "吉州区" + }, + { + "code": "360803", + "value": "青原区", + "label": "青原区" + }, + { + "code": "360821", + "value": "吉安县", + "label": "吉安县" + }, + { + "code": "360822", + "value": "吉水县", + "label": "吉水县" + }, + { + "code": "360823", + "value": "峡江县", + "label": "峡江县" + }, + { + "code": "360824", + "value": "新干县", + "label": "新干县" + }, + { + "code": "360825", + "value": "永丰县", + "label": "永丰县" + }, + { + "code": "360826", + "value": "泰和县", + "label": "泰和县" + }, + { + "code": "360827", + "value": "遂川县", + "label": "遂川县" + }, + { + "code": "360828", + "value": "万安县", + "label": "万安县" + }, + { + "code": "360829", + "value": "安福县", + "label": "安福县" + }, + { + "code": "360830", + "value": "永新县", + "label": "永新县" + }, + { + "code": "360881", + "value": "井冈山市", + "label": "井冈山市" + } + ] + }, + { + "code": "360900", + "value": "宜春市", + "label": "宜春市", + "children": [ + { + "code": "360902", + "value": "袁州区", + "label": "袁州区" + }, + { + "code": "360921", + "value": "奉新县", + "label": "奉新县" + }, + { + "code": "360922", + "value": "万载县", + "label": "万载县" + }, + { + "code": "360923", + "value": "上高县", + "label": "上高县" + }, + { + "code": "360924", + "value": "宜丰县", + "label": "宜丰县" + }, + { + "code": "360925", + "value": "靖安县", + "label": "靖安县" + }, + { + "code": "360926", + "value": "铜鼓县", + "label": "铜鼓县" + }, + { + "code": "360981", + "value": "丰城市", + "label": "丰城市" + }, + { + "code": "360982", + "value": "樟树市", + "label": "樟树市" + }, + { + "code": "360983", + "value": "高安市", + "label": "高安市" + } + ] + }, + { + "code": "361000", + "value": "抚州市", + "label": "抚州市", + "children": [ + { + "code": "361002", + "value": "临川区", + "label": "临川区" + }, + { + "code": "361003", + "value": "东乡区", + "label": "东乡区" + }, + { + "code": "361021", + "value": "南城县", + "label": "南城县" + }, + { + "code": "361022", + "value": "黎川县", + "label": "黎川县" + }, + { + "code": "361023", + "value": "南丰县", + "label": "南丰县" + }, + { + "code": "361024", + "value": "崇仁县", + "label": "崇仁县" + }, + { + "code": "361025", + "value": "乐安县", + "label": "乐安县" + }, + { + "code": "361026", + "value": "宜黄县", + "label": "宜黄县" + }, + { + "code": "361027", + "value": "金溪县", + "label": "金溪县" + }, + { + "code": "361028", + "value": "资溪县", + "label": "资溪县" + }, + { + "code": "361030", + "value": "广昌县", + "label": "广昌县" + } + ] + }, + { + "code": "361100", + "value": "上饶市", + "label": "上饶市", + "children": [ + { + "code": "361102", + "value": "信州区", + "label": "信州区" + }, + { + "code": "361103", + "value": "广丰区", + "label": "广丰区" + }, + { + "code": "361104", + "value": "广信区", + "label": "广信区" + }, + { + "code": "361123", + "value": "玉山县", + "label": "玉山县" + }, + { + "code": "361124", + "value": "铅山县", + "label": "铅山县" + }, + { + "code": "361125", + "value": "横峰县", + "label": "横峰县" + }, + { + "code": "361126", + "value": "弋阳县", + "label": "弋阳县" + }, + { + "code": "361127", + "value": "余干县", + "label": "余干县" + }, + { + "code": "361128", + "value": "鄱阳县", + "label": "鄱阳县" + }, + { + "code": "361129", + "value": "万年县", + "label": "万年县" + }, + { + "code": "361130", + "value": "婺源县", + "label": "婺源县" + }, + { + "code": "361181", + "value": "德兴市", + "label": "德兴市" + } + ] + } + ] + }, + { + "code": "370000", + "value": "山东省", + "label": "山东省", + "children": [ + { + "code": "370100", + "value": "济南市", + "label": "济南市", + "children": [ + { + "code": "370102", + "value": "历下区", + "label": "历下区" + }, + { + "code": "370103", + "value": "市中区", + "label": "市中区" + }, + { + "code": "370104", + "value": "槐荫区", + "label": "槐荫区" + }, + { + "code": "370105", + "value": "天桥区", + "label": "天桥区" + }, + { + "code": "370112", + "value": "历城区", + "label": "历城区" + }, + { + "code": "370113", + "value": "长清区", + "label": "长清区" + }, + { + "code": "370114", + "value": "章丘区", + "label": "章丘区" + }, + { + "code": "370115", + "value": "济阳区", + "label": "济阳区" + }, + { + "code": "370116", + "value": "莱芜区", + "label": "莱芜区" + }, + { + "code": "370117", + "value": "钢城区", + "label": "钢城区" + }, + { + "code": "370124", + "value": "平阴县", + "label": "平阴县" + }, + { + "code": "370126", + "value": "商河县", + "label": "商河县" + } + ] + }, + { + "code": "370200", + "value": "青岛市", + "label": "青岛市", + "children": [ + { + "code": "370202", + "value": "市南区", + "label": "市南区" + }, + { + "code": "370203", + "value": "市北区", + "label": "市北区" + }, + { + "code": "370211", + "value": "黄岛区", + "label": "黄岛区" + }, + { + "code": "370212", + "value": "崂山区", + "label": "崂山区" + }, + { + "code": "370213", + "value": "李沧区", + "label": "李沧区" + }, + { + "code": "370214", + "value": "城阳区", + "label": "城阳区" + }, + { + "code": "370215", + "value": "即墨区", + "label": "即墨区" + }, + { + "code": "370281", + "value": "胶州市", + "label": "胶州市" + }, + { + "code": "370283", + "value": "平度市", + "label": "平度市" + }, + { + "code": "370285", + "value": "莱西市", + "label": "莱西市" + } + ] + }, + { + "code": "370300", + "value": "淄博市", + "label": "淄博市", + "children": [ + { + "code": "370302", + "value": "淄川区", + "label": "淄川区" + }, + { + "code": "370303", + "value": "张店区", + "label": "张店区" + }, + { + "code": "370304", + "value": "博山区", + "label": "博山区" + }, + { + "code": "370305", + "value": "临淄区", + "label": "临淄区" + }, + { + "code": "370306", + "value": "周村区", + "label": "周村区" + }, + { + "code": "370321", + "value": "桓台县", + "label": "桓台县" + }, + { + "code": "370322", + "value": "高青县", + "label": "高青县" + }, + { + "code": "370323", + "value": "沂源县", + "label": "沂源县" + } + ] + }, + { + "code": "370400", + "value": "枣庄市", + "label": "枣庄市", + "children": [ + { + "code": "370402", + "value": "市中区", + "label": "市中区" + }, + { + "code": "370403", + "value": "薛城区", + "label": "薛城区" + }, + { + "code": "370404", + "value": "峄城区", + "label": "峄城区" + }, + { + "code": "370405", + "value": "台儿庄区", + "label": "台儿庄区" + }, + { + "code": "370406", + "value": "山亭区", + "label": "山亭区" + }, + { + "code": "370481", + "value": "滕州市", + "label": "滕州市" + } + ] + }, + { + "code": "370500", + "value": "东营市", + "label": "东营市", + "children": [ + { + "code": "370502", + "value": "东营区", + "label": "东营区" + }, + { + "code": "370503", + "value": "河口区", + "label": "河口区" + }, + { + "code": "370505", + "value": "垦利区", + "label": "垦利区" + }, + { + "code": "370522", + "value": "利津县", + "label": "利津县" + }, + { + "code": "370523", + "value": "广饶县", + "label": "广饶县" + } + ] + }, + { + "code": "370600", + "value": "烟台市", + "label": "烟台市", + "children": [ + { + "code": "370602", + "value": "芝罘区", + "label": "芝罘区" + }, + { + "code": "370611", + "value": "福山区", + "label": "福山区" + }, + { + "code": "370612", + "value": "牟平区", + "label": "牟平区" + }, + { + "code": "370613", + "value": "莱山区", + "label": "莱山区" + }, + { + "code": "370614", + "value": "蓬莱区", + "label": "蓬莱区" + }, + { + "code": "370681", + "value": "龙口市", + "label": "龙口市" + }, + { + "code": "370682", + "value": "莱阳市", + "label": "莱阳市" + }, + { + "code": "370683", + "value": "莱州市", + "label": "莱州市" + }, + { + "code": "370685", + "value": "招远市", + "label": "招远市" + }, + { + "code": "370686", + "value": "栖霞市", + "label": "栖霞市" + }, + { + "code": "370687", + "value": "海阳市", + "label": "海阳市" + } + ] + }, + { + "code": "370700", + "value": "潍坊市", + "label": "潍坊市", + "children": [ + { + "code": "370702", + "value": "潍城区", + "label": "潍城区" + }, + { + "code": "370703", + "value": "寒亭区", + "label": "寒亭区" + }, + { + "code": "370704", + "value": "坊子区", + "label": "坊子区" + }, + { + "code": "370705", + "value": "奎文区", + "label": "奎文区" + }, + { + "code": "370724", + "value": "临朐县", + "label": "临朐县" + }, + { + "code": "370725", + "value": "昌乐县", + "label": "昌乐县" + }, + { + "code": "370781", + "value": "青州市", + "label": "青州市" + }, + { + "code": "370782", + "value": "诸城市", + "label": "诸城市" + }, + { + "code": "370783", + "value": "寿光市", + "label": "寿光市" + }, + { + "code": "370784", + "value": "安丘市", + "label": "安丘市" + }, + { + "code": "370785", + "value": "高密市", + "label": "高密市" + }, + { + "code": "370786", + "value": "昌邑市", + "label": "昌邑市" + } + ] + }, + { + "code": "370800", + "value": "济宁市", + "label": "济宁市", + "children": [ + { + "code": "370811", + "value": "任城区", + "label": "任城区" + }, + { + "code": "370812", + "value": "兖州区", + "label": "兖州区" + }, + { + "code": "370826", + "value": "微山县", + "label": "微山县" + }, + { + "code": "370827", + "value": "鱼台县", + "label": "鱼台县" + }, + { + "code": "370828", + "value": "金乡县", + "label": "金乡县" + }, + { + "code": "370829", + "value": "嘉祥县", + "label": "嘉祥县" + }, + { + "code": "370830", + "value": "汶上县", + "label": "汶上县" + }, + { + "code": "370831", + "value": "泗水县", + "label": "泗水县" + }, + { + "code": "370832", + "value": "梁山县", + "label": "梁山县" + }, + { + "code": "370881", + "value": "曲阜市", + "label": "曲阜市" + }, + { + "code": "370883", + "value": "邹城市", + "label": "邹城市" + } + ] + }, + { + "code": "370900", + "value": "泰安市", + "label": "泰安市", + "children": [ + { + "code": "370902", + "value": "泰山区", + "label": "泰山区" + }, + { + "code": "370911", + "value": "岱岳区", + "label": "岱岳区" + }, + { + "code": "370921", + "value": "宁阳县", + "label": "宁阳县" + }, + { + "code": "370923", + "value": "东平县", + "label": "东平县" + }, + { + "code": "370982", + "value": "新泰市", + "label": "新泰市" + }, + { + "code": "370983", + "value": "肥城市", + "label": "肥城市" + } + ] + }, + { + "code": "371000", + "value": "威海市", + "label": "威海市", + "children": [ + { + "code": "371002", + "value": "环翠区", + "label": "环翠区" + }, + { + "code": "371003", + "value": "文登区", + "label": "文登区" + }, + { + "code": "371082", + "value": "荣成市", + "label": "荣成市" + }, + { + "code": "371083", + "value": "乳山市", + "label": "乳山市" + } + ] + }, + { + "code": "371100", + "value": "日照市", + "label": "日照市", + "children": [ + { + "code": "371102", + "value": "东港区", + "label": "东港区" + }, + { + "code": "371103", + "value": "岚山区", + "label": "岚山区" + }, + { + "code": "371121", + "value": "五莲县", + "label": "五莲县" + }, + { + "code": "371122", + "value": "莒县", + "label": "莒县" + } + ] + }, + { + "code": "371300", + "value": "临沂市", + "label": "临沂市", + "children": [ + { + "code": "371302", + "value": "兰山区", + "label": "兰山区" + }, + { + "code": "371311", + "value": "罗庄区", + "label": "罗庄区" + }, + { + "code": "371312", + "value": "河东区", + "label": "河东区" + }, + { + "code": "371321", + "value": "沂南县", + "label": "沂南县" + }, + { + "code": "371322", + "value": "郯城县", + "label": "郯城县" + }, + { + "code": "371323", + "value": "沂水县", + "label": "沂水县" + }, + { + "code": "371324", + "value": "兰陵县", + "label": "兰陵县" + }, + { + "code": "371325", + "value": "费县", + "label": "费县" + }, + { + "code": "371326", + "value": "平邑县", + "label": "平邑县" + }, + { + "code": "371327", + "value": "莒南县", + "label": "莒南县" + }, + { + "code": "371328", + "value": "蒙阴县", + "label": "蒙阴县" + }, + { + "code": "371329", + "value": "临沭县", + "label": "临沭县" + } + ] + }, + { + "code": "371400", + "value": "德州市", + "label": "德州市", + "children": [ + { + "code": "371402", + "value": "德城区", + "label": "德城区" + }, + { + "code": "371403", + "value": "陵城区", + "label": "陵城区" + }, + { + "code": "371422", + "value": "宁津县", + "label": "宁津县" + }, + { + "code": "371423", + "value": "庆云县", + "label": "庆云县" + }, + { + "code": "371424", + "value": "临邑县", + "label": "临邑县" + }, + { + "code": "371425", + "value": "齐河县", + "label": "齐河县" + }, + { + "code": "371426", + "value": "平原县", + "label": "平原县" + }, + { + "code": "371427", + "value": "夏津县", + "label": "夏津县" + }, + { + "code": "371428", + "value": "武城县", + "label": "武城县" + }, + { + "code": "371481", + "value": "乐陵市", + "label": "乐陵市" + }, + { + "code": "371482", + "value": "禹城市", + "label": "禹城市" + } + ] + }, + { + "code": "371500", + "value": "聊城市", + "label": "聊城市", + "children": [ + { + "code": "371502", + "value": "东昌府区", + "label": "东昌府区" + }, + { + "code": "371503", + "value": "茌平区", + "label": "茌平区" + }, + { + "code": "371521", + "value": "阳谷县", + "label": "阳谷县" + }, + { + "code": "371522", + "value": "莘县", + "label": "莘县" + }, + { + "code": "371524", + "value": "东阿县", + "label": "东阿县" + }, + { + "code": "371525", + "value": "冠县", + "label": "冠县" + }, + { + "code": "371526", + "value": "高唐县", + "label": "高唐县" + }, + { + "code": "371581", + "value": "临清市", + "label": "临清市" + } + ] + }, + { + "code": "371600", + "value": "滨州市", + "label": "滨州市", + "children": [ + { + "code": "371602", + "value": "滨城区", + "label": "滨城区" + }, + { + "code": "371603", + "value": "沾化区", + "label": "沾化区" + }, + { + "code": "371621", + "value": "惠民县", + "label": "惠民县" + }, + { + "code": "371622", + "value": "阳信县", + "label": "阳信县" + }, + { + "code": "371623", + "value": "无棣县", + "label": "无棣县" + }, + { + "code": "371625", + "value": "博兴县", + "label": "博兴县" + }, + { + "code": "371681", + "value": "邹平市", + "label": "邹平市" + } + ] + }, + { + "code": "371700", + "value": "菏泽市", + "label": "菏泽市", + "children": [ + { + "code": "371702", + "value": "牡丹区", + "label": "牡丹区" + }, + { + "code": "371703", + "value": "定陶区", + "label": "定陶区" + }, + { + "code": "371721", + "value": "曹县", + "label": "曹县" + }, + { + "code": "371722", + "value": "单县", + "label": "单县" + }, + { + "code": "371723", + "value": "成武县", + "label": "成武县" + }, + { + "code": "371724", + "value": "巨野县", + "label": "巨野县" + }, + { + "code": "371725", + "value": "郓城县", + "label": "郓城县" + }, + { + "code": "371726", + "value": "鄄城县", + "label": "鄄城县" + }, + { + "code": "371728", + "value": "东明县", + "label": "东明县" + } + ] + } + ] + }, + { + "code": "410000", + "value": "河南省", + "label": "河南省", + "children": [ + { + "code": "410100", + "value": "郑州市", + "label": "郑州市", + "children": [ + { + "code": "410102", + "value": "中原区", + "label": "中原区" + }, + { + "code": "410103", + "value": "二七区", + "label": "二七区" + }, + { + "code": "410104", + "value": "管城回族区", + "label": "管城回族区" + }, + { + "code": "410105", + "value": "金水区", + "label": "金水区" + }, + { + "code": "410106", + "value": "上街区", + "label": "上街区" + }, + { + "code": "410108", + "value": "惠济区", + "label": "惠济区" + }, + { + "code": "410122", + "value": "中牟县", + "label": "中牟县" + }, + { + "code": "410181", + "value": "巩义市", + "label": "巩义市" + }, + { + "code": "410182", + "value": "荥阳市", + "label": "荥阳市" + }, + { + "code": "410183", + "value": "新密市", + "label": "新密市" + }, + { + "code": "410184", + "value": "新郑市", + "label": "新郑市" + }, + { + "code": "410185", + "value": "登封市", + "label": "登封市" + } + ] + }, + { + "code": "410200", + "value": "开封市", + "label": "开封市", + "children": [ + { + "code": "410202", + "value": "龙亭区", + "label": "龙亭区" + }, + { + "code": "410203", + "value": "顺河回族区", + "label": "顺河回族区" + }, + { + "code": "410204", + "value": "鼓楼区", + "label": "鼓楼区" + }, + { + "code": "410205", + "value": "禹王台区", + "label": "禹王台区" + }, + { + "code": "410212", + "value": "祥符区", + "label": "祥符区" + }, + { + "code": "410221", + "value": "杞县", + "label": "杞县" + }, + { + "code": "410222", + "value": "通许县", + "label": "通许县" + }, + { + "code": "410223", + "value": "尉氏县", + "label": "尉氏县" + }, + { + "code": "410225", + "value": "兰考县", + "label": "兰考县" + } + ] + }, + { + "code": "410300", + "value": "洛阳市", + "label": "洛阳市", + "children": [ + { + "code": "410302", + "value": "老城区", + "label": "老城区" + }, + { + "code": "410303", + "value": "西工区", + "label": "西工区" + }, + { + "code": "410304", + "value": "瀍河回族区", + "label": "瀍河回族区" + }, + { + "code": "410305", + "value": "涧西区", + "label": "涧西区" + }, + { + "code": "410306", + "value": "吉利区", + "label": "吉利区" + }, + { + "code": "410311", + "value": "洛龙区", + "label": "洛龙区" + }, + { + "code": "410322", + "value": "孟津县", + "label": "孟津县" + }, + { + "code": "410323", + "value": "新安县", + "label": "新安县" + }, + { + "code": "410324", + "value": "栾川县", + "label": "栾川县" + }, + { + "code": "410325", + "value": "嵩县", + "label": "嵩县" + }, + { + "code": "410326", + "value": "汝阳县", + "label": "汝阳县" + }, + { + "code": "410327", + "value": "宜阳县", + "label": "宜阳县" + }, + { + "code": "410328", + "value": "洛宁县", + "label": "洛宁县" + }, + { + "code": "410329", + "value": "伊川县", + "label": "伊川县" + }, + { + "code": "410381", + "value": "偃师市", + "label": "偃师市" + } + ] + }, + { + "code": "410400", + "value": "平顶山市", + "label": "平顶山市", + "children": [ + { + "code": "410402", + "value": "新华区", + "label": "新华区" + }, + { + "code": "410403", + "value": "卫东区", + "label": "卫东区" + }, + { + "code": "410404", + "value": "石龙区", + "label": "石龙区" + }, + { + "code": "410411", + "value": "湛河区", + "label": "湛河区" + }, + { + "code": "410421", + "value": "宝丰县", + "label": "宝丰县" + }, + { + "code": "410422", + "value": "叶县", + "label": "叶县" + }, + { + "code": "410423", + "value": "鲁山县", + "label": "鲁山县" + }, + { + "code": "410425", + "value": "郏县", + "label": "郏县" + }, + { + "code": "410481", + "value": "舞钢市", + "label": "舞钢市" + }, + { + "code": "410482", + "value": "汝州市", + "label": "汝州市" + } + ] + }, + { + "code": "410500", + "value": "安阳市", + "label": "安阳市", + "children": [ + { + "code": "410502", + "value": "文峰区", + "label": "文峰区" + }, + { + "code": "410503", + "value": "北关区", + "label": "北关区" + }, + { + "code": "410505", + "value": "殷都区", + "label": "殷都区" + }, + { + "code": "410506", + "value": "龙安区", + "label": "龙安区" + }, + { + "code": "410522", + "value": "安阳县", + "label": "安阳县" + }, + { + "code": "410523", + "value": "汤阴县", + "label": "汤阴县" + }, + { + "code": "410526", + "value": "滑县", + "label": "滑县" + }, + { + "code": "410527", + "value": "内黄县", + "label": "内黄县" + }, + { + "code": "410581", + "value": "林州市", + "label": "林州市" + } + ] + }, + { + "code": "410600", + "value": "鹤壁市", + "label": "鹤壁市", + "children": [ + { + "code": "410602", + "value": "鹤山区", + "label": "鹤山区" + }, + { + "code": "410603", + "value": "山城区", + "label": "山城区" + }, + { + "code": "410611", + "value": "淇滨区", + "label": "淇滨区" + }, + { + "code": "410621", + "value": "浚县", + "label": "浚县" + }, + { + "code": "410622", + "value": "淇县", + "label": "淇县" + } + ] + }, + { + "code": "410700", + "value": "新乡市", + "label": "新乡市", + "children": [ + { + "code": "410702", + "value": "红旗区", + "label": "红旗区" + }, + { + "code": "410703", + "value": "卫滨区", + "label": "卫滨区" + }, + { + "code": "410704", + "value": "凤泉区", + "label": "凤泉区" + }, + { + "code": "410711", + "value": "牧野区", + "label": "牧野区" + }, + { + "code": "410721", + "value": "新乡县", + "label": "新乡县" + }, + { + "code": "410724", + "value": "获嘉县", + "label": "获嘉县" + }, + { + "code": "410725", + "value": "原阳县", + "label": "原阳县" + }, + { + "code": "410726", + "value": "延津县", + "label": "延津县" + }, + { + "code": "410727", + "value": "封丘县", + "label": "封丘县" + }, + { + "code": "410781", + "value": "卫辉市", + "label": "卫辉市" + }, + { + "code": "410782", + "value": "辉县市", + "label": "辉县市" + }, + { + "code": "410783", + "value": "长垣市", + "label": "长垣市" + } + ] + }, + { + "code": "410800", + "value": "焦作市", + "label": "焦作市", + "children": [ + { + "code": "410802", + "value": "解放区", + "label": "解放区" + }, + { + "code": "410803", + "value": "中站区", + "label": "中站区" + }, + { + "code": "410804", + "value": "马村区", + "label": "马村区" + }, + { + "code": "410811", + "value": "山阳区", + "label": "山阳区" + }, + { + "code": "410821", + "value": "修武县", + "label": "修武县" + }, + { + "code": "410822", + "value": "博爱县", + "label": "博爱县" + }, + { + "code": "410823", + "value": "武陟县", + "label": "武陟县" + }, + { + "code": "410825", + "value": "温县", + "label": "温县" + }, + { + "code": "410882", + "value": "沁阳市", + "label": "沁阳市" + }, + { + "code": "410883", + "value": "孟州市", + "label": "孟州市" + } + ] + }, + { + "code": "410900", + "value": "濮阳市", + "label": "濮阳市", + "children": [ + { + "code": "410902", + "value": "华龙区", + "label": "华龙区" + }, + { + "code": "410922", + "value": "清丰县", + "label": "清丰县" + }, + { + "code": "410923", + "value": "南乐县", + "label": "南乐县" + }, + { + "code": "410926", + "value": "范县", + "label": "范县" + }, + { + "code": "410927", + "value": "台前县", + "label": "台前县" + }, + { + "code": "410928", + "value": "濮阳县", + "label": "濮阳县" + } + ] + }, + { + "code": "411000", + "value": "许昌市", + "label": "许昌市", + "children": [ + { + "code": "411002", + "value": "魏都区", + "label": "魏都区" + }, + { + "code": "411003", + "value": "建安区", + "label": "建安区" + }, + { + "code": "411024", + "value": "鄢陵县", + "label": "鄢陵县" + }, + { + "code": "411025", + "value": "襄城县", + "label": "襄城县" + }, + { + "code": "411081", + "value": "禹州市", + "label": "禹州市" + }, + { + "code": "411082", + "value": "长葛市", + "label": "长葛市" + } + ] + }, + { + "code": "411100", + "value": "漯河市", + "label": "漯河市", + "children": [ + { + "code": "411102", + "value": "源汇区", + "label": "源汇区" + }, + { + "code": "411103", + "value": "郾城区", + "label": "郾城区" + }, + { + "code": "411104", + "value": "召陵区", + "label": "召陵区" + }, + { + "code": "411121", + "value": "舞阳县", + "label": "舞阳县" + }, + { + "code": "411122", + "value": "临颍县", + "label": "临颍县" + } + ] + }, + { + "code": "411200", + "value": "三门峡市", + "label": "三门峡市", + "children": [ + { + "code": "411202", + "value": "湖滨区", + "label": "湖滨区" + }, + { + "code": "411203", + "value": "陕州区", + "label": "陕州区" + }, + { + "code": "411221", + "value": "渑池县", + "label": "渑池县" + }, + { + "code": "411224", + "value": "卢氏县", + "label": "卢氏县" + }, + { + "code": "411281", + "value": "义马市", + "label": "义马市" + }, + { + "code": "411282", + "value": "灵宝市", + "label": "灵宝市" + } + ] + }, + { + "code": "411300", + "value": "南阳市", + "label": "南阳市", + "children": [ + { + "code": "411302", + "value": "宛城区", + "label": "宛城区" + }, + { + "code": "411303", + "value": "卧龙区", + "label": "卧龙区" + }, + { + "code": "411321", + "value": "南召县", + "label": "南召县" + }, + { + "code": "411322", + "value": "方城县", + "label": "方城县" + }, + { + "code": "411323", + "value": "西峡县", + "label": "西峡县" + }, + { + "code": "411324", + "value": "镇平县", + "label": "镇平县" + }, + { + "code": "411325", + "value": "内乡县", + "label": "内乡县" + }, + { + "code": "411326", + "value": "淅川县", + "label": "淅川县" + }, + { + "code": "411327", + "value": "社旗县", + "label": "社旗县" + }, + { + "code": "411328", + "value": "唐河县", + "label": "唐河县" + }, + { + "code": "411329", + "value": "新野县", + "label": "新野县" + }, + { + "code": "411330", + "value": "桐柏县", + "label": "桐柏县" + }, + { + "code": "411381", + "value": "邓州市", + "label": "邓州市" + } + ] + }, + { + "code": "411400", + "value": "商丘市", + "label": "商丘市", + "children": [ + { + "code": "411402", + "value": "梁园区", + "label": "梁园区" + }, + { + "code": "411403", + "value": "睢阳区", + "label": "睢阳区" + }, + { + "code": "411421", + "value": "民权县", + "label": "民权县" + }, + { + "code": "411422", + "value": "睢县", + "label": "睢县" + }, + { + "code": "411423", + "value": "宁陵县", + "label": "宁陵县" + }, + { + "code": "411424", + "value": "柘城县", + "label": "柘城县" + }, + { + "code": "411425", + "value": "虞城县", + "label": "虞城县" + }, + { + "code": "411426", + "value": "夏邑县", + "label": "夏邑县" + }, + { + "code": "411481", + "value": "永城市", + "label": "永城市" + } + ] + }, + { + "code": "411500", + "value": "信阳市", + "label": "信阳市", + "children": [ + { + "code": "411502", + "value": "浉河区", + "label": "浉河区" + }, + { + "code": "411503", + "value": "平桥区", + "label": "平桥区" + }, + { + "code": "411521", + "value": "罗山县", + "label": "罗山县" + }, + { + "code": "411522", + "value": "光山县", + "label": "光山县" + }, + { + "code": "411523", + "value": "新县", + "label": "新县" + }, + { + "code": "411524", + "value": "商城县", + "label": "商城县" + }, + { + "code": "411525", + "value": "固始县", + "label": "固始县" + }, + { + "code": "411526", + "value": "潢川县", + "label": "潢川县" + }, + { + "code": "411527", + "value": "淮滨县", + "label": "淮滨县" + }, + { + "code": "411528", + "value": "息县", + "label": "息县" + } + ] + }, + { + "code": "411600", + "value": "周口市", + "label": "周口市", + "children": [ + { + "code": "411602", + "value": "川汇区", + "label": "川汇区" + }, + { + "code": "411603", + "value": "淮阳区", + "label": "淮阳区" + }, + { + "code": "411621", + "value": "扶沟县", + "label": "扶沟县" + }, + { + "code": "411622", + "value": "西华县", + "label": "西华县" + }, + { + "code": "411623", + "value": "商水县", + "label": "商水县" + }, + { + "code": "411624", + "value": "沈丘县", + "label": "沈丘县" + }, + { + "code": "411625", + "value": "郸城县", + "label": "郸城县" + }, + { + "code": "411627", + "value": "太康县", + "label": "太康县" + }, + { + "code": "411628", + "value": "鹿邑县", + "label": "鹿邑县" + }, + { + "code": "411681", + "value": "项城市", + "label": "项城市" + } + ] + }, + { + "code": "411700", + "value": "驻马店市", + "label": "驻马店市", + "children": [ + { + "code": "411702", + "value": "驿城区", + "label": "驿城区" + }, + { + "code": "411721", + "value": "西平县", + "label": "西平县" + }, + { + "code": "411722", + "value": "上蔡县", + "label": "上蔡县" + }, + { + "code": "411723", + "value": "平舆县", + "label": "平舆县" + }, + { + "code": "411724", + "value": "正阳县", + "label": "正阳县" + }, + { + "code": "411725", + "value": "确山县", + "label": "确山县" + }, + { + "code": "411726", + "value": "泌阳县", + "label": "泌阳县" + }, + { + "code": "411727", + "value": "汝南县", + "label": "汝南县" + }, + { + "code": "411728", + "value": "遂平县", + "label": "遂平县" + }, + { + "code": "411729", + "value": "新蔡县", + "label": "新蔡县" + } + ] + } + ] + }, + { + "code": "420000", + "value": "湖北省", + "label": "湖北省", + "children": [ + { + "code": "420100", + "value": "武汉市", + "label": "武汉市", + "children": [ + { + "code": "420102", + "value": "江岸区", + "label": "江岸区" + }, + { + "code": "420103", + "value": "江汉区", + "label": "江汉区" + }, + { + "code": "420104", + "value": "硚口区", + "label": "硚口区" + }, + { + "code": "420105", + "value": "汉阳区", + "label": "汉阳区" + }, + { + "code": "420106", + "value": "武昌区", + "label": "武昌区" + }, + { + "code": "420107", + "value": "青山区", + "label": "青山区" + }, + { + "code": "420111", + "value": "洪山区", + "label": "洪山区" + }, + { + "code": "420112", + "value": "东西湖区", + "label": "东西湖区" + }, + { + "code": "420113", + "value": "汉南区", + "label": "汉南区" + }, + { + "code": "420114", + "value": "蔡甸区", + "label": "蔡甸区" + }, + { + "code": "420115", + "value": "江夏区", + "label": "江夏区" + }, + { + "code": "420116", + "value": "黄陂区", + "label": "黄陂区" + }, + { + "code": "420117", + "value": "新洲区", + "label": "新洲区" + } + ] + }, + { + "code": "420200", + "value": "黄石市", + "label": "黄石市", + "children": [ + { + "code": "420202", + "value": "黄石港区", + "label": "黄石港区" + }, + { + "code": "420203", + "value": "西塞山区", + "label": "西塞山区" + }, + { + "code": "420204", + "value": "下陆区", + "label": "下陆区" + }, + { + "code": "420205", + "value": "铁山区", + "label": "铁山区" + }, + { + "code": "420222", + "value": "阳新县", + "label": "阳新县" + }, + { + "code": "420281", + "value": "大冶市", + "label": "大冶市" + } + ] + }, + { + "code": "420300", + "value": "十堰市", + "label": "十堰市", + "children": [ + { + "code": "420302", + "value": "茅箭区", + "label": "茅箭区" + }, + { + "code": "420303", + "value": "张湾区", + "label": "张湾区" + }, + { + "code": "420304", + "value": "郧阳区", + "label": "郧阳区" + }, + { + "code": "420322", + "value": "郧西县", + "label": "郧西县" + }, + { + "code": "420323", + "value": "竹山县", + "label": "竹山县" + }, + { + "code": "420324", + "value": "竹溪县", + "label": "竹溪县" + }, + { + "code": "420325", + "value": "房县", + "label": "房县" + }, + { + "code": "420381", + "value": "丹江口市", + "label": "丹江口市" + } + ] + }, + { + "code": "420500", + "value": "宜昌市", + "label": "宜昌市", + "children": [ + { + "code": "420502", + "value": "西陵区", + "label": "西陵区" + }, + { + "code": "420503", + "value": "伍家岗区", + "label": "伍家岗区" + }, + { + "code": "420504", + "value": "点军区", + "label": "点军区" + }, + { + "code": "420505", + "value": "猇亭区", + "label": "猇亭区" + }, + { + "code": "420506", + "value": "夷陵区", + "label": "夷陵区" + }, + { + "code": "420525", + "value": "远安县", + "label": "远安县" + }, + { + "code": "420526", + "value": "兴山县", + "label": "兴山县" + }, + { + "code": "420527", + "value": "秭归县", + "label": "秭归县" + }, + { + "code": "420528", + "value": "长阳土家族自治县", + "label": "长阳土家族自治县" + }, + { + "code": "420529", + "value": "五峰土家族自治县", + "label": "五峰土家族自治县" + }, + { + "code": "420581", + "value": "宜都市", + "label": "宜都市" + }, + { + "code": "420582", + "value": "当阳市", + "label": "当阳市" + }, + { + "code": "420583", + "value": "枝江市", + "label": "枝江市" + } + ] + }, + { + "code": "420600", + "value": "襄阳市", + "label": "襄阳市", + "children": [ + { + "code": "420602", + "value": "襄城区", + "label": "襄城区" + }, + { + "code": "420606", + "value": "樊城区", + "label": "樊城区" + }, + { + "code": "420607", + "value": "襄州区", + "label": "襄州区" + }, + { + "code": "420624", + "value": "南漳县", + "label": "南漳县" + }, + { + "code": "420625", + "value": "谷城县", + "label": "谷城县" + }, + { + "code": "420626", + "value": "保康县", + "label": "保康县" + }, + { + "code": "420682", + "value": "老河口市", + "label": "老河口市" + }, + { + "code": "420683", + "value": "枣阳市", + "label": "枣阳市" + }, + { + "code": "420684", + "value": "宜城市", + "label": "宜城市" + } + ] + }, + { + "code": "420700", + "value": "鄂州市", + "label": "鄂州市", + "children": [ + { + "code": "420702", + "value": "梁子湖区", + "label": "梁子湖区" + }, + { + "code": "420703", + "value": "华容区", + "label": "华容区" + }, + { + "code": "420704", + "value": "鄂城区", + "label": "鄂城区" + } + ] + }, + { + "code": "420800", + "value": "荆门市", + "label": "荆门市", + "children": [ + { + "code": "420802", + "value": "东宝区", + "label": "东宝区" + }, + { + "code": "420804", + "value": "掇刀区", + "label": "掇刀区" + }, + { + "code": "420822", + "value": "沙洋县", + "label": "沙洋县" + }, + { + "code": "420881", + "value": "钟祥市", + "label": "钟祥市" + }, + { + "code": "420882", + "value": "京山市", + "label": "京山市" + } + ] + }, + { + "code": "420900", + "value": "孝感市", + "label": "孝感市", + "children": [ + { + "code": "420902", + "value": "孝南区", + "label": "孝南区" + }, + { + "code": "420921", + "value": "孝昌县", + "label": "孝昌县" + }, + { + "code": "420922", + "value": "大悟县", + "label": "大悟县" + }, + { + "code": "420923", + "value": "云梦县", + "label": "云梦县" + }, + { + "code": "420981", + "value": "应城市", + "label": "应城市" + }, + { + "code": "420982", + "value": "安陆市", + "label": "安陆市" + }, + { + "code": "420984", + "value": "汉川市", + "label": "汉川市" + } + ] + }, + { + "code": "421000", + "value": "荆州市", + "label": "荆州市", + "children": [ + { + "code": "421002", + "value": "沙市区", + "label": "沙市区" + }, + { + "code": "421003", + "value": "荆州区", + "label": "荆州区" + }, + { + "code": "421022", + "value": "公安县", + "label": "公安县" + }, + { + "code": "421023", + "value": "监利县", + "label": "监利县" + }, + { + "code": "421024", + "value": "江陵县", + "label": "江陵县" + }, + { + "code": "421081", + "value": "石首市", + "label": "石首市" + }, + { + "code": "421083", + "value": "洪湖市", + "label": "洪湖市" + }, + { + "code": "421087", + "value": "松滋市", + "label": "松滋市" + } + ] + }, + { + "code": "421100", + "value": "黄冈市", + "label": "黄冈市", + "children": [ + { + "code": "421102", + "value": "黄州区", + "label": "黄州区" + }, + { + "code": "421121", + "value": "团风县", + "label": "团风县" + }, + { + "code": "421122", + "value": "红安县", + "label": "红安县" + }, + { + "code": "421123", + "value": "罗田县", + "label": "罗田县" + }, + { + "code": "421124", + "value": "英山县", + "label": "英山县" + }, + { + "code": "421125", + "value": "浠水县", + "label": "浠水县" + }, + { + "code": "421126", + "value": "蕲春县", + "label": "蕲春县" + }, + { + "code": "421127", + "value": "黄梅县", + "label": "黄梅县" + }, + { + "code": "421181", + "value": "麻城市", + "label": "麻城市" + }, + { + "code": "421182", + "value": "武穴市", + "label": "武穴市" + } + ] + }, + { + "code": "421200", + "value": "咸宁市", + "label": "咸宁市", + "children": [ + { + "code": "421202", + "value": "咸安区", + "label": "咸安区" + }, + { + "code": "421221", + "value": "嘉鱼县", + "label": "嘉鱼县" + }, + { + "code": "421222", + "value": "通城县", + "label": "通城县" + }, + { + "code": "421223", + "value": "崇阳县", + "label": "崇阳县" + }, + { + "code": "421224", + "value": "通山县", + "label": "通山县" + }, + { + "code": "421281", + "value": "赤壁市", + "label": "赤壁市" + } + ] + }, + { + "code": "421300", + "value": "随州市", + "label": "随州市", + "children": [ + { + "code": "421303", + "value": "曾都区", + "label": "曾都区" + }, + { + "code": "421321", + "value": "随县", + "label": "随县" + }, + { + "code": "421381", + "value": "广水市", + "label": "广水市" + } + ] + }, + { + "code": "422800", + "value": "恩施土家族苗族自治州", + "label": "恩施土家族苗族自治州", + "children": [ + { + "code": "422801", + "value": "恩施市", + "label": "恩施市" + }, + { + "code": "422802", + "value": "利川市", + "label": "利川市" + }, + { + "code": "422822", + "value": "建始县", + "label": "建始县" + }, + { + "code": "422823", + "value": "巴东县", + "label": "巴东县" + }, + { + "code": "422825", + "value": "宣恩县", + "label": "宣恩县" + }, + { + "code": "422826", + "value": "咸丰县", + "label": "咸丰县" + }, + { + "code": "422827", + "value": "来凤县", + "label": "来凤县" + }, + { + "code": "422828", + "value": "鹤峰县", + "label": "鹤峰县" + } + ] + } + ] + }, + { + "code": "430000", + "value": "湖南省", + "label": "湖南省", + "children": [ + { + "code": "430100", + "value": "长沙市", + "label": "长沙市", + "children": [ + { + "code": "430102", + "value": "芙蓉区", + "label": "芙蓉区" + }, + { + "code": "430103", + "value": "天心区", + "label": "天心区" + }, + { + "code": "430104", + "value": "岳麓区", + "label": "岳麓区" + }, + { + "code": "430105", + "value": "开福区", + "label": "开福区" + }, + { + "code": "430111", + "value": "雨花区", + "label": "雨花区" + }, + { + "code": "430112", + "value": "望城区", + "label": "望城区" + }, + { + "code": "430121", + "value": "长沙县", + "label": "长沙县" + }, + { + "code": "430181", + "value": "浏阳市", + "label": "浏阳市" + }, + { + "code": "430182", + "value": "宁乡市", + "label": "宁乡市" + } + ] + }, + { + "code": "430200", + "value": "株洲市", + "label": "株洲市", + "children": [ + { + "code": "430202", + "value": "荷塘区", + "label": "荷塘区" + }, + { + "code": "430203", + "value": "芦淞区", + "label": "芦淞区" + }, + { + "code": "430204", + "value": "石峰区", + "label": "石峰区" + }, + { + "code": "430211", + "value": "天元区", + "label": "天元区" + }, + { + "code": "430212", + "value": "渌口区", + "label": "渌口区" + }, + { + "code": "430223", + "value": "攸县", + "label": "攸县" + }, + { + "code": "430224", + "value": "茶陵县", + "label": "茶陵县" + }, + { + "code": "430225", + "value": "炎陵县", + "label": "炎陵县" + }, + { + "code": "430281", + "value": "醴陵市", + "label": "醴陵市" + } + ] + }, + { + "code": "430300", + "value": "湘潭市", + "label": "湘潭市", + "children": [ + { + "code": "430302", + "value": "雨湖区", + "label": "雨湖区" + }, + { + "code": "430304", + "value": "岳塘区", + "label": "岳塘区" + }, + { + "code": "430321", + "value": "湘潭县", + "label": "湘潭县" + }, + { + "code": "430381", + "value": "湘乡市", + "label": "湘乡市" + }, + { + "code": "430382", + "value": "韶山市", + "label": "韶山市" + } + ] + }, + { + "code": "430400", + "value": "衡阳市", + "label": "衡阳市", + "children": [ + { + "code": "430405", + "value": "珠晖区", + "label": "珠晖区" + }, + { + "code": "430406", + "value": "雁峰区", + "label": "雁峰区" + }, + { + "code": "430407", + "value": "石鼓区", + "label": "石鼓区" + }, + { + "code": "430408", + "value": "蒸湘区", + "label": "蒸湘区" + }, + { + "code": "430412", + "value": "南岳区", + "label": "南岳区" + }, + { + "code": "430421", + "value": "衡阳县", + "label": "衡阳县" + }, + { + "code": "430422", + "value": "衡南县", + "label": "衡南县" + }, + { + "code": "430423", + "value": "衡山县", + "label": "衡山县" + }, + { + "code": "430424", + "value": "衡东县", + "label": "衡东县" + }, + { + "code": "430426", + "value": "祁东县", + "label": "祁东县" + }, + { + "code": "430481", + "value": "耒阳市", + "label": "耒阳市" + }, + { + "code": "430482", + "value": "常宁市", + "label": "常宁市" + } + ] + }, + { + "code": "430500", + "value": "邵阳市", + "label": "邵阳市", + "children": [ + { + "code": "430502", + "value": "双清区", + "label": "双清区" + }, + { + "code": "430503", + "value": "大祥区", + "label": "大祥区" + }, + { + "code": "430511", + "value": "北塔区", + "label": "北塔区" + }, + { + "code": "430522", + "value": "新邵县", + "label": "新邵县" + }, + { + "code": "430523", + "value": "邵阳县", + "label": "邵阳县" + }, + { + "code": "430524", + "value": "隆回县", + "label": "隆回县" + }, + { + "code": "430525", + "value": "洞口县", + "label": "洞口县" + }, + { + "code": "430527", + "value": "绥宁县", + "label": "绥宁县" + }, + { + "code": "430528", + "value": "新宁县", + "label": "新宁县" + }, + { + "code": "430529", + "value": "城步苗族自治县", + "label": "城步苗族自治县" + }, + { + "code": "430581", + "value": "武冈市", + "label": "武冈市" + }, + { + "code": "430582", + "value": "邵东市", + "label": "邵东市" + } + ] + }, + { + "code": "430600", + "value": "岳阳市", + "label": "岳阳市", + "children": [ + { + "code": "430602", + "value": "岳阳楼区", + "label": "岳阳楼区" + }, + { + "code": "430603", + "value": "云溪区", + "label": "云溪区" + }, + { + "code": "430611", + "value": "君山区", + "label": "君山区" + }, + { + "code": "430621", + "value": "岳阳县", + "label": "岳阳县" + }, + { + "code": "430623", + "value": "华容县", + "label": "华容县" + }, + { + "code": "430624", + "value": "湘阴县", + "label": "湘阴县" + }, + { + "code": "430626", + "value": "平江县", + "label": "平江县" + }, + { + "code": "430681", + "value": "汨罗市", + "label": "汨罗市" + }, + { + "code": "430682", + "value": "临湘市", + "label": "临湘市" + } + ] + }, + { + "code": "430700", + "value": "常德市", + "label": "常德市", + "children": [ + { + "code": "430702", + "value": "武陵区", + "label": "武陵区" + }, + { + "code": "430703", + "value": "鼎城区", + "label": "鼎城区" + }, + { + "code": "430721", + "value": "安乡县", + "label": "安乡县" + }, + { + "code": "430722", + "value": "汉寿县", + "label": "汉寿县" + }, + { + "code": "430723", + "value": "澧县", + "label": "澧县" + }, + { + "code": "430724", + "value": "临澧县", + "label": "临澧县" + }, + { + "code": "430725", + "value": "桃源县", + "label": "桃源县" + }, + { + "code": "430726", + "value": "石门县", + "label": "石门县" + }, + { + "code": "430781", + "value": "津市市", + "label": "津市市" + } + ] + }, + { + "code": "430800", + "value": "张家界市", + "label": "张家界市", + "children": [ + { + "code": "430802", + "value": "永定区", + "label": "永定区" + }, + { + "code": "430811", + "value": "武陵源区", + "label": "武陵源区" + }, + { + "code": "430821", + "value": "慈利县", + "label": "慈利县" + }, + { + "code": "430822", + "value": "桑植县", + "label": "桑植县" + } + ] + }, + { + "code": "430900", + "value": "益阳市", + "label": "益阳市", + "children": [ + { + "code": "430902", + "value": "资阳区", + "label": "资阳区" + }, + { + "code": "430903", + "value": "赫山区", + "label": "赫山区" + }, + { + "code": "430921", + "value": "南县", + "label": "南县" + }, + { + "code": "430922", + "value": "桃江县", + "label": "桃江县" + }, + { + "code": "430923", + "value": "安化县", + "label": "安化县" + }, + { + "code": "430981", + "value": "沅江市", + "label": "沅江市" + } + ] + }, + { + "code": "431000", + "value": "郴州市", + "label": "郴州市", + "children": [ + { + "code": "431002", + "value": "北湖区", + "label": "北湖区" + }, + { + "code": "431003", + "value": "苏仙区", + "label": "苏仙区" + }, + { + "code": "431021", + "value": "桂阳县", + "label": "桂阳县" + }, + { + "code": "431022", + "value": "宜章县", + "label": "宜章县" + }, + { + "code": "431023", + "value": "永兴县", + "label": "永兴县" + }, + { + "code": "431024", + "value": "嘉禾县", + "label": "嘉禾县" + }, + { + "code": "431025", + "value": "临武县", + "label": "临武县" + }, + { + "code": "431026", + "value": "汝城县", + "label": "汝城县" + }, + { + "code": "431027", + "value": "桂东县", + "label": "桂东县" + }, + { + "code": "431028", + "value": "安仁县", + "label": "安仁县" + }, + { + "code": "431081", + "value": "资兴市", + "label": "资兴市" + } + ] + }, + { + "code": "431100", + "value": "永州市", + "label": "永州市", + "children": [ + { + "code": "431102", + "value": "零陵区", + "label": "零陵区" + }, + { + "code": "431103", + "value": "冷水滩区", + "label": "冷水滩区" + }, + { + "code": "431121", + "value": "祁阳县", + "label": "祁阳县" + }, + { + "code": "431122", + "value": "东安县", + "label": "东安县" + }, + { + "code": "431123", + "value": "双牌县", + "label": "双牌县" + }, + { + "code": "431124", + "value": "道县", + "label": "道县" + }, + { + "code": "431125", + "value": "江永县", + "label": "江永县" + }, + { + "code": "431126", + "value": "宁远县", + "label": "宁远县" + }, + { + "code": "431127", + "value": "蓝山县", + "label": "蓝山县" + }, + { + "code": "431128", + "value": "新田县", + "label": "新田县" + }, + { + "code": "431129", + "value": "江华瑶族自治县", + "label": "江华瑶族自治县" + } + ] + }, + { + "code": "431200", + "value": "怀化市", + "label": "怀化市", + "children": [ + { + "code": "431202", + "value": "鹤城区", + "label": "鹤城区" + }, + { + "code": "431221", + "value": "中方县", + "label": "中方县" + }, + { + "code": "431222", + "value": "沅陵县", + "label": "沅陵县" + }, + { + "code": "431223", + "value": "辰溪县", + "label": "辰溪县" + }, + { + "code": "431224", + "value": "溆浦县", + "label": "溆浦县" + }, + { + "code": "431225", + "value": "会同县", + "label": "会同县" + }, + { + "code": "431226", + "value": "麻阳苗族自治县", + "label": "麻阳苗族自治县" + }, + { + "code": "431227", + "value": "新晃侗族自治县", + "label": "新晃侗族自治县" + }, + { + "code": "431228", + "value": "芷江侗族自治县", + "label": "芷江侗族自治县" + }, + { + "code": "431229", + "value": "靖州苗族侗族自治县", + "label": "靖州苗族侗族自治县" + }, + { + "code": "431230", + "value": "通道侗族自治县", + "label": "通道侗族自治县" + }, + { + "code": "431281", + "value": "洪江市", + "label": "洪江市" + } + ] + }, + { + "code": "431300", + "value": "娄底市", + "label": "娄底市", + "children": [ + { + "code": "431302", + "value": "娄星区", + "label": "娄星区" + }, + { + "code": "431321", + "value": "双峰县", + "label": "双峰县" + }, + { + "code": "431322", + "value": "新化县", + "label": "新化县" + }, + { + "code": "431381", + "value": "冷水江市", + "label": "冷水江市" + }, + { + "code": "431382", + "value": "涟源市", + "label": "涟源市" + } + ] + }, + { + "code": "433100", + "value": "湘西土家族苗族自治州", + "label": "湘西土家族苗族自治州", + "children": [ + { + "code": "433101", + "value": "吉首市", + "label": "吉首市" + }, + { + "code": "433122", + "value": "泸溪县", + "label": "泸溪县" + }, + { + "code": "433123", + "value": "凤凰县", + "label": "凤凰县" + }, + { + "code": "433124", + "value": "花垣县", + "label": "花垣县" + }, + { + "code": "433125", + "value": "保靖县", + "label": "保靖县" + }, + { + "code": "433126", + "value": "古丈县", + "label": "古丈县" + }, + { + "code": "433127", + "value": "永顺县", + "label": "永顺县" + }, + { + "code": "433130", + "value": "龙山县", + "label": "龙山县" + } + ] + } + ] + }, + { + "code": "440000", + "value": "广东省", + "label": "广东省", + "children": [ + { + "code": "440100", + "value": "广州市", + "label": "广州市", + "children": [ + { + "code": "440103", + "value": "荔湾区", + "label": "荔湾区" + }, + { + "code": "440104", + "value": "越秀区", + "label": "越秀区" + }, + { + "code": "440105", + "value": "海珠区", + "label": "海珠区" + }, + { + "code": "440106", + "value": "天河区", + "label": "天河区" + }, + { + "code": "440111", + "value": "白云区", + "label": "白云区" + }, + { + "code": "440112", + "value": "黄埔区", + "label": "黄埔区" + }, + { + "code": "440113", + "value": "番禺区", + "label": "番禺区" + }, + { + "code": "440114", + "value": "花都区", + "label": "花都区" + }, + { + "code": "440115", + "value": "南沙区", + "label": "南沙区" + }, + { + "code": "440117", + "value": "从化区", + "label": "从化区" + }, + { + "code": "440118", + "value": "增城区", + "label": "增城区" + } + ] + }, + { + "code": "440200", + "value": "韶关市", + "label": "韶关市", + "children": [ + { + "code": "440203", + "value": "武江区", + "label": "武江区" + }, + { + "code": "440204", + "value": "浈江区", + "label": "浈江区" + }, + { + "code": "440205", + "value": "曲江区", + "label": "曲江区" + }, + { + "code": "440222", + "value": "始兴县", + "label": "始兴县" + }, + { + "code": "440224", + "value": "仁化县", + "label": "仁化县" + }, + { + "code": "440229", + "value": "翁源县", + "label": "翁源县" + }, + { + "code": "440232", + "value": "乳源瑶族自治县", + "label": "乳源瑶族自治县" + }, + { + "code": "440233", + "value": "新丰县", + "label": "新丰县" + }, + { + "code": "440281", + "value": "乐昌市", + "label": "乐昌市" + }, + { + "code": "440282", + "value": "南雄市", + "label": "南雄市" + } + ] + }, + { + "code": "440300", + "value": "深圳市", + "label": "深圳市", + "children": [ + { + "code": "440303", + "value": "罗湖区", + "label": "罗湖区" + }, + { + "code": "440304", + "value": "福田区", + "label": "福田区" + }, + { + "code": "440305", + "value": "南山区", + "label": "南山区" + }, + { + "code": "440306", + "value": "宝安区", + "label": "宝安区" + }, + { + "code": "440307", + "value": "龙岗区", + "label": "龙岗区" + }, + { + "code": "440308", + "value": "盐田区", + "label": "盐田区" + }, + { + "code": "440309", + "value": "龙华区", + "label": "龙华区" + }, + { + "code": "440310", + "value": "坪山区", + "label": "坪山区" + }, + { + "code": "440311", + "value": "光明区", + "label": "光明区" + } + ] + }, + { + "code": "440400", + "value": "珠海市", + "label": "珠海市", + "children": [ + { + "code": "440402", + "value": "香洲区", + "label": "香洲区" + }, + { + "code": "440403", + "value": "斗门区", + "label": "斗门区" + }, + { + "code": "440404", + "value": "金湾区", + "label": "金湾区" + } + ] + }, + { + "code": "440500", + "value": "汕头市", + "label": "汕头市", + "children": [ + { + "code": "440507", + "value": "龙湖区", + "label": "龙湖区" + }, + { + "code": "440511", + "value": "金平区", + "label": "金平区" + }, + { + "code": "440512", + "value": "濠江区", + "label": "濠江区" + }, + { + "code": "440513", + "value": "潮阳区", + "label": "潮阳区" + }, + { + "code": "440514", + "value": "潮南区", + "label": "潮南区" + }, + { + "code": "440515", + "value": "澄海区", + "label": "澄海区" + }, + { + "code": "440523", + "value": "南澳县", + "label": "南澳县" + } + ] + }, + { + "code": "440600", + "value": "佛山市", + "label": "佛山市", + "children": [ + { + "code": "440604", + "value": "禅城区", + "label": "禅城区" + }, + { + "code": "440605", + "value": "南海区", + "label": "南海区" + }, + { + "code": "440606", + "value": "顺德区", + "label": "顺德区" + }, + { + "code": "440607", + "value": "三水区", + "label": "三水区" + }, + { + "code": "440608", + "value": "高明区", + "label": "高明区" + } + ] + }, + { + "code": "440700", + "value": "江门市", + "label": "江门市", + "children": [ + { + "code": "440703", + "value": "蓬江区", + "label": "蓬江区" + }, + { + "code": "440704", + "value": "江海区", + "label": "江海区" + }, + { + "code": "440705", + "value": "新会区", + "label": "新会区" + }, + { + "code": "440781", + "value": "台山市", + "label": "台山市" + }, + { + "code": "440783", + "value": "开平市", + "label": "开平市" + }, + { + "code": "440784", + "value": "鹤山市", + "label": "鹤山市" + }, + { + "code": "440785", + "value": "恩平市", + "label": "恩平市" + } + ] + }, + { + "code": "440800", + "value": "湛江市", + "label": "湛江市", + "children": [ + { + "code": "440802", + "value": "赤坎区", + "label": "赤坎区" + }, + { + "code": "440803", + "value": "霞山区", + "label": "霞山区" + }, + { + "code": "440804", + "value": "坡头区", + "label": "坡头区" + }, + { + "code": "440811", + "value": "麻章区", + "label": "麻章区" + }, + { + "code": "440823", + "value": "遂溪县", + "label": "遂溪县" + }, + { + "code": "440825", + "value": "徐闻县", + "label": "徐闻县" + }, + { + "code": "440881", + "value": "廉江市", + "label": "廉江市" + }, + { + "code": "440882", + "value": "雷州市", + "label": "雷州市" + }, + { + "code": "440883", + "value": "吴川市", + "label": "吴川市" + } + ] + }, + { + "code": "440900", + "value": "茂名市", + "label": "茂名市", + "children": [ + { + "code": "440902", + "value": "茂南区", + "label": "茂南区" + }, + { + "code": "440904", + "value": "电白区", + "label": "电白区" + }, + { + "code": "440981", + "value": "高州市", + "label": "高州市" + }, + { + "code": "440982", + "value": "化州市", + "label": "化州市" + }, + { + "code": "440983", + "value": "信宜市", + "label": "信宜市" + } + ] + }, + { + "code": "441200", + "value": "肇庆市", + "label": "肇庆市", + "children": [ + { + "code": "441202", + "value": "端州区", + "label": "端州区" + }, + { + "code": "441203", + "value": "鼎湖区", + "label": "鼎湖区" + }, + { + "code": "441204", + "value": "高要区", + "label": "高要区" + }, + { + "code": "441223", + "value": "广宁县", + "label": "广宁县" + }, + { + "code": "441224", + "value": "怀集县", + "label": "怀集县" + }, + { + "code": "441225", + "value": "封开县", + "label": "封开县" + }, + { + "code": "441226", + "value": "德庆县", + "label": "德庆县" + }, + { + "code": "441284", + "value": "四会市", + "label": "四会市" + } + ] + }, + { + "code": "441300", + "value": "惠州市", + "label": "惠州市", + "children": [ + { + "code": "441302", + "value": "惠城区", + "label": "惠城区" + }, + { + "code": "441303", + "value": "惠阳区", + "label": "惠阳区" + }, + { + "code": "441322", + "value": "博罗县", + "label": "博罗县" + }, + { + "code": "441323", + "value": "惠东县", + "label": "惠东县" + }, + { + "code": "441324", + "value": "龙门县", + "label": "龙门县" + } + ] + }, + { + "code": "441400", + "value": "梅州市", + "label": "梅州市", + "children": [ + { + "code": "441402", + "value": "梅江区", + "label": "梅江区" + }, + { + "code": "441403", + "value": "梅县区", + "label": "梅县区" + }, + { + "code": "441422", + "value": "大埔县", + "label": "大埔县" + }, + { + "code": "441423", + "value": "丰顺县", + "label": "丰顺县" + }, + { + "code": "441424", + "value": "五华县", + "label": "五华县" + }, + { + "code": "441426", + "value": "平远县", + "label": "平远县" + }, + { + "code": "441427", + "value": "蕉岭县", + "label": "蕉岭县" + }, + { + "code": "441481", + "value": "兴宁市", + "label": "兴宁市" + } + ] + }, + { + "code": "441500", + "value": "汕尾市", + "label": "汕尾市", + "children": [ + { + "code": "441502", + "value": "城区", + "label": "城区" + }, + { + "code": "441521", + "value": "海丰县", + "label": "海丰县" + }, + { + "code": "441523", + "value": "陆河县", + "label": "陆河县" + }, + { + "code": "441581", + "value": "陆丰市", + "label": "陆丰市" + } + ] + }, + { + "code": "441600", + "value": "河源市", + "label": "河源市", + "children": [ + { + "code": "441602", + "value": "源城区", + "label": "源城区" + }, + { + "code": "441621", + "value": "紫金县", + "label": "紫金县" + }, + { + "code": "441622", + "value": "龙川县", + "label": "龙川县" + }, + { + "code": "441623", + "value": "连平县", + "label": "连平县" + }, + { + "code": "441624", + "value": "和平县", + "label": "和平县" + }, + { + "code": "441625", + "value": "东源县", + "label": "东源县" + } + ] + }, + { + "code": "441700", + "value": "阳江市", + "label": "阳江市", + "children": [ + { + "code": "441702", + "value": "江城区", + "label": "江城区" + }, + { + "code": "441704", + "value": "阳东区", + "label": "阳东区" + }, + { + "code": "441721", + "value": "阳西县", + "label": "阳西县" + }, + { + "code": "441781", + "value": "阳春市", + "label": "阳春市" + } + ] + }, + { + "code": "441800", + "value": "清远市", + "label": "清远市", + "children": [ + { + "code": "441802", + "value": "清城区", + "label": "清城区" + }, + { + "code": "441803", + "value": "清新区", + "label": "清新区" + }, + { + "code": "441821", + "value": "佛冈县", + "label": "佛冈县" + }, + { + "code": "441823", + "value": "阳山县", + "label": "阳山县" + }, + { + "code": "441825", + "value": "连山壮族瑶族自治县", + "label": "连山壮族瑶族自治县" + }, + { + "code": "441826", + "value": "连南瑶族自治县", + "label": "连南瑶族自治县" + }, + { + "code": "441881", + "value": "英德市", + "label": "英德市" + }, + { + "code": "441882", + "value": "连州市", + "label": "连州市" + } + ] + }, + { + "code": "441900", + "value": "东莞市", + "label": "东莞市", + "children": [] + }, + { + "code": "442000", + "value": "中山市", + "label": "中山市", + "children": [] + }, + { + "code": "445100", + "value": "潮州市", + "label": "潮州市", + "children": [ + { + "code": "445102", + "value": "湘桥区", + "label": "湘桥区" + }, + { + "code": "445103", + "value": "潮安区", + "label": "潮安区" + }, + { + "code": "445122", + "value": "饶平县", + "label": "饶平县" + } + ] + }, + { + "code": "445200", + "value": "揭阳市", + "label": "揭阳市", + "children": [ + { + "code": "445202", + "value": "榕城区", + "label": "榕城区" + }, + { + "code": "445203", + "value": "揭东区", + "label": "揭东区" + }, + { + "code": "445222", + "value": "揭西县", + "label": "揭西县" + }, + { + "code": "445224", + "value": "惠来县", + "label": "惠来县" + }, + { + "code": "445281", + "value": "普宁市", + "label": "普宁市" + } + ] + }, + { + "code": "445300", + "value": "云浮市", + "label": "云浮市", + "children": [ + { + "code": "445302", + "value": "云城区", + "label": "云城区" + }, + { + "code": "445303", + "value": "云安区", + "label": "云安区" + }, + { + "code": "445321", + "value": "新兴县", + "label": "新兴县" + }, + { + "code": "445322", + "value": "郁南县", + "label": "郁南县" + }, + { + "code": "445381", + "value": "罗定市", + "label": "罗定市" + } + ] + } + ] + }, + { + "code": "450000", + "value": "广西壮族自治区", + "label": "广西壮族自治区", + "children": [ + { + "code": "450100", + "value": "南宁市", + "label": "南宁市", + "children": [ + { + "code": "450102", + "value": "兴宁区", + "label": "兴宁区" + }, + { + "code": "450103", + "value": "青秀区", + "label": "青秀区" + }, + { + "code": "450105", + "value": "江南区", + "label": "江南区" + }, + { + "code": "450107", + "value": "西乡塘区", + "label": "西乡塘区" + }, + { + "code": "450108", + "value": "良庆区", + "label": "良庆区" + }, + { + "code": "450109", + "value": "邕宁区", + "label": "邕宁区" + }, + { + "code": "450110", + "value": "武鸣区", + "label": "武鸣区" + }, + { + "code": "450123", + "value": "隆安县", + "label": "隆安县" + }, + { + "code": "450124", + "value": "马山县", + "label": "马山县" + }, + { + "code": "450125", + "value": "上林县", + "label": "上林县" + }, + { + "code": "450126", + "value": "宾阳县", + "label": "宾阳县" + }, + { + "code": "450127", + "value": "横县", + "label": "横县" + } + ] + }, + { + "code": "450200", + "value": "柳州市", + "label": "柳州市", + "children": [ + { + "code": "450202", + "value": "城中区", + "label": "城中区" + }, + { + "code": "450203", + "value": "鱼峰区", + "label": "鱼峰区" + }, + { + "code": "450204", + "value": "柳南区", + "label": "柳南区" + }, + { + "code": "450205", + "value": "柳北区", + "label": "柳北区" + }, + { + "code": "450206", + "value": "柳江区", + "label": "柳江区" + }, + { + "code": "450222", + "value": "柳城县", + "label": "柳城县" + }, + { + "code": "450223", + "value": "鹿寨县", + "label": "鹿寨县" + }, + { + "code": "450224", + "value": "融安县", + "label": "融安县" + }, + { + "code": "450225", + "value": "融水苗族自治县", + "label": "融水苗族自治县" + }, + { + "code": "450226", + "value": "三江侗族自治县", + "label": "三江侗族自治县" + } + ] + }, + { + "code": "450300", + "value": "桂林市", + "label": "桂林市", + "children": [ + { + "code": "450302", + "value": "秀峰区", + "label": "秀峰区" + }, + { + "code": "450303", + "value": "叠彩区", + "label": "叠彩区" + }, + { + "code": "450304", + "value": "象山区", + "label": "象山区" + }, + { + "code": "450305", + "value": "七星区", + "label": "七星区" + }, + { + "code": "450311", + "value": "雁山区", + "label": "雁山区" + }, + { + "code": "450312", + "value": "临桂区", + "label": "临桂区" + }, + { + "code": "450321", + "value": "阳朔县", + "label": "阳朔县" + }, + { + "code": "450323", + "value": "灵川县", + "label": "灵川县" + }, + { + "code": "450324", + "value": "全州县", + "label": "全州县" + }, + { + "code": "450325", + "value": "兴安县", + "label": "兴安县" + }, + { + "code": "450326", + "value": "永福县", + "label": "永福县" + }, + { + "code": "450327", + "value": "灌阳县", + "label": "灌阳县" + }, + { + "code": "450328", + "value": "龙胜各族自治县", + "label": "龙胜各族自治县" + }, + { + "code": "450329", + "value": "资源县", + "label": "资源县" + }, + { + "code": "450330", + "value": "平乐县", + "label": "平乐县" + }, + { + "code": "450381", + "value": "荔浦市", + "label": "荔浦市" + }, + { + "code": "450332", + "value": "恭城瑶族自治县", + "label": "恭城瑶族自治县" + } + ] + }, + { + "code": "450400", + "value": "梧州市", + "label": "梧州市", + "children": [ + { + "code": "450403", + "value": "万秀区", + "label": "万秀区" + }, + { + "code": "450405", + "value": "长洲区", + "label": "长洲区" + }, + { + "code": "450406", + "value": "龙圩区", + "label": "龙圩区" + }, + { + "code": "450421", + "value": "苍梧县", + "label": "苍梧县" + }, + { + "code": "450422", + "value": "藤县", + "label": "藤县" + }, + { + "code": "450423", + "value": "蒙山县", + "label": "蒙山县" + }, + { + "code": "450481", + "value": "岑溪市", + "label": "岑溪市" + } + ] + }, + { + "code": "450500", + "value": "北海市", + "label": "北海市", + "children": [ + { + "code": "450502", + "value": "海城区", + "label": "海城区" + }, + { + "code": "450503", + "value": "银海区", + "label": "银海区" + }, + { + "code": "450512", + "value": "铁山港区", + "label": "铁山港区" + }, + { + "code": "450521", + "value": "合浦县", + "label": "合浦县" + } + ] + }, + { + "code": "450600", + "value": "防城港市", + "label": "防城港市", + "children": [ + { + "code": "450602", + "value": "港口区", + "label": "港口区" + }, + { + "code": "450603", + "value": "防城区", + "label": "防城区" + }, + { + "code": "450621", + "value": "上思县", + "label": "上思县" + }, + { + "code": "450681", + "value": "东兴市", + "label": "东兴市" + } + ] + }, + { + "code": "450700", + "value": "钦州市", + "label": "钦州市", + "children": [ + { + "code": "450702", + "value": "钦南区", + "label": "钦南区" + }, + { + "code": "450703", + "value": "钦北区", + "label": "钦北区" + }, + { + "code": "450721", + "value": "灵山县", + "label": "灵山县" + }, + { + "code": "450722", + "value": "浦北县", + "label": "浦北县" + } + ] + }, + { + "code": "450800", + "value": "贵港市", + "label": "贵港市", + "children": [ + { + "code": "450802", + "value": "港北区", + "label": "港北区" + }, + { + "code": "450803", + "value": "港南区", + "label": "港南区" + }, + { + "code": "450804", + "value": "覃塘区", + "label": "覃塘区" + }, + { + "code": "450821", + "value": "平南县", + "label": "平南县" + }, + { + "code": "450881", + "value": "桂平市", + "label": "桂平市" + } + ] + }, + { + "code": "450900", + "value": "玉林市", + "label": "玉林市", + "children": [ + { + "code": "450902", + "value": "玉州区", + "label": "玉州区" + }, + { + "code": "450903", + "value": "福绵区", + "label": "福绵区" + }, + { + "code": "450921", + "value": "容县", + "label": "容县" + }, + { + "code": "450922", + "value": "陆川县", + "label": "陆川县" + }, + { + "code": "450923", + "value": "博白县", + "label": "博白县" + }, + { + "code": "450924", + "value": "兴业县", + "label": "兴业县" + }, + { + "code": "450981", + "value": "北流市", + "label": "北流市" + } + ] + }, + { + "code": "451000", + "value": "百色市", + "label": "百色市", + "children": [ + { + "code": "451002", + "value": "右江区", + "label": "右江区" + }, + { + "code": "451003", + "value": "田阳区", + "label": "田阳区" + }, + { + "code": "451022", + "value": "田东县", + "label": "田东县" + }, + { + "code": "451024", + "value": "德保县", + "label": "德保县" + }, + { + "code": "451026", + "value": "那坡县", + "label": "那坡县" + }, + { + "code": "451027", + "value": "凌云县", + "label": "凌云县" + }, + { + "code": "451028", + "value": "乐业县", + "label": "乐业县" + }, + { + "code": "451029", + "value": "田林县", + "label": "田林县" + }, + { + "code": "451030", + "value": "西林县", + "label": "西林县" + }, + { + "code": "451031", + "value": "隆林各族自治县", + "label": "隆林各族自治县" + }, + { + "code": "451081", + "value": "靖西市", + "label": "靖西市" + }, + { + "code": "451082", + "value": "平果市", + "label": "平果市" + } + ] + }, + { + "code": "451100", + "value": "贺州市", + "label": "贺州市", + "children": [ + { + "code": "451102", + "value": "八步区", + "label": "八步区" + }, + { + "code": "451103", + "value": "平桂区", + "label": "平桂区" + }, + { + "code": "451121", + "value": "昭平县", + "label": "昭平县" + }, + { + "code": "451122", + "value": "钟山县", + "label": "钟山县" + }, + { + "code": "451123", + "value": "富川瑶族自治县", + "label": "富川瑶族自治县" + } + ] + }, + { + "code": "451200", + "value": "河池市", + "label": "河池市", + "children": [ + { + "code": "451202", + "value": "金城江区", + "label": "金城江区" + }, + { + "code": "451203", + "value": "宜州区", + "label": "宜州区" + }, + { + "code": "451221", + "value": "南丹县", + "label": "南丹县" + }, + { + "code": "451222", + "value": "天峨县", + "label": "天峨县" + }, + { + "code": "451223", + "value": "凤山县", + "label": "凤山县" + }, + { + "code": "451224", + "value": "东兰县", + "label": "东兰县" + }, + { + "code": "451225", + "value": "罗城仫佬族自治县", + "label": "罗城仫佬族自治县" + }, + { + "code": "451226", + "value": "环江毛南族自治县", + "label": "环江毛南族自治县" + }, + { + "code": "451227", + "value": "巴马瑶族自治县", + "label": "巴马瑶族自治县" + }, + { + "code": "451228", + "value": "都安瑶族自治县", + "label": "都安瑶族自治县" + }, + { + "code": "451229", + "value": "大化瑶族自治县", + "label": "大化瑶族自治县" + } + ] + }, + { + "code": "451300", + "value": "来宾市", + "label": "来宾市", + "children": [ + { + "code": "451302", + "value": "兴宾区", + "label": "兴宾区" + }, + { + "code": "451321", + "value": "忻城县", + "label": "忻城县" + }, + { + "code": "451322", + "value": "象州县", + "label": "象州县" + }, + { + "code": "451323", + "value": "武宣县", + "label": "武宣县" + }, + { + "code": "451324", + "value": "金秀瑶族自治县", + "label": "金秀瑶族自治县" + }, + { + "code": "451381", + "value": "合山市", + "label": "合山市" + } + ] + }, + { + "code": "451400", + "value": "崇左市", + "label": "崇左市", + "children": [ + { + "code": "451402", + "value": "江州区", + "label": "江州区" + }, + { + "code": "451421", + "value": "扶绥县", + "label": "扶绥县" + }, + { + "code": "451422", + "value": "宁明县", + "label": "宁明县" + }, + { + "code": "451423", + "value": "龙州县", + "label": "龙州县" + }, + { + "code": "451424", + "value": "大新县", + "label": "大新县" + }, + { + "code": "451425", + "value": "天等县", + "label": "天等县" + }, + { + "code": "451481", + "value": "凭祥市", + "label": "凭祥市" + } + ] + } + ] + }, + { + "code": "460000", + "value": "海南省", + "label": "海南省", + "children": [ + { + "code": "460100", + "value": "海口市", + "label": "海口市", + "children": [ + { + "code": "460105", + "value": "秀英区", + "label": "秀英区" + }, + { + "code": "460106", + "value": "龙华区", + "label": "龙华区" + }, + { + "code": "460107", + "value": "琼山区", + "label": "琼山区" + }, + { + "code": "460108", + "value": "美兰区", + "label": "美兰区" + } + ] + }, + { + "code": "460200", + "value": "三亚市", + "label": "三亚市", + "children": [ + { + "code": "460202", + "value": "海棠区", + "label": "海棠区" + }, + { + "code": "460203", + "value": "吉阳区", + "label": "吉阳区" + }, + { + "code": "460204", + "value": "天涯区", + "label": "天涯区" + }, + { + "code": "460205", + "value": "崖州区", + "label": "崖州区" + } + ] + }, + { + "code": "460300", + "value": "三沙市", + "label": "三沙市", + "children": [] + }, + { + "code": "460400", + "value": "儋州市", + "label": "儋州市", + "children": [] + } + ] + }, + { + "code": "500000", + "label": "重庆市", + "value": "重庆市", + "children": [ + { + "code": "500100", + "label": "重庆市", + "value": "重庆市", + "children": [ + { "code": "500101", "label": "渝中区", "value": "渝中区" }, + { "code": "500102", "label": "江北区", "value": "江北区" }, + { "code": "500103", "label": "南岸区", "value": "南岸区" }, + { "code": "500104", "label": "北碚区", "value": "北碚区" }, + { "code": "500105", "label": "渝北区", "value": "渝北区" }, + { "code": "500106", "label": "巴南区", "value": "巴南区" }, + { "code": "500107", "label": "合川区", "value": "合川区" }, + { "code": "500108", "label": "永川区", "value": "永川区" }, + { "code": "500109", "label": "江津区", "value": "江津区" }, + { "code": "500110", "label": "沙坪坝区", "value": "沙坪坝区" }, + { "code": "500111", "label": "九龙坡区", "value": "九龙坡区" }, + { "code": "500112", "label": "大渡口区", "value": "大渡口区" }, + { "code": "500113", "label": "铜梁区", "value": "铜梁区" }, + { "code": "500114", "label": "潼南区", "value": "潼南区" }, + { "code": "500115", "label": "荣昌区", "value": "荣昌区" }, + { "code": "500116", "label": "梁平区", "value": "梁平区" }, + { "code": "500117", "label": "武隆区", "value": "武隆区" }, + { "code": "500118", "label": "丰都县", "value": "丰都县" }, + { "code": "500119", "label": "忠县", "value": "忠县" }, + { "code": "500120", "label": "开县", "value": "开县" }, + { "code": "500121", "label": "云阳县", "value": "云阳县" }, + { "code": "500122", "label": "奉节县", "value": "奉节县" }, + { "code": "500123", "label": "巫山县", "value": "巫山县" }, + { "code": "500124", "label": "巫溪县", "value": "巫溪县" }, + { "code": "500125", "label": "石柱土家族自治县", "value": "石柱土家族自治县" }, + { "code": "500126", "label": "秀山土家族苗族自治县", "value": "秀山土家族苗族自治县" }, + { "code": "500127", "label": "酉阳土家族苗族自治县", "value": "酉阳土家族苗族自治县" }, + { "code": "500128", "label": "彭水苗族土家族自治县", "value": "彭水苗族土家族自治县" } + ] + } + ] + }, + { + "code": "510000", + "value": "四川省", + "label": "四川省", + "children": [ + { + "code": "510100", + "value": "成都市", + "label": "成都市", + "children": [ + { + "code": "510104", + "value": "锦江区", + "label": "锦江区" + }, + { + "code": "510105", + "value": "青羊区", + "label": "青羊区" + }, + { + "code": "510106", + "value": "金牛区", + "label": "金牛区" + }, + { + "code": "510107", + "value": "武侯区", + "label": "武侯区" + }, + { + "code": "510108", + "value": "成华区", + "label": "成华区" + }, + { + "code": "510112", + "value": "龙泉驿区", + "label": "龙泉驿区" + }, + { + "code": "510113", + "value": "青白江区", + "label": "青白江区" + }, + { + "code": "510114", + "value": "新都区", + "label": "新都区" + }, + { + "code": "510115", + "value": "温江区", + "label": "温江区" + }, + { + "code": "510116", + "value": "双流区", + "label": "双流区" + }, + { + "code": "510117", + "value": "郫都区", + "label": "郫都区" + }, + { + "code": "510118", + "value": "新津区", + "label": "新津区" + }, + { + "code": "510121", + "value": "金堂县", + "label": "金堂县" + }, + { + "code": "510129", + "value": "大邑县", + "label": "大邑县" + }, + { + "code": "510131", + "value": "蒲江县", + "label": "蒲江县" + }, + { + "code": "510181", + "value": "都江堰市", + "label": "都江堰市" + }, + { + "code": "510182", + "value": "彭州市", + "label": "彭州市" + }, + { + "code": "510183", + "value": "邛崃市", + "label": "邛崃市" + }, + { + "code": "510184", + "value": "崇州市", + "label": "崇州市" + }, + { + "code": "510185", + "value": "简阳市", + "label": "简阳市" + } + ] + }, + { + "code": "510300", + "value": "自贡市", + "label": "自贡市", + "children": [ + { + "code": "510302", + "value": "自流井区", + "label": "自流井区" + }, + { + "code": "510303", + "value": "贡井区", + "label": "贡井区" + }, + { + "code": "510304", + "value": "大安区", + "label": "大安区" + }, + { + "code": "510311", + "value": "沿滩区", + "label": "沿滩区" + }, + { + "code": "510321", + "value": "荣县", + "label": "荣县" + }, + { + "code": "510322", + "value": "富顺县", + "label": "富顺县" + } + ] + }, + { + "code": "510400", + "value": "攀枝花市", + "label": "攀枝花市", + "children": [ + { + "code": "510402", + "value": "东区", + "label": "东区" + }, + { + "code": "510403", + "value": "西区", + "label": "西区" + }, + { + "code": "510411", + "value": "仁和区", + "label": "仁和区" + }, + { + "code": "510421", + "value": "米易县", + "label": "米易县" + }, + { + "code": "510422", + "value": "盐边县", + "label": "盐边县" + } + ] + }, + { + "code": "510500", + "value": "泸州市", + "label": "泸州市", + "children": [ + { + "code": "510502", + "value": "江阳区", + "label": "江阳区" + }, + { + "code": "510503", + "value": "纳溪区", + "label": "纳溪区" + }, + { + "code": "510504", + "value": "龙马潭区", + "label": "龙马潭区" + }, + { + "code": "510521", + "value": "泸县", + "label": "泸县" + }, + { + "code": "510522", + "value": "合江县", + "label": "合江县" + }, + { + "code": "510524", + "value": "叙永县", + "label": "叙永县" + }, + { + "code": "510525", + "value": "古蔺县", + "label": "古蔺县" + } + ] + }, + { + "code": "510600", + "value": "德阳市", + "label": "德阳市", + "children": [ + { + "code": "510603", + "value": "旌阳区", + "label": "旌阳区" + }, + { + "code": "510604", + "value": "罗江区", + "label": "罗江区" + }, + { + "code": "510623", + "value": "中江县", + "label": "中江县" + }, + { + "code": "510681", + "value": "广汉市", + "label": "广汉市" + }, + { + "code": "510682", + "value": "什邡市", + "label": "什邡市" + }, + { + "code": "510683", + "value": "绵竹市", + "label": "绵竹市" + } + ] + }, + { + "code": "510700", + "value": "绵阳市", + "label": "绵阳市", + "children": [ + { + "code": "510703", + "value": "涪城区", + "label": "涪城区" + }, + { + "code": "510704", + "value": "游仙区", + "label": "游仙区" + }, + { + "code": "510705", + "value": "安州区", + "label": "安州区" + }, + { + "code": "510722", + "value": "三台县", + "label": "三台县" + }, + { + "code": "510723", + "value": "盐亭县", + "label": "盐亭县" + }, + { + "code": "510725", + "value": "梓潼县", + "label": "梓潼县" + }, + { + "code": "510726", + "value": "北川羌族自治县", + "label": "北川羌族自治县" + }, + { + "code": "510727", + "value": "平武县", + "label": "平武县" + }, + { + "code": "510781", + "value": "江油市", + "label": "江油市" + } + ] + }, + { + "code": "510800", + "value": "广元市", + "label": "广元市", + "children": [ + { + "code": "510802", + "value": "利州区", + "label": "利州区" + }, + { + "code": "510811", + "value": "昭化区", + "label": "昭化区" + }, + { + "code": "510812", + "value": "朝天区", + "label": "朝天区" + }, + { + "code": "510821", + "value": "旺苍县", + "label": "旺苍县" + }, + { + "code": "510822", + "value": "青川县", + "label": "青川县" + }, + { + "code": "510823", + "value": "剑阁县", + "label": "剑阁县" + }, + { + "code": "510824", + "value": "苍溪县", + "label": "苍溪县" + } + ] + }, + { + "code": "510900", + "value": "遂宁市", + "label": "遂宁市", + "children": [ + { + "code": "510903", + "value": "船山区", + "label": "船山区" + }, + { + "code": "510904", + "value": "安居区", + "label": "安居区" + }, + { + "code": "510921", + "value": "蓬溪县", + "label": "蓬溪县" + }, + { + "code": "510923", + "value": "大英县", + "label": "大英县" + }, + { + "code": "510981", + "value": "射洪市", + "label": "射洪市" + } + ] + }, + { + "code": "511000", + "value": "内江市", + "label": "内江市", + "children": [ + { + "code": "511002", + "value": "市中区", + "label": "市中区" + }, + { + "code": "511011", + "value": "东兴区", + "label": "东兴区" + }, + { + "code": "511024", + "value": "威远县", + "label": "威远县" + }, + { + "code": "511025", + "value": "资中县", + "label": "资中县" + }, + { + "code": "511083", + "value": "隆昌市", + "label": "隆昌市" + } + ] + }, + { + "code": "511100", + "value": "乐山市", + "label": "乐山市", + "children": [ + { + "code": "511102", + "value": "市中区", + "label": "市中区" + }, + { + "code": "511111", + "value": "沙湾区", + "label": "沙湾区" + }, + { + "code": "511112", + "value": "五通桥区", + "label": "五通桥区" + }, + { + "code": "511113", + "value": "金口河区", + "label": "金口河区" + }, + { + "code": "511123", + "value": "犍为县", + "label": "犍为县" + }, + { + "code": "511124", + "value": "井研县", + "label": "井研县" + }, + { + "code": "511126", + "value": "夹江县", + "label": "夹江县" + }, + { + "code": "511129", + "value": "沐川县", + "label": "沐川县" + }, + { + "code": "511132", + "value": "峨边彝族自治县", + "label": "峨边彝族自治县" + }, + { + "code": "511133", + "value": "马边彝族自治县", + "label": "马边彝族自治县" + }, + { + "code": "511181", + "value": "峨眉山市", + "label": "峨眉山市" + } + ] + }, + { + "code": "511300", + "value": "南充市", + "label": "南充市", + "children": [ + { + "code": "511302", + "value": "顺庆区", + "label": "顺庆区" + }, + { + "code": "511303", + "value": "高坪区", + "label": "高坪区" + }, + { + "code": "511304", + "value": "嘉陵区", + "label": "嘉陵区" + }, + { + "code": "511321", + "value": "南部县", + "label": "南部县" + }, + { + "code": "511322", + "value": "营山县", + "label": "营山县" + }, + { + "code": "511323", + "value": "蓬安县", + "label": "蓬安县" + }, + { + "code": "511324", + "value": "仪陇县", + "label": "仪陇县" + }, + { + "code": "511325", + "value": "西充县", + "label": "西充县" + }, + { + "code": "511381", + "value": "阆中市", + "label": "阆中市" + } + ] + }, + { + "code": "511400", + "value": "眉山市", + "label": "眉山市", + "children": [ + { + "code": "511402", + "value": "东坡区", + "label": "东坡区" + }, + { + "code": "511403", + "value": "彭山区", + "label": "彭山区" + }, + { + "code": "511421", + "value": "仁寿县", + "label": "仁寿县" + }, + { + "code": "511423", + "value": "洪雅县", + "label": "洪雅县" + }, + { + "code": "511424", + "value": "丹棱县", + "label": "丹棱县" + }, + { + "code": "511425", + "value": "青神县", + "label": "青神县" + } + ] + }, + { + "code": "511500", + "value": "宜宾市", + "label": "宜宾市", + "children": [ + { + "code": "511502", + "value": "翠屏区", + "label": "翠屏区" + }, + { + "code": "511503", + "value": "南溪区", + "label": "南溪区" + }, + { + "code": "511504", + "value": "叙州区", + "label": "叙州区" + }, + { + "code": "511523", + "value": "江安县", + "label": "江安县" + }, + { + "code": "511524", + "value": "长宁县", + "label": "长宁县" + }, + { + "code": "511525", + "value": "高县", + "label": "高县" + }, + { + "code": "511526", + "value": "珙县", + "label": "珙县" + }, + { + "code": "511527", + "value": "筠连县", + "label": "筠连县" + }, + { + "code": "511528", + "value": "兴文县", + "label": "兴文县" + }, + { + "code": "511529", + "value": "屏山县", + "label": "屏山县" + } + ] + }, + { + "code": "511600", + "value": "广安市", + "label": "广安市", + "children": [ + { + "code": "511602", + "value": "广安区", + "label": "广安区" + }, + { + "code": "511603", + "value": "前锋区", + "label": "前锋区" + }, + { + "code": "511621", + "value": "岳池县", + "label": "岳池县" + }, + { + "code": "511622", + "value": "武胜县", + "label": "武胜县" + }, + { + "code": "511623", + "value": "邻水县", + "label": "邻水县" + }, + { + "code": "511681", + "value": "华蓥市", + "label": "华蓥市" + } + ] + }, + { + "code": "511700", + "value": "达州市", + "label": "达州市", + "children": [ + { + "code": "511702", + "value": "通川区", + "label": "通川区" + }, + { + "code": "511703", + "value": "达川区", + "label": "达川区" + }, + { + "code": "511722", + "value": "宣汉县", + "label": "宣汉县" + }, + { + "code": "511723", + "value": "开江县", + "label": "开江县" + }, + { + "code": "511724", + "value": "大竹县", + "label": "大竹县" + }, + { + "code": "511725", + "value": "渠县", + "label": "渠县" + }, + { + "code": "511781", + "value": "万源市", + "label": "万源市" + } + ] + }, + { + "code": "511800", + "value": "雅安市", + "label": "雅安市", + "children": [ + { + "code": "511802", + "value": "雨城区", + "label": "雨城区" + }, + { + "code": "511803", + "value": "名山区", + "label": "名山区" + }, + { + "code": "511822", + "value": "荥经县", + "label": "荥经县" + }, + { + "code": "511823", + "value": "汉源县", + "label": "汉源县" + }, + { + "code": "511824", + "value": "石棉县", + "label": "石棉县" + }, + { + "code": "511825", + "value": "天全县", + "label": "天全县" + }, + { + "code": "511826", + "value": "芦山县", + "label": "芦山县" + }, + { + "code": "511827", + "value": "宝兴县", + "label": "宝兴县" + } + ] + }, + { + "code": "511900", + "value": "巴中市", + "label": "巴中市", + "children": [ + { + "code": "511902", + "value": "巴州区", + "label": "巴州区" + }, + { + "code": "511903", + "value": "恩阳区", + "label": "恩阳区" + }, + { + "code": "511921", + "value": "通江县", + "label": "通江县" + }, + { + "code": "511922", + "value": "南江县", + "label": "南江县" + }, + { + "code": "511923", + "value": "平昌县", + "label": "平昌县" + } + ] + }, + { + "code": "512000", + "value": "资阳市", + "label": "资阳市", + "children": [ + { + "code": "512002", + "value": "雁江区", + "label": "雁江区" + }, + { + "code": "512021", + "value": "安岳县", + "label": "安岳县" + }, + { + "code": "512022", + "value": "乐至县", + "label": "乐至县" + } + ] + }, + { + "code": "513200", + "value": "阿坝藏族羌族自治州", + "label": "阿坝藏族羌族自治州", + "children": [ + { + "code": "513201", + "value": "马尔康市", + "label": "马尔康市" + }, + { + "code": "513221", + "value": "汶川县", + "label": "汶川县" + }, + { + "code": "513222", + "value": "理县", + "label": "理县" + }, + { + "code": "513223", + "value": "茂县", + "label": "茂县" + }, + { + "code": "513224", + "value": "松潘县", + "label": "松潘县" + }, + { + "code": "513225", + "value": "九寨沟县", + "label": "九寨沟县" + }, + { + "code": "513226", + "value": "金川县", + "label": "金川县" + }, + { + "code": "513227", + "value": "小金县", + "label": "小金县" + }, + { + "code": "513228", + "value": "黑水县", + "label": "黑水县" + }, + { + "code": "513230", + "value": "壤塘县", + "label": "壤塘县" + }, + { + "code": "513231", + "value": "阿坝县", + "label": "阿坝县" + }, + { + "code": "513232", + "value": "若尔盖县", + "label": "若尔盖县" + }, + { + "code": "513233", + "value": "红原县", + "label": "红原县" + } + ] + }, + { + "code": "513300", + "value": "甘孜藏族自治州", + "label": "甘孜藏族自治州", + "children": [ + { + "code": "513301", + "value": "康定市", + "label": "康定市" + }, + { + "code": "513322", + "value": "泸定县", + "label": "泸定县" + }, + { + "code": "513323", + "value": "丹巴县", + "label": "丹巴县" + }, + { + "code": "513324", + "value": "九龙县", + "label": "九龙县" + }, + { + "code": "513325", + "value": "雅江县", + "label": "雅江县" + }, + { + "code": "513326", + "value": "道孚县", + "label": "道孚县" + }, + { + "code": "513327", + "value": "炉霍县", + "label": "炉霍县" + }, + { + "code": "513328", + "value": "甘孜县", + "label": "甘孜县" + }, + { + "code": "513329", + "value": "新龙县", + "label": "新龙县" + }, + { + "code": "513330", + "value": "德格县", + "label": "德格县" + }, + { + "code": "513331", + "value": "白玉县", + "label": "白玉县" + }, + { + "code": "513332", + "value": "石渠县", + "label": "石渠县" + }, + { + "code": "513333", + "value": "色达县", + "label": "色达县" + }, + { + "code": "513334", + "value": "理塘县", + "label": "理塘县" + }, + { + "code": "513335", + "value": "巴塘县", + "label": "巴塘县" + }, + { + "code": "513336", + "value": "乡城县", + "label": "乡城县" + }, + { + "code": "513337", + "value": "稻城县", + "label": "稻城县" + }, + { + "code": "513338", + "value": "得荣县", + "label": "得荣县" + } + ] + }, + { + "code": "513400", + "value": "凉山彝族自治州", + "label": "凉山彝族自治州", + "children": [ + { + "code": "513401", + "value": "西昌市", + "label": "西昌市" + }, + { + "code": "513422", + "value": "木里藏族自治县", + "label": "木里藏族自治县" + }, + { + "code": "513423", + "value": "盐源县", + "label": "盐源县" + }, + { + "code": "513424", + "value": "德昌县", + "label": "德昌县" + }, + { + "code": "513425", + "value": "会理县", + "label": "会理县" + }, + { + "code": "513426", + "value": "会东县", + "label": "会东县" + }, + { + "code": "513427", + "value": "宁南县", + "label": "宁南县" + }, + { + "code": "513428", + "value": "普格县", + "label": "普格县" + }, + { + "code": "513429", + "value": "布拖县", + "label": "布拖县" + }, + { + "code": "513430", + "value": "金阳县", + "label": "金阳县" + }, + { + "code": "513431", + "value": "昭觉县", + "label": "昭觉县" + }, + { + "code": "513432", + "value": "喜德县", + "label": "喜德县" + }, + { + "code": "513433", + "value": "冕宁县", + "label": "冕宁县" + }, + { + "code": "513434", + "value": "越西县", + "label": "越西县" + }, + { + "code": "513435", + "value": "甘洛县", + "label": "甘洛县" + }, + { + "code": "513436", + "value": "美姑县", + "label": "美姑县" + }, + { + "code": "513437", + "value": "雷波县", + "label": "雷波县" + } + ] + } + ] + }, + { + "code": "520000", + "value": "贵州省", + "label": "贵州省", + "children": [ + { + "code": "520100", + "value": "贵阳市", + "label": "贵阳市", + "children": [ + { + "code": "520102", + "value": "南明区", + "label": "南明区" + }, + { + "code": "520103", + "value": "云岩区", + "label": "云岩区" + }, + { + "code": "520111", + "value": "花溪区", + "label": "花溪区" + }, + { + "code": "520112", + "value": "乌当区", + "label": "乌当区" + }, + { + "code": "520113", + "value": "白云区", + "label": "白云区" + }, + { + "code": "520115", + "value": "观山湖区", + "label": "观山湖区" + }, + { + "code": "520121", + "value": "开阳县", + "label": "开阳县" + }, + { + "code": "520122", + "value": "息烽县", + "label": "息烽县" + }, + { + "code": "520123", + "value": "修文县", + "label": "修文县" + }, + { + "code": "520181", + "value": "清镇市", + "label": "清镇市" + } + ] + }, + { + "code": "520200", + "value": "六盘水市", + "label": "六盘水市", + "children": [ + { + "code": "520201", + "value": "钟山区", + "label": "钟山区" + }, + { + "code": "520203", + "value": "六枝特区", + "label": "六枝特区" + }, + { + "code": "520221", + "value": "水城县", + "label": "水城县" + }, + { + "code": "520281", + "value": "盘州市", + "label": "盘州市" + } + ] + }, + { + "code": "520300", + "value": "遵义市", + "label": "遵义市", + "children": [ + { + "code": "520302", + "value": "红花岗区", + "label": "红花岗区" + }, + { + "code": "520303", + "value": "汇川区", + "label": "汇川区" + }, + { + "code": "520304", + "value": "播州区", + "label": "播州区" + }, + { + "code": "520322", + "value": "桐梓县", + "label": "桐梓县" + }, + { + "code": "520323", + "value": "绥阳县", + "label": "绥阳县" + }, + { + "code": "520324", + "value": "正安县", + "label": "正安县" + }, + { + "code": "520325", + "value": "道真仡佬族苗族自治县", + "label": "道真仡佬族苗族自治县" + }, + { + "code": "520326", + "value": "务川仡佬族苗族自治县", + "label": "务川仡佬族苗族自治县" + }, + { + "code": "520327", + "value": "凤冈县", + "label": "凤冈县" + }, + { + "code": "520328", + "value": "湄潭县", + "label": "湄潭县" + }, + { + "code": "520329", + "value": "余庆县", + "label": "余庆县" + }, + { + "code": "520330", + "value": "习水县", + "label": "习水县" + }, + { + "code": "520381", + "value": "赤水市", + "label": "赤水市" + }, + { + "code": "520382", + "value": "仁怀市", + "label": "仁怀市" + } + ] + }, + { + "code": "520400", + "value": "安顺市", + "label": "安顺市", + "children": [ + { + "code": "520402", + "value": "西秀区", + "label": "西秀区" + }, + { + "code": "520403", + "value": "平坝区", + "label": "平坝区" + }, + { + "code": "520422", + "value": "普定县", + "label": "普定县" + }, + { + "code": "520423", + "value": "镇宁布依族苗族自治县", + "label": "镇宁布依族苗族自治县" + }, + { + "code": "520424", + "value": "关岭布依族苗族自治县", + "label": "关岭布依族苗族自治县" + }, + { + "code": "520425", + "value": "紫云苗族布依族自治县", + "label": "紫云苗族布依族自治县" + } + ] + }, + { + "code": "520500", + "value": "毕节市", + "label": "毕节市", + "children": [ + { + "code": "520502", + "value": "七星关区", + "label": "七星关区" + }, + { + "code": "520521", + "value": "大方县", + "label": "大方县" + }, + { + "code": "520522", + "value": "黔西县", + "label": "黔西县" + }, + { + "code": "520523", + "value": "金沙县", + "label": "金沙县" + }, + { + "code": "520524", + "value": "织金县", + "label": "织金县" + }, + { + "code": "520525", + "value": "纳雍县", + "label": "纳雍县" + }, + { + "code": "520526", + "value": "威宁彝族回族苗族自治县", + "label": "威宁彝族回族苗族自治县" + }, + { + "code": "520527", + "value": "赫章县", + "label": "赫章县" + } + ] + }, + { + "code": "520600", + "value": "铜仁市", + "label": "铜仁市", + "children": [ + { + "code": "520602", + "value": "碧江区", + "label": "碧江区" + }, + { + "code": "520603", + "value": "万山区", + "label": "万山区" + }, + { + "code": "520621", + "value": "江口县", + "label": "江口县" + }, + { + "code": "520622", + "value": "玉屏侗族自治县", + "label": "玉屏侗族自治县" + }, + { + "code": "520623", + "value": "石阡县", + "label": "石阡县" + }, + { + "code": "520624", + "value": "思南县", + "label": "思南县" + }, + { + "code": "520625", + "value": "印江土家族苗族自治县", + "label": "印江土家族苗族自治县" + }, + { + "code": "520626", + "value": "德江县", + "label": "德江县" + }, + { + "code": "520627", + "value": "沿河土家族自治县", + "label": "沿河土家族自治县" + }, + { + "code": "520628", + "value": "松桃苗族自治县", + "label": "松桃苗族自治县" + } + ] + }, + { + "code": "522300", + "value": "黔西南布依族苗族自治州", + "label": "黔西南布依族苗族自治州", + "children": [ + { + "code": "522301", + "value": "兴义市", + "label": "兴义市" + }, + { + "code": "522302", + "value": "兴仁市", + "label": "兴仁市" + }, + { + "code": "522323", + "value": "普安县", + "label": "普安县" + }, + { + "code": "522324", + "value": "晴隆县", + "label": "晴隆县" + }, + { + "code": "522325", + "value": "贞丰县", + "label": "贞丰县" + }, + { + "code": "522326", + "value": "望谟县", + "label": "望谟县" + }, + { + "code": "522327", + "value": "册亨县", + "label": "册亨县" + }, + { + "code": "522328", + "value": "安龙县", + "label": "安龙县" + } + ] + }, + { + "code": "522600", + "value": "黔东南苗族侗族自治州", + "label": "黔东南苗族侗族自治州", + "children": [ + { + "code": "522601", + "value": "凯里市", + "label": "凯里市" + }, + { + "code": "522622", + "value": "黄平县", + "label": "黄平县" + }, + { + "code": "522623", + "value": "施秉县", + "label": "施秉县" + }, + { + "code": "522624", + "value": "三穗县", + "label": "三穗县" + }, + { + "code": "522625", + "value": "镇远县", + "label": "镇远县" + }, + { + "code": "522626", + "value": "岑巩县", + "label": "岑巩县" + }, + { + "code": "522627", + "value": "天柱县", + "label": "天柱县" + }, + { + "code": "522628", + "value": "锦屏县", + "label": "锦屏县" + }, + { + "code": "522629", + "value": "剑河县", + "label": "剑河县" + }, + { + "code": "522630", + "value": "台江县", + "label": "台江县" + }, + { + "code": "522631", + "value": "黎平县", + "label": "黎平县" + }, + { + "code": "522632", + "value": "榕江县", + "label": "榕江县" + }, + { + "code": "522633", + "value": "从江县", + "label": "从江县" + }, + { + "code": "522634", + "value": "雷山县", + "label": "雷山县" + }, + { + "code": "522635", + "value": "麻江县", + "label": "麻江县" + }, + { + "code": "522636", + "value": "丹寨县", + "label": "丹寨县" + } + ] + }, + { + "code": "522700", + "value": "黔南布依族苗族自治州", + "label": "黔南布依族苗族自治州", + "children": [ + { + "code": "522701", + "value": "都匀市", + "label": "都匀市" + }, + { + "code": "522702", + "value": "福泉市", + "label": "福泉市" + }, + { + "code": "522722", + "value": "荔波县", + "label": "荔波县" + }, + { + "code": "522723", + "value": "贵定县", + "label": "贵定县" + }, + { + "code": "522725", + "value": "瓮安县", + "label": "瓮安县" + }, + { + "code": "522726", + "value": "独山县", + "label": "独山县" + }, + { + "code": "522727", + "value": "平塘县", + "label": "平塘县" + }, + { + "code": "522728", + "value": "罗甸县", + "label": "罗甸县" + }, + { + "code": "522729", + "value": "长顺县", + "label": "长顺县" + }, + { + "code": "522730", + "value": "龙里县", + "label": "龙里县" + }, + { + "code": "522731", + "value": "惠水县", + "label": "惠水县" + }, + { + "code": "522732", + "value": "三都水族自治县", + "label": "三都水族自治县" + } + ] + } + ] + }, + { + "code": "530000", + "value": "云南省", + "label": "云南省", + "children": [ + { + "code": "530100", + "value": "昆明市", + "label": "昆明市", + "children": [ + { + "code": "530102", + "value": "五华区", + "label": "五华区" + }, + { + "code": "530103", + "value": "盘龙区", + "label": "盘龙区" + }, + { + "code": "530111", + "value": "官渡区", + "label": "官渡区" + }, + { + "code": "530112", + "value": "西山区", + "label": "西山区" + }, + { + "code": "530113", + "value": "东川区", + "label": "东川区" + }, + { + "code": "530114", + "value": "呈贡区", + "label": "呈贡区" + }, + { + "code": "530115", + "value": "晋宁区", + "label": "晋宁区" + }, + { + "code": "530124", + "value": "富民县", + "label": "富民县" + }, + { + "code": "530125", + "value": "宜良县", + "label": "宜良县" + }, + { + "code": "530126", + "value": "石林彝族自治县", + "label": "石林彝族自治县" + }, + { + "code": "530127", + "value": "嵩明县", + "label": "嵩明县" + }, + { + "code": "530128", + "value": "禄劝彝族苗族自治县", + "label": "禄劝彝族苗族自治县" + }, + { + "code": "530129", + "value": "寻甸回族彝族自治县", + "label": "寻甸回族彝族自治县" + }, + { + "code": "530181", + "value": "安宁市", + "label": "安宁市" + } + ] + }, + { + "code": "530300", + "value": "曲靖市", + "label": "曲靖市", + "children": [ + { + "code": "530302", + "value": "麒麟区", + "label": "麒麟区" + }, + { + "code": "530303", + "value": "沾益区", + "label": "沾益区" + }, + { + "code": "530304", + "value": "马龙区", + "label": "马龙区" + }, + { + "code": "530322", + "value": "陆良县", + "label": "陆良县" + }, + { + "code": "530323", + "value": "师宗县", + "label": "师宗县" + }, + { + "code": "530324", + "value": "罗平县", + "label": "罗平县" + }, + { + "code": "530325", + "value": "富源县", + "label": "富源县" + }, + { + "code": "530326", + "value": "会泽县", + "label": "会泽县" + }, + { + "code": "530381", + "value": "宣威市", + "label": "宣威市" + } + ] + }, + { + "code": "530400", + "value": "玉溪市", + "label": "玉溪市", + "children": [ + { + "code": "530402", + "value": "红塔区", + "label": "红塔区" + }, + { + "code": "530403", + "value": "江川区", + "label": "江川区" + }, + { + "code": "530423", + "value": "通海县", + "label": "通海县" + }, + { + "code": "530424", + "value": "华宁县", + "label": "华宁县" + }, + { + "code": "530425", + "value": "易门县", + "label": "易门县" + }, + { + "code": "530426", + "value": "峨山彝族自治县", + "label": "峨山彝族自治县" + }, + { + "code": "530427", + "value": "新平彝族傣族自治县", + "label": "新平彝族傣族自治县" + }, + { + "code": "530428", + "value": "元江哈尼族彝族傣族自治县", + "label": "元江哈尼族彝族傣族自治县" + }, + { + "code": "530481", + "value": "澄江市", + "label": "澄江市" + } + ] + }, + { + "code": "530500", + "value": "保山市", + "label": "保山市", + "children": [ + { + "code": "530502", + "value": "隆阳区", + "label": "隆阳区" + }, + { + "code": "530521", + "value": "施甸县", + "label": "施甸县" + }, + { + "code": "530523", + "value": "龙陵县", + "label": "龙陵县" + }, + { + "code": "530524", + "value": "昌宁县", + "label": "昌宁县" + }, + { + "code": "530581", + "value": "腾冲市", + "label": "腾冲市" + } + ] + }, + { + "code": "530600", + "value": "昭通市", + "label": "昭通市", + "children": [ + { + "code": "530602", + "value": "昭阳区", + "label": "昭阳区" + }, + { + "code": "530621", + "value": "鲁甸县", + "label": "鲁甸县" + }, + { + "code": "530622", + "value": "巧家县", + "label": "巧家县" + }, + { + "code": "530623", + "value": "盐津县", + "label": "盐津县" + }, + { + "code": "530624", + "value": "大关县", + "label": "大关县" + }, + { + "code": "530625", + "value": "永善县", + "label": "永善县" + }, + { + "code": "530626", + "value": "绥江县", + "label": "绥江县" + }, + { + "code": "530627", + "value": "镇雄县", + "label": "镇雄县" + }, + { + "code": "530628", + "value": "彝良县", + "label": "彝良县" + }, + { + "code": "530629", + "value": "威信县", + "label": "威信县" + }, + { + "code": "530681", + "value": "水富市", + "label": "水富市" + } + ] + }, + { + "code": "530700", + "value": "丽江市", + "label": "丽江市", + "children": [ + { + "code": "530702", + "value": "古城区", + "label": "古城区" + }, + { + "code": "530721", + "value": "玉龙纳西族自治县", + "label": "玉龙纳西族自治县" + }, + { + "code": "530722", + "value": "永胜县", + "label": "永胜县" + }, + { + "code": "530723", + "value": "华坪县", + "label": "华坪县" + }, + { + "code": "530724", + "value": "宁蒗彝族自治县", + "label": "宁蒗彝族自治县" + } + ] + }, + { + "code": "530800", + "value": "普洱市", + "label": "普洱市", + "children": [ + { + "code": "530802", + "value": "思茅区", + "label": "思茅区" + }, + { + "code": "530821", + "value": "宁洱哈尼族彝族自治县", + "label": "宁洱哈尼族彝族自治县" + }, + { + "code": "530822", + "value": "墨江哈尼族自治县", + "label": "墨江哈尼族自治县" + }, + { + "code": "530823", + "value": "景东彝族自治县", + "label": "景东彝族自治县" + }, + { + "code": "530824", + "value": "景谷傣族彝族自治县", + "label": "景谷傣族彝族自治县" + }, + { + "code": "530825", + "value": "镇沅彝族哈尼族拉祜族自治县", + "label": "镇沅彝族哈尼族拉祜族自治县" + }, + { + "code": "530826", + "value": "江城哈尼族彝族自治县", + "label": "江城哈尼族彝族自治县" + }, + { + "code": "530827", + "value": "孟连傣族拉祜族佤族自治县", + "label": "孟连傣族拉祜族佤族自治县" + }, + { + "code": "530828", + "value": "澜沧拉祜族自治县", + "label": "澜沧拉祜族自治县" + }, + { + "code": "530829", + "value": "西盟佤族自治县", + "label": "西盟佤族自治县" + } + ] + }, + { + "code": "530900", + "value": "临沧市", + "label": "临沧市", + "children": [ + { + "code": "530902", + "value": "临翔区", + "label": "临翔区" + }, + { + "code": "530921", + "value": "凤庆县", + "label": "凤庆县" + }, + { + "code": "530922", + "value": "云县", + "label": "云县" + }, + { + "code": "530923", + "value": "永德县", + "label": "永德县" + }, + { + "code": "530924", + "value": "镇康县", + "label": "镇康县" + }, + { + "code": "530925", + "value": "双江拉祜族佤族布朗族傣族自治县", + "label": "双江拉祜族佤族布朗族傣族自治县" + }, + { + "code": "530926", + "value": "耿马傣族佤族自治县", + "label": "耿马傣族佤族自治县" + }, + { + "code": "530927", + "value": "沧源佤族自治县", + "label": "沧源佤族自治县" + } + ] + }, + { + "code": "532300", + "value": "楚雄彝族自治州", + "label": "楚雄彝族自治州", + "children": [ + { + "code": "532301", + "value": "楚雄市", + "label": "楚雄市" + }, + { + "code": "532322", + "value": "双柏县", + "label": "双柏县" + }, + { + "code": "532323", + "value": "牟定县", + "label": "牟定县" + }, + { + "code": "532324", + "value": "南华县", + "label": "南华县" + }, + { + "code": "532325", + "value": "姚安县", + "label": "姚安县" + }, + { + "code": "532326", + "value": "大姚县", + "label": "大姚县" + }, + { + "code": "532327", + "value": "永仁县", + "label": "永仁县" + }, + { + "code": "532328", + "value": "元谋县", + "label": "元谋县" + }, + { + "code": "532329", + "value": "武定县", + "label": "武定县" + }, + { + "code": "532331", + "value": "禄丰县", + "label": "禄丰县" + } + ] + }, + { + "code": "532500", + "value": "红河哈尼族彝族自治州", + "label": "红河哈尼族彝族自治州", + "children": [ + { + "code": "532501", + "value": "个旧市", + "label": "个旧市" + }, + { + "code": "532502", + "value": "开远市", + "label": "开远市" + }, + { + "code": "532503", + "value": "蒙自市", + "label": "蒙自市" + }, + { + "code": "532504", + "value": "弥勒市", + "label": "弥勒市" + }, + { + "code": "532523", + "value": "屏边苗族自治县", + "label": "屏边苗族自治县" + }, + { + "code": "532524", + "value": "建水县", + "label": "建水县" + }, + { + "code": "532525", + "value": "石屏县", + "label": "石屏县" + }, + { + "code": "532527", + "value": "泸西县", + "label": "泸西县" + }, + { + "code": "532528", + "value": "元阳县", + "label": "元阳县" + }, + { + "code": "532529", + "value": "红河县", + "label": "红河县" + }, + { + "code": "532530", + "value": "金平苗族瑶族傣族自治县", + "label": "金平苗族瑶族傣族自治县" + }, + { + "code": "532531", + "value": "绿春县", + "label": "绿春县" + }, + { + "code": "532532", + "value": "河口瑶族自治县", + "label": "河口瑶族自治县" + } + ] + }, + { + "code": "532600", + "value": "文山壮族苗族自治州", + "label": "文山壮族苗族自治州", + "children": [ + { + "code": "532601", + "value": "文山市", + "label": "文山市" + }, + { + "code": "532622", + "value": "砚山县", + "label": "砚山县" + }, + { + "code": "532623", + "value": "西畴县", + "label": "西畴县" + }, + { + "code": "532624", + "value": "麻栗坡县", + "label": "麻栗坡县" + }, + { + "code": "532625", + "value": "马关县", + "label": "马关县" + }, + { + "code": "532626", + "value": "丘北县", + "label": "丘北县" + }, + { + "code": "532627", + "value": "广南县", + "label": "广南县" + }, + { + "code": "532628", + "value": "富宁县", + "label": "富宁县" + } + ] + }, + { + "code": "532800", + "value": "西双版纳傣族自治州", + "label": "西双版纳傣族自治州", + "children": [ + { + "code": "532801", + "value": "景洪市", + "label": "景洪市" + }, + { + "code": "532822", + "value": "勐海县", + "label": "勐海县" + }, + { + "code": "532823", + "value": "勐腊县", + "label": "勐腊县" + } + ] + }, + { + "code": "532900", + "value": "大理白族自治州", + "label": "大理白族自治州", + "children": [ + { + "code": "532901", + "value": "大理市", + "label": "大理市" + }, + { + "code": "532922", + "value": "漾濞彝族自治县", + "label": "漾濞彝族自治县" + }, + { + "code": "532923", + "value": "祥云县", + "label": "祥云县" + }, + { + "code": "532924", + "value": "宾川县", + "label": "宾川县" + }, + { + "code": "532925", + "value": "弥渡县", + "label": "弥渡县" + }, + { + "code": "532926", + "value": "南涧彝族自治县", + "label": "南涧彝族自治县" + }, + { + "code": "532927", + "value": "巍山彝族回族自治县", + "label": "巍山彝族回族自治县" + }, + { + "code": "532928", + "value": "永平县", + "label": "永平县" + }, + { + "code": "532929", + "value": "云龙县", + "label": "云龙县" + }, + { + "code": "532930", + "value": "洱源县", + "label": "洱源县" + }, + { + "code": "532931", + "value": "剑川县", + "label": "剑川县" + }, + { + "code": "532932", + "value": "鹤庆县", + "label": "鹤庆县" + } + ] + }, + { + "code": "533100", + "value": "德宏傣族景颇族自治州", + "label": "德宏傣族景颇族自治州", + "children": [ + { + "code": "533102", + "value": "瑞丽市", + "label": "瑞丽市" + }, + { + "code": "533103", + "value": "芒市", + "label": "芒市" + }, + { + "code": "533122", + "value": "梁河县", + "label": "梁河县" + }, + { + "code": "533123", + "value": "盈江县", + "label": "盈江县" + }, + { + "code": "533124", + "value": "陇川县", + "label": "陇川县" + } + ] + }, + { + "code": "533300", + "value": "怒江傈僳族自治州", + "label": "怒江傈僳族自治州", + "children": [ + { + "code": "533301", + "value": "泸水市", + "label": "泸水市" + }, + { + "code": "533323", + "value": "福贡县", + "label": "福贡县" + }, + { + "code": "533324", + "value": "贡山独龙族怒族自治县", + "label": "贡山独龙族怒族自治县" + }, + { + "code": "533325", + "value": "兰坪白族普米族自治县", + "label": "兰坪白族普米族自治县" + } + ] + }, + { + "code": "533400", + "value": "迪庆藏族自治州", + "label": "迪庆藏族自治州", + "children": [ + { + "code": "533401", + "value": "香格里拉市", + "label": "香格里拉市" + }, + { + "code": "533422", + "value": "德钦县", + "label": "德钦县" + }, + { + "code": "533423", + "value": "维西傈僳族自治县", + "label": "维西傈僳族自治县" + } + ] + } + ] + }, + { + "code": "540000", + "value": "西藏自治区", + "label": "西藏自治区", + "children": [ + { + "code": "540100", + "value": "拉萨市", + "label": "拉萨市", + "children": [ + { + "code": "540102", + "value": "城关区", + "label": "城关区" + }, + { + "code": "540103", + "value": "堆龙德庆区", + "label": "堆龙德庆区" + }, + { + "code": "540104", + "value": "达孜区", + "label": "达孜区" + }, + { + "code": "540121", + "value": "林周县", + "label": "林周县" + }, + { + "code": "540122", + "value": "当雄县", + "label": "当雄县" + }, + { + "code": "540123", + "value": "尼木县", + "label": "尼木县" + }, + { + "code": "540124", + "value": "曲水县", + "label": "曲水县" + }, + { + "code": "540127", + "value": "墨竹工卡县", + "label": "墨竹工卡县" + } + ] + }, + { + "code": "540200", + "value": "日喀则市", + "label": "日喀则市", + "children": [ + { + "code": "540202", + "value": "桑珠孜区", + "label": "桑珠孜区" + }, + { + "code": "540221", + "value": "南木林县", + "label": "南木林县" + }, + { + "code": "540222", + "value": "江孜县", + "label": "江孜县" + }, + { + "code": "540223", + "value": "定日县", + "label": "定日县" + }, + { + "code": "540224", + "value": "萨迦县", + "label": "萨迦县" + }, + { + "code": "540225", + "value": "拉孜县", + "label": "拉孜县" + }, + { + "code": "540226", + "value": "昂仁县", + "label": "昂仁县" + }, + { + "code": "540227", + "value": "谢通门县", + "label": "谢通门县" + }, + { + "code": "540228", + "value": "白朗县", + "label": "白朗县" + }, + { + "code": "540229", + "value": "仁布县", + "label": "仁布县" + }, + { + "code": "540230", + "value": "康马县", + "label": "康马县" + }, + { + "code": "540231", + "value": "定结县", + "label": "定结县" + }, + { + "code": "540232", + "value": "仲巴县", + "label": "仲巴县" + }, + { + "code": "540233", + "value": "亚东县", + "label": "亚东县" + }, + { + "code": "540234", + "value": "吉隆县", + "label": "吉隆县" + }, + { + "code": "540235", + "value": "聂拉木县", + "label": "聂拉木县" + }, + { + "code": "540236", + "value": "萨嘎县", + "label": "萨嘎县" + }, + { + "code": "540237", + "value": "岗巴县", + "label": "岗巴县" + } + ] + }, + { + "code": "540300", + "value": "昌都市", + "label": "昌都市", + "children": [ + { + "code": "540302", + "value": "卡若区", + "label": "卡若区" + }, + { + "code": "540321", + "value": "江达县", + "label": "江达县" + }, + { + "code": "540322", + "value": "贡觉县", + "label": "贡觉县" + }, + { + "code": "540323", + "value": "类乌齐县", + "label": "类乌齐县" + }, + { + "code": "540324", + "value": "丁青县", + "label": "丁青县" + }, + { + "code": "540325", + "value": "察雅县", + "label": "察雅县" + }, + { + "code": "540326", + "value": "八宿县", + "label": "八宿县" + }, + { + "code": "540327", + "value": "左贡县", + "label": "左贡县" + }, + { + "code": "540328", + "value": "芒康县", + "label": "芒康县" + }, + { + "code": "540329", + "value": "洛隆县", + "label": "洛隆县" + }, + { + "code": "540330", + "value": "边坝县", + "label": "边坝县" + } + ] + }, + { + "code": "540400", + "value": "林芝市", + "label": "林芝市", + "children": [ + { + "code": "540402", + "value": "巴宜区", + "label": "巴宜区" + }, + { + "code": "540421", + "value": "工布江达县", + "label": "工布江达县" + }, + { + "code": "540422", + "value": "米林县", + "label": "米林县" + }, + { + "code": "540423", + "value": "墨脱县", + "label": "墨脱县" + }, + { + "code": "540424", + "value": "波密县", + "label": "波密县" + }, + { + "code": "540425", + "value": "察隅县", + "label": "察隅县" + }, + { + "code": "540426", + "value": "朗县", + "label": "朗县" + } + ] + }, + { + "code": "540500", + "value": "山南市", + "label": "山南市", + "children": [ + { + "code": "540502", + "value": "乃东区", + "label": "乃东区" + }, + { + "code": "540521", + "value": "扎囊县", + "label": "扎囊县" + }, + { + "code": "540522", + "value": "贡嘎县", + "label": "贡嘎县" + }, + { + "code": "540523", + "value": "桑日县", + "label": "桑日县" + }, + { + "code": "540524", + "value": "琼结县", + "label": "琼结县" + }, + { + "code": "540525", + "value": "曲松县", + "label": "曲松县" + }, + { + "code": "540526", + "value": "措美县", + "label": "措美县" + }, + { + "code": "540527", + "value": "洛扎县", + "label": "洛扎县" + }, + { + "code": "540528", + "value": "加查县", + "label": "加查县" + }, + { + "code": "540529", + "value": "隆子县", + "label": "隆子县" + }, + { + "code": "540530", + "value": "错那县", + "label": "错那县" + }, + { + "code": "540531", + "value": "浪卡子县", + "label": "浪卡子县" + } + ] + }, + { + "code": "540600", + "value": "那曲市", + "label": "那曲市", + "children": [ + { + "code": "540602", + "value": "色尼区", + "label": "色尼区" + }, + { + "code": "540621", + "value": "嘉黎县", + "label": "嘉黎县" + }, + { + "code": "540622", + "value": "比如县", + "label": "比如县" + }, + { + "code": "540623", + "value": "聂荣县", + "label": "聂荣县" + }, + { + "code": "540624", + "value": "安多县", + "label": "安多县" + }, + { + "code": "540625", + "value": "申扎县", + "label": "申扎县" + }, + { + "code": "540626", + "value": "索县", + "label": "索县" + }, + { + "code": "540627", + "value": "班戈县", + "label": "班戈县" + }, + { + "code": "540628", + "value": "巴青县", + "label": "巴青县" + }, + { + "code": "540629", + "value": "尼玛县", + "label": "尼玛县" + }, + { + "code": "540630", + "value": "双湖县", + "label": "双湖县" + } + ] + }, + { + "code": "542500", + "value": "阿里地区", + "label": "阿里地区", + "children": [ + { + "code": "542521", + "value": "普兰县", + "label": "普兰县" + }, + { + "code": "542522", + "value": "札达县", + "label": "札达县" + }, + { + "code": "542523", + "value": "噶尔县", + "label": "噶尔县" + }, + { + "code": "542524", + "value": "日土县", + "label": "日土县" + }, + { + "code": "542525", + "value": "革吉县", + "label": "革吉县" + }, + { + "code": "542526", + "value": "改则县", + "label": "改则县" + }, + { + "code": "542527", + "value": "措勤县", + "label": "措勤县" + } + ] + } + ] + }, + { + "code": "610000", + "value": "陕西省", + "label": "陕西省", + "children": [ + { + "code": "610100", + "value": "西安市", + "label": "西安市", + "children": [ + { + "code": "610102", + "value": "新城区", + "label": "新城区" + }, + { + "code": "610103", + "value": "碑林区", + "label": "碑林区" + }, + { + "code": "610104", + "value": "莲湖区", + "label": "莲湖区" + }, + { + "code": "610111", + "value": "灞桥区", + "label": "灞桥区" + }, + { + "code": "610112", + "value": "未央区", + "label": "未央区" + }, + { + "code": "610113", + "value": "雁塔区", + "label": "雁塔区" + }, + { + "code": "610114", + "value": "阎良区", + "label": "阎良区" + }, + { + "code": "610115", + "value": "临潼区", + "label": "临潼区" + }, + { + "code": "610116", + "value": "长安区", + "label": "长安区" + }, + { + "code": "610117", + "value": "高陵区", + "label": "高陵区" + }, + { + "code": "610118", + "value": "鄠邑区", + "label": "鄠邑区" + }, + { + "code": "610122", + "value": "蓝田县", + "label": "蓝田县" + }, + { + "code": "610124", + "value": "周至县", + "label": "周至县" + } + ] + }, + { + "code": "610200", + "value": "铜川市", + "label": "铜川市", + "children": [ + { + "code": "610202", + "value": "王益区", + "label": "王益区" + }, + { + "code": "610203", + "value": "印台区", + "label": "印台区" + }, + { + "code": "610204", + "value": "耀州区", + "label": "耀州区" + }, + { + "code": "610222", + "value": "宜君县", + "label": "宜君县" + } + ] + }, + { + "code": "610300", + "value": "宝鸡市", + "label": "宝鸡市", + "children": [ + { + "code": "610302", + "value": "渭滨区", + "label": "渭滨区" + }, + { + "code": "610303", + "value": "金台区", + "label": "金台区" + }, + { + "code": "610304", + "value": "陈仓区", + "label": "陈仓区" + }, + { + "code": "610322", + "value": "凤翔县", + "label": "凤翔县" + }, + { + "code": "610323", + "value": "岐山县", + "label": "岐山县" + }, + { + "code": "610324", + "value": "扶风县", + "label": "扶风县" + }, + { + "code": "610326", + "value": "眉县", + "label": "眉县" + }, + { + "code": "610327", + "value": "陇县", + "label": "陇县" + }, + { + "code": "610328", + "value": "千阳县", + "label": "千阳县" + }, + { + "code": "610329", + "value": "麟游县", + "label": "麟游县" + }, + { + "code": "610330", + "value": "凤县", + "label": "凤县" + }, + { + "code": "610331", + "value": "太白县", + "label": "太白县" + } + ] + }, + { + "code": "610400", + "value": "咸阳市", + "label": "咸阳市", + "children": [ + { + "code": "610402", + "value": "秦都区", + "label": "秦都区" + }, + { + "code": "610403", + "value": "杨陵区", + "label": "杨陵区" + }, + { + "code": "610404", + "value": "渭城区", + "label": "渭城区" + }, + { + "code": "610422", + "value": "三原县", + "label": "三原县" + }, + { + "code": "610423", + "value": "泾阳县", + "label": "泾阳县" + }, + { + "code": "610424", + "value": "乾县", + "label": "乾县" + }, + { + "code": "610425", + "value": "礼泉县", + "label": "礼泉县" + }, + { + "code": "610426", + "value": "永寿县", + "label": "永寿县" + }, + { + "code": "610428", + "value": "长武县", + "label": "长武县" + }, + { + "code": "610429", + "value": "旬邑县", + "label": "旬邑县" + }, + { + "code": "610430", + "value": "淳化县", + "label": "淳化县" + }, + { + "code": "610431", + "value": "武功县", + "label": "武功县" + }, + { + "code": "610481", + "value": "兴平市", + "label": "兴平市" + }, + { + "code": "610482", + "value": "彬州市", + "label": "彬州市" + } + ] + }, + { + "code": "610500", + "value": "渭南市", + "label": "渭南市", + "children": [ + { + "code": "610502", + "value": "临渭区", + "label": "临渭区" + }, + { + "code": "610503", + "value": "华州区", + "label": "华州区" + }, + { + "code": "610522", + "value": "潼关县", + "label": "潼关县" + }, + { + "code": "610523", + "value": "大荔县", + "label": "大荔县" + }, + { + "code": "610524", + "value": "合阳县", + "label": "合阳县" + }, + { + "code": "610525", + "value": "澄城县", + "label": "澄城县" + }, + { + "code": "610526", + "value": "蒲城县", + "label": "蒲城县" + }, + { + "code": "610527", + "value": "白水县", + "label": "白水县" + }, + { + "code": "610528", + "value": "富平县", + "label": "富平县" + }, + { + "code": "610581", + "value": "韩城市", + "label": "韩城市" + }, + { + "code": "610582", + "value": "华阴市", + "label": "华阴市" + } + ] + }, + { + "code": "610600", + "value": "延安市", + "label": "延安市", + "children": [ + { + "code": "610602", + "value": "宝塔区", + "label": "宝塔区" + }, + { + "code": "610603", + "value": "安塞区", + "label": "安塞区" + }, + { + "code": "610621", + "value": "延长县", + "label": "延长县" + }, + { + "code": "610622", + "value": "延川县", + "label": "延川县" + }, + { + "code": "610625", + "value": "志丹县", + "label": "志丹县" + }, + { + "code": "610626", + "value": "吴起县", + "label": "吴起县" + }, + { + "code": "610627", + "value": "甘泉县", + "label": "甘泉县" + }, + { + "code": "610628", + "value": "富县", + "label": "富县" + }, + { + "code": "610629", + "value": "洛川县", + "label": "洛川县" + }, + { + "code": "610630", + "value": "宜川县", + "label": "宜川县" + }, + { + "code": "610631", + "value": "黄龙县", + "label": "黄龙县" + }, + { + "code": "610632", + "value": "黄陵县", + "label": "黄陵县" + }, + { + "code": "610681", + "value": "子长市", + "label": "子长市" + } + ] + }, + { + "code": "610700", + "value": "汉中市", + "label": "汉中市", + "children": [ + { + "code": "610702", + "value": "汉台区", + "label": "汉台区" + }, + { + "code": "610703", + "value": "南郑区", + "label": "南郑区" + }, + { + "code": "610722", + "value": "城固县", + "label": "城固县" + }, + { + "code": "610723", + "value": "洋县", + "label": "洋县" + }, + { + "code": "610724", + "value": "西乡县", + "label": "西乡县" + }, + { + "code": "610725", + "value": "勉县", + "label": "勉县" + }, + { + "code": "610726", + "value": "宁强县", + "label": "宁强县" + }, + { + "code": "610727", + "value": "略阳县", + "label": "略阳县" + }, + { + "code": "610728", + "value": "镇巴县", + "label": "镇巴县" + }, + { + "code": "610729", + "value": "留坝县", + "label": "留坝县" + }, + { + "code": "610730", + "value": "佛坪县", + "label": "佛坪县" + } + ] + }, + { + "code": "610800", + "value": "榆林市", + "label": "榆林市", + "children": [ + { + "code": "610802", + "value": "榆阳区", + "label": "榆阳区" + }, + { + "code": "610803", + "value": "横山区", + "label": "横山区" + }, + { + "code": "610822", + "value": "府谷县", + "label": "府谷县" + }, + { + "code": "610824", + "value": "靖边县", + "label": "靖边县" + }, + { + "code": "610825", + "value": "定边县", + "label": "定边县" + }, + { + "code": "610826", + "value": "绥德县", + "label": "绥德县" + }, + { + "code": "610827", + "value": "米脂县", + "label": "米脂县" + }, + { + "code": "610828", + "value": "佳县", + "label": "佳县" + }, + { + "code": "610829", + "value": "吴堡县", + "label": "吴堡县" + }, + { + "code": "610830", + "value": "清涧县", + "label": "清涧县" + }, + { + "code": "610831", + "value": "子洲县", + "label": "子洲县" + }, + { + "code": "610881", + "value": "神木市", + "label": "神木市" + } + ] + }, + { + "code": "610900", + "value": "安康市", + "label": "安康市", + "children": [ + { + "code": "610902", + "value": "汉滨区", + "label": "汉滨区" + }, + { + "code": "610921", + "value": "汉阴县", + "label": "汉阴县" + }, + { + "code": "610922", + "value": "石泉县", + "label": "石泉县" + }, + { + "code": "610923", + "value": "宁陕县", + "label": "宁陕县" + }, + { + "code": "610924", + "value": "紫阳县", + "label": "紫阳县" + }, + { + "code": "610925", + "value": "岚皋县", + "label": "岚皋县" + }, + { + "code": "610926", + "value": "平利县", + "label": "平利县" + }, + { + "code": "610927", + "value": "镇坪县", + "label": "镇坪县" + }, + { + "code": "610928", + "value": "旬阳县", + "label": "旬阳县" + }, + { + "code": "610929", + "value": "白河县", + "label": "白河县" + } + ] + }, + { + "code": "611000", + "value": "商洛市", + "label": "商洛市", + "children": [ + { + "code": "611002", + "value": "商州区", + "label": "商州区" + }, + { + "code": "611021", + "value": "洛南县", + "label": "洛南县" + }, + { + "code": "611022", + "value": "丹凤县", + "label": "丹凤县" + }, + { + "code": "611023", + "value": "商南县", + "label": "商南县" + }, + { + "code": "611024", + "value": "山阳县", + "label": "山阳县" + }, + { + "code": "611025", + "value": "镇安县", + "label": "镇安县" + }, + { + "code": "611026", + "value": "柞水县", + "label": "柞水县" + } + ] + } + ] + }, + { + "code": "620000", + "value": "甘肃省", + "label": "甘肃省", + "children": [ + { + "code": "620100", + "value": "兰州市", + "label": "兰州市", + "children": [ + { + "code": "620102", + "value": "城关区", + "label": "城关区" + }, + { + "code": "620103", + "value": "七里河区", + "label": "七里河区" + }, + { + "code": "620104", + "value": "西固区", + "label": "西固区" + }, + { + "code": "620105", + "value": "安宁区", + "label": "安宁区" + }, + { + "code": "620111", + "value": "红古区", + "label": "红古区" + }, + { + "code": "620121", + "value": "永登县", + "label": "永登县" + }, + { + "code": "620122", + "value": "皋兰县", + "label": "皋兰县" + }, + { + "code": "620123", + "value": "榆中县", + "label": "榆中县" + } + ] + }, + { + "code": "620200", + "value": "嘉峪关市", + "label": "嘉峪关市", + "children": [] + }, + { + "code": "620300", + "value": "金昌市", + "label": "金昌市", + "children": [ + { + "code": "620302", + "value": "金川区", + "label": "金川区" + }, + { + "code": "620321", + "value": "永昌县", + "label": "永昌县" + } + ] + }, + { + "code": "620400", + "value": "白银市", + "label": "白银市", + "children": [ + { + "code": "620402", + "value": "白银区", + "label": "白银区" + }, + { + "code": "620403", + "value": "平川区", + "label": "平川区" + }, + { + "code": "620421", + "value": "靖远县", + "label": "靖远县" + }, + { + "code": "620422", + "value": "会宁县", + "label": "会宁县" + }, + { + "code": "620423", + "value": "景泰县", + "label": "景泰县" + } + ] + }, + { + "code": "620500", + "value": "天水市", + "label": "天水市", + "children": [ + { + "code": "620502", + "value": "秦州区", + "label": "秦州区" + }, + { + "code": "620503", + "value": "麦积区", + "label": "麦积区" + }, + { + "code": "620521", + "value": "清水县", + "label": "清水县" + }, + { + "code": "620522", + "value": "秦安县", + "label": "秦安县" + }, + { + "code": "620523", + "value": "甘谷县", + "label": "甘谷县" + }, + { + "code": "620524", + "value": "武山县", + "label": "武山县" + }, + { + "code": "620525", + "value": "张家川回族自治县", + "label": "张家川回族自治县" + } + ] + }, + { + "code": "620600", + "value": "武威市", + "label": "武威市", + "children": [ + { + "code": "620602", + "value": "凉州区", + "label": "凉州区" + }, + { + "code": "620621", + "value": "民勤县", + "label": "民勤县" + }, + { + "code": "620622", + "value": "古浪县", + "label": "古浪县" + }, + { + "code": "620623", + "value": "天祝藏族自治县", + "label": "天祝藏族自治县" + } + ] + }, + { + "code": "620700", + "value": "张掖市", + "label": "张掖市", + "children": [ + { + "code": "620702", + "value": "甘州区", + "label": "甘州区" + }, + { + "code": "620721", + "value": "肃南裕固族自治县", + "label": "肃南裕固族自治县" + }, + { + "code": "620722", + "value": "民乐县", + "label": "民乐县" + }, + { + "code": "620723", + "value": "临泽县", + "label": "临泽县" + }, + { + "code": "620724", + "value": "高台县", + "label": "高台县" + }, + { + "code": "620725", + "value": "山丹县", + "label": "山丹县" + } + ] + }, + { + "code": "620800", + "value": "平凉市", + "label": "平凉市", + "children": [ + { + "code": "620802", + "value": "崆峒区", + "label": "崆峒区" + }, + { + "code": "620821", + "value": "泾川县", + "label": "泾川县" + }, + { + "code": "620822", + "value": "灵台县", + "label": "灵台县" + }, + { + "code": "620823", + "value": "崇信县", + "label": "崇信县" + }, + { + "code": "620825", + "value": "庄浪县", + "label": "庄浪县" + }, + { + "code": "620826", + "value": "静宁县", + "label": "静宁县" + }, + { + "code": "620881", + "value": "华亭市", + "label": "华亭市" + } + ] + }, + { + "code": "620900", + "value": "酒泉市", + "label": "酒泉市", + "children": [ + { + "code": "620902", + "value": "肃州区", + "label": "肃州区" + }, + { + "code": "620921", + "value": "金塔县", + "label": "金塔县" + }, + { + "code": "620922", + "value": "瓜州县", + "label": "瓜州县" + }, + { + "code": "620923", + "value": "肃北蒙古族自治县", + "label": "肃北蒙古族自治县" + }, + { + "code": "620924", + "value": "阿克塞哈萨克族自治县", + "label": "阿克塞哈萨克族自治县" + }, + { + "code": "620981", + "value": "玉门市", + "label": "玉门市" + }, + { + "code": "620982", + "value": "敦煌市", + "label": "敦煌市" + } + ] + }, + { + "code": "621000", + "value": "庆阳市", + "label": "庆阳市", + "children": [ + { + "code": "621002", + "value": "西峰区", + "label": "西峰区" + }, + { + "code": "621021", + "value": "庆城县", + "label": "庆城县" + }, + { + "code": "621022", + "value": "环县", + "label": "环县" + }, + { + "code": "621023", + "value": "华池县", + "label": "华池县" + }, + { + "code": "621024", + "value": "合水县", + "label": "合水县" + }, + { + "code": "621025", + "value": "正宁县", + "label": "正宁县" + }, + { + "code": "621026", + "value": "宁县", + "label": "宁县" + }, + { + "code": "621027", + "value": "镇原县", + "label": "镇原县" + } + ] + }, + { + "code": "621100", + "value": "定西市", + "label": "定西市", + "children": [ + { + "code": "621102", + "value": "安定区", + "label": "安定区" + }, + { + "code": "621121", + "value": "通渭县", + "label": "通渭县" + }, + { + "code": "621122", + "value": "陇西县", + "label": "陇西县" + }, + { + "code": "621123", + "value": "渭源县", + "label": "渭源县" + }, + { + "code": "621124", + "value": "临洮县", + "label": "临洮县" + }, + { + "code": "621125", + "value": "漳县", + "label": "漳县" + }, + { + "code": "621126", + "value": "岷县", + "label": "岷县" + } + ] + }, + { + "code": "621200", + "value": "陇南市", + "label": "陇南市", + "children": [ + { + "code": "621202", + "value": "武都区", + "label": "武都区" + }, + { + "code": "621221", + "value": "成县", + "label": "成县" + }, + { + "code": "621222", + "value": "文县", + "label": "文县" + }, + { + "code": "621223", + "value": "宕昌县", + "label": "宕昌县" + }, + { + "code": "621224", + "value": "康县", + "label": "康县" + }, + { + "code": "621225", + "value": "西和县", + "label": "西和县" + }, + { + "code": "621226", + "value": "礼县", + "label": "礼县" + }, + { + "code": "621227", + "value": "徽县", + "label": "徽县" + }, + { + "code": "621228", + "value": "两当县", + "label": "两当县" + } + ] + }, + { + "code": "622900", + "value": "临夏回族自治州", + "label": "临夏回族自治州", + "children": [ + { + "code": "622901", + "value": "临夏市", + "label": "临夏市" + }, + { + "code": "622921", + "value": "临夏县", + "label": "临夏县" + }, + { + "code": "622922", + "value": "康乐县", + "label": "康乐县" + }, + { + "code": "622923", + "value": "永靖县", + "label": "永靖县" + }, + { + "code": "622924", + "value": "广河县", + "label": "广河县" + }, + { + "code": "622925", + "value": "和政县", + "label": "和政县" + }, + { + "code": "622926", + "value": "东乡族自治县", + "label": "东乡族自治县" + }, + { + "code": "622927", + "value": "积石山保安族东乡族撒拉族自治县", + "label": "积石山保安族东乡族撒拉族自治县" + } + ] + }, + { + "code": "623000", + "value": "甘南藏族自治州", + "label": "甘南藏族自治州", + "children": [ + { + "code": "623001", + "value": "合作市", + "label": "合作市" + }, + { + "code": "623021", + "value": "临潭县", + "label": "临潭县" + }, + { + "code": "623022", + "value": "卓尼县", + "label": "卓尼县" + }, + { + "code": "623023", + "value": "舟曲县", + "label": "舟曲县" + }, + { + "code": "623024", + "value": "迭部县", + "label": "迭部县" + }, + { + "code": "623025", + "value": "玛曲县", + "label": "玛曲县" + }, + { + "code": "623026", + "value": "碌曲县", + "label": "碌曲县" + }, + { + "code": "623027", + "value": "夏河县", + "label": "夏河县" + } + ] + } + ] + }, + { + "code": "630000", + "value": "青海省", + "label": "青海省", + "children": [ + { + "code": "630100", + "value": "西宁市", + "label": "西宁市", + "children": [ + { + "code": "630102", + "value": "城东区", + "label": "城东区" + }, + { + "code": "630103", + "value": "城中区", + "label": "城中区" + }, + { + "code": "630104", + "value": "城西区", + "label": "城西区" + }, + { + "code": "630105", + "value": "城北区", + "label": "城北区" + }, + { + "code": "630106", + "value": "湟中区", + "label": "湟中区" + }, + { + "code": "630121", + "value": "大通回族土族自治县", + "label": "大通回族土族自治县" + }, + { + "code": "630123", + "value": "湟源县", + "label": "湟源县" + } + ] + }, + { + "code": "630200", + "value": "海东市", + "label": "海东市", + "children": [ + { + "code": "630202", + "value": "乐都区", + "label": "乐都区" + }, + { + "code": "630203", + "value": "平安区", + "label": "平安区" + }, + { + "code": "630222", + "value": "民和回族土族自治县", + "label": "民和回族土族自治县" + }, + { + "code": "630223", + "value": "互助土族自治县", + "label": "互助土族自治县" + }, + { + "code": "630224", + "value": "化隆回族自治县", + "label": "化隆回族自治县" + }, + { + "code": "630225", + "value": "循化撒拉族自治县", + "label": "循化撒拉族自治县" + } + ] + }, + { + "code": "632200", + "value": "海北藏族自治州", + "label": "海北藏族自治州", + "children": [ + { + "code": "632221", + "value": "门源回族自治县", + "label": "门源回族自治县" + }, + { + "code": "632222", + "value": "祁连县", + "label": "祁连县" + }, + { + "code": "632223", + "value": "海晏县", + "label": "海晏县" + }, + { + "code": "632224", + "value": "刚察县", + "label": "刚察县" + } + ] + }, + { + "code": "632300", + "value": "黄南藏族自治州", + "label": "黄南藏族自治州", + "children": [ + { + "code": "632301", + "value": "同仁市", + "label": "同仁市" + }, + { + "code": "632322", + "value": "尖扎县", + "label": "尖扎县" + }, + { + "code": "632323", + "value": "泽库县", + "label": "泽库县" + }, + { + "code": "632324", + "value": "河南蒙古族自治县", + "label": "河南蒙古族自治县" + } + ] + }, + { + "code": "632500", + "value": "海南藏族自治州", + "label": "海南藏族自治州", + "children": [ + { + "code": "632521", + "value": "共和县", + "label": "共和县" + }, + { + "code": "632522", + "value": "同德县", + "label": "同德县" + }, + { + "code": "632523", + "value": "贵德县", + "label": "贵德县" + }, + { + "code": "632524", + "value": "兴海县", + "label": "兴海县" + }, + { + "code": "632525", + "value": "贵南县", + "label": "贵南县" + } + ] + }, + { + "code": "632600", + "value": "果洛藏族自治州", + "label": "果洛藏族自治州", + "children": [ + { + "code": "632621", + "value": "玛沁县", + "label": "玛沁县" + }, + { + "code": "632622", + "value": "班玛县", + "label": "班玛县" + }, + { + "code": "632623", + "value": "甘德县", + "label": "甘德县" + }, + { + "code": "632624", + "value": "达日县", + "label": "达日县" + }, + { + "code": "632625", + "value": "久治县", + "label": "久治县" + }, + { + "code": "632626", + "value": "玛多县", + "label": "玛多县" + } + ] + }, + { + "code": "632700", + "value": "玉树藏族自治州", + "label": "玉树藏族自治州", + "children": [ + { + "code": "632701", + "value": "玉树市", + "label": "玉树市" + }, + { + "code": "632722", + "value": "杂多县", + "label": "杂多县" + }, + { + "code": "632723", + "value": "称多县", + "label": "称多县" + }, + { + "code": "632724", + "value": "治多县", + "label": "治多县" + }, + { + "code": "632725", + "value": "囊谦县", + "label": "囊谦县" + }, + { + "code": "632726", + "value": "曲麻莱县", + "label": "曲麻莱县" + } + ] + }, + { + "code": "632800", + "value": "海西蒙古族藏族自治州", + "label": "海西蒙古族藏族自治州", + "children": [ + { + "code": "632801", + "value": "格尔木市", + "label": "格尔木市" + }, + { + "code": "632802", + "value": "德令哈市", + "label": "德令哈市" + }, + { + "code": "632803", + "value": "茫崖市", + "label": "茫崖市" + }, + { + "code": "632821", + "value": "乌兰县", + "label": "乌兰县" + }, + { + "code": "632822", + "value": "都兰县", + "label": "都兰县" + }, + { + "code": "632823", + "value": "天峻县", + "label": "天峻县" + } + ] + } + ] + }, + { + "code": "640000", + "value": "宁夏回族自治区", + "label": "宁夏回族自治区", + "children": [ + { + "code": "640100", + "value": "银川市", + "label": "银川市", + "children": [ + { + "code": "640104", + "value": "兴庆区", + "label": "兴庆区" + }, + { + "code": "640105", + "value": "西夏区", + "label": "西夏区" + }, + { + "code": "640106", + "value": "金凤区", + "label": "金凤区" + }, + { + "code": "640121", + "value": "永宁县", + "label": "永宁县" + }, + { + "code": "640122", + "value": "贺兰县", + "label": "贺兰县" + }, + { + "code": "640181", + "value": "灵武市", + "label": "灵武市" + } + ] + }, + { + "code": "640200", + "value": "石嘴山市", + "label": "石嘴山市", + "children": [ + { + "code": "640202", + "value": "大武口区", + "label": "大武口区" + }, + { + "code": "640205", + "value": "惠农区", + "label": "惠农区" + }, + { + "code": "640221", + "value": "平罗县", + "label": "平罗县" + } + ] + }, + { + "code": "640300", + "value": "吴忠市", + "label": "吴忠市", + "children": [ + { + "code": "640302", + "value": "利通区", + "label": "利通区" + }, + { + "code": "640303", + "value": "红寺堡区", + "label": "红寺堡区" + }, + { + "code": "640323", + "value": "盐池县", + "label": "盐池县" + }, + { + "code": "640324", + "value": "同心县", + "label": "同心县" + }, + { + "code": "640381", + "value": "青铜峡市", + "label": "青铜峡市" + } + ] + }, + { + "code": "640400", + "value": "固原市", + "label": "固原市", + "children": [ + { + "code": "640402", + "value": "原州区", + "label": "原州区" + }, + { + "code": "640422", + "value": "西吉县", + "label": "西吉县" + }, + { + "code": "640423", + "value": "隆德县", + "label": "隆德县" + }, + { + "code": "640424", + "value": "泾源县", + "label": "泾源县" + }, + { + "code": "640425", + "value": "彭阳县", + "label": "彭阳县" + } + ] + }, + { + "code": "640500", + "value": "中卫市", + "label": "中卫市", + "children": [ + { + "code": "640502", + "value": "沙坡头区", + "label": "沙坡头区" + }, + { + "code": "640521", + "value": "中宁县", + "label": "中宁县" + }, + { + "code": "640522", + "value": "海原县", + "label": "海原县" + } + ] + } + ] + }, + { + "code": "650000", + "value": "新疆维吾尔自治区", + "label": "新疆维吾尔自治区", + "children": [ + { + "code": "650100", + "value": "乌鲁木齐市", + "label": "乌鲁木齐市", + "children": [ + { + "code": "650102", + "value": "天山区", + "label": "天山区" + }, + { + "code": "650103", + "value": "沙依巴克区", + "label": "沙依巴克区" + }, + { + "code": "650104", + "value": "新市区", + "label": "新市区" + }, + { + "code": "650105", + "value": "水磨沟区", + "label": "水磨沟区" + }, + { + "code": "650106", + "value": "头屯河区", + "label": "头屯河区" + }, + { + "code": "650107", + "value": "达坂城区", + "label": "达坂城区" + }, + { + "code": "650109", + "value": "米东区", + "label": "米东区" + }, + { + "code": "650121", + "value": "乌鲁木齐县", + "label": "乌鲁木齐县" + } + ] + }, + { + "code": "650200", + "value": "克拉玛依市", + "label": "克拉玛依市", + "children": [ + { + "code": "650202", + "value": "独山子区", + "label": "独山子区" + }, + { + "code": "650203", + "value": "克拉玛依区", + "label": "克拉玛依区" + }, + { + "code": "650204", + "value": "白碱滩区", + "label": "白碱滩区" + }, + { + "code": "650205", + "value": "乌尔禾区", + "label": "乌尔禾区" + } + ] + }, + { + "code": "650400", + "value": "吐鲁番市", + "label": "吐鲁番市", + "children": [ + { + "code": "650402", + "value": "高昌区", + "label": "高昌区" + }, + { + "code": "650421", + "value": "鄯善县", + "label": "鄯善县" + }, + { + "code": "650422", + "value": "托克逊县", + "label": "托克逊县" + } + ] + }, + { + "code": "650500", + "value": "哈密市", + "label": "哈密市", + "children": [ + { + "code": "650502", + "value": "伊州区", + "label": "伊州区" + }, + { + "code": "650521", + "value": "巴里坤哈萨克自治县", + "label": "巴里坤哈萨克自治县" + }, + { + "code": "650522", + "value": "伊吾县", + "label": "伊吾县" + } + ] + }, + { + "code": "652300", + "value": "昌吉回族自治州", + "label": "昌吉回族自治州", + "children": [ + { + "code": "652301", + "value": "昌吉市", + "label": "昌吉市" + }, + { + "code": "652302", + "value": "阜康市", + "label": "阜康市" + }, + { + "code": "652323", + "value": "呼图壁县", + "label": "呼图壁县" + }, + { + "code": "652324", + "value": "玛纳斯县", + "label": "玛纳斯县" + }, + { + "code": "652325", + "value": "奇台县", + "label": "奇台县" + }, + { + "code": "652327", + "value": "吉木萨尔县", + "label": "吉木萨尔县" + }, + { + "code": "652328", + "value": "木垒哈萨克自治县", + "label": "木垒哈萨克自治县" + } + ] + }, + { + "code": "652700", + "value": "博尔塔拉蒙古自治州", + "label": "博尔塔拉蒙古自治州", + "children": [ + { + "code": "652701", + "value": "博乐市", + "label": "博乐市" + }, + { + "code": "652702", + "value": "阿拉山口市", + "label": "阿拉山口市" + }, + { + "code": "652722", + "value": "精河县", + "label": "精河县" + }, + { + "code": "652723", + "value": "温泉县", + "label": "温泉县" + } + ] + }, + { + "code": "652800", + "value": "巴音郭楞蒙古自治州", + "label": "巴音郭楞蒙古自治州", + "children": [ + { + "code": "652801", + "value": "库尔勒市", + "label": "库尔勒市" + }, + { + "code": "652822", + "value": "轮台县", + "label": "轮台县" + }, + { + "code": "652823", + "value": "尉犁县", + "label": "尉犁县" + }, + { + "code": "652824", + "value": "若羌县", + "label": "若羌县" + }, + { + "code": "652825", + "value": "且末县", + "label": "且末县" + }, + { + "code": "652826", + "value": "焉耆回族自治县", + "label": "焉耆回族自治县" + }, + { + "code": "652827", + "value": "和静县", + "label": "和静县" + }, + { + "code": "652828", + "value": "和硕县", + "label": "和硕县" + }, + { + "code": "652829", + "value": "博湖县", + "label": "博湖县" + } + ] + }, + { + "code": "652900", + "value": "阿克苏地区", + "label": "阿克苏地区", + "children": [ + { + "code": "652901", + "value": "阿克苏市", + "label": "阿克苏市" + }, + { + "code": "652902", + "value": "库车市", + "label": "库车市" + }, + { + "code": "652922", + "value": "温宿县", + "label": "温宿县" + }, + { + "code": "652924", + "value": "沙雅县", + "label": "沙雅县" + }, + { + "code": "652925", + "value": "新和县", + "label": "新和县" + }, + { + "code": "652926", + "value": "拜城县", + "label": "拜城县" + }, + { + "code": "652927", + "value": "乌什县", + "label": "乌什县" + }, + { + "code": "652928", + "value": "阿瓦提县", + "label": "阿瓦提县" + }, + { + "code": "652929", + "value": "柯坪县", + "label": "柯坪县" + } + ] + }, + { + "code": "653000", + "value": "克孜勒苏柯尔克孜自治州", + "label": "克孜勒苏柯尔克孜自治州", + "children": [ + { + "code": "653001", + "value": "阿图什市", + "label": "阿图什市" + }, + { + "code": "653022", + "value": "阿克陶县", + "label": "阿克陶县" + }, + { + "code": "653023", + "value": "阿合奇县", + "label": "阿合奇县" + }, + { + "code": "653024", + "value": "乌恰县", + "label": "乌恰县" + } + ] + }, + { + "code": "653100", + "value": "喀什地区", + "label": "喀什地区", + "children": [ + { + "code": "653101", + "value": "喀什市", + "label": "喀什市" + }, + { + "code": "653121", + "value": "疏附县", + "label": "疏附县" + }, + { + "code": "653122", + "value": "疏勒县", + "label": "疏勒县" + }, + { + "code": "653123", + "value": "英吉沙县", + "label": "英吉沙县" + }, + { + "code": "653124", + "value": "泽普县", + "label": "泽普县" + }, + { + "code": "653125", + "value": "莎车县", + "label": "莎车县" + }, + { + "code": "653126", + "value": "叶城县", + "label": "叶城县" + }, + { + "code": "653127", + "value": "麦盖提县", + "label": "麦盖提县" + }, + { + "code": "653128", + "value": "岳普湖县", + "label": "岳普湖县" + }, + { + "code": "653129", + "value": "伽师县", + "label": "伽师县" + }, + { + "code": "653130", + "value": "巴楚县", + "label": "巴楚县" + }, + { + "code": "653131", + "value": "塔什库尔干塔吉克自治县", + "label": "塔什库尔干塔吉克自治县" + } + ] + }, + { + "code": "653200", + "value": "和田地区", + "label": "和田地区", + "children": [ + { + "code": "653201", + "value": "和田市", + "label": "和田市" + }, + { + "code": "653221", + "value": "和田县", + "label": "和田县" + }, + { + "code": "653222", + "value": "墨玉县", + "label": "墨玉县" + }, + { + "code": "653223", + "value": "皮山县", + "label": "皮山县" + }, + { + "code": "653224", + "value": "洛浦县", + "label": "洛浦县" + }, + { + "code": "653225", + "value": "策勒县", + "label": "策勒县" + }, + { + "code": "653226", + "value": "于田县", + "label": "于田县" + }, + { + "code": "653227", + "value": "民丰县", + "label": "民丰县" + } + ] + }, + { + "code": "654000", + "value": "伊犁哈萨克自治州", + "label": "伊犁哈萨克自治州", + "children": [ + { + "code": "654002", + "value": "伊宁市", + "label": "伊宁市" + }, + { + "code": "654003", + "value": "奎屯市", + "label": "奎屯市" + }, + { + "code": "654004", + "value": "霍尔果斯市", + "label": "霍尔果斯市" + }, + { + "code": "654021", + "value": "伊宁县", + "label": "伊宁县" + }, + { + "code": "654022", + "value": "察布查尔锡伯自治县", + "label": "察布查尔锡伯自治县" + }, + { + "code": "654023", + "value": "霍城县", + "label": "霍城县" + }, + { + "code": "654024", + "value": "巩留县", + "label": "巩留县" + }, + { + "code": "654025", + "value": "新源县", + "label": "新源县" + }, + { + "code": "654026", + "value": "昭苏县", + "label": "昭苏县" + }, + { + "code": "654027", + "value": "特克斯县", + "label": "特克斯县" + }, + { + "code": "654028", + "value": "尼勒克县", + "label": "尼勒克县" + } + ] + }, + { + "code": "654200", + "value": "塔城地区", + "label": "塔城地区", + "children": [ + { + "code": "654201", + "value": "塔城市", + "label": "塔城市" + }, + { + "code": "654202", + "value": "乌苏市", + "label": "乌苏市" + }, + { + "code": "654221", + "value": "额敏县", + "label": "额敏县" + }, + { + "code": "654223", + "value": "沙湾县", + "label": "沙湾县" + }, + { + "code": "654224", + "value": "托里县", + "label": "托里县" + }, + { + "code": "654225", + "value": "裕民县", + "label": "裕民县" + }, + { + "code": "654226", + "value": "和布克赛尔蒙古自治县", + "label": "和布克赛尔蒙古自治县" + } + ] + }, + { + "code": "654300", + "value": "阿勒泰地区", + "label": "阿勒泰地区", + "children": [ + { + "code": "654301", + "value": "阿勒泰市", + "label": "阿勒泰市" + }, + { + "code": "654321", + "value": "布尔津县", + "label": "布尔津县" + }, + { + "code": "654322", + "value": "富蕴县", + "label": "富蕴县" + }, + { + "code": "654323", + "value": "福海县", + "label": "福海县" + }, + { + "code": "654324", + "value": "哈巴河县", + "label": "哈巴河县" + }, + { + "code": "654325", + "value": "青河县", + "label": "青河县" + }, + { + "code": "654326", + "value": "吉木乃县", + "label": "吉木乃县" + } + ] + } + ] + }, + { + "code": "710000", + "value": "台湾省", + "label": "台湾省", + "children": [] + }, + { + "code": "810000", + "value": "香港特别行政区", + "label": "香港特别行政区", + "children": [] + }, + { + "code": "820000", + "value": "澳门特别行政区", + "label": "澳门特别行政区", + "children": [] + } +] + +export default cityOptions + + diff --git a/src/src/utils/color.js b/src/src/utils/color.js new file mode 100644 index 0000000..595a39b --- /dev/null +++ b/src/src/utils/color.js @@ -0,0 +1,64 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/* eslint-disable eqeqeq */ +export default { + // 加深 + darken(color, level) { + const rgbc = this.hexToRgb(color) + for (let i = 0; i < 3; i++) rgbc[i] = Math.floor(rgbc[i] * (1 - level)) + return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]) + }, + // 变淡 + lighten(color, level) { + const rgbc = this.hexToRgb(color) + for (let i = 0; i < 3; i++) rgbc[i] = Math.floor((255 - rgbc[i]) * level + rgbc[i]) + return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]) + }, + // rgb颜色转hex颜色 + rgbToHex(rgb) { + const bg = rgb.match(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/) + // 返回空字符串 + if (!bg) { + return '' + } + return '#' + toHex(bg[1]) + toHex(bg[2]) + toHex(bg[3]) + }, + // hex颜色转rgb颜色 + hexToRgb(hex) { + // 去除开头 # + if (hex.startsWith('#')) { + hex = hex.substring(1) + } + // 如果当前传入的是 3 位小数值,直接转换为 6 位进行处理 + if (hex.length === 3) { + hex = [hex[0], hex[0], hex[1], hex[1], hex[2], hex[2]].join('') + } + if (hex.length !== 6) { + throw new Error('invalid hex:' + hex) + } + const r = parseInt(hex.slice(0, 2), 16) + const g = parseInt(hex.slice(2, 4), 16) + const b = parseInt(hex.slice(4, 6), 16) + if ([r, g, b].some((x) => Number.isNaN(x))) { + throw new Error('invalid hex:' + hex) + } + return [r, g, b] + }, + // 透明度 + alpha(color, alpha = 1) { + let hex = color.length > 7 ? color.rgbToHex(color) : color + const { r, g, b } = color.hexToRgb(hex) + return `rgba(${r}, ${g}, ${b}, ${alpha})` + } +} + +// 转Hex +const toHex = (x) => ('0' + parseInt(x).toString(16)).slice(-2) diff --git a/src/src/utils/device.js b/src/src/utils/device.js new file mode 100644 index 0000000..64d30fc --- /dev/null +++ b/src/src/utils/device.js @@ -0,0 +1,43 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import enquireJs from 'enquire.js' + +export const DEVICE_TYPE = { + DESKTOP: 'desktop', + TABLET: 'tablet', + MOBILE: 'mobile' +} + +export const deviceEnquire = function (callback) { + const matchDesktop = { + match: () => { + callback && callback(DEVICE_TYPE.DESKTOP) + } + } + + const matchTablet = { + match: () => { + callback && callback(DEVICE_TYPE.TABLET) + } + } + + const matchMobile = { + match: () => { + callback && callback(DEVICE_TYPE.MOBILE) + } + } + + // screen and (max-width: 1087.99px) + enquireJs + .register('screen and (max-width: 576px)', matchMobile) + .register('screen and (min-width: 576px) and (max-width: 1199px)', matchTablet) + .register('screen and (min-width: 1200px)', matchDesktop) +} diff --git a/src/src/utils/downloadUtil.js b/src/src/utils/downloadUtil.js new file mode 100644 index 0000000..ba4ab92 --- /dev/null +++ b/src/src/utils/downloadUtil.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { message } from 'ant-design-vue' + +export default { + // 对下载的流进行处理,直接从浏览器下载下来 + resultDownload(res) { + if (res.data.type === 'application/json') { + // 错误以及无权限 + const reader = new FileReader(res.data) + reader.readAsText(res.data) + reader.onload = () => { + const result = JSON.parse(reader.result) + message.error(result.msg) + } + } else { + const blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' }) + const contentDisposition = res.headers['content-disposition'] + const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + const $link = document.createElement('a') + $link.href = URL.createObjectURL(blob) + $link.download = decodeURIComponent(patt.exec(contentDisposition)[1]) + $link.click() + document.body.appendChild($link) + document.body.removeChild($link) // 下载完成移除元素 + window.URL.revokeObjectURL($link.href) // 释放掉blob对象 + } + } +} diff --git a/src/src/utils/enum.js b/src/src/utils/enum.js new file mode 100644 index 0000000..eec36b2 --- /dev/null +++ b/src/src/utils/enum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const ThemeModeEnum = { + LIGHT: 'light', + DARK: 'dark', + REAL_DARK: 'realDark' +} diff --git a/src/src/utils/errorHandler.js b/src/src/utils/errorHandler.js new file mode 100644 index 0000000..c11ffc6 --- /dev/null +++ b/src/src/utils/errorHandler.js @@ -0,0 +1,30 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export default (error) => { + console.log(error) + // 过滤HTTP请求错误 + if (error.code) { + return false + } + const errorMap = { + InternalError: 'Javascript引擎内部错误', + ReferenceError: '未找到对象', + TypeError: '使用了错误的类型或对象', + RangeError: '使用内置对象时,参数超范围', + SyntaxError: '语法错误', + EvalError: '错误的使用了Eval', + URIError: 'URI错误' + } + const errorName = errorMap[error.name] || '未知错误' + nextTick(() => { + console.error(errorName) + }) +} diff --git a/src/src/utils/formRules.js b/src/src/utils/formRules.js new file mode 100644 index 0000000..778b6a2 --- /dev/null +++ b/src/src/utils/formRules.js @@ -0,0 +1,51 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const required = (message, trigger = ['blur', 'change']) => ({ + required: true, + message, + trigger +}) + +// 常用正则规则大全:https://any86.github.io/any-rule/ + +export const rules = { + phone: { + pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/, + message: '请填写符合要求的11位手机号', + trigger: 'blur' + }, + email: { + pattern: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, + message: '请填写正确的邮箱号', + trigger: 'blur' + }, + idCard: { + pattern: + /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/, + message: '请填写符合要求的身份证号', + trigger: 'blur' + }, + lettersNum: { + pattern: /^[A-Za-z0-9]+$/, + message: '填写内容须是字母或数字组成', + trigger: 'blur' + }, + number: { + pattern: /^\d{1,}$/, + message: '填写内容必须是纯数字', + trigger: 'blur' + }, + price: { + pattern: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/, + message: '只支持正数金额', + trigger: 'blur' + } +} diff --git a/src/src/utils/loading.js b/src/src/utils/loading.js new file mode 100644 index 0000000..35ce380 --- /dev/null +++ b/src/src/utils/loading.js @@ -0,0 +1,38 @@ +import { nextTick } from 'vue' + +/** + * 页面全局 Loading + * @method start 创建 loading + * @method done 移除 loading + */ +export const NextLoading = { + // 创建 loading + start: () => { + const el = document.querySelector('.admin-ui') + if (el) return + const bodys = document.body + const div = document.createElement('div') + div.setAttribute('class', 'admin-ui') + const htmls = ` +
+ +
+
Snowy
+
` + div.innerHTML = htmls + bodys.insertBefore(div, bodys.childNodes[0]) + window.nextLoading = true + }, + // 移除 loading + done: (time = 0) => { + nextTick(() => { + setTimeout(() => { + window.nextLoading = false + const el = document.querySelector('.admin-ui') + el?.parentNode?.removeChild(el) + }, time) + }) + } +} diff --git a/src/src/utils/objects.js b/src/src/utils/objects.js new file mode 100644 index 0000000..ec8cfef --- /dev/null +++ b/src/src/utils/objects.js @@ -0,0 +1,39 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import pinyin from 'js-pinyin' + +// 中文转拼音 传入仅首字母 +Object.defineProperty(String.prototype, 'toPinyin', { + writable: false, + enumerable: false, + configurable: true, + value: function (first) { + let str = this + if (first) { + return pinyin.getCamelChars(str).replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') + } + return pinyin.getFullChars(str).replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') + } +}) + +// 字符检索 传入检索值 +Object.defineProperty(String.prototype, 'filter', { + writable: false, + enumerable: false, + configurable: true, + value: function (input) { + let str = this + let en = str.toLowerCase().includes(input.toLowerCase()) + let zhFull = str.toPinyin().toLowerCase().includes(input.toLowerCase()) + let zhFirst = str.toPinyin(true).toLowerCase().includes(input.toLowerCase()) + return en || zhFull || zhFirst + } +}) diff --git a/src/src/utils/permission/index.js b/src/src/utils/permission/index.js new file mode 100644 index 0000000..0d8b5ae --- /dev/null +++ b/src/src/utils/permission/index.js @@ -0,0 +1,40 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import tool from '@/utils/tool' + +/** + * 权限判断是否能看到这个按钮,同时后端也做了校验,前端只是显示与不显示 + * @param {string, array} data 按钮的权限点,可以是单个字符串,也可以是数组 + * @param {string} rule or代表或,and代表与 + * 使用方法: + * 例如 buttonCodeList 的数据为: ['button1', 'button2', 'button3'] + * 想要判断 button1 的权限,可以写成:hasPerm('button1') + * 想要判断 button1 或 button2 的权限,可以写成:hasPerm(['button1', 'button2' ]) + * 想要判断 button1 与 button2 的权限,可以写成:hasPerm(['button1', 'button2' ], 'and') + */ +export function hasPerm(data, rule = 'or') { + if (!data) { + return false + } + const userInfo = tool.data.get('USER_INFO') + if (!userInfo) { + return false + } + const { buttonCodeList } = userInfo + if (!buttonCodeList) { + return false + } + if (Array.isArray(data)) { + const fn = rule === 'or' ? 'some' : 'every' + return data[fn]((item) => buttonCodeList.includes(item)) + } + return buttonCodeList.includes(data) +} diff --git a/src/src/utils/request.js b/src/src/utils/request.js new file mode 100644 index 0000000..1c799dd --- /dev/null +++ b/src/src/utils/request.js @@ -0,0 +1,185 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +// 统一的请求发送 +import axios from 'axios' +import qs from 'qs' +import { Modal, message, notification } from 'ant-design-vue' +import sysConfig from '@/config/index' +import tool from '@/utils/tool' + +// 以下这些code需要重新登录 +const reloadCodes = [401, 1011007, 1011008] +const errorCodeMap = { + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +// 定义一个重新登录弹出窗的变量 +const loginBack = ref(false) +// 创建 axios 实例 +const service = axios.create({ + baseURL: '/api', // api base_url + timeout: sysConfig.TIMEOUT // 请求超时时间 +}) + +// HTTP request 拦截器 +service.interceptors.request.use( + (config) => { + const token = tool.data.get('TOKEN') + if (token) { + config.headers[sysConfig.TOKEN_NAME] = sysConfig.TOKEN_PREFIX + token + } + if (!sysConfig.REQUEST_CACHE && config.method === 'get') { + config.params = config.params || {} + config.params._ = new Date().getTime() + } + Object.assign(config.headers, sysConfig.HEADERS) + return config + }, + (error) => { + return Promise.reject(error) + } +) + +// 保持重新登录Modal的唯一性 +const error = () => { + loginBack.value = true + Modal.error({ + title: '提示:', + okText: '重新登录', + content: '登录已失效, 请重新登录', + onOk: () => { + loginBack.value = false + tool.data.remove('TOKEN') + tool.data.remove('USER_INFO') + tool.data.remove('MENU') + tool.data.remove('PERMISSIONS') + window.location.reload() + } + }) +} + +// HTTP response 拦截器 +service.interceptors.response.use( + (response) => { + // 配置了blob,不处理直接返回文件流 + if (response.config.responseType === 'blob') { + if (response.status === 200) { + return response + } else { + message.warning('文件下载失败或此文件不存在') + return + } + } + const data = response.data + const code = data.code + if (reloadCodes.includes(code)) { + if (!loginBack.value) { + error() + } + return + } + if (code !== 200) { + const customErrorMessage = response.config.customErrorMessage + message.error(customErrorMessage || data.msg) + return Promise.reject(data) + // 自定义错误提示,覆盖后端返回的message + // 使用示例: + // export function customerList (data) { + // return request('list', data, 'get', { + // customErrorMessage: '自定义错误消息提示' + // }); + // } + } else { + // 统一成功提示 + const responseUrls = response.config.url.split('/') + const apiNameArray = [ + 'add', + 'edit', + 'delete', + 'update', + 'grant', + 'reset', + 'stop', + 'pass', + 'disable', + 'enable', + 'revoke', + 'suspend', + 'active', + 'turn', + 'adjust', + 'reject', + 'saveDraft' + ] + apiNameArray.forEach((apiName) => { + if (responseUrls[responseUrls.length - 1] === apiName) { + message.success(data.msg) + } + }) + } + return Promise.resolve(data.data) + }, + (error) => { + if (error) { + const status = 503 + const description = errorCodeMap[status] + notification.error({ + message: '请求错误', + description + }) + return Promise.reject(status) + } + } +) + +// 适配器, 用于适配不同的请求方式 +export const baseRequest = (url, value = {}, method = 'post', options = {}) => { + url = sysConfig.API_URL + url + if (method === 'post') { + return service.post(url, value, options) + } else if (method === 'get') { + return service.get(url, { params: value, ...options }) + } else if (method === 'formdata') { + // form-data表单提交的方式 + return service.post(url, qs.stringify(value), { + headers: { + 'Content-Type': 'multipart/form-data' + }, + ...options + }) + } else { + // 其他请求方式,例如:put、delete + return service({ + method: method, + url: url, + data: value, + ...options + }) + } +} + +// 模块内的请求, 会自动加上模块的前缀 +export const moduleRequest = + (moduleUrl) => + (url, ...arg) => { + return baseRequest(moduleUrl + url, ...arg) + } + +export default service diff --git a/src/src/utils/routerUtil.js b/src/src/utils/routerUtil.js new file mode 100644 index 0000000..24905a1 --- /dev/null +++ b/src/src/utils/routerUtil.js @@ -0,0 +1,43 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import userRoutes from '@/config/route' + +// 获取第一个界面 +const getIndexMenu = (menu) => { + if (menu[0] && menu[0].children) { + let indexMenu = menu[0].children[0] + // 如果第一个菜单为目录,接着往下找 + if (indexMenu.meta.type === 'catalog') { + indexMenu = traverseChild(menu) + } + return indexMenu + } else { + return userRoutes.menu[0] + } +} +// 遍历进行判断,其中处理了被隐藏的 +const traverseChild = (menu) => { + if (menu[0] && menu[0].children !== undefined) { + if (menu[0].children.length > 0) { + if (menu[0].children[0] && menu[0].children[0].meta.hidden && menu[0].children[0].meta.hidden === true) { + return menu[0] + } else { + return traverseChild(menu[0].children) + } + } + } else { + return menu[0] + } +} + +export default { + getIndexMenu +} diff --git a/src/src/utils/smCrypto.js b/src/src/utils/smCrypto.js new file mode 100644 index 0000000..7f7bab0 --- /dev/null +++ b/src/src/utils/smCrypto.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * 加解密的工具类 + * 使用:https://github.com/JuneAndGreen/sm-crypto + * + * @author yubaoshan + */ +import smCrypto from 'sm-crypto' + +const sm2 = smCrypto.sm2 +const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默认为1 +const publicKey = + '04298364ec840088475eae92a591e01284d1abefcda348b47eb324bb521bb03b0b2a5bc393f6b71dabb8f15c99a0050818b56b23f31743b93df9cf8948f15ddb54' + +/** + * 国密加解密工具类 + */ +export default { + // SM2加密 + doSm2Encrypt(msgString) { + return sm2.doEncrypt(msgString, publicKey, cipherMode) + }, + // SM2数组加密 + doSm2ArrayEncrypt(msgString) { + return sm2.doEncrypt(msgString, publicKey, cipherMode) + } +} diff --git a/src/src/utils/template.js b/src/src/utils/template.js new file mode 100644 index 0000000..bba3316 --- /dev/null +++ b/src/src/utils/template.js @@ -0,0 +1,326 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/* ! + * template.js v0.7.1 (https://github.com/yanhaijing/template.js) + * API https://github.com/yanhaijing/template.js/blob/master/doc/api.md + * Copyright 2015 yanhaijing. All Rights Reserved + * Licensed under MIT (https://github.com/yanhaijing/template.js/blob/master/MIT-LICENSE.txt) + */ +/* eslint-disable */ +;(function(root, factory) { + var template = factory(root); + if (typeof define === 'function' && define.amd) { + // AMD + define('template', function() { + return template; + }); + } else if (typeof exports === 'object') { + // Node.js + module.exports = template; + } else { + // Browser globals + var _template = root.template; + + template.noConflict = function() { + if (root.template === template) { + root.template = _template; + } + + return template; + }; + root.template = template; + } +}(this, function(root) { + 'use strict'; + var o = { + sTag: '<%',//开始标签 + eTag: '%>',//结束标签 + compress: false,//是否压缩html + escape: true, //默认输出是否进行HTML转义 + error: function (e) {}//错误回调 + }; + var functionMap = {}; //内部函数对象 + //修饰器前缀 + var modifierMap = { + '': function (param) {return nothing(param)}, + 'h': function (param) {return encodeHTML(param)}, + 'u': function (param) {return encodeURI(param)} + }; + + var toString = {}.toString; + var slice = [].slice; + function type(x) { + if(x === null){ + return 'null'; + } + + var t= typeof x; + + if(t !== 'object'){ + return t; + } + + var c = toString.call(x).slice(8, -1).toLowerCase(); + if(c !== 'object'){ + return c; + } + + if(x.constructor==Object){ + return c; + } + + return 'unknown'; + } + + function isObject(obj) { + return type(obj) === 'object'; + } + function isFunction(fn) { + return type(fn) === 'function'; + } + function isString(str) { + return type(str) === 'string'; + } + function extend() { + var target = arguments[0] || {}; + var arrs = slice.call(arguments, 1); + var len = arrs.length; + + for (var i = 0; i < len; i++) { + var arr = arrs[i]; + for (var name in arr) { + target[name] = arr[name]; + } + + } + return target; + } + function clone() { + var args = slice.call(arguments); + return extend.apply(null, [{}].concat(args)); + } + function nothing(param) { + return param; + } + function encodeHTML(source) { + return String(source) + .replace(/&/g,'&') + .replace(//g,'>') + .replace(/\\/g,'\') + .replace(/"/g,'"') + .replace(/'/g,'''); + } + function compress(html) { + return html.replace(/\s+/g, ' ').replace(//g, ''); + } + function consoleAdapter(cmd, msg) { + typeof console !== 'undefined' && console[cmd] && console[cmd](msg); + } + function handelError(e) { + var message = 'template.js error\n\n'; + + for (var key in e) { + message += '<' + key + '>\n' + e[key] + '\n\n'; + } + message += '\n' + e.message + '\n\n'; + consoleAdapter('error', message); + + o.error(e); + function error() { + return 'template.js error'; + } + error.toString = function () { + return '__code__ = "template.js error"'; + } + return error; + } + function parse(tpl, opt) { + var code = ''; + var sTag = opt.sTag; + var eTag = opt.eTag; + var escape = opt.escape; + function parsehtml(line) { + // 单双引号转义,换行符替换为空格 + line = line.replace(/('|")/g, '\\$1'); + var lineList = line.split('\n'); + var code = ''; + for (var i = 0; i < lineList.length; i++) { + code += ';__code__ += ("' + lineList[i] + (i === lineList.length - 1 ? '")\n' : '\\n")\n'); + } + return code; + } + function parsejs(line) { + //var reg = /^(:?)(.*?)=(.*)$/; + var reg = /^(?:=|(:.*?)=)(.*)$/ + var html; + var arr; + var modifier; + + // = := :*= + // :h=123 [':h=123', 'h', '123'] + if (arr = reg.exec(line)) { + html = arr[2]; // 输出 + if (Boolean(arr[1])) { + // :开头 + modifier = arr[1].slice(1); + } else { + // = 开头 + modifier = escape ? 'h' : ''; + } + + return ';__code__ += __modifierMap__["' + modifier + '"](typeof (' + html + ') !== "undefined" ? (' + html + ') : "")\n'; + } + + //原生js + return ';' + line + '\n'; + } + + var tokens = tpl.split(sTag); + + for (var i = 0, len = tokens.length; i < len; i++) { + var token = tokens[i].split(eTag); + + if (token.length === 1) { + code += parsehtml(token[0]); + } else { + code += parsejs(token[0], true); + if (token[1]) { + code += parsehtml(token[1]); + } + } + } + return code; + } + function compiler(tpl, opt) { + var mainCode = parse(tpl, opt); + + var headerCode = '\n' + + ' var html = (function (__data__, __modifierMap__) {\n' + + ' var __str__ = "", __code__ = "";\n' + + ' for(var key in __data__) {\n' + + ' __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' + + ' }\n' + + ' eval(__str__);\n\n'; + + var footerCode = '\n' + + ' ;return __code__;\n' + + ' }(__data__, __modifierMap__));\n' + + ' return html;\n'; + + var code = headerCode + mainCode + footerCode; + code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么 + try { + var Render = new Function('__data__', '__modifierMap__', code); + Render.toString = function () { + return mainCode; + } + return Render; + } catch(e) { + e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}'; + throw e; + } + } + function compile(tpl, opt) { + opt = clone(o, opt); + + try { + var Render = compiler(tpl, opt); + } catch(e) { + e.name = 'CompileError'; + e.tpl = tpl; + e.render = e.temp; + delete e.temp; + return handelError(e); + } + + function render(data) { + data = clone(functionMap, data); + try { + var html = Render(data, modifierMap); + html = opt.compress ? compress(html) : html; + return html; + } catch(e) { + e.name = 'RenderError'; + e.tpl = tpl; + e.render = Render.toString(); + return handelError(e)(); + } + } + + render.toString = function () { + return Render.toString(); + }; + return render; + } + function template(tpl, data) { + if (typeof tpl !== 'string') { + return ''; + } + + var fn = compile(tpl); + if (!isObject(data)) { + return fn; + } + + return fn(data); + } + + template.config = function (option) { + if (isObject(option)) { + o = extend(o, option); + } + return clone(o); + }; + + template.registerFunction = function(name, fn) { + if (!isString(name)) { + return clone(functionMap); + } + if (!isFunction(fn)) { + return functionMap[name]; + } + + return functionMap[name] = fn; + } + template.unregisterFunction = function (name) { + if (!isString(name)) { + return false; + } + delete functionMap[name]; + return true; + } + + template.registerModifier = function(name, fn) { + if (!isString(name)) { + return clone(modifierMap); + } + if (!isFunction(fn)) { + return modifierMap[name]; + } + + return modifierMap[name] = fn; + } + template.unregisterModifier = function (name) { + if (!isString(name)) { + return false; + } + delete modifierMap[name]; + return true; + } + + template.__encodeHTML = encodeHTML; + template.__compress = compress; + template.__handelError = handelError; + template.__compile = compile; + template.version = '0.7.1'; + return template; +})); diff --git a/src/src/utils/themeUtil.js b/src/src/utils/themeUtil.js new file mode 100644 index 0000000..1c6b3d9 --- /dev/null +++ b/src/src/utils/themeUtil.js @@ -0,0 +1,81 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { generate } from '@ant-design/colors' +import tool from '../utils/tool' +import config from '../config' +import { themeEnum } from '@/layout/enum/themeEnum' + +const changeColor = (newPrimaryColor, theme, darkClass = 'snowy-theme-dark') => { + return new Promise((resolve) => { + const themeEleId = 'snowy-theme-var' + const themeEle = document.querySelector(`#${themeEleId}`) + if (themeEle && themeEle.parentNode) { + themeEle.parentNode.removeChild(themeEle) + } + const isRealDark = theme === themeEnum.REAL_DARK + if (newPrimaryColor) { + const colors = generate(newPrimaryColor, isRealDark ? { theme: 'dark' } : {}) + const rootClass = isRealDark ? `.${darkClass}` : ':root' + const styleElement = document.createElement('style') + styleElement.id = themeEleId + styleElement.setAttribute('type', 'text/css') + styleElement.innerHTML = `${rootClass}{${colors + .map((c, i) => { + return `--primary-${i + 1}:${c};` + }) + .concat([`--primary-color:${newPrimaryColor};`]) + .join('')}}` + document.head.appendChild(styleElement) + } else { + document.body.removeAttribute('snowy-theme') + } + if (isRealDark) { + document.body.classList.add(darkClass) + } else { + document.body.classList.remove(darkClass) + } + resolve() + }) +} + +const loadLocalTheme = (localSetting) => { + if (localSetting) { + let { theme, themeColor } = localSetting + themeColor = themeColor || config.COLOR + theme = theme || config.THEME + changeColor(themeColor, theme) + } +} + +/** + * 获取本地保存的配置 + * @param loadTheme {boolean} 是否加载配置中的主题 + * @returns {Object} + */ +const getLocalSetting = (loadTheme) => { + let localSetting = {} + try { + const theme = tool.data.get('SNOWY_THEME') + const themeColor = tool.data.get('SNOWY_THEME_COLOR') + localSetting = { + theme, + themeColor + } + } catch (e) { + console.error(e) + } + if (loadTheme) { + loadLocalTheme(localSetting) + } + return localSetting +} + +export { loadLocalTheme, getLocalSetting, changeColor } diff --git a/src/src/utils/tool.js b/src/src/utils/tool.js new file mode 100644 index 0000000..6703aa1 --- /dev/null +++ b/src/src/utils/tool.js @@ -0,0 +1,169 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * @Descripttion: 工具集 + * @version: 1.1 + * @LastEditors: yubaoshan + * @LastEditTime: 2022年4月19日10:58:41 + */ +const tool = {} + +// localStorage +tool.data = { + set(table, settings) { + const _set = JSON.stringify(settings) + const SNOWYSTRING = table.slice(0, 6) === 'SNOWY_' && table !== 'SNOWY_SYS_BASE_CONFIG' + if (SNOWYSTRING) { + let localSetting = JSON.parse(localStorage.getItem('SNOWY_SETTING')) || {} + let newSetting = {} + newSetting[table] = _set + return localStorage.setItem('SNOWY_SETTING', JSON.stringify(Object.assign(localSetting, newSetting))) + } else return localStorage.setItem(table, _set) + }, + get(table) { + const SNOWYSTRING = table.slice(0, 6) === 'SNOWY_' && table !== 'SNOWY_SYS_BASE_CONFIG' + const SNOWY_SETTING = JSON.parse(localStorage.getItem('SNOWY_SETTING')) || {} + let data = SNOWYSTRING ? SNOWY_SETTING[table] : localStorage.getItem(table) + try { + data = JSON.parse(data) + } catch (err) { + return null + } + return data + }, + remove(table) { + return localStorage.removeItem(table) + }, + + clear() { + return localStorage.clear() + } +} + +// sessionStorage +tool.session = { + set(table, settings) { + const _set = JSON.stringify(settings) + return sessionStorage.setItem(table, _set) + }, + get(table) { + let data = sessionStorage.getItem(table) + try { + data = JSON.parse(data) + } catch (err) { + return null + } + return data + }, + remove(table) { + return sessionStorage.removeItem(table) + }, + clear() { + return sessionStorage.clear() + } +} + +// 千分符 +tool.groupSeparator = (num) => { + num = `${num}` + if (!num.includes('.')) num += '.' + + return num + .replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { + return `${$1},` + }) + .replace(/\.$/, '') +} + +// 获取所有字典数组 +tool.dictDataAll = () => { + return tool.data.get('DICT_TYPE_TREE_DATA') +} + +// 字典翻译方法,界面插槽使用方法 {{ $TOOL.dictType('sex', record.sex) }} +tool.dictTypeData = (dictValue, value) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return '需重新登录' + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (!tree) { + return '无此字典' + } + const children = tree.children + const dict = children.find((item) => item.dictValue === value) + return dict ? dict.dictLabel : '无此字典项' +} + +// 获取某个code下字典的列表,多用于字典下拉框 +tool.dictTypeList = (dictValue) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return [] + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (tree && tree.children) { + return tree.children + } + return [] +} + +// 获取某个code下字典的列表,基于dictTypeList 改进,保留老的,逐步替换 +tool.dictList = (dictValue) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return [] + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (tree) { + return tree.children.map((item) => { + return { + value: item['dictValue'], + label: item['name'] + } + }) + } + return [] +} + +// 树形翻译 需要指定最顶级的 parentValue 和当级的value +tool.translateTree = (parentValue, value) => { + const tree = tool.dictDataAll().find((item) => item.dictValue === parentValue) + const targetNode = findNodeByValue(tree, value) + return targetNode ? targetNode.dictLabel : '' +} +const findNodeByValue = (node, value) => { + if (node.dictValue === value) { + return node + } + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const result = findNodeByValue(node.children[i], value) + if (result) { + return result + } + } + } + return null +} + +// 生成UUID +tool.snowyUuid = () => { + let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) + }) + // 首字符转换成字母 + return 'xn' + uuid.slice(2) +} + +export default tool diff --git a/src/src/utils/useTabs.js b/src/src/utils/useTabs.js new file mode 100644 index 0000000..5b8a926 --- /dev/null +++ b/src/src/utils/useTabs.js @@ -0,0 +1,75 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { nextTick } from 'vue' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import router from '@/router' +import { iframeStore, keepAliveStore, viewTagsStore } from '@/store' +export default { + // 刷新标签 + refresh() { + NProgress.start() + const keepAlive = keepAliveStore() + const route = router.currentRoute.value + keepAlive.removeKeepLive(route.name) + keepAlive.setRouteShow(false) + nextTick(() => { + keepAlive.pushKeepLive(route.name) + keepAlive.setRouteShow(true) + NProgress.done() + }) + }, + // 关闭标签 + close(tag) { + const route = tag || router.currentRoute.value + const store = viewTagsStore() + store.removeViewTags(route) + iframeStore().removeIframeList(route) + keepAliveStore().removeKeepLive(route.name) + const tagList = store.viewTags + const latestView = tagList.slice(-1)[0] + if (latestView) { + router.push(latestView) + } else { + router.push('/') + } + }, + // 关闭标签后处理 + closeNext(next) { + const route = router.currentRoute.value + const store = viewTagsStore() + store.removeViewTags(route) + iframeStore().removeIframeList(route) + keepAliveStore().removeKeepLive(route.name) + if (next) { + const tagList = store.viewTags + next(tagList) + } + }, + // 关闭其他 + closeOther() { + const route = router.currentRoute.value + const store = viewTagsStore() + const tagList = [...store.viewTags] + tagList.forEach((tag) => { + // eslint-disable-next-line prettier/prettier + if ((tag.meta && tag.meta.affix) || route.fullPath == tag.fullPath) { + return true + } else { + this.close(tag) + } + }) + }, + // 设置标题 + setTitle(title) { + viewTagsStore().updateViewTagsTitle(title) + } +} diff --git a/src/src/utils/watermark.js b/src/src/utils/watermark.js new file mode 100644 index 0000000..a17e9b2 --- /dev/null +++ b/src/src/utils/watermark.js @@ -0,0 +1,91 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import tool from '@/utils/tool' +export const watermark = { + set: function (text1, text2) { + const canvas = document.createElement('canvas') + canvas.width = 150 + canvas.height = 120 + canvas.style.display = 'none' + const shuiyin = canvas.getContext('2d') + // 控制文字的旋转角度和上下位置 + shuiyin.rotate((-20 * Math.PI) / 180) + shuiyin.translate(-50, 20) + //文字颜色 + shuiyin.fillStyle = '#f5f5f5' + //文字样式 + shuiyin.font = '100 16px Microsoft JhengHei ' + shuiyin.fillText(text1, canvas.width / 3, canvas.height / 2) + shuiyin.fillText(text2, canvas.width / 3, canvas.height / 2 + 20) + /* 新建一个用于填充canvas水印的标签,之所以没有直接在body上添加, + 是因为z-index对个别内容影响,才考虑的不用body */ + const watermark = document.createElement('div') + const styleStr = ` + position:fixed; + top:0; + left:0; + width:100vw; + height:100vh; + z-index:99999; + pointer-events:none; + background-repeat:repeat; + mix-blend-mode: multiply; + background-image:url('${canvas.toDataURL('image/png')}')` + watermark.setAttribute('style', styleStr) + watermark.classList.add('watermark') + document.body.appendChild(watermark) + + //此方法是防止用户通过控制台修改样式去除水印效果 + /* MutationObserver 是一个可以监听DOM结构变化的接口。 */ + const observer = new MutationObserver(() => { + // 此处根据用户登录状态,判断是否终止监听,避免用户退出后登录页面仍然有水印 + if (!tool.data.get('TOKEN')) { + this.close() + observer.disconnect() + } + const wmInstance = document.body.querySelector('.watermark') + if (!wmInstance || wmInstance.getAttribute('style') !== styleStr) { + //如果标签在,只修改了属性,重新赋值属性 + if (wmInstance) { + // 避免一直触发 + // observer.disconnect(); + wmInstance.setAttribute('style', styleStr) + } else { + /* 此处根据用户登录状态,判断是否终止监听,避免用户退出后登录页面仍然有水印 */ + if (tool.data.get('TOKEN')) { + //标签被移除,重新添加标签 + document.body.appendChild(watermark) + } else { + observer.disconnect() + } + } + } + }) + observer.observe(document.body, { + attributes: true, + subtree: true, + childList: true + }) + }, + close: function () { + /* 关闭页面的水印,即要移除水印标签 */ + let watermark = document.body.querySelector('.watermark') + if (watermark) { + document.body.removeChild(watermark) + } + } +} +// 使用方法 +// import { watermark } from '@/utils/watermark' +// 添加水印 +// watermark.set('Snowy','xiaonuo.vip') +// 移除水印,传 null 移除水印 +// watermark.close() diff --git a/src/src/views/auth/findPwd/emailFindForm.vue b/src/src/views/auth/findPwd/emailFindForm.vue new file mode 100644 index 0000000..bae2a2f --- /dev/null +++ b/src/src/views/auth/findPwd/emailFindForm.vue @@ -0,0 +1,193 @@ + + + diff --git a/src/src/views/auth/findPwd/index.vue b/src/src/views/auth/findPwd/index.vue new file mode 100644 index 0000000..fbbe641 --- /dev/null +++ b/src/src/views/auth/findPwd/index.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/src/src/views/auth/findPwd/phoneFindForm.vue b/src/src/views/auth/findPwd/phoneFindForm.vue new file mode 100644 index 0000000..1d8322f --- /dev/null +++ b/src/src/views/auth/findPwd/phoneFindForm.vue @@ -0,0 +1,194 @@ + + + diff --git a/src/src/views/auth/login/callback.vue b/src/src/views/auth/login/callback.vue new file mode 100644 index 0000000..fe27485 --- /dev/null +++ b/src/src/views/auth/login/callback.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/src/views/auth/login/login.less b/src/src/views/auth/login/login.less new file mode 100644 index 0000000..c5df23b --- /dev/null +++ b/src/src/views/auth/login/login.less @@ -0,0 +1,200 @@ +.login-icon-gray { + color: rgba(0, 0, 0, 0.25); +} +.login-validCode-img { + border: 1px solid var(--border-color-split); + cursor: pointer; + width: 100%; + height: 40px; +} +.login-wrapper{ + width: 100vw; + height:100vh; + overflow: hidden; + background-color: #fff; + display: flex; +} +.login_background { + width: 50%; + height: 100%; + overflow: hidden; + background-size: cover; + background-position: center; + background-image: url('@/assets/images/login_home.jpg'); + position: relative; +} +.login_background_front { + width: 450px; + height: 450px; + margin-left: 100px; + margin-top: 15%; + overflow: hidden; + /*position: relative;*/ + background-size: cover; + background-position: center; + background-image: url(/img/login_background_front.png); + animation-name: myfirst; + animation-duration: 5s; + animation-timing-function: linear; + animation-delay: 1s; + animation-iteration-count: infinite; + animation-direction: alternate; + animation-play-state: running; +} +@keyframes myfirst { + 0% { + left: 0px; + top: 0px; + } + 50% { + left: 50px; + top: 0px; + } + 100% { + left: 0px; + top: 0px; + } +} +@-webkit-keyframes myfirst /* Safari and Chrome */ { + 0% { + left: 0px; + top: 0px; + } + 50% { + left: 50px; + top: 0px; + } + 100% { + left: 0px; + top: 0px; + } +} +.login_adv__title h2 { + font-size: 40px; +} +.login_adv__title h4 { + font-size: 18px; + margin-top: 10px; + font-weight: normal; +} +.login_adv__title p { + font-size: 14px; + margin-top: 10px; + line-height: 1.8; + color: rgba(255, 255, 255, 0.6); +} +.login_adv__title div { + margin-top: 10px; + display: flex; + align-items: center; +} +.login_adv__title div span { + margin-right: 15px; +} +.login_adv__title div i { + font-size: 40px; +} +.login_adv__title div i.add { + font-size: 20px; + color: rgba(255, 255, 255, 0.6); +} +/*background-image:linear-gradient(transparent, #000);*/ +.login_main { + width: 50%; + height: 100%; + display: flex; + justify-content: center; +} +.login-form { + width: 450px; + position: absolute; + top:21.8% +} +.login-header { + margin-bottom: 20px; +} +.login-header h2 { + font-size: 24px; + font-weight: bold; + margin-top: 10px; +} +.login_config { + position: absolute; + top: 20px; + right: 20px; +} +.logo_background{ + position: absolute; + left: 0; + top: 56px; + height: 60px; + padding-left: 56px; + width: 100%; + //background: linear-gradient(120deg, rgb(255 255 255 / 90%), rgba(255, 255, 255, 0)); + display: flex; + align-items: center; +} +.logo_background a{ + text-decoration: none; + cursor: pointer; + display: flex; + align-items: center; +} +.logo_background a.no-link, +.logo_background a.no-link label{ + cursor: default; +} +.logo_background img{ + height:40px; + margin-right: 10px; +} +.logo_background a label{ + font-size:24px; + color:#fff; + cursor: pointer; +} +.login_background .version{ + width: 100%; + font-size: 14px; + color:#fff; + font-weight: 300; + padding: 0 56px; + box-sizing: border-box; + position: absolute; + bottom:12px; +} +.login_background .version p{ + line-height: 22px; + text-align: center; + margin-bottom:6px; +} +@media (max-width: 1200px) { + .login-form { + width: 340px; + } +} +@media (max-width: 1000px) { + .login_main { + width: 100%; + position: absolute; + left:0; + right:0; + } + .login_background_front { + display: none; + } + .login-form { + width: 100%; + padding: 20px 40px; + top:15% + } + .logo_background{ + padding-left:40px; + } + .login_background .version{ + padding:0 20px; + } + .login_background .version p:first-child{ + display: none; + } +} diff --git a/src/src/views/auth/login/login.vue b/src/src/views/auth/login/login.vue new file mode 100644 index 0000000..db3aced --- /dev/null +++ b/src/src/views/auth/login/login.vue @@ -0,0 +1,267 @@ + + + diff --git a/src/src/views/auth/login/phoneLoginForm.vue b/src/src/views/auth/login/phoneLoginForm.vue new file mode 100644 index 0000000..6ca4876 --- /dev/null +++ b/src/src/views/auth/login/phoneLoginForm.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/src/views/auth/login/threeLogin.vue b/src/src/views/auth/login/threeLogin.vue new file mode 100644 index 0000000..c3ab83a --- /dev/null +++ b/src/src/views/auth/login/threeLogin.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/src/views/auth/login/util.js b/src/src/views/auth/login/util.js new file mode 100644 index 0000000..18d382b --- /dev/null +++ b/src/src/views/auth/login/util.js @@ -0,0 +1,49 @@ +import userCenterApi from '@/api/sys/userCenterApi' +import dictApi from '@/api/dev/dictApi' +import router from '@/router' +import tool from '@/utils/tool' +import { message } from 'ant-design-vue' +import routerUtil from '@/utils/routerUtil' +import { useMenuStore } from '@/store/menu' +import { userStore } from '@/store/user' + +export const afterLogin = async (loginToken) => { + const menuStore = useMenuStore() + tool.data.set('TOKEN', loginToken) + // 初始化用户信息 + await userStore().initUserInfo() + + // 获取用户的菜单 + const menu = await userCenterApi.userLoginMenu() + let indexMenu = routerUtil.getIndexMenu(menu).path + await menuStore.fetchMenu() + // 重置系统默认应用 + tool.data.set('SNOWY_MENU_MODULE_ID', menu[0].id) + message.success('登录成功') + if (tool.data.get('LAST_VIEWS_PATH')) { + // 如果有缓存,将其登录跳转到最后访问的路由 + indexMenu = tool.data.get('LAST_VIEWS_PATH') + } + // 如果存在退出后换新账号登录,进行重新匹配,匹配无果则默认首页 + if (menu) { + let routerTag = 0 + menu.forEach((item) => { + if (item.children) { + if (JSON.stringify(item.children).indexOf(indexMenu) > -1) { + routerTag++ + } + } + }) + if (routerTag === 0) { + // 取首页 + indexMenu = routerUtil.getIndexMenu(menu).path + } + } + dictApi.dictTree().then((data) => { + // 设置字典到store中 + tool.data.set('DICT_TYPE_TREE_DATA', data) + }) + await router.replace({ + path: indexMenu + }) +} diff --git a/src/src/views/auth/monitor/analyse.vue b/src/src/views/auth/monitor/analyse.vue new file mode 100644 index 0000000..9ca7ab1 --- /dev/null +++ b/src/src/views/auth/monitor/analyse.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/src/views/auth/monitor/bTab.vue b/src/src/views/auth/monitor/bTab.vue new file mode 100644 index 0000000..a907ffd --- /dev/null +++ b/src/src/views/auth/monitor/bTab.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/src/views/auth/monitor/cTab.vue b/src/src/views/auth/monitor/cTab.vue new file mode 100644 index 0000000..ab762d8 --- /dev/null +++ b/src/src/views/auth/monitor/cTab.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/src/views/auth/monitor/index.vue b/src/src/views/auth/monitor/index.vue new file mode 100644 index 0000000..34830e1 --- /dev/null +++ b/src/src/views/auth/monitor/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/src/views/auth/monitor/tokenInfoList.vue b/src/src/views/auth/monitor/tokenInfoList.vue new file mode 100644 index 0000000..6bba9e0 --- /dev/null +++ b/src/src/views/auth/monitor/tokenInfoList.vue @@ -0,0 +1,183 @@ + + + diff --git a/src/src/views/auth/third/index.vue b/src/src/views/auth/third/index.vue new file mode 100644 index 0000000..6e724ab --- /dev/null +++ b/src/src/views/auth/third/index.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/src/views/biz/dict/form.vue b/src/src/views/biz/dict/form.vue new file mode 100644 index 0000000..4acfd42 --- /dev/null +++ b/src/src/views/biz/dict/form.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/src/views/biz/dict/index.vue b/src/src/views/biz/dict/index.vue new file mode 100644 index 0000000..ab1e8e7 --- /dev/null +++ b/src/src/views/biz/dict/index.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/src/views/biz/extendedField/detail/form.vue b/src/src/views/biz/extendedField/detail/form.vue new file mode 100644 index 0000000..2eeda0f --- /dev/null +++ b/src/src/views/biz/extendedField/detail/form.vue @@ -0,0 +1,174 @@ + + + diff --git a/src/src/views/biz/extendedField/index.vue b/src/src/views/biz/extendedField/index.vue new file mode 100644 index 0000000..2319da1 --- /dev/null +++ b/src/src/views/biz/extendedField/index.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/src/views/biz/index/index.vue b/src/src/views/biz/index/index.vue new file mode 100644 index 0000000..9fd6bdf --- /dev/null +++ b/src/src/views/biz/index/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/src/views/biz/notice/detail.vue b/src/src/views/biz/notice/detail.vue new file mode 100644 index 0000000..c239f1b --- /dev/null +++ b/src/src/views/biz/notice/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/src/views/biz/notice/form.vue b/src/src/views/biz/notice/form.vue new file mode 100644 index 0000000..fd76a69 --- /dev/null +++ b/src/src/views/biz/notice/form.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/src/views/biz/notice/index.vue b/src/src/views/biz/notice/index.vue new file mode 100644 index 0000000..e26eb8f --- /dev/null +++ b/src/src/views/biz/notice/index.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/src/views/biz/org/form.vue b/src/src/views/biz/org/form.vue new file mode 100644 index 0000000..537e5be --- /dev/null +++ b/src/src/views/biz/org/form.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/src/views/biz/org/index.vue b/src/src/views/biz/org/index.vue new file mode 100644 index 0000000..0b3afd3 --- /dev/null +++ b/src/src/views/biz/org/index.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/src/views/biz/position/form.vue b/src/src/views/biz/position/form.vue new file mode 100644 index 0000000..90c870b --- /dev/null +++ b/src/src/views/biz/position/form.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/src/views/biz/position/index.vue b/src/src/views/biz/position/index.vue new file mode 100644 index 0000000..26bdb13 --- /dev/null +++ b/src/src/views/biz/position/index.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/src/views/biz/searchTags/form.vue b/src/src/views/biz/searchTags/form.vue new file mode 100644 index 0000000..acd4437 --- /dev/null +++ b/src/src/views/biz/searchTags/form.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/src/views/biz/searchTags/index.vue b/src/src/views/biz/searchTags/index.vue new file mode 100644 index 0000000..227b93f --- /dev/null +++ b/src/src/views/biz/searchTags/index.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/src/views/biz/user/form.vue b/src/src/views/biz/user/form.vue new file mode 100644 index 0000000..fc6587a --- /dev/null +++ b/src/src/views/biz/user/form.vue @@ -0,0 +1,568 @@ + + + + + diff --git a/src/src/views/biz/user/index.vue b/src/src/views/biz/user/index.vue new file mode 100644 index 0000000..522efd7 --- /dev/null +++ b/src/src/views/biz/user/index.vue @@ -0,0 +1,425 @@ + + + + diff --git a/src/src/views/dev/config/emailConfig/aliyunEmailForm.vue b/src/src/views/dev/config/emailConfig/aliyunEmailForm.vue new file mode 100644 index 0000000..7f42718 --- /dev/null +++ b/src/src/views/dev/config/emailConfig/aliyunEmailForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/src/views/dev/config/emailConfig/index.vue b/src/src/views/dev/config/emailConfig/index.vue new file mode 100644 index 0000000..4225739 --- /dev/null +++ b/src/src/views/dev/config/emailConfig/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/src/views/dev/config/emailConfig/localEmailForm.vue b/src/src/views/dev/config/emailConfig/localEmailForm.vue new file mode 100644 index 0000000..896842b --- /dev/null +++ b/src/src/views/dev/config/emailConfig/localEmailForm.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/src/views/dev/config/emailConfig/tencentEmailForm.vue b/src/src/views/dev/config/emailConfig/tencentEmailForm.vue new file mode 100644 index 0000000..e69f7f9 --- /dev/null +++ b/src/src/views/dev/config/emailConfig/tencentEmailForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/src/views/dev/config/fileConfig/aliyunFileForm.vue b/src/src/views/dev/config/fileConfig/aliyunFileForm.vue new file mode 100644 index 0000000..dc6ae29 --- /dev/null +++ b/src/src/views/dev/config/fileConfig/aliyunFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/src/views/dev/config/fileConfig/index.vue b/src/src/views/dev/config/fileConfig/index.vue new file mode 100644 index 0000000..ad3674a --- /dev/null +++ b/src/src/views/dev/config/fileConfig/index.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/src/views/dev/config/fileConfig/localFileForm.vue b/src/src/views/dev/config/fileConfig/localFileForm.vue new file mode 100644 index 0000000..06f3557 --- /dev/null +++ b/src/src/views/dev/config/fileConfig/localFileForm.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/src/views/dev/config/fileConfig/minioFileForm.vue b/src/src/views/dev/config/fileConfig/minioFileForm.vue new file mode 100644 index 0000000..ead4129 --- /dev/null +++ b/src/src/views/dev/config/fileConfig/minioFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/src/views/dev/config/fileConfig/tencentFileForm.vue b/src/src/views/dev/config/fileConfig/tencentFileForm.vue new file mode 100644 index 0000000..87d30b3 --- /dev/null +++ b/src/src/views/dev/config/fileConfig/tencentFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/src/views/dev/config/index.vue b/src/src/views/dev/config/index.vue new file mode 100644 index 0000000..011eddb --- /dev/null +++ b/src/src/views/dev/config/index.vue @@ -0,0 +1,74 @@ + + + diff --git a/src/src/views/dev/config/otherConfig/form.vue b/src/src/views/dev/config/otherConfig/form.vue new file mode 100644 index 0000000..8d5eb4d --- /dev/null +++ b/src/src/views/dev/config/otherConfig/form.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/src/views/dev/config/otherConfig/index.vue b/src/src/views/dev/config/otherConfig/index.vue new file mode 100644 index 0000000..600095a --- /dev/null +++ b/src/src/views/dev/config/otherConfig/index.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/src/views/dev/config/smsConfig/aliyunSmsForm.vue b/src/src/views/dev/config/smsConfig/aliyunSmsForm.vue new file mode 100644 index 0000000..cea4ff2 --- /dev/null +++ b/src/src/views/dev/config/smsConfig/aliyunSmsForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/src/views/dev/config/smsConfig/index.vue b/src/src/views/dev/config/smsConfig/index.vue new file mode 100644 index 0000000..9b20f83 --- /dev/null +++ b/src/src/views/dev/config/smsConfig/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/src/views/dev/config/smsConfig/tencentSmsForm.vue b/src/src/views/dev/config/smsConfig/tencentSmsForm.vue new file mode 100644 index 0000000..333e6dd --- /dev/null +++ b/src/src/views/dev/config/smsConfig/tencentSmsForm.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue b/src/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue new file mode 100644 index 0000000..247f83b --- /dev/null +++ b/src/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/src/views/dev/config/sysConfig.vue b/src/src/views/dev/config/sysConfig.vue new file mode 100644 index 0000000..c92481c --- /dev/null +++ b/src/src/views/dev/config/sysConfig.vue @@ -0,0 +1,229 @@ + + + diff --git a/src/src/views/dev/config/thirdConfig/giteeThirdForm.vue b/src/src/views/dev/config/thirdConfig/giteeThirdForm.vue new file mode 100644 index 0000000..9c7b619 --- /dev/null +++ b/src/src/views/dev/config/thirdConfig/giteeThirdForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/src/views/dev/config/thirdConfig/index.vue b/src/src/views/dev/config/thirdConfig/index.vue new file mode 100644 index 0000000..bf0d7b8 --- /dev/null +++ b/src/src/views/dev/config/thirdConfig/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/src/views/dev/config/thirdConfig/wechatThirdForm.vue b/src/src/views/dev/config/thirdConfig/wechatThirdForm.vue new file mode 100644 index 0000000..33ce2a3 --- /dev/null +++ b/src/src/views/dev/config/thirdConfig/wechatThirdForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/src/views/dev/dict/category/bizIndex.vue b/src/src/views/dev/dict/category/bizIndex.vue new file mode 100644 index 0000000..43eaaef --- /dev/null +++ b/src/src/views/dev/dict/category/bizIndex.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/src/views/dev/dict/category/form.vue b/src/src/views/dev/dict/category/form.vue new file mode 100644 index 0000000..ff117f0 --- /dev/null +++ b/src/src/views/dev/dict/category/form.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/src/views/dev/dict/category/frmIndex.vue b/src/src/views/dev/dict/category/frmIndex.vue new file mode 100644 index 0000000..cbfa999 --- /dev/null +++ b/src/src/views/dev/dict/category/frmIndex.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/src/views/dev/dict/index.vue b/src/src/views/dev/dict/index.vue new file mode 100644 index 0000000..a126cd8 --- /dev/null +++ b/src/src/views/dev/dict/index.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/src/views/dev/email/detail.vue b/src/src/views/dev/email/detail.vue new file mode 100644 index 0000000..5eb083e --- /dev/null +++ b/src/src/views/dev/email/detail.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/src/views/dev/email/form.vue b/src/src/views/dev/email/form.vue new file mode 100644 index 0000000..2954061 --- /dev/null +++ b/src/src/views/dev/email/form.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/src/views/dev/email/index.vue b/src/src/views/dev/email/index.vue new file mode 100644 index 0000000..72eca9b --- /dev/null +++ b/src/src/views/dev/email/index.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/src/views/dev/email/send/aliyunEmailSend.vue b/src/src/views/dev/email/send/aliyunEmailSend.vue new file mode 100644 index 0000000..82c8e1b --- /dev/null +++ b/src/src/views/dev/email/send/aliyunEmailSend.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/src/views/dev/email/send/localEmailSend.vue b/src/src/views/dev/email/send/localEmailSend.vue new file mode 100644 index 0000000..13f0a26 --- /dev/null +++ b/src/src/views/dev/email/send/localEmailSend.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/src/views/dev/email/send/tencentEmailSend.vue b/src/src/views/dev/email/send/tencentEmailSend.vue new file mode 100644 index 0000000..6caabc5 --- /dev/null +++ b/src/src/views/dev/email/send/tencentEmailSend.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/src/views/dev/file/detail.vue b/src/src/views/dev/file/detail.vue new file mode 100644 index 0000000..79dac58 --- /dev/null +++ b/src/src/views/dev/file/detail.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/src/views/dev/file/index.vue b/src/src/views/dev/file/index.vue new file mode 100644 index 0000000..665b913 --- /dev/null +++ b/src/src/views/dev/file/index.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/src/views/dev/file/preview.vue b/src/src/views/dev/file/preview.vue new file mode 100644 index 0000000..7db4a1d --- /dev/null +++ b/src/src/views/dev/file/preview.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/src/views/dev/file/uploadForm.vue b/src/src/views/dev/file/uploadForm.vue new file mode 100644 index 0000000..2cfb615 --- /dev/null +++ b/src/src/views/dev/file/uploadForm.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/src/views/dev/job/form.vue b/src/src/views/dev/job/form.vue new file mode 100644 index 0000000..fc42c4f --- /dev/null +++ b/src/src/views/dev/job/form.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/src/views/dev/job/index.vue b/src/src/views/dev/job/index.vue new file mode 100644 index 0000000..809f265 --- /dev/null +++ b/src/src/views/dev/job/index.vue @@ -0,0 +1,216 @@ + + + diff --git a/src/src/views/dev/log/oplog/columnChart.vue b/src/src/views/dev/log/oplog/columnChart.vue new file mode 100644 index 0000000..b93e717 --- /dev/null +++ b/src/src/views/dev/log/oplog/columnChart.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/src/views/dev/log/oplog/detail.vue b/src/src/views/dev/log/oplog/detail.vue new file mode 100644 index 0000000..50d2c4d --- /dev/null +++ b/src/src/views/dev/log/oplog/detail.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/src/views/dev/log/oplog/index.vue b/src/src/views/dev/log/oplog/index.vue new file mode 100644 index 0000000..b7c1bd1 --- /dev/null +++ b/src/src/views/dev/log/oplog/index.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/src/views/dev/log/oplog/pieChart.vue b/src/src/views/dev/log/oplog/pieChart.vue new file mode 100644 index 0000000..def0089 --- /dev/null +++ b/src/src/views/dev/log/oplog/pieChart.vue @@ -0,0 +1,38 @@ + + + + diff --git a/src/src/views/dev/log/vislog/detail.vue b/src/src/views/dev/log/vislog/detail.vue new file mode 100644 index 0000000..5fbb130 --- /dev/null +++ b/src/src/views/dev/log/vislog/detail.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/src/views/dev/log/vislog/index.vue b/src/src/views/dev/log/vislog/index.vue new file mode 100644 index 0000000..33bc370 --- /dev/null +++ b/src/src/views/dev/log/vislog/index.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/src/views/dev/log/vislog/lineChart.vue b/src/src/views/dev/log/vislog/lineChart.vue new file mode 100644 index 0000000..db1cfc1 --- /dev/null +++ b/src/src/views/dev/log/vislog/lineChart.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/src/views/dev/log/vislog/pieChart.vue b/src/src/views/dev/log/vislog/pieChart.vue new file mode 100644 index 0000000..a9c9938 --- /dev/null +++ b/src/src/views/dev/log/vislog/pieChart.vue @@ -0,0 +1,38 @@ + + + + diff --git a/src/src/views/dev/message/detail.vue b/src/src/views/dev/message/detail.vue new file mode 100644 index 0000000..e08d98f --- /dev/null +++ b/src/src/views/dev/message/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/src/views/dev/message/form.vue b/src/src/views/dev/message/form.vue new file mode 100644 index 0000000..1811b99 --- /dev/null +++ b/src/src/views/dev/message/form.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/src/views/dev/message/index.vue b/src/src/views/dev/message/index.vue new file mode 100644 index 0000000..d13c33e --- /dev/null +++ b/src/src/views/dev/message/index.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/src/views/dev/monitor/index.vue b/src/src/views/dev/monitor/index.vue new file mode 100644 index 0000000..967296a --- /dev/null +++ b/src/src/views/dev/monitor/index.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/src/views/dev/slideshow/form.vue b/src/src/views/dev/slideshow/form.vue new file mode 100644 index 0000000..be23587 --- /dev/null +++ b/src/src/views/dev/slideshow/form.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/src/views/dev/slideshow/index.vue b/src/src/views/dev/slideshow/index.vue new file mode 100644 index 0000000..f6c3d48 --- /dev/null +++ b/src/src/views/dev/slideshow/index.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/src/views/dev/slideshow/subForm.vue b/src/src/views/dev/slideshow/subForm.vue new file mode 100644 index 0000000..a3bfe3e --- /dev/null +++ b/src/src/views/dev/slideshow/subForm.vue @@ -0,0 +1,162 @@ + + + + diff --git a/src/src/views/dev/sms/detail.vue b/src/src/views/dev/sms/detail.vue new file mode 100644 index 0000000..8282597 --- /dev/null +++ b/src/src/views/dev/sms/detail.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/src/views/dev/sms/form.vue b/src/src/views/dev/sms/form.vue new file mode 100644 index 0000000..8f65487 --- /dev/null +++ b/src/src/views/dev/sms/form.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/src/views/dev/sms/index.vue b/src/src/views/dev/sms/index.vue new file mode 100644 index 0000000..8dea5f7 --- /dev/null +++ b/src/src/views/dev/sms/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/src/views/dev/sms/send/aliyunSmsSend.vue b/src/src/views/dev/sms/send/aliyunSmsSend.vue new file mode 100644 index 0000000..886fe88 --- /dev/null +++ b/src/src/views/dev/sms/send/aliyunSmsSend.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/src/views/dev/sms/send/tencentSmsSend.vue b/src/src/views/dev/sms/send/tencentSmsSend.vue new file mode 100644 index 0000000..daec4b5 --- /dev/null +++ b/src/src/views/dev/sms/send/tencentSmsSend.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/src/views/dev/sms/send/xiaonuoSmsSend.vue b/src/src/views/dev/sms/send/xiaonuoSmsSend.vue new file mode 100644 index 0000000..4a6b139 --- /dev/null +++ b/src/src/views/dev/sms/send/xiaonuoSmsSend.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/src/views/exm/chart/eCBingZhuangTu.vue b/src/src/views/exm/chart/eCBingZhuangTu.vue new file mode 100644 index 0000000..6fd9aa1 --- /dev/null +++ b/src/src/views/exm/chart/eCBingZhuangTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/eCHengTiaoTu.vue b/src/src/views/exm/chart/eCHengTiaoTu.vue new file mode 100644 index 0000000..b0fdccd --- /dev/null +++ b/src/src/views/exm/chart/eCHengTiaoTu.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/src/views/exm/chart/eCKXianTu.vue b/src/src/views/exm/chart/eCKXianTu.vue new file mode 100644 index 0000000..0fa96d3 --- /dev/null +++ b/src/src/views/exm/chart/eCKXianTu.vue @@ -0,0 +1,20 @@ + + + + diff --git a/src/src/views/exm/chart/eCLouDouTu.vue b/src/src/views/exm/chart/eCLouDouTu.vue new file mode 100644 index 0000000..30031fc --- /dev/null +++ b/src/src/views/exm/chart/eCLouDouTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/eCSanDianTu.vue b/src/src/views/exm/chart/eCSanDianTu.vue new file mode 100644 index 0000000..12ea54a --- /dev/null +++ b/src/src/views/exm/chart/eCSanDianTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/eCShuXingTu.vue b/src/src/views/exm/chart/eCShuXingTu.vue new file mode 100644 index 0000000..da765af --- /dev/null +++ b/src/src/views/exm/chart/eCShuXingTu.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/src/views/exm/chart/eCXianXingTu.vue b/src/src/views/exm/chart/eCXianXingTu.vue new file mode 100644 index 0000000..600cb83 --- /dev/null +++ b/src/src/views/exm/chart/eCXianXingTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/eCYiBiaoTu.vue b/src/src/views/exm/chart/eCYiBiaoTu.vue new file mode 100644 index 0000000..832e560 --- /dev/null +++ b/src/src/views/exm/chart/eCYiBiaoTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/eCZheZhuTu.vue b/src/src/views/exm/chart/eCZheZhuTu.vue new file mode 100644 index 0000000..085ea55 --- /dev/null +++ b/src/src/views/exm/chart/eCZheZhuTu.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/src/views/exm/chart/eCZhuZhuangTu.vue b/src/src/views/exm/chart/eCZhuZhuangTu.vue new file mode 100644 index 0000000..df9e49d --- /dev/null +++ b/src/src/views/exm/chart/eCZhuZhuangTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/src/views/exm/chart/g2BingZhuangTu.vue b/src/src/views/exm/chart/g2BingZhuangTu.vue new file mode 100644 index 0000000..37c7200 --- /dev/null +++ b/src/src/views/exm/chart/g2BingZhuangTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2CiYunTu.vue b/src/src/views/exm/chart/g2CiYunTu.vue new file mode 100644 index 0000000..f4b7f6b --- /dev/null +++ b/src/src/views/exm/chart/g2CiYunTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/src/views/exm/chart/g2JinDuTu.vue b/src/src/views/exm/chart/g2JinDuTu.vue new file mode 100644 index 0000000..554ad63 --- /dev/null +++ b/src/src/views/exm/chart/g2JinDuTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2LouDouTu.vue b/src/src/views/exm/chart/g2LouDouTu.vue new file mode 100644 index 0000000..6e2dfac --- /dev/null +++ b/src/src/views/exm/chart/g2LouDouTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/src/views/exm/chart/g2MianJiTu.vue b/src/src/views/exm/chart/g2MianJiTu.vue new file mode 100644 index 0000000..f652d79 --- /dev/null +++ b/src/src/views/exm/chart/g2MianJiTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2SanDianTu.vue b/src/src/views/exm/chart/g2SanDianTu.vue new file mode 100644 index 0000000..88a03a1 --- /dev/null +++ b/src/src/views/exm/chart/g2SanDianTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2TiaoXingTu.vue b/src/src/views/exm/chart/g2TiaoXingTu.vue new file mode 100644 index 0000000..4065f0e --- /dev/null +++ b/src/src/views/exm/chart/g2TiaoXingTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2ZheXianTu.vue b/src/src/views/exm/chart/g2ZheXianTu.vue new file mode 100644 index 0000000..c72ec83 --- /dev/null +++ b/src/src/views/exm/chart/g2ZheXianTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2ZhuZhuangTu.vue b/src/src/views/exm/chart/g2ZhuZhuangTu.vue new file mode 100644 index 0000000..cc5cb5c --- /dev/null +++ b/src/src/views/exm/chart/g2ZhuZhuangTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/src/views/exm/chart/g2ZiDanTu.vue b/src/src/views/exm/chart/g2ZiDanTu.vue new file mode 100644 index 0000000..d3e7a47 --- /dev/null +++ b/src/src/views/exm/chart/g2ZiDanTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/src/views/exm/editor/index.vue b/src/src/views/exm/editor/index.vue new file mode 100644 index 0000000..4ec42ca --- /dev/null +++ b/src/src/views/exm/editor/index.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/src/views/exm/iconSelect/index.vue b/src/src/views/exm/iconSelect/index.vue new file mode 100644 index 0000000..b602a78 --- /dev/null +++ b/src/src/views/exm/iconSelect/index.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/src/views/exm/map/baiduMap.vue b/src/src/views/exm/map/baiduMap.vue new file mode 100644 index 0000000..957e8a1 --- /dev/null +++ b/src/src/views/exm/map/baiduMap.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/src/views/exm/map/gaodeMap.vue b/src/src/views/exm/map/gaodeMap.vue new file mode 100644 index 0000000..66aca85 --- /dev/null +++ b/src/src/views/exm/map/gaodeMap.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/src/views/exm/nestRoutor/index.vue b/src/src/views/exm/nestRoutor/index.vue new file mode 100644 index 0000000..61da89e --- /dev/null +++ b/src/src/views/exm/nestRoutor/index.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/src/views/gen/basic.vue b/src/src/views/gen/basic.vue new file mode 100644 index 0000000..a8a86c5 --- /dev/null +++ b/src/src/views/gen/basic.vue @@ -0,0 +1,466 @@ + + + + diff --git a/src/src/views/gen/config.vue b/src/src/views/gen/config.vue new file mode 100644 index 0000000..4bb4210 --- /dev/null +++ b/src/src/views/gen/config.vue @@ -0,0 +1,455 @@ + + + + diff --git a/src/src/views/gen/index.vue b/src/src/views/gen/index.vue new file mode 100644 index 0000000..1fd4d0e --- /dev/null +++ b/src/src/views/gen/index.vue @@ -0,0 +1,197 @@ + + + diff --git a/src/src/views/gen/preview.vue b/src/src/views/gen/preview.vue new file mode 100644 index 0000000..a4085cc --- /dev/null +++ b/src/src/views/gen/preview.vue @@ -0,0 +1,103 @@ + + + + diff --git a/src/src/views/gen/steps.vue b/src/src/views/gen/steps.vue new file mode 100644 index 0000000..59e8d6c --- /dev/null +++ b/src/src/views/gen/steps.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/src/views/index/index.vue b/src/src/views/index/index.vue new file mode 100644 index 0000000..3eb9bca --- /dev/null +++ b/src/src/views/index/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/src/views/mobile/resource/button/form.vue b/src/src/views/mobile/resource/button/form.vue new file mode 100644 index 0000000..281b2b0 --- /dev/null +++ b/src/src/views/mobile/resource/button/form.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/src/views/mobile/resource/button/index.vue b/src/src/views/mobile/resource/button/index.vue new file mode 100644 index 0000000..6278433 --- /dev/null +++ b/src/src/views/mobile/resource/button/index.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/src/views/mobile/resource/menu/changeModuleForm.vue b/src/src/views/mobile/resource/menu/changeModuleForm.vue new file mode 100644 index 0000000..7e5e106 --- /dev/null +++ b/src/src/views/mobile/resource/menu/changeModuleForm.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/src/views/mobile/resource/menu/form.vue b/src/src/views/mobile/resource/menu/form.vue new file mode 100644 index 0000000..76aa3d9 --- /dev/null +++ b/src/src/views/mobile/resource/menu/form.vue @@ -0,0 +1,248 @@ + + + diff --git a/src/src/views/mobile/resource/menu/index.vue b/src/src/views/mobile/resource/menu/index.vue new file mode 100644 index 0000000..bbf5644 --- /dev/null +++ b/src/src/views/mobile/resource/menu/index.vue @@ -0,0 +1,212 @@ + + + diff --git a/src/src/views/mobile/resource/module/form.vue b/src/src/views/mobile/resource/module/form.vue new file mode 100644 index 0000000..0f4629a --- /dev/null +++ b/src/src/views/mobile/resource/module/form.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/src/views/mobile/resource/module/index.vue b/src/src/views/mobile/resource/module/index.vue new file mode 100644 index 0000000..c1c713c --- /dev/null +++ b/src/src/views/mobile/resource/module/index.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/src/views/other/index.vue b/src/src/views/other/index.vue new file mode 100644 index 0000000..c65f310 --- /dev/null +++ b/src/src/views/other/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/brand/columns/brandColumns.js b/src/src/views/productionBusiness/basicData/brand/columns/brandColumns.js new file mode 100644 index 0000000..2f5b3fa --- /dev/null +++ b/src/src/views/productionBusiness/basicData/brand/columns/brandColumns.js @@ -0,0 +1,18 @@ +export const brandColumns = [ + { + title: '编码', + dataIndex: 'number' + }, + { + title: '名称', + dataIndex: 'name' + }, + { + title: '可用状态', + dataIndex: 'enabledState' + }, + { + title: '创建时间', + dataIndex: 'createTime' + } +] diff --git a/src/src/views/productionBusiness/basicData/brand/detail/index.vue b/src/src/views/productionBusiness/basicData/brand/detail/index.vue new file mode 100644 index 0000000..d88ab1f --- /dev/null +++ b/src/src/views/productionBusiness/basicData/brand/detail/index.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/brand/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/brand/formFields/detailFields.js new file mode 100644 index 0000000..730bc41 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/brand/formFields/detailFields.js @@ -0,0 +1,88 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} + +export const brandFormItems = reactive([ + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '编码:', + name: 'number', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '简称:', + name: 'shortName', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入简称', + allowClear: true + } + }, + { + label: '所属企业:', + name: 'company', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入所属企业', + allowClear: true + } + }, + { + label: '公众号:', + name: 'officialAccountId', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请输入公众号', + options: [], + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '启用状态:', + name: 'enabledState', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择启用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) diff --git a/src/src/views/productionBusiness/basicData/brand/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/brand/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/brand/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/brand/index.vue b/src/src/views/productionBusiness/basicData/brand/index.vue new file mode 100644 index 0000000..c1782bd --- /dev/null +++ b/src/src/views/productionBusiness/basicData/brand/index.vue @@ -0,0 +1,123 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/client/columns/clientColumn.js b/src/src/views/productionBusiness/basicData/client/columns/clientColumn.js new file mode 100644 index 0000000..f09f2e8 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/columns/clientColumn.js @@ -0,0 +1,46 @@ +export const clientColumn = [ + { + title: '编码', + dataIndex: 'number', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '名称', + dataIndex: 'name', + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '分类', + dataIndex: 'categoryName', + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + align: 'center', + resizable: true, + width: 100, + ellipsis: true + }, + { + title: '创建时间', + dataIndex: 'createTime', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 300, + ellipsis: true + } +] diff --git a/src/src/views/productionBusiness/basicData/client/detail/CustomerCategoryForm.vue b/src/src/views/productionBusiness/basicData/client/detail/CustomerCategoryForm.vue new file mode 100644 index 0000000..9c2ac47 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/detail/CustomerCategoryForm.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/client/detail/index.vue b/src/src/views/productionBusiness/basicData/client/detail/index.vue new file mode 100644 index 0000000..1a0741c --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/detail/index.vue @@ -0,0 +1,334 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/client/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/client/formFields/detailFields.js new file mode 100644 index 0000000..87cd527 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/formFields/detailFields.js @@ -0,0 +1,215 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} + +export const clientFormItems = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input', + span: 8, + attrs: { + placeholder: '请选择类型', + options: tool.dictList('OFFICIAL_ACCOUNT_TYPE') + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 8, + rules: [required('请输入名称')], + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '简称:', + name: 'shortName', + type: 'a-input', + span: 8, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 8, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '品牌:', + name: 'brandId', + type: 'a-select', + span: 8, + // rules: [required('请选择品牌')], + attrs: { + placeholder: '请选择品牌', + options: tool.dictList('COMMON_STATUS'), + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '客户分类:', + name: 'categoryId', + type: 'a-tree-select', + span: 8, + rules: [required('请选择客户分类')], + attrs: { + placeholder: '请选择客户分类', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '省:', + name: 'province', + span: 8, + rules: [required('请选择省')], + isUseSlot: true, + slotName: 'provinceSlot', + attrs: { + placeholder: '请选择省' + } + }, + { + label: '市:', + name: 'city', + span: 8, + rules: [required('请选择市')], + isUseSlot: true, + slotName: 'citySlot' + }, + { + label: '区:', + name: 'county', + isUseSlot: true, + slotName: 'countySlot', + span: 8, + rules: [required('请选择区')] + }, + { + name: 'address', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入详细地址', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const baseFormItems = [ + { + label: '联系人:', + name: 'contacts', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '手机:', + name: 'phone', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '固话:', + name: 'tel', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '传真:', + name: 'fax', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '电子邮箱:', + name: 'email', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: 'QQ:', + name: 'qq', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: '微信:', + name: 'wechat', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: '联系地址:', + name: 'contactAddress', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +] diff --git a/src/src/views/productionBusiness/basicData/client/formFields/drawerForm.js b/src/src/views/productionBusiness/basicData/client/formFields/drawerForm.js new file mode 100644 index 0000000..e781b9b --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/formFields/drawerForm.js @@ -0,0 +1,44 @@ +import { required } from '@/utils/formRules' + +export const drawerForm = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input-number', + span: 12, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 12, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '上级客户:', + name: 'parentId', + type: 'a-tree-select', + span: 12, + attrs: { + placeholder: '请选择上级客户', + treeData: [], + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + } +]) + +export const formRules = { + name: [required('请输入名称')], + parentId: [required('请选择上级')] +} diff --git a/src/src/views/productionBusiness/basicData/client/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/client/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/client/index.vue b/src/src/views/productionBusiness/basicData/client/index.vue new file mode 100644 index 0000000..90608c6 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/client/index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/src/views/productionBusiness/basicData/employee/detail/index.vue b/src/src/views/productionBusiness/basicData/employee/detail/index.vue new file mode 100644 index 0000000..a9be07b --- /dev/null +++ b/src/src/views/productionBusiness/basicData/employee/detail/index.vue @@ -0,0 +1,5 @@ + + + + + diff --git a/src/src/views/productionBusiness/basicData/employee/index.vue b/src/src/views/productionBusiness/basicData/employee/index.vue new file mode 100644 index 0000000..d3044ac --- /dev/null +++ b/src/src/views/productionBusiness/basicData/employee/index.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/materiel/column/materiel-column.js b/src/src/views/productionBusiness/basicData/materiel/column/materiel-column.js new file mode 100644 index 0000000..a4b56f3 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/column/materiel-column.js @@ -0,0 +1,92 @@ +export const materielColumn = [ + { + title: '编码', + dataIndex: 'number', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '名称', + dataIndex: 'name', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '规格型号', + dataIndex: 'specification', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '分类', + dataIndex: 'categoryName', + align: 'center', + resizable: true, + width: 150 + }, + { + title: '品牌', + dataIndex: 'brandName', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '保质期', + dataIndex: 'shelfLifeUnit', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '基本单位', + dataIndex: 'baseUnitName', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '生产单位', + dataIndex: 'produceUnitName', + align: 'center', + resizable: true, + width: 150, + ellipsis: true + }, + { + title: '采购单位', + dataIndex: 'purchaseUnitName', + align: 'center', + resizable: true, + width: 150 + }, + { + title: '创建时间', + dataIndex: 'createTime', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 150, + ellipsis: true + } +] diff --git a/src/src/views/productionBusiness/basicData/materiel/detail/index.vue b/src/src/views/productionBusiness/basicData/materiel/detail/index.vue new file mode 100644 index 0000000..b2a6b86 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/detail/index.vue @@ -0,0 +1,488 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/materiel/detail/materialCategoryForm.vue b/src/src/views/productionBusiness/basicData/materiel/detail/materialCategoryForm.vue new file mode 100644 index 0000000..a9ef191 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/detail/materialCategoryForm.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/materiel/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/materiel/formFields/detailFields.js new file mode 100644 index 0000000..d2444d6 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/formFields/detailFields.js @@ -0,0 +1,359 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} + +export const materialFormItems = [ + { + label: '编码:', + name: 'number', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入编码' + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 6, + rules: [required('请输入名称')], + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '简称:', + name: 'shortName', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入简称', + allowClear: true + } + }, + { + label: '别名:', + name: 'alias', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入别名', + allowClear: true + } + }, + { + label: '规格型号:', + name: 'specification', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入规格型号', + allowClear: true + } + }, + { + label: '包装比例:', + name: 'packageProportion', + type: 'a-input', + span: 6, + rules: [required('请输入包装比例')], + attrs: { + placeholder: '请输入包装比例', + allowClear: true, + disabled: true + } + }, + { + label: '助记码:', + name: 'mnemonicCode', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入助记码', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + } +] + +export const baseFormItems = reactive([ + { + label: '物料类型:', + name: 'categoryId', + type: 'a-tree-select', + span: 6, + rules: [required('请选择物料类型')], + attrs: { + placeholder: '请选择物料类型', + treeData: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '品牌:', + name: 'brandId', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择品牌', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '最高库存:', + name: 'maxInventory', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入最高库存' + } + }, + { + label: '最低库存:', + name: 'minInventory', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入最高库存' + } + }, + { + label: '保质期:', + name: 'shelfLife', + type: 'a-input-number', + span: 6, + rules: [required('请选择保质期')], + attrs: { + placeholder: '请输入保质期', + allowClear: true + } + }, + { + label: '统一零售价:', + name: 'retailPrice', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入统一零售价', + allowClear: true + } + }, + { + label: '商品条形码:', + name: 'barcode', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入商品条形码', + allowClear: true + } + }, + { + label: '保质期单位:', + name: 'shelfLifeUnit', + type: 'a-select', + span: 6, + rules: [required('请选择保质期单位')], + attrs: { + placeholder: '请选择保质期单位', + options: tool.dictList('DATE_UNIT') + } + }, + { + label: '最大包装数量:', + name: 'maxPackageQuantity', + type: 'a-input-number', + span: 6, + rules: [required('请输入最大包装数量')], + attrs: { + placeholder: '请输入最大包装数量', + allowClear: true + } + }, + { + label: '批次管理:', + name: 'batchManage', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择批次管理', + options: tool.dictList('COMMON_STATUS') + } + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const unitFormItems = reactive([ + { + label: '单位组:', + name: 'unitGroupId', + type: 'a-select', + span: 6, + rules: [required('请选择单位组')], + attrs: { + placeholder: '请选择类型', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '基本单位:', + name: 'baseUnitId', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择类型', + options: [], + disabled: true, + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '采购单位:', + name: 'purchaseUnitId', + type: 'a-select', + span: 6, + rules: [required('请选择采购单位')], + attrs: { + placeholder: '请选择类型', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '分销单位:', + name: 'distrUnitId', + type: 'a-select', + span: 6, + rules: [required('请选择分销单位')], + attrs: { + placeholder: '请输入备注', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '生产单位:', + name: 'produceUnitId', + type: 'a-select', + span: 6, + rules: [required('请选择生产单位')], + attrs: { + placeholder: '请输入备注', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '销售单位:', + name: 'saleUnitId', + type: 'a-select', + span: 6, + rules: [required('请选择销售单位')], + attrs: { + placeholder: '请输入备注', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '库存单位:', + name: 'storeUnitId', + type: 'a-select', + rules: [required('请选择库存单位')], + span: 6, + attrs: { + placeholder: '请输入备注', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + } + } +]) + +export const priceFormItems = [ + { + label: '生产价格:', + name: 'producePrice', + type: 'a-input', + span: 6, + rules: [required('请输入生产价格')], + attrs: { + placeholder: '请输入生产价格' + } + }, + { + label: '采购价格:', + name: 'purchasePrice', + type: 'a-input-number', + span: 6, + rules: [required('请输入采购价格')], + attrs: { + placeholder: '请输入生产价格' + } + }, + { + label: '统一零售价:', + name: 'retailPrice', + type: 'a-input-number', + span: 6, + rules: [required('请输入统一零售价')], + attrs: { + placeholder: '请输入生产价格' + } + } +] diff --git a/src/src/views/productionBusiness/basicData/materiel/formFields/drawerForm.js b/src/src/views/productionBusiness/basicData/materiel/formFields/drawerForm.js new file mode 100644 index 0000000..9b30395 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/formFields/drawerForm.js @@ -0,0 +1,45 @@ +import tool from '@/utils/tool' +import { required } from '@/utils/formRules' + +export const drawerForm = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input-number', + span: 12, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 12, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '上级物料:', + name: 'parentId', + type: 'a-tree-select', + span: 12, + attrs: { + placeholder: '请选择上级物料', + treeData: [], + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + } +]) + +export const formRules = { + name: [required('请输入名称')], + parentId: [required('请选择上级物料')] +} diff --git a/src/src/views/productionBusiness/basicData/materiel/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/materiel/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/materiel/index.vue b/src/src/views/productionBusiness/basicData/materiel/index.vue new file mode 100644 index 0000000..f74850c --- /dev/null +++ b/src/src/views/productionBusiness/basicData/materiel/index.vue @@ -0,0 +1,185 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/publicAccount/columns/publicAccountColumn.js b/src/src/views/productionBusiness/basicData/publicAccount/columns/publicAccountColumn.js new file mode 100644 index 0000000..66a13e8 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/publicAccount/columns/publicAccountColumn.js @@ -0,0 +1,38 @@ +export const publicAccountColumn = [ + { + title: '类型', + dataIndex: 'type', + align: 'center', + resizable: true, + width: 300, + ellipsis: true, + sorter: true, + sortDirections: ['descend', 'ascend'] + }, + { + title: '名称', + dataIndex: 'name', + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + align: 'center', + resizable: true, + width: 100, + ellipsis: true + }, + { + title: '创建时间', + dataIndex: 'createTime', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 300, + ellipsis: true + } +] diff --git a/src/src/views/productionBusiness/basicData/publicAccount/detail/index.vue b/src/src/views/productionBusiness/basicData/publicAccount/detail/index.vue new file mode 100644 index 0000000..a0f2225 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/publicAccount/detail/index.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/publicAccount/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/publicAccount/formFields/detailFields.js new file mode 100644 index 0000000..e502707 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/publicAccount/formFields/detailFields.js @@ -0,0 +1,102 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} + +export const officialAccountFormItems = [ + { + label: '类型:', + name: 'type', + type: 'a-select', + span: 8, + attrs: { + placeholder: '请选择类型', + options: tool.dictList('OFFICIAL_ACCOUNT_TYPE') + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 8, + rules: [required('请输入名称')], + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 8, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +] + +export const basicInfoFormItems = [ + { + label: 'AppID:', + name: 'appid', + type: 'a-input', + attrs: { + placeholder: '请输入AppID', + allowClear: true + } + }, + { + label: 'AppSecret:', + name: 'secret', + type: 'a-input', + attrs: { + placeholder: '请输入AppSecret', + allowClear: true + } + }, + { + label: '字符串编码格式:', + name: 'encodingFormat', + type: 'a-input', + attrs: { + placeholder: '请输入字符串编码格式', + allowClear: true + } + }, + { + label: '校验码:', + name: 'token', + type: 'a-input', + attrs: { + placeholder: '请输入校验码', + allowClear: true + } + }, + { + label: '签名方式:', + name: 'aesKey', + type: 'a-input', + attrs: { + placeholder: '请输入签名方式', + allowClear: true + } + } +] diff --git a/src/src/views/productionBusiness/basicData/publicAccount/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/publicAccount/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/publicAccount/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/publicAccount/index.vue b/src/src/views/productionBusiness/basicData/publicAccount/index.vue new file mode 100644 index 0000000..979b692 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/publicAccount/index.vue @@ -0,0 +1,123 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/stash/columns/brandColumns.js b/src/src/views/productionBusiness/basicData/stash/columns/brandColumns.js new file mode 100644 index 0000000..19b8cb9 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/stash/columns/brandColumns.js @@ -0,0 +1,46 @@ +export const stashColumn = [ + { + title: '编码', + dataIndex: 'number', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 200, + ellipsis: true + }, + { + title: '名称', + dataIndex: 'name', + align: 'center', + resizable: true, + width: 200, + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + align: 'center', + resizable: true, + width: 100, + ellipsis: true + }, + { + title: '仓库条码', + dataIndex: 'barcode', + align: 'center', + resizable: true, + width: 200, + ellipsis: true + }, + { + title: '创建时间', + dataIndex: 'createTime', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 150, + ellipsis: true + } +] diff --git a/src/src/views/productionBusiness/basicData/stash/detail/index.vue b/src/src/views/productionBusiness/basicData/stash/detail/index.vue new file mode 100644 index 0000000..0747931 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/stash/detail/index.vue @@ -0,0 +1,150 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/stash/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/stash/formFields/detailFields.js new file mode 100644 index 0000000..57fd96b --- /dev/null +++ b/src/src/views/productionBusiness/basicData/stash/formFields/detailFields.js @@ -0,0 +1,133 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const officialAccountFormItems = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择编码' + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 6, + rules: [required('请输入名称')], + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '仓库条码:', + name: 'barcode', + type: 'a-input', + span: 6, + rules: [required('请输入仓库条码')], + attrs: { + placeholder: '请输入仓库条码', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '库存管理方式:', + name: 'manageMode', + type: 'a-select', + span: 6, + rules: [required('请选择库存管理方式')], + attrs: { + placeholder: '请选择库存管理方式', + options: tool.dictList('STORE_MANAGE_MODE') + }, + defaultValue: '' + }, + { + label: '上游仓库:', + name: 'parentId', + type: 'a-tree-select', + span: 6, + attrs: { + placeholder: '请选择上游仓库', + treeData: [], + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + }, + defaultValue: '' + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const baseFormItems = [ + { + label: '管理员:', + name: 'manageUserName', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择管理员', + readonly: true + } + }, + { + label: '手机:', + name: 'phone', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入手机' + } + }, + { + label: '固话:', + name: 'tel', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择固话' + } + }, + { + label: '地址:', + name: 'address', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入地址', + allowClear: true + } + } +] + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} diff --git a/src/src/views/productionBusiness/basicData/stash/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/stash/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/stash/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/stash/index.vue b/src/src/views/productionBusiness/basicData/stash/index.vue new file mode 100644 index 0000000..8d8930a --- /dev/null +++ b/src/src/views/productionBusiness/basicData/stash/index.vue @@ -0,0 +1,162 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/tissue/column/tissueColumn.js b/src/src/views/productionBusiness/basicData/tissue/column/tissueColumn.js new file mode 100644 index 0000000..603898e --- /dev/null +++ b/src/src/views/productionBusiness/basicData/tissue/column/tissueColumn.js @@ -0,0 +1,45 @@ +export const tissueColumn = [ + { + title: '编码', + dataIndex: 'number', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '类型', + dataIndex: 'type', + align: 'center', + resizable: true, + width: 100 + }, + { + title: '名称', + dataIndex: 'name', + align: 'center', + resizable: true, + width: 300, + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + align: 'center', + resizable: true, + width: 100, + ellipsis: true + }, + { + title: '创建时间', + dataIndex: 'createTime', + sorter: true, + sortDirections: ['descend', 'ascend'], + align: 'center', + resizable: true, + width: 300, + ellipsis: true + } +] diff --git a/src/src/views/productionBusiness/basicData/tissue/detail/TissueForm.vue b/src/src/views/productionBusiness/basicData/tissue/detail/TissueForm.vue new file mode 100644 index 0000000..275a52d --- /dev/null +++ b/src/src/views/productionBusiness/basicData/tissue/detail/TissueForm.vue @@ -0,0 +1,208 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/tissue/detail/index.vue b/src/src/views/productionBusiness/basicData/tissue/detail/index.vue new file mode 100644 index 0000000..c88dfcb --- /dev/null +++ b/src/src/views/productionBusiness/basicData/tissue/detail/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/src/views/productionBusiness/basicData/tissue/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/tissue/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/tissue/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/src/views/productionBusiness/basicData/tissue/index.vue b/src/src/views/productionBusiness/basicData/tissue/index.vue new file mode 100644 index 0000000..b7742a8 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/tissue/index.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/unit/columns/unitColumns.js b/src/src/views/productionBusiness/basicData/unit/columns/unitColumns.js new file mode 100644 index 0000000..993f154 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/columns/unitColumns.js @@ -0,0 +1,69 @@ +export const unitColumns = [ + { + title: '编码', + dataIndex: 'number', + width: 200, + resizable: true, + align: 'center', + sorter: true, + sortDirections: ['descend', 'ascend'], + ellipsis: true + }, + { + title: '名称', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '单位组', + dataIndex: 'unitGroupName', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '换算率', + dataIndex: 'rate', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '是否基本单位', + dataIndex: 'isBase', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + } +] + +export const unitGroupColumns = [ + { + title: '名称', + dataIndex: 'name', + width: 100, + resizable: true, + align: 'center' + }, + { + title: '状态', + dataIndex: 'enabledState', + width: 80, + resizable: true, + align: 'center' + } +] diff --git a/src/src/views/productionBusiness/basicData/unit/detail/UnitGroupForm.vue b/src/src/views/productionBusiness/basicData/unit/detail/UnitGroupForm.vue new file mode 100644 index 0000000..f8e6e99 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/detail/UnitGroupForm.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/unit/detail/index.vue b/src/src/views/productionBusiness/basicData/unit/detail/index.vue new file mode 100644 index 0000000..f1876a1 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/detail/index.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/src/views/productionBusiness/basicData/unit/formFields/detailFields.js b/src/src/views/productionBusiness/basicData/unit/formFields/detailFields.js new file mode 100644 index 0000000..3a7b96f --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/formFields/detailFields.js @@ -0,0 +1,91 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const unitFormItems = reactive([ + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '编码:', + name: 'number', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '单位组:', + name: 'unitGroupId', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择可用状态', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + }, + defaultValue: '' + }, + { + label: '换算率:', + name: 'rate', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入换算率', + allowClear: true, + min: 1, + precision: 0 + } + }, + { + label: '是否基本单位:', + name: 'isBase', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择是否基本单位', + options: tool.dictList('YES_NO') + }, + defaultValue: 'NO' + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const formRules = { + unitGroupId: [required('请选择单位')], + name: [required('请输入名称')], + rate: [required('请输入换算率')], + isBase: [required('请选择是否基本单位')] +} diff --git a/src/src/views/productionBusiness/basicData/unit/formFields/drawerForm.js b/src/src/views/productionBusiness/basicData/unit/formFields/drawerForm.js new file mode 100644 index 0000000..bb9e993 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/formFields/drawerForm.js @@ -0,0 +1,41 @@ +import tool from '@/utils/tool' +import { required } from '@/utils/formRules' + +export const drawerForm = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input-number', + span: 12, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 12, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 12, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + } +]) + +export const formRules = { + name: [required('请输入名称')], + enabledState: [required('请输入状态')] +} diff --git a/src/src/views/productionBusiness/basicData/unit/formFields/searchFields.js b/src/src/views/productionBusiness/basicData/unit/formFields/searchFields.js new file mode 100644 index 0000000..1988d2e --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/formFields/searchFields.js @@ -0,0 +1,20 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } }, + { + name: 'isBase', + label: '是否基本单位', + component: 'a-select', + props: { placeholder: '请选择是否基本单位', options: tool.dictList('YES_NO') }, + visible: false, + isShowVisible: true + } +] diff --git a/src/src/views/productionBusiness/basicData/unit/index.vue b/src/src/views/productionBusiness/basicData/unit/index.vue new file mode 100644 index 0000000..5560210 --- /dev/null +++ b/src/src/views/productionBusiness/basicData/unit/index.vue @@ -0,0 +1,237 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnel/detail/index.vue b/src/src/views/productionBusiness/employee/personnel/detail/index.vue new file mode 100644 index 0000000..44390c4 --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnel/detail/index.vue @@ -0,0 +1,229 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnel/detail/personnelCategoryForm.vue b/src/src/views/productionBusiness/employee/personnel/detail/personnelCategoryForm.vue new file mode 100644 index 0000000..99b23b9 --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnel/detail/personnelCategoryForm.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnel/index.vue b/src/src/views/productionBusiness/employee/personnel/index.vue new file mode 100644 index 0000000..353942f --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnel/index.vue @@ -0,0 +1,273 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnelReport/detail/addPersonnelItem.vue b/src/src/views/productionBusiness/employee/personnelReport/detail/addPersonnelItem.vue new file mode 100644 index 0000000..3add409 --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnelReport/detail/addPersonnelItem.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnelReport/detail/index.vue b/src/src/views/productionBusiness/employee/personnelReport/detail/index.vue new file mode 100644 index 0000000..4de147a --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnelReport/detail/index.vue @@ -0,0 +1,529 @@ + + + + + diff --git a/src/src/views/productionBusiness/employee/personnelReport/detail/personnelForm.vue b/src/src/views/productionBusiness/employee/personnelReport/detail/personnelForm.vue new file mode 100644 index 0000000..f901437 --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnelReport/detail/personnelForm.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/src/views/productionBusiness/employee/personnelReport/index.vue b/src/src/views/productionBusiness/employee/personnelReport/index.vue new file mode 100644 index 0000000..65cd2b9 --- /dev/null +++ b/src/src/views/productionBusiness/employee/personnelReport/index.vue @@ -0,0 +1,219 @@ + + + diff --git a/src/src/views/productionBusiness/productionCenter/report/columns/detailColumns.js b/src/src/views/productionBusiness/productionCenter/report/columns/detailColumns.js new file mode 100644 index 0000000..eabdb34 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/columns/detailColumns.js @@ -0,0 +1,121 @@ +export const detailColumns = [ + { + title: '产品名称', + dataIndex: 'productName', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '产品编码', + dataIndex: 'productNumber', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '规格型号', + dataIndex: 'specification', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '完工数量', + dataIndex: 'amount', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '入库数量', + dataIndex: 'amount', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '基本完工数量', + dataIndex: 'basicAmount', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '基本入库数量', + dataIndex: 'basicAmount', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '单位', + dataIndex: 'unitName', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '基本单位', + dataIndex: 'baseUnitName', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '包装规格', + dataIndex: 'packageProportion', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '包装数量', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '采集失败数', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '采集成功率', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '生产率', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '操作', + dataIndex: 'action', + align: 'center', + width: 150, + fixed: 'right' + } +] diff --git a/src/src/views/productionBusiness/productionCenter/report/columns/reportColumns.js b/src/src/views/productionBusiness/productionCenter/report/columns/reportColumns.js new file mode 100644 index 0000000..13fe601 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/columns/reportColumns.js @@ -0,0 +1,69 @@ +export const reportColumns = [ + { + title: '编码', + dataIndex: 'number', + width: 200, + resizable: true, + align: 'center', + sorter: true, + sortDirections: ['descend', 'ascend'], + ellipsis: true + }, + { + title: '名称', + dataIndex: 'name', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '单位组', + dataIndex: 'unitGroupName', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '可用状态', + dataIndex: 'enabledState', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '换算率', + dataIndex: 'rate', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + }, + { + title: '是否基本单位', + dataIndex: 'isBase', + width: 200, + resizable: true, + align: 'center', + ellipsis: true + } +] + +export const unitGroupColumns = [ + { + title: '名称', + dataIndex: 'name', + width: 100, + resizable: true, + align: 'center' + }, + { + title: '状态', + dataIndex: 'enabledState', + width: 80, + resizable: true, + align: 'center' + } +] diff --git a/src/src/views/productionBusiness/productionCenter/report/detail/index.vue b/src/src/views/productionBusiness/productionCenter/report/detail/index.vue new file mode 100644 index 0000000..c0a320e --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/detail/index.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/src/views/productionBusiness/productionCenter/report/formFields/detailFields.js b/src/src/views/productionBusiness/productionCenter/report/formFields/detailFields.js new file mode 100644 index 0000000..f6ad8d1 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/formFields/detailFields.js @@ -0,0 +1,75 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const unitFormItems = reactive([ + { + label: '单号:', + name: 'billNumber', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '业务日期:', + name: 'businessDate', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '状态:', + name: 'state', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择可用状态', + options: [], + fieldNames: { + label: 'name', + value: 'id' + } + }, + defaultValue: '' + }, + { + label: '类型:', + name: 'produceType', + type: 'a-input-number', + span: 6, + attrs: { + placeholder: '请输入换算率', + allowClear: true, + min: 1, + precision: 0 + } + }, + { + label: '生产线:', + name: 'productionLineName', + type: 'a-select', + span: 6, + attrs: { + placeholder: '请选择是否基本单位', + options: tool.dictList('YES_NO') + }, + defaultValue: 'NO' + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const formRules = {} diff --git a/src/src/views/productionBusiness/productionCenter/report/formFields/searchFields.js b/src/src/views/productionBusiness/productionCenter/report/formFields/searchFields.js new file mode 100644 index 0000000..1988d2e --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/formFields/searchFields.js @@ -0,0 +1,20 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } }, + { + name: 'isBase', + label: '是否基本单位', + component: 'a-select', + props: { placeholder: '请选择是否基本单位', options: tool.dictList('YES_NO') }, + visible: false, + isShowVisible: true + } +] diff --git a/src/src/views/productionBusiness/productionCenter/report/index.vue b/src/src/views/productionBusiness/productionCenter/report/index.vue new file mode 100644 index 0000000..83919f9 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/report/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/src/views/productionBusiness/productionCenter/task/detail/index.vue b/src/src/views/productionBusiness/productionCenter/task/detail/index.vue new file mode 100644 index 0000000..9233ed0 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/task/detail/index.vue @@ -0,0 +1,177 @@ + + + diff --git a/src/src/views/productionBusiness/productionCenter/task/formItems/index.js b/src/src/views/productionBusiness/productionCenter/task/formItems/index.js new file mode 100644 index 0000000..ff6c942 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/task/formItems/index.js @@ -0,0 +1,112 @@ +import tool from '@/utils/tool' +import { required } from '@/utils/formRules' + +export const basicInfoFormItems = [ + { + label: '单据号:', + name: 'billNumber', + type: 'a-input', + attrs: { + placeholder: '请输入单号', + allowClear: true + } + }, + { + label: '计划开工日期:', + name: 'producePlanDate', + type: 'a-date-picker', + attrs: { + placeholder: '请输入计划开工日期', + allowClear: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + } + }, + { + label: '生产类型:', + name: 'produceType', + type: 'a-select', + attrs: { + placeholder: '请输入生产类型', + allowClear: true, + options: tool.dictList('PRODUCE_TYPE') + } + }, + { + label: '产品(物料):', + name: 'productName', + type: 'a-input', + isUseSlot: true, + slotName: 'productNameSlot', + attrs: { + placeholder: '请输入物料' + } + }, + { + label: '批次:', + name: 'batchNumber', + type: 'a-input', + attrs: { + placeholder: '请输入批次', + allowClear: true + } + }, + { + label: '计划生产数量:', + name: 'producePlanAmount', + type: 'a-input-number', + attrs: { + placeholder: '请输入计划生产数量', + allowClear: true + } + }, + { + label: '生产单位:', // 采购单位 + name: 'produceUnitName', + isUseSlot: true, + slotName: 'produceUnitNameSlot', + attrs: { + placeholder: '请选择生产单位', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '基本单位:', + name: 'baseUnitName', + isUseSlot: true, + slotName: 'baseUnitNameSlot', + attrs: { + placeholder: '请选择基本单位', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '生产线:', + name: 'productionLineName', + isUseSlot: true, + slotName: 'productionLineNameSlot', + attrs: { + placeholder: '请选择生产线', + allowClear: true + } + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +] diff --git a/src/src/views/productionBusiness/productionCenter/task/index.vue b/src/src/views/productionBusiness/productionCenter/task/index.vue new file mode 100644 index 0000000..d3dff85 --- /dev/null +++ b/src/src/views/productionBusiness/productionCenter/task/index.vue @@ -0,0 +1,278 @@ + + + diff --git a/src/src/views/sys/org/form.vue b/src/src/views/sys/org/form.vue new file mode 100644 index 0000000..c98fe29 --- /dev/null +++ b/src/src/views/sys/org/form.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/src/views/sys/org/index.vue b/src/src/views/sys/org/index.vue new file mode 100644 index 0000000..247dc57 --- /dev/null +++ b/src/src/views/sys/org/index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/src/views/sys/position/form.vue b/src/src/views/sys/position/form.vue new file mode 100644 index 0000000..3014661 --- /dev/null +++ b/src/src/views/sys/position/form.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/src/views/sys/position/index.vue b/src/src/views/sys/position/index.vue new file mode 100644 index 0000000..42d00a8 --- /dev/null +++ b/src/src/views/sys/position/index.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/src/views/sys/resource/button/form.vue b/src/src/views/sys/resource/button/form.vue new file mode 100644 index 0000000..e002f99 --- /dev/null +++ b/src/src/views/sys/resource/button/form.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/src/views/sys/resource/button/index.vue b/src/src/views/sys/resource/button/index.vue new file mode 100644 index 0000000..125c8e8 --- /dev/null +++ b/src/src/views/sys/resource/button/index.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/src/views/sys/resource/field/form.vue b/src/src/views/sys/resource/field/form.vue new file mode 100644 index 0000000..c4a3996 --- /dev/null +++ b/src/src/views/sys/resource/field/form.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/src/views/sys/resource/field/index.vue b/src/src/views/sys/resource/field/index.vue new file mode 100644 index 0000000..2f8d56b --- /dev/null +++ b/src/src/views/sys/resource/field/index.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/src/views/sys/resource/menu/changeModuleForm.vue b/src/src/views/sys/resource/menu/changeModuleForm.vue new file mode 100644 index 0000000..cd36024 --- /dev/null +++ b/src/src/views/sys/resource/menu/changeModuleForm.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/src/views/sys/resource/menu/form.vue b/src/src/views/sys/resource/menu/form.vue new file mode 100644 index 0000000..9fea126 --- /dev/null +++ b/src/src/views/sys/resource/menu/form.vue @@ -0,0 +1,265 @@ + + + diff --git a/src/src/views/sys/resource/menu/index.vue b/src/src/views/sys/resource/menu/index.vue new file mode 100644 index 0000000..165c09c --- /dev/null +++ b/src/src/views/sys/resource/menu/index.vue @@ -0,0 +1,266 @@ + + + diff --git a/src/src/views/sys/resource/module/form.vue b/src/src/views/sys/resource/module/form.vue new file mode 100644 index 0000000..d2e5683 --- /dev/null +++ b/src/src/views/sys/resource/module/form.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/src/views/sys/resource/module/index.vue b/src/src/views/sys/resource/module/index.vue new file mode 100644 index 0000000..2942354 --- /dev/null +++ b/src/src/views/sys/resource/module/index.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/src/views/sys/role/form.vue b/src/src/views/sys/role/form.vue new file mode 100644 index 0000000..f9d38d4 --- /dev/null +++ b/src/src/views/sys/role/form.vue @@ -0,0 +1,123 @@ + + + diff --git a/src/src/views/sys/role/grantMobileResourceForm.vue b/src/src/views/sys/role/grantMobileResourceForm.vue new file mode 100644 index 0000000..e035394 --- /dev/null +++ b/src/src/views/sys/role/grantMobileResourceForm.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/src/src/views/sys/role/grantPermissionForm.vue b/src/src/views/sys/role/grantPermissionForm.vue new file mode 100644 index 0000000..29c124e --- /dev/null +++ b/src/src/views/sys/role/grantPermissionForm.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/src/src/views/sys/role/grantResourceForm.vue b/src/src/views/sys/role/grantResourceForm.vue new file mode 100644 index 0000000..c82b3ea --- /dev/null +++ b/src/src/views/sys/role/grantResourceForm.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/src/views/sys/role/index.vue b/src/src/views/sys/role/index.vue new file mode 100644 index 0000000..ede65e1 --- /dev/null +++ b/src/src/views/sys/role/index.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/src/views/sys/role/scopeDefineOrg.vue b/src/src/views/sys/role/scopeDefineOrg.vue new file mode 100644 index 0000000..44bb0bc --- /dev/null +++ b/src/src/views/sys/role/scopeDefineOrg.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/src/views/sys/user/form.vue b/src/src/views/sys/user/form.vue new file mode 100644 index 0000000..5b39c58 --- /dev/null +++ b/src/src/views/sys/user/form.vue @@ -0,0 +1,567 @@ + + + + + diff --git a/src/src/views/sys/user/grantPermissionForm.vue b/src/src/views/sys/user/grantPermissionForm.vue new file mode 100644 index 0000000..fcac339 --- /dev/null +++ b/src/src/views/sys/user/grantPermissionForm.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/src/src/views/sys/user/grantResourceForm.vue b/src/src/views/sys/user/grantResourceForm.vue new file mode 100644 index 0000000..b6b3361 --- /dev/null +++ b/src/src/views/sys/user/grantResourceForm.vue @@ -0,0 +1,312 @@ + + + + + diff --git a/src/src/views/sys/user/impExp.vue b/src/src/views/sys/user/impExp.vue new file mode 100644 index 0000000..2042724 --- /dev/null +++ b/src/src/views/sys/user/impExp.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/src/views/sys/user/index.vue b/src/src/views/sys/user/index.vue new file mode 100644 index 0000000..976e230 --- /dev/null +++ b/src/src/views/sys/user/index.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/src/src/views/sys/user/scopeDefineOrg.vue b/src/src/views/sys/user/scopeDefineOrg.vue new file mode 100644 index 0000000..e9ddae3 --- /dev/null +++ b/src/src/views/sys/user/scopeDefineOrg.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/src/views/sys/user/userCenter.vue b/src/src/views/sys/user/userCenter.vue new file mode 100644 index 0000000..f47806a --- /dev/null +++ b/src/src/views/sys/user/userCenter.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/src/views/sys/user/userTab/accountBasic.vue b/src/src/views/sys/user/userTab/accountBasic.vue new file mode 100644 index 0000000..d9209e5 --- /dev/null +++ b/src/src/views/sys/user/userTab/accountBasic.vue @@ -0,0 +1,84 @@ + + + diff --git a/src/src/views/sys/user/userTab/accountBind.vue b/src/src/views/sys/user/userTab/accountBind.vue new file mode 100644 index 0000000..53155f1 --- /dev/null +++ b/src/src/views/sys/user/userTab/accountBind.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/src/views/sys/user/userTab/bindForm/updatePassword.vue b/src/src/views/sys/user/userTab/bindForm/updatePassword.vue new file mode 100644 index 0000000..a16a294 --- /dev/null +++ b/src/src/views/sys/user/userTab/bindForm/updatePassword.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/src/views/sys/user/userTab/organizationChart.vue b/src/src/views/sys/user/userTab/organizationChart.vue new file mode 100644 index 0000000..ee7fe0d --- /dev/null +++ b/src/src/views/sys/user/userTab/organizationChart.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/src/views/sys/user/userTab/shortcutSetting.vue b/src/src/views/sys/user/userTab/shortcutSetting.vue new file mode 100644 index 0000000..ac8632c --- /dev/null +++ b/src/src/views/sys/user/userTab/shortcutSetting.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/src/views/sys/user/userTab/userMessage.vue b/src/src/views/sys/user/userTab/userMessage.vue new file mode 100644 index 0000000..bf5e293 --- /dev/null +++ b/src/src/views/sys/user/userTab/userMessage.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/src/views/sys/user/userTab/userMessage/detail.vue b/src/src/views/sys/user/userTab/userMessage/detail.vue new file mode 100644 index 0000000..add81db --- /dev/null +++ b/src/src/views/sys/user/userTab/userMessage/detail.vue @@ -0,0 +1,87 @@ + + + diff --git a/src/utils/tool.js b/src/utils/tool.js index 6703aa1..dda176c 100644 --- a/src/utils/tool.js +++ b/src/utils/tool.js @@ -100,7 +100,7 @@ tool.dictTypeData = (dictValue, value) => { } const children = tree.children const dict = children.find((item) => item.dictValue === value) - return dict ? dict.dictLabel : '无此字典项' + return dict ? dict.dictLabel : '-' } // 获取某个code下字典的列表,多用于字典下拉框 diff --git a/src/views/productionBusiness/basicData/brand/detail/index.vue b/src/views/productionBusiness/basicData/brand/detail/index.vue index fc2a040..d88ab1f 100644 --- a/src/views/productionBusiness/basicData/brand/detail/index.vue +++ b/src/views/productionBusiness/basicData/brand/detail/index.vue @@ -36,100 +36,13 @@ diff --git a/src/views/productionBusiness/basicData/client/formFields/detailFields.js b/src/views/productionBusiness/basicData/client/formFields/detailFields.js new file mode 100644 index 0000000..87cd527 --- /dev/null +++ b/src/views/productionBusiness/basicData/client/formFields/detailFields.js @@ -0,0 +1,215 @@ +import { required } from '@/utils/formRules' +import tool from '@/utils/tool' + +export const formRules = { + name: [required('请输入名称')], + type: [required('请输入类型')], + appid: [required('请输入AppID')], + secret: [required('请输入AppSecret')] +} + +export const clientFormItems = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input', + span: 8, + attrs: { + placeholder: '请选择类型', + options: tool.dictList('OFFICIAL_ACCOUNT_TYPE') + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 8, + rules: [required('请输入名称')], + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '简称:', + name: 'shortName', + type: 'a-input', + span: 8, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '可用状态:', + name: 'enabledState', + type: 'a-select', + span: 8, + attrs: { + placeholder: '请选择可用状态', + options: tool.dictList('COMMON_STATUS') + }, + defaultValue: 'ENABLE' + }, + { + label: '品牌:', + name: 'brandId', + type: 'a-select', + span: 8, + // rules: [required('请选择品牌')], + attrs: { + placeholder: '请选择品牌', + options: tool.dictList('COMMON_STATUS'), + fieldNames: { + label: 'name', + value: 'id' + } + } + }, + { + label: '客户分类:', + name: 'categoryId', + type: 'a-tree-select', + span: 8, + rules: [required('请选择客户分类')], + attrs: { + placeholder: '请选择客户分类', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '省:', + name: 'province', + span: 8, + rules: [required('请选择省')], + isUseSlot: true, + slotName: 'provinceSlot', + attrs: { + placeholder: '请选择省' + } + }, + { + label: '市:', + name: 'city', + span: 8, + rules: [required('请选择市')], + isUseSlot: true, + slotName: 'citySlot' + }, + { + label: '区:', + name: 'county', + isUseSlot: true, + slotName: 'countySlot', + span: 8, + rules: [required('请选择区')] + }, + { + name: 'address', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入详细地址', + allowClear: true, + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + }, + { + label: '备注:', + name: 'remarks', + type: 'a-textarea', + span: 24, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +]) + +export const baseFormItems = [ + { + label: '联系人:', + name: 'contacts', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '手机:', + name: 'phone', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '固话:', + name: 'tel', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '传真:', + name: 'fax', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请选择类型' + } + }, + { + label: '电子邮箱:', + name: 'email', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: 'QQ:', + name: 'qq', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: '微信:', + name: 'wechat', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + }, + { + label: '联系地址:', + name: 'contactAddress', + type: 'a-input', + span: 6, + attrs: { + placeholder: '请输入备注', + allowClear: true + } + } +] diff --git a/src/views/productionBusiness/basicData/client/formFields/drawerForm.js b/src/views/productionBusiness/basicData/client/formFields/drawerForm.js new file mode 100644 index 0000000..e781b9b --- /dev/null +++ b/src/views/productionBusiness/basicData/client/formFields/drawerForm.js @@ -0,0 +1,44 @@ +import { required } from '@/utils/formRules' + +export const drawerForm = reactive([ + { + label: '编码:', + name: 'number', + type: 'a-input-number', + span: 12, + attrs: { + placeholder: '请输入编码', + allowClear: true + } + }, + { + label: '名称:', + name: 'name', + type: 'a-input', + span: 12, + attrs: { + placeholder: '请输入名称', + allowClear: true + } + }, + { + label: '上级客户:', + name: 'parentId', + type: 'a-tree-select', + span: 12, + attrs: { + placeholder: '请选择上级客户', + treeData: [], + fieldNames: { + children: 'children', + label: 'name', + value: 'id' + } + } + } +]) + +export const formRules = { + name: [required('请输入名称')], + parentId: [required('请选择上级')] +} diff --git a/src/views/productionBusiness/basicData/client/formFields/searchFields.js b/src/views/productionBusiness/basicData/client/formFields/searchFields.js new file mode 100644 index 0000000..7602096 --- /dev/null +++ b/src/views/productionBusiness/basicData/client/formFields/searchFields.js @@ -0,0 +1,12 @@ +import tool from '@/utils/tool' + +export const searchFields = [ + { name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } }, + { + name: 'enabledState', + label: '可用状态', + component: 'a-select', + props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') } + }, + { name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } } +] diff --git a/src/views/productionBusiness/basicData/client/index.vue b/src/views/productionBusiness/basicData/client/index.vue index 2b09be6..90608c6 100644 --- a/src/views/productionBusiness/basicData/client/index.vue +++ b/src/views/productionBusiness/basicData/client/index.vue @@ -1,33 +1,10 @@