@ -0,0 +1,10 @@ |
|||||
|
# port |
||||
|
VITE_PORT = 3301 |
||||
|
#mode |
||||
|
VITE_GLOB_APP_RUN_TYPE = saas |
||||
|
|
||||
|
# spa-title |
||||
|
VITE_GLOB_APP_TITLE = hx-ai-intelligent Depositor |
||||
|
|
||||
|
# spa shortname |
||||
|
VITE_GLOB_APP_SHORT_NAME = hx-ai-intelligent-depositor |
@ -0,0 +1,22 @@ |
|||||
|
# Whether to open mock |
||||
|
VITE_USE_MOCK = true |
||||
|
|
||||
|
# public path |
||||
|
VITE_PUBLIC_PATH = /hx-op/ |
||||
|
|
||||
|
# Cross-domain proxy, you can configure multiple |
||||
|
# Please note that no line breaks http://100.73.70.51 |
||||
|
|
||||
|
#VITE_PROXY = {"/community":{ "target":"http://100.73.70.51","changeOrigin": true,"prependPath":false},"/parking":{ "target":"http://100.73.70.246:8080","changeOrigin": true,"iprependPath":false}} |
||||
|
# VITE_PROXY=[["/api","http://100.73.70.51"],["/parking","http://100.73.70.246:8080"]] |
||||
|
# Delete console |
||||
|
VITE_DROP_CONSOLE = false |
||||
|
|
||||
|
# Basic interface address SPA |
||||
|
VITE_GLOB_API_URL=/basic-api |
||||
|
|
||||
|
# File upload address, optional |
||||
|
VITE_GLOB_UPLOAD_URL=/upload |
||||
|
|
||||
|
# Interface prefix |
||||
|
VITE_GLOB_API_URL_PREFIX= |
@ -0,0 +1,35 @@ |
|||||
|
# Whether to open mock |
||||
|
VITE_USE_MOCK = true |
||||
|
|
||||
|
# public path |
||||
|
VITE_PUBLIC_PATH = /hx-op/ |
||||
|
|
||||
|
# Delete console |
||||
|
VITE_DROP_CONSOLE = true |
||||
|
|
||||
|
# Whether to enable gzip or brotli compression |
||||
|
# Optional: gzip | brotli | none |
||||
|
# If you need multiple forms, you can use `,` to separate |
||||
|
VITE_BUILD_COMPRESS = 'none' |
||||
|
|
||||
|
# Whether to delete origin files when using compress, default false |
||||
|
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false |
||||
|
|
||||
|
# Basic interface address SPA |
||||
|
VITE_GLOB_API_URL=/basic-api |
||||
|
|
||||
|
# File upload address, optional |
||||
|
# It can be forwarded by nginx or write the actual address directly |
||||
|
VITE_GLOB_UPLOAD_URL=/upload |
||||
|
|
||||
|
# Interface prefix |
||||
|
VITE_GLOB_API_URL_PREFIX= |
||||
|
|
||||
|
# Whether to enable image compression |
||||
|
VITE_USE_IMAGEMIN= true |
||||
|
|
||||
|
# use pwa |
||||
|
VITE_USE_PWA = false |
||||
|
|
||||
|
# Is it compatible with older browsers |
||||
|
VITE_LEGACY = false |
@ -0,0 +1 @@ |
|||||
|
0.0.1 |
@ -0,0 +1,74 @@ |
|||||
|
#!/bin/bash |
||||
|
SOURCE="$0" |
||||
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink |
||||
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
||||
|
SOURCE="$(readlink "$SOURCE")" |
||||
|
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located |
||||
|
done |
||||
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
||||
|
|
||||
|
if [ -z $WORKSPACE ];then |
||||
|
echo "WORKSPACE not exists" |
||||
|
else |
||||
|
set DIR=$WORKSPACE |
||||
|
fi |
||||
|
|
||||
|
echo "current dir" |
||||
|
echo "$DIR" |
||||
|
|
||||
|
cd "$DIR" |
||||
|
projectname=$(basename `pwd`) |
||||
|
|
||||
|
npm run parking-build |
||||
|
|
||||
|
if [ -d "$DIR/dist" ];then |
||||
|
|
||||
|
cd "$DIR/dist" |
||||
|
|
||||
|
# copy module.json |
||||
|
cp ../module.json ./ |
||||
|
|
||||
|
# package |
||||
|
VERSION=$(cat ../.version) |
||||
|
lastdir=../release/ |
||||
|
if [ -d ${lastdir} ];then |
||||
|
echo "删除旧release文件夹" |
||||
|
rm -rf ${lastdir} |
||||
|
else |
||||
|
echo "文件夹不存在!" |
||||
|
fi |
||||
|
mkdir -p ${lastdir} |
||||
|
|
||||
|
dir=../release/nerv/$projectname/$VERSION |
||||
|
mkdir -p ${dir} |
||||
|
tar -zcvf "${dir}/$projectname-$VERSION.tgz" ./* |
||||
|
|
||||
|
templatedir=../release/resources/templates/nerv/$projectname/$VERSION/$projectname |
||||
|
mkdir -p ${templatedir} |
||||
|
cp -r ../resources/templates/* ${templatedir} |
||||
|
|
||||
|
cd ../ |
||||
|
|
||||
|
releasefile=nerv-$projectname-$VERSION.tgz |
||||
|
if [ -f ${releasefile} ];then |
||||
|
echo "删除旧包!" |
||||
|
rm -rf ${releasefile} |
||||
|
fi |
||||
|
|
||||
|
tar -zcvf ${releasefile} ./release/* release.yaml |
||||
|
|
||||
|
mkdir -p ./release/nervui |
||||
|
cp -r ./release/nerv/* ./release/nervui |
||||
|
|
||||
|
if [ -f ${releasefile} ];then |
||||
|
echo "编译成功!" |
||||
|
mv ${releasefile} ./release |
||||
|
else |
||||
|
echo "编译失败!!!" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
else |
||||
|
echo "编译失败!!!" |
||||
|
exit 1 |
||||
|
fi |
@ -0,0 +1,19 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8" /> |
||||
|
<link rel="icon" href="/favicon.ico" /> |
||||
|
<meta name="referrer" content="never" /> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
||||
|
<!-- <script type="text/javascript"> |
||||
|
window._AMapSecurityConfig = { |
||||
|
securityJsCode: '09e43004c09d39c0e61f8fd65d5e6a5a', |
||||
|
}; |
||||
|
</script> --> |
||||
|
<title>AI智能BAS系统</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div id="app"></div> |
||||
|
<script type="module" src="./src/main.ts"></script> |
||||
|
</body> |
||||
|
</html> |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 688 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 147 KiB |
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,12 @@ |
|||||
|
# 上传release目录信息到nerv-file仓库 |
||||
|
release: |
||||
|
- {src: release, dest: /upload/pkg, include: [".*(.tgz)$"]} |
||||
|
- {src: release/resources/templates, dest: /upload/templates} |
||||
|
register: |
||||
|
name: nervui-smart-parking |
||||
|
version: 2.1.19 |
||||
|
components: |
||||
|
- type: nervui-smart-parking |
||||
|
resources: |
||||
|
- {type: template, relativePath: /nervui-smart-parking/deploy.json} |
||||
|
|
@ -0,0 +1,35 @@ |
|||||
|
echo "=====================================================create=====================================================" |
||||
|
|
||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
function create() { |
||||
|
|
||||
|
if [ -d "$nervui_app_home" ];then |
||||
|
echo "$nervui_app_home exists!" |
||||
|
else |
||||
|
echo "start mkdir $nervui_app_home" |
||||
|
mkdir -p "$nervui_app_home" |
||||
|
fi |
||||
|
|
||||
|
pkg_file_name=${pkg_url##*/} |
||||
|
pkg_file_path="$nervui_app_home$pkg_file_name" |
||||
|
|
||||
|
|
||||
|
echo "start download $pkg_url" |
||||
|
curl -L -o $pkg_file_path $pkg_url |
||||
|
|
||||
|
|
||||
|
echo "start install $pkg_file_path" |
||||
|
tar -xf $pkg_file_path -C $nervui_app_home |
||||
|
|
||||
|
} |
||||
|
|
||||
|
if [ "$pkg_url" == "" ]; then |
||||
|
echo {\"error\":\"pkg_url is empty\"} |
||||
|
exit 1 |
||||
|
elif [ "$nervui_app_home" == "" ]; then |
||||
|
echo {\"error\":\"nervui_app_home is empty\"} |
||||
|
exit 1 |
||||
|
else |
||||
|
create |
||||
|
fi |
@ -0,0 +1 @@ |
|||||
|
echo "=====================================================delete=====================================================" |
@ -0,0 +1 @@ |
|||||
|
echo "=====================================================setup=====================================================" |
@ -0,0 +1 @@ |
|||||
|
echo "=====================================================start=====================================================" |
@ -0,0 +1 @@ |
|||||
|
echo "=====================================================stop=====================================================" |
@ -0,0 +1,30 @@ |
|||||
|
{ |
||||
|
"name": "/nervui/nervui-smart-parking-op", |
||||
|
"operations": [ |
||||
|
{ |
||||
|
"name": "Create", |
||||
|
"type": "shell", |
||||
|
"implementor": "create.sh" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "Delete", |
||||
|
"type": "shell", |
||||
|
"implementor": "delete.sh" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "Setup", |
||||
|
"type": "shell", |
||||
|
"implementor": "setup.sh" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "Start", |
||||
|
"type": "shell", |
||||
|
"implementor": "start.sh" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "Stop", |
||||
|
"type": "shell", |
||||
|
"implementor": "stop.sh" |
||||
|
} |
||||
|
] |
||||
|
} |
@ -0,0 +1,64 @@ |
|||||
|
{ |
||||
|
"name": "/nervui/nervui-smart-parking", |
||||
|
"version": 1, |
||||
|
"inputs": [ |
||||
|
{ |
||||
|
"name": "server_ip", |
||||
|
"type": "string", |
||||
|
"required": true, |
||||
|
"description": "应用安装IP地址", |
||||
|
"inputType": "ipSelectType" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "version", |
||||
|
"type": "string", |
||||
|
"required": true, |
||||
|
"description": "软件版本", |
||||
|
"inputType": "versionSelectType" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "install_dir", |
||||
|
"type": "string", |
||||
|
"required": true, |
||||
|
"defaultValue": "/data", |
||||
|
"inputType": "textInputType", |
||||
|
"description": "安装目录" |
||||
|
} |
||||
|
], |
||||
|
"nodes": [ |
||||
|
{ |
||||
|
"name": "nervui-smart-parking", |
||||
|
"type": "/nerv/nerv-orchestrator/cluster/Nervui", |
||||
|
"parameters": [ |
||||
|
{ |
||||
|
"name": "file_repository", |
||||
|
"value": "${nerv_file_repository}" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "install_dir", |
||||
|
"value": "${install_dir}" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "pkg_url", |
||||
|
"value": "/api/pkg/nerv/nervui-smart-parking/${version}/nervui-smart-parking-${version}.tgz" |
||||
|
} |
||||
|
], |
||||
|
"dependencies": [ |
||||
|
{ |
||||
|
"type": "contained", |
||||
|
"target": "host" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"name": "host", |
||||
|
"type": "/nerv/nerv-orchestrator/compute/Host", |
||||
|
"parameters": [ |
||||
|
{ |
||||
|
"name": "address", |
||||
|
"value": "${server_ip}" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
@ -0,0 +1,215 @@ |
|||||
|
<template> |
||||
|
<a-config-provider :locale="locale"> |
||||
|
<router-view /> |
||||
|
</a-config-provider> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts"> |
||||
|
import { defineComponent, watch, ref } from 'vue'; |
||||
|
import zhCN from 'ant-design-vue/es/locale/zh_CN'; |
||||
|
import { useRouter } from 'vue-router'; |
||||
|
export default defineComponent({ |
||||
|
name: 'App', |
||||
|
|
||||
|
setup() { |
||||
|
const router = useRouter(); |
||||
|
|
||||
|
const cachedViews = ['Status']; |
||||
|
return { |
||||
|
cachedViews, |
||||
|
locale: zhCN, |
||||
|
}; |
||||
|
}, |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
:deep(.ns-content) { |
||||
|
padding-top: 80px !important; |
||||
|
} |
||||
|
#app { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
:deep(.ns-left-menu .firstMenuItem-selected .ant-menu-title-content) { |
||||
|
background: unset !important; |
||||
|
} |
||||
|
:deep(.ns-left-menu .ant-menu-item-selected .ant-menu-title-content) { |
||||
|
color: #fff !important; |
||||
|
background: @primary-color; |
||||
|
border-radius: 2px; |
||||
|
height: 40px; |
||||
|
line-height: 40px; |
||||
|
a { |
||||
|
color: #ffffff !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-menu-light.ant-menu-horizontal > .ant-menu-item:hover) { |
||||
|
background: @primary-color; |
||||
|
} |
||||
|
:deep(.ant-menu-inline .ant-menu-submenu-title) { |
||||
|
color: rgba(255, 255, 255, 0.9) !important; |
||||
|
} |
||||
|
:deep(.ns-left-menu .ant-layout-sider-children .ant-menu-sub.ant-menu-inline) { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
display: flex; |
||||
|
width: 2px; |
||||
|
height: calc(100% - 40px); |
||||
|
position: absolute; |
||||
|
top: 20px; |
||||
|
left: 20px; |
||||
|
content: ''; |
||||
|
background-color: rgba(255, 255, 255, 0.2); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//*************************含tab的 list列表样式 */ |
||||
|
:deep(.tabListTable) { |
||||
|
.ns-table-title { |
||||
|
text-align: left; |
||||
|
height: 46px; |
||||
|
line-height: 46px; |
||||
|
font-size: 18px; |
||||
|
font-weight: bold; |
||||
|
user-select: text; |
||||
|
padding-left: 16px; |
||||
|
background: #fff; |
||||
|
width: calc(100% + 32px); |
||||
|
margin-left: -16px; |
||||
|
} |
||||
|
.tabs-list { |
||||
|
overflow: visible !important; |
||||
|
} |
||||
|
.ant-tabs-nav { |
||||
|
width: calc(100% + 32px); |
||||
|
margin-left: -16px !important; |
||||
|
background: #fff; |
||||
|
} |
||||
|
.ant-tabs-nav-wrap { |
||||
|
padding: 0 16px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//*********************详情页返回修改 */ |
||||
|
:deep(.nsDetailView) { |
||||
|
min-height: 100%; |
||||
|
height: 100%; |
||||
|
.ns-detail-content { |
||||
|
padding: 0px 24px; |
||||
|
border-top: 16px solid #e5ebf0; |
||||
|
} |
||||
|
.ant-descriptions-item-label { |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
font-family: PingFang SC; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
.ant-descriptions-item-content { |
||||
|
color: rgba(0, 0, 0, 0.95); |
||||
|
font-family: PingFang SC; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
.ant-descriptions-title { |
||||
|
&::after { |
||||
|
content: ''; |
||||
|
width: 75px; |
||||
|
height: 7px; |
||||
|
display: block; |
||||
|
background: linear-gradient(90deg, #537fff 0%, #fff 82.67%); |
||||
|
margin-left: 2px; |
||||
|
margin-top: -2px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-descriptions-row > th, |
||||
|
.ant-descriptions-row > td { |
||||
|
padding-bottom: 8px; |
||||
|
} |
||||
|
.ns-page-header { |
||||
|
margin-bottom: 0 !important; |
||||
|
padding-top: 7px !important; |
||||
|
padding-bottom: 7px !important; |
||||
|
width: calc(100% + 32px); |
||||
|
margin-left: -16px; |
||||
|
.title { |
||||
|
cursor: pointer; |
||||
|
font-size: 18px !important; |
||||
|
} |
||||
|
} |
||||
|
.ant-descriptions-header { |
||||
|
margin: 16px 0 16px 0 !important; |
||||
|
|
||||
|
.ant-descriptions-title { |
||||
|
line-height: 16px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ns-detail .ant-descriptions-header .descriptions-title) { |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
width: 75px; |
||||
|
height: 7px; |
||||
|
display: block; |
||||
|
background: linear-gradient(90deg, @primary-color 0%, #fff 82.67%); |
||||
|
margin-left: 2px; |
||||
|
margin-top: -2px; |
||||
|
} |
||||
|
} |
||||
|
:deep(.ant-descriptions-header .descriptions-title) { |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
width: 75px; |
||||
|
height: 7px; |
||||
|
display: block; |
||||
|
background: linear-gradient(90deg, @primary-color 0%, #fff 82.67%); |
||||
|
margin-left: 2px; |
||||
|
margin-top: -2px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="less"> |
||||
|
// 列表弹框样式修改 |
||||
|
.listTableModal .ant-modal-title { |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.listTableModal .ant-modal-body { |
||||
|
padding: 16px !important; |
||||
|
.ant-tabs-nav-wrap { |
||||
|
padding: 0px; |
||||
|
} |
||||
|
.ns-list-table { |
||||
|
border-left: 16px solid #e5ebf0; |
||||
|
border-right: 16px solid #e5ebf0; |
||||
|
border-bottom: 16px solid #e5ebf0; |
||||
|
} |
||||
|
} |
||||
|
:deep(.ant-menu-submenu-title) { |
||||
|
color: #ffffff !important; |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="less"> |
||||
|
//************************修改顶部菜单弹框样式 |
||||
|
.ant-menu-submenu-placement-bottomLeft { |
||||
|
.ant-menu-submenu { |
||||
|
background: rgb(3 24 53) !important; |
||||
|
} |
||||
|
|
||||
|
.ant-menu-sub { |
||||
|
background: rgb(3 24 53) !important; |
||||
|
} |
||||
|
.ant-menu-title-content { |
||||
|
color: #fff !important; |
||||
|
.ns-icon { |
||||
|
margin-right: 7px; |
||||
|
transform: translateY(2px); |
||||
|
} |
||||
|
} |
||||
|
.ant-menu-submenu-arrow { |
||||
|
color: #fff !important; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,6 @@ |
|||||
|
/*** |
||||
|
*配置接口 格式 module:Array<resource> |
||||
|
*/ |
||||
|
export const apiModule = { |
||||
|
parking: ['User', 'CurrentUser', 'Organizational'], |
||||
|
}; |
@ -0,0 +1,9 @@ |
|||||
|
const BASE_URL = '/carbon-smart'; |
||||
|
|
||||
|
export enum enterPrise { |
||||
|
list = `${BASE_URL}/admin/org/queryByPage`, |
||||
|
del = `${BASE_URL}/admin/org/del`, |
||||
|
edit = `${BASE_URL}/admin/org/edit`, |
||||
|
save = `${BASE_URL}/admin/org/save`, |
||||
|
link = `${BASE_URL}/admin/org/link`, |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
import { http } from '/nerv-lib/saas'; |
||||
|
|
||||
|
enum Api { |
||||
|
// USER_LOGIN = '/api/community/objs/Login', //用户登录
|
||||
|
// USER_INFO = '/api/community/community/objs/CurrentUser', //获取用户信息
|
||||
|
|
||||
|
USER_LOGIN = 'api/web/objs/Login', //用户登录
|
||||
|
USER_INFO = 'api/web/objs/CurrentUser', //获取用户信息
|
||||
|
USER_RESOURCE = '/api/community/objs/User/Resource', //获取用户资源
|
||||
|
} |
||||
|
export const userLogin = (data) => http.post(Api.USER_LOGIN, data); |
||||
|
export const userInfo = () => http.get(Api.USER_INFO); |
||||
|
export const userResource = () => http.get(Api.USER_RESOURCE); |
||||
|
/** |
||||
|
* @description 用户登录 |
||||
|
* @property `[fatherRegionUuid]` 父级区域唯一标识 |
||||
|
*/ |
@ -0,0 +1,108 @@ |
|||||
|
/** @format */ |
||||
|
|
||||
|
import { http } from '/nerv-lib/saas'; |
||||
|
import { ref } from 'vue'; |
||||
|
|
||||
|
const value = ref('1'); |
||||
|
const transform = (data, map) => { |
||||
|
return Object.keys(map).reduce((pre, cur) => { |
||||
|
pre[cur] = data[map[cur]]; |
||||
|
return pre; |
||||
|
}, {}); |
||||
|
}; |
||||
|
export const appConfig = { |
||||
|
projectType: 'web', |
||||
|
baseApi: '/api', |
||||
|
enablePermissions: false, |
||||
|
// themeColor: '#eee',
|
||||
|
siderPosition: 'left', |
||||
|
baseHeader: '/parkingManage', |
||||
|
baseRouter: '/parkingManage/parkingLotManage', |
||||
|
themeConfig: { |
||||
|
bgImageUrl: `${import.meta.env.VITE_PUBLIC_PATH}/asset/image/login/background.png`, |
||||
|
}, |
||||
|
// userCustomRouterGuard: (to, from, next, whiteNameList, authorizationStore, appConfig) => {
|
||||
|
// console.log({ to, from, next, whiteNameList, authorizationStore, appConfig }, 'routeConfig');
|
||||
|
// next();
|
||||
|
// },
|
||||
|
|
||||
|
// customUpdatePwd: () => import('/@/view/updatePassword/updatePassword.vue'),
|
||||
|
|
||||
|
// userInfoApi: () => {
|
||||
|
// return {
|
||||
|
// code: 200,
|
||||
|
// success: true,
|
||||
|
// data: {
|
||||
|
// accountCode: '1305107806187376793',
|
||||
|
// accountName: 'adm*n',
|
||||
|
// accountType: 'admin',
|
||||
|
// accountStatus: 1,
|
||||
|
// accountRealName: 'admin',
|
||||
|
// organizationCode: 'dingcloud',
|
||||
|
// authConfigList: [],
|
||||
|
// organizeResCode: [],
|
||||
|
// leadDepartmentUuidList: [],
|
||||
|
// },
|
||||
|
// };
|
||||
|
// },
|
||||
|
|
||||
|
// headerSlotConfig: {
|
||||
|
// component: 'NsSelect',
|
||||
|
// componentProps: {
|
||||
|
// style: { width: '200px' },
|
||||
|
// placeholder: '请选择',
|
||||
|
// value,
|
||||
|
// onChange: (cur) => {
|
||||
|
// value.value = cur;
|
||||
|
// },
|
||||
|
// options: [
|
||||
|
// { label: '济阳', value: '1' },
|
||||
|
// { label: '临沂', value: '2' },
|
||||
|
// ],
|
||||
|
// },
|
||||
|
// },
|
||||
|
timeout: 60 * 1000, |
||||
|
userLoginApi: '/carbon-smart/user/login', |
||||
|
userResourceApi: () => { |
||||
|
return { data: [] }; |
||||
|
}, |
||||
|
userInfoApi: () => { |
||||
|
return http.post('/carbon-smart/user/login/logInInfo').then((res) => { |
||||
|
const info = res.data; |
||||
|
const trD = transform(info, { |
||||
|
accountCode: 'userId', |
||||
|
accountName: 'realName', |
||||
|
accountRealName: 'realName', |
||||
|
orgId: 'orgId', |
||||
|
orgName: 'orgName', |
||||
|
projectId: 'projectId', |
||||
|
}); |
||||
|
return { data: { ...trD } }; |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
useHistoryTag: false, |
||||
|
// 修改密码配置
|
||||
|
updatePassWordInfo: { |
||||
|
title: '修改密码', |
||||
|
subtitle: 'huaxing平台', |
||||
|
api: '/api/web/objs/User/changePassword', |
||||
|
}, |
||||
|
// headerBellInfo: {
|
||||
|
// isShow: true,
|
||||
|
// api: '/api/web/objs/bulletin/readCount',
|
||||
|
// toRouterName: 'NoticeManageIndex',
|
||||
|
// },
|
||||
|
resourceInfo: { |
||||
|
// application: {
|
||||
|
// version: '1.1.74',
|
||||
|
// label: '停车业务平台',
|
||||
|
// dataScope: {
|
||||
|
// scopeMode: 0,
|
||||
|
// scopeType: '',
|
||||
|
// dataTips: '',
|
||||
|
// },
|
||||
|
// },
|
||||
|
// api: permission.add,
|
||||
|
}, |
||||
|
}; |
@ -0,0 +1,2 @@ |
|||||
|
import { appConfig } from '/@/config/app.config'; |
||||
|
export { appConfig }; |
@ -0,0 +1,22 @@ |
|||||
|
export enum ResultEnum { |
||||
|
SUCCESS = 0, |
||||
|
ERROR = 1, |
||||
|
TIMEOUT = 401, |
||||
|
TOKEN_INVALID = 403, |
||||
|
} |
||||
|
|
||||
|
export enum RequestEnum { |
||||
|
GET = 'POST', |
||||
|
POST = 'POST', |
||||
|
PUT = 'POST', |
||||
|
DELETE = 'POST', |
||||
|
} |
||||
|
|
||||
|
export enum ContentTypeEnum { |
||||
|
// json
|
||||
|
JSON = 'application/json;charset=UTF-8', |
||||
|
// form-data qs
|
||||
|
FORM_URLENCODED = 'application/x-www-form-urlencoded;charset=UTF-8', |
||||
|
// form-data upload
|
||||
|
FORM_DATA = 'multipart/form-data;charset=UTF-8', |
||||
|
} |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 251 B |
After Width: | Height: | Size: 923 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 503 B |
After Width: | Height: | Size: 686 B |
@ -0,0 +1,18 @@ |
|||||
|
import { createApp } from 'vue'; |
||||
|
import App from '/@/App.vue'; |
||||
|
import { saasInit } from '/nerv-lib/saas'; |
||||
|
import { apiModule } from '/@/api'; |
||||
|
import { appConfig } from '/@/config'; |
||||
|
import './theme/global.less'; |
||||
|
import { LeftOutlined } from '@ant-design/icons-vue'; |
||||
|
// import ElementPlus from 'element-plus'
|
||||
|
// import 'element-plus/dist/index.css'
|
||||
|
const app = createApp(App); |
||||
|
app.component('LeftOutlined', LeftOutlined); |
||||
|
saasInit({ |
||||
|
app, |
||||
|
apiModule, |
||||
|
appConfig, |
||||
|
}); |
||||
|
// app.use(ElementPlus)
|
||||
|
app.mount('#app'); |
@ -0,0 +1,29 @@ |
|||||
|
const Base = () => import('/nerv-lib/saas/view/system/layout/content.vue'); |
||||
|
const home = { |
||||
|
path: '/home', |
||||
|
name: 'home', |
||||
|
meta: { title: '首页', icon: 'dicizhishou', index: 0, hideChildren: true }, |
||||
|
redirect: { name: 'homeIndex' }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'homeModule', |
||||
|
name: 'HomeModule', |
||||
|
meta: { title: '首页', hideChildren: true, icon: 'dicizhishou' }, |
||||
|
component: Base, |
||||
|
redirect: { name: 'homeIndex' }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'index', |
||||
|
name: 'homeIndex', |
||||
|
component: () => import('/@/view/developing.vue'), |
||||
|
meta: { |
||||
|
title: '首页', |
||||
|
keepAlive: true, |
||||
|
// backApi: [],
|
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
export default home; |
@ -0,0 +1,11 @@ |
|||||
|
/** @format */ |
||||
|
|
||||
|
const RootRoute = { |
||||
|
path: '/', |
||||
|
name: 'root', |
||||
|
redirect: { name: 'home' }, |
||||
|
meta: { |
||||
|
title: 'Root', |
||||
|
}, |
||||
|
}; |
||||
|
export default RootRoute; |
@ -0,0 +1,29 @@ |
|||||
|
const Base = () => import('/nerv-lib/saas/view/system/layout/content.vue'); |
||||
|
const organizationManage = { |
||||
|
path: '/organizationManage', |
||||
|
name: 'organizationManage', |
||||
|
meta: { title: '企业管理', icon: 'dicizhishou', index: 99, hideChildren: true }, |
||||
|
redirect: { name: 'EnterpriseManage' }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'enterpriseManage', |
||||
|
name: 'EnterpriseManage', |
||||
|
meta: { title: '企业管理', hideChildren: true, icon: 'dicizhishou' }, |
||||
|
component: Base, |
||||
|
redirect: { name: 'EnterpriseManageIndex' }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'index', |
||||
|
name: 'EnterpriseManageIndex', |
||||
|
component: () => import('/@/view/organizationManage/enterpriseManage/index.vue'), |
||||
|
meta: { |
||||
|
title: '企业管理', |
||||
|
keepAlive: true, |
||||
|
// backApi: [],
|
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
export default organizationManage; |
@ -0,0 +1,12 @@ |
|||||
|
import { defineStore } from 'pinia'; |
||||
|
|
||||
|
export const items = defineStore({ |
||||
|
id: 'items', |
||||
|
state() { |
||||
|
return { list: [], count: 10 }; |
||||
|
}, |
||||
|
getters: { |
||||
|
double: (state: any) => state.count * 2, |
||||
|
}, |
||||
|
actions: {}, |
||||
|
}); |
@ -0,0 +1,151 @@ |
|||||
|
.ns-view { |
||||
|
min-height: 100%; |
||||
|
height: 100%; |
||||
|
background: #e5ebf0; |
||||
|
} |
||||
|
.ns-detail-content { |
||||
|
border-top: 16px solid #e5ebf0; |
||||
|
padding: 16px 21px; |
||||
|
background: #fff; |
||||
|
height: calc(100% - 50px); |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-skeleton-paragraph) { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-skeleton-paragraph li:nth-child(n)) { |
||||
|
display: block; |
||||
|
margin-right: 4%; |
||||
|
margin-top: 16px; |
||||
|
margin-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-skeleton-paragraph li:nth-child(3n + 3)) { |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-skeleton-content) { |
||||
|
padding: 0 8px 10px 10px; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-descriptions-item-label) { |
||||
|
color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-descriptions-item-label), |
||||
|
:deep(.ant-descriptions-item-content) { |
||||
|
line-height: 22px; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-descriptions-view) { |
||||
|
padding-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-descriptions-item) { |
||||
|
padding-right: 20px; |
||||
|
|
||||
|
&:nth-child(2n) { |
||||
|
padding-left: 20px; |
||||
|
} |
||||
|
|
||||
|
&:nth-child(3n) { |
||||
|
padding-left: 20px; |
||||
|
padding-right: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.descriptions-title { |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
width: 75px; |
||||
|
height: 7px; |
||||
|
display: block; |
||||
|
background: linear-gradient(90deg, #537fff 0%, #fff 82.67%); |
||||
|
margin-left: 2px; |
||||
|
margin-top: -2px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ns-page-header { |
||||
|
margin-bottom: 0 !important; |
||||
|
padding-top: 7px !important; |
||||
|
padding-bottom: 7px !important; |
||||
|
width: calc(100% + 32px); |
||||
|
margin-left: -16px; |
||||
|
.title { |
||||
|
cursor: pointer; |
||||
|
font-size: 18px !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ns-detail { |
||||
|
border-bottom: 1px solid #ecedef; |
||||
|
|
||||
|
&:last-child { |
||||
|
border-bottom-width: 0; |
||||
|
} |
||||
|
&:first-child { |
||||
|
:deep(.ant-descriptions-header) { |
||||
|
margin-top: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-descriptions-header) { |
||||
|
margin-top: 12px; |
||||
|
margin-bottom: 12px; |
||||
|
|
||||
|
.ant-descriptions-title { |
||||
|
line-height: 16px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-image) { |
||||
|
width: 64px; |
||||
|
height: 64px; |
||||
|
img { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
object-fit: contain; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ns-detail-html { |
||||
|
:deep(table) { |
||||
|
border-top: 1px solid #ffffff; |
||||
|
border-left: 1px solid #ffffff; |
||||
|
|
||||
|
:deep(p) { |
||||
|
font-size: 12px; |
||||
|
color: #898e91; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(th) { |
||||
|
border-right: 1px solid #ffffff; |
||||
|
font-size: 13px; |
||||
|
padding-top: 5px; |
||||
|
padding-bottom: 5px; |
||||
|
font-weight: normal; |
||||
|
background: #eff0f2; |
||||
|
} |
||||
|
|
||||
|
:deep(td) { |
||||
|
border-top: 1px solid #ffffff; |
||||
|
border-right: 1px solid #ffffff; |
||||
|
padding-top: 5px; |
||||
|
padding-bottom: 5px; |
||||
|
font-size: 12px; |
||||
|
color: #606060; |
||||
|
text-align: center; |
||||
|
|
||||
|
:deep(text) { |
||||
|
border-bottom: 1px solid #ffffff; |
||||
|
} |
||||
|
|
||||
|
background: rgba(240, 242, 245, 0.5); |
||||
|
} |
||||
|
} |
@ -0,0 +1,72 @@ |
|||||
|
.ns-view { |
||||
|
min-height: 100%; |
||||
|
height: 100%; |
||||
|
background: #e5ebf0; |
||||
|
} |
||||
|
|
||||
|
.ns-page-header { |
||||
|
margin-bottom: 0 !important; |
||||
|
padding: 7px 16px !important; |
||||
|
width: calc(100% + 32px); |
||||
|
margin-left: -16px; |
||||
|
|
||||
|
.title { |
||||
|
cursor: pointer; |
||||
|
font-size: 18px !important; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
|
||||
|
.text { |
||||
|
margin-left: 6px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-spin-nested-loading) { |
||||
|
min-height: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-spin-container) { |
||||
|
min-height: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
:deep(.ant-divider) { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.ns-add-form { |
||||
|
border-top: 16px solid #e5ebf0; |
||||
|
padding: 16px 21px; |
||||
|
background: #fff; |
||||
|
height: calc(100% - 47px) !important; |
||||
|
|
||||
|
.ns-form { |
||||
|
|
||||
|
// 第一个子表单Title距离顶部为0 |
||||
|
:deep(.ns-form-item .ns-form-body .ns-child-form-title) { |
||||
|
padding-top: 0; |
||||
|
} |
||||
|
|
||||
|
&:after { |
||||
|
display: none !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ns-child-form-title) { |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
width: 75px; |
||||
|
height: 7px; |
||||
|
display: block; |
||||
|
background: linear-gradient(90deg, #537fff 0%, #fff 82.67%); |
||||
|
margin-left: 2px; |
||||
|
margin-top: -7px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
:deep(.ns-form.ns-vertical-form) { |
||||
|
padding-top: 16px !important; |
||||
|
} |
@ -0,0 +1,183 @@ |
|||||
|
//侧边导航 |
||||
|
// .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { |
||||
|
// background: rgb(229, 247, 249) !important; |
||||
|
// } |
||||
|
|
||||
|
// .ant-menu.ant-menu-dark .ant-menu-item-selected { |
||||
|
// color: #fff; |
||||
|
// background: #43BB79 !important; |
||||
|
// } |
||||
|
|
||||
|
// .ant-menu-dark.ant-menu-horizontal>.ant-menu-item:hover { |
||||
|
// background-color: #43BB79 !important; |
||||
|
// } |
||||
|
|
||||
|
.ant-menu-inline .ant-menu-item, |
||||
|
.ant-menu-inline .ant-menu-submenu-title { |
||||
|
width: 100% !important; |
||||
|
} |
||||
|
|
||||
|
.ns-basic-table .ant-btn:hover { |
||||
|
border-color: transparent !important; |
||||
|
} |
||||
|
|
||||
|
.ns-basic-table .ant-btn-link:hover { |
||||
|
background: none !important; |
||||
|
} |
||||
|
|
||||
|
// .ns-detail { |
||||
|
// padding: 0px 24px 10px 24px !important; |
||||
|
// } |
||||
|
|
||||
|
.ant-tabs-nav-wrap { |
||||
|
padding: 0 24px; // 列表tab边距 |
||||
|
} |
||||
|
|
||||
|
.ant-tabs-nav { |
||||
|
margin: 0 !important; // 列表tab下边距 |
||||
|
} |
||||
|
|
||||
|
.ns-richText-ZIndex { |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
.ant-input-number { |
||||
|
width: 100%; //inputNumber组件宽度 |
||||
|
} |
||||
|
|
||||
|
// header菜单字体样式 |
||||
|
.ant-menu-dark.ant-menu-horizontal>.ant-menu-item, |
||||
|
.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.ant-menu-dark .ant-menu-item, |
||||
|
.ant-menu-dark .ant-menu-item-group-title, |
||||
|
.ant-menu-dark .ant-menu-item>a, |
||||
|
.ant-menu-dark .ant-menu-item>span>a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
/*给字体命名*/ |
||||
|
font-family: 'YouSheBiaoTiHei'; |
||||
|
/*引入字体文件*/ |
||||
|
src: url('/font/YouSheBiaoTiHei.ttf'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
/*给字体命名*/ |
||||
|
font-family: 'DIN Alternate'; |
||||
|
/*引入字体文件*/ |
||||
|
src: url('/font/DIN Alternate Bold.ttf'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
/*给字体命名*/ |
||||
|
font-family: 'PingFang Regular'; |
||||
|
/*引入字体文件*/ |
||||
|
src: url('/font/PingFang Regular.ttf'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
/*给字体命名*/ |
||||
|
font-family: 'HYYakuHei'; |
||||
|
/*引入字体文件*/ |
||||
|
src: url('/font/HYYakuHei-85W.ttf'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
// .ant-popover-message { |
||||
|
// width: 250px !important; |
||||
|
// height: 198px !important; |
||||
|
// overflow: auto !important; |
||||
|
// position: relative; |
||||
|
|
||||
|
// padding: 0; |
||||
|
// color: rgba(0, 0, 0, 0.85); |
||||
|
// font-size: 14px; |
||||
|
// } |
||||
|
// .ant-popover-inner-content { |
||||
|
// /* padding: 12px 16px; */ |
||||
|
// padding: 0; |
||||
|
// color: rgba(0, 0, 0, 0.85); |
||||
|
// } |
||||
|
|
||||
|
.ant-menu-title-content { |
||||
|
svg { |
||||
|
color: #A1ABC2; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-menu-item-selected { |
||||
|
svg { |
||||
|
color: #D0DBF5; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//状态颜色 |
||||
|
.commonStatus { |
||||
|
&::before{ |
||||
|
content: ''; |
||||
|
width: 8px; |
||||
|
height: 8px; |
||||
|
display: inline-block; |
||||
|
border-radius: 50%; |
||||
|
vertical-align: middle; |
||||
|
margin-right: 4px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusWarn { |
||||
|
&::before{ |
||||
|
background-color: #fa8214; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusSuccess { |
||||
|
&::before{ |
||||
|
background-color: #0D9E3E; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusRunning { |
||||
|
&::before{ |
||||
|
background-color: #1C4DDC; |
||||
|
} |
||||
|
} |
||||
|
.statusError { |
||||
|
&::before{ |
||||
|
background-color: #D4321C; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusEmpty { |
||||
|
&::before{ |
||||
|
width:0; |
||||
|
} |
||||
|
width:0; |
||||
|
} |
||||
|
|
||||
|
.statusNotStart { |
||||
|
&::before{ |
||||
|
background-color: #8B98AB; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusDone{ |
||||
|
&::before{ |
||||
|
background-color: #697383; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.statusInvalid{ |
||||
|
&::before{ |
||||
|
background-color: #AEAEAE; |
||||
|
} |
||||
|
} |
@ -0,0 +1,73 @@ |
|||||
|
@font-face { |
||||
|
font-family: 'QuartzMS'; |
||||
|
src: url('/asset/font/QuartzMS.TTF') format('truetype'); |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'FZDeSHJW_511M'; |
||||
|
src: url('/asset/font/FZDeSHJW_511M.TTF') format('truetype'); |
||||
|
} |
||||
|
|
||||
|
@font-face { |
||||
|
font-family: 'Fzltth_SC'; |
||||
|
src: url('/asset/font/Fzltth_SC.otf') format('truetype'); |
||||
|
} |
||||
|
|
||||
|
//侧边导航 |
||||
|
// .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { |
||||
|
// background: rgb(229, 247, 249) !important; |
||||
|
// } |
||||
|
|
||||
|
|
||||
|
|
||||
|
.ant-menu-inline .ant-menu-item, |
||||
|
.ant-menu-inline .ant-menu-submenu-title { |
||||
|
width: 100% !important; |
||||
|
} |
||||
|
|
||||
|
.ns-basic-table .ant-btn:hover { |
||||
|
border-color: transparent !important; |
||||
|
} |
||||
|
|
||||
|
.ns-basic-table .ant-btn-link:hover { |
||||
|
background: none !important; |
||||
|
} |
||||
|
|
||||
|
// .ns-detail { |
||||
|
// padding: 0px 24px 10px 24px !important; |
||||
|
// } |
||||
|
|
||||
|
.ant-tabs-nav-wrap { |
||||
|
padding: 0 24px; // 列表tab边距 |
||||
|
} |
||||
|
|
||||
|
.ant-tabs-nav { |
||||
|
margin: 0 !important; // 列表tab下边距 |
||||
|
} |
||||
|
|
||||
|
.ns-richText-ZIndex { |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
.ant-input-number { |
||||
|
width: 100%; //inputNumber组件宽度 |
||||
|
} |
||||
|
|
||||
|
// header菜单字体样式 |
||||
|
.ant-menu-dark.ant-menu-horizontal>.ant-menu-item, |
||||
|
.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.ant-menu-dark .ant-menu-item, |
||||
|
.ant-menu-dark .ant-menu-item-group-title, |
||||
|
.ant-menu-dark .ant-menu-item>a, |
||||
|
.ant-menu-dark .ant-menu-item>span>a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-active::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-active::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-open::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-open::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item-selected::after, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected::after { |
||||
|
border-bottom: unset !important; |
||||
|
} |
||||
|
.ant-menu-horizontal{ |
||||
|
border-bottom: unset !important; |
||||
|
} |
@ -0,0 +1,2 @@ |
|||||
|
@import "variable"; |
||||
|
@import "global"; |
@ -0,0 +1,36 @@ |
|||||
|
// @import "./global-antd.less"; |
||||
|
@primary-color: #ff7602; // 全局主色 |
||||
|
@layout-header-hover: #924908; //hover |
||||
|
@layout-header-background: #111519; // 头部背景色 |
||||
|
// @layout-header-background:url(/asset/image/header_background.png) no-repeat; |
||||
|
// @ant-layout-sider-collapsed-background:url(/asset/image/sider_collapsed_background.png) no-repeat; |
||||
|
|
||||
|
|
||||
|
//btn |
||||
|
// @btn-height-base: 30px; |
||||
|
// @btn-height-lg: 30px; |
||||
|
// @btn-disable-bg: #dfe3e9; //禁用按钮background |
||||
|
// @btn-disable-border: 1px solid #ced0da; |
||||
|
|
||||
|
// @btn-link-hover-bg: #37ABC4; |
||||
|
// @btn-text-hover-bg: #46ebdb; |
||||
|
|
||||
|
|
||||
|
// //input |
||||
|
// @input-height-base: 30px; |
||||
|
|
||||
|
|
||||
|
// //form |
||||
|
// @label-color: #52616f; //form-lable颜色 |
||||
|
|
||||
|
|
||||
|
// @form-item-margin-bottom: 16px; |
||||
|
|
||||
|
// //menu |
||||
|
|
||||
|
|
||||
|
//spin |
||||
|
|
||||
|
|
||||
|
// @border-width-base: 1px; |
||||
|
// @border-style-base: solid; |
@ -0,0 +1 @@ |
|||||
|
declare module '*.vue'; |
@ -0,0 +1,21 @@ |
|||||
|
export function debounce(_this: any, fn: (arg0: any) => void) { |
||||
|
// 用rAF去做防抖
|
||||
|
return function (...args: any) { |
||||
|
if (_this.lock) return; |
||||
|
const run = function () { |
||||
|
// requestIdleCallback-任务调度
|
||||
|
window.requestIdleCallback(function (deadline) { |
||||
|
_this.lock = true; |
||||
|
// 判断空闲时间
|
||||
|
// 显示器刷新频率HZ 16.7ms内不会重复执行
|
||||
|
if (deadline.timeRemaining() > 1000 / 60) { |
||||
|
fn(...args); |
||||
|
_this.lock = false; |
||||
|
} else { |
||||
|
run(); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
run(); |
||||
|
}; |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
<template> |
||||
|
<div class="content">{{ content }}</div> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import { useRouter } from 'vue-router'; |
||||
|
console.log(useRouter().currentRoute.value.meta); |
||||
|
|
||||
|
const content = useRouter().currentRoute.value.meta.title + 'developing'; |
||||
|
</script> |
||||
|
<style scoped lang="less"> |
||||
|
.content { |
||||
|
font-size: 30px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,74 @@ |
|||||
|
<template> |
||||
|
<a-modal title="企业信息" :width="600" v-model:visible="visible" @ok="handleOk"> |
||||
|
<ns-form ref="formRef" :schemas="formSchema" :model="formData" formLayout="vertical" /> |
||||
|
</a-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts"> |
||||
|
import { defineComponent, reactive, ref } from 'vue'; |
||||
|
export default defineComponent({ |
||||
|
name: 'AddBorderVisible', |
||||
|
setup() { |
||||
|
let formData = ref({}); |
||||
|
const formRef = ref(); |
||||
|
const visible = ref(false); |
||||
|
const toggle = () => { |
||||
|
visible.value = !visible.value; |
||||
|
}; |
||||
|
const formSchema = reactive([ |
||||
|
{ |
||||
|
field: 'name', |
||||
|
label: '企业名称', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入企业名称', |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请输入企业名称', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
field: 'Isshare', |
||||
|
label: '点位数据', |
||||
|
component: 'NsRadioGroup', |
||||
|
componentProps: { |
||||
|
radioType: 'radio', |
||||
|
options: [ |
||||
|
{ label: '分享', value: 1 }, |
||||
|
{ label: '不分享', value: 2 }, |
||||
|
], |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请选择是否分享', |
||||
|
type: 'number', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
]); |
||||
|
const handleOk = () => { |
||||
|
formRef.value?.triggerSubmit().then(() => { |
||||
|
toggle(); |
||||
|
}); |
||||
|
}; |
||||
|
return { handleOk, formData, formSchema, visible, toggle, formRef }; |
||||
|
}, |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
// :deep(.ns-child-form) { |
||||
|
// width: 1100px !important; |
||||
|
// justify-content: flex-start !important; |
||||
|
// } |
||||
|
// :deep(.ant-input-group-addon) { |
||||
|
// border: 0px solid #dcdfe2 !important; |
||||
|
// } |
||||
|
</style> |
@ -0,0 +1,335 @@ |
|||||
|
import { mockData } from './mock'; |
||||
|
import { cloneDeep } from 'lodash-es'; |
||||
|
import { Modal } from 'ant-design-vue'; |
||||
|
import { createVNode, ref } from 'vue'; |
||||
|
import { NsMessage } from '/nerv-lib/component'; |
||||
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; |
||||
|
import { enterPrise } from '/@/api/origanizemanage'; |
||||
|
|
||||
|
export const formConfig = [ |
||||
|
{ |
||||
|
field: 'zuzhi', |
||||
|
label: '组织ID', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入组织ID', |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请输入组织编号', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
field: 'jituanname', |
||||
|
label: '企业名称', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入企业名称', |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请输入企业名称', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
field: 'jituanname', |
||||
|
label: '集团名称', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入集团名称', |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'cityName', |
||||
|
label: '省市区', |
||||
|
component: 'NsInputCity', |
||||
|
defaultValue: '', |
||||
|
fieldMap: ['provinceName', 'cityName', 'areaName', 'province', 'city', 'area'], |
||||
|
componentProps: { |
||||
|
placeholder: '请选择', |
||||
|
api: '/api/parking_merchant/objs/BaseArea', |
||||
|
isSeparate: true, |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请选择区域', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
field: 'address', |
||||
|
label: '地址', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入地址', |
||||
|
maxLength: 50, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'person', |
||||
|
label: '联系人', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入联系人', |
||||
|
maxLength: 10, |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请输入联系人', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
field: 'phone', |
||||
|
label: '联系电话', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入联系电话', |
||||
|
maxLength: 11, |
||||
|
}, |
||||
|
rules: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: '请输入联系电话', |
||||
|
trigger: 'blur', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const tableConfig = (visible) => { |
||||
|
return { |
||||
|
// title: '企业管理',
|
||||
|
api: enterPrise.list, |
||||
|
headerActions: [ |
||||
|
{ |
||||
|
label: '新增', |
||||
|
name: 'RoleTypeAdd', |
||||
|
type: 'primary', |
||||
|
handle: () => { |
||||
|
opMap.type = 'add'; |
||||
|
opMap.fuc = (formData: any) => { |
||||
|
console.log(formData, 'formData'); |
||||
|
mockData.value.push({ |
||||
|
id: Math.random().toString().slice(2, 6), |
||||
|
...cloneDeep(formData), |
||||
|
}); |
||||
|
}; |
||||
|
visible.value = true; |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
rowSelection: null, |
||||
|
columns: [ |
||||
|
{ |
||||
|
title: '序号', |
||||
|
dataIndex: 'address', |
||||
|
width: 80, |
||||
|
customRender: (text: any) => { |
||||
|
return text.index + 1; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '组织ID', |
||||
|
dataIndex: 'orgCode', |
||||
|
}, |
||||
|
{ |
||||
|
title: '集团名称', |
||||
|
dataIndex: 'intro', |
||||
|
}, |
||||
|
{ |
||||
|
title: '组织名称', |
||||
|
dataIndex: 'orgName', |
||||
|
}, |
||||
|
{ |
||||
|
title: '状态', |
||||
|
dataIndex: 'status', |
||||
|
}, |
||||
|
{ |
||||
|
title: '省市区', |
||||
|
dataIndex: 'area', |
||||
|
customRender: ({ record }) => { |
||||
|
const { province = '', city = '', county = '' } = record; |
||||
|
return `${province}/${city}/${county}`; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '地址', |
||||
|
dataIndex: 'address', |
||||
|
}, |
||||
|
{ |
||||
|
title: '联系人', |
||||
|
dataIndex: 'person', |
||||
|
}, |
||||
|
{ |
||||
|
title: '联系电话', |
||||
|
dataIndex: 'phone', |
||||
|
}, |
||||
|
], |
||||
|
columnActions: { |
||||
|
title: '操作', |
||||
|
actions: [ |
||||
|
{ |
||||
|
label: '编辑', |
||||
|
name: 'RoleTypeEdit', |
||||
|
handle: (record: any) => { |
||||
|
console.log(record, 'record'); |
||||
|
formData.value = record; |
||||
|
opMap.type = 'edit'; |
||||
|
opMap.fuc = (formData: any) => { |
||||
|
Object.assign(mockData.value.filter((item) => item.id === record.id)[0], formData); |
||||
|
}; |
||||
|
visible.value = true; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: '组织边界', |
||||
|
handle: (record: any) => { |
||||
|
console.log(record, 'record'); |
||||
|
borderVisible.value = true; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: '服务', |
||||
|
handle: (record: any) => { |
||||
|
console.log(record, 'record'); |
||||
|
serviceVisible.value = true; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: '冻结', |
||||
|
name: 'RoleTypeEdit', |
||||
|
handle: (record: any) => { |
||||
|
console.log(record, 'record'); |
||||
|
Modal.confirm({ |
||||
|
title: '是否冻结该账户', |
||||
|
icon: createVNode(ExclamationCircleOutlined), |
||||
|
content: createVNode('div', { style: 'color:red;' }, ''), |
||||
|
onOk() { |
||||
|
NsMessage.success('冻结成功'); |
||||
|
}, |
||||
|
class: 'test', |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: '重置密码', |
||||
|
name: 'RoleTypeEdit', |
||||
|
handle: (record: any) => { |
||||
|
console.log(record, 'record'); |
||||
|
Modal.confirm({ |
||||
|
title: '重置密码', |
||||
|
icon: createVNode(ExclamationCircleOutlined), |
||||
|
okText: '重置', |
||||
|
content: h('div', {}, [ |
||||
|
h('p', `企业名称: ${record.jituanname}`), |
||||
|
h('p', '管理员账号: hxdtadmin'), |
||||
|
]), |
||||
|
onOk() { |
||||
|
Modal.confirm({ |
||||
|
icon: createVNode(ExclamationCircleOutlined), |
||||
|
content: '是否确认重置该企业管理员密码', |
||||
|
onOk() { |
||||
|
Modal.success({ |
||||
|
okText: '确认', |
||||
|
content: h('div', {}, [ |
||||
|
h('p', '重置成功'), |
||||
|
h('p', '点击【确认】后自动复制密码并离开'), |
||||
|
]), |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
onCancel() { |
||||
|
console.log('Cancel'); |
||||
|
}, |
||||
|
class: 'test', |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: '删除', |
||||
|
name: 'RoleTypeEdit', |
||||
|
dynamicParams: 'orgId', |
||||
|
confirm: true, |
||||
|
isReload: true, |
||||
|
api: enterPrise.del, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
|
||||
|
formConfig: { |
||||
|
schemas: [ |
||||
|
{ |
||||
|
field: 'zuzhibianhao', |
||||
|
label: '组织ID', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'jituanname', |
||||
|
label: '集团名称', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'zuzhiname', |
||||
|
label: '组织名称', |
||||
|
component: 'NsInput', |
||||
|
componentProps: { |
||||
|
maxLength: 20, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'status', |
||||
|
label: '状态', |
||||
|
component: 'NsSelect', |
||||
|
componentProps: { |
||||
|
options: [ |
||||
|
{ |
||||
|
label: '正常', |
||||
|
value: 1, |
||||
|
}, |
||||
|
{ |
||||
|
label: '冻结', |
||||
|
value: 2, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
field: 'cityName', |
||||
|
label: '城市地区', |
||||
|
component: 'NsInputCity', |
||||
|
defaultValue: '', |
||||
|
fieldMap: ['provinceName', 'cityName', 'areaName', 'province', 'city', 'area'], |
||||
|
componentProps: { |
||||
|
api: '/api/parking_merchant/objs/BaseArea', |
||||
|
isSeparate: true, |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
params: {}, |
||||
|
}, |
||||
|
// pagination: { defaultPageSize: 10 },
|
||||
|
rowKey: 'id', |
||||
|
}; |
||||
|
}; |
@ -0,0 +1,175 @@ |
|||||
|
<!-- @format --> |
||||
|
|
||||
|
<template> |
||||
|
<ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" rowKey="uuid" /> |
||||
|
<a-drawer |
||||
|
:width="600" |
||||
|
:visible="visible" |
||||
|
:body-style="{ paddingBottom: '80px' }" |
||||
|
:footer-style="{ textAlign: 'right' }" |
||||
|
destroyOnClose |
||||
|
@close="onClose"> |
||||
|
<ns-form ref="formRef" :schemas="formSchema" :model="formData" formLayout="vertical" /> |
||||
|
<template #footer> |
||||
|
<a-button style="margin-right: 8px" @click="onClose">取消</a-button> |
||||
|
<a-button type="primary" @click="onEdit">确定</a-button> |
||||
|
</template> |
||||
|
</a-drawer> |
||||
|
<a-drawer |
||||
|
:width="600" |
||||
|
:visible="borderVisible" |
||||
|
:body-style="{ paddingBottom: '80px' }" |
||||
|
:footer-style="{ textAlign: 'right' }" |
||||
|
destroyOnClose |
||||
|
@close="onClose"> |
||||
|
<a-button type="primary" @click="borderAdd">新增</a-button> |
||||
|
<a-button type="primary" style="margin-left: 10px; margin-bottom: 10px" @click="borderAddSon" |
||||
|
>新增子集</a-button |
||||
|
> |
||||
|
<a-directory-tree @select="handleSelect" multiple :tree-data="treeData"> |
||||
|
<template #title="{ title, key }"> |
||||
|
{{ title }} |
||||
|
<a-button type="link" @click="editTree(title, key)">编辑</a-button> |
||||
|
<a-button type="link" danger @click="deleteTree(title, key)">删除</a-button> |
||||
|
</template> |
||||
|
</a-directory-tree> |
||||
|
</a-drawer> |
||||
|
|
||||
|
<a-drawer |
||||
|
:width="600" |
||||
|
:visible="serviceVisible" |
||||
|
:body-style="{ paddingBottom: '80px' }" |
||||
|
:footer-style="{ textAlign: 'right' }" |
||||
|
destroyOnClose |
||||
|
@close="onClose"> |
||||
|
<a-input-search |
||||
|
placeholder="请选择开通模块" |
||||
|
v-model:value="searchValue" |
||||
|
style="margin-bottom: 8px" |
||||
|
@search="onSearch" /> |
||||
|
<a-tree |
||||
|
:tree-data="treeData" |
||||
|
v-model:checkedKeys="checkedKeys" |
||||
|
checkable |
||||
|
@select="ServiceSelect"> |
||||
|
<template #title="{ title }"> |
||||
|
{{ title }} |
||||
|
</template> |
||||
|
</a-tree> |
||||
|
<ns-button style="margin: 20px" type="primary" @click="onClose">取消</ns-button> |
||||
|
<ns-button type="primary" @click="Sure">确定</ns-button> |
||||
|
</a-drawer> |
||||
|
|
||||
|
<TreeAdd ref="treeAdd" /> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import { Modal } from 'ant-design-vue'; |
||||
|
import { computed, createVNode, defineComponent, reactive, ref, watch } from 'vue'; |
||||
|
import { http } from '/nerv-lib/util/http'; |
||||
|
import { cloneDeep } from 'lodash-es'; |
||||
|
import TreeAdd from './TreeAdd.vue'; |
||||
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; |
||||
|
import { h } from 'vue'; |
||||
|
import { formConfig } from './config'; |
||||
|
import { NsMessage } from '/nerv-lib/component'; |
||||
|
import { mockData, treeData } from './mock'; |
||||
|
import { enterPrise } from '/@/api/origanizemanage'; |
||||
|
import { tableConfig as insertConfig } from './config'; |
||||
|
defineOptions({ |
||||
|
name: 'EnterpriseManageIndex', |
||||
|
}); |
||||
|
|
||||
|
const data = reactive({}); |
||||
|
const treeAdd = ref(); |
||||
|
const mainRef = ref(); |
||||
|
let formData = ref({}); |
||||
|
const formRef = ref(); |
||||
|
const searchValue = ref<string>(''); |
||||
|
const checkedKeys = ref<string[]>([]); |
||||
|
const visible = ref(false); |
||||
|
const borderVisible = ref(false); |
||||
|
const serviceVisible = ref(false); |
||||
|
const treeAddVisible = ref(false); |
||||
|
const formSchema = formConfig; |
||||
|
const tableConfig = computed(() => { |
||||
|
return insertConfig(visible); |
||||
|
}); |
||||
|
const opMap: any = { |
||||
|
type: 'add', |
||||
|
fuc: () => {}, |
||||
|
record: {}, |
||||
|
}; |
||||
|
|
||||
|
watch(checkedKeys, () => { |
||||
|
console.log('checkedKeys', checkedKeys.value); |
||||
|
}); |
||||
|
|
||||
|
const handleSelect = (selectedKeys: any, info: any) => { |
||||
|
console.log(selectedKeys, 'selectedKeys'); |
||||
|
console.log(info, 'info'); |
||||
|
}; |
||||
|
|
||||
|
const ServiceSelect = (selectedKeys: any, info: any) => { |
||||
|
console.log(selectedKeys, 'selectedKeys'); |
||||
|
console.log(info, 'info'); |
||||
|
}; |
||||
|
|
||||
|
const onClose = () => { |
||||
|
visible.value = false; |
||||
|
borderVisible.value = false; |
||||
|
serviceVisible.value = false; |
||||
|
}; |
||||
|
|
||||
|
const borderAdd = () => { |
||||
|
treeAddVisible.value = true; |
||||
|
treeAdd.value?.toggle(); |
||||
|
}; |
||||
|
|
||||
|
const borderAddSon = () => { |
||||
|
treeAddVisible.value = true; |
||||
|
}; |
||||
|
|
||||
|
const onEdit = () => { |
||||
|
formRef.value?.triggerSubmit().then(() => { |
||||
|
console.log(formData.value, 'formData.value'); |
||||
|
opMap.fuc && opMap.fuc(formData.value); |
||||
|
visible.value = false; |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
const Sure = () => { |
||||
|
serviceVisible.value = false; |
||||
|
}; |
||||
|
|
||||
|
const editTree = (title: any, key: any) => { |
||||
|
console.log(title, 'title'); |
||||
|
console.log(key, 'key'); |
||||
|
}; |
||||
|
|
||||
|
const deleteTree = (title: any, key: any) => { |
||||
|
console.log(title, 'title'); |
||||
|
console.log(key, 'key'); |
||||
|
Modal.confirm({ |
||||
|
title: '是否确定删除', |
||||
|
icon: createVNode(ExclamationCircleOutlined), |
||||
|
content: createVNode('div', { style: 'color:red;' }, ''), |
||||
|
onOk() { |
||||
|
// http |
||||
|
// .post('/api/parking_merchant/objs/gateInfo/delete', { |
||||
|
// uuid: record.uuid, |
||||
|
// }) |
||||
|
// .then((res) => { |
||||
|
// mainRef.value.nsTableRef.reload(); |
||||
|
// }); |
||||
|
}, |
||||
|
onCancel() { |
||||
|
console.log('Cancel'); |
||||
|
}, |
||||
|
class: 'test', |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
const onSearch = () => { |
||||
|
console.log(searchValue.value); |
||||
|
}; |
||||
|
</script> |
@ -0,0 +1,43 @@ |
|||||
|
import { ref } from 'vue'; |
||||
|
|
||||
|
export const mockData = ref([ |
||||
|
{ |
||||
|
id: 3, |
||||
|
zuzhi: '22', |
||||
|
jituanname: 'axb', |
||||
|
zuzhiname: '张三', |
||||
|
status: '男', |
||||
|
area: '123456789', |
||||
|
address: '1234567889', |
||||
|
person: '1', |
||||
|
phone: '1', |
||||
|
}, |
||||
|
]); |
||||
|
|
||||
|
export const mockData2 = ref([ |
||||
|
{ |
||||
|
information: '铁路局1/产品部1/产品总监1', |
||||
|
}, |
||||
|
]); |
||||
|
|
||||
|
export const treeData = ref([ |
||||
|
{ |
||||
|
title: '铁路总局', |
||||
|
key: '0-0', |
||||
|
children: [ |
||||
|
{ title: '济阳站', key: '0-0-0' }, |
||||
|
{ title: '临沂站', key: '0-0-1' }, |
||||
|
], |
||||
|
}, |
||||
|
]); |
||||
|
|
||||
|
export const treeData2 = [ |
||||
|
{ |
||||
|
title: '全部', |
||||
|
key: '0-0', |
||||
|
children: [ |
||||
|
{ title: '产品部', key: '0-0-0' }, |
||||
|
{ title: '运维部', key: '0-0-1' }, |
||||
|
], |
||||
|
}, |
||||
|
]; |
@ -0,0 +1,51 @@ |
|||||
|
{ |
||||
|
"compilerOptions": { |
||||
|
"allowJs": true, |
||||
|
"baseUrl": "./", |
||||
|
"esModuleInterop": true, |
||||
|
"forceConsistentCasingInFileNames": true, |
||||
|
"jsx": "preserve", |
||||
|
"lib": ["esnext", "dom"], |
||||
|
"module": "esnext", |
||||
|
"moduleResolution": "node", |
||||
|
"noUnusedLocals": true, |
||||
|
"noUnusedParameters": true, |
||||
|
"paths": { |
||||
|
"/@/*": [ |
||||
|
"src/*" |
||||
|
], |
||||
|
"/nerv-lib/*": [ |
||||
|
"../lib/*" |
||||
|
], |
||||
|
"/nerv-base/*": [ |
||||
|
"../lib/saas/*" |
||||
|
], |
||||
|
"/type/*": [ |
||||
|
"../type/*" |
||||
|
] |
||||
|
}, |
||||
|
"resolveJsonModule": true, |
||||
|
"skipLibCheck": true, |
||||
|
"sourceMap": true, |
||||
|
"strict": true, |
||||
|
"strictFunctionTypes": false, |
||||
|
"target": "esnext", |
||||
|
"typeRoots": [ |
||||
|
"../node_modules/@types", |
||||
|
"../node_modules/@vue", |
||||
|
"../type" |
||||
|
], |
||||
|
"types": ["vite/client"] |
||||
|
}, |
||||
|
"include": [ |
||||
|
"src/**/*", |
||||
|
"type/**/*", |
||||
|
"mock/**/*", |
||||
|
"vite.config.ts" |
||||
|
], |
||||
|
"exclude": [ |
||||
|
"node_modules", |
||||
|
"dist", |
||||
|
"**/*.js" |
||||
|
] |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
import configFun from '../build/vite-default.config'; |
||||
|
const dirname = __dirname; |
||||
|
const proxy = { |
||||
|
'/qa': { |
||||
|
target: 'http://100.86.13.179:8080/qa', |
||||
|
// target: 'http://100.86.13.206:8081/qa',
|
||||
|
changeOrigin: true, |
||||
|
rewrite: (path) => path.replace(/^\/qa/, ''), |
||||
|
}, |
||||
|
'/carbon_emission': { |
||||
|
target: 'http://140.210.143.1:14492', |
||||
|
changeOrigin: true, |
||||
|
}, |
||||
|
'/carbon-smart': { |
||||
|
target: 'http://192.168.112.144:8224', |
||||
|
changeOrigin: true, |
||||
|
rewrite: (path) => path.replace(/^\/carbon-smart/, ''), |
||||
|
}, |
||||
|
}; |
||||
|
export default configFun({ dirname, proxy, serviceMode: 'saas', baseDir: '../' }); |