anto: 初始化

This commit is contained in:
zheng020 2026-04-03 11:04:28 +08:00
parent 53f71c76b5
commit 46392a740d
186 changed files with 58306 additions and 0 deletions

View File

@ -0,0 +1,4 @@
> 1%
last 2 versions
ie > 8
chrome > 69

View File

@ -0,0 +1 @@
module.exports = { extends: ['@commitlint/config-conventional'] };

View File

@ -0,0 +1,89 @@
module.exports = {
// type 类型
types: [
{ value: 'feat', name: 'feat: 新增产品功能' },
{ value: 'fix', name: 'fix: 修复 bug' },
{ value: 'docs', name: 'docs: 文档的变更' },
{
value: 'style',
name:
'style: 不改变代码功能的变动(如删除空格、格式化、去掉末尾分号等)',
},
{
value: 'refactor',
name: 'refactor: 重构代码。不包括 bug 修复、功能新增',
},
{
value: 'perf',
name: 'perf: 性能优化',
},
{ value: 'test', name: 'test: 添加、修改测试用例' },
{
value: 'build',
name: 'build: 构建流程、外部依赖变更,比如升级 npm 包、修改 webpack 配置'
},
{ value: 'ci', name: 'ci: 修改了 CI 配置、脚本' },
{
value: 'chore',
name: 'chore: 对构建过程或辅助工具和库的更改,不影响源文件、测试用例的其他操作',
},
{ value: 'revert', name: 'revert: 回滚 commit' },
],
// scope 类型,建议前端负责人根据该项目的模块命名
scopes: [
['root', 'root 相关'],
['module-1', 'module-1 相关'],
['publish', '版本发布'],
['other', '其他修改'],
// 如果选择 custom ,后面会让你再输入一个自定义的 scope , 也可以不设置此项, 把后面的 allowCustomScopes 设置为 true
['custom', '以上都不是?我要自定义'],
].map(([value, description]) => {
return {
value,
name: `${value.padEnd(30)} (${description})`
};
}),
// allowTicketNumber: false,
// isTicketNumberRequired: false,
// ticketNumberPrefix: 'TICKET-',
// ticketNumberRegExp: '\\d{1,5}',
// 可以设置 scope 的类型跟 type 的类型匹配项,例如: 'fix'
/*
scopeOverrides: {
fix: [
{ name: 'merge' },
{ name: 'style' },
{ name: 'e2eTest' },
{ name: 'unitTest' }
]
},
*/
// 覆写提示的信息
messages: {
type: "请确保你的提交遵循了原子提交规范!\n选择你要提交的类型:",
scope: '\n选择一个 scope (可选):',
// 选择 scope: custom 时会出下面的提示
customScope: '请输入自定义的 scope:',
subject: '填写一个简短精炼的描述语句:\n',
body: '添加一个更加详细的描述,可以附上新增功能的描述或 bug 链接、截图链接 (可选)。使用 "|" 换行:\n',
breaking: '列举非兼容性重大的变更 (可选):\n',
footer: '列举出所有变更的 ISSUES CLOSED (可选)。 例如.: #31, #34:\n',
confirmCommit: '确认提交?',
},
// 是否允许自定义填写 scope ,设置为 true ,会自动添加两个 scope 类型 [{ name: 'empty', value: false },{ name: 'custom', value: 'custom' }]
// allowCustomScopes: true,
allowBreakingChanges: ['feat', 'fix'],
// skip any questions you want
// skipQuestions: [],
// subject 限制长度
subjectLimit: 100,
// breaklineChar: '|', // 支持 body 和 footer
// footerPrefix : 'ISSUES CLOSED:'
// askForBreakingChangeFirst : true,
};

8
txw-mhzc-web/.env Normal file
View File

@ -0,0 +1,8 @@
VUE_APP_ENV=dev
VUE_APP_MODEL=local
VUE_APP_CDN_PATH=/view/mhzc
VUE_APP_ROUTER_BASE=/view/mhzc
VUE_APP_API_BASE_URL=
VUE_APP_API_TIMEOUT=15000
VUE_APP_CSS_EXTRACT=false

View File

@ -0,0 +1,16 @@
###
# @Descripttion:
# @Version: 1.0
# @Author: wjx
# @Date: 2024-02-04 14:09:22
# @LastEditors: wjx
# @LastEditTime: 2024-04-02 13:48:07
###
VUE_APP_ENV=dev
VUE_APP_MODEL=local
VUE_APP_CDN_PATH=/view/mhzc
VUE_APP_ROUTER_BASE=/view/mhzc
VUE_APP_API_BASE_URL=
VUE_APP_DEV_SERVER_PORT=9002
VUE_APP_MOCK=true
VUE_APP_AUTO_ROUTER=false

View File

@ -0,0 +1,6 @@
VUE_APP_ENV=prod
VUE_APP_MODEL=online
VUE_APP_CDN_PATH=/view/mhzc
VUE_APP_ROUTER_BASE=/view/mhzc
VUE_APP_API_BASE_URL=
VUE_APP_AUTO_ROUTER=false

15
txw-mhzc-web/.env.test Normal file
View File

@ -0,0 +1,15 @@
###
# @Descripttion:
# @Version: 1.0
# @Author: wjx
# @Date: 2024-01-26 10:04:49
# @LastEditors: wjx
# @LastEditTime: 2024-01-26 10:06:52
###
NODE_ENV=production
VUE_APP_ENV=beta
VUE_APP_MODEL=online
VUE_APP_CDN_PATH=/test
VUE_APP_ROUTER_BASE=/test
VUE_APP_API_BASE_URL=/test/api
VUE_APP_API_BASE_URL2=/test/api

View File

