Initial commit
@@ -0,0 +1,39 @@
|
||||
[*]
|
||||
charset=utf-8
|
||||
end_of_line=crlf
|
||||
insert_final_newline=false
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.svg]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.js.map]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.less]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.vue]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{.analysis_options,*.yml,*.yaml}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# 本地139测试环境的变量
|
||||
NODE_ENV=production
|
||||
VUE_APP_CURRENT_INFO=local_prod
|
||||
@@ -0,0 +1,3 @@
|
||||
/dist
|
||||
/public
|
||||
/*.js
|
||||
@@ -0,0 +1,28 @@
|
||||
module.exports = {
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:vue/essential"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"vue"
|
||||
],
|
||||
"rules": {
|
||||
'quotes': [2, 'single', {
|
||||
'avoidEscape': true,
|
||||
'allowTemplateLiterals': true
|
||||
}],
|
||||
'semi': [2, 'never'],
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
@@ -0,0 +1,25 @@
|
||||
# income_payments_client_external
|
||||
|
||||
## Project setup
|
||||
```
|
||||
yarn install
|
||||
```
|
||||
|
||||
- 开发模式运行
|
||||
```
|
||||
yarn run serve
|
||||
```
|
||||
|
||||
- 编译项目
|
||||
```
|
||||
yarn run build
|
||||
```
|
||||
|
||||
- Lints and fixes files
|
||||
```
|
||||
yarn run lint
|
||||
```
|
||||
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: ['@vue/cli-plugin-babel/preset'],
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"name": "cwp_client",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"test": "vue-cli-service build --mode test",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fullcalendar/daygrid": "^5.11.3",
|
||||
"@fullcalendar/interaction": "^5.11.3",
|
||||
"@fullcalendar/vue": "^5.11.3",
|
||||
"@tinymce/tinymce-vue": "^2.1.0",
|
||||
"ant-design-vue": "^1.7.6",
|
||||
"area-data": "^5.0.6",
|
||||
"axios": "^0.21.1",
|
||||
"compression-webpack-plugin": "5.0.1",
|
||||
"core-js": "^3.6.5",
|
||||
"dayjs": "^1.10.6",
|
||||
"echarts": "^5.2.1",
|
||||
"enquire.js": "^2.1.6",
|
||||
"jsencrypt": "^3.2.1",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"tinymce": "^5.3.2",
|
||||
"tippy.js": "^6.3.7",
|
||||
"vue": "^2.6.11",
|
||||
"vue-area-linkage": "^5.1.0",
|
||||
"vue-ls": "^3.2.2",
|
||||
"vue-photo-preview": "^1.1.3",
|
||||
"vue-print-nb-jeecg": "^1.0.9",
|
||||
"vue-router": "^3.2.0",
|
||||
"vuedraggable": "^2.20.0",
|
||||
"vuex": "^3.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@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",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"less": "^3.0.4",
|
||||
"less-loader": "^5.0.0",
|
||||
"prettier": "^2.2.1",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended",
|
||||
"@vue/prettier"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
},
|
||||
"rules": {
|
||||
"no-debugger": "off"
|
||||
}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* 防止打包部署时路径被写死-开发环境的配置项
|
||||
*/
|
||||
window._CONFIG = {};
|
||||
window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer
|
||||
window._CONFIG["domianWebSocketURL"] = "http://10.0.1.9:21824/jero-boot";
|
||||
// 单点登录地址
|
||||
window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download";
|
||||
window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe";
|
||||
window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
|
||||
|
||||
// 预览文件地址
|
||||
window._CONFIG["onlinePreviewDomainURL"] = "http://10.0.1.9:9012/onlinePreview";
|
||||
|
||||
// 会议管理报名二维码地址 小程序生成二维码用的
|
||||
window._CONFIG["singUpQRCodeURL"] = "http://10.0.1.9:21824/signupentrance"
|
||||
// 会议管理签到二维码地址 微信扫描二维码 跳转的 地址 要么全大写 要么全小写
|
||||
window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8055/signinurl"
|
||||
|
||||
// todo 需要改为企业端的报名地址 --- 本地
|
||||
// 页面显示用的会议报名二维码连接 // 报名页面迁移到企业端 地址需要修改为企业端的地址
|
||||
window._CONFIG["singInQRCodHref"]= 'http://localhost:3001/signupentrance'
|
||||
|
||||
// 票据打印--寄件人单位名称
|
||||
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
|
||||
// 票据打印--寄件人地址
|
||||
window._CONFIG["sendAddress"] = "天津市东丽区先锋东路68号"
|
||||
// 票据打印--寄件人邮编
|
||||
window._CONFIG["sendPostCode"] = "300300"
|
||||
|
||||
// 查看物流信息-- 在企业端
|
||||
window._CONFIG["lookExpressDomainURL"] = "http://localhost:21826/lookExpressInfo";
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,272 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
||||
|
||||
<!-- 全局配置 -->
|
||||
<% if (process.env.NODE_ENV === 'development' ) { %>
|
||||
<script src="<%= BASE_URL %>development_address_config.js"></script>
|
||||
<% } %>
|
||||
<% if (process.env.NODE_ENV === 'production' && process.env.VUE_APP_CURRENT_INFO !== 'local_prod') { %>
|
||||
<script src="<%= BASE_URL %>production_address_config.js"></script>
|
||||
<% } %>
|
||||
<!-- 本地139测试环境的参数 -->
|
||||
<% if (process.env.VUE_APP_CURRENT_INFO === 'local_prod' ) { %>
|
||||
<script src="<%= BASE_URL %>local_production_address_config.js"></script>
|
||||
<% } %>
|
||||
<style>
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.chromeframe {
|
||||
margin: 0.2em 0;
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
padding: 0.2em 0;
|
||||
}
|
||||
#loader-wrapper {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 999999;
|
||||
}
|
||||
#loader {
|
||||
display: block;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
margin: -75px 0 0 -75px;
|
||||
border-radius: 50%;
|
||||
border: 3px solid transparent;
|
||||
/* COLOR 1 */
|
||||
border-top-color: #FFF;
|
||||
-webkit-animation: spin 2s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-ms-animation: spin 2s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-moz-animation: spin 2s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-o-animation: spin 2s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
animation: spin 2s linear infinite;
|
||||
/* Chrome, Firefox 16+, IE 10+, Opera */
|
||||
z-index: 1001;
|
||||
}
|
||||
#loader:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 5px;
|
||||
right: 5px;
|
||||
bottom: 5px;
|
||||
border-radius: 50%;
|
||||
border: 3px solid transparent;
|
||||
/* COLOR 2 */
|
||||
border-top-color: #FFF;
|
||||
-webkit-animation: spin 3s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-moz-animation: spin 3s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-o-animation: spin 3s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-ms-animation: spin 3s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
animation: spin 3s linear infinite;
|
||||
/* Chrome, Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
#loader:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
left: 15px;
|
||||
right: 15px;
|
||||
bottom: 15px;
|
||||
border-radius: 50%;
|
||||
border: 3px solid transparent;
|
||||
border-top-color: #FFF;
|
||||
/* COLOR 3 */
|
||||
-moz-animation: spin 1.5s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-o-animation: spin 1.5s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-ms-animation: spin 1.5s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
-webkit-animation: spin 1.5s linear infinite;
|
||||
/* Chrome, Opera 15+, Safari 5+ */
|
||||
animation: spin 1.5s linear infinite;
|
||||
/* Chrome, Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
@-webkit-keyframes spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: rotate(0deg);
|
||||
/* IE 9 */
|
||||
transform: rotate(0deg);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: rotate(360deg);
|
||||
/* IE 9 */
|
||||
transform: rotate(360deg);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
}
|
||||
@keyframes spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: rotate(0deg);
|
||||
/* IE 9 */
|
||||
transform: rotate(0deg);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: rotate(360deg);
|
||||
/* IE 9 */
|
||||
transform: rotate(360deg);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
}
|
||||
#loader-wrapper .loader-section {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 51%;
|
||||
height: 100%;
|
||||
background: #069F99;
|
||||
/* Old browsers */
|
||||
z-index: 1000;
|
||||
-webkit-transform: translateX(0);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: translateX(0);
|
||||
/* IE 9 */
|
||||
transform: translateX(0);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
}
|
||||
#loader-wrapper .loader-section.section-left {
|
||||
left: 0;
|
||||
}
|
||||
#loader-wrapper .loader-section.section-right {
|
||||
right: 0;
|
||||
}
|
||||
/* Loaded */
|
||||
.loaded #loader-wrapper .loader-section.section-left {
|
||||
-webkit-transform: translateX(-100%);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: translateX(-100%);
|
||||
/* IE 9 */
|
||||
transform: translateX(-100%);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
||||
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
||||
}
|
||||
.loaded #loader-wrapper .loader-section.section-right {
|
||||
-webkit-transform: translateX(100%);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: translateX(100%);
|
||||
/* IE 9 */
|
||||
transform: translateX(100%);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
||||
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
||||
}
|
||||
.loaded #loader {
|
||||
opacity: 0;
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
.loaded #loader-wrapper {
|
||||
visibility: hidden;
|
||||
-webkit-transform: translateY(-100%);
|
||||
/* Chrome, Opera 15+, Safari 3.1+ */
|
||||
-ms-transform: translateY(-100%);
|
||||
/* IE 9 */
|
||||
transform: translateY(-100%);
|
||||
/* Firefox 16+, IE 10+, Opera */
|
||||
-webkit-transition: all 0.3s 1s ease-out;
|
||||
transition: all 0.3s 1s ease-out;
|
||||
}
|
||||
/* JavaScript Turned Off */
|
||||
.no-js #loader-wrapper {
|
||||
display: none;
|
||||
}
|
||||
.no-js h1 {
|
||||
color: #222222;
|
||||
}
|
||||
#loader-wrapper .load_title {
|
||||
font-family: 'Open Sans';
|
||||
color: #FFF;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
z-index: 9999999999999;
|
||||
position: absolute;
|
||||
top: 60%;
|
||||
opacity: 1;
|
||||
line-height: 30px;
|
||||
}
|
||||
#loader-wrapper .load_title span {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
font-size: 14px;
|
||||
color: #FFF;
|
||||
opacity: 0.5;
|
||||
}
|
||||
/* 滚动条优化 start */
|
||||
::-webkit-scrollbar{
|
||||
width:8px;
|
||||
height:8px;
|
||||
}
|
||||
::-webkit-scrollbar-track{
|
||||
background: #f6f6f6;
|
||||
border-radius:2px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb{
|
||||
background: #cdcdcd;
|
||||
border-radius:2px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb:hover{
|
||||
background: #747474;
|
||||
}
|
||||
::-webkit-scrollbar-corner {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
/* 滚动条优化 end */
|
||||
</style>
|
||||
</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 id="loader-wrapper">
|
||||
<div id="loader"></div>
|
||||
<div class="loader-section section-left"></div>
|
||||
<div class="loader-section section-right"></div>
|
||||
<div class="load_title">正在加载,请耐心等待
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* 防止打包部署时路径被写死-生产环境的配置项
|
||||
*/
|
||||
window._CONFIG = {};
|
||||
window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer
|
||||
window._CONFIG["domianWebSocketURL"] = "http://139.9.235.66:1015/jero-boot";
|
||||
// 单点登录地址
|
||||
window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download";
|
||||
window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe";
|
||||
window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
|
||||
// 预览文件地址
|
||||
window._CONFIG["onlinePreviewDomainURL"] = "http://139.9.235.66:8012/onlinePreview";
|
||||
|
||||
// todo 需要改为企业端的报名地址 --- 139
|
||||
// 会议管理报名二维码地址
|
||||
// window._CONFIG["singUpQRCodeURL"] = "http://bxxt.hzwlsoft.com/signupentrance"
|
||||
window._CONFIG["singUpQRCodeURL"] = "http://10.10.10.46:8066/signupentrance"
|
||||
// 会议管理签到二维码地址 微信扫描二维码 跳转的 地址 要么全大写 要么全小写
|
||||
// window._CONFIG["singInQRCodeURL"] = "http://bxxt.hzwlsoft.com/signinurl"
|
||||
window._CONFIG["singInQRCodeURL"] = "http://10.10.10.46:8066/signinurl"
|
||||
// 页面显示用的会议报名二维码连接
|
||||
// window._CONFIG["singInQRCodHref"]= 'http://139.9.235.66/signupentrance'
|
||||
window._CONFIG["singInQRCodHref"]= 'http://10.10.10.46:8066/signupentrance'
|
||||
|
||||
// 票据打印--寄件人单位名称
|
||||
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
|
||||
// 票据打印--寄件人地址
|
||||
window._CONFIG["sendAddress"] = "天津市东丽区先锋东路68号"
|
||||
// 票据打印--寄件人邮编
|
||||
window._CONFIG["sendPostCode"] = "300300"
|
||||
|
||||
// 查看物流信息
|
||||
// window._CONFIG["lookExpressDomainURL"] = "http://bxxt.hzwlsoft.com/lookExpressInfo";
|
||||
window._CONFIG["lookExpressDomainURL"] = "http://10.10.10.46:8066/lookExpressInfo";
|
||||
@@ -0,0 +1,598 @@
|
||||
/* eslint-disable */
|
||||
module.exports = {
|
||||
'86': {
|
||||
'110000': '北京市',
|
||||
'120000': '天津市',
|
||||
'130000': '河北省',
|
||||
'140000': '山西省',
|
||||
'150000': '内蒙古自治区',
|
||||
'210000': '辽宁省',
|
||||
'220000': '吉林省',
|
||||
'230000': '黑龙江省',
|
||||
'310000': '上海市',
|
||||
'320000': '江苏省',
|
||||
'330000': '浙江省',
|
||||
'340000': '安徽省',
|
||||
'350000': '福建省',
|
||||
'360000': '江西省',
|
||||
'370000': '山东省',
|
||||
'410000': '河南省',
|
||||
'420000': '湖北省',
|
||||
'430000': '湖南省',
|
||||
'440000': '广东省',
|
||||
'450000': '广西壮族自治区',
|
||||
'460000': '海南省',
|
||||
'500000': '重庆市',
|
||||
'510000': '四川省',
|
||||
'520000': '贵州省',
|
||||
'530000': '云南省',
|
||||
'540000': '西藏自治区',
|
||||
'610000': '陕西省',
|
||||
'620000': '甘肃省',
|
||||
'630000': '青海省',
|
||||
'640000': '宁夏回族自治区',
|
||||
'650000': '新疆维吾尔自治区',
|
||||
'710000': '台湾省',
|
||||
'810000': '香港特别行政区',
|
||||
'820000': '澳门特别行政区'
|
||||
},
|
||||
'110000': {
|
||||
'110101': '东城区',
|
||||
'110102': '西城区',
|
||||
'110105': '朝阳区',
|
||||
'110106': '丰台区',
|
||||
'110107': '石景山区',
|
||||
'110108': '海淀区',
|
||||
'110109': '门头沟区',
|
||||
'110111': '房山区',
|
||||
'110112': '通州区',
|
||||
'110113': '顺义区',
|
||||
'110114': '昌平区',
|
||||
'110115': '大兴区',
|
||||
'110116': '怀柔区',
|
||||
'110117': '平谷区',
|
||||
'110118': '密云区',
|
||||
'110119': '延庆区'
|
||||
},
|
||||
'120000': {
|
||||
'120101': '和平区',
|
||||
'120102': '河东区',
|
||||
'120103': '河西区',
|
||||
'120104': '南开区',
|
||||
'120105': '河北区',
|
||||
'120106': '红桥区',
|
||||
'120110': '东丽区',
|
||||
'120111': '西青区',
|
||||
'120112': '津南区',
|
||||
'120113': '北辰区',
|
||||
'120114': '武清区',
|
||||
'120115': '宝坻区',
|
||||
'120116': '滨海新区',
|
||||
'120117': '宁河区',
|
||||
'120118': '静海区',
|
||||
'120119': '蓟州区'
|
||||
},
|
||||
'130000': {
|
||||
'130100': '石家庄市',
|
||||
'130200': '唐山市',
|
||||
'130300': '秦皇岛市',
|
||||
'130400': '邯郸市',
|
||||
'130500': '邢台市',
|
||||
'130600': '保定市',
|
||||
'130700': '张家口市',
|
||||
'130800': '承德市',
|
||||
'130900': '沧州市',
|
||||
'131000': '廊坊市',
|
||||
'131100': '衡水市',
|
||||
'139001': '定州市',
|
||||
'139002': '辛集市'
|
||||
},
|
||||
'140000': {
|
||||
'140100': '太原市',
|
||||
'140200': '大同市',
|
||||
'140300': '阳泉市',
|
||||
'140400': '长治市',
|
||||
'140500': '晋城市',
|
||||
'140600': '朔州市',
|
||||
'140700': '晋中市',
|
||||
'140800': '运城市',
|
||||
'140900': '忻州市',
|
||||
'141000': '临汾市',
|
||||
'141100': '吕梁市'
|
||||
},
|
||||
'150000': {
|
||||
'150100': '呼和浩特市',
|
||||
'150200': '包头市',
|
||||
'150300': '乌海市',
|
||||
'150400': '赤峰市',
|
||||
'150500': '通辽市',
|
||||
'150600': '鄂尔多斯市',
|
||||
'150700': '呼伦贝尔市',
|
||||
'150800': '巴彦淖尔市',
|
||||
'150900': '乌兰察布市',
|
||||
'152200': '兴安盟',
|
||||
'152500': '锡林郭勒盟',
|
||||
'152900': '阿拉善盟'
|
||||
},
|
||||
'210000': {
|
||||
'210100': '沈阳市',
|
||||
'210200': '大连市',
|
||||
'210300': '鞍山市',
|
||||
'210400': '抚顺市',
|
||||
'210500': '本溪市',
|
||||
'210600': '丹东市',
|
||||
'210700': '锦州市',
|
||||
'210800': '营口市',
|
||||
'210900': '阜新市',
|
||||
'211000': '辽阳市',
|
||||
'211100': '盘锦市',
|
||||
'211200': '铁岭市',
|
||||
'211300': '朝阳市',
|
||||
'211400': '葫芦岛市'
|
||||
},
|
||||
'220000': {
|
||||
'220100': '长春市',
|
||||
'220200': '吉林市',
|
||||
'220300': '四平市',
|
||||
'220400': '辽源市',
|
||||
'220500': '通化市',
|
||||
'220600': '白山市',
|
||||
'220700': '松原市',
|
||||
'220800': '白城市',
|
||||
'222400': '延边朝鲜族自治州'
|
||||
},
|
||||
'230000': {
|
||||
'230100': '哈尔滨市',
|
||||
'230200': '齐齐哈尔市',
|
||||
'230300': '鸡西市',
|
||||
'230400': '鹤岗市',
|
||||
'230500': '双鸭山市',
|
||||
'230600': '大庆市',
|
||||
'230700': '伊春市',
|
||||
'230800': '佳木斯市',
|
||||
'230900': '七台河市',
|
||||
'231000': '牡丹江市',
|
||||
'231100': '黑河市',
|
||||
'231200': '绥化市',
|
||||
'232700': '大兴安岭地区'
|
||||
},
|
||||
'310000': {
|
||||
'310101': '黄浦区',
|
||||
'310104': '徐汇区',
|
||||
'310105': '长宁区',
|
||||
'310106': '静安区',
|
||||
'310107': '普陀区',
|
||||
'310109': '虹口区',
|
||||
'310110': '杨浦区',
|
||||
'310112': '闵行区',
|
||||
'310113': '宝山区',
|
||||
'310114': '嘉定区',
|
||||
'310115': '浦东新区',
|
||||
'310116': '金山区',
|
||||
'310117': '松江区',
|
||||
'310118': '青浦区',
|
||||
'310120': '奉贤区',
|
||||
'310151': '崇明区'
|
||||
},
|
||||
'320000': {
|
||||
'320100': '南京市',
|
||||
'320200': '无锡市',
|
||||
'320300': '徐州市',
|
||||
'320400': '常州市',
|
||||
'320500': '苏州市',
|
||||
'320600': '南通市',
|
||||
'320700': '连云港市',
|
||||
'320800': '淮安市',
|
||||
'320900': '盐城市',
|
||||
'321000': '扬州市',
|
||||
'321100': '镇江市',
|
||||
'321200': '泰州市',
|
||||
'321300': '宿迁市'
|
||||
},
|
||||
'330000': {
|
||||
'330100': '杭州市',
|
||||
'330200': '宁波市',
|
||||
'330300': '温州市',
|
||||
'330400': '嘉兴市',
|
||||
'330500': '湖州市',
|
||||
'330600': '绍兴市',
|
||||
'330700': '金华市',
|
||||
'330800': '衢州市',
|
||||
'330900': '舟山市',
|
||||
'331000': '台州市',
|
||||
'331100': '丽水市'
|
||||
},
|
||||
'340000': {
|
||||
'340100': '合肥市',
|
||||
'340200': '芜湖市',
|
||||
'340300': '蚌埠市',
|
||||
'340400': '淮南市',
|
||||
'340500': '马鞍山市',
|
||||
'340600': '淮北市',
|
||||
'340700': '铜陵市',
|
||||
'340800': '安庆市',
|
||||
'341000': '黄山市',
|
||||
'341100': '滁州市',
|
||||
'341200': '阜阳市',
|
||||
'341300': '宿州市',
|
||||
'341500': '六安市',
|
||||
'341600': '亳州市',
|
||||
'341700': '池州市',
|
||||
'341800': '宣城市'
|
||||
},
|
||||
'350000': {
|
||||
'350100': '福州市',
|
||||
'350200': '厦门市',
|
||||
'350300': '莆田市',
|
||||
'350400': '三明市',
|
||||
'350500': '泉州市',
|
||||
'350600': '漳州市',
|
||||
'350700': '南平市',
|
||||
'350800': '龙岩市',
|
||||
'350900': '宁德市'
|
||||
},
|
||||
'360000': {
|
||||
'360100': '南昌市',
|
||||
'360200': '景德镇市',
|
||||
'360300': '萍乡市',
|
||||
'360400': '九江市',
|
||||
'360500': '新余市',
|
||||
'360600': '鹰潭市',
|
||||
'360700': '赣州市',
|
||||
'360800': '吉安市',
|
||||
'360900': '宜春市',
|
||||
'361000': '抚州市',
|
||||
'361100': '上饶市'
|
||||
},
|
||||
'370000': {
|
||||
'370100': '济南市',
|
||||
'370200': '青岛市',
|
||||
'370300': '淄博市',
|
||||
'370400': '枣庄市',
|
||||
'370500': '东营市',
|
||||
'370600': '烟台市',
|
||||
'370700': '潍坊市',
|
||||
'370800': '济宁市',
|
||||
'370900': '泰安市',
|
||||
'371000': '威海市',
|
||||
'371100': '日照市',
|
||||
'371200': '莱芜市',
|
||||
'371300': '临沂市',
|
||||
'371400': '德州市',
|
||||
'371500': '聊城市',
|
||||
'371600': '滨州市',
|
||||
'371700': '菏泽市'
|
||||
},
|
||||
'410000': {
|
||||
'410100': '郑州市',
|
||||
'410200': '开封市',
|
||||
'410300': '洛阳市',
|
||||
'410400': '平顶山市',
|
||||
'410500': '安阳市',
|
||||
'410600': '鹤壁市',
|
||||
'410700': '新乡市',
|
||||
'410800': '焦作市',
|
||||
'410900': '濮阳市',
|
||||
'411000': '许昌市',
|
||||
'411100': '漯河市',
|
||||
'411200': '三门峡市',
|
||||
'411300': '南阳市',
|
||||
'411400': '商丘市',
|
||||
'411500': '信阳市',
|
||||
'411600': '周口市',
|
||||
'411700': '驻马店市',
|
||||
'419001': '济源市'
|
||||
},
|
||||
'420000': {
|
||||
'420100': '武汉市',
|
||||
'420200': '黄石市',
|
||||
'420300': '十堰市',
|
||||
'420500': '宜昌市',
|
||||
'420600': '襄阳市',
|
||||
'420700': '鄂州市',
|
||||
'420800': '荆门市',
|
||||
'420900': '孝感市',
|
||||
'421000': '荆州市',
|
||||
'421100': '黄冈市',
|
||||
'421200': '咸宁市',
|
||||
'421300': '随州市',
|
||||
'422800': '恩施土家族苗族自治州',
|
||||
'429004': '仙桃市',
|
||||
'429005': '潜江市',
|
||||
'429006': '天门市',
|
||||
'429021': '神农架林区'
|
||||
},
|
||||
'430000': {
|
||||
'430100': '长沙市',
|
||||
'430200': '株洲市',
|
||||
'430300': '湘潭市',
|
||||
'430400': '衡阳市',
|
||||
'430500': '邵阳市',
|
||||
'430600': '岳阳市',
|
||||
'430700': '常德市',
|
||||
'430800': '张家界市',
|
||||
'430900': '益阳市',
|
||||
'431000': '郴州市',
|
||||
'431100': '永州市',
|
||||
'431200': '怀化市',
|
||||
'431300': '娄底市',
|
||||
'433100': '湘西土家族苗族自治州'
|
||||
},
|
||||
'440000': {
|
||||
'440100': '广州市',
|
||||
'440200': '韶关市',
|
||||
'440300': '深圳市',
|
||||
'440400': '珠海市',
|
||||
'440500': '汕头市',
|
||||
'440600': '佛山市',
|
||||
'440700': '江门市',
|
||||
'440800': '湛江市',
|
||||
'440900': '茂名市',
|
||||
'441200': '肇庆市',
|
||||
'441300': '惠州市',
|
||||
'441400': '梅州市',
|
||||
'441500': '汕尾市',
|
||||
'441600': '河源市',
|
||||
'441700': '阳江市',
|
||||
'441800': '清远市',
|
||||
'441900': '东莞市',
|
||||
'442000': '中山市',
|
||||
'445100': '潮州市',
|
||||
'445200': '揭阳市',
|
||||
'445300': '云浮市'
|
||||
},
|
||||
'450000': {
|
||||
'450100': '南宁市',
|
||||
'450200': '柳州市',
|
||||
'450300': '桂林市',
|
||||
'450400': '梧州市',
|
||||
'450500': '北海市',
|
||||
'450600': '防城港市',
|
||||
'450700': '钦州市',
|
||||
'450800': '贵港市',
|
||||
'450900': '玉林市',
|
||||
'451000': '百色市',
|
||||
'451100': '贺州市',
|
||||
'451200': '河池市',
|
||||
'451300': '来宾市',
|
||||
'451400': '崇左市'
|
||||
},
|
||||
'460000': {
|
||||
'460100': '海口市',
|
||||
'460200': '三亚市',
|
||||
'460300': '三沙市',
|
||||
'460400': '儋州市',
|
||||
'469001': '五指山市',
|
||||
'469002': '琼海市',
|
||||
'469005': '文昌市',
|
||||
'469006': '万宁市',
|
||||
'469007': '东方市',
|
||||
'469021': '定安县',
|
||||
'469022': '屯昌县',
|
||||
'469023': '澄迈县',
|
||||
'469024': '临高县',
|
||||
'469025': '白沙黎族自治县',
|
||||
'469026': '昌江黎族自治县',
|
||||
'469027': '乐东黎族自治县',
|
||||
'469028': '陵水黎族自治县',
|
||||
'469029': '保亭黎族苗族自治县',
|
||||
'469030': '琼中黎族苗族自治县'
|
||||
},
|
||||
'500000': {
|
||||
'500101': '万州区',
|
||||
'500102': '涪陵区',
|
||||
'500103': '渝中区',
|
||||
'500104': '大渡口区',
|
||||
'500105': '江北区',
|
||||
'500106': '沙坪坝区',
|
||||
'500107': '九龙坡区',
|
||||
'500108': '南岸区',
|
||||
'500109': '北碚区',
|
||||
'500110': '綦江区',
|
||||
'500111': '大足区',
|
||||
'500112': '渝北区',
|
||||
'500113': '巴南区',
|
||||
'500114': '黔江区',
|
||||
'500115': '长寿区',
|
||||
'500116': '江津区',
|
||||
'500117': '合川区',
|
||||
'500118': '永川区',
|
||||
'500119': '南川区',
|
||||
'500120': '璧山区',
|
||||
'500151': '铜梁区',
|
||||
'500152': '潼南区',
|
||||
'500153': '荣昌区',
|
||||
'500154': '开州区',
|
||||
'500228': '梁平县',
|
||||
'500229': '城口县',
|
||||
'500230': '丰都县',
|
||||
'500231': '垫江县',
|
||||
'500232': '武隆县',
|
||||
'500233': '忠县',
|
||||
'500235': '云阳县',
|
||||
'500236': '奉节县',
|
||||
'500237': '巫山县',
|
||||
'500238': '巫溪县',
|
||||
'500240': '石柱土家族自治县',
|
||||
'500241': '秀山土家族苗族自治县',
|
||||
'500242': '酉阳土家族苗族自治县',
|
||||
'500243': '彭水苗族土家族自治县'
|
||||
},
|
||||
'510000': {
|
||||
'510100': '成都市',
|
||||
'510300': '自贡市',
|
||||
'510400': '攀枝花市',
|
||||
'510500': '泸州市',
|
||||
'510600': '德阳市',
|
||||
'510700': '绵阳市',
|
||||
'510800': '广元市',
|
||||
'510900': '遂宁市',
|
||||
'511000': '内江市',
|
||||
'511100': '乐山市',
|
||||
'511300': '南充市',
|
||||
'511400': '眉山市',
|
||||
'511500': '宜宾市',
|
||||
'511600': '广安市',
|
||||
'511700': '达州市',
|
||||
'511800': '雅安市',
|
||||
'511900': '巴中市',
|
||||
'512000': '资阳市',
|
||||
'513200': '阿坝藏族羌族自治州',
|
||||
'513300': '甘孜藏族自治州',
|
||||
'513400': '凉山彝族自治州'
|
||||
},
|
||||
'520000': {
|
||||
'520100': '贵阳市',
|
||||
'520200': '六盘水市',
|
||||
'520300': '遵义市',
|
||||
'520400': '安顺市',
|
||||
'520500': '毕节市',
|
||||
'520600': '铜仁市',
|
||||
'522300': '黔西南布依族苗族自治州',
|
||||
'522600': '黔东南苗族侗族自治州',
|
||||
'522700': '黔南布依族苗族自治州'
|
||||
},
|
||||
'530000': {
|
||||
'530100': '昆明市',
|
||||
'530300': '曲靖市',
|
||||
'530400': '玉溪市',
|
||||
'530500': '保山市',
|
||||
'530600': '昭通市',
|
||||
'530700': '丽江市',
|
||||
'530800': '普洱市',
|
||||
'530900': '临沧市',
|
||||
'532300': '楚雄彝族自治州',
|
||||
'532500': '红河哈尼族彝族自治州',
|
||||
'532600': '文山壮族苗族自治州',
|
||||
'532800': '西双版纳傣族自治州',
|
||||
'532900': '大理白族自治州',
|
||||
'533100': '德宏傣族景颇族自治州',
|
||||
'533300': '怒江傈僳族自治州',
|
||||
'533400': '迪庆藏族自治州'
|
||||
},
|
||||
'540000': {
|
||||
'540100': '拉萨市',
|
||||
'540200': '日喀则市',
|
||||
'540300': '昌都市',
|
||||
'540400': '林芝市',
|
||||
'540500': '山南市',
|
||||
'542400': '那曲地区',
|
||||
'542500': '阿里地区'
|
||||
},
|
||||
'610000': {
|
||||
'610100': '西安市',
|
||||
'610200': '铜川市',
|
||||
'610300': '宝鸡市',
|
||||
'610400': '咸阳市',
|
||||
'610500': '渭南市',
|
||||
'610600': '延安市',
|
||||
'610700': '汉中市',
|
||||
'610800': '榆林市',
|
||||
'610900': '安康市',
|
||||
'611000': '商洛市'
|
||||
},
|
||||
'620000': {
|
||||
'620100': '兰州市',
|
||||
'620200': '嘉峪关市',
|
||||
'620300': '金昌市',
|
||||
'620400': '白银市',
|
||||
'620500': '天水市',
|
||||
'620600': '武威市',
|
||||
'620700': '张掖市',
|
||||
'620800': '平凉市',
|
||||
'620900': '酒泉市',
|
||||
'621000': '庆阳市',
|
||||
'621100': '定西市',
|
||||
'621200': '陇南市',
|
||||
'622900': '临夏回族自治州',
|
||||
'623000': '甘南藏族自治州'
|
||||
},
|
||||
'630000': {
|
||||
'630100': '西宁市',
|
||||
'630200': '海东市',
|
||||
'632200': '海北藏族自治州',
|
||||
'632300': '黄南藏族自治州',
|
||||
'632500': '海南藏族自治州',
|
||||
'632600': '果洛藏族自治州',
|
||||
'632700': '玉树藏族自治州',
|
||||
'632800': '海西蒙古族藏族自治州'
|
||||
},
|
||||
'640000': { '640100': '银川市', '640200': '石嘴山市', '640300': '吴忠市', '640400': '固原市', '640500': '中卫市' },
|
||||
'650000': {
|
||||
'650100': '乌鲁木齐市',
|
||||
'650200': '克拉玛依市',
|
||||
'650400': '吐鲁番市',
|
||||
'650500': '哈密市',
|
||||
'652300': '昌吉回族自治州',
|
||||
'652700': '博尔塔拉蒙古自治州',
|
||||
'652800': '巴音郭楞蒙古自治州',
|
||||
'652900': '阿克苏地区',
|
||||
'653000': '克孜勒苏柯尔克孜自治州',
|
||||
'653100': '喀什地区',
|
||||
'653200': '和田地区',
|
||||
'654000': '伊犁哈萨克自治州',
|
||||
'654200': '塔城地区',
|
||||
'654300': '阿勒泰地区',
|
||||
'659001': '石河子市',
|
||||
'659002': '阿拉尔市',
|
||||
'659003': '图木舒克市',
|
||||
'659004': '五家渠市',
|
||||
'659006': '铁门关市'
|
||||
},
|
||||
'710000': {
|
||||
'710101': '金门县',
|
||||
'710102': '连江县',
|
||||
'710103': '苗栗',
|
||||
'710104': '南投县',
|
||||
'710105': '澎湖县',
|
||||
'710106': '屏东县',
|
||||
'710107': '台东县',
|
||||
'710108': '台中市',
|
||||
'710109': '台南市',
|
||||
'710110': '台北市',
|
||||
'710111': '桃园市',
|
||||
'710112': '云林',
|
||||
'710113': '新北市',
|
||||
'710114': '彰化县',
|
||||
'710115': '嘉义市',
|
||||
'710116': '新竹市',
|
||||
'710117': '花莲县',
|
||||
'710118': '宜兰县',
|
||||
'710119': '高雄市',
|
||||
'710120': '基隆市',
|
||||
'710121': '新竹县',
|
||||
'710122': '嘉义县'
|
||||
},
|
||||
'810000': {
|
||||
'810101': '中西区',
|
||||
'810102': '东区',
|
||||
'810103': '九龙城区',
|
||||
'810104': '观塘区',
|
||||
'810105': '深水埗区',
|
||||
'810106': '湾仔区',
|
||||
'810107': '黄大仙区',
|
||||
'810108': '油尖旺区',
|
||||
'810109': '离岛区',
|
||||
'810110': '葵青区',
|
||||
'810111': '北区',
|
||||
'810112': '西贡区',
|
||||
'810113': '沙田区',
|
||||
'810114': '屯门区',
|
||||
'810115': '大埔区',
|
||||
'810116': '荃湾区',
|
||||
'810117': '元朗区',
|
||||
'810118': '香港',
|
||||
'810119': '九龙',
|
||||
'810120': '新界'
|
||||
},
|
||||
'820000': {
|
||||
'820101': '花地玛堂区',
|
||||
'820102': '花王堂区',
|
||||
'820103': '望德堂区',
|
||||
'820104': '风顺堂区',
|
||||
'820105': '大堂区',
|
||||
'820106': '嘉模堂区',
|
||||
'820107': '路函填海区',
|
||||
'820108': '圣方济各堂区'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* 防止打包部署时路径被写死-生产环境的配置项
|
||||
*/
|
||||
window._CONFIG = {};
|
||||
window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer
|
||||
window._CONFIG["domianWebSocketURL"] = "http://cwp.catarc.org.cn:8077/jero-boot";
|
||||
// 单点登录地址
|
||||
window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download";
|
||||
window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe";
|
||||
window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
|
||||
// 预览文件地址
|
||||
window._CONFIG["onlinePreviewDomainURL"] = "http://cwp.catarc.org.cn:8092/onlinePreview";
|
||||
|
||||
// 会议管理报名二维码地址
|
||||
window._CONFIG["singUpQRCodeURL"] = "https://cwp.catarc.org.cn/signupentrance"
|
||||
// 会议管理签到二维码地址 微信扫描二维码 跳转的 地址 要么全大写 要么全小写
|
||||
window._CONFIG["singInQRCodeURL"] = "https://cwp.catarc.org.cn/signinurl"
|
||||
// 页面显示用的会议报名二维码连接
|
||||
window._CONFIG["singInQRCodHref"]= 'http://cwp.catarc.org.cn/signupentrance'
|
||||
|
||||
// 票据打印--寄件人单位名称
|
||||
window._CONFIG["sendCompanyName"] = "中国汽车标准化研究院"
|
||||
// 票据打印--寄件人地址
|
||||
window._CONFIG["sendAddress"] = "天津市东丽区先锋东路68号"
|
||||
// 票据打印--寄件人邮编
|
||||
window._CONFIG["sendPostCode"] = "300300"
|
||||
|
||||
// 查看物流信息
|
||||
window._CONFIG["lookExpressDomainURL"] = "http://cwp.catarc.org.cn/lookExpressInfo"
|
||||
@@ -0,0 +1,261 @@
|
||||
tinymce.addI18n('zh_CN',{
|
||||
"Redo": "\u91cd\u590d",
|
||||
"Undo": "\u64a4\u6d88",
|
||||
"Cut": "\u526a\u5207",
|
||||
"Copy": "\u590d\u5236",
|
||||
"Paste": "\u7c98\u8d34",
|
||||
"Select all": "\u5168\u9009",
|
||||
"New document": "\u65b0\u6587\u6863",
|
||||
"Ok": "\u786e\u5b9a",
|
||||
"Cancel": "\u53d6\u6d88",
|
||||
"Visual aids": "\u7f51\u683c\u7ebf",
|
||||
"Bold": "\u7c97\u4f53",
|
||||
"Italic": "\u659c\u4f53",
|
||||
"Underline": "\u4e0b\u5212\u7ebf",
|
||||
"Strikethrough": "\u5220\u9664\u7ebf",
|
||||
"Superscript": "\u4e0a\u6807",
|
||||
"Subscript": "\u4e0b\u6807",
|
||||
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
|
||||
"Align left": "\u5de6\u5bf9\u9f50",
|
||||
"Align center": "\u5c45\u4e2d",
|
||||
"Align right": "\u53f3\u5bf9\u9f50",
|
||||
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
|
||||
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
|
||||
"Numbered list": "\u7f16\u53f7\u5217\u8868",
|
||||
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
|
||||
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
|
||||
"Close": "\u5173\u95ed",
|
||||
"Formats": "\u683c\u5f0f",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
|
||||
"Headers": "\u6807\u9898",
|
||||
"Header 1": "\u6807\u98981",
|
||||
"Header 2": "\u6807\u98982",
|
||||
"Header 3": "\u6807\u98983",
|
||||
"Header 4": "\u6807\u98984",
|
||||
"Header 5": "\u6807\u98985",
|
||||
"Header 6": "\u6807\u98986",
|
||||
"Headings": "\u6807\u9898",
|
||||
"Heading 1": "\u6807\u98981",
|
||||
"Heading 2": "\u6807\u98982",
|
||||
"Heading 3": "\u6807\u98983",
|
||||
"Heading 4": "\u6807\u98984",
|
||||
"Heading 5": "\u6807\u98985",
|
||||
"Heading 6": "\u6807\u98986",
|
||||
"Preformatted": "\u9884\u683c\u5f0f\u5316",
|
||||
"Div": "Div\u533a\u5757",
|
||||
"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
|
||||
"Code": "\u4ee3\u7801",
|
||||
"Paragraph": "\u6bb5\u843d",
|
||||
"Blockquote": "\u5f15\u7528",
|
||||
"Inline": "\u6587\u672c",
|
||||
"Blocks": "\u533a\u5757",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
|
||||
"Font Family": "\u5b57\u4f53",
|
||||
"Font Sizes": "\u5b57\u53f7",
|
||||
"Class": "Class",
|
||||
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
|
||||
"OR": "\u6216",
|
||||
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
|
||||
"Upload": "\u4e0a\u4f20",
|
||||
"Block": "\u5757",
|
||||
"Align": "\u5bf9\u9f50",
|
||||
"Default": "\u9ed8\u8ba4",
|
||||
"Circle": "\u7a7a\u5fc3\u5706",
|
||||
"Disc": "\u5b9e\u5fc3\u5706",
|
||||
"Square": "\u65b9\u5757",
|
||||
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
|
||||
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Anchor": "\u951a\u70b9",
|
||||
"Name": "\u540d\u79f0",
|
||||
"Id": "\u6807\u8bc6\u7b26",
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
|
||||
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
|
||||
"Special character": "\u7279\u6b8a\u7b26\u53f7",
|
||||
"Source code": "\u6e90\u4ee3\u7801",
|
||||
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
|
||||
"Language": "\u8bed\u8a00",
|
||||
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
|
||||
"Color": "\u989c\u8272",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"B": "B",
|
||||
"Left to right": "\u4ece\u5de6\u5230\u53f3",
|
||||
"Right to left": "\u4ece\u53f3\u5230\u5de6",
|
||||
"Emoticons": "\u8868\u60c5",
|
||||
"Document properties": "\u6587\u6863\u5c5e\u6027",
|
||||
"Title": "\u6807\u9898",
|
||||
"Keywords": "\u5173\u952e\u8bcd",
|
||||
"Description": "\u63cf\u8ff0",
|
||||
"Robots": "\u673a\u5668\u4eba",
|
||||
"Author": "\u4f5c\u8005",
|
||||
"Encoding": "\u7f16\u7801",
|
||||
"Fullscreen": "\u5168\u5c4f",
|
||||
"Action": "\u64cd\u4f5c",
|
||||
"Shortcut": "\u5feb\u6377\u952e",
|
||||
"Help": "\u5e2e\u52a9",
|
||||
"Address": "\u5730\u5740",
|
||||
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
|
||||
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
|
||||
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
|
||||
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
|
||||
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
|
||||
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
|
||||
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
|
||||
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
|
||||
"Plugins": "\u63d2\u4ef6",
|
||||
"Handy Shortcuts": "\u5feb\u6377\u952e",
|
||||
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
|
||||
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
|
||||
"Image description": "\u56fe\u7247\u63cf\u8ff0",
|
||||
"Source": "\u5730\u5740",
|
||||
"Dimensions": "\u5927\u5c0f",
|
||||
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
|
||||
"General": "\u666e\u901a",
|
||||
"Advanced": "\u9ad8\u7ea7",
|
||||
"Style": "\u6837\u5f0f",
|
||||
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
|
||||
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
|
||||
"Border": "\u8fb9\u6846",
|
||||
"Insert image": "\u63d2\u5165\u56fe\u7247",
|
||||
"Image": "\u56fe\u7247",
|
||||
"Image list": "\u56fe\u7247\u5217\u8868",
|
||||
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
|
||||
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
|
||||
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
|
||||
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
|
||||
"Edit image": "\u7f16\u8f91\u56fe\u7247",
|
||||
"Image options": "\u56fe\u7247\u9009\u9879",
|
||||
"Zoom in": "\u653e\u5927",
|
||||
"Zoom out": "\u7f29\u5c0f",
|
||||
"Crop": "\u88c1\u526a",
|
||||
"Resize": "\u8c03\u6574\u5927\u5c0f",
|
||||
"Orientation": "\u65b9\u5411",
|
||||
"Brightness": "\u4eae\u5ea6",
|
||||
"Sharpen": "\u9510\u5316",
|
||||
"Contrast": "\u5bf9\u6bd4\u5ea6",
|
||||
"Color levels": "\u989c\u8272\u5c42\u6b21",
|
||||
"Gamma": "\u4f3d\u9a6c\u503c",
|
||||
"Invert": "\u53cd\u8f6c",
|
||||
"Apply": "\u5e94\u7528",
|
||||
"Back": "\u540e\u9000",
|
||||
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Insert link": "\u63d2\u5165\u94fe\u63a5",
|
||||
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
|
||||
"Text to display": "\u663e\u793a\u6587\u5b57",
|
||||
"Url": "\u5730\u5740",
|
||||
"Target": "\u6253\u5f00\u65b9\u5f0f",
|
||||
"None": "\u65e0",
|
||||
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
|
||||
"Remove link": "\u5220\u9664\u94fe\u63a5",
|
||||
"Anchors": "\u951a\u70b9",
|
||||
"Link": "\u94fe\u63a5",
|
||||
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
|
||||
"Link list": "\u94fe\u63a5\u5217\u8868",
|
||||
"Insert video": "\u63d2\u5165\u89c6\u9891",
|
||||
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
|
||||
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
|
||||
"Alternative source": "\u955c\u50cf",
|
||||
"Poster": "\u5c01\u9762",
|
||||
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
|
||||
"Embed": "\u5185\u5d4c",
|
||||
"Media": "\u5a92\u4f53",
|
||||
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
|
||||
"Page break": "\u5206\u9875\u7b26",
|
||||
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
|
||||
"Preview": "\u9884\u89c8",
|
||||
"Print": "\u6253\u5370",
|
||||
"Save": "\u4fdd\u5b58",
|
||||
"Find": "\u67e5\u627e",
|
||||
"Replace with": "\u66ff\u6362\u4e3a",
|
||||
"Replace": "\u66ff\u6362",
|
||||
"Replace all": "\u5168\u90e8\u66ff\u6362",
|
||||
"Prev": "\u4e0a\u4e00\u4e2a",
|
||||
"Next": "\u4e0b\u4e00\u4e2a",
|
||||
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
|
||||
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
|
||||
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
|
||||
"Whole words": "\u5168\u5b57\u5339\u914d",
|
||||
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
|
||||
"Ignore": "\u5ffd\u7565",
|
||||
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
|
||||
"Finish": "\u5b8c\u6210",
|
||||
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
|
||||
"Insert table": "\u63d2\u5165\u8868\u683c",
|
||||
"Table properties": "\u8868\u683c\u5c5e\u6027",
|
||||
"Delete table": "\u5220\u9664\u8868\u683c",
|
||||
"Cell": "\u5355\u5143\u683c",
|
||||
"Row": "\u884c",
|
||||
"Column": "\u5217",
|
||||
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
|
||||
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
|
||||
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
|
||||
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
|
||||
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
|
||||
"Delete row": "\u5220\u9664\u884c",
|
||||
"Row properties": "\u884c\u5c5e\u6027",
|
||||
"Cut row": "\u526a\u5207\u884c",
|
||||
"Copy row": "\u590d\u5236\u884c",
|
||||
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
|
||||
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
|
||||
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
|
||||
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
|
||||
"Delete column": "\u5220\u9664\u5217",
|
||||
"Cols": "\u5217",
|
||||
"Rows": "\u884c",
|
||||
"Width": "\u5bbd",
|
||||
"Height": "\u9ad8",
|
||||
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
|
||||
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
|
||||
"Caption": "\u6807\u9898",
|
||||
"Left": "\u5de6\u5bf9\u9f50",
|
||||
"Center": "\u5c45\u4e2d",
|
||||
"Right": "\u53f3\u5bf9\u9f50",
|
||||
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
|
||||
"Scope": "\u8303\u56f4",
|
||||
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
|
||||
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
|
||||
"V Align": "\u5782\u76f4\u5bf9\u9f50",
|
||||
"Top": "\u9876\u90e8\u5bf9\u9f50",
|
||||
"Middle": "\u5782\u76f4\u5c45\u4e2d",
|
||||
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
|
||||
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
|
||||
"Row group": "\u884c\u7ec4",
|
||||
"Column group": "\u5217\u7ec4",
|
||||
"Row type": "\u884c\u7c7b\u578b",
|
||||
"Header": "\u8868\u5934",
|
||||
"Body": "\u8868\u4f53",
|
||||
"Footer": "\u8868\u5c3e",
|
||||
"Border color": "\u8fb9\u6846\u989c\u8272",
|
||||
"Insert template": "\u63d2\u5165\u6a21\u677f",
|
||||
"Templates": "\u6a21\u677f",
|
||||
"Template": "\u6a21\u677f",
|
||||
"Text color": "\u6587\u5b57\u989c\u8272",
|
||||
"Background color": "\u80cc\u666f\u8272",
|
||||
"Custom...": "\u81ea\u5b9a\u4e49...",
|
||||
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
|
||||
"No color": "\u65e0",
|
||||
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
|
||||
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
|
||||
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
|
||||
"Words: {0}": "\u5b57\u6570\uff1a{0}",
|
||||
"{0} words": "{0} \u5b57",
|
||||
"File": "\u6587\u4ef6",
|
||||
"Edit": "\u7f16\u8f91",
|
||||
"Insert": "\u63d2\u5165",
|
||||
"View": "\u89c6\u56fe",
|
||||
"Format": "\u683c\u5f0f",
|
||||
"Table": "\u8868\u683c",
|
||||
"Tools": "\u5de5\u5177",
|
||||
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9"
|
||||
});
|
||||
@@ -0,0 +1,554 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
.mce-content-body .mce-item-anchor {
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
|
||||
cursor: default;
|
||||
display: inline-block;
|
||||
height: 12px !important;
|
||||
padding: 0 2px;
|
||||
-webkit-user-modify: read-only;
|
||||
-moz-user-modify: read-only;
|
||||
-webkit-user-select: all;
|
||||
-moz-user-select: all;
|
||||
-ms-user-select: all;
|
||||
user-select: all;
|
||||
width: 8px !important;
|
||||
}
|
||||
.mce-content-body .mce-item-anchor[data-mce-selected] {
|
||||
outline-offset: 1px;
|
||||
}
|
||||
.tox-comments-visible .tox-comment {
|
||||
background-color: #fff0b7;
|
||||
}
|
||||
.tox-comments-visible .tox-comment--active {
|
||||
background-color: #ffe168;
|
||||
}
|
||||
.tox-checklist > li:not(.tox-checklist--hidden) {
|
||||
list-style: none;
|
||||
margin: .25em 0;
|
||||
position: relative;
|
||||
}
|
||||
.tox-checklist > li:not(.tox-checklist--hidden)::before {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
|
||||
background-size: 100%;
|
||||
content: '';
|
||||
cursor: pointer;
|
||||
height: 1em;
|
||||
left: -1.5em;
|
||||
position: absolute;
|
||||
top: .125em;
|
||||
width: 1em;
|
||||
}
|
||||
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
|
||||
}
|
||||
/* stylelint-disable */
|
||||
/* http://prismjs.com/ */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
font-size: .875rem;
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
-moz-tab-size: 4;
|
||||
tab-size: 4;
|
||||
-webkit-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
@media print {
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
:not(pre) > code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: transparent !important;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
/* Inline code */
|
||||
:not(pre) > code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
}
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #a67f59;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
.token.function {
|
||||
color: #DD4A68;
|
||||
}
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
||||
/* stylelint-enable */
|
||||
.mce-content-body .mce-visual-caret {
|
||||
background-color: black;
|
||||
background-color: currentcolor;
|
||||
position: absolute;
|
||||
}
|
||||
.mce-content-body .mce-visual-caret-hidden {
|
||||
display: none;
|
||||
}
|
||||
.mce-content-body *[data-mce-caret] {
|
||||
left: -1000px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
right: auto;
|
||||
top: 0;
|
||||
}
|
||||
.mce-content-body .mce-offscreen-selection {
|
||||
left: -9999999999px;
|
||||
max-width: 1000000px;
|
||||
position: absolute;
|
||||
}
|
||||
.mce-content-body *[contentEditable=false] {
|
||||
cursor: default;
|
||||
}
|
||||
.mce-content-body *[contentEditable=true] {
|
||||
cursor: text;
|
||||
}
|
||||
.tox-cursor-format-painter {
|
||||
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
|
||||
}
|
||||
.mce-content-body figure.align-left {
|
||||
float: left;
|
||||
}
|
||||
.mce-content-body figure.align-right {
|
||||
float: right;
|
||||
}
|
||||
.mce-content-body figure.image.align-center {
|
||||
display: table;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.mce-preview-object {
|
||||
border: 1px solid gray;
|
||||
display: inline-block;
|
||||
line-height: 0;
|
||||
margin: 0 2px 0 2px;
|
||||
position: relative;
|
||||
}
|
||||
.mce-preview-object .mce-shim {
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
|
||||
height: 100%;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.mce-preview-object[data-mce-selected="2"] .mce-shim {
|
||||
display: none;
|
||||
}
|
||||
.mce-object {
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
|
||||
border: 1px dashed #aaa;
|
||||
}
|
||||
.mce-pagebreak {
|
||||
border: 1px dashed #aaa;
|
||||
cursor: default;
|
||||
display: block;
|
||||
height: 5px;
|
||||
margin-top: 15px;
|
||||
page-break-before: always;
|
||||
width: 100%;
|
||||
}
|
||||
@media print {
|
||||
.mce-pagebreak {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
.tiny-pageembed .mce-shim {
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
|
||||
height: 100%;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
|
||||
display: none;
|
||||
}
|
||||
.tiny-pageembed {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
.tiny-pageembed--21by9,
|
||||
.tiny-pageembed--16by9,
|
||||
.tiny-pageembed--4by3,
|
||||
.tiny-pageembed--1by1 {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
.tiny-pageembed--21by9::before,
|
||||
.tiny-pageembed--16by9::before,
|
||||
.tiny-pageembed--4by3::before,
|
||||
.tiny-pageembed--1by1::before {
|
||||
content: "";
|
||||
display: block;
|
||||
}
|
||||
.tiny-pageembed--21by9::before {
|
||||
padding-top: 42.857143%;
|
||||
}
|
||||
.tiny-pageembed--16by9::before {
|
||||
padding-top: 56.25%;
|
||||
}
|
||||
.tiny-pageembed--4by3::before {
|
||||
padding-top: 75%;
|
||||
}
|
||||
.tiny-pageembed--1by1::before {
|
||||
padding-top: 100%;
|
||||
}
|
||||
.tiny-pageembed--21by9 iframe,
|
||||
.tiny-pageembed--16by9 iframe,
|
||||
.tiny-pageembed--4by3 iframe,
|
||||
.tiny-pageembed--1by1 iframe {
|
||||
border: 0;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle {
|
||||
background-color: #4099ff;
|
||||
border-color: #4099ff;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
box-sizing: border-box;
|
||||
height: 10px;
|
||||
position: absolute;
|
||||
width: 10px;
|
||||
z-index: 10000;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle:hover {
|
||||
background-color: #4099ff;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
|
||||
cursor: nwse-resize;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
|
||||
cursor: nesw-resize;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
|
||||
cursor: nwse-resize;
|
||||
}
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
|
||||
cursor: nesw-resize;
|
||||
}
|
||||
.mce-content-body .mce-clonedresizable {
|
||||
opacity: .5;
|
||||
outline: 1px dashed black;
|
||||
position: absolute;
|
||||
z-index: 10000;
|
||||
}
|
||||
.mce-content-body .mce-resize-helper {
|
||||
background: #555;
|
||||
background: rgba(0, 0, 0, 0.75);
|
||||
border: 1px;
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
display: none;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
margin: 5px 10px;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
white-space: nowrap;
|
||||
z-index: 10001;
|
||||
}
|
||||
.mce-match-marker {
|
||||
background: #aaa;
|
||||
color: #fff;
|
||||
}
|
||||
.mce-match-marker-selected {
|
||||
background: #39f;
|
||||
color: #fff;
|
||||
}
|
||||
.mce-content-body img[data-mce-selected],
|
||||
.mce-content-body table[data-mce-selected] {
|
||||
outline: 3px solid #b4d7ff;
|
||||
}
|
||||
.mce-content-body hr[data-mce-selected] {
|
||||
outline: 3px solid #b4d7ff;
|
||||
outline-offset: 1px;
|
||||
}
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
|
||||
outline: 3px solid #b4d7ff;
|
||||
}
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
|
||||
outline: 3px solid #b4d7ff;
|
||||
}
|
||||
.mce-content-body *[contentEditable=false][data-mce-selected] {
|
||||
cursor: not-allowed;
|
||||
outline: 3px solid #b4d7ff;
|
||||
}
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
|
||||
outline: none;
|
||||
}
|
||||
.mce-content-body *[data-mce-selected="inline-boundary"] {
|
||||
background-color: #b4d7ff;
|
||||
}
|
||||
.mce-content-body .mce-edit-focus {
|
||||
outline: 3px solid #b4d7ff;
|
||||
}
|
||||
.mce-content-body td[data-mce-selected],
|
||||
.mce-content-body th[data-mce-selected] {
|
||||
background-color: #b4d7ff !important;
|
||||
}
|
||||
.mce-content-body td[data-mce-selected]::-moz-selection,
|
||||
.mce-content-body th[data-mce-selected]::-moz-selection {
|
||||
background: none;
|
||||
}
|
||||
.mce-content-body td[data-mce-selected]::selection,
|
||||
.mce-content-body th[data-mce-selected]::selection {
|
||||
background: none;
|
||||
}
|
||||
.mce-content-body td[data-mce-selected] *,
|
||||
.mce-content-body th[data-mce-selected] * {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.mce-content-body img::-moz-selection {
|
||||
background: none;
|
||||
}
|
||||
.mce-content-body img::selection {
|
||||
background: none;
|
||||
}
|
||||
.ephox-snooker-resizer-bar {
|
||||
background-color: #b4d7ff;
|
||||
opacity: 0;
|
||||
}
|
||||
.ephox-snooker-resizer-cols {
|
||||
cursor: col-resize;
|
||||
}
|
||||
.ephox-snooker-resizer-rows {
|
||||
cursor: row-resize;
|
||||
}
|
||||
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
|
||||
opacity: 1;
|
||||
}
|
||||
.mce-spellchecker-word {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.5'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
|
||||
background-position: 0 calc(100% + 1px);
|
||||
background-repeat: repeat-x;
|
||||
background-size: auto 6px;
|
||||
cursor: default;
|
||||
height: 2rem;
|
||||
}
|
||||
.mce-spellchecker-grammar {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23008800'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
|
||||
background-position: 0 calc(100% + 1px);
|
||||
background-repeat: repeat-x;
|
||||
background-size: auto 6px;
|
||||
cursor: default;
|
||||
}
|
||||
.mce-toc {
|
||||
border: 1px solid gray;
|
||||
}
|
||||
.mce-toc h2 {
|
||||
margin: 4px;
|
||||
}
|
||||
.mce-toc li {
|
||||
list-style-type: none;
|
||||
}
|
||||
.mce-item-table,
|
||||
.mce-item-table td,
|
||||
.mce-item-table th,
|
||||
.mce-item-table caption {
|
||||
border: 1px dashed #bbb;
|
||||
}
|
||||
.mce-visualblocks p,
|
||||
.mce-visualblocks h1,
|
||||
.mce-visualblocks h2,
|
||||
.mce-visualblocks h3,
|
||||
.mce-visualblocks h4,
|
||||
.mce-visualblocks h5,
|
||||
.mce-visualblocks h6,
|
||||
.mce-visualblocks div:not([data-mce-bogus]),
|
||||
.mce-visualblocks section,
|
||||
.mce-visualblocks article,
|
||||
.mce-visualblocks blockquote,
|
||||
.mce-visualblocks address,
|
||||
.mce-visualblocks pre,
|
||||
.mce-visualblocks figure,
|
||||
.mce-visualblocks figcaption,
|
||||
.mce-visualblocks hgroup,
|
||||
.mce-visualblocks aside,
|
||||
.mce-visualblocks ul,
|
||||
.mce-visualblocks ol,
|
||||
.mce-visualblocks dl {
|
||||
background-repeat: no-repeat;
|
||||
border: 1px dashed #bbb;
|
||||
margin-left: 3px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.mce-visualblocks p {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
|
||||
}
|
||||
.mce-visualblocks h1 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
|
||||
}
|
||||
.mce-visualblocks h2 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
|
||||
}
|
||||
.mce-visualblocks h3 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
|
||||
}
|
||||
.mce-visualblocks h4 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
|
||||
}
|
||||
.mce-visualblocks h5 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
|
||||
}
|
||||
.mce-visualblocks h6 {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
|
||||
}
|
||||
.mce-visualblocks div:not([data-mce-bogus]) {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
|
||||
}
|
||||
.mce-visualblocks section {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
|
||||
}
|
||||
.mce-visualblocks article {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
|
||||
}
|
||||
.mce-visualblocks blockquote {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
|
||||
}
|
||||
.mce-visualblocks address {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
|
||||
}
|
||||
.mce-visualblocks pre {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
|
||||
}
|
||||
.mce-visualblocks figure {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
|
||||
}
|
||||
.mce-visualblocks figcaption {
|
||||
border: 1px dashed #bbb;
|
||||
}
|
||||
.mce-visualblocks hgroup {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
|
||||
}
|
||||
.mce-visualblocks aside {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
|
||||
}
|
||||
.mce-visualblocks ul {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
|
||||
}
|
||||
.mce-visualblocks ol {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
|
||||
}
|
||||
.mce-visualblocks dl {
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
|
||||
}
|
||||
.mce-nbsp,
|
||||
.mce-shy {
|
||||
background: #aaa;
|
||||
}
|
||||
.mce-shy::after {
|
||||
content: '-';
|
||||
}
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<template>
|
||||
<a-config-provider :locale="locale">
|
||||
<div id="app">
|
||||
<router-view></router-view>
|
||||
</div>
|
||||
</a-config-provider>
|
||||
</template>
|
||||
<script>
|
||||
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
|
||||
import enquireScreen from '@/utils/device'
|
||||
window.addEventListener('message', function (event) {
|
||||
// 当监听到 需要修改样式的事件时 隐藏相应的元素
|
||||
if (event.data.hideDom) {
|
||||
//此处执行事件
|
||||
setTimeout(() => {
|
||||
document.getElementsByClassName('ant-layout-sider')[0].style.display = 'none'
|
||||
document.getElementsByClassName('ant-layout-header')[0].style.display = 'none'
|
||||
document.getElementsByClassName('tab-layout-tabs ant-tabs ant-tabs-top')[0].style.display = 'none'
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
|
||||
document.onkeydown = keyDown
|
||||
|
||||
function keyDown(e) {
|
||||
// 拦截backspace按钮,谷歌浏览器不需要拦截
|
||||
// 拦截仍然存在的问题:当input、textarea失去焦点后,仍然会后退页面
|
||||
if (e.keyCode === 8 && navigator.userAgent.indexOf('AppleWebKit') === -1 ) {
|
||||
// 判断是不是在input或textarea触发backspace按钮事件
|
||||
if (window.event.srcElement.tagName.toUpperCase() === 'INPUT' || window.event.srcElement.tagName.toUpperCase() === 'TEXTAREA') {
|
||||
// 判断输入框中是否还有值可删除
|
||||
if (window.event.srcElement.value.length === 1) {
|
||||
// 拦截事件
|
||||
e.keyCode=0
|
||||
e.returnValue=false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
locale: zhCN
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let that = this
|
||||
enquireScreen(deviceType => {
|
||||
// tablet
|
||||
if (deviceType === 0) {
|
||||
that.$store.commit('TOGGLE_DEVICE', 'mobile')
|
||||
that.$store.dispatch('setSidebar', false)
|
||||
}
|
||||
// mobile
|
||||
else if (deviceType === 1) {
|
||||
that.$store.commit('TOGGLE_DEVICE', 'mobile')
|
||||
that.$store.dispatch('setSidebar', false)
|
||||
} else {
|
||||
that.$store.commit('TOGGLE_DEVICE', 'desktop')
|
||||
that.$store.dispatch('setSidebar', true)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
#app {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,204 @@
|
||||
import { getAction, deleteAction,putAction, postAction, httpAction } from '@/api/manage'
|
||||
import Vue from 'vue'
|
||||
import {UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types'
|
||||
|
||||
// idm 系统单点登录 获取用户信息
|
||||
const loginIdmPlatform = (params) => postAction(`/sys/singleSignOn?code=${params.code}`)
|
||||
//角色管理
|
||||
const addRole = (params)=>postAction('/sys/role/add',params)
|
||||
const editRole = (params)=>postAction('/sys/role/edit',params)
|
||||
const checkRoleCode = (params)=>getAction('/sys/role/checkRoleCode',params)
|
||||
const queryallRoles = (params)=> getAction('sys/role/treeList',params)
|
||||
const queryall = (params)=>getAction('/sys/role/queryall',params)
|
||||
|
||||
//用户管理
|
||||
const addUser = (params)=>postAction('/sys/user/add',params)
|
||||
const editUser = (params)=>postAction('/sys/user/edit',params)
|
||||
const queryUserRole = (params)=>getAction('/sys/user/queryUserRole',params)
|
||||
const getUserList = (params)=>getAction('/sys/user/page',params)
|
||||
// 获取全部用户列表
|
||||
const getAllUserList = (params) => getAction('/sys/user/list', params)
|
||||
const frozenBatch = (params)=>postAction('/sys/user/frozenBatch',params)
|
||||
//验证用户是否存在
|
||||
const checkOnlyUser = (params)=>getAction('/sys/user/checkOnlyUser',params)
|
||||
//改变密码
|
||||
const changePassword = (params)=>postAction('/sys/user/changePassword',params)
|
||||
// 重置密码
|
||||
const resetUserPassword = (params) => postAction('/sys/user/resetPassword',params)
|
||||
|
||||
//权限管理
|
||||
const addPermission= (params)=>postAction('/sys/permission/add',params)
|
||||
const editPermission= (params)=>postAction('/sys/permission/edit',params)
|
||||
const getPermissionList = (params)=>getAction('/sys/permission/page',params)
|
||||
const getSystemMenuList = (params)=>getAction('/sys/permission/getSystemMenuList',params)
|
||||
const getSystemSubmenu = (params)=>getAction('/sys/permission/getSystemSubmenu',params)
|
||||
const getSystemSubmenuBatch = (params) => getAction('/sys/permission/getSystemSubmenuBatch', params)
|
||||
const queryTreeList = (params)=>getAction('/sys/permission/queryTreeList',params)
|
||||
const queryTreeListForRole = (params)=>getAction('/sys/role/queryTreeList',params)
|
||||
const queryListAsync = (params)=>getAction('/sys/permission/queryListAsync',params)
|
||||
const queryRolePermission = (params)=>getAction('/sys/permission/queryRolePermission',params)
|
||||
const saveRolePermission = (params)=>postAction('/sys/permission/saveRolePermission',params)
|
||||
const queryPermissionsByUser = ()=>getAction('/sys/permission/getUserPermissionByToken')
|
||||
const loadAllRoleIds = (params)=>getAction('/sys/permission/loadAllRoleIds',params)
|
||||
const getPermissionRuleList = (params)=>getAction('/sys/permission/getPermRuleListByPermId',params)
|
||||
const queryPermissionRule = (params)=>getAction('/sys/permission/queryPermissionRule',params)
|
||||
|
||||
// 部门管理
|
||||
const queryDepartTreeList = (params)=>getAction('/sys/sysDepart/queryTreeList',params)
|
||||
const queryIdTree = (params)=>getAction('/sys/sysDepart/queryIdTree',params)
|
||||
const queryParentName = (params)=>getAction('/sys/sysDepart/queryParentName',params)
|
||||
const searchByKeywords = (params)=>getAction('/sys/sysDepart/searchBy',params)
|
||||
const deleteByDepartId = (params)=>getAction('/sys/sysDepart/delete',params)
|
||||
|
||||
//二级部门管理
|
||||
const queryDepartPermission = (params)=>getAction('/sys/permission/queryDepartPermission',params)
|
||||
const saveDepartPermission = (params)=>postAction('/sys/permission/saveDepartPermission',params)
|
||||
const queryTreeListForDeptRole = (params)=>getAction('/sys/sysDepartPermission/queryTreeListForDeptRole',params)
|
||||
const queryDeptRolePermission = (params)=>getAction('/sys/sysDepartPermission/queryDeptRolePermission',params)
|
||||
const saveDeptRolePermission = (params)=>postAction('/sys/sysDepartPermission/saveDeptRolePermission',params)
|
||||
const queryMyDepartTreeList = (params)=>getAction('/sys/sysDepart/queryMyDeptTreeList',params)
|
||||
|
||||
//日志管理
|
||||
//const getLogList = (params)=>getAction("/sys/log/page",params);
|
||||
const deleteLog = (params)=>deleteAction('/sys/log/delete',params)
|
||||
const deleteLogList = (params)=>deleteAction('/sys/log/deleteBatch',params)
|
||||
|
||||
//数据字典
|
||||
const addDict = (params)=>postAction('/sys/dict/add',params)
|
||||
const editDict = (params)=>postAction('/sys/dict/edit',params)
|
||||
const treeList = (params)=>getAction('/sys/dict/treeList',params)
|
||||
const addDictItem = (params)=>postAction('/sys/dictItem/add',params)
|
||||
const editDictItem = (params)=>postAction('/sys/dictItem/edit',params)
|
||||
|
||||
//字典标签专用(通过code获取字典数组)
|
||||
export const ajaxGetDictItems = (code, params)=>getAction(`/sys/dict/getDictItems/${code}`,params)
|
||||
//从缓存中获取字典配置
|
||||
function getDictItemsFromCache(dictCode) {
|
||||
if (Vue.ls.get(UI_CACHE_DB_DICT_DATA) && Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode]) {
|
||||
let dictItems = Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode]
|
||||
return dictItems
|
||||
}
|
||||
}
|
||||
|
||||
//系统通告
|
||||
const doReleaseData = (params)=>getAction('/sys/annountCement/doReleaseData',params)
|
||||
const doReovkeData = (params)=>getAction('/sys/annountCement/doReovkeData',params)
|
||||
//获取系统访问量
|
||||
const getLoginfo = (params)=>getAction('/sys/loginfo',params)
|
||||
const getVisitInfo = (params)=>getAction('/sys/visitInfo',params)
|
||||
|
||||
// 根据部门主键查询用户信息
|
||||
const queryUserByDepId = (params)=>getAction('/sys/user/queryUserByDepId',params)
|
||||
|
||||
// 重复校验
|
||||
const duplicateCheck = (params)=>getAction('/sys/duplicate/check',params)
|
||||
// 加载分类字典
|
||||
const loadCategoryData = (params)=>getAction('/sys/category/loadAllData',params)
|
||||
const checkRuleByCode = (params) => getAction('/sys/checkRule/checkByCode', params)
|
||||
//加载我的通告信息
|
||||
const getUserNoticeInfo= (params)=>getAction('/sys/sysAnnouncementSend/getMyAnnouncementSend',params)
|
||||
const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponent(url)}`
|
||||
|
||||
// 通过文件的id获取文件的相应信息
|
||||
const getFileInfo = (params) => getAction('/sys/oss/file/queryById', params)
|
||||
// 通过多个文件的ids 获取文件的相应信息
|
||||
const getFileInfoByIds = (params) => getAction('/sys/oss/file/queryByIds', params)
|
||||
|
||||
// 中转HTTP请求
|
||||
export const transitRESTful = {
|
||||
get: (url, parameter) => getAction(getTransitURL(url), parameter),
|
||||
post: (url, parameter) => postAction(getTransitURL(url), parameter),
|
||||
put: (url, parameter) => putAction(getTransitURL(url), parameter),
|
||||
http: (url, parameter) => httpAction(getTransitURL(url), parameter),
|
||||
}
|
||||
|
||||
// 通过企业名称获取该企业下的联系人
|
||||
const getContactsByCompany = (params) => getAction('/company/payContactsManagement/queryByCompany', params)
|
||||
// 通过企业名称获取该企业下的联系人无权限接口
|
||||
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
|
||||
// 通过联系人id获取联系人信息
|
||||
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param)
|
||||
// 企业管理员重置密码
|
||||
const companyAdminResetPassword = (param) => postAction('/payManagerManagement/resetPassword', param)
|
||||
|
||||
// 企业管理员启用禁用
|
||||
const companyAdminEnable= (param) => postAction('/payManagerManagement/frozenBatch', param)
|
||||
|
||||
// 通过企业id查询企业的相关发票信息
|
||||
const queryCompanyInfoById= (param) => getAction('/company/payCompanyManagement/queryById', param)
|
||||
|
||||
// 加密获取key 与 iv
|
||||
const getKeyIv = (param) => getAction('/sys/getEncryptedString',param)
|
||||
|
||||
export {
|
||||
addRole,
|
||||
editRole,
|
||||
checkRoleCode,
|
||||
addUser,
|
||||
editUser,
|
||||
queryUserRole,
|
||||
getUserList,
|
||||
getAllUserList,
|
||||
queryall,
|
||||
frozenBatch,
|
||||
checkOnlyUser,
|
||||
changePassword,
|
||||
getPermissionList,
|
||||
addPermission,
|
||||
editPermission,
|
||||
queryTreeList,
|
||||
queryListAsync,
|
||||
queryRolePermission,
|
||||
saveRolePermission,
|
||||
queryPermissionsByUser,
|
||||
loadAllRoleIds,
|
||||
getPermissionRuleList,
|
||||
queryPermissionRule,
|
||||
queryDepartTreeList,
|
||||
queryIdTree,
|
||||
queryParentName,
|
||||
searchByKeywords,
|
||||
deleteByDepartId,
|
||||
deleteLog,
|
||||
deleteLogList,
|
||||
addDict,
|
||||
editDict,
|
||||
treeList,
|
||||
addDictItem,
|
||||
editDictItem,
|
||||
doReleaseData,
|
||||
doReovkeData,
|
||||
getLoginfo,
|
||||
getVisitInfo,
|
||||
queryUserByDepId,
|
||||
duplicateCheck,
|
||||
queryTreeListForRole,
|
||||
getSystemMenuList,
|
||||
getSystemSubmenu,
|
||||
getSystemSubmenuBatch,
|
||||
loadCategoryData,
|
||||
checkRuleByCode,
|
||||
queryDepartPermission,
|
||||
saveDepartPermission,
|
||||
queryTreeListForDeptRole,
|
||||
queryDeptRolePermission,
|
||||
saveDeptRolePermission,
|
||||
queryMyDepartTreeList,
|
||||
getUserNoticeInfo,
|
||||
getDictItemsFromCache,
|
||||
resetUserPassword,
|
||||
getContactsByCompany,
|
||||
queryallRoles,
|
||||
getContactsById,
|
||||
getFileInfo,
|
||||
getFileInfoByIds,
|
||||
getKeyIv,
|
||||
getContactsByCompanyNoLimit,
|
||||
loginIdmPlatform,
|
||||
companyAdminResetPassword,
|
||||
companyAdminEnable,
|
||||
queryCompanyInfoById
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/* 合同管理 对接其他IOP系统的api */
|
||||
import {getAction, postAction} from './manage'
|
||||
// let apiBaseUrl = '/openApi'
|
||||
// 获得 access_token
|
||||
const getAccessToken = (params) => postAction(`payResearchProject/payResearchProject/getToken`,params)
|
||||
// const getAccessToken = (params) => postAction(`https://openapi.catarc.ac.cn/login`,params)
|
||||
// 刷新 access_token
|
||||
const refreshToken = (params) => postAction('/payResearchProject/payResearchProject/refreshToken',params)
|
||||
|
||||
//合同台账分页查询接口
|
||||
const getContractPage = (params) => postAction('/payResearchProject/payResearchProject/pageForThreeContractPage',params)
|
||||
//合同台账列表查询接口
|
||||
const getContractList = (params) => postAction('/payResearchProject/payResearchProject/listForThreeContract',params)
|
||||
//合同台账详情接口
|
||||
const getContractById = (params) => getAction(`/payResearchProject/payResearchProject/oneForThreeContract`,params)
|
||||
// 通过 公司名称获取公司的相关信息
|
||||
const getCompanyByName = (params) => getAction(`/company/payCompanyManagement/getCompanyByName`,params)
|
||||
|
||||
export {
|
||||
getAccessToken,
|
||||
refreshToken,
|
||||
getContractPage,
|
||||
getContractList,
|
||||
getContractById,
|
||||
getCompanyByName
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import {getAction, postAction} from '@api/manage'
|
||||
|
||||
// 通过用户id获取用户信息
|
||||
const getUserInfo = (params) => getAction('/sys/user/queryById',params)
|
||||
// 通过会议id获取会议的详细信息
|
||||
const getMeetInfoById = (params) => getAction('/meeting/payMeeting/queryById',params)
|
||||
// 获取所有工作组项目
|
||||
const getAllWorkProjects = () => getAction('/project/payWorkingGroup/listAll')
|
||||
// 通过id获取参会人详细信息
|
||||
const getSingUpUserInfo = (params) => getAction('/meeting/payMeetingSituation/queryById',params)
|
||||
|
||||
// 生成会议二维码
|
||||
const createQcCode = (params) => getAction('/meeting/payMeeting/createBase64',params)
|
||||
// 收入合同的新增会员项目的查询
|
||||
const queryContractMemberProject = (params) => getAction('/jero/memberProject/queryListByNotCompany',params)
|
||||
|
||||
// 通过单位名称校验是否标协会员
|
||||
const validateStandard = (params) => getAction('/meeting/internalMeetingSituation/checkMember',params)
|
||||
|
||||
// 国际研讨会--已经生成的随机码列表页的查询
|
||||
const getGeneratedCodeList = (params) => getAction('/meeting/randomCode/link/page', params)
|
||||
// 国际研讨会--生成随机码方法
|
||||
const generateCode = (params) => postAction('/meeting/randomCode/generate', params)
|
||||
// 国际研讨会--列表页新增一条随机码数据
|
||||
const addGenerateCodeList = (params) => postAction('/meeting/randomCode/add', params)
|
||||
// 国际研讨会--列表页编辑一条随机码数据
|
||||
const editGenerateCodeList = (params) => postAction('/meeting/randomCode/edit', params)
|
||||
|
||||
// 标协会议-问题征集详情-查询标准号下拉框数据
|
||||
const getStandardNumberList = (params) => getAction('/meeting/standardsMeeting/getStandardNumberList', params)
|
||||
|
||||
|
||||
export {
|
||||
getUserInfo,
|
||||
getMeetInfoById,
|
||||
getAllWorkProjects,
|
||||
getSingUpUserInfo,
|
||||
createQcCode,
|
||||
queryContractMemberProject,
|
||||
validateStandard,
|
||||
getGeneratedCodeList,
|
||||
generateCode,
|
||||
addGenerateCodeList,
|
||||
editGenerateCodeList,
|
||||
getStandardNumberList
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
import { getAction, postAction } from '@api/manage'
|
||||
|
||||
// 通过id获取工作组详情
|
||||
const getWorkingGroupById = (params) => getAction('/project/payWorkingGroup/queryById', params)
|
||||
// 判断工作组成员是否设置来款通知
|
||||
const getChargeNotice = (param) => getAction('/project/payWorkingGroupSubitem/getCharge', param)
|
||||
// 工作组会议的发布提醒
|
||||
const publishRemind = (param) => postAction('/meeting/workGroupMeeting/publishReminder', param)
|
||||
// 分标委会议的发布提醒
|
||||
const commitePublishRemind = (param) => postAction('/meeting/committeeMeeting/publishReminder',param)
|
||||
// 理事会的发布提醒
|
||||
const councilPublishRemind = (param) => postAction('/meeting/councilMeeting/publishReminder',param)
|
||||
// 通过id获取收入合同信息
|
||||
const getRevenueContractById = (param) => getAction('/contract/payIncomeContract/queryById', param)
|
||||
// 收入合同审核
|
||||
const aduitRevenueContract = (param) => postAction('/contract/payIncomeContract/audit', param)
|
||||
// 收入合同关联项目
|
||||
const associatedProject = (param) => postAction('/contract/payIncomeContract/associated', param)
|
||||
// 收入合同获取关联项目列表
|
||||
const getAssociatedProject = (param) => getAction('/contract/payIncomeContract/getAssociated', param)
|
||||
// 取消关联
|
||||
const cancelAssociatedProject = (param) => postAction('/contract/payIncomeContract/cancelAssociated', param)
|
||||
// 收入合同提交审核
|
||||
const submitAudit = (param) => postAction('/contract/payIncomeContract/submitAudit', param)
|
||||
// 获取不存在成员单位的工作组信息
|
||||
const getWorkingGroupListByNotCompany = (param) => getAction('/project/payWorkingGroup/queryListByNotCompany', param)
|
||||
// 收入合同存档
|
||||
const archiveRevenueContract = (param) => postAction('/contract/payIncomeContract/archive', param)
|
||||
// 根据部门id获取用户信息
|
||||
const queryUserByDepartId = (param) => getAction('/sys/user/listRoleAndDepart', param)
|
||||
// 企业联系人新建重名校验
|
||||
const queryContactByName = (param) => getAction('/company/payContactsManagement/queryByName', param)
|
||||
// 通过id获取支出合同信息
|
||||
const getExpenditureContractById = (param) => getAction('/contract/paySpendingContract/queryById', param)
|
||||
// 添加来款阶段
|
||||
const addPaymentPhase = (param) => postAction('/paymentRecord/payPaymentRecord/addAmountReceived', param)
|
||||
// 编辑来款阶段
|
||||
const editAmountPhase = (param) => postAction('/paymentRecord/payPaymentRecord/editAmountReceived', param)
|
||||
// 来款列表
|
||||
const amountReceivedList = (param) => postAction(`/paymentRecord/payPaymentRecord/amountReceivedList?id=${ param }`)
|
||||
// 开票列表
|
||||
const payBillList = (param) => postAction(`/paymentRecord/payPaymentRecord/payBillList?id=${ param }`)
|
||||
// 新增开票阶段
|
||||
const addPayBill = (param) => postAction(`/paymentRecord/payPaymentRecord/addPayBill`, param)
|
||||
// 编辑开票阶段
|
||||
const editPayBill = (param) => postAction('/paymentRecord/payPaymentRecord/editPayBill', param)
|
||||
// 普通项目管理-通过项目id查询其他的信息
|
||||
const queryCommonProjectById = (param) => getAction('/project/payCommonProject/queryById', param)
|
||||
// 通过id查询打包企业信息
|
||||
const getPackCompanyById = (param) => getAction('/pack/payPackCompany/queryById', param)
|
||||
// 添加打包项目
|
||||
const addPackProject = (param) => postAction('/pack/payPackCompanyProject/add', param)
|
||||
// 取消打包
|
||||
const removePackProject = (param) => postAction('/pack/payPackCompanyProject/remove', param)
|
||||
// 批量取消打包
|
||||
const batchRemovePackProject = (param) => postAction('/pack/payPackCompanyProject/removeBatch', param)
|
||||
// 企业管理审核
|
||||
const aduitCompany = (param) => getAction('/company/payCompanyManagement/audit', param)
|
||||
// 企业管理删除确认是否有联系人
|
||||
const checkContactByCompany = (param) => getAction('/company/payCompanyManagement/queryCompanyByIdFindContacts', param)
|
||||
// 资料分发
|
||||
const distribute = (param) => postAction('/project/payWorkingGroupDistributionRecord/add', param)
|
||||
// 资料批量分发
|
||||
const batchDistribute = (param) => postAction('/project/payWorkingGroupDistributionRecord/addBatch', param)
|
||||
// 资料分发成员列表
|
||||
const distributeMemberList = (param) => getAction('/project/payWorkingGroupDistributionRecord/list', param)
|
||||
// 催款提醒
|
||||
const dunningReminder = (param) => postAction('/project/payWorkingGroupSubitem/reminders', param)
|
||||
// 复制工作组
|
||||
const copyWorkingGroup = (param) => postAction('/project/payWorkingGroup/copy', param)
|
||||
// 校验登陆人是否可以操作工作组
|
||||
const checkoutWorkingGroupPrincipal = (param) => getAction('/project/payWorkingGroup/checkoutOperation', param)
|
||||
// 首页统计图接口
|
||||
const homePageStatistics = (param) => getAction('/statistics/principalPeople/firstPage', param)
|
||||
// 首页数据统计
|
||||
const homePageDataStatistics = (param) => getAction('/home/dataStatistics', param)
|
||||
// 系统催款
|
||||
const sysReminders = (param) => postAction('/reminders/edit', param)
|
||||
// 检测企业审核是否通过
|
||||
const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param)
|
||||
// 获取全部部门
|
||||
const getAllDepartTreeList = (param) => getAction('/sys/sysDepart/queryTreeAllList', param)
|
||||
// 验证项目是否关联合同
|
||||
const getIsAssociatedProject = (param) => getAction('/contract/payIncomeContract/getAssociatedProject', param)
|
||||
// 支出合同审核
|
||||
const aduitExpenditureContract = (param) => postAction('/contract/paySpendingContract/audit', param)
|
||||
// 支出合同存档
|
||||
const archiveExpenditureContract = (param) => postAction('/contract/paySpendingContract/archive', param)
|
||||
// 获取全部收入合同(通过企业id查询列表)
|
||||
const getAllRevenueContract = (param) => getAction('/contract/payIncomeContract/queryByCompanyId', param)
|
||||
// 打印获取邮寄联系人信息接口,传票据邮寄列表id
|
||||
const getPrintPostContactByMailId = (param) => getAction('/mail/payMailBill/print', param)
|
||||
|
||||
// 全所统计--通过部门code查所有人员
|
||||
const getUserByDepartCode = (param) => getAction('/statistics/allProjectStatistics/listForUserByOrgCode', param)
|
||||
// 收入合同--作废
|
||||
const cancellationContract = (param) => postAction('/contract/payIncomeContract/cancellation', param)
|
||||
// 支出合同--作废
|
||||
const cancellationExpenditureContract = (param) => postAction('/contract/paySpendingContract/cancellation', param)
|
||||
// 到账开票审核缴费凭证时获取最新一条缴费信息(普通项目、工作组项目、资料网员)
|
||||
const getLastProofInfo = (param) => getAction('/paymentCheck/payPaymentCheck/getLastRecord', param)
|
||||
// 到账开票审核缴费凭证时获取最新一条缴费信息(标协会员)
|
||||
const getStanderMemberLastProofInfo = (param) => getAction('/paymentCheck/payPaymentCheck/getTbMemberProject', param)
|
||||
// 到账开票审核缴费凭证时获取最新一条缴费信息(标协证书)
|
||||
const getCertificateLastProofInfo = (param) => getAction('/paymentCheck/payPaymentCheck/getTbCertificatePayment', param)
|
||||
// 通过合同邮寄表id获取邮寄详情
|
||||
const queryMailDetailById = (param) => getAction('/payMailContract/payMailContract/queryById', param)
|
||||
|
||||
// 修改企业是否是内部企业的接口
|
||||
const updateInternalEnterprise = (param) => postAction('/company/payCompanyManagement/updateInternalEnterprise', param)
|
||||
// 判断当前企业是否是内部企业
|
||||
const judgeInternalEnterprise = (param) => getAction('/company/payCompanyManagement/getInternalEnterprise', param)
|
||||
|
||||
// 更新会员系统 会员缴费的发票信息
|
||||
const incomingUpdatePayment = (param) => postAction('/member/tbMemberProjectSubitem/incomingUpdatePayment', param)
|
||||
// 更新会员系统 证书缴费的发票信息
|
||||
const incomingUpdateCertificate = (param) => postAction('/member/tbCertificatePayment/incomingUpdateCertificate', param)
|
||||
|
||||
// 撤销来款
|
||||
const revokeIncome = (params) => postAction(`/paymentRecord/payPaymentRecord/revoke?id=${params}`)
|
||||
// 确认来款- 查询当前项目是否有来款信息
|
||||
const getPayConfirmList = (param) => getAction('/payConfirmPaymentRecord/list', param)
|
||||
// 新增一个确认来款信息
|
||||
const addPayConfirm = (param) => postAction('/payConfirmPaymentRecord/add', param)
|
||||
// 编辑一个确认来款信息
|
||||
const editPayConfirm = (param) => postAction('/payConfirmPaymentRecord/edit', param)
|
||||
|
||||
|
||||
//2023-07-13 工作组相关功能的接口
|
||||
// 判断当前节点 是否可以发邮件
|
||||
const judgeEmailStatus = (param) => getAction('/sys/message/sysMessageTemplate/queryByCode', param)
|
||||
|
||||
export {
|
||||
getWorkingGroupById,
|
||||
getChargeNotice,
|
||||
publishRemind,
|
||||
commitePublishRemind,
|
||||
getRevenueContractById,
|
||||
aduitRevenueContract,
|
||||
associatedProject,
|
||||
getAssociatedProject,
|
||||
cancelAssociatedProject,
|
||||
submitAudit,
|
||||
getWorkingGroupListByNotCompany,
|
||||
archiveRevenueContract,
|
||||
queryUserByDepartId,
|
||||
queryContactByName,
|
||||
getExpenditureContractById,
|
||||
addPaymentPhase,
|
||||
editAmountPhase,
|
||||
amountReceivedList,
|
||||
payBillList,
|
||||
addPayBill,
|
||||
editPayBill,
|
||||
queryCommonProjectById,
|
||||
getPackCompanyById,
|
||||
addPackProject,
|
||||
removePackProject,
|
||||
revokeIncome,
|
||||
batchRemovePackProject,
|
||||
aduitCompany,
|
||||
checkContactByCompany,
|
||||
distribute,
|
||||
batchDistribute,
|
||||
distributeMemberList,
|
||||
dunningReminder,
|
||||
copyWorkingGroup,
|
||||
checkoutWorkingGroupPrincipal,
|
||||
homePageStatistics,
|
||||
homePageDataStatistics,
|
||||
sysReminders,
|
||||
checkCompanyAduit,
|
||||
getAllDepartTreeList,
|
||||
getIsAssociatedProject,
|
||||
aduitExpenditureContract,
|
||||
archiveExpenditureContract,
|
||||
getAllRevenueContract,
|
||||
getPrintPostContactByMailId,
|
||||
getUserByDepartCode,
|
||||
cancellationContract,
|
||||
councilPublishRemind,
|
||||
cancellationExpenditureContract,
|
||||
getLastProofInfo,
|
||||
getStanderMemberLastProofInfo,
|
||||
getCertificateLastProofInfo,
|
||||
queryMailDetailById,
|
||||
|
||||
updateInternalEnterprise,
|
||||
judgeInternalEnterprise,
|
||||
|
||||
incomingUpdatePayment,
|
||||
incomingUpdateCertificate,
|
||||
|
||||
|
||||
getPayConfirmList,
|
||||
addPayConfirm,
|
||||
editPayConfirm,
|
||||
|
||||
|
||||
judgeEmailStatus
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
const api = {
|
||||
Login: '/sys/login',
|
||||
Logout: '/sys/logout',
|
||||
ForgePassword: '/auth/forge-password',
|
||||
Register: '/auth/register',
|
||||
SendSms: '/account/sms',
|
||||
// get my info
|
||||
UserInfo: '/user/info'
|
||||
}
|
||||
export default api
|
||||
@@ -0,0 +1,89 @@
|
||||
import api from './index'
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* login func
|
||||
* parameter: {
|
||||
* username: '',
|
||||
* password: '',
|
||||
* remember_me: true,
|
||||
* captcha: '12345'
|
||||
* }
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function login(parameter) {
|
||||
return axios({
|
||||
url: '/sys/login',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function phoneLogin(parameter) {
|
||||
return axios({
|
||||
url: '/sys/phoneLogin',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function getSmsCaptcha(parameter) {
|
||||
return axios({
|
||||
url: api.SendSms,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// export function getInfo() {
|
||||
// return axios({
|
||||
// url: '/api/user/info',
|
||||
// method: 'get',
|
||||
// headers: {
|
||||
// 'Content-Type': 'application/json;charset=UTF-8'
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
export function logout(logoutToken) {
|
||||
return axios({
|
||||
url: '/sys/logout',
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8',
|
||||
'X-Access-Token': logoutToken
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 第三方登录
|
||||
* @param token
|
||||
* @param thirdType
|
||||
* @returns {*}
|
||||
*/
|
||||
export function thirdLogin(token,thirdType) {
|
||||
return axios({
|
||||
url: `/sys/thirdLogin/getLoginUser/${token}/${thirdType}`,
|
||||
method: 'get',
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取RSA公钥
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getRSAPublicKey() {
|
||||
return axios({
|
||||
url: `/sys/getRSAPublicKey`,
|
||||
method: 'get',
|
||||
timeout: 5000,
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
import Vue from 'vue'
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
const api = {
|
||||
user: '/mock/api/user',
|
||||
role: '/mock/api/role',
|
||||
service: '/mock/api/service',
|
||||
permission: '/mock/api/permission',
|
||||
permissionNoPager: '/mock/api/permission/no-pager'
|
||||
}
|
||||
|
||||
export default api
|
||||
|
||||
//post
|
||||
export function postAction(url,parameter) {
|
||||
return axios({
|
||||
url: url,
|
||||
method:'post' ,
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
//post method= {post | put}
|
||||
export function httpAction(url,parameter,method) {
|
||||
return axios({
|
||||
url: url,
|
||||
method:method ,
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
//put
|
||||
export function putAction(url,parameter) {
|
||||
return axios({
|
||||
url: url,
|
||||
method:'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
//get
|
||||
export function getAction(url,parameter) {
|
||||
return axios({
|
||||
url: url,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
//deleteAction
|
||||
export function deleteAction(url,parameter) {
|
||||
return axios({
|
||||
url: url,
|
||||
method: 'delete',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function getUserList(parameter) {
|
||||
return axios({
|
||||
url: api.user,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function getRoleList(parameter) {
|
||||
return axios({
|
||||
url: api.role,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function getServiceList(parameter) {
|
||||
return axios({
|
||||
url: api.service,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function getPermissions(parameter) {
|
||||
return axios({
|
||||
url: api.permissionNoPager,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// id == 0 add post
|
||||
// id != 0 update put
|
||||
export function saveService(parameter) {
|
||||
return axios({
|
||||
url: api.service,
|
||||
method: parameter.id == 0 ? 'post' : 'put',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件 用于excel导出
|
||||
* @param url
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function downFile(url,parameter){
|
||||
return axios({
|
||||
url: url,
|
||||
params: parameter,
|
||||
method:'get' ,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 通过A标签下载文件的通用方法
|
||||
* @param data--接口返回的数据
|
||||
* @param fileName --下载文件的名称
|
||||
*/
|
||||
export function downloadFileByA(data, fileName) {
|
||||
// 当没有返回数据或者返回错误信息的时候,对数据进行解析后提示
|
||||
if (!data || data.type === 'application/json') {
|
||||
const reader = new FileReader()
|
||||
reader.readAsText(data)
|
||||
// 处理load事件。该事件在读取操作完成时触发
|
||||
reader.onload = e => {
|
||||
// 解析返回的值
|
||||
const res = JSON.parse(e.target.result)
|
||||
// 异常信息抛出
|
||||
if (!res.success) {
|
||||
Vue.prototype['$message'].warning(res.message || '文件下载失败')
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
// if (!data || data.size === 0) {
|
||||
// Vue.prototype['$message'].warning('文件下载失败')
|
||||
// return
|
||||
// }
|
||||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||||
window.navigator.msSaveBlob(new Blob([data]), fileName)
|
||||
} else {
|
||||
let url = window.URL.createObjectURL(new Blob([data]))
|
||||
let link = document.createElement('a')
|
||||
link.style.display = 'none'
|
||||
link.href = url
|
||||
link.setAttribute('download', fileName)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link) //下载完成移除元素
|
||||
window.URL.revokeObjectURL(url) //释放掉blob对象
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get请求下载文件
|
||||
* @param url 文件路径
|
||||
* @param fileName 文件名
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function downloadFile(url, fileName, parameter) {
|
||||
return downFile(url, parameter).then((data) => {
|
||||
// 调用a标签下载文件的方法
|
||||
downloadFileByA(data, fileName)
|
||||
})
|
||||
}
|
||||
/**
|
||||
* post下载文件
|
||||
* @param url 文件路径
|
||||
* @param fileName 文件名
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function downloadPostFile(url, fileName, parameter) {
|
||||
return axios({
|
||||
url: url,
|
||||
data: parameter,
|
||||
method: 'post',
|
||||
responseType: 'blob'
|
||||
}).then((data) => {
|
||||
// 调用a标签下载文件的方法
|
||||
downloadFileByA(data, fileName)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传 用于富文本上传图片
|
||||
* @param url
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function uploadAction(url,parameter){
|
||||
return axios({
|
||||
url: url,
|
||||
data: parameter,
|
||||
method:'post' ,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data', // 文件上传
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件服务访问路径
|
||||
* @param avatar
|
||||
* @param subStr
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getFileAccessHttpUrl(avatar,subStr) {
|
||||
if(!subStr) subStr = 'http'
|
||||
try {
|
||||
if(avatar && avatar.startsWith(subStr)){
|
||||
return avatar
|
||||
}else{
|
||||
if(avatar && avatar.length>0 && avatar.indexOf('[')==-1){
|
||||
return window._CONFIG['staticDomainURL'] + '/' + avatar
|
||||
}
|
||||
}
|
||||
}catch(err){
|
||||
return
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 690 B |
|
After Width: | Height: | Size: 801 B |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 689 B |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 258 B |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 943 B |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 747 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 949 B |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 851 B |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 546 B |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 687 B |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 822 B |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 457 B |
@@ -0,0 +1,275 @@
|
||||
.area-zoom-in-top-enter-active,
|
||||
.area-zoom-in-top-leave-active {
|
||||
opacity: 1;
|
||||
transform: scaleY(1);
|
||||
}
|
||||
|
||||
.area-zoom-in-top-enter,
|
||||
.area-zoom-in-top-leave-active {
|
||||
opacity: 0;
|
||||
transform: scaleY(0);
|
||||
}
|
||||
|
||||
.area-select {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
font-size: 14px;
|
||||
font-variant: tabular-nums;
|
||||
line-height: 1.5;
|
||||
list-style: none;
|
||||
font-feature-settings: 'tnum';
|
||||
position: relative;
|
||||
outline: 0;
|
||||
display: block;
|
||||
background-color: #fff;
|
||||
border: 1px solid #d9d9d9;
|
||||
border-top-width: 1.02px;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||
-webkit-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.area-select-wrap .area-select {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.area-select * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.area-select:hover {
|
||||
border-color: #40a9ff;
|
||||
border-right-width: 1px !important;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
|
||||
.area-select:active {
|
||||
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
|
||||
}
|
||||
|
||||
.area-select.small {
|
||||
width: 126px;
|
||||
}
|
||||
|
||||
.area-select.medium {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.area-select.large {
|
||||
width: 194px;
|
||||
}
|
||||
|
||||
.area-select.is-disabled {
|
||||
background: #eceff5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.area-select.is-disabled:hover {
|
||||
border-color: #e1e2e6;
|
||||
}
|
||||
|
||||
.area-select.is-disabled .area-selected-trigger {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.area-select .area-selected-trigger {
|
||||
position: relative;
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
height: 100%;
|
||||
padding: 8px 20px 7px 12px;
|
||||
}
|
||||
|
||||
.area-select .area-select-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -2px;
|
||||
right: 6px;
|
||||
content: "";
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 6px solid transparent;
|
||||
border-top-color: rgba(0, 0, 0, 0.25);
|
||||
transition: all .3s linear;
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
.area-select .area-select-icon.active {
|
||||
margin-top: -8px;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.area-selectable-list-wrap {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
max-height: 275px;
|
||||
z-index: 15000;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
overflow-x: auto;
|
||||
margin: 2px 0;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
||||
|
||||
transition: opacity 0.15s, transform 0.3s !important;
|
||||
transform-origin: center top !important;
|
||||
}
|
||||
|
||||
.area-selectable-list {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 6px 0;
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
color: #565656;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.area-selectable-list .area-select-option {
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
cursor: pointer;
|
||||
padding: 0 15px 0 10px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.area-selectable-list .area-select-option.hover {
|
||||
background-color: #e6f7ff;
|
||||
}
|
||||
|
||||
// 请选择省市placeholder 为灰色
|
||||
.placeholderGray .area-selected-trigger {
|
||||
color: rgb(191,191,191);
|
||||
}
|
||||
|
||||
.area-selectable-list .area-select-option.selected {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
font-weight: 600;
|
||||
background-color: #efefef;
|
||||
}
|
||||
|
||||
.cascader-menu-list-wrap {
|
||||
position: absolute;
|
||||
white-space: nowrap;
|
||||
z-index: 15000;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
font-size: 0;
|
||||
margin: 2px 0;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
||||
|
||||
transition: opacity 0.15s, transform 0.3s !important;
|
||||
transform-origin: center top !important;
|
||||
}
|
||||
|
||||
.cascader-menu-list {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
color: #565656;
|
||||
padding: 6px 0;
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
height: 204px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
min-width: 160px;
|
||||
vertical-align: top;
|
||||
background-color: #fff;
|
||||
border-right: 1px solid #e4e7ed;
|
||||
}
|
||||
|
||||
.cascader-menu-list:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.cascader-menu-list .cascader-menu-option {
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
cursor: pointer;
|
||||
padding: 0 15px 0 10px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.cascader-menu-list .cascader-menu-option.hover,
|
||||
.cascader-menu-list .cascader-menu-option:hover {
|
||||
background-color: #e6f7ff;
|
||||
}
|
||||
|
||||
.cascader-menu-list .cascader-menu-option.selected {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
font-weight: 600;
|
||||
background-color: #efefef;
|
||||
}
|
||||
|
||||
.cascader-menu-list .cascader-menu-option.cascader-menu-extensible:after {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -4px;
|
||||
right: 5px;
|
||||
content: "";
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 4px solid transparent;
|
||||
border-left-color: #a1a4ad;
|
||||
}
|
||||
|
||||
.cascader-menu-list::-webkit-scrollbar,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-button:vertical:decremen,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-button:vertical:end:decrement,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-button:vertical:increment,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-button:vertical:start:increment,
|
||||
.cascader-menu-list::-webkit-scrollbar-button:vertical:decremen,
|
||||
.cascader-menu-list::-webkit-scrollbar-button:vertical:end:decrement,
|
||||
.cascader-menu-list::-webkit-scrollbar-button:vertical:increment,
|
||||
.cascader-menu-list::-webkit-scrollbar-button:vertical:start:increment {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cascader-menu-list::-webkit-scrollbar-thumb:vertical,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-thumb:vertical {
|
||||
background-color: #b8b8b8;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.cascader-menu-list::-webkit-scrollbar-thumb:vertical:hover,
|
||||
.area-selectable-list-wrap::-webkit-scrollbar-thumb:vertical:hover {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
.ant-pagination-disabled i{
|
||||
cursor: not-allowed!important;
|
||||
}
|
||||
|
||||
.urge-num{
|
||||
color:red;
|
||||
margin-left: 4px;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
/** [表格主题样式一] 表格强制列不换行 */
|
||||
.j-table-force-nowrap {
|
||||
td, th {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ant-table-selection-column {
|
||||
padding: 12px 22px !important;
|
||||
}
|
||||
|
||||
/** 列自适应,弊端会导致列宽失效 */
|
||||
&.ant-table-wrapper .ant-table-content {
|
||||
overflow-x: auto;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
|
||||
/*列表上方操作按钮区域*/
|
||||
.ant-card-body .table-operator {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
/** Button按钮间距 */
|
||||
.table-operator .ant-btn {
|
||||
margin: 0 8px 8px 0;
|
||||
}
|
||||
.table-operator .ant-btn-group .ant-btn {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.table-operator .ant-btn-group .ant-btn:last-child {
|
||||
margin: 0 8px 8px 0;
|
||||
}
|
||||
/*列表td的padding设置 可以控制列表大小*/
|
||||
.ant-table-tbody .ant-table-row td {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
/*列表页面弹出modal*/
|
||||
.ant-modal-cust-warp {
|
||||
height: 100%
|
||||
}
|
||||
|
||||
/*弹出modal Y轴滚动条*/
|
||||
.ant-modal-cust-warp .ant-modal-body {
|
||||
height: calc(100% - 110px) !important;
|
||||
overflow-y: auto
|
||||
}
|
||||
|
||||
/*弹出modal 先有content后有body 故滚动条控制在body上*/
|
||||
.ant-modal-cust-warp .ant-modal-content {
|
||||
height: 90% !important;
|
||||
overflow-y: hidden
|
||||
}
|
||||
/*列表中有图片的加这个样式 参考用户管理*/
|
||||
.anty-img-wrap {
|
||||
height: 25px;
|
||||
position: relative;
|
||||
}
|
||||
.anty-img-wrap > img {
|
||||
max-height: 100%;
|
||||
}
|
||||
/*列表中范围查询样式*/
|
||||
.query-group-cust{width: calc(50% - 10px)}
|
||||
.query-group-split-cust:before{content:"~";width: 20px;display: inline-block;text-align: center}
|
||||
|
||||
|
||||
/*erp风格子表外框padding设置*/
|
||||
.ant-card-wider-padding.cust-erp-sub-tab>.ant-card-body{padding:5px 12px}
|
||||
|
||||
/* 内嵌子表背景颜色 */
|
||||
.j-inner-table-wrapper /deep/ .ant-table-expanded-row .ant-table-wrapper .ant-table-tbody .ant-table-row {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/**隐藏样式-modal确定按钮 */
|
||||
.jee-hidden{display: none}
|
||||
/*列表td的padding设置 可以控制列表大小*/
|
||||
.ant-table-tbody .ant-table-row td .action-span-cell a + a{
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
|
||||
.primary-color{
|
||||
color: #069f99;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// 标题及标题前的圆点
|
||||
.part-title {
|
||||
padding: 10px 0;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC-Bold;
|
||||
font-weight: 700;
|
||||
text-align: left;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
&-text {
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
&-text::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background: #069f99;
|
||||
border-radius: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
/*重置按钮*/
|
||||
.reset-button {
|
||||
color: #08B6AF;
|
||||
background: rgba(8,182,175,0.10);
|
||||
border: 1px solid #08b6af;
|
||||
}
|
||||
|
||||
/*表格滚动条*/
|
||||
.ant-table-body {
|
||||
overflow-x: auto!important;
|
||||
}
|
||||
|
||||
/*列表自适应超出隐藏*/
|
||||
.table-text {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 567 B |
|
After Width: | Height: | Size: 664 B |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 846 B |
@@ -0,0 +1,130 @@
|
||||
<template>
|
||||
<div class="hello">
|
||||
<h1>{{ msg }}</h1>
|
||||
<p>
|
||||
For a guide and recipes on how to configure / customize this project,<br />
|
||||
check out the
|
||||
<a href="https://cli.vuejs.org" target="_blank" rel="noopener"
|
||||
>vue-cli documentation</a
|
||||
>.
|
||||
</p>
|
||||
<h3>Installed CLI Plugins</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>babel</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>router</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>vuex</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>eslint</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Essential Links</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://forum.vuejs.org" target="_blank" rel="noopener"
|
||||
>Forum</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://chat.vuejs.org" target="_blank" rel="noopener"
|
||||
>Community Chat</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://twitter.com/vuejs" target="_blank" rel="noopener"
|
||||
>Twitter</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Ecosystem</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://router.vuejs.org" target="_blank" rel="noopener"
|
||||
>vue-router</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/vue-devtools#vue-devtools"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>vue-devtools</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener"
|
||||
>vue-loader</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://github.com/vuejs/awesome-vue"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>awesome-vue</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HelloWorld',
|
||||
props: {
|
||||
msg: String,
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||
<style scoped lang="less">
|
||||
h3 {
|
||||
margin: 40px 0 0;
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
}
|
||||
a {
|
||||
color: #42b983;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,49 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
switchFullscreen
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
|
||||
<img :src="imgSrc" class="preview-img">
|
||||
|
||||
<template slot="footer">
|
||||
<a-button @click="handleCancel">关闭</a-button>
|
||||
</template>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'PreviewImgModal',
|
||||
data() {
|
||||
return {
|
||||
title: '图片',
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
// 图片id
|
||||
imgId: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
imgSrc() {
|
||||
return `${ window._CONFIG['domianURL'] }/sys/common/download/${ this.imgId }`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.preview-img {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,99 @@
|
||||
<!--进度组件-->
|
||||
<template>
|
||||
<div>
|
||||
<!-- 三项非全0-->
|
||||
<div class="progress" v-if="(data.allPayment + data.partPayment + data.notPayment) !== 0">
|
||||
<!-- 将全部付款和部分付款放入一个div中-->
|
||||
<div class="full-and-partial"
|
||||
:style="{width: (data.allPayment + data.partPayment)/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}">
|
||||
<!-- 全部付款-->
|
||||
<div :style="{width: data.allPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
|
||||
class="progress-item pay-in-full" v-if="data.allPayment !== 0">
|
||||
{{ data.allPayment }}
|
||||
</div>
|
||||
<!-- 部分付款-->
|
||||
<div :style="{width: data.partPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
|
||||
class="progress-item partial-payment" v-if="data.partPayment !== 0">
|
||||
{{ data.partPayment }}
|
||||
</div>
|
||||
</div>
|
||||
<div :style="{width: data.notPayment/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}"
|
||||
class="progress-item non-payment" v-if="data.notPayment !== 0">
|
||||
{{ data.notPayment }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- 三项均为0-->
|
||||
<div class="progress progress-null" v-else>0</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProgressBar',
|
||||
props: {
|
||||
/**
|
||||
* 进度字段,
|
||||
* {
|
||||
* allPayment: 10, // 已付全款
|
||||
* partPayment: 10, // 部分付款
|
||||
* notPayment: 10, // 未付款
|
||||
* }
|
||||
*/
|
||||
data: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.progress {
|
||||
border-radius: 10px;
|
||||
background: #e8e8e8;
|
||||
height: 20px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
|
||||
&-null {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.no-display {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.full-and-partial {
|
||||
background: linear-gradient(0deg, #0075a9 0%, #008dcc 100%);
|
||||
display: flex;
|
||||
border-radius: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.progress-item {
|
||||
height: 20px;
|
||||
border-radius: 10px;
|
||||
color: white;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.pay-in-full {
|
||||
background: linear-gradient(0deg, #069f99 0%, #07b1aa 100%);
|
||||
}
|
||||
|
||||
.partial-payment {
|
||||
background: linear-gradient(0deg, #0075a9 0%, #008dcc 100%);
|
||||
}
|
||||
|
||||
.non-payment {
|
||||
color: #57635e;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,631 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
switchFullscreen
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<!-- 基本信息begin-->
|
||||
<section class="base-info">
|
||||
<h3 class="title">基本信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>项目负责人:</label>
|
||||
<span><j-ellipsis :value="basicInfo.principalName" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>待确收金额:</label>
|
||||
<span><j-ellipsis :value="`${basicInfo.receivableAmount ? basicInfo.receivableAmount : '0.00'}元`"
|
||||
:length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>税率:</label>
|
||||
<span><j-ellipsis :value="basicInfo.taxRate_dictText" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>税额:</label>
|
||||
<span><j-ellipsis :value="`${basicInfo.tax ? basicInfo.tax : '0.00'}元`"
|
||||
:length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>未税金额:</label>
|
||||
<span><j-ellipsis :value="`${basicInfo.noTaxAmount ? basicInfo.noTaxAmount : '0.00'}元`"
|
||||
:length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>是否需要发票:</label>
|
||||
<span>{{ basicInfo.needInvoice_dictText }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>是否打包:</label>
|
||||
<span>{{ basicInfo.pack_dictText }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col class="detail-item">
|
||||
<label>备注:</label>
|
||||
<span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- 来款方式为合同的显示-->
|
||||
<a-row :gutter="24" v-if="basicInfo.chargeWay === 2">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>{{ createIncomeType(basicInfo.projectType) }}:</label>
|
||||
<span>{{ basicInfo.chargeWay_dictText }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>合同编号:</label>
|
||||
<span class="contract-num" @click="toContractDetail">{{ basicInfo.contractNum }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="basicInfo.chargeWay === 3">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>收费通知号:</label>
|
||||
<span><j-ellipsis :value="basicInfo.chargeNoticeNo" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>收费通知:</label>
|
||||
<span><preview-file :file-id="basicInfo.chargeNoticeId"></preview-file></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="basicInfo.files">
|
||||
<a-col class="detail-item">
|
||||
<label>项目资料:</label>
|
||||
<span><preview-file :file-id="basicInfo.files"></preview-file></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</section>
|
||||
<!-- 基本信息end-->
|
||||
|
||||
<!-- 企业信息begin-->
|
||||
<section class="enterprise-info">
|
||||
<h3 class="title">企业信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>来款企业:</label>
|
||||
<span><j-ellipsis :value="basicInfo.companyName" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>信用代码:</label>
|
||||
<span><j-ellipsis :value="basicInfo.dutyCode" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>公司地址:</label>
|
||||
<span><j-ellipsis :value="basicInfo.companyAddress" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>公司电话:</label>
|
||||
<span><j-ellipsis :value="basicInfo.companyPhone" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>邮编:</label>
|
||||
<span>{{ basicInfo.postalCodeCompany }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>银行户名:</label>
|
||||
<span>{{ basicInfo.bankAccountName }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>开户行:</label>
|
||||
<span>{{ basicInfo.openingBank }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>银行账号:</label>
|
||||
<span>{{ basicInfo.bankAccount }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>联行号:</label>
|
||||
<span>{{ basicInfo.linkBankNumber || '' }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</section>
|
||||
<!--企业信息end-->
|
||||
|
||||
<!-- 代付企业--第三方垫付 信息 只有会员缴费 和证书缴费的时候存在 begin-->
|
||||
<section class="enterprise-info" v-if="(basicInfo.projectType === ProjectTypeEnums.STANDARD_MEMBER_PRO.value || basicInfo.projectType === ProjectTypeEnums.STANDARD_CERTIFICATE_PRO.value) && hasOtherCompany">
|
||||
<h3 class="title">第三方垫付信息</h3>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>付款单位发票抬头:</label>
|
||||
<span><j-ellipsis :value="otherCompanyInfo.headerName" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>社会统一代码/税号:</label>
|
||||
<span><j-ellipsis :value="otherCompanyInfo.taxNumber" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- 增值税发票存在的信息较多-->
|
||||
<template v-if="Number(otherCompanyInfo.invoiceRequirements) === 2">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>单位地址:</label>
|
||||
<span><j-ellipsis :value="otherCompanyInfo.invoiceAddress" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>电话号码:</label>
|
||||
<span><j-ellipsis :value="otherCompanyInfo.invoicePhone" :length="20"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>开户银行:</label>
|
||||
<span>{{ otherCompanyInfo.depositBank }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>银行账户:</label>
|
||||
<span>{{ otherCompanyInfo.bankAccount }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>联行号:</label>
|
||||
<span>{{ otherCompanyInfo.linkBankNumber || '' }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
</section>
|
||||
<!--代付企业--第三方垫付 信息end-->
|
||||
|
||||
<!-- 企业联系人信息start-->
|
||||
<section>
|
||||
<h3 class="title">企业联系人信息</h3>
|
||||
<!-- 项目类型不是工作组。正常显示一个企业联系人的信息-->
|
||||
<template v-if="basicInfo.projectType !== 2">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<label>企业联系人:</label>
|
||||
<span>{{ basicInfo.name }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<label>企业联系人性别:</label>
|
||||
<span>{{ basicInfo.gender_dictText }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人职务:</label>
|
||||
<span><j-ellipsis :value="basicInfo.post" :length="17"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人电话:</label>
|
||||
<span>{{ basicInfo.phone }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人邮箱:</label>
|
||||
<span>{{ basicInfo.email }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人邮编:</label>
|
||||
<span>{{ basicInfo.postalCodeContacts }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人地址:</label>
|
||||
<span><j-ellipsis :value="basicInfo.contactAddress" :length="17"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
<!-- 工作组项目使用循环显示出联系人信息-->
|
||||
<template v-if="basicInfo.projectType === 2 && basicInfo.payWorkingGroupSubItemContactsList && basicInfo.payWorkingGroupSubItemContactsList.length > 0">
|
||||
<div v-for="(item, index) in basicInfo.payWorkingGroupSubItemContactsList" :key="index + ''">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}:</label>
|
||||
<span><j-ellipsis :value="item.contactsTemporaryName" :length="16"></j-ellipsis></span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}备注:</label>
|
||||
<span><j-ellipsis :value="item.remarks" :length="16"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<label>企业联系人{{ index + 1 }}性别:</label>
|
||||
<span>{{ item.gender_dictText }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}职务:</label>
|
||||
<span><j-ellipsis :value="item.post" :length="16"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}电话:</label>
|
||||
<span>{{ item.phone }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}邮箱:</label>
|
||||
<span>{{ item.email }}</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}邮编:</label>
|
||||
<span>{{ item.postalCodeContacts }}</span>
|
||||
</a-col>
|
||||
<a-col :span="12" class="detail-item">
|
||||
<label>企业联系人{{ index + 1 }}地址:</label>
|
||||
<span><j-ellipsis :value="item.contactAddress" :length="16"></j-ellipsis></span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="index + 1 !== basicInfo.payWorkingGroupSubItemContactsList.length"/>
|
||||
</div>
|
||||
</template>
|
||||
</section>
|
||||
<!-- 企业联系人信息end-->
|
||||
<!--到账信息begin-->
|
||||
<section class="payment-info">
|
||||
<h3 class="title">到账信息</h3>
|
||||
<div class="payment-info-box">
|
||||
<section class="payment-info-title">到账信息</section>
|
||||
<template v-if="paymentInfoList && paymentInfoList.length > 0">
|
||||
<div class="payment-info-content" v-for="item of paymentInfoList" :key="item.id">
|
||||
{{ item.paymentDate }}到账{{ item.amountReceived }}元
|
||||
</div>
|
||||
</template>
|
||||
<a-list v-else :data-source="[]"/>
|
||||
</div>
|
||||
</section>
|
||||
<!--到账信息end-->
|
||||
<!--开票邮寄信息begin-->
|
||||
<section class="logistics-info">
|
||||
<h3 class="title">开票邮寄信息</h3>
|
||||
<div class="wrap-table">
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
rowKey="id"
|
||||
:pagination="false"
|
||||
:columns="columns"
|
||||
:dataSource="logisticsInfoList"
|
||||
class="j-table-force-nowrap"
|
||||
>
|
||||
<span slot="action" class="action-span-cell" slot-scope="record">
|
||||
<a @click="lookLogistics(record)" v-if="record.postStatus === 1">查看物流</a>
|
||||
</span>
|
||||
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
|
||||
<!-- {{ record.sendDate }}-->
|
||||
<!-- </p>-->
|
||||
</a-table>
|
||||
</div>
|
||||
</section>
|
||||
<!--开票邮寄信息end-->
|
||||
<template slot="footer">
|
||||
<a-button @click="handleCancel">关闭</a-button>
|
||||
</template>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { queryCommonProjectById, getStanderMemberLastProofInfo, getCertificateLastProofInfo } from '@api/incomePaymentsApi'
|
||||
import JEllipsis from '@comp/jero/JEllipsis'
|
||||
import PreviewFile from './jero/PreviewFile'
|
||||
import { ProjectTypeEnums } from '@/enums/commonEnums'
|
||||
// import pick from 'lodash.pick'
|
||||
// import {getAction} from "@api/manage";
|
||||
const columns = [
|
||||
{
|
||||
title: '开票人',
|
||||
align: 'center',
|
||||
dataIndex: 'realName'
|
||||
},
|
||||
{
|
||||
title: '日期',
|
||||
align: 'center',
|
||||
dataIndex: 'billDate'
|
||||
},
|
||||
{
|
||||
title: '金额(元)',
|
||||
align: 'center',
|
||||
dataIndex: 'invoiceAmount'
|
||||
},
|
||||
{
|
||||
title: '票号',
|
||||
align: 'center',
|
||||
dataIndex: 'billNo'
|
||||
},
|
||||
{
|
||||
title: '项目',
|
||||
align: 'center',
|
||||
dataIndex: 'projectName'
|
||||
},
|
||||
{
|
||||
title: '邮寄人',
|
||||
align: 'center',
|
||||
dataIndex: 'mailName'
|
||||
},
|
||||
{
|
||||
title: '快递',
|
||||
align: 'center',
|
||||
dataIndex: 'sendMethod_dictText'
|
||||
},
|
||||
{
|
||||
title: '快递单号',
|
||||
align: 'center',
|
||||
dataIndex: 'postNo'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
dataIndex: '',
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
]
|
||||
export default {
|
||||
name: 'ProjectDetailModal',
|
||||
props: {
|
||||
// 字段名称是否非id,适用于票据邮寄等页面id不是项目id的情况
|
||||
notId: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 是否是到账开票模块
|
||||
isInvoicing: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
description: '项目详情模态框',
|
||||
width: 800,
|
||||
visible: false,
|
||||
title: '项目信息',
|
||||
// 当前项目id
|
||||
currentProjectId: '',
|
||||
// 基本信息
|
||||
basicInfo: {},
|
||||
// 企业信息
|
||||
enterpriseInfo: {},
|
||||
// 联系人信息
|
||||
contactsInfo: {},
|
||||
columns,
|
||||
// 到账信息
|
||||
paymentInfoList: [],
|
||||
// 开票邮寄信息
|
||||
logisticsInfoList: [],
|
||||
// 垫付企业的信息
|
||||
otherCompanyInfo: {},
|
||||
ProjectTypeEnums
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 是否是第三方代付
|
||||
hasOtherCompany() {
|
||||
// 去掉未审核 去判断的企业是否是标协会企业
|
||||
let companyName = this.basicInfo.companyName.replaceAll('(未审核)','')
|
||||
return this.isInvoicing && this.otherCompanyInfo.headerName && (this.otherCompanyInfo.headerName !== companyName)
|
||||
}
|
||||
},
|
||||
components: {
|
||||
JEllipsis,
|
||||
PreviewFile
|
||||
},
|
||||
methods: {
|
||||
open(record) {
|
||||
this.visible = true
|
||||
// 记录当前项目id
|
||||
if (this.notId) {
|
||||
this.currentProjectId = record.projectId
|
||||
} else {
|
||||
this.currentProjectId = record.id
|
||||
}
|
||||
// 通过id查询项目详情
|
||||
queryCommonProjectById({ id: this.currentProjectId }).then(res => {
|
||||
if (res.success) {
|
||||
console.log(res.result, 'res.result')
|
||||
// 项目信息
|
||||
this.basicInfo = res.result
|
||||
// 到账信息
|
||||
this.paymentInfoList = res.result.paymentRecord
|
||||
// 开票邮寄信息
|
||||
this.logisticsInfoList = res.result.mailBill
|
||||
} else {
|
||||
console.log('未查到相应的信息')
|
||||
}
|
||||
})
|
||||
// 到账开票模块显示请求发票信息,查看是否是第三方代付
|
||||
if(this.isInvoicing) {
|
||||
/* 如果当前项目是会员项目、会员证书项目 需要请求响应的 第三方付款信息*/
|
||||
let projectType = Number(record.projectType)
|
||||
if(projectType === ProjectTypeEnums.STANDARD_MEMBER_PRO.value) {
|
||||
this.getMemberLastProofInfo(record, getStanderMemberLastProofInfo)
|
||||
} else if(projectType === ProjectTypeEnums.STANDARD_CERTIFICATE_PRO.value){
|
||||
this.getMemberLastProofInfo(record, getCertificateLastProofInfo)
|
||||
}
|
||||
}
|
||||
},
|
||||
getMemberLastProofInfo(record, requestFunc) {
|
||||
let param = {
|
||||
projectId: record.id
|
||||
}
|
||||
requestFunc && requestFunc(param).then(res => {
|
||||
if (res.success) {
|
||||
this.otherCompanyInfo = res.result || {}
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
// 清除之前的信息
|
||||
this.basicInfo = {}
|
||||
this.enterpriseInfo = {}
|
||||
this.contactsInfo = {}
|
||||
this.otherCompanyInfo = {}
|
||||
this.paymentInfoList = []
|
||||
this.logisticsInfoLis = []
|
||||
this.visible = false
|
||||
},
|
||||
/*
|
||||
* 生成每一个开票信息
|
||||
* */
|
||||
createItemInfo(item) {
|
||||
let porjectItem = ''
|
||||
if (item.projects.length > 0) {
|
||||
item.projects.forEach((val, index) => {
|
||||
if (index === item.projects.length - 1) {
|
||||
porjectItem += val
|
||||
} else {
|
||||
porjectItem += val + '、'
|
||||
}
|
||||
})
|
||||
}
|
||||
return `${ item.person }于${ item.time }开票,金额为:${ item.money }元,票号:${ item.piaoNo },项目:${ porjectItem }`
|
||||
},
|
||||
/*
|
||||
* 查看物流
|
||||
* */
|
||||
lookLogistics(record) {
|
||||
console.log(record)
|
||||
const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
|
||||
// window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
|
||||
let url = ''
|
||||
if (com === 'shunfeng' && record.principalPhone) {
|
||||
url = `${window._CONFIG['lookExpressDomainURL']}?com=${ com }&nu=${ record.postNo }&phone=${ record.principalPhone }`
|
||||
} else {
|
||||
url = `${window._CONFIG['lookExpressDomainURL']}?com=${ com }&nu=${ record.postNo }`
|
||||
}
|
||||
window.open(url, '_blank')
|
||||
},
|
||||
/*
|
||||
* 去合同详情 传入合同id
|
||||
* */
|
||||
toContractDetail() {
|
||||
if (this.basicInfo.contractId) {
|
||||
this.$router.push({
|
||||
path: '/contractManagement/RevenueContractDetail', query: {
|
||||
revenueId: this.basicInfo.contractId
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warn('该项目未与合同关联')
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 每一个项目的来款方式不同
|
||||
* */
|
||||
createIncomeType(val) {
|
||||
if (val === 1 || val === 2 || val === 4) {
|
||||
return '来款方式'
|
||||
} else {
|
||||
return '缴费方式'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.ant-row {
|
||||
margin: 12px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
label {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.detail-item {
|
||||
display: flex;
|
||||
|
||||
label {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
span {
|
||||
word-break: break-all;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.contract-num {
|
||||
color: #42b983;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
h3.title::before {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: -10px;
|
||||
content: "";
|
||||
height: 20px;
|
||||
width: 2px;
|
||||
background: #069f99;
|
||||
}
|
||||
|
||||
/* 到账信息 */
|
||||
.payment-info {
|
||||
margin-bottom: 14px;
|
||||
|
||||
&-box {
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
&-title {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
letter-spacing: 1px;
|
||||
color: #fff;
|
||||
background: #a2e6e4;
|
||||
}
|
||||
|
||||
&-content {
|
||||
border: 1px solid #ccc;
|
||||
color: #424242;
|
||||
//background: #efefef;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
//border: 1px solid #ccc;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* 开票邮寄信息 */
|
||||
.wrap-table {
|
||||
border: 1px solid #ccc;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-thead {
|
||||
tr > th {
|
||||
color: #fff;
|
||||
background: #a2e6e4;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .ant-table-tbody {
|
||||
tr > td {
|
||||
border: none;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-divider-horizontal {
|
||||
margin: 5px 0;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,78 @@
|
||||
import { pcaa } from 'area-data'
|
||||
|
||||
/**
|
||||
* 省市区
|
||||
*/
|
||||
export default class Area {
|
||||
/**
|
||||
* 构造器
|
||||
* @param express
|
||||
*/
|
||||
constructor() {
|
||||
const arr = []
|
||||
const province = pcaa['86']
|
||||
Object.keys(province).map(key => {
|
||||
arr.push({ id: key, text: province[key], pid: '86' })
|
||||
const city = pcaa[key]
|
||||
Object.keys(city).map(key2 => {
|
||||
arr.push({ id: key2, text: city[key2], pid: key })
|
||||
const qu = pcaa[key2]
|
||||
Object.keys(qu).map(key3 => {
|
||||
arr.push({ id: key3, text: qu[key3], pid: key2 })
|
||||
})
|
||||
})
|
||||
})
|
||||
this.all = arr
|
||||
}
|
||||
|
||||
get pca() {
|
||||
return this.all
|
||||
}
|
||||
|
||||
getCode(text) {
|
||||
if (!text || text.length === 0) {
|
||||
return ''
|
||||
}
|
||||
for (const item of this.all) {
|
||||
if (item.text === text) {
|
||||
return item.id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getText(code) {
|
||||
if (!code || code.length === 0) {
|
||||
return ''
|
||||
}
|
||||
const arr = []
|
||||
this.getAreaBycode(code, arr)
|
||||
return arr.join('/')
|
||||
}
|
||||
|
||||
getRealCode(code) {
|
||||
const arr = []
|
||||
this.getPcode(code, arr)
|
||||
return arr
|
||||
}
|
||||
|
||||
getPcode(id, arr) {
|
||||
for (const item of this.all) {
|
||||
if (item.id === id) {
|
||||
arr.unshift(id)
|
||||
if (item.pid !== '86') {
|
||||
this.getPcode(item.pid, arr)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getAreaBycode(code, arr) {
|
||||
// console.log("this.all.length",this.all)
|
||||
for (const item of this.all) {
|
||||
if (item.id === code) {
|
||||
arr.unshift(item.text)
|
||||
this.getAreaBycode(item.pid, arr)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
import pca from '../../../public/map/areaPca'
|
||||
|
||||
/**
|
||||
* 省市区
|
||||
*/
|
||||
export default class Area {
|
||||
/**
|
||||
* 构造器
|
||||
* @param express
|
||||
*/
|
||||
constructor() {
|
||||
const arr = []
|
||||
const province = pca['86']
|
||||
Object.keys(province).map(key => {
|
||||
arr.push({ id: key, text: province[key], pid: '86' })
|
||||
const city = pca[key]
|
||||
Object.keys(city).map(key2 => {
|
||||
arr.push({ id: key2, text: city[key2], pid: key })
|
||||
})
|
||||
})
|
||||
this.all = arr
|
||||
}
|
||||
|
||||
get pca() {
|
||||
return this.all
|
||||
}
|
||||
|
||||
getCode(text) {
|
||||
if (!text || text.length === 0) {
|
||||
return ''
|
||||
}
|
||||
for (const item of this.all) {
|
||||
if (item.text === text) {
|
||||
return item.id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getText(code) {
|
||||
if (!code || code.length === 0) {
|
||||
return ''
|
||||
}
|
||||
const arr = []
|
||||
this.getAreaBycode(code, arr)
|
||||
return arr.join('/')
|
||||
}
|
||||
|
||||
getRealCode(code) {
|
||||
const arr = []
|
||||
this.getPcode(code, arr)
|
||||
return arr
|
||||
}
|
||||
|
||||
getPcode(id, arr) {
|
||||
for (const item of this.all) {
|
||||
if (item.id === id) {
|
||||
arr.unshift(id)
|
||||
if (item.pid !== '86') {
|
||||
this.getPcode(item.pid, arr)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getAreaBycode(code, arr) {
|
||||
// console.log("this.all.length",this.all)
|
||||
for (const item of this.all) {
|
||||
if (item.id === code) {
|
||||
arr.unshift(item.text)
|
||||
this.getAreaBycode(item.pid, arr)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* 获取字符串的长度ascii长度为1 中文长度为2
|
||||
* @param str
|
||||
* @returns {number}
|
||||
*/
|
||||
export const getStrFullLength = (str = '') =>
|
||||
str.split('').reduce((pre, cur) => {
|
||||
const charCode = cur.charCodeAt(0)
|
||||
if (charCode >= 0 && charCode <= 128) {
|
||||
return pre + 1
|
||||
}
|
||||
return pre + 2
|
||||
}, 0)
|
||||
|
||||
/**
|
||||
* 给定一个字符串和一个长度,将此字符串按指定长度截取
|
||||
* @param str
|
||||
* @param maxLength
|
||||
* @returns {string}
|
||||
*/
|
||||
export const cutStrByFullLength = (str = '', maxLength) => {
|
||||
let showLength = 0
|
||||
return str.split('').reduce((pre, cur) => {
|
||||
const charCode = cur.charCodeAt(0)
|
||||
if (charCode >= 0 && charCode <= 128) {
|
||||
showLength += 1
|
||||
} else {
|
||||
showLength += 2
|
||||
}
|
||||
if (showLength <= maxLength) {
|
||||
return pre + cur
|
||||
}
|
||||
return pre
|
||||
}, '')
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* components util
|
||||
*/
|
||||
|
||||
/**
|
||||
* 清理空值,对象
|
||||
* @param children
|
||||
* @returns {*[]}
|
||||
*/
|
||||
export function filterEmpty(children = []) {
|
||||
return children.filter(c => c.tag || (c.text && c.text.trim() !== ''))
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-row :gutter=10>
|
||||
<a-col :span="20">
|
||||
<a-input autocomplete="off" @click="chooseBusiness" :value="value[valueKey]" v-bind="$attrs"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="4">
|
||||
<a-button icon="plus" v-bind="$attrs" @click="addCompany"></a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<business-select ref="businessSelect" @ok="setCompanyVal" v-bind="$attrs"></business-select>
|
||||
<business-management-module ref="businessModal" @ok="setCompanyVal"></business-management-module>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BusinessSelect from '@comp/company/BusinessSelect'
|
||||
import BusinessManagementModule from '@views/businessManagement/modules/BusinessManagementModule'
|
||||
|
||||
export default {
|
||||
name: 'AddMeetingCompany',
|
||||
props: {
|
||||
// 是否可以选择
|
||||
isCompanyDisabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
value: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 回显数据的key
|
||||
valueKey: {
|
||||
type: String,
|
||||
default: 'companyName'
|
||||
},
|
||||
// 是否返回企业的全部信息,如果是 则再change方法中以第二个参数返回
|
||||
fullCompanyInfo: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
BusinessSelect,
|
||||
BusinessManagementModule
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
reallyValue:''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/*
|
||||
* 打开选择企业弹窗
|
||||
* */
|
||||
chooseBusiness() {
|
||||
if (this.isCompanyDisabled) {
|
||||
return
|
||||
}
|
||||
this.$refs.businessSelect.searchReset()
|
||||
this.$refs.businessSelect.visible = true
|
||||
},
|
||||
/*
|
||||
* 添加企业
|
||||
* */
|
||||
addCompany() {
|
||||
this.$refs.businessModal.title='新增'
|
||||
this.$refs.businessModal.add({})
|
||||
},
|
||||
/*
|
||||
* 接受值和抛出
|
||||
* */
|
||||
setCompanyVal(selectedVal) {
|
||||
let {id, companyName} = selectedVal
|
||||
if(this.fullCompanyInfo) {
|
||||
this.$emit('change', {id, companyName}, {...selectedVal})
|
||||
} else {
|
||||
this.$emit('change', {id, companyName})
|
||||
}
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,212 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
switchFullscreen
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item>
|
||||
<a-input placeholder="请输入企业名称" v-model="queryParam.companyName"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
||||
<a-button icon="reload" @click="searchReset">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
bordered
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: isMultiple ? 'checkbox' : 'radio'}"
|
||||
@change="handleTableChange"
|
||||
class="j-table-force-nowrap">
|
||||
<template slot="htmlSlot" slot-scope="text">
|
||||
<div v-html="text"></div>
|
||||
</template>
|
||||
<template slot="imgSlot" slot-scope="text">
|
||||
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
|
||||
<img v-else :src="getImgView(text)" height="25px" alt=""
|
||||
style="max-width:80px;font-size: 12px;font-style: italic;"/>
|
||||
</template>
|
||||
<template slot="fileSlot" slot-scope="text,record">
|
||||
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
|
||||
<j-ellipsis @click.native="uploadFile(record.chargeNoticeFileId)" style="color:#219AFF;cursor: pointer"
|
||||
:value="text" :length="20"/>
|
||||
</template>
|
||||
<template slot="text" slot-scope="text">
|
||||
<j-ellipsis :value="text" :length="30"></j-ellipsis>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { getAction } from '../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'BusinessSelect',
|
||||
mixins: [JeroListMixin],
|
||||
props: {
|
||||
// 理事会时需要传2,默认为0
|
||||
memberNature: {
|
||||
type: Number,
|
||||
default: null
|
||||
},
|
||||
// 是否多选-默认false
|
||||
isMultiple: {
|
||||
type:Boolean,
|
||||
required:false,
|
||||
default:false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '选择企业',
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
url: {
|
||||
list: '/company/payCompanyManagement/list'
|
||||
},
|
||||
selectedCompany: {},
|
||||
selectedRowKeys: [],
|
||||
columns: [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
}, {
|
||||
title: '企业名称',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
// 是否调用无权限接口
|
||||
isLimit: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 重写获取数据方法,理事会需要传参
|
||||
* @param arg
|
||||
*/
|
||||
loadData(arg) {
|
||||
console.log(this.memberNature)
|
||||
if (!this.url.list) {
|
||||
this.$message.error('请设置url.list属性!')
|
||||
return
|
||||
}
|
||||
//加载数据 若传入参数1则加载第一页的内容
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
}
|
||||
let params = this.getQueryParams()//查询条件
|
||||
// 是理事会单位则需要传参
|
||||
if (this.memberNature && this.memberNature === 2) {
|
||||
params.memberNature = this.memberNature
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, params).then((res) => {
|
||||
if (res.success) {
|
||||
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||
this.dataSource = res.result.records || res.result
|
||||
if (res.result.total) {
|
||||
this.ipagination.total = res.result.total
|
||||
//清空列表选中
|
||||
} else {
|
||||
this.ipagination.total = 0
|
||||
}
|
||||
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
||||
}
|
||||
if (res.code === 510) {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
this.loading = false
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleOk() {
|
||||
this.$emit('ok', this.selectedCompany)
|
||||
this.close()
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
close() {
|
||||
this.onClearSelected()
|
||||
this.visible = false
|
||||
this.selectedCompany = {}
|
||||
if (this.isMultiple) {
|
||||
this.selectedCompany = []
|
||||
}
|
||||
},
|
||||
onSelectChange(selectedRowKeys, selectionRows) {
|
||||
if(!this.isMultiple) {
|
||||
this.selectedCompany = selectionRows[0]
|
||||
} else {
|
||||
// selectionRows只会返回当前页数据的返回,所以多选的时候需要比对各个数据是否存在,不存在的话就从当前数据中查询推入selectedCompany中
|
||||
let resultArr = []
|
||||
selectionRows.forEach(row => {
|
||||
let ele = this.selectedCompany.find(ele => ele.id === row.id)
|
||||
if(!ele) {
|
||||
resultArr.push(row)
|
||||
}
|
||||
})
|
||||
this.selectedCompany = [...this.selectedCompany, ...resultArr]
|
||||
// this.selectedCompany = selectionRows
|
||||
}
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
|
||||
},
|
||||
/*
|
||||
* 重写一下查询 之前调用的是混入的查询
|
||||
* */
|
||||
searchReset() {
|
||||
// 调用无权限接口
|
||||
if (this.isLimit) {
|
||||
this.url.list = '/company/payCompanyManagement/listMeeting'
|
||||
}
|
||||
this.lastQueryParam = {}
|
||||
this.queryParam = {}
|
||||
this.loadData(1)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.isMultiple) {
|
||||
this.selectedCompany = []
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
</style>
|
||||
@@ -0,0 +1,152 @@
|
||||
<template>
|
||||
<div class="company-select">
|
||||
<a-row>
|
||||
<a-col :span="20">
|
||||
<a-tooltip v-if="isMultiple">
|
||||
<template slot="title">{{ value[valueKey] }}</template>
|
||||
<a-input @click="chooseBusiness" :value="value[valueKey]" v-bind="$attrs" :readOnly="true" unselectable="on"></a-input>
|
||||
</a-tooltip>
|
||||
<a-input v-else @click="chooseBusiness" :value="value[valueKey]" v-bind="$attrs" :readOnly="true" unselectable="on"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="4" class="form-btn" v-if="canAdd">
|
||||
<a-button v-bind="$attrs" icon="plus" @click="addCompany"></a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<business-select ref="businessSelect" @ok="handleOk" v-bind="$attrs" :is-multiple="isMultiple"></business-select>
|
||||
<business-management-module ref="businessAdd" @ok="addCompanyOk"></business-management-module>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BusinessSelect from '@comp/company/BusinessSelect'
|
||||
import BusinessManagementModule from '@/views/businessManagement/modules/BusinessManagementModule'
|
||||
|
||||
export default {
|
||||
name: 'CompanySelect',
|
||||
components: { BusinessSelect, BusinessManagementModule },
|
||||
props: {
|
||||
// 是否可以选择
|
||||
isCompanyDisabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
value: {
|
||||
type: [Object],
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 回显数据的key
|
||||
valueKey: {
|
||||
type: String,
|
||||
default: 'companyName'
|
||||
},
|
||||
// 是否可以新增:true--可以;false--不可以(组件作为查询条件时不可新增)
|
||||
canAdd: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
},
|
||||
// 是否调用无权限接口
|
||||
isLimit:{
|
||||
type:Boolean,
|
||||
required:false,
|
||||
default:false
|
||||
},
|
||||
// 是否多选-默认false
|
||||
isMultiple: {
|
||||
type:Boolean,
|
||||
required:false,
|
||||
default:false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 打开选择企业的模态框,如果父级传参为true则点击不弹模态框
|
||||
*/
|
||||
chooseBusiness() {
|
||||
if (this.isCompanyDisabled) {
|
||||
return
|
||||
}
|
||||
// 修改参数 是否调用无权限接口
|
||||
this.$refs.businessSelect.isLimit = this.isLimit
|
||||
this.$refs.businessSelect.searchReset()
|
||||
this.$refs.businessSelect.visible = true
|
||||
if (!this.isMultiple) {
|
||||
this.$refs.businessSelect.selectedRowKeys[0] = this.value.id
|
||||
} else {
|
||||
// 很重要 内部的删除像没有作用一样
|
||||
if(this.value.id) {
|
||||
this.$refs.businessSelect.selectedRowKeys = this.value.id.split(',')
|
||||
this.$refs.businessSelect.selectedCompany = this.multipleData || []
|
||||
} else {
|
||||
this.$refs.businessSelect.selectedRowKeys = []
|
||||
this.$refs.businessSelect.selectedCompany = []
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 选中后抛出企业信息(id, companyName)
|
||||
* @param value
|
||||
*/
|
||||
handleOk(value) {
|
||||
console.log('--------value---------', 'value')
|
||||
let company = {id: undefined, companyName: undefined}
|
||||
// 多选的时候 全部放在一起,以逗号分隔
|
||||
if (this.isMultiple) {
|
||||
if(value.length > 0) {
|
||||
let ids = [], nameArr = []
|
||||
value.forEach(item => {
|
||||
ids.push(item.id)
|
||||
nameArr.push(item.companyName)
|
||||
})
|
||||
company.id = ids.join()
|
||||
company.companyName= nameArr.join()
|
||||
}
|
||||
// 存储上次选中的信息,用于回显
|
||||
this.multipleData = value
|
||||
} else {
|
||||
company.id = value.id
|
||||
company.companyName= value.companyName
|
||||
}
|
||||
this.$emit('change', company)
|
||||
},
|
||||
/**
|
||||
* 新增企业
|
||||
*/
|
||||
addCompany() {
|
||||
this.$refs.businessAdd.title = '新增企业'
|
||||
// 传参是否调用无权限接口
|
||||
this.$refs.businessAdd.add(this.isLimit)
|
||||
},
|
||||
/**
|
||||
* 接收回显
|
||||
* @param value
|
||||
*/
|
||||
addCompanyOk(value) {
|
||||
let { id, companyName } = value
|
||||
this.$emit('change', { id, companyName })
|
||||
}
|
||||
},
|
||||
//2.2新增 在组件内定义 指定父组件调用时候的传值属性和事件类型
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
a-input:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.form-btn {
|
||||
padding-top: 1px;
|
||||
padding-left: 8px;
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,192 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
switchFullscreen
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
cancelText="关闭">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="会议名称">
|
||||
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="10" :lg="11" :md="12" :sm="24">
|
||||
<a-form-item label="会议时间">
|
||||
<j-date
|
||||
placeholder="请选择开始日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam.meetingStartTime"
|
||||
:disabled-date="disabledStartDate">
|
||||
</j-date>
|
||||
<span class="query-group-split-cust"></span>
|
||||
<j-date
|
||||
placeholder="请选择结束日期"
|
||||
class="query-group-cust"
|
||||
v-model="queryParam.meetingEndTime"
|
||||
:disabled-date="disabledEndDate">
|
||||
</j-date>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span class="table-page-search-submitButtons">
|
||||
<a-button type="primary" icon="search" @click="searchQuery">查询</a-button>
|
||||
<a-button icon="reload" @click="searchReset" class="reset-button">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
bordered
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio'}"
|
||||
@change="handleTableChange"
|
||||
class="j-table-force-nowrap">
|
||||
<template slot="text" slot-scope="text">
|
||||
<j-ellipsis v-if="text && text.length > 0" :value="text" :length="30"></j-ellipsis>
|
||||
<span v-else></span>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
||||
import {RangeDateMixin} from '@/mixins/RangeDateMixin'
|
||||
import JDate from '@comp/tools/JDate'
|
||||
import JEllipsis from '@comp/jero/JEllipsis'
|
||||
|
||||
export default {
|
||||
name: 'MeetingListModal',
|
||||
components: {
|
||||
JDate,
|
||||
JEllipsis
|
||||
},
|
||||
mixins: [JeroListMixin, RangeDateMixin],
|
||||
data() {
|
||||
return {
|
||||
title: '选择会议',
|
||||
width: 1200,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
url: {
|
||||
list: '/meeting/payMeeting/page',
|
||||
},
|
||||
dateKeyObj: {
|
||||
beginKey: 'meetingStartTime',
|
||||
endKey: 'meetingEndTime'
|
||||
},
|
||||
selectedCompany: {},
|
||||
selectedRowKeys: [],
|
||||
columns: [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '会议名称',
|
||||
align: 'center',
|
||||
dataIndex: 'meetingName',
|
||||
scopedSlots: {customRender: 'text'},
|
||||
width: 160,
|
||||
},
|
||||
{
|
||||
title: '会议类型',
|
||||
align: 'center',
|
||||
dataIndex: 'meetingType_dictText',
|
||||
scopedSlots: {customRender: 'text'},
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '负责人',
|
||||
align: 'center',
|
||||
dataIndex: 'directorName',
|
||||
scopedSlots: {customRender: 'text'},
|
||||
width: 160,
|
||||
},
|
||||
{
|
||||
title: '召开时间',
|
||||
align: 'center',
|
||||
dataIndex: 'startTime',
|
||||
width: 160,
|
||||
customRender: function (text, record) {
|
||||
return `${record.startTime}~${record.endTime}`
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '召开地点',
|
||||
align: 'center',
|
||||
dataIndex: 'venue',
|
||||
width: 160,
|
||||
customRender: function (text, record) {
|
||||
return text + '/' + record.address
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '会议费用',
|
||||
align: 'center',
|
||||
dataIndex: 'meetingCosts',
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
align: 'center',
|
||||
dataIndex: 'createTime',
|
||||
scopedSlots: {customRender: 'text'},
|
||||
}
|
||||
],
|
||||
dataSource: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleOk() {
|
||||
this.$emit('ok', this.selectedCompany)
|
||||
this.close()
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
},
|
||||
close() {
|
||||
this.visible = false
|
||||
},
|
||||
onSelectChange(selectedRowKeys, selectionRows) {
|
||||
this.selectedCompany = selectionRows[0]
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
},
|
||||
/*
|
||||
* 修改查询条件
|
||||
* */
|
||||
searchQuery() {
|
||||
this.queryParam.meetingStartTime = this.queryParam.meetingStartTime ? this.queryParam.meetingStartTime + ' ' + '00:00:00' : undefined
|
||||
this.queryParam.meetingEndTime = this.queryParam.meetingEndTime ? this.queryParam.meetingEndTime + ' ' + '23:59:59' : undefined
|
||||
this.queryParam.createTime_begin = this.queryParam.createTime_begin ? this.queryParam.createTime_begin + ' ' + '00:00:00' : undefined
|
||||
this.queryParam.createTime_end = this.queryParam.createTime_end ? this.queryParam.createTime_end + ' ' + '23:59:59' : undefined
|
||||
this.lastQueryParam = {...this.queryParam}
|
||||
this.loadData(1)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
</style>
|
||||