init
14
.editorconfig
Normal file
@@ -0,0 +1,14 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{ts,js,vue,css}]
|
||||
indent_size = 2
|
||||
3
.env.development
Normal file
@@ -0,0 +1,3 @@
|
||||
VITE_SOME_KEY=456
|
||||
# 打包路径
|
||||
VITE_BASE_URL = ./
|
||||
14
.eslintignore
Normal file
@@ -0,0 +1,14 @@
|
||||
snapshot*
|
||||
dist
|
||||
lib
|
||||
es
|
||||
esm
|
||||
node_modules
|
||||
src/_common
|
||||
static
|
||||
cypress
|
||||
script/test/cypress
|
||||
_site
|
||||
temp*
|
||||
static/
|
||||
!.prettierrc.js
|
||||
117
.eslintrc
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"extends": [
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"eslint-config-airbnb-base",
|
||||
"@vue/typescript/recommended",
|
||||
"plugin:vue/vue3-recommended",
|
||||
"plugin:vue-scoped-css/base",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"env": {
|
||||
// 浏览器全局变量
|
||||
"browser": true,
|
||||
"node": true,
|
||||
"jest": true,
|
||||
// 启用 ES6 语法支持以及新的 ES6 全局变量或类型
|
||||
"es6": true
|
||||
},
|
||||
"globals": {
|
||||
"defineProps": "readonly",
|
||||
"defineEmits": "readonly"
|
||||
},
|
||||
"plugins": ["vue", "@typescript-eslint"],
|
||||
"parserOptions": {
|
||||
// parser指定解析器,默认的为espree。babel-eslint是一个Babel parser的包装器,这个包装器使得 Babel parser 可以和 ESLint 协调工作
|
||||
"parser": "@typescript-eslint/parser",
|
||||
// 指定来源的类型,'script' (默认) 或 'module'(如果你的代码是 ECMAScript 模块)
|
||||
"sourceType": "module"
|
||||
// "allowImportExportEverywhere": true,
|
||||
// "ecmaFeatures": {
|
||||
// "jsx": true
|
||||
// }
|
||||
},
|
||||
"settings": {
|
||||
"import/extensions": [".js", ".jsx", ".ts", ".tsx"]
|
||||
},
|
||||
"rules": {
|
||||
"no-console": "off",
|
||||
"no-continue": "off",
|
||||
"no-restricted-syntax": "off",
|
||||
"no-plusplus": "off",
|
||||
"no-param-reassign": "off",
|
||||
"no-shadow": "off",
|
||||
"guard-for-in": "off",
|
||||
|
||||
"import/extensions": "off",
|
||||
"import/no-unresolved": "off",
|
||||
"import/no-extraneous-dependencies": "off",
|
||||
"import/prefer-default-export": "off",
|
||||
"import/first": "off", // https://github.com/vuejs/vue-eslint-parser/issues/58
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
||||
"vue/first-attribute-linebreak": 0,
|
||||
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
"argsIgnorePattern": "^_",
|
||||
"varsIgnorePattern": "^_"
|
||||
}
|
||||
],
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
"argsIgnorePattern": "^_",
|
||||
"varsIgnorePattern": "^_"
|
||||
}
|
||||
],
|
||||
"no-use-before-define": "off",
|
||||
"@typescript-eslint/no-use-before-define": "off",
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"class-methods-use-this": "off" // 因为AxiosCancel必须实例化而能静态化所以加的规则,如果有办法解决可以取消
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.vue"],
|
||||
"rules": {
|
||||
// "vue/component-name-in-template-casing": [2, "kebab-case"],//模板中是否将组件名称强制转化成横杠连接的命名
|
||||
"vue/require-default-prop": 0,
|
||||
"vue/multi-word-component-names": 0,
|
||||
"vue/no-reserved-props": 0,
|
||||
"vue/no-v-html": 0,
|
||||
"vue-scoped-css/enforce-style-type": ["error", { "allows": ["scoped"] }],
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["*.ts", "*.tsx"], // https://github.com/typescript-eslint eslint-recommended
|
||||
"rules": {
|
||||
"constructor-super": "off", // ts(2335) & ts(2377)
|
||||
"getter-return": "off", // ts(2378)
|
||||
"no-const-assign": "off", // ts(2588)
|
||||
// 禁止function定义中出现重名参数
|
||||
"no-dupe-args": "off", // ts(2300)
|
||||
"no-dupe-class-members": "off", // ts(2393) & ts(2300)
|
||||
"no-dupe-keys": "off", // ts(1117)
|
||||
"no-func-assign": "off", // ts(2539)
|
||||
"no-import-assign": "off", // ts(2539) & ts(2540)
|
||||
"no-new-symbol": "off", // ts(2588)
|
||||
"no-obj-calls": "off", // ts(2349)
|
||||
"no-redeclare": "off", // ts(2451)
|
||||
"no-setter-return": "off", // ts(2408)
|
||||
"no-this-before-super": "off", // ts(2376)
|
||||
"no-undef": "off", // ts(2304)
|
||||
//禁止在return、throw、continue、break语句之后出现不可达代码
|
||||
"no-unreachable": "off", // ts(7027)
|
||||
"no-unsafe-negation": "off", // ts(2365) & ts(2360) & ts(2358)
|
||||
"no-var": "error", // ts transpiles let/const to var, so no need for vars any more
|
||||
"prefer-const": "error", // ts provides better types with const
|
||||
"prefer-rest-params": "error", // ts provides better types with rest args over arguments
|
||||
"prefer-spread": "error", // ts transpiles spread to apply, so no need for manual apply
|
||||
"valid-typeof": "off", // ts(2367)
|
||||
"vue/v-on-event-hyphenation":"off", // 事件名中横线
|
||||
"vue/no-dupe-keys":"true" // 禁止出现重复的属性
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
24
.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
29
.gitlab-ci.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
stages:
|
||||
- build
|
||||
- docs
|
||||
build:
|
||||
stage: build
|
||||
tags:
|
||||
- aliyun-kubernetes
|
||||
script:
|
||||
- node -v
|
||||
- npm -v
|
||||
- npm install --registry=http://registry.npm.taobao.org
|
||||
|
||||
# - sudo rm -rf /data/nginx/html/${CI_PROJECT_NAME}/*
|
||||
# - sudo cp -rf ./dist/* /data/nginx/html/${CI_PROJECT_NAME}/
|
||||
# - sudo chown nginx.nginx -R /data/nginx/html/${CI_PROJECT_NAME}
|
||||
only:
|
||||
- master
|
||||
|
||||
# docs:
|
||||
# stage: docs
|
||||
# tags:
|
||||
# - aliyun-kubernetes
|
||||
# script:
|
||||
# - sudo rm -rf /data/nginx/html/${CI_PROJECT_NAME}-docs/*
|
||||
# - sudo cp -rf ./docs/* /data/nginx/html/${CI_PROJECT_NAME}-docs/
|
||||
# - sudo chown nginx.nginx -R /data/nginx/html/${CI_PROJECT_NAME}-docs
|
||||
# only:
|
||||
# - master
|
||||
|
||||
10
.prettierrc
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"spaceBeforeFunctionParen": true,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"trailingComma": "none",
|
||||
"eslintIntegration": true,
|
||||
"singleQuote": true,
|
||||
"semi": false,
|
||||
"endOfLine": "auto"
|
||||
}
|
||||
8
.stylelintignore
Normal file
@@ -0,0 +1,8 @@
|
||||
# .stylelintignore
|
||||
# 旧的不需打包的样式库
|
||||
*.min.css
|
||||
|
||||
# 其他类型文件
|
||||
*.js
|
||||
*.jpg
|
||||
*.woff
|
||||
10
Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM nginx
|
||||
LABEL maintainer="信息中心研发组 <user@itcast.cn>"
|
||||
|
||||
COPY ./dist/ /usr/share/nginx/html/
|
||||
RUN chmod -R 777 /usr/share/nginx/html/
|
||||
|
||||
RUN chmod -R 777 /etc/nginx/conf.d/default.conf
|
||||
COPY ./default.conf /etc/nginx/conf.d/
|
||||
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
186
README.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 云岚到家-机构端
|
||||
#### 项目简介
|
||||
> 当代人们的生活节奏越来越快,很多人因为工作和其他事情没有时间去处理家务事,因此需要家政服务来帮助他们解决日常生活中的问题。云岚到家家政项目是一种在线服务,将家政服务与互联网技术相结合,为用户提供更加便捷的家政服务。
|
||||
|
||||
项目迭代日志:
|
||||
23年3月30 - 合并更新 处理无法合并问题
|
||||
#### 研发规范遵循:
|
||||
|
||||
- 主体使用驼峰命名
|
||||
- 公共样式使用 - 连接命名
|
||||
- 内部样式 驼峰命名
|
||||
- 页面命名 使用小写开头的驼峰命名
|
||||
- 组件使用大写开头命名
|
||||
|
||||
#### 产品原型及设计
|
||||
- 设计稿: https://codesign.qq.com/app/design/P4VlZMr6dzjq6wL/board?team_id=6dqN292MdajaBXe
|
||||
- 产品原型: https://codesign.qq.com/app/prototype/a4Jd0NaP739AMkb/detail
|
||||
|
||||
#### 运行环境 - 初始开发环境及工具
|
||||
|
||||
- 项目开发环境: win10 + node: v16.19.0 + npm: 8.12.1 || pnpm: 6.32.8
|
||||
|
||||
#### 访问地址
|
||||
|
||||
|
||||
#### 技术栈应用
|
||||
Vue 3 + TypeScript +Tdesign + Vite + pinia
|
||||
#### 项目结构
|
||||
```html
|
||||
├── commitlint.config.js - commintlint 规范
|
||||
├── docker - docker 部署配置文件
|
||||
│ └── nginx.conf - 若开启 browerhistroy 可参考配置
|
||||
├── docs - 项目展示图 - 首页截图
|
||||
├── globals.d.ts - 通用声明文件
|
||||
├── index.html - 主 html 文件
|
||||
├── mock - mock 目录
|
||||
│ └── index.ts
|
||||
├── node_modules - 项目依赖
|
||||
├── package-lock.json
|
||||
├── package.json
|
||||
├── public - 公用资源文件
|
||||
│ └── favicon.ico
|
||||
├── shims-vue.d.ts
|
||||
├── src - 页面代码
|
||||
│ ├── api 请求相关
|
||||
│ ├── assets 公共资源
|
||||
│ │ ├── images 图片资源
|
||||
│ ├── api - 接口
|
||||
│ ├── components - 公用组件
|
||||
│ │ ├── Delete - 删除弹层:只需从父组件传删除的内容提示
|
||||
│ │ ├── Confirm - 确认弹层:只需从父组件传确认的内容提示
|
||||
│ │ ├── expBall - 展示版本更新内容的小球球
|
||||
│ │ ├── ImageMagnify - 查看图片弹层
|
||||
│ │ ├── NoData - 无数据的空页面形式
|
||||
│ │ ├── product-card - 产品卡片
|
||||
│ │ ├── result - 结果
|
||||
│ │ ├── editDialog - 编辑弹窗
|
||||
│ │ ├── thumbnail - 缩略图
|
||||
│ │ ├── trend - 趋势图
|
||||
│ │ ├── Message - 提示弹层
|
||||
│ │ │ ├──Success - 成功通知弹窗
|
||||
│ │ │ ├──ProdDisabled - 禁用提示弹窗
|
||||
│ │ ├── switchBar - tab切换
|
||||
│ │ │ ├──switchBar - tab切换
|
||||
│ │ │ ├──switchBarindex - 首页tab切换
|
||||
│ │ │ ├──switchBartop - 线条tab
|
||||
│ ├── czriComponents - 组件包:常用,但是原有组件库实现不了,因此进行了二次开发
|
||||
│ │ ├──index.less - 组件包样式
|
||||
│ ├── layouts - 页面架构
|
||||
│ │ ├──components - 页面架构公共组件
|
||||
│ │ │ ├──Breadcrumb - 面包屑
|
||||
│ │ │ ├──Content - 内置组件,避免重复渲染DOM
|
||||
│ │ │ ├──Footer - 底部公司名称
|
||||
│ │ │ ├──LayoutContentSide - 侧边栏
|
||||
│ │ │ ├──LayoutHeader - 侧边栏头部
|
||||
│ │ │ ├──Loginfo - 侧边栏退出区域
|
||||
│ │ │ ├──Notice - 通知中心,弃用
|
||||
│ │ │ ├──Search - 搜索功能
|
||||
│ │ ├──simpleComponents - 框架公用内容
|
||||
│ │ │ ├──MenuContent - 简版布局
|
||||
│ │ │ ├──SideNav - 列表菜单
|
||||
│ │──index.vue - 框架布局
|
||||
│ │──setting.vue = 设置框架风格
|
||||
│ ├── config - 项目配置
|
||||
│ │ ├──configuration - 配置项目地址和api
|
||||
│ │ ├──global - 配重全局内容
|
||||
│ │ ├──proxy.ts - 代理样式
|
||||
│ │ ├──style.ts - 配置全局样式风格
|
||||
│ ├── pages - 页面展示目录
|
||||
│ │ ├──dashboard - 首页,工作台
|
||||
│ │ ├──coupon - 优惠券管理页
|
||||
│ │ │ ├──addCoupon - 新增,编辑优惠券
|
||||
│ │ │ ├──index - 列表页
|
||||
│ │ ├──coupon - 客户管理页
|
||||
│ │ ├──default - 公共缺省页
|
||||
│ │ ├──institution - 企业管理
|
||||
│ │ │ ├──authentication - 企业认证管理
|
||||
│ │ │ ├──information - 企业信息管理
|
||||
│ │ ├──personnel - 服务人员管理
|
||||
│ │ │ ├──authentication - 服务人员认证管理
|
||||
│ │ │ ├──information - 服务人员信息管理
|
||||
│ │ ├──order - 订单管理
|
||||
│ │ │ ├──dispatchList - 派单列表(已废弃)
|
||||
│ │ │ ├──historyList - 历史订单列表
|
||||
│ │ │ │ ├──orderDetail - 历史订单详情
|
||||
│ │ │ │ ├──index - 列表页
|
||||
│ │ │ ├──refundList - 退款订单列表(已废弃)
|
||||
│ │ │ ├──orderList - 订单列表
|
||||
│ │ │ │ ├──orderDetail - 历史订单详情
|
||||
│ │ │ │ ├──index - 列表页
|
||||
│ │ ├──reply - 原评价页面,现修改解决方案,已废弃
|
||||
│ │ ├──service - 服务管理
|
||||
│ │ │ ├──serviceType - 服务类型管理
|
||||
│ │ │ ├──service - 服务项管理
|
||||
│ │ │ │ ├──index - 服务项列表
|
||||
│ │ │ │ ├──addService - 新增,编辑服务项
|
||||
│ │ │ ├──region - 区域管理
|
||||
│ │ │ │ ├──editRegion - 设置服务
|
||||
│ │ │ │ ├──index - 区域列表
|
||||
│ │ │ │ ├──setBusiness - 调度配置
|
||||
│ │ ├──login - 登录页
|
||||
│ │ ├──user - 个人中心
|
||||
│ ├── router - 定义路由页面
|
||||
│ ├── style - 样式
|
||||
│ │ ├──componentsReast - 组件重置、全局样式
|
||||
│ │ ├──theme - 全局颜色值、公用样式
|
||||
│ │ index.less - 样式总入口
|
||||
│ │ normal.less - 普通框架样式
|
||||
│ │ noSecondMenu.less - 普通框架简化版样式
|
||||
│ │ top.less - 上左右布局
|
||||
│ ├── utils 封装工具目录
|
||||
│ ├── main.ts - 项目入口文件
|
||||
│ ├── permission.ts - 路有权限控制
|
||||
├── tsconfig.json - ts配置文件
|
||||
├── README.md - 说明文档
|
||||
└── vite.config.js - vite 配置文件
|
||||
```
|
||||
#### 安装运行
|
||||
|
||||
``` bash
|
||||
## 安装依赖
|
||||
npm install || yarn
|
||||
##或
|
||||
cnpm install || yarn
|
||||
## 启动项目
|
||||
|
||||
# 启动
|
||||
npm run dev
|
||||
# 启动链接测试环境
|
||||
npm run start
|
||||
|
||||
## 构建正式环境 - 打包
|
||||
npm run build
|
||||
|
||||
```
|
||||
#### 插件
|
||||
nprogress 进度条
|
||||
|
||||
viteMockServe vite 的数据模拟插件
|
||||
|
||||
vueJsx
|
||||
> 使用jsx 语法 jsx语法可以更好地跟Typescript结合 在阅读UI框架源码时,发现在知名UI组件库Ant Design Vue跟Naive UI皆使用tsx语法开发
|
||||
vite-svg-loader
|
||||
|
||||
|
||||
|
||||
#### 参考
|
||||
|
||||
vite
|
||||
vue3
|
||||
pinia 中文文档 :类vuex
|
||||
vue-router
|
||||
Tdesign
|
||||
Tdesign-cli
|
||||
|
||||
tsconfig.json配置
|
||||
#### 文档
|
||||
tsconfig.json 配置整理
|
||||
vite.config.js vite配置文件
|
||||
|
||||
src/config/proxy.ts 后端地址配置,
|
||||
|
||||
release:生成环境下的后端地址,使用npm run build有效 ,
|
||||
|
||||
vite.config.ts:配置npm run dev的代理地址
|
||||
|
||||
66
assets/svg/assets-t-logo.svg
Normal file
@@ -0,0 +1,66 @@
|
||||
<svg width="122" height="32" viewBox="0 0 122 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_16025_26913)">
|
||||
<path
|
||||
d="M42.1876 8.78706H37.2302L34.1354 26.2045H30.52L33.5916 8.78706H28.6111L29.1491 5.79641H42.7256L42.1876 8.78706Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M58.4307 10.9505C58.4187 12.1155 58.3026 13.277 58.0837 14.4213L57.5052 17.8458C56.2789 24.8278 54.3815 26.2045 48.9787 26.2045H40.6777L44.2642 5.80798H51.3504C56.4929 5.80798 58.4307 7.09795 58.4307 10.9505ZM54.8211 11.4943C54.8211 9.18041 53.7163 8.79863 50.8066 8.79863H47.3358L44.8253 23.2139H48.2498C52.299 23.2139 53.1262 22.4041 53.9072 17.8516L54.4856 14.4271C54.6807 13.4608 54.793 12.4796 54.8211 11.4943Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M72.2269 13.756C72.2256 14.1538 72.1889 14.5507 72.117 14.9419L71.7352 17.0706C71.3071 19.4655 70.4163 20.3042 68.1777 20.3042H62.26L62.1212 21.1372C62.047 21.5188 62.0025 21.9056 61.9881 22.2941C61.9881 23.237 62.474 23.4511 64.0359 23.4511H69.4503L68.3454 26.1756H63.388C59.9172 26.1756 58.6504 25.2848 58.6504 23.104C58.664 22.4716 58.7259 21.8412 58.8355 21.2182L59.8883 15.1791C60.5362 11.4653 62.098 10.7076 66.0547 10.7076H67.8884C70.7171 10.7365 72.2269 11.4943 72.2269 13.756ZM68.8602 14.242C68.8602 13.5941 68.4553 13.4321 67.2174 13.4321H65.3027C64.0648 13.4321 63.469 13.5941 63.174 15.208L62.7459 17.6896H67.3215C67.4654 17.7123 67.6125 17.7034 67.7526 17.6634C67.8927 17.6234 68.0223 17.5533 68.1325 17.458C68.2427 17.3627 68.3307 17.2445 68.3905 17.1116C68.4502 16.9788 68.4803 16.8345 68.4785 16.6888L68.7735 14.9535C68.8153 14.7185 68.8386 14.4806 68.8429 14.242H68.8602Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M72.4121 23.48H78.7752C79.828 23.48 80.0189 23.318 80.204 22.271L80.4469 20.8422C80.4911 20.6385 80.5182 20.4315 80.5279 20.2233C80.5279 19.8704 80.337 19.8183 79.7181 19.8183H76.6233C74.2516 19.8183 73.4707 19.3613 73.4707 17.8226C73.496 17.0722 73.585 16.3252 73.7368 15.5898L73.9566 14.375C74.4946 11.2744 75.2986 10.9042 78.3471 10.9042H85.1614L84.0045 13.623H78.324C77.2712 13.623 77.0803 13.785 76.8952 14.8378L76.6812 16.0468C76.6341 16.25 76.607 16.4573 76.6002 16.6657C76.6002 17.0186 76.7853 17.0706 77.4042 17.0706H80.6378C83.0095 17.0706 83.7905 17.5276 83.7905 19.0663C83.7648 19.8187 83.6758 20.5676 83.5244 21.305L83.2236 22.9999C82.7434 25.7996 81.9336 26.1814 78.7521 26.1814H72.8922L72.4121 23.48Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M87.9843 10.9274H91.3278L88.6611 26.2045H85.3176L87.9843 10.9274ZM88.9851 4.97499H92.4559L91.8369 8.44576H88.3661L88.9851 4.97499Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M105.986 14.2651C105.946 15.2371 105.828 16.2043 105.633 17.1574L103.961 26.6037C103.313 30.2711 101.729 31 98.6279 31H92.8086L92.3227 28.2465H97.8759C99.9758 28.2465 100.381 28.0903 100.768 25.7186L100.953 24.6658H97.0777C93.6532 24.6658 92.2244 23.7229 92.2244 21.1372C92.2638 20.1652 92.3818 19.1979 92.5772 18.2449L92.9821 16.0063C93.7631 11.6967 94.758 10.7249 99.2585 10.7249H101.115C104.557 10.7365 105.986 11.6794 105.986 14.2651ZM101.457 21.9471L102.29 17.1227C102.462 16.3618 102.571 15.5878 102.614 14.8088C102.614 13.6519 102.035 13.4379 100.3 13.4379H99.0907C97.043 13.4379 96.719 14.0568 96.3662 16.0236L95.9612 18.2623C95.7993 19.025 95.691 19.7982 95.6373 20.5761C95.6373 21.733 96.2158 21.9529 97.9859 21.9529L101.457 21.9471Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M121.367 13.6751C121.306 14.7796 121.161 15.878 120.934 16.9607L119.32 26.2161H115.976L117.619 16.9607C117.766 16.2594 117.857 15.5476 117.891 14.832C117.891 13.8891 117.486 13.6751 116.219 13.6751H112.286L110.105 26.1814H106.767L109.434 10.9042H116.855C120.286 10.9274 121.367 11.7314 121.367 13.6751Z"
|
||||
fill="currentColor"
|
||||
></path>
|
||||
<path
|
||||
d="M7.97158 26.1814H3.28026C3.20254 26.1813 3.12575 26.1646 3.05505 26.1323C2.98435 26.1001 2.92139 26.053 2.87041 25.9944C2.81943 25.9357 2.78162 25.8668 2.75952 25.7923C2.73741 25.7178 2.73154 25.6394 2.74229 25.5625L3.65626 20.4026H9.44088L8.49798 25.7476C8.47291 25.8691 8.40703 25.9784 8.31127 26.0573C8.21552 26.1362 8.09566 26.18 7.97158 26.1814V26.1814Z"
|
||||
fill="#009BFF"
|
||||
></path>
|
||||
<path
|
||||
d="M21.1779 8.78706H5.69824L6.71634 3.00244H21.9877C22.0714 2.99445 22.1557 3.00616 22.234 3.03663C22.3123 3.06709 22.3823 3.11547 22.4386 3.17789C22.4948 3.2403 22.5356 3.31502 22.5578 3.39605C22.58 3.47709 22.5828 3.56219 22.5662 3.64453L21.7101 8.35321C21.6869 8.47672 21.6207 8.58803 21.5233 8.66744C21.4259 8.74684 21.3035 8.78922 21.1779 8.78706Z"
|
||||
fill="url(#paint0_linear_16025_26913)"
|
||||
></path>
|
||||
<path
|
||||
d="M5.69814 8.78706H0.549824C0.471061 8.78794 0.393048 8.77169 0.321181 8.73945C0.249315 8.70721 0.185311 8.65974 0.133598 8.60033C0.081885 8.54091 0.0436979 8.47097 0.0216786 8.39534C-0.000340748 8.31972 -0.00566652 8.24021 0.00606973 8.16232L0.84484 3.44785C0.867754 3.32323 0.933469 3.21053 1.03064 3.12921C1.1278 3.04788 1.25032 3.00304 1.37702 3.00244H6.71623L5.69814 8.78706Z"
|
||||
fill="#0064FF"
|
||||
></path>
|
||||
<path d="M9.44658 20.3852H3.65039L5.69815 8.79863H11.4943L9.44658 20.3852Z" fill="url(#paint1_linear_16025_26913)"></path>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_16025_26913" x1="6.19468" y1="5.90053" x2="21.6312" y2="8.6791" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.03" stop-color="#E9FFFF"></stop>
|
||||
<stop offset="0.17" stop-color="#C4FAC9"></stop>
|
||||
<stop offset="0.33" stop-color="#A0F694"></stop>
|
||||
<stop offset="0.48" stop-color="#82F269"></stop>
|
||||
<stop offset="0.63" stop-color="#6AEF47"></stop>
|
||||
<stop offset="0.76" stop-color="#5AED2F"></stop>
|
||||
<stop offset="0.89" stop-color="#4FEB20"></stop>
|
||||
<stop offset="1" stop-color="#4CEB1B"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_16025_26913" x1="8.58918" y1="8.37635" x2="8.69869" y2="19.278" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#009BFF"></stop>
|
||||
<stop offset="0.35" stop-color="#0081FE"></stop>
|
||||
<stop offset="0.75" stop-color="#006AFD"></stop>
|
||||
<stop offset="1" stop-color="#0062FD"></stop>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_16025_26913">
|
||||
<rect width="121.367" height="32" fill="white"></rect>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
1
assets/svg/icon-ztsx 2.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1673592571082" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M428.520238 1022.464034c-31.231313 0-62.769819-23.756277-62.769819-76.798311v-453.62202L24.561126 115.527186A97.789849 97.789849 0 0 1 3.569587 81.326339 59.493091 59.493091 0 0 1 4.900758 37.704898 59.595489 59.595489 0 0 1 36.439264 7.395165 97.789849 97.789849 0 0 1 75.759999 0.022528H948.291204c15.052469 0 28.261778 2.457546 39.320734 7.372637 14.642878 6.34866 25.599437 16.895628 31.538507 30.309733 5.939069 13.311707 6.34866 28.466574 1.33117 43.621441a97.789849 97.789849 0 0 1-20.991538 34.09845L658.505579 492.146101V764.933699c0 51.506067-30.00254 115.197466-69.835264 147.862347l-106.493657 87.75487c-17.612413 14.438082-35.634416 21.81072-53.554022 21.81072z" fill="#000000" fill-opacity=".25" p-id="2053"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
7
assets/svg/img_logo.svg
Normal file
|
After Width: | Height: | Size: 36 KiB |
2
commitlint.config.js
Normal file
@@ -0,0 +1,2 @@
|
||||
// commit-lint config
|
||||
module.exports = { extends: ['@commitlint/config-conventional'] };
|
||||
52
default.conf
Normal file
@@ -0,0 +1,52 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name jzo2o-operation-test.itheima.net;
|
||||
client_body_timeout 10m;
|
||||
client_max_body_size 30m;
|
||||
#charset koi8-r;
|
||||
#access_log /var/log/nginx/host.access.log main;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
}
|
||||
|
||||
|
||||
location /api/ {
|
||||
proxy_pass https://jzo2o-api-test.itheima.net/;
|
||||
client_body_timeout 10m;
|
||||
}
|
||||
|
||||
#error_page 404 /404.html;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root /usr/share/nginx/html;
|
||||
}
|
||||
|
||||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
||||
#
|
||||
#location ~ \.php$ {
|
||||
# proxy_pass http://127.0.0.1;
|
||||
#}
|
||||
|
||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||
#
|
||||
#location ~ \.php$ {
|
||||
# root html;
|
||||
# fastcgi_pass 127.0.0.1:9000;
|
||||
# fastcgi_index index.php;
|
||||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
||||
# include fastcgi_params;
|
||||
#}
|
||||
|
||||
# deny access to .htaccess files, if Apache's document root
|
||||
# concurs with nginx's one
|
||||
#
|
||||
#location ~ /\.ht {
|
||||
# deny all;
|
||||
#}
|
||||
}
|
||||
BIN
docs/_media/icon.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
155
docs/_media/icon.svg
Normal file
@@ -0,0 +1,155 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="220px" x="0px" y="0px" viewBox="0 0 418 62" enable-background="new 0 0 418 62" xml:space="preserve"> <image id="image0" width="418" height="62" x="0" y="0"
|
||||
href="data:image/png;base64,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
|
||||
MzowME1vDFUAAAAASUVORK5CYII=" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/_media/image-20230310155201062.png
Normal file
|
After Width: | Height: | Size: 270 KiB |
BIN
docs/_media/image-20230310155305993.png
Normal file
|
After Width: | Height: | Size: 311 KiB |
BIN
docs/_media/image-20230313092444215.png
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
docs/_media/image-20230313104231264.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
docs/_media/image-20230313104443270.png
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
docs/_media/image-20230315102553195.png
Normal file
|
After Width: | Height: | Size: 257 KiB |
BIN
docs/_media/image-20230315102835351.png
Normal file
|
After Width: | Height: | Size: 271 KiB |
BIN
docs/_media/image-20230315103016408.png
Normal file
|
After Width: | Height: | Size: 300 KiB |
10
docs/cover.md
Normal file
@@ -0,0 +1,10 @@
|
||||