@ -0,0 +1,4 @@
**/sdk/lib
**/sdk/es
**/sdk/dist
node_modules/*

18
txw-mhzc-web/.eslintrc.js Normal file
View File

@ -0,0 +1,18 @@
const eslintConfig = require('@gtff/tdesign-gt-vue/.eslintrc.js');
const projectRules = {
'no-shadow': 0,
'import/no-cycle': 0,
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
},
],
};
eslintConfig.rules = {
...eslintConfig.rules,
...projectRules,
};
module.exports = eslintConfig;

9
txw-mhzc-web/.gitattributes vendored Normal file
View File

@ -0,0 +1,9 @@
* text=auto
*.c text
*.h text
*.sln text eol=crlf
*.png binary
*.jpg binary

27
txw-mhzc-web/.gitignore vendored Normal file
View File

@ -0,0 +1,27 @@
.DS_Store
node_modules
/dist
/public/static/svg.js
/public/static_res/svg.js
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# release packages
*.zip
*.gz
*.tar

1
txw-mhzc-web/.yarnrc Normal file
View File

@ -0,0 +1 @@
registry "http://registry.npm.gov.cn"

10
txw-mhzc-web/Dockerfile Normal file
View File

@ -0,0 +1,10 @@
## 前端公共镜像
FROM ccr.xc01.cloud.sat.tax/goff/arm-webnginx:latest
COPY /devops/nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
WORKDIR /app
COPY ./ /app
#ADD tsf-consul-template-docker.arm /root/
ADD dist /usr/local/openresty/nginx/html
# 修改host文件
CMD ["sh", "-ec", "/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf "]

0
txw-mhzc-web/README.md Normal file
View File

View File

@ -0,0 +1,29 @@
let config = {
presets: [
[
'@vue/cli-plugin-babel/preset',
{
useBuiltIns: 'entry',
},
],
],
};
if (process.env.VUE_APP_IE === 'true') {
config = {
presets: [
'@vue/app',
[
'@babel/preset-env',
{
modules: false,
corejs: 3,
useBuiltIns: 'usage',
},
],
],
plugins: ['@babel/plugin-transform-runtime'],
};
}
module.exports = config;

View File

@ -0,0 +1,7 @@
registry "https://registry.npm.taobao.org"
"@govcloud:registry" "https://rgnpm.pdcts.com.cn"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
node_gyp "/data/npm/node_global/lib/node_modules/node-gyp/bin/node-gyp.js"
sass_binary_site "https://npm.taobao.org/mirrors/node-sass"
nodejieba_binary_host_mirror "https://npm.taobao.org/mirrors/nodejieba"
strict-ssl false

178
txw-mhzc-web/devops/Jenkinsfile vendored Normal file
View File

@ -0,0 +1,178 @@
def depots = [
[
name: "${PROJECT_NAME}",
origin: "${GIT_SSH_URL}",
]
]
def getCheckoutJob(depot) {
return {
dir(path: "./modules/${depot.get('name')}") {
checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: depot.get('origin'), credentialsId: env.CREDENTIALS_ID]]])
script {
if (depot.get('name') == 'coding-artifacts') {
sh 'git submodule sync'
sh 'git submodule update --init --recursive'
}
}
}
}
}
def application_name = env.APPLICATION_NAME.split(",")
def ports = env.PROTOCOL_PORTS.split(",")
def jobs = []
application_name.eachWithIndex{
it,i -> jobs[i]=[application_name[i],ports[i]]
}
def parallelStagesMap = jobs.collectEntries {
["检测tsf应用${it[0]}" : generateStage(it)]
}
def generateStage(jdata) {
echo '${project_pub_name}'
return {
stage("stage: ${project_pub_name}") {
echo "${jdata[0]}"
checkTsfApplication secretId: "${env.SECRET_ID}", secretKey: "${env.SECRET_KEY}", applicationName: "${project_pub_name}", applicationType: "${env.APPLICATION_TYPE}", endpoint: "${env.TSF_ENDPOINT}", microserviceType: "${env.MICROSERVICE_TYPE}"
}
}
}
def parallelStagesMap2 = jobs.collectEntries {
["部署tsf应用${it[0]}" : generateStage2(it)]
}
def generateStage2(jdata) {
echo '${project_pub_name}'
return {
stage("stage: ${project_pub_name}") {
echo "${jdata[0]}"
deployTsf secretId: "${env.SECRET_ID}", secretKey: "${env.SECRET_KEY}", endpoint: "${env.TSF_ENDPOINT}", applicationName: "${project_pub_name}", clusterName: "${env.CLUSTER_NAME}", namespace: "${DEPLOY_ENV}", groupName: "${project_pub_name}-${DY_ENV}", pkgVersion: "${VERSION}-${DEPLOY_ENV}", protocolPorts: "[{Protocol:\"TCP\",Port:"+"${jdata[1]}"+",TargetPort:" +"${jdata[1]}"+"}]", accessType: "${env.ACCESS_TYPE}", updateType: "${env.UPDATE_TYPE}", businessLogNames: "${logpath}"
}
}
}
def deploy_env = "${DEPLOY_ENV}"
def createDY_ENV() {
return deploy_env.split("-")[1]
}
def createName() {
return deploy_env.split("-")[0]
}
// TODO: 这里应该要根据实际的运行域决定,待整理规范
def getClusterName() {
if (env.DEPLOY_ENV.contains("dev") ){
return "IPC-public-开发环境"
}
else if (env.DEPLOY_ENV.contains("test") ){
return "IPC-public-测试环境"
}
else {
return "IPC-public-演示环境"
}
}
pipeline {
agent any
stages {
stage("检出项目代码仓库") {
steps {
checkout([$class: 'GitSCM', branches: [[name: env.SUB_BRANCH]],
userRemoteConfigs: [[url: "${env.SUB_GIT_REPO_URL}/${project_name}.git", credentialsId: env.SUB_CREDENTIALS_ID]]])
script {
sh """
echo "machine git.code.tencent.com" > ~/.netrc
echo "login ${GIT_USERNAME}" >> ~/.netrc
echo "password ${GIT_PASSWORD}" >> ~/.netrc
"""
sh 'cat ~/.netrc'
sh 'git submodule sync'
sh 'git submodule update --init --recursive'
}
}
}
stage('检出子仓库') {
steps {
script {
checkoutJobs = [:]
depots.findAll{
depot -> (depot.get('origin') != '')
}.each { depot ->
echo "submodule > ${depot}"
checkoutJobs[depot.get('name')] = getCheckoutJob(depot)
checkoutJobs['failFast'] = false
}
parallel checkoutJobs
}
}
}
stage('校验tsf环境') {
steps{
script {
parallel parallelStagesMap
}
}
}
stage('编译构建') {
agent {
docker {
image 'ipcmaven.pdcts.com.cn:8082/npm:tsf'
args '-u root --network=host -v /var/run/docker.sock:/var/run/docker.sock --add-host=raw.githubusercontent.com:199.232.28.133 -v /usr/bin/docker:/usr/bin/docker -v /etc/hosts:/etc/hosts'
reuseNode true
}
}
steps {
script {
withCredentials([usernamePassword(credentialsId: "${DOCKER_REGISTRY_CREDENTIALS_ID}", usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS')]) {
sh """
pwd
ls -ls .
ls -ls ./modules
npm config ls
mv ./modules/${DEPOT_NAME}/build .
# 编译构建
bash -e build/build.sh ${TSF_REPO} ${project_pub_name} ${HARBOR_ACCOUNT_NAME} ${HARBOR_PASSWORD} ${image_version} ${BUILD_TYPE} ${NPM_BUILD_SCRIPT}
"""
}
}
}
}
stage('触发tsf部署') {
when {
environment name:'DEPLOY_ENABLE', value:'true'
}
steps {
script {
parallel parallelStagesMap2
}
sh """
# 如果还要执行别的一些sh命令可在此添加比如企业微信的通知机器人
"""
}
}
}
environment {
PROTOCOL = 'http' // 系统预留参数
APPLICATION_TYPE = 'C' // 项目类型,系统预留参数
MICROSERVICE_TYPE = 'N' // 系统预留参数
DY_ENV = createDY_ENV() // 环境
PName = createName() // 项目组名passid和里约网关passid一致
image_version = "${VERSION}-${DEPLOY_ENV}" // 镜像版本
project_name = "${APPLICATION_NAME}" // 项目工程名称
project_pub_name = "${PName}-${GIT_PROJECT_NAME ? GIT_PROJECT_NAME : project_name}" // TSF 项目名称
UPDATE_TYPE = "1" // 更新类型,运维预留参数,暂时未启用
ACCESS_TYPE = "2" // 制品类型,运维预留参数,暂时未启用
BUILD_TYPE = "${BUILD_TYPE}" // 编译类型
CLUSTER_NAME = getClusterName() // 部署组名称
logpath = "${PName}-web-logs" // 日志名称
}
}

View File

@ -0,0 +1,78 @@
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('产物构建') {
steps {
script {
env.TAG_VERSION = new Date().format('yyyyMMdd-HHmmss')
// 分解参数
def envs = env.ENV_INFO.split("\\|")
env.DEPLOY_ENV = envs[0]
env.PKG_VERSION = env.TAG_VERSION+'-'+env.DEPLOY_ENV
echo 'PKG_VERSION is: ' + env.PKG_VERSION
}
sh '''ls -la
pwd
echo '===== 开始解压node_modules ====='
tar -xf node_modules.tar.gz
echo '===== 完成解压node_modules ====='
echo '===== 开始 yarn 构建 ====='
yarn build:site
echo '===== 完成 yarn 构建 ====='
echo '===== 开始写入Dockerfile ====='
cat << EOF > Dockerfile
## 前端公共镜像
FROM ccr.ccs.tencentyun.com/tdesign-gov/tsf-web-public:0.0.1
## 添加代码压缩包到镜像中
ADD dist /usr/local/openresty/nginx/html/
WORKDIR /usr/local/openresty/nginx/
CMD ["sh", "-ec", "sh /root/tsf-consul-template-docker/script/start.sh; exec /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf"]
EOF
cat Dockerfile
echo '===== 完成写入Dockerfile ====='
'''
}
}
stage('制作镜像') {
steps {
sh '''ls -la
pwd
echo '===== 开始构建docker部署镜像 ====='
docker build -t ${DOCKER_REPO}/${PROJECT_MODEL_NAME}:${PKG_VERSION} .
docker image ls
echo '===== 完成构建docker部署镜像 ====='
'''
}
}
stage('推送镜像') {
steps {
sh '''ls -la
pwd
echo '===== 开始推送docker部署镜像 ====='
docker login --username=${DOCKER_USERNAME} --password=${DOCKER_PASSWORD} ${DOCKER_REPO}
docker push ${DOCKER_REPO}/${PROJECT_MODEL_NAME}:${PKG_VERSION}
echo '===== 完成推送docker部署镜像 ====='
'''
}
}
}
}

View File

@ -0,0 +1,41 @@
# 政务云 coding 标准发布脚本
## 接入必读须知,以下变量配置需在 coding 配置参数中使用
TSF 接入系统固定变量
| 名称 | 默认值 | 描述 | 类型 | 说明 |
| ------------------- | ----------------------------------------- | -------------------- | ----------- | -------------------------------------------------------------------------- |
| VERSION | v0.0.1 | 版本号 | String | 发布版本号 |
| DEPLOY_ENABLE | true | - | Boolean | 是否自动发布,运维预留参数 |
| TSF_REPO | `ccr.ccs.tencentyun.com/tsf_100013631257` | TSF 镜像仓库 | String | 用于拉取制品镜像地址 |
| HARBOR_ACCOUNT_NAME | 100006274537 | TSF 发布账号 | String | - |
| HARBOR_PASSWORD | 已运维配置为准 | TSF 镜像发布账号密码 | String | - |
| SUB_CREDENTIALS_ID | 已运维配置为准 | 工蜂 Coding 凭据 | Coding 凭据 | 用于拉取 git 仓库代码的账号,需在自己的项目或项目组中关联`ipc_csig3`该账号 |
| TSF_ENDPOINT | `tsf.tencentcloudapi.com` | TSF 发布服务地址 | String | - |
| APPLICATION_TYPE | C | - | String | - |
| MICROSERVICE_TYPE | N | - | String | - |
| PROTOCOL_PORTS | 80 | 容器端口 | Number | 部署 tsf 容器端口 |
| ACCESS_TYPE | 2 | - | Number | - |
| SECRET_ID | 以运维配置为准 | tsf 认证密钥 | Password | 密钥 |
| SECRET_KEY | 以运维配置为准 | tsf 认证密钥 key | Password | 密钥 key |
| remote_passwd | 以运维配置为准 | tsf 认证密钥 key | Password | 密钥 key,暂未用到 |
| TSF 接入需配置的变量 | 名称 | 类型 | 说明 |
| --- | --- | --- | --- |
| SUB_GIT_REPO_URL | git 仓库地址 | String | git 代码仓库 |
| DEPLOY_ENV | 发布项目环境 | String | 环境设置 `${项目}-dev` |
| NPM_BUILD_SCRIPT | npm 执行脚本 | String | npm 脚本参数 |
| GIT_USERNAME | git 账号 | String | 用于拉取 submodule |
| GIT_PASSWORD | git 密码 | String | 用于拉取 submodule |
| SUB_BRANCH | 分支名称 | String | 分支名称 |
| APPLICATION_NAME | 项目工程名称 | String | 项目工程名称 |
| GIT_PROJECT_NAME | tsf 打包发布名称 | String | tsf 打包发布名称 |
| BUILD_TYPE | 编译类型 | String | `node | static | default ` |
> 开发接入 tsf 需要更改未 TSF 接入需配置的变量
```bash
# doker 登录
doker login --username=100006274537 ccr.ccs.tencentyun.com
```

View File

@ -0,0 +1,103 @@
#!/bin/bash
# 使用maven编译打包源码
image_repo=$1
project_names=$2
docker_username=$3 ### 镜像仓库用户名
docker_password=$4 ### 镜像仓库库用户密码
version=$5 ### 镜像版本变量
BUILD_TYPE=$6
NPM_BUILD_SCRIPT=$7
registry_url=`echo ${image_repo}|awk -F / '{print $1}'`
function build_dockerfile(){
echo "+++++++++++++++start build dockerfile++++++++++++++++++++++"
echo "$project_name"
tar_path=`find . -name "dist.tar.gz"`
echo "+++++++++++ ${tar_path} +++++++"
if [ -z "${tar_path}" ];then
echo "need tar.gz package is not exit"
exit 222
fi
targz=`find . -name "dist.tar.gz"|awk -F / '{print $NF}'`
#cp -r ${tar_path} .
cat << EOF > Dockerfile
## 前端公共镜像
FROM ccr.ccs.tencentyun.com/tsf_100013631257/tsf-web-public-image:latest
## 定义变量
ENV workdir /usr/local/openresty/nginx/
## 添加代码压缩包到镜像中
ADD ${targz} \${workdir}/html/
RUN mv \${workdir}/html/dist/* \${workdir}/html/
WORKDIR \${workdir}
CMD ["sh", "-ec", "sh /root/tsf-consul-template-docker/script/start.sh; exec /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf"]
EOF
}
function juge_status( ){
if [ $? -ne 0 ];then
echo "$1" "failed"
exit 111
fi
}
function build_image(){
echo "+++++++++++++++start build docker image++++++++++++++++++++++"
echo ${registry_url}
docker login --username=${docker_username} --password=${docker_password} ${registry_url} && docker build -t ${image_repo}/${project_name}:${version} . && docker push ${image_repo}/${project_name}:${version}
juge_status build_imag
}
function build() {
# 编译
echo "+++++++++++++++start compiler++++++++++++++++++++++"
echo '安装npm依赖 ===> start'
# yarn config set registry https://rgnpm.pdcts.com.cn
# yarn config set sass_binary_site "https://npm.taobao.org/mirrors/node-sass"
time yarn install
echo '安装npm依赖 ===> end'
if [ $? -ne 0 ]
then
echo "Failed to yarn install"
exit -1
fi
# 运行编辑+打包命令. 生成dist.tar.gz
echo '构建前端工程 ===> start'
# node server 工程打包
if [ $BUILD_TYPE === 'node' ]; then
echo "yarn ${NPM_BUILD_SCRIPT}"
yarn ${NPM_BUILD_SCRIPT}
mv ./node_modules ./dist/
echo $(ls ./dist/)
# 静态文件打包
elif [ $BUILD_TYPE === 'static' ]; then
mv html dist
# - 前端工程打包
else
yarn ${NPM_BUILD_SCRIPT}
echo "yarn ${NPM_BUILD_SCRIPT}"
fi
tar zcfv dist.tar.gz --exclude ./dist/dev.html dist/*
echo '构建前端工程 ===> end'
if [ $? -ne 0 ]; then
echo "Failed to build ${project_name}."
exit 128
fi
}
function execu(){
arr_service_list=$(echo ${project_names//,/ })
for service in ${arr_service_list[@]};do
project_name=$service
build_dockerfile $service
build_image
done
}
build
execu

View File

@ -0,0 +1,3 @@
@%VUE_APP_CDN_PATH%@=/multiple
@%VUE_APP_ROUTER_BASE%@=/multiple
@%VUE_APP_API_BASE_URL%@=/multiple/Api

View File

@ -0,0 +1,24 @@
#!/bin/bash
filename=$1
IFS=$'\n\n'
if [ ! -n "$1" ] ;then
echo "请输入要替换的配置文件名"
else
for line in `cat $filename`
do
# echo $line
OLD_IFS="$IFS"
IFS="="
array=($line)
IFS="$OLD_IFS"
old_str=${array[0]}
new_str=${array[1]}
echo "正在将 '${old_str}' 替换为 '${new_str}'"
sed -ie "s#$old_str#$new_str#g" `grep "$old_str" -rl ./ | grep -v "$1"`
echo "'${old_str}' 替换成功"
done
echo "执行成功"
fi

View File

@ -0,0 +1,110 @@
worker_processes auto;
worker_rlimit_nofile 65535;
error_log logs/error.log;
pid /var/run/nginx.pid;
daemon off;
events {
worker_connections 2048;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_referer"';
access_log logs/access.log main;
client_max_body_size 100m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss application/javascript text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /usr/local/openresty/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include servers/*.conf;
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
server_tokens off;
#root /usr/local/openresty/nginx/html/;
# 重写env.config.js路径
location ~ .+/env.config.js$ {
rewrite ^(.*)$ /env.config.js break;
root /usr/local/openresty/nginx/html;
}
# 重写svg.js路径
location ~ .+/static_res/svg.js$ {
rewrite ^(.*)$ /static_res/svg.js break;
root /usr/local/openresty/nginx/html;
}
# 重写/assets/img/中图片资源路径
location ~ .+/assets_res/img/ {
rewrite ^.*(\/assets_res\/img\/.*)$ $1 break;
root /usr/local/openresty/nginx/html;
}
# 主入口配置
location / {
add_header Cache-Control 'proxy-revalidate';
alias /usr/local/openresty/nginx/html/;
index index.html;
try_files $uri $uri/ /index.html;
if ($request_filename ~* .*.(html|htm)$)
{
expires -1s;
}
if ($request_filename ~* .*.(gif|jpg|jpeg|png|svg)$)
{
expires 30d;
}
if ($request_filename ~ .*.(js|css)$)
{
expires 12h;
}
}
location /ping {
return 200 "oK";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

View File

@ -0,0 +1,6 @@
NODE_ENV=production
VUE_APP_ENV=prod
VUE_APP_MODEL=online
VUE_APP_CDN_PATH=@%VUE_APP_CDN_PATH%@
VUE_APP_ROUTER_BASE=@%VUE_APP_ROUTER_BASE%@
VUE_APP_API_BASE_URL=@%VUE_APP_API_BASE_URL%@

View File

@ -0,0 +1,14 @@
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": [
"src/*"
]
}
},
"exclude": [
"node_modules",
"dist"
]
}

View File

@ -0,0 +1,101 @@
{
"Response": {
"RequestId": "6a4740988322d987",
"Error": null,
"Data": {
"djxh": "10214406000000029933",
"gdslxDm": "1",
"ssdabh": "4258920210810ZWJ22E0",
"nsrsbh": "4258920210810ZWJ22E0",
"nsrmc": "zwjKFtext1",
"kzztdjlxDm": "1110",
"djzclxDm": "210",
"fddbrxm": "张三1",
"fddbrsfzjlxDm": "227",
"scjydz": "家家家家",
"fddbrsfzjhm": "123321123",
"scjydzxzqhszDm": "440605",
"nsrztDm": "03",
"hyDm": "6299",
"zcdz": "家加家",
"zcdzxzqhszDm": "440605",
"jdxz_dm": null,
"dwlsgxDm": "90",
"gdghlxDm": "1",
"djjgDm": "14406821200",
"djrq": "2021-09-01 00:00:00.0",
"zzjgDm": "810ZWJ22E",
"kqccsztdjbz": "N",
"zgswjDm": "14406821200",
"zgswskfjDm": "14406821200",
"ssglyDm": null,
"fjmqybz": "N",
"swdjblbz": "Y",
"shxydm": "4258920210810ZWJ22E0",
"pgjgDm": null,
"nsrztlxDm": null,
"qyhxlbDm": null,
"qyhxly": null,
"hjszd": null,
"jyfw": "钱钱钱",
"zcdlxdh": "13333333333",
"zcdyzbm": "144000",
"scjydlxdh": "13300000000",
"scjydyzbm": "144000",
"hsfsDm": "1 ",
"cyrs": 1,
"wjcyrs": 0,
"hhrs": 0,
"ggrs": 0,
"gdgrs": 0,
"zzjglxDm": "1",
"kjzdzzDm": "100",
"wz": null,
"swdlrlxdh": null,
"swdlrdzxx": null,
"zczb": 0.0,
"tzze": 0.0,
"zrrtzbl": 1.0,
"wztzbl": 0.0,
"gytzbl": 0.0,
"gykglxDm": "1",
"zfjglxDm": "0",
"bzfsDm": null,
"fddbrgddh": null,
"fddbryddh": "13300000000",
"fddbrdzxx": null,
"cwfzrxm": "张三1",
"cwfzrsfzjzlDm": "227",
"cwfzrsfzjhm": "1233211231",
"cwfzrgddh": null,
"cwfzryddh": "13300000000",
"cwfzrdzxx": null,
"bsrxm": "张三1",
"bsrsfzjzlDm": "227",
"bsrsfzjhm": "1233211231",
"bsrgddh": null,
"bsryddh": "13300000000",
"bsrdzxx": null,
"lsswdjyxqq": null,
"lsswdjyxqz": null,
"swdlrnsrsbh": null,
"swdlrmc": null,
"whsyjsfjfxxdjbz": null,
"zzsjylb": null,
"yhsjnfsDm": null,
"zsxmcxbzDm": null,
"zzsqylxDm": null,
"gjhdqszDm": null,
"ygznsrlxDm": "11",
"qyglcjbh": null,
"qyssjtDm": null,
"nsrywmc": null,
"ywzcdz": null,
"fddbrzs": null,
"fddbrzsyzbm": null,
"zcxs": null,
"szgjdqnsrsbh": null,
"fyhyxxList": null
}
}
}

View File

@ -0,0 +1,8 @@
{
"Response": {
"Error": {
"Code": "InvalidParameter",
"Message": "参数错误。。personInfoQueryParam_teamId,团队ID不能为空;"
}
}
}

157
txw-mhzc-web/mock/index.js Normal file
View File

@ -0,0 +1,157 @@
/*
* @Description: mock数据方法
* @Author: smileswlin
* @LastEditor: smileswlin
* @Date: 020-05-24 21:16:49
* @LastEditTime: 2022-02-22 17:33:24
*/
const path = require('path');
const fs = require('fs'); // 引入文件系统模块
const Mock = require('mockjs'); // mockjs 导入依赖模块
// const { file } = require('@gtff/tdesign-gt-vue/icon/icon-map');
/**
* 读取json文件
* @param filePath
* @returns {any}
*/
function getMockFile(filePath) {
// 读取指定json文件
const json = fs.readFileSync(filePath, 'utf-8');
// 解析并返回
return JSON.parse(json);
}
/**
* 读取文件夹下所有文件名并替换为路由模式字符串 eg: user_bulk__delete.json => /user/bulk_delete
* @param jsonPath
* @returns {{}}
*/
function getMockRouter(jsonPath) {
const jsonFiles = [];
try {
// 检查传入目录是否存在
fs.accessSync(jsonPath);
const files = fs.readdirSync(jsonPath);
files.forEach((item) => {
let fileName = item;
fileName = `/${item.replace(/_/g, '/').replace('.json', '')}`;
fileName = fileName.replace(/\/\//g, '_'); // 若出现‘// 则改为_
jsonFiles.push(fileName);
});
} catch (e) {
console.log('error', e);
}
return jsonFiles;
}
/**
* @description: 设置mock数据路由, 对应目录下创建get或者post目录该目录下的文件则为url请求地址 eg: user_bulk__delete.json => /user/bulk_delete
* @param app {Object} app对象
* @param method {String} 请求方式get或者post
* @param urlPrefix {String} url的前缀
* @param dirPath {String} 对应的目录
* @return: undefined
*/
exports.setMock = function (app, method, urlPrefix, dirPath) {
const newDirPath = dirPath || path.join(process.cwd(), 'mock', method);
getMockRouter(newDirPath).forEach((item) => {
app[method](`${urlPrefix}${item}`, (req, res) => {
// 每次响应请求时读取mock data的json文件
// util.getMockFile方法定义了如何读取json文件并解析成数据对象
const jsonPath = path.resolve(newDirPath, `${item.substr(1).replace(/_/g, '__').replace(/\//g, '_')}.json`);
const json = getMockFile(jsonPath);
res[method === 'get' ? 'json' : 'send'](Mock.mock(json)); // 将json传入 Mock.mock 方法中,生成的数据返回给浏览器
});
});
};
/**
* @description: 已知当前目录输出目录下所有文件信息文件地址文件名
* @param rootDir {String} 当前目录
* @param files {Array} 目录下的文件
* 1. 输入根目录默认目录下文件为空
* 2. 向下读取文件
* 3. 判断是否是文件
* 如果是合法文件添加
* 如果是目录回到到第2步
* 如果读取为空
*/
const formattedFiles = (rootDir, files = []) => {
const childFiles = fs.readdirSync(rootDir);
if (childFiles && childFiles.length && childFiles.length > 0) {
// eslint-disable-next-line consistent-return
childFiles.forEach((f) => {
const url = path.join(rootDir, f);
const isFile = fs.statSync(url).isFile();
if (isFile) {
// 判断文件是否 .DS_Store
const isValid = f !== '.DS_Store';
const ele = {
jsonPath: url,
pathName: url.replace('.json', ''),
fileName: f,
};
isValid && files.push(ele);
} else {
return formattedFiles(url, files);
}
});
}
return files;
};
/**
* @description: 设置mock数据路由, 对应目录下创建get或者post目录再请求目录下创建业务目录demo(没有层级层级的限制)该目录下的文件则为url请求地址 eg: fail.json => /demo/fail
* @param app {Object} app对象
* @param method {String} 请求方式get或者post
* @param urlPrefix {String} url的前缀
* @param dirPath {String} 对应的目录
* @return: undefined
*/
exports.setMockByBasePath = (app, method, urlPrefix, dirPath) => {
// 读取到根目录
const rootDir = dirPath || path.join(process.cwd(), 'mock', method);
const files = formattedFiles(rootDir).map((f) => {
// eslint-disable-next-line no-param-reassign
f.pathName = f.pathName.replace(rootDir, '').replace(/\\/g, '/');
return f;
});
files.forEach(({ pathName, jsonPath }) => {
app[method](`${urlPrefix}${pathName}`, (req, res) => {
// 每次响应请求时读取mock data的json文件
// util.getMockFile方法定义了如何读取json文件并解析成数据对象
const json = getMockFile(jsonPath);
res[method === 'get' ? 'json' : 'send'](Mock.mock(json)); // 将json传入 Mock.mock 方法中,生成的数据返回给浏览器
});
});
};
/**
* @description: 设置mock数据路由, 增加子目录mock/xxx/post 目录下的文件为url请求地址 eg: user_bulk__delete.json => /xxx/abc/user/bulk_delete
* @param app {Object} app对象
* @param methods {Array} 请求方式,eg: ['get', 'post']
* @param urlPrefix {String} url的前缀
* @return: undefined
*/
exports.mockSubDirs = function (app, methods, urlPrefix) {
const rootDirPath = path.join(process.cwd(), 'mock');
const files = fs.readdirSync(rootDirPath);
const dirs = files.filter((item) => fs.lstatSync(path.resolve(rootDirPath, item)).isDirectory());
dirs.forEach((dir) => {
const subUrlPrefix = dir.replace(/(?:[^_])_(?:[^_])/g, '/').replace(/__/g, '_');
const dirPath = path.join(process.cwd(), 'mock', dir);
methods.forEach((method) => {
const rootUrlPrefix = urlPrefix[urlPrefix.length] === '/' ? urlPrefix.slice(0, -1) : urlPrefix;
const urlPrefixResult = `${rootUrlPrefix}${subUrlPrefix}`;
const dirPathResult = `${dirPath}/${method}`;
console.log('mock with method:', method, ' urlPrefix:', urlPrefixResult, ' dir:', dirPathResult);
exports.setMock(app, method, urlPrefixResult, dirPathResult);
});
});
};

View File

@ -0,0 +1,120 @@
{
"Response": {
"Data": {
"PageNumber": "1",
"PageSize": "10",
"Total": "4",
"List": [
{
"Id": "1",
"sfzlMc": "增值税",
"zspmMc": "征收品目1",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "2",
"sfzlMc": "增值税",
"zspmMc": "征收品目2",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "3",
"sfzlMc": "增值税",
"zspmMc": "征收品目3",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "4",
"sfzlMc": "增值税",
"zspmMc": "征收品目4",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "5",
"sfzlMc": "增值税",
"zspmMc": "征收品目5",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "6",
"sfzlMc": "增值税",
"zspmMc": "征收品目6",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "7",
"sfzlMc": "增值税",
"zspmMc": "征收品目7",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "8",
"sfzlMc": "增值税",
"zspmMc": "征收品目8",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "9",
"sfzlMc": "增值税",
"zspmMc": "征收品目9",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "10",
"sfzlMc": "增值税",
"zspmMc": "征收品目10",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "11",
"sfzlMc": "增值税",
"zspmMc": "征收品目11",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
},
{
"Id": "12",
"sfzlMc": "增值税",
"zspmMc": "征收品目12",
"skssqq": "2023-01",
"skssqz": "2023-01",
"gdsbqx": "2023-01-15",
"sqyqsbqx": "2023-02-15"
}
]
}
}
}

View File

@ -0,0 +1,5 @@
{
"Response": {
"Data": "success"
}
}

117
txw-mhzc-web/nginx.conf Normal file
View File

@ -0,0 +1,117 @@
worker_processes auto;
worker_rlimit_nofile 65535;
error_log logs/error.log;
pid /var/run/nginx.pid;
daemon off;
events {
worker_connections 2048;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_referer"';
access_log logs/access.log main;
client_max_body_size 100m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss application/javascript text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /usr/local/openresty/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include servers/*.conf;
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
server_tokens off;
#root /usr/local/openresty/nginx/html/;
# 重写env.config.js路径
location ~ .+/env.config.js$ {
rewrite ^(.*)$ /env.config.js break;
root /usr/local/openresty/nginx/html;
}
# 重写svg.js路径
location ~ .+/static_res/svg.js$ {
rewrite ^(.*)$ /static_res/svg.js break;
root /usr/local/openresty/nginx/html;
}
# 卸载context
location /view/mhzc {
alias /etc/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
# 重写/assets/img/中图片资源路径
location ~ .+/assets_res/img/ {
rewrite ^.*(\/assets_res\/img\/.*)$ $1 break;
root /usr/local/openresty/nginx/html;
}
# 主入口配置
location / {
add_header Cache-Control 'proxy-revalidate';
alias /usr/local/openresty/nginx/html/;
index index.html;
try_files $uri $uri/ /index.html;
if ($request_filename ~* .*.(html|htm)$)
{
expires -1s;
}
if ($request_filename ~* .*.(gif|jpg|jpeg|png|svg)$)
{
expires 30d;
}
if ($request_filename ~ .*.(js|css)$)
{
expires 12h;
}
}
location /ping {
return 200 "oK";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

View File

@ -0,0 +1,8 @@
{
"verbose": true,
"watch": [
"mock/*",
"vue.config.js",
".env*"
]
}

22112
txw-mhzc-web/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

108
txw-mhzc-web/package.json Normal file
View File

@ -0,0 +1,108 @@
{
"name": "znsb-mhzc",
"description": "znsb-mhzc",
"version": "0.1.0-alpha.0",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"dev:mock": "cross-env VUE_APP_MOCK=true nodemon -x vue-cli-service serve",
"serve": "vue-cli-service serve",
"build:site": "vue-cli-service build",
"build": "vue-cli-service build",
"build:site:dev": "vue-cli-service build --mode development",
"build:site:test": "vue-cli-service build --mode test",
"lint": "vue-cli-service lint",
"lint:style": "vue-cli-service lint:style",
"changelog": "conventional-changelog -p custom-config -i CHANGELOG.md -s -r 0",
"commit": "git-cz",
"@vue/babel-helper-vue-jsx-merge-props": "1.4.0",
"@vue/babel-preset-jsx": "1.4.0"
},
"dependencies": {
"@cssyq/ggzc-web": "^1.0.7",
"@fortawesome/fontawesome-free": "^7.0.1",
"@gt4/common-front": "2.0.113",
"@gtff/tdesign-gt-vue": "1.4.0",
"@wecity/tdesign-vue-ie": "1.3.1",
"axios": "^0.21.1",
"babel-polyfill": "^6.26.0",
"clipboard": "^2.0.8",
"core-js": "^3.6.5",
"css-split-webpack-plugin": "0.2.6",
"dayjs": "^1.10.4",
"echarts": "^5.5.0",
"lodash-es": "^4.17.21",
"qrcodejs2": "0.0.3",
"regenerator-runtime": "^0.13.9",
"tdesign-icons-vue": "0.0.8",
"tdesign-vue": "1.4.0",
"vue": "~2.6.11",
"vue-echarts": "^6.6.9",
"vue-pdf": "^4.3.0",
"vue-router": "3.2.0",
"vuex": "^3.4.0"
},
"devDependencies": {
"@commitlint/cli": "^12.1.1",
"@commitlint/config-conventional": "^12.1.1",
"@samhammer/vue-cli-plugin-stylelint": "^2.0.1",
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@wecity/static-env-config": "1.0.32",
"babel-eslint": "^10.1.0",
"commitizen": "^4.2.3",
"conventional-changelog-cli": "^2.1.1",
"conventional-changelog-custom-config": "^0.3.1",
"cross-env": "^7.0.3",
"css-properties-sorting": "^1.0.10",
"eslint": "^6.7.2",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^8.3.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-plugin-import": "^2.24.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^6.2.2",
"glob": "^7.1.6",
"globby": "^11.0.3",
"hard-source-webpack-plugin": "^0.13.1",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"lint-staged": "^10.5.4",
"mockjs": "^1.1.0",
"modify-source-webpack-plugin": "^3.0.0",
"node-object-hash": "^2.3.8",
"nodemon": "^2.0.7",
"npm-run-all": "^4.1.5",
"prettier": "^2.3.2",
"rimraf": "^3.0.2",
"style-resources-loader": "^1.4.1",
"stylelint": "^13.12.0",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-tencent": "1.0.0",
"stylelint-order": "^4.1.0",
"terser-webpack-plugin": "4.2.3",
"vue-cli-plugin-style-resources-loader": "~0.1.5",
"vue-template-compiler": "~2.6.11"
},
"config": {
"commitizen": {
"path": "cz-customizable"
}
},
"lint-staged": {
"src/**/*.{js,vue}": "yarn lint",
"src/**/*.{vue,js,scss,less,css,html}": "yarn lint:style"
},
"changelog": {
"emojis": true,
"authorName": true,
"authorEmail": false
},
"main": "index.js",
"repository": "http://10.23.12.27:8089/qyd-znsb/znsb-mhzc.git",
"author": "wangjianxin@css.com.cn <wangjianxin@css.com.cn>",
"license": "MIT"
}

View File

@ -0,0 +1,8 @@
const prettierConfig = require('@gtff/tdesign-gt-vue/prettier.config');
const config = {
...prettierConfig,
endOfLine: 'auto',
};
module.exports = config;

13
txw-mhzc-web/proxy.js Normal file
View File

@ -0,0 +1,13 @@
const CONTEXT = process.env.VUE_APP_API_BASE_URL;
const CONTEXT_REWRITE = `^${CONTEXT}`;
module.exports = {
proxy: {
[CONTEXT]: {
target: 'http://86.20.164.120:8081', // 房土
pathRewrite: {
[CONTEXT_REWRITE]: '',
},
},
},
};

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= VUE_APP_CDN_PATH%>/favicon.ico">
<!-- <link rel="stylesheet" type="text/css" href="znhd-sdk/v1/znhd-sdk.min.css"/>-->
<!-- <script src="znhd-sdk/v1/znhd-sdk.web.min.js"></script>-->
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= VUE_APP_CDN_PATH%>/favicon.ico">
<!-- <link rel="stylesheet" type="text/css" href="znhd-sdk/v1/znhd-sdk.min.css"/>-->
<!-- <script src="znhd-sdk/v1/znhd-sdk.web.min.js"></script>-->
<title>
<%= htmlWebpackPlugin.options.title %> | local dev
</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo</title>
<g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航整合/无侧边导航/顶部一级导航/深色底" transform="translate(-32.000000, -14.000000)">
<g id="logo" transform="translate(32.000000, 14.000000)">
<g id="icon">
<path d="M12.8585767,0 L12.8585767,3.95636908 L3.42636553,9.40208726 L3.42636553,20.2933809 L12.8585767,25.739099 L12.8585767,29.6956109 L0,22.2717082 L0,7.42390272 L12.8585767,0 Z"
id="形状结合" fill="#0167ED" fill-rule="nonzero"></path>
<path d="M12.8490624,0 L16.4180624,2.06 L16.4180624,27.634 L12.8490624,29.6956109 L12.8490624,0 Z"
id="形状结合" fill="#00A6FF"></path>
<path d="M17.3105424,2.57588009 L20.1655424,4.22488009 L20.1655424,25.4708801 L17.3105424,27.1188801 L17.3105424,2.57588009 Z"
id="形状结合" fill="#00CCDF"></path>
<path d="M21.0581856,4.73901088 L22.8421856,5.76901088 L22.8421856,23.9250109 L21.0581856,24.9550109 L21.0581856,4.73901088 Z"
id="形状结合" fill-opacity="0.7" fill="#00CCDF"></path>
<path d="M23.7350736,6.28502709 L24.4480736,6.69602709 L24.4480736,22.9980271 L23.7350736,23.4100271 L23.7350736,6.28502709 Z"
id="形状结合" fill-opacity="0.4" fill="#00CCDF"></path>
<path d="M25.3412064,7.21191624 L25.6972064,7.41691624 L25.6972064,22.2769162 L25.3412064,22.4819162 L25.3412064,7.21191624 Z"
id="形状结合" fill="#00CCDF" opacity="0.1"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="41px" viewBox="0 0 40 41" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 24</title>
<defs>
<linearGradient x1="41.396593%" y1="82.3903207%" x2="48.0007731%" y2="39.2987909%" id="linearGradient-1">
<stop stop-color="#16C7ED" offset="0%"></stop>
<stop stop-color="#0055AB" offset="100%"></stop>
</linearGradient>
<linearGradient x1="16.0302025%" y1="44.7099464%" x2="94.9286971%" y2="53.4567243%" id="linearGradient-2">
<stop stop-color="#0055AB" offset="0%"></stop>
<stop stop-color="#17D1F4" offset="100%"></stop>
</linearGradient>
<linearGradient x1="17.1779067%" y1="55.2852604%" x2="71.2289456%" y2="44.7064775%" id="linearGradient-3">
<stop stop-color="#14A404" offset="0%"></stop>
<stop stop-color="#9ED409" offset="100%"></stop>
</linearGradient>
<linearGradient x1="7.26346133%" y1="52.6574219%" x2="97.4376312%" y2="48.3322353%" id="linearGradient-4">
<stop stop-color="#179B00" offset="0%"></stop>
<stop stop-color="#8ED200" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-24" transform="translate(0, 0.755)">
<rect id="矩形" x="0" y="0" width="40" height="40"></rect>
<g id="编组" transform="translate(1.5, 1.7053)" fill-rule="nonzero">
<path d="M4.64840744,19.5755387 C5.69797831,14.8470864 9.12000752,10.9986625 13.6933562,9.40356331 C18.2667048,7.80846407 23.3398291,8.69393591 27.1024028,11.7440013 L27.1139367,11.7555353 C27.2062081,11.8273019 27.2997611,11.9054763 27.3881879,11.9836507 L27.4035664,11.9926216 C28.0361912,12.4643188 28.8046117,12.7183607 29.5937313,12.716696 C30.9887325,12.7152539 32.2637267,11.9274252 32.8891081,10.6804575 C33.5144895,9.43348981 33.3833885,7.94047381 32.5502616,6.82157705 C32.4804443,6.72668992 32.4051313,6.63597199 32.3247092,6.54988897 C26.8370078,0.00617460653 17.5528637,-1.87192629 9.95324621,2.02433831 C2.35362873,5.92060291 -1.5407278,14.5552183 0.569241462,22.8306695 C1.76375702,21.5533817 3.1378946,20.4568346 4.64840744,19.5755387 Z" id="路径" fill="url(#linearGradient-1)"></path>
<path d="M3.63598484,7.34573002 C3.67314972,7.28806038 3.70134377,7.25858478 3.73466401,7.21757526 C7.10431674,2.78924958 12.3059719,0.134917124 17.869042,0.00499827842 C23.4321121,-0.124920567 28.7520063,2.28369369 32.3247092,6.54988897 C32.4051313,6.63597199 32.4804443,6.72668992 32.5502616,6.82157705 C33.6447842,8.28699305 33.5000049,10.3331967 32.2100483,11.6298986 C30.9200916,12.9266005 28.8746709,13.0820497 27.4035664,11.9951847 L27.3881879,11.9862138 C27.2997611,11.9080394 27.2062081,11.829865 27.1139367,11.7580984 C27.1139367,11.7580984 16.7526244,0.0639766141 3.63598484,7.34573002 Z" id="路径" fill="url(#linearGradient-2)"></path>
<path d="M2.38942105,24.2417585 L2.13068905,24.4008786 C2.17079251,24.4332201 2.20830865,24.4655616 2.25099943,24.4979031 C6.08928857,27.424162 11.7076538,31.4603811 22.1552518,27.7980297 C22.1552518,27.7980297 13.1513784,34.6893564 2.05177579,26.708768 C5.12537015,32.6447355 11.1922638,36.431306 17.8750164,36.584632 C24.557769,36.7379581 30.791942,33.2336177 34.1345432,27.4448606 C34.2923697,27.169311 34.4437279,26.8885868 34.5886178,26.6052752 C31.9508451,26.3905277 27.4489084,24.9480968 21.8370114,22.5819927 C12.9637977,18.8368471 6.25746437,21.7255898 2.38942105,24.2417585 Z" id="路径" fill="url(#linearGradient-3)"></path>
<path d="M0.569241462,22.8252008 C1.02945784,23.4023517 1.54985918,23.9288244 2.12163343,24.395704 L2.38036543,24.2365838 C6.24840875,21.7255898 12.9547421,18.8368471 21.8240748,22.5768181 L22.5226512,22.8691852 L23.3609429,19.8937673 C22.7917325,19.6652207 22.1996675,19.4099385 21.5847477,19.1279206 C9.80468002,13.704898 2.09317291,21.1563794 0.569241462,22.8252008 Z M33.4204429,19.3323189 L30.3518814,18.4694477 L29.4967721,21.5160169 L26.4644332,20.663495 L25.601562,23.7320564 L28.6701234,24.5949276 L29.52782,21.5431838 L32.5433414,22.3918247 L31.6856448,25.4422749 L34.7503253,26.3116144 L35.6131965,23.2443466 L32.5614526,22.3853564 L33.4204429,19.3323189 Z M35.1022008,17.7799269 L34.5692129,19.6738451 L36.4631311,20.206833 L37,18.3077402 L35.1022008,17.7799269 Z" id="形状" fill="url(#linearGradient-4)"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,46 @@
import qs from 'querystring';
export const getUA = window.navigator.userAgent.toLowerCase();
export const isIE = !!window.ActiveXObject || 'ActiveXObject' in window;
export const downloadFile = (url, params, t = 'a') => {
let type = t;
const baseURL = window.STATIC_ENV_CONFIG.API_PREFIX;
const paramsUrl = qs.stringify(params);
if (isIE) {
type = 'iframe';
}
if (type === 'a') {
const elink = document.createElement('a');
elink.style.display = 'none';
let href = baseURL + url;
if (paramsUrl) href = `${href}?${paramsUrl}`;
elink.href = href;
elink.download = '下载';
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
} else if (type === 'iframe') {
const iframe = document.createElement('iframe');
const id = 'saveFileFrame';
iframe.id = id;
iframe.style.display = 'none';
iframe.src = '';
document.body.appendChild(iframe);
setTimeout(function loadUrl() {
let href = baseURL + url;
if (paramsUrl) href = `${href}?${paramsUrl}`;
iframe.contentWindow.location.href = href;
document.body.removeChild(iframe);
}, 50);
} else if (type === 'nginx') {
const elink = document.createElement('a');
elink.style.display = 'none';
elink.target = '_block';
elink.href = `/staticfiles/${url}`;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
}
};

View File

@ -0,0 +1,24 @@
import Vue from 'vue';
import TDesign from 'tdesign-vue';
import router from '@/pages/index/router';
import { registerIEPolyfill, isMSIE } from '@wecity/tdesign-vue-ie';
import { getPageContentHeight, getFirstLevelTableHeight } from '@gtff/tdesign-gt-vue';
import '@gtff/tdesign-gt-vue/dist/theme/normal/index.css';
// import Gt4Common from '@gt4/common-front';
// import '@gt4/common-front/dist/global.css';
// IE兼容样式
if (isMSIE()) {
// 异步加载方式避免lerna模式下优先级异常
require(['@wecity/tdesign-vue-ie/dist/theme/ie.css']);
}
// Vue.config.productionTip = false;
Vue.prototype.$getPageContentHeight = getPageContentHeight;
Vue.prototype.$getFirstLevelTableHeight = getFirstLevelTableHeight;
Vue.prototype.$EventBus = new Vue();
Vue.use(TDesign);
// Vue.use(Gt4Common);
registerIEPolyfill({ router });

View File

@ -0,0 +1,210 @@
import { request } from '@gtff/tdesign-gt-vue';
import { MessagePlugin } from 'tdesign-vue';
import { mhLogout, getRedirectUri } from '@/pages/index/api/login';
import { LoadingPlugin, DialogPlugin } from '@gt4/common-front';
const SingleLoading = {
load: null,
count: 0,
startLoading() {
if (!this.load) {
console.log('loading start', this.count);
this.load = LoadingPlugin(true);
}
// eslint-disable-next-line no-plusplus
this.count++;
},
endLoading(stopNow) {
// eslint-disable-next-line no-plusplus
this.count--;
if (this.load && (this.count === 0 || stopNow)) {
console.log('loading end');
this.count = 0;
this.load = LoadingPlugin(false);
this.load = null;
}
},
};
/**
* 基于request的实例进行拦截器的request自定义示例
* 传参为onFulfilledonRejected两个处理函数
* 你可以在这里对预设配置对象进行进一步的加工
* 比如请求要带的header参数配置请求Timeout的重设等
*/
request.interceptors.request.use(
/**
* onFulfilled钩子函数处理
* @param conf {Object} 实例中request的配置函数
* @returns {Object} request配置函数
*/
(conf) => {
const newConf = conf;
if (newConf.loading) {
SingleLoading.startLoading();
}
// 设置随机数, 定位后端日志和解决浏览器缓存
const { url } = newConf;
if (url.indexOf('?') !== -1) {
newConf.url = `${url}&t=${new Date().getTime()}`; // 请求添加时间戳
} else {
newConf.url = `${url}?t=${new Date().getTime()}`;
}
// get请求映射params参数
if (newConf.method === 'get' && newConf.params) {
let url = `${newConf.url}?`;
for (const propName of Object.keys(newConf.params)) {
const value = newConf.params[propName];
const part = `${encodeURIComponent(propName)}=`;
if (value !== null && typeof value !== 'undefined') {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
const params = `${propName}[${key}]`;
const subPart = `${encodeURIComponent(params)}=`;
url += `${subPart + encodeURIComponent(value[key])}&`;
}
} else {
url += `${part + encodeURIComponent(value)}&`;
}
}
}
url = url.slice(0, -1);
newConf.params = {};
newConf.url = url;
}
return newConf;
},
/**
* onRejected钩子函数处理
* @param err {ErrorEvent} 前一个拦截器返回的request错误事件
* @returns {Promise<never>} 必须reject对应的错误事件
*/
(err) => {
console.log('====>> req err', err);
return Promise.reject(err);
},
);
/**
* 基于request的实例进行拦截器的response自定义示例
* 传参为onFulfilledonRejected两个处理函数
* 你可以在这里对预设返回的对象进行进一步的加工比如key值的大小驼峰转换
*/
request.interceptors.response.use(
/**
* onFulfilled钩子函数处理
* @param res {Object} 为前一个拦截器返回的结果
* @returns {Object} 必须要return`结果对象`
*/
async (res) => {
// 未设置状态码则默认成功状态
if (res.reqConfig?.loading || res.config?.loading) {
SingleLoading.endLoading();
}
const { code, type } = res.data;
// 获取错误信息
const msg = res.data.msg || '系统未知错误,请反馈给管理员';
if (code === 401) {
// 未认证
// return handleAuthorized();
window.location.href = `/view/mhzc/login`;
}
if (code !== 1) {
MessagePlugin.error({
content: msg,
duration: 2000,
});
return Promise.reject(code);
}
return res.data;
},
/**
* onRejected钩子函数处理
* @param err {ErrorEvent} 前一个拦截器返回的错误结果
* @returns {Promise<never>}
*/
(err) => {
if (err.reqConfig?.loading || err.config?.loading || SingleLoading.load !== null) {
SingleLoading.endLoading(true);
}
let { message } = err;
if (message === 'Network Error') {
message = '后端接口连接异常';
} else if (message.includes('timeout')) {
message = '系统接口请求超时';
} else if (message.includes('Request failed with status code')) {
message = `系统接口${message.substr(message.length - 3)}异常`;
}
MessagePlugin.error({
content: message,
duration: 5 * 1000,
});
return Promise.reject(err);
},
);
function handleAuthorized() {
MessagePlugin.error({
content: '无效的会话,或者会话已过期,请重新登录。',
duration: 2000,
}).then(() => {
const { href } = window.location;
window.location.href = href.substring(0, href.indexOf('/znsb/view')).concat('/view/mhzc/login');
});
return Promise.reject('无效的会话,或者会话已过期,请重新登录。');
}
/**
* 新版Api统一请求入口
* @param options
* @param custom
*/
const fetch = (options, custom) => {
return request(
{
baseURL: window.STATIC_ENV_CONFIG.API_PREFIX,
...options,
},
custom,
);
};
const headers = {
"TOKEN-TYPE": 'YW',
};
const fetchSso = (options, custom) => {
return request(
{
headers: headers,
baseURL: '/',
...options,
},
custom,
);
};
const headers1 = {
"TOKEN-TYPE": 'STAR',
};
const fetchSso1 = (options, custom) => {
return request(
{
headers: headers1,
baseURL: '/',
...options,
},
custom,
);
};
const fetchNoPrefix = (options, custom) => {
return request(
{
baseURL: '/',
...options,
},
custom,
);
};
export { fetch, fetchSso, fetchNoPrefix, fetchSso1 };

View File

@ -0,0 +1,42 @@
import { fetch } from '@/core/request';
const headers = {
cookieType: 'admin',
};
const servicePrefix = '';
// const servicePrefix = '/znsb/api';
export default {
//发布公告
addDt(params) {
return fetch({
url: `${servicePrefix}/yygl/xx/xxfb`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
},
//查询公告列表
getDtPage(params) {
return fetch({
url: `${servicePrefix}/yygl/xx/getXxflxqList`,
data: JSON.stringify(params),
method: 'post',
});
},
//删除公告
delDt(params) {
return fetch({
url: `${servicePrefix}/yygl/xx/delXx?xxuuid=${params}`,
method: 'get',
});
},
init(params) {
return fetch({
url: `${servicePrefix}/mhzc/user/init`,
method: 'post',
data: JSON.stringify(params),
});
},
};

View File

@ -0,0 +1,162 @@
import { fetchSso } from '@/core/request';
// const basurl = '/htgl/api/yhzxApi';
const basurl = '';
// const basurl = '/mhzc';
export default {
mhzcregister(params) {
return fetchSso({
url: `${basurl}/mhzc/company/register`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
init(params) {
return fetchSso({
url: `${basurl}/mhzc/user/init`,
method: 'post',
data: JSON.stringify(params),
});
},
sjkbList(params) {
return fetchSso({
url: `${basurl}/mhzc/sy/sjkb`,
method: 'get',
// loading: true,
data: JSON.stringify(params),
});
},
zxxx(params) {
return fetchSso({
url: `${basurl}/mhzc/sy/zxxx`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//获取url
tfwzxurl(params) {
return fetchSso({
url: `${basurl}/mhzc/sy/getCdxx`,
method: 'get',
// loading: true,
data: JSON.stringify(params),
});
},
gxxxListByYh(params) {
return fetchSso({
url: `${basurl}/gxzx/gxdt/gxxxListByYh`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
gxsj(params) {
return fetchSso({
url: `${basurl}/gxzx/gxdt/gxsj`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
getGgxxList(params) {
return fetchSso({
url: `${basurl}/mhzc/sy/getGgxxList`,
method: 'post',
// loading: true,
data: JSON.stringify(params),
});
},
//获取认证信息
getCurrentRegisterList(params) {
return fetchSso({
url: `${basurl}/mhzc/company/getCurrentRegisterList`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//获取入驻信息
currentQyrzList(params) {
return fetchSso({
url: `${basurl}/gxzx/qyrz/currentQyrzList`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//获取url
revokeSq(params) {
return fetchSso({
url: `${basurl}/mhzc/company/revokeSq?uuid=${params}`,
method: 'get',
loading: true,
});
},
// 发布留言
saveGgxx(data) {
return fetchSso({
url: `${basurl}/yygl/xx/xxfb`,
data: JSON.stringify(data),
method: 'post',
});
},
// 获取未读数量
getWdxxCount() {
return fetchSso({
url: `${basurl}/yygl/xx/getWdxxCount`,
method: 'get',
});
},
///////////////////////////////////////////
//绿色交易查询
queryZcxxList(params) {
return fetchSso({
url: `${basurl}/gxzx/lsjy/queryZcxxList`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//绿色交易上下架
zcsxj(params) {
return fetchSso({
url: `${basurl}/gxzx/lsjy/zcsxj`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//绿色交易审批
zcSp(params) {
return fetchSso({
url: `${basurl}/gxzx/lsjy/zcSp`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
//绿色交易详情
queryZcxxxq(params) {
return fetchSso({
url: `${basurl}/gxzx/lsjy/queryZcxxxq?zcid=${params}`,
method: 'get',
loading: true,
});
},
//绿色交易删除
deleteGxxx(params) {
return fetchSso({
url: `${basurl}/gxzx/lsjy/delete/${params}`,
method: 'post',
loading: true,
});
},
};

View File

@ -0,0 +1,407 @@
/*
* @Author: liumu
* @Date: 2025-07-28 17:05:37
* @LastEditTime: 2025-07-29 17:55:33
* @LastEditors: liumu
* @Description: 描述
*/
import { fetchSso, fetchSso1 } from '@/core/request';
// const basurl = '/htgl/api/yhzxApi';
const basurl = '/yhzxApi';
// 获取模板列表
export const getMbList = (params) => {
return fetchSso({
url: `${basurl}/xz/getMbList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 查询模板明细
export const getMbmx = (params) => {
return fetchSso({
url: `${basurl}/xz/getMbmx?mbuuid=${params.mbuuid}`,
method: 'post',
loading: true,
});
};
// 修改模板状态
export const updateMbZt = (params) => {
return fetchSso({
url: `${basurl}/xz/updateMbZt`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 保存模板
export const saveMb = (params) => {
return fetchSso({
url: `${basurl}/xz/saveMbxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 编辑模板
export const editMb = (params) => {
return fetchSso({
url: `${basurl}/xz/updMbxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 删除模板
export const delMb = (params) => {
return fetchSso({
url: `${basurl}/xz/delMbxx?mbuuid=${params.mbuuid}`,
method: 'delete',
loading: true,
});
};
// 获取勋章配置列表
export const getPzList = (params) => {
return fetchSso({
url: `${basurl}/xz/getXzpzList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 获取模板下拉列表
export const getMbLb = () => {
return fetchSso({
url: `${basurl}/xz/getMbLb`,
method: 'get',
loading: true,
});
};
// 获取明星下拉列表
export const getMxLb = () => {
return fetchSso({
url: `${basurl}/user/getMxLb`,
method: 'get',
loading: true,
});
};
// 修改配置状态
export const updateXzZt = (params) => {
return fetchSso({
url: `${basurl}/xz/updateXzZt`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 查询配置明细
export const getPzmx = (params) => {
return fetchSso({
url: `${basurl}/xz/getPzmx?xzuuid=${params.xzuuid}`,
method: 'post',
loading: true,
});
};
// 保存配置
export const savePz = (params) => {
return fetchSso({
url: `${basurl}/xz/savePzxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 编辑配置
export const editPz = (params) => {
return fetchSso({
url: `${basurl}/xz/updPzxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 删除配置
export const delPz = (params) => {
return fetchSso({
url: `${basurl}/xz/delPzxx?xzuuid=${params.xzuuid}`,
method: 'delete',
loading: true,
});
};
// 获取勋章审核列表
export const getShList = (params) => {
return fetchSso({
url: `${basurl}/xz/getXzsqList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 修改审批状态
export const updSpzt = (params) => {
return fetchSso({
url: `${basurl}/xz/updSpzt`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 修改审批状态
export const ckfpxq = (params) => {
return fetchSso({
url: `/ggzcApi/gg/fp/getFpxx?wjuuid=${params.wjuuid}`,
method: 'get',
loading: true,
});
};
// 查询明星基本信息
export const getMxjbxx = () => {
return fetchSso1({
url: `${basurl}/user/getStarmx`,
method: 'get',
loading: true,
});
};
// 编辑明星基本信息
export const editMxjbxx = (params) => {
return fetchSso1({
url: `${basurl}/user/updStarMx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 获取明星认证列表
export const getStarList = (params) => {
return fetchSso({
url: `${basurl}/user/getStarList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 查询明星认证信息
export const getStarxx = (params) => {
return fetchSso({
url: `${basurl}/user/getStarxx?yhuuid=${params.yhUuid}`,
method: 'get',
loading: true,
});
};
// 创建明星
export const saveStar = (params) => {
return fetchSso({
url: `${basurl}/user/createStar`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 编辑明星
export const editStar = (params) => {
return fetchSso({
url: `${basurl}/user/updStar`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 编辑明星
export const delStar = (params) => {
return fetchSso({
url: `${basurl}/user/delStar?yhuuid=${params.yhUuid}`,
method: 'delete',
loading: true,
});
};
export const getResources = (data) => {
return fetchSso({
url: `/htgl/api/cpzxApi/cpxx/getResources?url=${data}&cpuuid=123`,
method: 'Get',
loading: true,
});
};
// 用户信息手机页面========================================
// 获取明星列表
export const getMxList = (params) => {
return fetchSso({
url: `${basurl}/xz/getMxList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 期待明星页面=========================================
export const getQwmxxxList = (params) => {
return fetchSso({
url: `${basurl}/user/getQwmxxxList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
//=====================================================
// 运营位
// 4.查询运维位列表
export const getGgxxList = (params) => {
return fetchSso({
url: `${basurl}/yw/getGgxxList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 保存运维位广告信息
export const saveGgxx = (params) => {
return fetchSso({
url: `${basurl}/yw/saveGgxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 根据gguuid修改运维位广告信息
export const updGgxx = (params) => {
return fetchSso({
url: `${basurl}/yw/updGgxx`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 根据gguuid删除运维广告信息
export const delGgxx = (params) => {
return fetchSso({
url: `${basurl}/yw/delGgxx?gguuid=${params}`,
// data: JSON.stringify(params),
method: 'delete',
loading: true,
});
};
//=====================================================
// 查询期望明星统计
export const getQwmxxxTj = (params) => {
return fetchSso({
url: `${basurl}/user/getQwmxxxTj`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 刷新明星
export const udpQwmxxx = () => {
return fetchSso({
url: `${basurl}/user/udpQwmxxx`,
// data: JSON.stringify(params),
method: 'get',
loading: true,
});
};
// 查询抽奖记录列表(分页)
export const getCjjlPage = (params) => {
return fetchSso({
// url: `http://172.18.0.12:9010/yhzxApi/shdz/getCjjlPage`,
url: `${basurl}/shdz/getCjjlPage`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
// 获取填写的收货地址信息
export const getJpshxx = (gluuid) => {
return fetchSso({
// url: `http://172.18.0.12:9010/yhzxApi/shdz/getJpshxx?gluuid=008e0723e71348619de7e802c5fdaaba`,
url: `${basurl}/shdz/getJpshxx?gluuid=${gluuid}`,
method: 'get',
loading: true,
});
};
// 修改发货状态
export const udpFhzt = (params) => {
return fetchSso({
// url: `http://172.18.0.12:9010/yhzxApi/shdz/udpFhzt`,
url: `${basurl}/shdz/udpFhzt`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
//-------
// 查询评论
export const queryJbList = (params) => {
return fetchSso({
url: `${basurl}/jb/queryJbList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
//查询详情
export const getJbjl = (params) => {
return fetchSso({
url: `${basurl}/jb/getJbjl`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
//查询动态的所有举报记录
export const queryJbjlList = (params) => {
return fetchSso({
url: `${basurl}/jb/queryJbjlList`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};
//处理举报信息
export const sljb = (params) => {
return fetchSso({
url: `${basurl}/jb/sljb`,
data: JSON.stringify(params),
method: 'post',
loading: true,
});
};

View File

@ -0,0 +1,195 @@
import { fetch, fetchSso, fetchSso1 } from '@/core/request';
// const headers = {
// cookieType: 'admin',
// };
const headers = {
'TOKEN-TYPE': 'YW',
};
// let basurl = 'http://172.18.0.247:9200'
// let basurl = ''
const basurl = '';
// 登录方法
export function login(username, password, captchaVerification, socialType, socialCode, socialState) {
const data = {
username,
password,
captchaVerification,
// 社交相关
socialType,
socialCode,
socialState,
};
return fetchSso({
url: `${basurl}/sso/auth/login`,
method: 'post',
data,
});
}
export function mxlogin(username, password, captchaVerification, socialType, socialCode, socialState) {
const data = {
username,
password,
captchaVerification,
// 社交相关
socialType,
socialCode,
socialState,
};
return fetchSso1({
url: `${basurl}/sso/starAuth/login`,
method: 'post',
data,
});
}
export function getVerify() {
return fetchSso({
url: `${basurl}/sso/verify/get`,
method: 'post',
});
}
// 初始化
export function init() {
return fetchSso({
headers,
url: 'mhzc/admin/user/init',
method: 'post',
});
}
// 退出方法
export function logout() {
return fetchSso({
url: 'sso/auth/logout',
method: 'post',
});
}
// 注册
export function yhzhuce(params) {
return fetchSso({
headers,
url: `${basurl}/mhzc/user/register`,
data: JSON.stringify(params),
method: 'post',
});
}
// 发送验证码
export function sendMsg(params) {
return fetchSso({
headers,
url: `${basurl}/sso/auth/sendMsg`,
data: JSON.stringify(params),
method: 'post',
});
}
// 验证码登录
export function loginBySMS(params) {
return fetchSso({
headers,
url: `${basurl}/sso/auth/loginBySMS`,
data: JSON.stringify(params),
method: 'post',
});
}
export function mxlogout() {
return fetchSso1({
url: 'sso/starAuth/logout',
method: 'post',
});
}
export function mhLogout() {
return fetchSso({
url: '/sso/auth/logout',
method: 'post',
});
}
// 获取重定向地址
export function getRedirectUri() {
return fetchSso({
url: `/sso/auth/getRedirectUri`,
method: 'post',
});
}
// 修改密码
export function resetPassword(params) {
return fetchSso({
headers,
url: 'mhzc/admin/user/resetPassword',
data: JSON.stringify(params),
method: 'post',
});
}
//获取验证码
export function Getqrcode() {
return fetchSso({
url: `${basurl}/sso/did/pub/login/qrcode`,
method: 'post',
});
}
//获取登录回调响应结果
export function backresultlogin(params) {
return fetchSso({
url: `${basurl}/sso/did/pub/backresult/login?reqId=${params}`,
method: 'get',
});
}
//绑定手机号
export function didBindPhone(params) {
return fetchSso({
url: `${basurl}/sso/auth/didBindPhone`,
method: 'post',
data: JSON.stringify(params),
});
}
//认证获取验证码
export function Getrzqrcode() {
return fetchSso({
url: `${basurl}/sso/did/busilice/qrcode`,
method: 'post',
});
}
//认证获取登录回调响应结果
export function rzbackresultlogin(params) {
return fetchSso({
url: `${basurl}/sso/did/pub/backresult/busi?reqId=${params}`,
method: 'get',
});
}
// ========== OAUTH 2.0 相关 ==========
export function authorize(responseType, clientId, redirectUri, state, autoApprove, checkedScopes, uncheckedScopes) {
// 构建 scopes
const scopes = {};
/* for (const scope of checkedScopes) {
scopes[scope] = true
}
for (const scope of uncheckedScopes) {
scopes[scope] = false
} */
// 发起请求
return fetch({
url: '/sso/oauth2/authorize',
headers: {
'Content-type': 'application/x-www-form-urlencoded',
},
params: {
response_type: responseType,
client_id: clientId,
redirect_uri: redirectUri,
state,
auto_approve: autoApprove,
scope: JSON.stringify(scopes),
},
method: 'post',
});
}
export function hasLogin() {
return window.sessionStorage.getItem('yhxx');
}

View File

@ -0,0 +1,16 @@
import { fetchSso } from '@/core/request';
// const basurl = '/htgl/api/yhzxApi';
const basurl = '';
// const basurl = '/mhzc';
export default {
dm2mc(params) {
return fetchSso({
url: `${basurl}/yygl/cache/v1/dm2mc?tableName=cs_ggzc_xtcs&key=${params}`,
method: 'post',
loading: true,
data: JSON.stringify(params),
});
},
};

View File

@ -0,0 +1,191 @@
<template>
<div>
<div>
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</div>
</template>
<script>
// import { GLayout } from '@gtff/tdesign-gt-vue';
import { getClientHeight } from '@gtff/tdesign-gt-vue';
export default {
data() {
return {
publicPath: window.STATIC_ENV_CONFIG.RESOURCE_PREFIX,
containerHeight: 0,
business: '',
businessId: '',
iframeUrl: '',
containerStyle: {
width: '1895px',
height: '953px',
transform: 'scale(1)',
transformOrigin: '0 0',
},
khfwStyle: '',
};
},
watch: {
$route: 'changeRoute',
appName(newVal) {
window.document.title = newVal;
},
},
computed: {
appName() {
return this.$store.state.settings.APP_NAME;
},
type() {
if (this.$route?.meta?.isShowSideBar) {
return 'widthScreen';
}
return '';
},
},
mounted() {
this.setTopbarActive();
this.updateScreenCompatibility();
window.addEventListener('resize', () => {
this.updateScreenCompatibility();
});
},
beforeDestroy() {
window.removeEventListener('resize', this.updateScreenCompatibility);
},
created() {
this.getHeight();
this.$EventBus.$on('changeBread', (data) => {
if (data) {
this.$refs.gtbread.meta = data;
}
});
this.breadInit();
},
methods: {
updateScreenCompatibility() {
const targetWidth = 1895;
const targetHeight = 953; // 1080;
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
const scale = Math.min(viewportWidth / targetWidth, viewportHeight / targetHeight);
this.containerStyle = {
width: `${targetWidth}px`,
height: `${targetHeight}px`,
transform: `scale(${scale})`,
transformOrigin: '50% 0',
};
this.khfwStyle = {
transform: `scale(${scale})`,
transformOrigin: '50% 0',
position: 'fixed',
top: `40%`,
right: `0.8%`,
};
},
breadInit() {
let mhMeta = window.localStorage.getItem('mhMeta');
if (mhMeta) {
mhMeta = JSON.parse(mhMeta);
this.meta = {
isBack: false,
breadCrumbs: [...mhMeta],
};
}
if (this.meta) {
const breandCrumbs = this.meta.breadCrumbs;
if (breandCrumbs && breandCrumbs.length > 1) {
let breadcrumb = breandCrumbs[breandCrumbs.length - 1].path;
breadcrumb = breadcrumb.substring(breadcrumb.lastIndexOf('/'));
breandCrumbs[breandCrumbs.length - 1].path = breadcrumb;
}
}
if (this.meta) {
// eventBus emitEvent
this.$refs.gtbread.meta = this.meta;
}
},
getHeight() {
this.containerHeight = getClientHeight() - 164;
},
changeRoute(route) {
const isShowSideBar = typeof route.meta.isShowSideBar === 'undefined' ? true : route.meta.isShowSideBar;
this.$store.commit(`global/${this.$storeGlobalTypes.SET_SIDEBAR_STATUS}`, isShowSideBar);
this.setTopbarActive();
},
setTopbarActive() {
this.$store.commit(
`global/${this.$storeGlobalTypes.SET_TOPBAR_ACTIVE_KEY}`,
this.$route.meta.topbarKey || this.$route.path,
);
},
},
};
</script>
<style>
@import './assets/css/tailwindcss.css';
html {
font-size: 20px; /* 将基准值从12px改为20px */
scroll-behavior: smooth;
}
a {
font-size: 20px;
color: #9ca3af;
text-decoration: none;
}
/* .cxssb-content {
width: 100%;
height: 100vh;
} */
/* 增强版隐藏滚动条方案 */
.cxssb-content {
width: 100%;
height: 100vh;
overflow-x: hidden !important;
overflow-y: auto !important; /* 使用 !important 提高优先级 */
flex-shrink: 0;
scrollbar-width: none !important; /* Firefox */
-ms-overflow-style: none !important; /* IE 10+ */
}
/* Chrome, Safari, Edge, Opera */
.cxssb-content::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
}
.cxssb-content::-webkit-scrollbar-track {
background: transparent !important;
}
.cxssb-content::-webkit-scrollbar-thumb {
background: transparent !important;
border: none !important;
}
/* 针对 IE 和 Edge 的额外处理 */
@supports (-ms-ime-align: auto) {
.cxssb-content {
-ms-overflow-style: none;
overflow: -moz-scrollbars-none;
}
}
/* 针对老版本 Safari */
@supports (-webkit-overflow-scrolling: touch) {
.cxssb-content {
-webkit-overflow-scrolling: touch;
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>碳核算平台</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="共性能力平台" transform="translate(-530, -148)">
<g id="编组-3" transform="translate(226, 132)">
<g id="碳核算平台" transform="translate(304, 16)">
<rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="24" height="24"></rect>
<g id="编组" transform="translate(5, 4)" fill="#666666" fill-rule="nonzero">
<path d="M3.76771765,1.95670588 L7.272,0 L10.6941176,1.95670588 L7.272,3.91171765 L3.76771765,1.95670588 Z M11.0295529,5.93449412 L8.09364706,4.23698824 L11.3260235,2.43698824 L14.4,4.04047059 L14.4,7.20677647 L11.0295529,9.08470588 L11.0295529,5.93449412 L11.0295529,5.93449412 Z M4.21835294,14.3771294 L4.21835294,10.4908235 L7.2,12.1781647 L10.1587765,10.4908235 L10.1587765,14.3771294 L7.18814118,16.0907294 L4.21835294,14.3771294 Z M11.0295529,10.0825412 L14.4,8.22748235 L14.4,12.0502588 L11.0295529,14.1128471 L11.0295529,10.0825412 L11.0295529,10.0825412 Z M4.21835294,6.46305882 L7.272,4.77487059 L10.1587765,6.46305882 L10.1587765,9.62936471 L7.2,11.1769412 L4.21835294,9.62851765 L4.21835294,6.46305882 Z M0,12.0384 L0,8.22748235 L3.52207059,10.0825412 L3.52207059,14.0018824 L0,12.0384 Z M0.0592941176,4.04047059 L2.98588235,2.43698824 L6.25552941,4.23698824 L3.36282353,5.93449412 L3.36282353,9.08555294 L0,7.20592941 L0.0592941176,4.03962353 L0.0592941176,4.04047059 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>碳金融服务</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="共性能力平台" transform="translate(-1262, -148)">
<g id="编组-3" transform="translate(226, 132)">
<g id="碳金融服务" transform="translate(1036, 16)">
<rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="24" height="24"></rect>
<g id="编组" transform="translate(5, 4)" fill="#666666" fill-rule="nonzero">
<path d="M12.8617052,5.57915475 C14.0526038,6.83329421 14.7835692,8.2746922 14.7835692,9.87213899 C14.7835692,14.3121376 11.4654792,16.426188 7.46570245,16.426188 L7.31786675,16.426188 C3.31808998,16.426188 0,14.3121376 0,9.87213899 C0,8.27469221 0.730965366,6.83329421 1.921864,5.57915475 C2.37525411,5.09844589 2.87605903,4.66478185 3.4166471,4.28477114 C2.78423887,3.95706869 2.36537107,3.36736854 2.36537107,2.68732436 C2.36537107,1.61387297 3.38379473,0.795027499 4.59111955,0.795027499 C4.87036474,0.795027499 5.12497066,0.844306063 5.35493729,0.934650097 C5.4699206,0.975715567 5.55205154,1.01678104 5.6177563,1.05784651 C5.65060867,1.0742727 5.74095271,1.04963341 5.77380508,1.00856794 C5.86414912,0.868945345 6.00377171,0.704683465 6.20088597,0.532208491 C6.54337199,0.235715798 6.94417098,0.0402441605 7.3917846,0 C7.83939822,0.0402441605 8.24019721,0.234894488 8.58268323,0.5330298 C8.77979749,0.705504774 8.91942008,0.868945345 9.00976412,1.00774663 C9.04261649,1.0488121 9.13296053,1.07345139 9.1658129,1.0570252 C9.23151766,1.01595973 9.3136486,0.974894258 9.42863191,0.933828788 C9.65859854,0.843484753 9.91320446,0.795027499 10.1924497,0.795027499 C11.3997745,0.795027499 12.4181981,1.61387297 12.4181981,2.68732436 C12.4181981,3.36736854 11.9993303,3.95706869 11.3669221,4.28477114 C11.4326268,4.32583661 11.4983316,4.37511517 11.5722494,4.43260683 C12.0157565,4.76030928 12.4510505,5.14550339 12.8617052,5.57915475 L12.8617052,5.57915475 Z M9.50994154,9.86638982 C9.81875388,9.86638982 10.0700746,9.60110689 10.0700746,9.27422574 C10.0700746,8.9473446 9.81875388,8.68288298 9.50994154,8.68288298 L8.84878748,8.68288298 L9.89349303,7.57986445 C10.1119915,7.34399239 10.1119915,6.97964355 9.89349303,6.74377148 C9.79135313,6.63325224 9.64770066,6.57040775 9.49721125,6.57040775 C9.34672183,6.57040775 9.20306937,6.63325224 9.10092946,6.74377148 L7.49609089,8.43731147 L5.89207364,6.74377148 C5.78993373,6.63325224 5.64628126,6.57040775 5.49579185,6.57040775 C5.34530244,6.57040775 5.20164997,6.63325224 5.09951006,6.74377148 C4.88101162,6.97964355 4.88101162,7.34399239 5.09951006,7.57986445 L6.14421562,8.68288298 L5.48798941,8.68288298 C5.17835577,8.68288298 4.9278564,8.9473446 4.9278564,9.27422574 C4.9278564,9.60110689 5.17835577,9.86556851 5.48798941,9.86556851 L6.93595788,9.86556851 L6.93595788,10.4569113 L5.81651317,10.4569113 C5.50687953,10.4569113 5.25638016,10.7213729 5.25638016,11.048254 C5.25638016,11.3751352 5.50687953,11.6395968 5.81651317,11.6395968 L6.93595788,11.6395968 L6.93595788,12.5496076 C6.93595788,12.8764888 7.18727856,13.1409504 7.49609089,13.1409504 C7.80572454,13.1409504 8.05704521,12.8764888 8.05704521,12.5496076 L8.05704521,11.6395968 L9.12721136,11.6395968 C9.43684501,11.6395968 9.68734437,11.3751352 9.68734437,11.048254 C9.68734437,10.7213729 9.43684501,10.4569113 9.12721136,10.4569113 L8.05704521,10.4569113 L8.05704521,9.86556851 L9.50994154,9.86556851 L9.50994154,9.86638982 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>碳技术咨询</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="共性能力平台" transform="translate(-1506, -148)">
<g id="编组-3" transform="translate(226, 132)">
<g id="碳技术咨询" transform="translate(1280, 16)">
<rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="24" height="24"></rect>
<g id="编组" transform="translate(4, 4)" fill="#666666" fill-rule="nonzero">
<path d="M7.90512018,5.27616944e-07 C8.36370476,-0.000279365339 8.7948826,0.218336032 9.06568143,0.588427765 C9.33648026,0.958519498 9.41437409,1.43563539 9.275341,1.87263619 L11.8576803,4.45497546 L12.9354116,4.45497546 C14.5164357,4.45497546 15.8102404,5.74878014 15.8102404,7.32980415 L15.8102404,13.6539003 C15.8102404,15.2349243 14.5164357,16.528729 12.9354116,16.528729 L2.87482871,16.528729 C1.28890708,16.524386 0.00434303111,15.2398219 0,13.6539003 L0,7.32980415 C0,5.74878012 1.29380468,4.4558538 2.87482871,4.4558538 L4.09573061,4.45497546 L6.57266824,1.9780378 C6.39251831,1.5347996 6.44478986,1.03097003 6.7120941,0.634154519 C6.97939833,0.237339009 7.42667067,-0.000408770575 7.90512018,5.27616944e-07 L7.90512018,5.27616944e-07 Z M8.04916904,12.2178035 L2.87482871,12.2178035 C2.39974582,12.2192443 2.01470167,12.6035042 2.01229225,13.0785832 C2.01229225,13.5528904 2.40052149,13.941998 2.87482871,13.941998 L8.04829068,13.941998 C8.52259789,13.941998 8.91082712,13.5537688 8.91082712,13.0794616 C8.90938304,12.6040378 8.52459112,12.2188536 8.04916904,12.2169251 L8.04916904,12.2178035 Z M5.46155969,9.63019413 L2.87482871,9.63019413 C2.3994049,9.63163821 2.01422072,10.0164301 2.01229225,10.4918522 C2.01229225,10.9661594 2.40052149,11.3543887 2.87482871,11.3543887 L5.46155969,11.3543887 C5.93586689,11.3543887 6.32409614,10.9661594 6.32409614,10.4918522 C6.32216767,10.0164301 5.93698349,9.63163821 5.46155969,9.63019413 L5.46155969,9.63019413 Z M7.97626626,3.01712192 L6.53841274,4.45497546 L9.41411978,4.45497546 L7.97626626,3.01712192 L7.97626626,3.01712192 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>碳交易平台</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="共性能力平台" transform="translate(-1018, -148)">
<g id="编组-3" transform="translate(226, 132)">
<g id="碳交易平台" transform="translate(792, 16)">
<rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="24" height="24"></rect>
<g id="编组" transform="translate(4, 4)" fill="#666666" fill-rule="nonzero">
<path d="M16.000023,5.42743032 L16.000023,15.1250049 C16.000023,16.0717909 15.232487,16.8392911 14.2857189,16.8392911 L1.71428627,16.8392911 C0.767500247,16.8392911 0,16.0717909 0,15.1250049 L0,5.42857317 L15.8452372,5.42857317 C15.8983623,5.42857317 15.950148,5.42818032 16.000023,5.42743032 Z M11.7142869,12.0000039 L4.28571566,12.0000039 L4.27625137,12.0000753 C3.96814413,12.0050753 3.71930477,12.2539504 3.71428691,12.5620755 L3.71428691,12.580879 C3.71935834,12.8890041 3.96821556,13.1378435 4.27635852,13.1427899 L4.28571566,13.1428614 L10.3347176,13.1428614 L10.1673783,13.3102364 L10.1607354,13.3169686 C9.94423534,13.5406115 9.94644963,13.897433 10.1673783,14.1183438 C10.3882891,14.3392725 10.7451106,14.3414868 10.9687535,14.1249867 L10.9754857,14.1183438 L12.1183432,12.9754863 C12.2255078,12.8683257 12.2857182,12.7229834 12.2857182,12.5714326 C12.2857182,12.2590039 12.0349682,12.0051289 11.7237538,12.0000753 L11.7142869,12.0000039 Z M5.03125162,7.87502039 L5.02451947,7.88166325 L3.88166196,9.02452076 C3.77449738,9.13168139 3.71428691,9.27702364 3.71428691,9.42857446 C3.71428691,9.74100313 3.96503699,9.99487821 4.27625137,9.99993179 L4.28571566,10.0000032 L11.7142869,10.0000032 L11.7237538,9.99993179 C12.031861,9.99493178 12.2807004,9.7460567 12.2857182,9.43793161 L12.2857182,9.41912803 C12.2806468,9.11100293 12.0317896,8.86216356 11.7236466,8.85721713 L11.7142869,8.8571457 L5.66528754,8.8571457 L5.83262687,8.68977065 L5.83926973,8.68303851 C6.0557698,8.45939558 6.05355552,8.10257403 5.83262687,7.88166325 C5.61171609,7.66071675 5.25489455,7.65852032 5.03125162,7.87500253 L5.03125162,7.87502039 Z M12.5714326,0 C12.887022,0 13.1428614,0.255839368 13.1428614,0.571428755 L13.1428614,1.14285751 L14.2857189,1.14285751 C15.2325049,1.14285751 16,1.91035776 16,2.85714378 L16,4.57143004 L0,4.57143004 L0,2.85714378 C0,1.91035776 0.767500247,1.14285751 1.71428627,1.14285751 L2.85714378,1.14285751 L2.85714378,0.571428755 C2.85714378,0.255839368 3.11298314,0 3.42857253,0 C3.74416192,0 4,0.255839368 4,0.571428755 L4,1.14285751 L12,1.14285751 L12,0.571428755 C12,0.255839368 12.2558432,0 12.5714326,0 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>碳认证机构</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="共性能力平台" transform="translate(-774, -148)">
<g id="编组-3" transform="translate(226, 132)">
<g id="碳认证机构" transform="translate(548, 16)">
<rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="24" height="24"></rect>
<g id="编组" transform="translate(4, 4)" fill="#666666" fill-rule="nonzero">
<path d="M16.082993,7.31191726 L14.5130986,5.77175574 L14.5130986,3.82920967 C14.5111164,3.13742541 14.7172642,1.88864579 14.0294443,1.8866636 L10.1602097,1.8866636 L9.19290104,0.431736242 C8.70528233,-0.0558824641 7.82915441,-0.176796046 7.34153571,0.310822661 L6.29097508,1.88864579 L3.38706693,1.88864579 C2.69726486,1.89062798 1.90240672,2.433748 1.90042453,3.12553227 L1.90042453,5.66868186 L0.364227387,7.31389945 C-0.121409129,7.80350035 -0.121409129,8.59637629 0.364227387,9.08597719 L1.90042453,10.7529989 L1.90042453,13.2961485 C1.90240672,13.9879327 2.21361053,14.5112308 2.9034126,14.513213 L5.80533856,14.513213 L7.33955352,16.0870718 C7.82717222,16.5746905 8.61806598,16.5746905 9.10568469,16.0870718 L10.6418818,14.513213 L13.0601535,14.513213 C13.7499555,14.5112308 14.5091343,13.7480877 14.5111164,13.0563035 L14.5111164,10.6281209 L16.0810108,9.08597719 C16.5686295,8.5943941 16.5686295,7.80350035 16.082993,7.31191726 L16.082993,7.31191726 Z M8.23550334,12.0235826 L3.80134461,5.66669967 L6.96888401,5.66669967 L8.2236102,9.45268231 L9.50212266,5.66669967 L12.6696621,5.66669967 L8.23550334,12.0235826 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

Some files were not shown because too many files have changed in this diff Show More