|
||||
|
||||
> czri-admin 是由传智研究院研发的基于vue3.x+vite的一套后台基础架构
|
||||
- 使用vue最新技术栈:Vue3.x + TypeScript + Vite + pinia
|
||||
- Prettier 统一代码格式
|
||||
- ESlint 检查代码质量和风格问题。
|
||||
|
||||
[Git](http://git.itcast.cn/development/czri-admin)
|
||||
[预览](https://czri-admin.itheima.net/)
|
||||
[快速开始](/zh-cn/)
|
||||
36
docs/index.html
Normal file
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CZRI-ADMIN</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a href="#/zh-cn/">中文文档</a>
|
||||
<!-- <a href="#/en/">EN</a>-->
|
||||
<a href="#/">Home</a>
|
||||
</nav>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
name: 'CZRI-ADMIN',
|
||||
nameLink: {
|
||||
'/zh-cn/': '#/zh-cn/',
|
||||
'/': '#/',
|
||||
},
|
||||
logo: '/_media/icon.svg',
|
||||
// multiple covers and custom file name
|
||||
coverpage: {
|
||||
'/': 'cover.md',
|
||||
},
|
||||
homepage: 'zh-cn/README.md'
|
||||
}
|
||||
</script>
|
||||
<!-- Docsify v4 -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
|
||||
</body>
|
||||
</html>
|
||||
234
docs/zh-cn/README.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# RDesign
|
||||
|
||||
#### 链条式组件库
|
||||
- 平时项目开发中,遇到已有组件库中没有涉及的组件但又经常用到,每次都得重新开发很浪费时间,针对这个问题我们进行了二次组件封装或者是重新开发,用的时候直接引入
|
||||
|
||||
#### 技术栈
|
||||
- Vue 3 + TypeScript +Tdesign + Vite + pinia
|
||||
|
||||
#### 运行环境 - 初始开发环境及工具
|
||||
- Mac
|
||||
- node v17.8.0
|
||||
- pnpm 6.32.8
|
||||
- npm v8.12.1
|
||||
|
||||
#### 文件架构
|
||||
|
||||
```
|
||||
├── commitlint.config.js - commintlint 规范
|
||||
├── docker - docker 部署配置文件
|
||||
│ └── nginx.conf - 若开启 browerhistroy 可参考配置
|
||||
├── docs - 项目展示图 - 首页截图
|
||||
├── globals.d.ts - 通用声明文件
|
||||
├── index.html - 主 html 文件
|
||||
├── mock - mock 目录
|
||||
│ └── index.ts
|
||||
├── node_modules - 项目依赖
|
||||
├── package-lock.json
|
||||
├── package.json
|
||||
├── public - 公用资源文件
|
||||
│ └── favicon.ico
|
||||
├── shims-vue.d.ts
|
||||
├── src - 页面代码
|
||||
│ ├── api 请求相关
|
||||
│ ├── assets 公共资源
|
||||
│ │ ├── images 图片资源
|
||||
│ ├── api - 接口
|
||||
│ ├── co nponents - 公用组件
|
||||
│ │ ├── Delete - 删除弹层:只需从父组件传删除的内容提示
|
||||
│ │ ├── ImageMagnify - 查看图片弹层
|
||||
│ │ ├── Message - 提示弹层
|
||||
│ │ │ ├──Success - 成功通知弹窗
|
||||
│ │ │ ├──ProdDisabled - 禁用提示弹窗
|
||||
│ │ ├── switchBar - tab切换
|
||||
│ │ │ ├──switchBar - tab切换
|
||||
│ │ │ ├──switchBarindex - 首页tab切换
|
||||
│ │ │ ├──switchBartop - 线条tab
|
||||
│ ├── czriComponents - 组件包:常用,但是原有组件库实现不了,因此进行了二次开发
|
||||
│ │ ├──AddInput - 动态添加input组件
|
||||
│ │ ├──CardListCollapse - 折叠列表
|
||||
│ │ ├──CardListSort - 带排序的列表
|
||||
│ │ ├──dropList - 可下拉展开的列表
|
||||
│ │ ├──ListDialog - 常用弹窗5(带列表的弹窗)
|
||||
│ │ ├──ListScrollDialog - 常用弹窗5(带列表的弹窗、滚动分页)
|
||||
│ │ ├──TabDialog - 常用弹窗6(带tab的弹窗)
|
||||
│ │ ├──tabList - 带tab的列表
|
||||
│ │ ├──Transfer - 穿梭框(标题有hover状态)
|
||||
│ │ ├──treeList - 树形列表
|
||||
│ │ ├──UnitDialog - 常用弹窗2(带单位和数显)
|
||||
│ │ ├──index.less - 组件包样式
|
||||
│ ├── layouts - 页面架构
|
||||
│ │ ├──components - 页面架构公共组件
|
||||
│ │ │ ├──Breadcrumb - 面包屑
|
||||
│ │ │ ├──Content - 内置组件,避免重复渲染DOM
|
||||
│ │ │ ├──Footer - 底部公司名称
|
||||
│ │ │ ├──LayoutContentSide - 侧边栏
|
||||
│ │ │ ├──LayoutHeader - 侧边栏头部
|
||||
│ │ │ ├──Loginfo - 侧边栏退出区域
|
||||
│ │ │ ├──Notice - 通知中心,弃用
|
||||
│ │ │ ├──Search - 搜索功能
|
||||
│ │ ├──frame - 页面架构框架
|
||||
│ │ ├──simple2Components - 框架二公用内容
|
||||
│ │ │ ├──Header - 框架顶部
|
||||
│ │ ├──simpleComponents - 框架公用内容
|
||||
│ │ │ ├──MenuContent - 简版布局
|
||||
│ │ │ ├──SideNav - 列表菜单
|
||||
│ │──index.vue - 框架布局
|
||||
│ │──setting.vue = 设置框架风格
|
||||
│ ├── pages - 页面展示目录
|
||||
│ │ ├──dashboard - 首页
|
||||
│ │ ├──detail - 详情页
|
||||
│ │ │ ├──advanced - 多卡片详情页
|
||||
│ │ │ ├──base - 基础详情页
|
||||
│ │ │ ├──deploy - 数据详情页
|
||||
│ │ │ ├──secondary - 二级详情页
|
||||
│ │ ├──form - 表单页
|
||||
│ │ │ ├──base - 基础表单页
|
||||
│ │ │ ├──step - 分步表单页
|
||||
│ │ ├──login - 普通tab登录页
|
||||
│ │ ├──login2 - 左右布局登录页
|
||||
│ │ ├──module - 组件包调用入口页,调用的组件都在(czriComponents文件加中)
|
||||
│ │ ├──user - 个人中心
|
||||
│ │ ├──list - 列表页
|
||||
│ │ │ ├──base - 基础列表页
|
||||
│ │ │ ├──upBase - 基础列表页(带图)
|
||||
│ │ │ ├──noSearch - 基础列表页(不带搜索)
|
||||
│ │ │ ├──card - 卡片列表页
|
||||
│ │ │ ├──noData - 列表无数据页
|
||||
│ │ │ ├──statistics - 统计数据列表页
|
||||
│ │ │ ├──tab - tab切换
|
||||
│ │ │ ├──topTab - 标签列表页(顶部)
|
||||
│ │ │ ├──tree - 树状筛选列表页
|
||||
│ ├── router - 定义路由页面
|
||||
│ ├── style - 样式
|
||||
│ │ ├──componentsReast - 组件重置、全局样式
|
||||
│ │ ├──theme - 全局颜色值、公用样式
|
||||
│ │ index.less - 样式总入口
|
||||
│ │ normal.less - 普通框架样式
|
||||
│ │ noSecondMenu.less - 普通框架简化版样式
|
||||
│ │ top.less - 上左右布局
|
||||
│ ├── utils 封装工具目录
|
||||
│ ├── main.ts - 项目入口文件
|
||||
│ ├── permission.ts - 路有权限控制
|
||||
├── tsconfig.json - ts配置文件
|
||||
├── README.md - 说明文档
|
||||
└── vite.config.js - vite 配置文件
|
||||
```
|
||||
|
||||
#### 运行
|
||||
|
||||
``` bash
|
||||
## 安装依赖
|
||||
npm install || yarn
|
||||
|
||||
## 启动项目
|
||||
|
||||
## 启动链接mock
|
||||
npm run dev
|
||||
|
||||
## 启动链接测试环境
|
||||
npm run start
|
||||
```
|
||||
|
||||
### 构建
|
||||
|
||||
```bash
|
||||
## 构建正式环境 - 打包
|
||||
npm run build
|
||||
|
||||
```
|
||||
|
||||
#### 插件
|
||||
- [nprogress 进度条 ](https://madewith.cn/23)
|
||||
- [viteMockServe vite 的数据模拟插件](https://www.csdn.net/tags/MtTaMg1sODE4ODA3LWJsb2cO0O0O.html)
|
||||
- [vueJsx ](https://zhuanlan.zhihu.com/p/460328418)
|
||||
> 使用jsx 语法 jsx语法可以更好地跟Typescript结合 在阅读UI框架源码时,发现在知名UI组件库Ant Design Vue跟Naive UI皆使用tsx语法开发
|
||||
- [vite-svg-loader](https://www.jianshu.com/p/bd3835d17ad1)
|
||||
|
||||
#### 参考
|
||||
- [vite](https://vitejs.cn/guide/#index-html-and-project-root)
|
||||
- [vue3](https://v3.cn.vuejs.org/guide/introduction.html)
|
||||
- [pinia 中文文档 :类vuex](https://pinia.web3doc.top/introduction.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E4%BD%BF%E7%94%A8-pinia%EF%BC%9F)
|
||||
- [vue-router](https://router.vuejs.org/zh/guide/)
|
||||
- [Tdesign](https://tdesign.tencent.com/vue-next/getting-started)
|
||||
- [Tdesign-cli](https://tdesign.tencent.com/starter/docs/vue-next/get-started)
|
||||
- [pnpm](https://zhuanlan.zhihu.com/p/404784010)
|
||||
#### 配置文件
|
||||
- [.prettierrc vscode自动格式化插件配置](https://github.com/prettier/prettier)
|
||||
- [.eslintrc eslint配置文件](https://cn.eslint.org/docs/rules/)
|
||||
- [tsconfig.json 配置整理](https://wenku.baidu.com/view/1fc27fe29dc3d5bbfd0a79563c1ec5da50e2d6bd.html)
|
||||
- [vite.config.js vite配置文件](https://vitejs.cn/config/)
|
||||
|
||||
|
||||
#### 兼容性
|
||||
|
||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br> IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Edge >=84 | Firefox >=83 | Chrome >=84 | Safari >=14.1 |
|
||||
|
||||
### 组件概览
|
||||
|
||||
框架上,当前此组件库共包含
|
||||
|
||||
三套框架
|
||||
|
||||
六套主题
|
||||
|
||||
两种模式
|
||||
|
||||
页面上,当前共包含
|
||||
|
||||
列表页9个,包含列表(基础)、列表(带图)、列表(无搜索)、列表(Tab切换列表)、列表(Tab切换页面)、列表(关键数据)、列表(卡片式)、列表(树状筛选)、列表(无数据)等九个列表,位于page下面的list文件夹
|
||||
|
||||
表单页1个,分布表单页,位于page下的form文件夹下的step文件夹
|
||||
|
||||
个人页1个,位于page下的user文件夹
|
||||
|
||||
缺省页共5个,包含服务器出错页、网络异常页、网络断开页、访问页面不存在、无权限页,位于page下的default文件夹
|
||||
|
||||
组件共11个,包含列表(可排序)、列表(可展开1)、列表(可展开2)、列表(带Tab)、列表(树状)、弹窗(带列表)、弹窗(带Tab)、弹窗(带表单)、禁用提示、动态增加数据、穿梭框。展示位于page文件夹下的module文件夹,具体每个组件源代码位于src下的czriComponents文件夹下。
|
||||
|
||||
### 关于如何使用框架进行修改使用
|
||||
|
||||
#### 如何增加和修改主题颜色
|
||||
|
||||
原理:该组件库的主题颜色的修改主要是通过更改全局应用的less文件来达成换肤的目的,及点击换色时,当前应用的样式文件发生了改变,正因如此,全局使用的色调应尽可能的使用定义好的颜色而不是直接的色值
|
||||
|
||||
因此当需要添加或者修改全局的主题色时,需要首先,在theme文件夹下定义新的基本样式文件,然后再添加对应的触发方式
|
||||
|
||||
1、新建样式文件
|
||||

|
||||
|
||||
2、在layout下的setting文件中添加对应的触发方式
|
||||
|
||||

|
||||
|
||||
#### 关于如何修改全局框架导航样式
|
||||
|
||||
首先,整体框架有三套风格,列表导航风格一共有两套即为简版的无二级导航菜单风格和正常风格,这两种路由配置不同,因此需要动态进行路由配置的切换,使用map语法,对路由进行动态的渲染和挂载
|
||||
|
||||

|
||||
|
||||
其次,当点击对应的切换布局时,将通过传参的不同,切换不同的配置文件,
|
||||
|
||||

|
||||
|
||||
根据判断传入的参数内容判断需要切换的内容是什么,进行相应的切换
|
||||
|
||||

|
||||
|
||||
#### 整体切换的原理
|
||||
|
||||
##### 1、设置全局中需要切换内容的判断,将对应的判断利用vuex或者pinia存储于全局
|
||||
|
||||

|
||||
|
||||
##### 2、在pinia或者vuex中存储并定义相应的方法,来使之触发,能够修改全局的变量,达成将框架内容对应的变量调节成所需要的值的目的
|
||||
|
||||

|
||||
|
||||
##### 3、在页面的整体布局layout中定义对于所需要展示的内容设置相应的判断,让他在需要显示的时候能够正常的进行显示,例如下图,
|
||||
|
||||
通过判断settingStore.isSidebarCompact的值,确定显示内容
|
||||
|
||||

|
||||
9
docs/相关命令.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
#框架文档:https://docsify.js.org/#/zh-cn/quickstart
|
||||
#全局安装 docsify-cli 工具
|
||||
npm i docsify-cli -g
|
||||
|
||||
#初始化项目
|
||||
docsify init ./docs
|
||||
|
||||
#本地预览
|
||||
docsify serve docs
|
||||
15
globals.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
// 通用声明
|
||||
declare type ClassName = { [className: string]: any } | ClassName[] | string;
|
||||
|
||||
declare interface ImportMeta {
|
||||
env: {
|
||||
MODE: 'mock' | 'development' | 'test' | 'release';
|
||||
};
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
glob: (url: string) => { url };
|
||||
}
|
||||
|
||||
declare module '*.svg' {
|
||||
const CONTENT: string;
|
||||
export default CONTENT;
|
||||
}
|
||||
14
index.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="./src/assets/test-img/logo.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>云岚到家</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
592
mock/index.ts
Normal file
@@ -0,0 +1,592 @@
|
||||
import { MockMethod } from 'vite-plugin-mock'
|
||||
import Mock from 'mockjs'
|
||||
import { List } from 'tdesign-vue-next'
|
||||
|
||||
const BaseTag = '/api'
|
||||
export default [
|
||||
// 登录
|
||||
{
|
||||
url: `${BaseTag}/accounts/login`,
|
||||
method: 'post',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
msg: 'ok',
|
||||
data: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyIjp7InVzZXJJZCI6MTU2OTg1Mjg2NzIwOTUyMzIwMiwicm9sZUlkIjoyfSwiZXhwIjoxNjczMzM0MDYzfQ.PvsLpM47UHuIO9imEtkKNRCP16d84KielSrwkl0OzJfyDMfkxbT3hzGgPJbUTszpRc2B1spcOjloAI1lkj_YgUBOS8k64AuW33Gb9oe0HzhAKjqG8ztRj0VGyxS29Y4Ozy90ERqltg69hvIXTlc3OHqwPWDjaiB2VawlAOMi8bQGYBKek4f9ubIuuhEavH9kGzma48A_Tkp4TfV3NMWgiByKE-extIPkMK24Ei9niQMCpf5d865heB7FTCJR8jee5Uu2vKN94AnCb5DyIbvvN5AzTHz0M6KTNywngCbnkf5oEPdcfPO-DGsKNi8avGo2mTsV6WUm2MWxIa3zx8V1Xw',
|
||||
requestId: 'ee052dcfeb4a4af3938e155dcfd3821e'
|
||||
})
|
||||
},
|
||||
// 获取用户信息
|
||||
{
|
||||
url: `${BaseTag}/users/me`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
icon: 'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg',
|
||||
id: '1569852867209523202',
|
||||
name: 'admin',
|
||||
roleName: '管理员',
|
||||
type: 0,
|
||||
msg: 'OK',
|
||||
requestId: 'd2701c0a7a7b4703a4b070aa71491e07'
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 下面是原始数据 暂时不要动 等页面替换的差不多了 直接删掉
|
||||
{
|
||||
url: `${BaseTag}/get-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-1000': [
|
||||
{
|
||||
'index|+1': 1, // 规则编号
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': [
|
||||
'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg'
|
||||
],
|
||||
'serviceErrorNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳
|
||||
'list|1-10': [
|
||||
{
|
||||
'index|1': '@natural(1000, 10000)', // 规则编号
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'],
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取下拉列表数据
|
||||
{
|
||||
url: `${BaseTag}/get-select`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|10': [
|
||||
{
|
||||
'index|+1': 1, // 规则编号
|
||||
'total|1': '@natural(100, 999)',
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'],
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳
|
||||
'list|1-10': [
|
||||
{
|
||||
'index|+1': 1000, // 规则编号
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'],
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 带tab的列表
|
||||
{
|
||||
url: `${BaseTag}/get-tab-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-1000': [
|
||||
{
|
||||
'index|+1': 1, // 规则编号
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': [
|
||||
'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg'
|
||||
],
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳
|
||||
'list|1-10': [
|
||||
{
|
||||
'index|1': '@natural(1000, 10000)', // 规则编号
|
||||
// 描述
|
||||
'description|1': [
|
||||
'测试服务测试',
|
||||
'测试服务1',
|
||||
'测试服务2',
|
||||
'测试服务3',
|
||||
'测试服务4',
|
||||
'测试服务5'
|
||||
],
|
||||
'name|1': '@cname', // 服务名称
|
||||
'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话
|
||||
// 头像
|
||||
'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'],
|
||||
'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数
|
||||
'status|1': '@natural(0, 3)', // 状态
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 个人信息数据
|
||||
{
|
||||
url: `${BaseTag}/get-personal`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
account: 'admin',
|
||||
nickname: 'admin',
|
||||
description: '这是一个管理员',
|
||||
region: '110114',
|
||||
address: '西三旗三旗百汇',
|
||||
phone: '123456789',
|
||||
headPortrait:
|
||||
'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 修改个人信息
|
||||
{
|
||||
url: `${BaseTag}/update-personal`,
|
||||
method: 'post',
|
||||
response: ({ body }) => {
|
||||
const {
|
||||
account,
|
||||
nickname,
|
||||
description,
|
||||
region,
|
||||
address,
|
||||
phone,
|
||||
headPortrait
|
||||
} = body
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
account,
|
||||
nickname,
|
||||
description,
|
||||
region,
|
||||
address,
|
||||
phone,
|
||||
headPortrait
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// 新建和编辑基础列表弹窗,发送的数据
|
||||
{
|
||||
url: `${BaseTag}list-basic/add`,
|
||||
method: 'post',
|
||||
// 接收的数据类型
|
||||
response: ({ body }) => {
|
||||
const { index, description, serviceCallNumber, status, updateTime } = body
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
index,
|
||||
description,
|
||||
serviceCallNumber,
|
||||
status,
|
||||
updateTime
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// 删除基础列表的数据
|
||||
{
|
||||
url: `${BaseTag}list-basic/delete`,
|
||||
method: 'post',
|
||||
// 接收的数据类型
|
||||
response: ({ body }) => {
|
||||
const { index } = body
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
index
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
url: `${BaseTag}/detail-basic`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 0,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
name: 'td_20023747',
|
||||
loginType: 'Web',
|
||||
currentRole: 'Admin',
|
||||
rightsList: '通用权限',
|
||||
userStatus: '启用',
|
||||
language: '简体中文',
|
||||
timeZone: '(GMT+08:00)中国时区—北京(Asia/Beijing)'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 树形列表的数据
|
||||
{
|
||||
url: `${BaseTag}/get-tree-list`,
|
||||
method: 'get',
|
||||
response: () => {
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1': [
|
||||
{
|
||||
// 取货单号
|
||||
'index|+1': '@natural(100000000, 999999999)',
|
||||
// 状态
|
||||
'status|1': '@natural(0, 3)',
|
||||
// 销售单号
|
||||
'saleOrderNumber|1': '@natural(10000000000, 19999999999)',
|
||||
// 子订单
|
||||
'subOrderchildrenNumber|1': '@natural(10000000, 99999999)',
|
||||
// 用户姓名
|
||||
'userName|1': '@cname',
|
||||
// 用户手机号
|
||||
'userPhone|1': '@natural(10000000000, 19999999999)',
|
||||
// 常用仓库
|
||||
'commonWarehouse|1': '菜鸟仓储',
|
||||
// 取货地址
|
||||
'address|1': '@county(true)'
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
url: `${BaseTag}/get-card-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|48-50': [
|
||||
{
|
||||
'index|+1': 1,
|
||||
'type|1': '@natural(1, 3)',
|
||||
'modelNumber|1': 'DXQM_@natural(100000, 999999)',
|
||||
'name|1': ['验证码', 'SSL证书', 'CVM', '云数据库', '云防火墙'],
|
||||
'createTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
{
|
||||
url: `${BaseTag}/get-project-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 0,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-50': [
|
||||
{
|
||||
'index|+1': 1,
|
||||
adminPhone: '+86 13587609955',
|
||||
updateTime: '2020-05-30 @date("HH:mm:ss")',
|
||||
'adminName|1': ['顾娟 ', '常刚', '郑洋'],
|
||||
'name|1': [
|
||||
'沧州市办公用品采购项目',
|
||||
'红河哈尼族彝族自治州办公用品采购项目 ',
|
||||
'铜川市办公用品采购项目',
|
||||
'陇南市办公用品采购项目 ',
|
||||
'六安市办公用品采购项目 '
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
{
|
||||
url: `${BaseTag}/post`,
|
||||
method: 'post',
|
||||
timeout: 2000,
|
||||
response: {
|
||||
code: 0,
|
||||
data: {
|
||||
name: 'vben'
|
||||
}
|
||||
}
|
||||
},
|
||||
// 验证密码
|
||||
{
|
||||
url: `${BaseTag}/validate-password`,
|
||||
method: 'post',
|
||||
response: ({ body }) => {
|
||||
const { password } = body
|
||||
if (password === '123456') {
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
name: 'vben'
|
||||
}
|
||||
}
|
||||
}
|
||||
return {
|
||||
code: 200,
|
||||
msg: '密码错误'
|
||||
}
|
||||
}
|
||||
},
|
||||
// 分布表单页接受的数据
|
||||
{
|
||||
url: `${BaseTag}/form/step`,
|
||||
method: 'post',
|
||||
// 接收的数据类型
|
||||
response: ({ body }) => {
|
||||
const { name, type, account, payAccount, amount } = body
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
name,
|
||||
type,
|
||||
account,
|
||||
payAccount,
|
||||
amount
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// 折叠列表
|
||||
{
|
||||
url: '/api/get-collapse-list',
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-3': [
|
||||
{
|
||||
'index|+1': 1, // 规则编号
|
||||
canUpdate: true,
|
||||
'name|1': ['第一章 ', '第二章', '第三章'],
|
||||
maxIndexOnShelf: 0,
|
||||
maxSectionIndexOnShelf: 0,
|
||||
'id|+1': 1, // 规则编号
|
||||
sections: [
|
||||
{
|
||||
'id|+1': 1,
|
||||
'index|+1': 1, // 规则编号
|
||||
'subId|+1': 1,
|
||||
canUpdate: true,
|
||||
maxIndexOnShelf: 0,
|
||||
maxSectionIndexOnShelf: 0,
|
||||
'name|1': ['第一小节', '第二小节', '第三小节'],
|
||||
sort: 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 穿梭框列表
|
||||
{
|
||||
url: '/api/get-transfer-list',
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-5': [
|
||||
{
|
||||
'name|1': [
|
||||
'沧州市办公用品采购项目沧州市办公用品采购项目沧州市办公用品采购项目沧州市办公用品采购项目',
|
||||
'红河哈尼族彝族自治州办公用品采购项目 ',
|
||||
'铜川市办公用品采购项目',
|
||||
'陇南市办公用品采购项目 ',
|
||||
'六安市办公用品采购项目 '
|
||||
],
|
||||
'id|+1': 1 // 规则编号
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 卡片列表
|
||||
{
|
||||
url: `${BaseTag}/get-cardsort-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-3': [
|
||||
{
|
||||
'index|+1': 1,
|
||||
isShow: false,
|
||||
'name|1': ['顾娟 ', '常刚', '郑洋'],
|
||||
'photo|1': [
|
||||
'https://tdesign.gtimg.com/starter/cloud-db.jpg',
|
||||
'https://tdesign.gtimg.com/starter/cloud-server.jpg',
|
||||
'https://tdesign.gtimg.com/starter/ssl.jpg',
|
||||
'https://tdesign.gtimg.com/starter/t-sec.jpg',
|
||||
'https://tdesign.gtimg.com/starter/face-recognition.jpg'
|
||||
],
|
||||
'num|1': ['2 ', '3', '8'],
|
||||
'phone|1': '@natural(10000000000, 19999999999)',
|
||||
'introduce|1': [
|
||||
'沧州市办公用品采购项目',
|
||||
'红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目 ',
|
||||
'铜川市办公用品采购项目',
|
||||
'陇南市办公用品采购项目 ',
|
||||
'六安市办公用品采购项目 '
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 列表弹层例表数据
|
||||
{
|
||||
url: `${BaseTag}/get-dialog-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-65': [
|
||||
{
|
||||
'id|+1': 1,
|
||||
isShow: false,
|
||||
'name|1': ['顾娟 ', '常刚', '郑洋'],
|
||||
'photo|1': [
|
||||
'https://tdesign.gtimg.com/starter/cloud-db.jpg',
|
||||
'https://tdesign.gtimg.com/starter/cloud-server.jpg',
|
||||
'https://tdesign.gtimg.com/starter/ssl.jpg',
|
||||
'https://tdesign.gtimg.com/starter/t-sec.jpg',
|
||||
'https://tdesign.gtimg.com/starter/face-recognition.jpg'
|
||||
],
|
||||
'num|1': ['2 ', '3', '8'],
|
||||
'phone|1': '@natural(10000000000, 19999999999)',
|
||||
'introduce|1': [
|
||||
'沧州市办公用品采购项目',
|
||||
'红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目 ',
|
||||
'铜川市办公用品采购项目',
|
||||
'陇南市办公用品采购项目 ',
|
||||
'六安市办公用品采购项目 '
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 数据详情页例表数据
|
||||
{
|
||||
url: `${BaseTag}/get-detail-list`,
|
||||
method: 'get',
|
||||
response: () => ({
|
||||
code: 200,
|
||||
data: {
|
||||
...Mock.mock({
|
||||
'list|1-65': [
|
||||
{
|
||||
'id|+1': 1,
|
||||
'index|+1': 1,
|
||||
'name|1': [
|
||||
'沧州市办公用品采购项目',
|
||||
'红河哈尼族彝族自治州办购项目红河哈尼族彝族自目 ',
|
||||
'铜川市办公用品采购项目',
|
||||
'陇南市办公用品采购项目 ',
|
||||
'六安市办公用品采购项目 '
|
||||
],
|
||||
'pdName|1': ['产品1', '产品2', '产品3'],
|
||||
'adminName|1': ['admin1', 'admin2', 'admin3'],
|
||||
'purchaseNum|1': ['2 ', '3', '8'],
|
||||
'pdNum|1': ['2 ', '3', '8'],
|
||||
'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
] as MockMethod[]
|
||||
8
mockProdServer.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
// mockProdServer.ts
|
||||
import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer';
|
||||
|
||||
import mockModule from './mock/index';
|
||||
|
||||
export function setupProdMockServer() {
|
||||
createProdMockServer([...mockModule]);
|
||||
}
|
||||
7415
package-lock.json
generated
Normal file
98
package.json
Normal file
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"name": "Object-admin-pure",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev:mock": "vite --mode mock",
|
||||
"dev": "vite --open --mode mock",
|
||||
"dev:linux": "vite --mode release",
|
||||
"dev:pro": "vite --mode development",
|
||||
"build:test": "vite build --mode test",
|
||||
"build:mock": "vite build --mode mock",
|
||||
"build:dev": "vite build --mode development",
|
||||
"build": "vue-tsc --noEmit && vite build --mode release",
|
||||
"preview": "vite preview",
|
||||
"lint": "eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0",
|
||||
"lint:fix": "eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",
|
||||
"stylelint": "stylelint src/**/*.{html,vue,sass,less}",
|
||||
"stylelint:fix": "stylelint --fix src/**/*.{html,vue,vss,sass,less}",
|
||||
"prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || is-ci || husky install",
|
||||
"site:preview": "npm run build && cp -r dist _site",
|
||||
"test": "echo \"no test specified,work in process\"",
|
||||
"test:coverage": "echo \"no test:coverage specified,work in process\""
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.1.3",
|
||||
"dayjs": "^1.10.6",
|
||||
"default-passive-events": "^2.0.0",
|
||||
"echarts": "^5.4.1",
|
||||
"lodash": "^4.17.21",
|
||||
"moment": "^2.29.4",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.11",
|
||||
"pinia-plugin-persistedstate": "^3.0.1",
|
||||
"qrcode.vue": "^3.2.2",
|
||||
"qs": "^6.10.5",
|
||||
"tdesign-icons-vue-next": "^0.1.1",
|
||||
"tdesign-vue-next": "^0.25.0",
|
||||
"tvision-color": "^1.3.1",
|
||||
"vue": "^3.2.31",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-router": "~4.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^17.0.3",
|
||||
"@commitlint/config-conventional": "^17.0.3",
|
||||
"@types/echarts": "^4.9.10",
|
||||
"@types/lodash": "^4.14.182",
|
||||
"@types/qs": "^6.9.7",
|
||||
"@types/ws": "^8.2.2",
|
||||
"@typescript-eslint/eslint-plugin": "^4.29.3",
|
||||
"@typescript-eslint/parser": "^4.29.3",
|
||||
"@vitejs/plugin-vue": "^2.3.1",
|
||||
"@vitejs/plugin-vue-jsx": "^1.1.7",
|
||||
"@vue/compiler-sfc": "^3.0.5",
|
||||
"@vue/eslint-config-typescript": "^11.0.0",
|
||||
"commitizen": "^4.2.4",
|
||||
"cz-conventional-changelog": "^3.3.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-airbnb-base": "^14.2.1",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-import": "^2.24.1",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"eslint-plugin-vue": "^9.2.0",
|
||||
"eslint-plugin-vue-scoped-css": "^2.2.0",
|
||||
"husky": "^7.0.4",
|
||||
"less": "^4.1.1",
|
||||
"lint-staged": "^12.1.2",
|
||||
"mockjs": "^1.1.0",
|
||||
"prettier": "^2.4.1",
|
||||
"stylelint": "~13.13.1",
|
||||
"stylelint-config-prettier": "~9.0.3",
|
||||
"stylelint-less": "^1.0.6",
|
||||
"stylelint-order": "~4.1.0",
|
||||
"typescript": "~4.8.4",
|
||||
"vite": "^2.7.1",
|
||||
"vite-plugin-mock": "^2.9.6",
|
||||
"vite-svg-loader": "^3.1.0",
|
||||
"vue-tsc": "^1.0.8"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "./node_modules/cz-conventional-changelog"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,vue,ts,tsx}": [
|
||||
"prettier --write",
|
||||
"npm run lint:fix",
|
||||
"git add ."
|
||||
],
|
||||
"*.{html,vue,vss,sass,less}": [
|
||||
"npm run stylelint:fix",
|
||||
"git add ."
|
||||
]
|
||||
},
|
||||
"description": "yldj"
|
||||
}
|
||||
5928
pnpm-lock.yaml
generated
Normal file
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/logo.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
33
src/App.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<router-view :class="[mode]" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, watch} from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useSettingStore } from '@/store'
|
||||
|
||||
const route = useRoute()
|
||||
const store = useSettingStore()
|
||||
const mode = computed(() => {
|
||||
return store.displayMode
|
||||
})
|
||||
// 监听路由变化
|
||||
watch(
|
||||
() => route.path,
|
||||
() => {
|
||||
const { back } = window.history.state
|
||||
if (!back) return
|
||||
// 其中从登录页跳转之后的api也需要保留
|
||||
if (back.indexOf('/login?') === -1) {
|
||||
store.clearRequestList()
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#nprogress .bar {
|
||||
background: var(--td-brand-color) !important;
|
||||
}
|
||||
</style>
|
||||
34
src/api/coupon.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { request } from '@/utils/request'
|
||||
// 运营端分页查询活动优惠券
|
||||
export function getCouponList(data) {
|
||||
return request.get({
|
||||
url: '/market/operation/activity/page',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 根据活动id查询活动优惠券领取记录
|
||||
export function getCouponRecordList(data) {
|
||||
return request.get({
|
||||
url: '/market/operation/coupon/page',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 活动保存
|
||||
export function saveCoupon(data) {
|
||||
return request.post({
|
||||
url: '/market/operation/activity/save',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 查询活动详情
|
||||
export function getCouponDetail(id) {
|
||||
return request.get({
|
||||
url: '/market/operation/activity/' + id,
|
||||
})
|
||||
}
|
||||
// 活动撤销,即删除优惠券
|
||||
export function deleteCoupon(id) {
|
||||
return request.post({
|
||||
url: '/market/operation/activity/revoke/' + id,
|
||||
})
|
||||
}
|
||||
17
src/api/custom.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type { customListRequest, customFreezeRequest } from '@/api/model/customModel'
|
||||
|
||||
// 普通用户分页查询
|
||||
export function getCustomList(data: customListRequest) {
|
||||
return request.get({
|
||||
url: '/customer/operation/common-user/page',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 冻结/解冻
|
||||
export function customFreeze(data: customFreezeRequest) {
|
||||
return request.put({
|
||||
url: '/customer/operation/common-user/updateStatus',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
23
src/api/detail.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type { ListResult } from '@/api/model/listModel'
|
||||
|
||||
export function getProjectList() {
|
||||
return request.get<ListResult>({
|
||||
url: '/get-detail-list'
|
||||
})
|
||||
}
|
||||
// 首页数据
|
||||
export function getDashBoardData(params) {
|
||||
return request.get({
|
||||
url: '/orders-history/operation/orders-statistics/homePage',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 导出统计数据
|
||||
export function exportStatisticsData(params) {
|
||||
return request.get({
|
||||
url: '/orders-history/operation/orders-statistics/downloadStatistics',
|
||||
params,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
16
src/api/form.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type { FormStep, FormSteppassword } from '@/api/model/formModel'
|
||||
// 分布式表单提交
|
||||
export function addList(params: FormStep) {
|
||||
return request.post<FormStep>({
|
||||
url: '/form/step',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
// 密码验证
|
||||
export function validatePassword(params: FormSteppassword) {
|
||||
return request.post<FormSteppassword>({
|
||||
url: '/validate-password',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
79
src/api/list.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type {
|
||||
CardListResult,
|
||||
ListResult,
|
||||
addListParams,
|
||||
deleteListParams,
|
||||
ListCollapseResult,
|
||||
ListTransferModel,
|
||||
ListCardsortResult
|
||||
} from '@/api/model/listModel'
|
||||
|
||||
export function getList() {
|
||||
return request.get<ListResult>({
|
||||
url: '/get-list'
|
||||
})
|
||||
}
|
||||
|
||||
export function getCardList() {
|
||||
return request.get<CardListResult>({
|
||||
url: '/get-card-list'
|
||||
})
|
||||
}
|
||||
// 新增和编辑基础列表的数据
|
||||
export function addList(params: addListParams) {
|
||||
return request.post<addListParams>({
|
||||
url: '/list-basic/add',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
// 删除基础列表的数据
|
||||
export function deleteList(params: deleteListParams) {
|
||||
return request.post<deleteListParams>({
|
||||
url: '/list-basic/delete',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
// 折叠列表数据
|
||||
export function getCollapseList() {
|
||||
return request.get<ListCollapseResult>({
|
||||
url: '/get-collapse-list'
|
||||
})
|
||||
}
|
||||
|
||||
// 穿梭框数据
|
||||
export function getTransferList() {
|
||||
return request.get<ListTransferModel>({
|
||||
url: '/get-transfer-list'
|
||||
})
|
||||
}
|
||||
// 卡片数据
|
||||
export function getcardSortList() {
|
||||
return request.get<ListCardsortResult>({
|
||||
url: '/get-cardsort-list'
|
||||
})
|
||||
}
|
||||
// 列表弹层例表数据
|
||||
export function getDialogList() {
|
||||
return request.get<ListCardsortResult>({
|
||||
url: '/get-dialog-list'
|
||||
})
|
||||
}
|
||||
// 树形列表数据
|
||||
export function getTreeList() {
|
||||
return request.get<ListCardsortResult>({
|
||||
url: '/get-tree-list'
|
||||
})
|
||||
}
|
||||
// 下拉列表数据
|
||||
export function getSelectList() {
|
||||
return request.get<ListCardsortResult>({
|
||||
url: '/get-select'
|
||||
})
|
||||
}
|
||||
// 带tab的列表
|
||||
export function getTabList() {
|
||||
return request.get<ListCardsortResult>({
|
||||
url: '/get-tab-list'
|
||||
})
|
||||
}
|
||||
14
src/api/model/customModel.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
export interface customListRequest {
|
||||
page: number
|
||||
pageSize: number
|
||||
orderBy1: string
|
||||
isAsc1: boolean
|
||||
nickName?: string
|
||||
phone?: string
|
||||
}
|
||||
// 冻结/解冻
|
||||
export interface customFreezeRequest {
|
||||
id: string
|
||||
status: number
|
||||
accountLockReason?: string
|
||||
}
|
||||
23
src/api/model/detailModel.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
export interface PurchaseListResult {
|
||||
list: Array<PurchaseInfo>
|
||||
}
|
||||
export interface PurchaseInfo {
|
||||
adminName: string
|
||||
index: string
|
||||
pdName: string
|
||||
pdNum: string
|
||||
pdType: string
|
||||
purchaseNum: number
|
||||
updateTime: Date
|
||||
}
|
||||
|
||||
export interface ProjectListResult {
|
||||
list: Array<ProjectInfo>
|
||||
}
|
||||
export interface ProjectInfo {
|
||||
adminName: string
|
||||
adminPhone: string
|
||||
index: number
|
||||
name: string
|
||||
updateTime: Date
|
||||
}
|
||||
12
src/api/model/formModel.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
// 提交分布式表单的数据
|
||||
export interface FormStep {
|
||||
name: string
|
||||
type: string
|
||||
account: string
|
||||
payAccount: string
|
||||
amount: string
|
||||
}
|
||||
// 密码验证
|
||||
export interface FormSteppassword {
|
||||
password: string
|
||||
}
|
||||
86
src/api/model/listModel.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
export interface ListResult {
|
||||
data: any[]
|
||||
list: Array<ListModel>
|
||||
}
|
||||
export interface ListModel {
|
||||
adminName: string
|
||||
amount: string
|
||||
contractType: number
|
||||
index: number
|
||||
name: string
|
||||
no: string
|
||||
paymentType: number
|
||||
status: number
|
||||
updateTime: Date
|
||||
}
|
||||
|
||||
export interface CardListResult {
|
||||
data: any
|
||||
[x: string]: any
|
||||
list: Array<CardList>
|
||||
}
|
||||
export interface CardList {
|
||||
banner: string
|
||||
description: string
|
||||
index: number
|
||||
isSetup: boolean
|
||||
name: string
|
||||
type: number
|
||||
}
|
||||
// 新增和编辑基础列表的数据
|
||||
export interface addListParams {
|
||||
index: number
|
||||
description: string
|
||||
serviceCallNumber: number
|
||||
status: number
|
||||
updateTime: Date
|
||||
}
|
||||
// 删除基础列表的数据
|
||||
export interface deleteListParams {
|
||||
index: number
|
||||
}
|
||||
// 折叠树列表
|
||||
export interface ListCollapseResult {
|
||||
data: any[]
|
||||
list: Array<ListCollapseModel>
|
||||
}
|
||||
export interface ListCollapseModel {
|
||||
index: number
|
||||
canUpdate: boolean
|
||||
name: string
|
||||
maxIndexOnShelf: number
|
||||
maxSectionIndexOnShelf: number
|
||||
id: string
|
||||
sections: [
|
||||
{
|
||||
index: number
|
||||
maxIndexOnShelf: number
|
||||
maxSectionIndexOnShelf: number
|
||||
name: string
|
||||
sort: number
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
// 穿梭框
|
||||
export interface ListTransferResult {
|
||||
data: any[]
|
||||
list: Array<ListTransferModel>
|
||||
}
|
||||
export interface ListTransferModel {
|
||||
name: string
|
||||
id: string
|
||||
}
|
||||
// 卡片带排序
|
||||
export interface ListCardsortResult {
|
||||
data: any[]
|
||||
list: Array<ListCardsortModel>
|
||||
}
|
||||
export interface ListCardsortModel {
|
||||
name: string
|
||||
id: string
|
||||
isShow: boolean
|
||||
introduce: string
|
||||
num: number
|
||||
phone: string
|
||||
}
|
||||
58
src/api/model/serviceModel.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
export interface serviceTypeResult {
|
||||
isAsc1: string
|
||||
isAsc2: string
|
||||
orderBy1: string
|
||||
orderBy2: string
|
||||
pageNo: number
|
||||
pageSize: number
|
||||
}
|
||||
export interface serviceTypeStatus {
|
||||
id: string
|
||||
flag: number
|
||||
}
|
||||
export interface serviceTypeAdd {
|
||||
img: string
|
||||
serveTypeIcon: string
|
||||
name: string
|
||||
sortNum: number
|
||||
}
|
||||
export interface serviceTypeItemList {
|
||||
isAsc1: string
|
||||
isAsc2: string
|
||||
orderBy1: string
|
||||
orderBy2: string
|
||||
pageNo: number
|
||||
pageSize: number
|
||||
name: string
|
||||
serveTypeId: string
|
||||
}
|
||||
export interface serviceItemTypeAdd {
|
||||
serveTypeId: string
|
||||
img: string
|
||||
description: string
|
||||
referencePrice: string
|
||||
unit: string
|
||||
serveItemIcon: string
|
||||
detailImg: string
|
||||
name: string
|
||||
sortNum: string
|
||||
}
|
||||
export interface regionTypeAdd {
|
||||
cityCode: string
|
||||
name: string
|
||||
managerName: string
|
||||
managerPhone: string
|
||||
}
|
||||
export interface regionTypeEdit {
|
||||
managerName: string
|
||||
managerPhone: string
|
||||
}
|
||||
export interface serviceListType {
|
||||
isAsc1: string
|
||||
isAsc2: string
|
||||
orderBy1: string
|
||||
orderBy2: string
|
||||
pageNo: number
|
||||
pageSize: number
|
||||
regionId: string
|
||||
}
|
||||
19
src/api/model/userModel.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
export interface loginResult {
|
||||
code: number
|
||||
msg: string
|
||||
data: string
|
||||
requestId: string
|
||||
}
|
||||
|
||||
export interface userInfoResult {
|
||||
code: number
|
||||
msg: string
|
||||
data: {
|
||||
icon: string
|
||||
id: string
|
||||
name: string
|
||||
roleName: string
|
||||
type: number
|
||||
requestId: string
|
||||
}
|
||||
}
|
||||
35
src/api/order.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { request } from '@/utils/request'
|
||||
|
||||
// 根据订单id查询
|
||||
export function getOrderById(id) {
|
||||
return request.get({
|
||||
url: '/orders-manager/operation/orders/aggregation/' + id
|
||||
})
|
||||
}
|
||||
// 订单分页查询
|
||||
export function getOrderList(value :any) {
|
||||
return request.get({
|
||||
url: '/orders-manager/operation/orders/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 订单退款
|
||||
export function refundOrder(value :any) {
|
||||
return request.put({
|
||||
url: '/orders-manager/operation/orders/cancel',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 历史订单分页查询
|
||||
export function getHistoryOrderList(value :any) {
|
||||
return request.get({
|
||||
url: '/orders-history/operation/orders/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 查询历史订单详情
|
||||
export function getHistoryOrderById(id) {
|
||||
return request.get({
|
||||
url: '/orders-history/operation/orders/' + id
|
||||
})
|
||||
}
|
||||
318
src/api/service.ts
Normal file
@@ -0,0 +1,318 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type {
|
||||
serviceTypeResult,
|
||||
serviceTypeStatus,
|
||||
serviceTypeAdd,
|
||||
serviceTypeItemList,
|
||||
serviceItemTypeAdd,
|
||||
regionTypeAdd,
|
||||
regionTypeEdit,
|
||||
serviceListType
|
||||
} from '@/api/model/serviceModel'
|
||||
|
||||
// 获取服务类型列表数据
|
||||
export function getServiceTypeList(value :serviceTypeResult) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/serve-type/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务类型启用
|
||||
export function serviceTypeActiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve-type/activate/${id}`,
|
||||
|
||||
})
|
||||
}
|
||||
// 服务类型禁用
|
||||
export function serviceTypeInactiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve-type/deactivate/${id}`,
|
||||
})
|
||||
}
|
||||
// 服务类型新增
|
||||
export function serviceTypeAdd(value :serviceTypeAdd) {
|
||||
return request.post({
|
||||
url: '/foundations/operation/serve-type',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 服务类型编辑
|
||||
export function serviceTypeEdit(value :serviceTypeAdd, id :string) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/serve-type/' + id,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 服务类型删除
|
||||
export function serviceTypeDelete(id :string) {
|
||||
return request.delete({
|
||||
url: '/foundations/operation/serve-type/' + id
|
||||
})
|
||||
}
|
||||
// 服务类型简略列表,用于下拉框
|
||||
export function serviceTypeSimpleList(val?) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/serve-type/queryServeTypeListByActiveStatus',
|
||||
params: val
|
||||
})
|
||||
}
|
||||
// 分页查询服务项
|
||||
export function serviceItemList(value :serviceTypeItemList) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/serve-item/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务项启用
|
||||
export function serviceItemActivateStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve-item/activate/${id}`,
|
||||
})
|
||||
}
|
||||
// 服务项禁用
|
||||
export function serviceItemDeactivateStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve-item/deactivate/${id}`,
|
||||
})
|
||||
}
|
||||
// 服务项新增
|
||||
export function serviceItemAdd(value :serviceItemTypeAdd) {
|
||||
return request.post({
|
||||
url: '/foundations/operation/serve-item',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 服务项删除
|
||||
export function serviceItemDelete(id :string) {
|
||||
return request.delete({
|
||||
url: '/foundations/operation/serve-item/' + id
|
||||
})
|
||||
}
|
||||
|
||||
// 根据id查询服务项
|
||||
export function serviceItemById(id :string) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/serve-item/' + id
|
||||
})
|
||||
}
|
||||
// 服务项编辑
|
||||
export function serviceItemEdit(value :serviceItemTypeAdd, id) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/serve-item/' + id,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 区域分页查询
|
||||
export function regionList(value :serviceTypeResult) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/region/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 区域新增
|
||||
export function regionAdd(value :regionTypeAdd) {
|
||||
return request.post({
|
||||
url: '/foundations/operation/region',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 区域编辑
|
||||
export function regionEdit(value :regionTypeEdit, id :string) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/region/' + id + '?' + 'managerName=' + value.managerName + '&' + 'managerPhone=' + value.managerPhone,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 区域删除
|
||||
export function regionDelete(id :string) {
|
||||
return request.delete({
|
||||
url: '/foundations/operation/region/' + id
|
||||
})
|
||||
}
|
||||
// 根据id查询区域
|
||||
export function regionById(id) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/region/' + id
|
||||
})
|
||||
}
|
||||
// 服务分页查询
|
||||
export function serviceList(value :serviceListType) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/serve/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务批量新增
|
||||
export function serviceAdd(value) {
|
||||
return request.post({
|
||||
url: '/foundations/operation/serve/batch',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 服务编辑(只有价格)
|
||||
export function serviceEdit(value) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/serve/' + value.id + '?' + 'price=' + value.price,
|
||||
})
|
||||
}
|
||||
// 区域服务设置热门
|
||||
export function serviceOnHot(id) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/serve/onHot/' + id,
|
||||
})
|
||||
}
|
||||
// 区域服务取消热门
|
||||
export function serviceOffHot(id) {
|
||||
return request.put({
|
||||
url: '/foundations/operation/serve/offHot/' + id,
|
||||
})
|
||||
}
|
||||
// 服务启用
|
||||
export function serviceActiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve/onSale/${id}`,
|
||||
})
|
||||
}
|
||||
// 服务禁用
|
||||
export function serviceInactiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/serve/offSale/${id}`,
|
||||
})
|
||||
}
|
||||
// 服务删除
|
||||
export function serviceDelete(id) {
|
||||
return request.delete({
|
||||
url: '/foundations/operation/serve/' + id
|
||||
})
|
||||
}
|
||||
// 接口名称:机构分页查询
|
||||
export function serviceInstitutionList(value) {
|
||||
return request.get({
|
||||
url: '/customer/operation/serve-provider/pageQueryAgency',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务人员分页查询
|
||||
export function servicePersonList(value) {
|
||||
return request.get({
|
||||
url: '/customer/operation/serve-provider/pageQueryWorker',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务人员、机构详情
|
||||
export function servicePersonDetail(id) {
|
||||
return request.get({
|
||||
url: '/customer/operation/serve-provider/basicInformation/' + id
|
||||
})
|
||||
}
|
||||
// 服务人员、机构冻结/解冻
|
||||
export function servicePersonStatus(value) {
|
||||
return request.put({
|
||||
url: '/customer/operation/serve-provider/updateStatus',
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 机构下属服务人员相关接口分页查询
|
||||
export function servicePersonItemList(value) {
|
||||
return request.get({
|
||||
url: '/customer/operation/institution-staff/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 根据id查询调度配置
|
||||
export function servicePersonItemById(id) {
|
||||
return request.get({
|
||||
url: '/foundations/operation/config-region/' + id
|
||||
})
|
||||
}
|
||||
// 更新调度配置
|
||||
export function servicePersonItemEdit(value) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/config-region/${value.id}`,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 区域启用
|
||||
export function regionActiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/region/activate/${id}`,
|
||||
})
|
||||
}
|
||||
// 区域禁用
|
||||
export function regionInactiveStatus(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/region/deactivate/${id}`,
|
||||
})
|
||||
}
|
||||
// 已开通服务区域列表
|
||||
export function regionOpenList() {
|
||||
return request.get({
|
||||
url: '/foundations/operation/region/activeRegionList',
|
||||
})
|
||||
}
|
||||
// 刷新区域相关缓存
|
||||
export function regionRefreshCache(id) {
|
||||
return request.put({
|
||||
url: `/foundations/operation/region/refreshRegionRelateCaches/${id}`,
|
||||
})
|
||||
}
|
||||
// 机构认真审核信息分页查询
|
||||
export function serviceInstitutionAuditList(value) {
|
||||
return request.get({
|
||||
url: '/customer/operation/agency-certification-audit/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 服务人员认证审核信息分页查询
|
||||
export function servicePersonAuditList(value) {
|
||||
return request.get({
|
||||
url: '/customer/operation/worker-certification-audit/page',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
// 审核机构认证信息
|
||||
export function serviceInstitutionAudit(value, id) {
|
||||
return request.put({
|
||||
url: '/customer/operation/agency-certification-audit/audit/' + id + '?' + 'rejectReason='+ value.rejectReason + '&' + 'certificationStatus=' + value.certificationStatus,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 审核服务人员认证信息
|
||||
export function servicePersonAudit(value, id) {
|
||||
return request.put({
|
||||
url: '/customer/operation/worker-certification-audit/audit/' + id + '?' + 'rejectReason='+ value.rejectReason + '&' + 'certificationStatus=' + value.certificationStatus,
|
||||
data: value
|
||||
})
|
||||
}
|
||||
// 根据机构id查询认证信息
|
||||
export function serviceInstitutionAuditDetail(id) {
|
||||
return request.get({
|
||||
url: '/customer/operation/agency-certification/' + id
|
||||
})
|
||||
}
|
||||
// 根据服务人员id查询认证信息
|
||||
export function servicePersonAuditDetail(id) {
|
||||
return request.get({
|
||||
url: '/customer/operation/worker-certification/' + id
|
||||
})
|
||||
}
|
||||
// 根据服务人员/机构id查询银行账户信息
|
||||
export function servicePersonBankDetail(id) {
|
||||
return request.get({
|
||||
url: '/customer/operation/bank-account/' + id
|
||||
})
|
||||
}
|
||||
// 获取评价系统token
|
||||
export function serviceToken() {
|
||||
return request.get({
|
||||
url: '/customer/operation/evaluation/token'
|
||||
})
|
||||
}
|
||||
// 查询服务人员/机构服务数据
|
||||
export function servicePersonData(value) {
|
||||
return request.get({
|
||||
url: '/orders-manager/operation/ordersServe/pageQueryByServeProvider',
|
||||
params: value
|
||||
})
|
||||
}
|
||||
38
src/api/user.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { request } from '@/utils/request'
|
||||
import type { loginResult, userInfoResult } from '@/api/model/userModel'
|
||||
|
||||
// 登录
|
||||
// 账号登录
|
||||
export const userLogins = (params) =>
|
||||
request.post<loginResult>({
|
||||
url: `/foundations/open/login`,
|
||||
data: params
|
||||
})
|
||||
// 获取用户信息
|
||||
export const getUserInfo = () =>
|
||||
request.get<userInfoResult>({
|
||||
url: `/users/me`
|
||||
})
|
||||
|
||||
// 注册
|
||||
export function register() {
|
||||
return request.post<any>({
|
||||
url: '/login'
|
||||
})
|
||||
}
|
||||
// 个人中心
|
||||
export function getpersonal() {
|
||||
return request.get<any>({
|
||||
url: '/get-personal?test=1&name=2',
|
||||
params: {
|
||||
c: 3
|
||||
}
|
||||
})
|
||||
}
|
||||
// 修改个人信息
|
||||
export function updatepersonal(params) {
|
||||
return request.post<any>({
|
||||
url: '/update-personal',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
13
src/assets/assets-setting-auto.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="88" height="48" viewBox="0 0 88 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 0H88V48H0V0Z" fill="var(--td-component-border)"/>
|
||||
<path d="M42.8627 14.0518V16.7601H44.4877V14.0518H42.8627Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.3488 23.9824C38.3488 21.0407 40.7335 18.656 43.6752 18.656C46.6168 18.656 49.0015 21.0407 49.0015 23.9824C49.0015 26.9241 46.6168 29.3088 43.6752 29.3088C40.7335 29.3088 38.3488 26.9241 38.3488 23.9824ZM43.6752 20.281C41.6309 20.281 39.9738 21.9382 39.9738 23.9824C39.9738 26.0266 41.6309 27.6838 43.6752 27.6838C45.7194 27.6838 47.3766 26.0266 47.3766 23.9824C47.3766 21.9382 45.7194 20.281 43.6752 20.281Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.208 26.781H49.5867L47.5262 33.48L49.0794 33.9577L49.5903 32.2968H52.2045L52.7154 33.9577L54.2686 33.48L52.208 26.781ZM51.7047 30.6718L51.0077 28.406H50.787L50.0901 30.6718H51.7047Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M48.2077 18.3009L50.1225 16.3861L51.2715 17.5351L49.3567 19.4499L48.2077 18.3009Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M53.6057 23.1699H50.8974V24.7949H53.6057V23.1699Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M44.4877 31.2045V33.9129H42.8627V31.2045H44.4877Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M37.2279 31.5786L39.1427 29.6638L37.9936 28.5147L36.0788 30.4295L37.2279 31.5786Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M36.453 24.7949H33.7446V23.1699H36.453V24.7949Z" fill="var(--td-text-color-primary)"/>
|
||||
<path d="M36.0788 17.5351L37.9936 19.4499L39.1427 18.3009L37.2279 16.3861L36.0788 17.5351Z" fill="var(--td-text-color-primary)"/>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
5
src/assets/assets-setting-dark.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="88" height="48" viewBox="0 0 88 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 0H88V48H0V0Z" fill="#13161B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.5327 26.8699C52.0346 26.9554 51.5225 26.9999 51 26.9999C46.0294 26.9999 42 22.9705 42 17.9999C42 16.9964 42.1642 16.0313 42.4673 15.1299C38.2268 15.8574 35 19.5518 35 23.9999C35 28.9705 39.0294 32.9999 44 32.9999C47.9671 32.9999 51.3346 30.4332 52.5327 26.8699Z" fill="#949EAA"/>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 495 B |
13
src/assets/assets-setting-light.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="88" height="48" viewBox="0 0 88 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="88" height="48" fill="var(--td-component-border)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M43.9999 20.583C42.1129 20.583 40.5832 22.1127 40.5832 23.9997C40.5832 25.8867 42.1129 27.4163 43.9999 27.4163C45.8869 27.4163 47.4166 25.8867 47.4166 23.9997C47.4166 22.1127 45.8869 20.583 43.9999 20.583ZM39.0832 23.9997C39.0832 21.2843 41.2845 19.083 43.9999 19.083C46.7153 19.083 48.9166 21.2843 48.9166 23.9997C48.9166 26.7151 46.7153 28.9163 43.9999 28.9163C41.2845 28.9163 39.0832 26.7151 39.0832 23.9997Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M43.2499 17.333V14.833H44.7499V17.333H43.2499Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.1838 18.7552L49.9513 16.9877L51.0119 18.0483L49.2444 19.8158L48.1838 18.7552Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M50.6666 23.2497H53.1666V24.7497H50.6666V23.2497Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M49.2444 28.1835L51.0119 29.951L49.9513 31.0117L48.1838 29.2442L49.2444 28.1835Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.7499 30.6663V33.1663H43.2499V30.6663H44.7499Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M39.8162 29.2442L38.0487 31.0117L36.988 29.951L38.7555 28.1835L39.8162 29.2442Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M37.3333 24.7497H34.8333V23.2497H37.3333V24.7497Z" fill="var(--td-text-color-primary)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.7555 19.8158L36.988 18.0483L38.0487 16.9877L39.8162 18.7552L38.7555 19.8158Z" fill="var(--td-text-color-primary)"/>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/btn_clean.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/btn_delete_hover.png
Normal file
|
After Width: | Height: | Size: 837 B |
BIN
src/assets/btn_delete_nor.png
Normal file
|
After Width: | Height: | Size: 690 B |
BIN
src/assets/btn_pinglun_hover.png
Normal file
|
After Width: | Height: | Size: 847 B |
BIN
src/assets/btn_pinglun_nor.png
Normal file
|
After Width: | Height: | Size: 692 B |
BIN
src/assets/btn_shuaxin@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/btn_tuijian_nor.png
Normal file
|
After Width: | Height: | Size: 746 B |
BIN
src/assets/btn_zan_nor@3x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/btn_zhiding_nor.png
Normal file
|
After Width: | Height: | Size: 736 B |
BIN
src/assets/default/404@2x.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
src/assets/default/500@2x.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
src/assets/default/duanwang@2x.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
src/assets/default/noAuthority@2x.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
src/assets/default/wuwang@2x.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
src/assets/default/zwnr@2x.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
src/assets/goBack.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
src/assets/head@3x.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
3
src/assets/icon-fangda.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21" class="design-iconfont">
|
||||
<path d="M13.2971372,12.785904 L11.4470136,10.9342883 C11.8677675,10.4374406 12.2094436,9.88389559 12.4645816,9.28111339 C12.8002895,8.48585865 12.9718735,7.64136675 12.9718735,6.77151026 C12.9718735,5.90165376 12.8017815,5.05716186 12.4645816,4.26190712 C12.1393179,3.49350902 11.675295,2.80568081 11.082957,2.21334285 C10.4906191,1.6210049 9.80279086,1.15698196 9.03439275,0.8317183 C8.23913802,0.497502425 7.39464612,0.327410417 6.52478962,0.327410417 C5.65493313,0.327410417 4.81044123,0.497502425 4.01518649,0.83470237 C3.24678838,1.15996603 2.55896018,1.62398897 1.96662222,2.21632692 C1.37428426,2.80866488 0.910261329,3.49649309 0.584997664,4.26489119 C0.249289754,5.0586539 0.0791977464,5.9031458 0.0791977464,6.77300229 C0.0791977464,7.64285879 0.249289754,8.48735069 0.5864897,9.28260542 C0.911753364,10.0510035 1.3757763,10.7388317 1.96811425,11.3311697 C2.56045221,11.9235077 3.24828042,12.3875306 4.01667852,12.7127942 C4.81193326,13.0485022 5.65642516,13.2200862 6.52628166,13.2200862 C7.39613815,13.2200862 8.24063005,13.0499942 9.03588479,12.7127942 C9.63866699,12.4576562 10.192212,12.1159802 10.6890597,11.6952263 L12.5376913,13.5453499 C12.7465762,13.7542348 13.0882523,13.7542348 13.2971372,13.5453499 C13.5060221,13.3364649 13.5060221,12.9947889 13.2971372,12.785904 Z M6.52478962,12.1443289 C3.55862373,12.1443289 1.15346306,9.73916818 1.15346306,6.77300229 C1.15346306,3.8068364 3.55862373,1.40167573 6.52478962,1.40167573 C9.49095551,1.40167573 11.8961162,3.8068364 11.8961162,6.77300229 C11.8961162,9.73916818 9.49095551,12.1443289 6.52478962,12.1443289 Z M8.73300165,6.23586964 L7.06192228,6.23586964 L7.06192228,4.56479026 C7.06192228,4.2693673 6.82021258,4.0276576 6.52478962,4.0276576 C6.22936666,4.0276576 5.98765697,4.2693673 5.98765697,4.56479026 L5.98765697,6.23586964 L4.31657759,6.23586964 C4.02115463,6.23586964 3.77944493,6.47757933 3.77944493,6.77300229 C3.77944493,7.06842525 4.02115463,7.31013495 4.31657759,7.31013495 L5.98765697,7.31013495 L5.98765697,8.98121432 C5.98765697,9.27663728 6.22936666,9.51834698 6.52478962,9.51834698 C6.82021258,9.51834698 7.06192228,9.27663728 7.06192228,8.98121432 L7.06192228,7.31013495 L8.73300165,7.31013495 C9.02842461,7.31013495 9.27013431,7.06842525 9.27013431,6.77300229 C9.27013431,6.47757933 9.02842461,6.23586964 8.73300165,6.23586964 Z" transform="translate(3.5 3.713007)" fill="#FFF" fill-rule="nonzero"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src/assets/icon-shangjia1.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
src/assets/icon-shangjia2.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/icon-shangjia3.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/assets/icon-shangjia4.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/icon-shangjia5.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/assets/icon-shangjia6.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
1
src/assets/icon-ztsx-hover.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1676535511802" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1408" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M428.520238 1022.464034c-31.231313 0-62.769819-23.756277-62.769819-76.798311v-453.62202L24.561126 115.527186A97.789849 97.789849 0 0 1 3.569587 81.326339 59.493091 59.493091 0 0 1 4.900758 37.704898 59.595489 59.595489 0 0 1 36.439264 7.395165 97.789849 97.789849 0 0 1 75.759999 0.022528H948.291204c15.052469 0 28.261778 2.457546 39.320734 7.372637 14.642878 6.34866 25.599437 16.895628 31.538507 30.309733 5.939069 13.311707 6.34866 28.466574 1.33117 43.621441a97.789849 97.789849 0 0 1-20.991538 34.09845L658.505579 492.146101V764.933699c0 51.506067-30.00254 115.197466-69.835264 147.862347l-106.493657 87.75487c-17.612413 14.438082-35.634416 21.81072-53.554022 21.81072z" fill="#0061fd" p-id="1409"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
1
src/assets/icon-ztsx.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1674975302863" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1499" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M428.520238 1022.464034c-31.231313 0-62.769819-23.756277-62.769819-76.798311v-453.62202L24.561126 115.527186A97.789849 97.789849 0 0 1 3.569587 81.326339 59.493091 59.493091 0 0 1 4.900758 37.704898 59.595489 59.595489 0 0 1 36.439264 7.395165 97.789849 97.789849 0 0 1 75.759999 0.022528H948.291204c15.052469 0 28.261778 2.457546 39.320734 7.372637 14.642878 6.34866 25.599437 16.895628 31.538507 30.309733 5.939069 13.311707 6.34866 28.466574 1.33117 43.621441a97.789849 97.789849 0 0 1-20.991538 34.09845L658.505579 492.146101V764.933699c0 51.506067-30.00254 115.197466-69.835264 147.862347l-106.493657 87.75487c-17.612413 14.438082-35.634416 21.81072-53.554022 21.81072z" fill="#000000" fill-opacity=".25" p-id="1500"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/icon_beizhu@2x.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/icon_beizhu_sel@2x.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
8
src/assets/icon_dingdan.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" class="design-iconfont">
|
||||
<g transform="translate(.75 .5)" stroke="#191919" fill="none" fill-rule="evenodd">
|
||||
<rect x="2.61764706" y="1.68764706" width="12.7647059" height="14.6247059" rx="2"/>
|
||||
<path stroke-linecap="square" d="M5.80882353 6.15294347L12.1911765 6.15294347"/>
|
||||
<path stroke-linecap="square" d="M5.80882353 9L12.1911765 9"/>
|
||||
<path stroke-linecap="square" d="M5.80882353 11.8470565L9.94025735 11.8470565"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 509 B |
8
src/assets/icon_fuwu.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" class="design-iconfont">
|
||||
<g stroke="#F74346" stroke-linejoin="round" fill="none" fill-rule="evenodd">
|
||||
<path d="M2.9170943 2.9170943H8V8H2.9170943z" transform="translate(.75)"/>
|
||||
<path d="M2.9170943 10H8V15.082905700000001H2.9170943z" transform="translate(.75)"/>
|
||||
<path d="M10 2.9170943H15.082905700000001V8H10z" transform="translate(.75)"/>
|
||||
<path d="M10 10H15.082905700000001V15.082905700000001H10z" transform="translate(.75)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 520 B |
9
src/assets/icon_kehu.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" class="design-iconfont">
|
||||
<g stroke="#191919" fill="none" fill-rule="evenodd">
|
||||
<path d="M4.87669884 0A3 3 0 1 0 4.87669884 6A3 3 0 1 0 4.87669884 0Z" transform="translate(2.878418 4.541453)"/>
|
||||
<path d="M9.75339769,10.8766988 C9.75339769,8.18337244 7.57002524,6 4.87669884,6 C2.18337244,6 0,8.18337244 0,10.8766988" stroke-linecap="round" transform="translate(2.878418 4.541453)"/>
|
||||
<path stroke-linecap="round" d="M10.9413209 6.75634766L13.3364122 6.75634766" transform="translate(2.878418 4.541453)"/>
|
||||
<path stroke-linecap="round" d="M9.75339769 4.46606445L13.3364122 4.46606445" transform="translate(2.878418 4.541453)"/>
|
||||
<path stroke-linecap="round" d="M12.1388665 9.04663086L13.3364122 9.04663086" transform="translate(2.878418 4.541453)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 839 B |
BIN
src/assets/icon_linjin@2x.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/icon_menu_tongzhi@2x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
7
src/assets/icon_qiye.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" class="design-iconfont">
|
||||
<g stroke="#191919" fill="none" fill-rule="evenodd">
|
||||
<path d="M9 2.64374075A3.03254732 3.03254732 0 1 0 9 8.70883539A3.03254732 3.03254732 0 1 0 9 2.64374075Z" transform="translate(.75 .703487)"/>
|
||||
<path stroke-linejoin="round" d="M8.09838387 8.70883538L9.90161613 8.70883538 10.9670817 12.0325473 7.03291828 12.0325473z" transform="translate(.75 .703487)"/>
|
||||
<path stroke-linejoin="round" d="M4.03451715 12.0325473L13.9654828 12.0325473 14.7636586 15.3562592 3.23634141 15.3562592z" transform="translate(.75 .703487)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 632 B |
6
src/assets/icon_quyu.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" class="design-iconfont">
|
||||
<g stroke="#191919" fill="none" fill-rule="evenodd">
|
||||
<path d="M9.00001153,2.08413535 C6.58053924,2.08413535 4.61252664,4.04292528 4.61252664,6.45037915 L4.61252664,6.45036984 C4.61044084,7.33670611 4.88123193,8.2022034 5.38812468,8.92928805 C5.4136003,8.97245506 5.43907593,9.01420689 5.46879748,9.05525112 L8.67165181,13.2573138 L8.67165183,13.2573138 C8.75463598,13.3518562 8.87420967,13.4062305 9.00000475,13.4066288 C9.12384493,13.4066288 9.24131523,13.3528469 9.34321798,13.2396222 L12.5305059,9.05453567 C12.5623505,9.01349156 12.5892414,8.96749393 12.6033946,8.94131059 L12.6033947,8.94131052 C13.114814,8.21170589 13.3886318,7.34206265 13.3874817,6.45106705 C13.3874817,4.04290829 11.4194893,2.08482325 9.00000527,2.08482325 L9.00001153,2.08413535 Z M9.00001153,8.01288367 L9.00001147,8.01288367 C8.13660301,8.01405392 7.43527982,7.31590112 7.43255424,6.45249383 C7.43255424,5.59269089 8.13596508,4.89281391 9.00001147,4.89281391 C9.86406021,4.89281391 10.5674687,5.59339343 10.5674687,6.45249383 L10.5674687,6.45249625 C10.5647356,7.31617844 9.86298407,8.01444357 8.99929482,8.01288367 L9.00001153,8.01288367 Z" transform="translate(.25 .042467)"/>
|
||||
<path d="M5.57741177,12.0752551 C3.83417,12.4466907 2.68010129,13.0935989 2.68010129,13.829492 C2.68010129,14.9817638 5.50961632,15.9158647 9,15.9158647 C12.4903837,15.9158647 15.3198987,14.9817638 15.3198987,13.829492 C15.3198987,13.0861286 14.1422804,12.4335659 12.369318,12.0640287" stroke-linecap="round" transform="translate(.25 .042467)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
8
src/assets/icon_renyuan.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" class="design-iconfont">
|
||||
<g fill="#191919" fill-rule="nonzero">
|
||||
<path d="M6.11504464,10.2855341 L6.11504463,10.2855341 C5.9880934,10.2855341 5.8662929,10.2353036 5.77625713,10.1458054 L3.63626453,8.0039145 L3.63626449,8.00391445 C3.45237872,7.81409755 3.4571852,7.51115208 3.64700146,7.3272663 C3.83256863,7.14749627 4.12733208,7.14749148 4.31290403,7.32725802 L6.45288067,9.46822372 L6.45288067,9.46822372 C6.63998885,9.65486608 6.64036533,9.95784984 6.45372328,10.1449564 C6.36397577,10.2349277 6.24212646,10.2855341 6.11504586,10.2855341 L6.11504464,10.2855341 Z" transform="translate(2.25 1.5)"/>
|
||||
<path d="M6.11504464,10.2855242 L6.11504464,10.2855242 C5.85076318,10.2854364 5.63657887,10.0711372 5.63664904,9.80685571 C5.63664904,9.68025623 5.68688309,9.55882823 5.7762573,9.46916415 L9.79585025,5.4495712 L9.79585024,5.44957121 C9.9859495,5.26597737 10.288887,5.27124966 10.4724824,5.46134791 C10.6515777,5.64678745 10.6515745,5.94077561 10.4724741,6.12621196 L6.45288116,10.145789 L6.45288116,10.145789 C6.36307957,10.2350713 6.24166082,10.28529 6.11502848,10.2855242 L6.11504464,10.2855242 Z" transform="translate(2.25 1.5)"/>
|
||||
<path d="M7.05293849,15.4535979 L7.0529385,15.4535979 C6.78815135,15.4503172 6.57615891,15.2330055 6.57940119,14.9682183 C6.58223841,14.7422531 6.74243634,14.5489171 6.96394443,14.5041752 C9.60824262,14.001744 12.5875587,10.7286392 12.7990407,8.74274747 L12.796165,3.356506 C9.67236731,2.94019266 6.90840961,1.10170344 6.7868677,1.02034581 L6.7868677,1.02034581 C6.57176772,0.866798934 6.52186997,0.567951173 6.67541669,0.352852787 C6.82272407,0.146493167 7.10541884,0.0908509351 7.31994453,0.225989614 C7.34960337,0.246102494 10.2686159,2.18316685 13.3167989,2.45112057 L13.3167989,2.45112057 C13.5637767,2.47294164 13.7532075,2.6797977 13.7532075,2.92773745 L13.7532075,8.79347841 C13.4746901,11.4425783 10.0168667,14.8965603 7.14384197,15.4440014 L7.14384202,15.4440014 C7.11389428,15.4499717 7.08346063,15.4531729 7.052926,15.4535979 L7.05293849,15.4535979 Z" transform="translate(2.25 1.5)"/>
|
||||
<path d="M7.05485279,15.4497667 L7.05485281,15.4497667 C7.02431562,15.4493098 6.99388101,15.4461091 6.96391955,15.4401904 C4.09091073,14.8946589 0.633100137,11.4378102 0.356516127,8.83846608 L0.354576306,2.92391055 C0.354576306,2.67508544 0.544066184,2.46835891 0.790984971,2.44729367 C3.84588391,2.17840673 6.75721057,0.241305683 6.78688218,0.221237469 L6.78688214,0.221237488 C7.01318395,0.0837218905 7.3081165,0.155697224 7.44563162,0.381998554 C7.57442041,0.593938349 7.52033451,0.869116945 7.32091166,1.01654653 C7.19936656,1.09788293 4.43541205,2.93543782 1.31161438,3.35173361 L1.31161438,8.78776276 C1.52022968,10.7238668 4.499541,13.9969637 7.14383919,14.50036 L7.1438392,14.50036 C7.40339554,14.5528342 7.57126821,14.8057844 7.51879414,15.0653408 C7.47402544,15.2867819 7.28074972,15.4469304 7.05484513,15.4497667 L7.05485279,15.4497667 Z" transform="translate(2.25 1.5)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/assets/icon_team_guanbi.png
Normal file
|
After Width: | Height: | Size: 460 B |
BIN
src/assets/icon_team_guanbi2.png
Normal file
|
After Width: | Height: | Size: 462 B |
BIN
src/assets/icon_zhuyi@2x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/img_denglu-bg@2x.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
src/assets/logBlackTem.png
Normal file
|
After Width: | Height: | Size: 546 B |
BIN
src/assets/logBlackTemFull.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |