提交 0c510571 authored 作者: 王鹏飞's avatar 王鹏飞

chore: upgrade to vue 2.7

上级 7c71a08e
module.exports = { module.exports = {
env: { root: true,
node: true env: { node: true },
}, extends: ['eslint:recommended', 'plugin:vue/essential'],
extends: ['plugin:vue/essential', 'standard'],
rules: { rules: {
'vue/comment-directive': 'off', 'vue/multi-word-component-names': 'off'
'space-before-function-paren': 'off'
} }
} }
const fs = require('fs')
const path = require('path')
const axios = require('axios')
const domain = 'ezijing.com'
const outputPath = './https'
// 生成文件夹
function genOutputDir() {
if (fs.existsSync(outputPath)) {
console.log('The path exists.')
} else {
fs.mkdir(outputPath, { recursive: true }, err => {
if (err) throw err
})
}
}
function downloadCertFile() {
genOutputDir()
axios.get(`https://ssl.godzyx.com/${domain}/${domain}.key?get=allow`, { responseType: 'stream' }).then(response => {
response.data.pipe(fs.createWriteStream(path.join(__dirname, `${outputPath}/${domain}.key`)))
})
axios.get(`https://ssl.godzyx.com/${domain}/${domain}.pem?get=allow`, { responseType: 'stream' }).then(response => {
response.data.pipe(fs.createWriteStream(path.join(__dirname, `${outputPath}/${domain}.pem`)))
})
}
downloadCertFile()
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAn0EINdIXTDCzmR7J5FOjOV+PbXt7GNO6fanoCGe2O0CPRlNf
2Ea/wv6SlRtJPd0ohmnKqZdUbBpAsiV4ggOdOqeEB6utVYQWY/zhXRKYeRjN/iDu
WCRY5S+eRVkSzVOJP9DlBn6dnHSsWj55h1PrkIac8B862F/cVno/Wk5dqU55ZUoN
wHGw5Goz3R37w+Q0C9HRS5mrmPqI+Ogy8TJrIRxw9YAj5OlvuqBAeYAW1sNdEfsi
mMB0H2fbbXqEL4AsipE5ppP7Ij3vxVpxvmnl/SO7N6+Fit6r25VeFSvplK+PIV3c
UsK3PCKV2sOo0BDWtWFQh5hW3fK5RYjLpNDHCwIDAQABAoIBAEkiBDMzF5/VfaSD
jxNblUlzqNoOKqlsEehDblrtxbHQI/uXrhwT4VwarBXtQeU2+rU/P+JBrHM4Wx10
N7L9FecppmgfXqo2zlF8f8HOGFcEHRTm6o1vo6McCwKttQS1qAG2XHZvDtIagkuv
BQAwea0VJFzg+pUC8JyF5zIBauGkfk8eHTLFVuIEJoSJbPWBYzp7Vf1SCjXqs3YY
aZ5QkOqY7S81D2EULFAWiMIMdY/PVT5DSXxsjaJFkvxjDedA4jNCplyODBKdpnBb
kfoJTJ7qsSnqgJ2y2xRdRlvZalE49lr2MkW254s5GH35+hMYam0bffgLXdPz6RIs
7X0atYECgYEA1A9G+0+uYlyxddyR54QlWGK7L3wP+REMXultudT9rq4S6qkHoOgP
rhi2kvZOqA0sMR7XMVz5nw0ouUMUVfW0YzudgAK99tdIuk6dP6VqVo9T4kqa0rXi
3ZKD51qGXbF22SndEWV68QEPzMCbf0E+kXl5MGGNnFtjZ5nxTGS+uH8CgYEAwECs
0T36EnLOCXZoi3rTeHr2pSO20VuFSgljnHA6Ups9Chu6h/iZ8t0XVNb8J14q7lFi
NY6b4D3FR/vwO3nFt7dvFYNFaFGuFrkAaH002p8EYWSckhlGcucBuKivBVUbhXuM
HMGmqGhAnnGCvCj/v4n5/wv3wtFYfzYWnYPHC3UCgYBZgbFGNhW28sT8qIL1I3PX
4KR9oHHlgOqlzQVBYMNKzbKyVXIg2pJzu36kfU4p5JV4jjnqXgIGvjkoKUYWGkVv
dSQ/eejQnYHXEYOR77H4ozqW00KSGa+OMl92cWExfsxZUTA8PYcs3nPayplXlyRf
ptQeNa7eBjzo57NPuV4+5QKBgQCrJihzUlBYshmYNPBXE25FOHpwgz3SXT5orbke
4I4bUhXh9NN3DqrGmWqW3Zi2108ywALFGQLNe1AwiCnSWNLafZOHvEhC2Uw48FNb
sfMmmR/GMFJugc/EpMBUit7cyWppx5XxV7gs/jpgkz7GkV00P/ntwtK7fbDh9t3l
NhYxrQKBgDVE4HSDqOvZOaXGRoM0pJ3uYRTTSIDGVNMZ9t2C/t3uwoyFBe+Om2t+
G6w2Gr+Dck1v+zizU3khbAHvE67rYoUtrDvae41bmLuVcnYh4UsXfhB6BWOSaQ+l
l8aQwTfmV74szsEDcFkg038zQ6Q4c8iiurYp29nwEM7/mayBGOcv
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIHEDCCBfigAwIBAgIQC53CSHjB5MGsHDzx/2AxzjANBgkqhkiG9w0BAQsFADBb
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMRowGAYDVQQDExFTZWN1cmUgU2l0ZSBDQSBHMjAeFw0y
MDA2MTAwMDAwMDBaFw0yMjA5MTIxMjAwMDBaMFsxCzAJBgNVBAYTAkNOMRAwDgYD
VQQIEwdCZWlqaW5nMSIwIAYDVQQKExlUSEggWmlqaW5nIChCZWlqaW5nKSBJbmMu
MRYwFAYDVQQDDA0qLmV6aWppbmcuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAn0EINdIXTDCzmR7J5FOjOV+PbXt7GNO6fanoCGe2O0CPRlNf2Ea/
wv6SlRtJPd0ohmnKqZdUbBpAsiV4ggOdOqeEB6utVYQWY/zhXRKYeRjN/iDuWCRY
5S+eRVkSzVOJP9DlBn6dnHSsWj55h1PrkIac8B862F/cVno/Wk5dqU55ZUoNwHGw
5Goz3R37w+Q0C9HRS5mrmPqI+Ogy8TJrIRxw9YAj5OlvuqBAeYAW1sNdEfsimMB0
H2fbbXqEL4AsipE5ppP7Ij3vxVpxvmnl/SO7N6+Fit6r25VeFSvplK+PIV3cUsK3
PCKV2sOo0BDWtWFQh5hW3fK5RYjLpNDHCwIDAQABo4IDzjCCA8owHwYDVR0jBBgw
FoAUxBF+iECGwkG/ZfMa4bRTQKOr7H0wHQYDVR0OBBYEFHxjLRRYXe2jIjYECuN8
r3EnjOTFMCUGA1UdEQQeMByCDSouZXppamluZy5jb22CC2V6aWppbmcuY29tMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwbwYD
VR0fBGgwZjAxoC+gLYYraHR0cDovL2NybDMuZGlnaWNlcnQuY29tL1NlY3VyZVNp
dGVDQUcyLmNybDAxoC+gLYYraHR0cDovL2NybDQuZGlnaWNlcnQuY29tL1NlY3Vy
ZVNpdGVDQUcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgGCCsGAQUF
BwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAECAjBsBggr
BgEFBQcBAQRgMF4wIQYIKwYBBQUHMAGGFWh0dHA6Ly9vY3NwLmRjb2NzcC5jbjA5
BggrBgEFBQcwAoYtaHR0cDovL2NybC5kaWdpY2VydC1jbi5jb20vU2VjdXJlU2l0
ZUNBRzIuY3J0MAwGA1UdEwEB/wQCMAAwggH1BgorBgEEAdZ5AgQCBIIB5QSCAeEB
3wB2AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABcpwT21oAAAQD
AEcwRQIgWTyqiBOL3dFTJBE2Q6cgSBzk9W5iTaC2B8T1f8gFCP0CIQDhngm9WJbO
J7v14h6w+B2Li7WEAkWLSLiTKzh7na2SuQB1ACJFRQdZVSRWlj+hL/H3bYbgIyZj
rcBLf13Gg1xu4g8CAAABcpwT2zEAAAQDAEYwRAIgckmPL6WJx9Jke4AfVLmy//ye
tsmT5si8FO8p9Fd52VECICPqDvdjlN2DtfQznTGTxaL0PQ5N8eNiX3fJn6sRCfcU
AHYAUaOw9f0BeZxWbbg3eI8MpHrMGyfL956IQpoN/tSLBeUAAAFynBPbfQAABAMA
RzBFAiEAwYooscdEijXGnRdJYnz0ClmvWcxtJ169Bq+sywhPReACIDjvE5a5d7mb
n3YTgfLOtbnuDpkDRjUfdY7cs6UfderhAHYAQcjKsd8iRkoQxqE6CUKHXk4xixsD
6+tLx2jwkGKWBvYAAAFynBPa0wAABAMARzBFAiAmJVwNfWFMKrqWTvEfHk9O/5/r
Crj/W3BqjV6p0D09hgIhAIKb4drMok8s1X0Evh4Nbzd3Nv9PuwITdICztemCrk4e
MA0GCSqGSIb3DQEBCwUAA4IBAQBWSrE/pt//MKeGpf6vMISGD0LZArebPFQ7wlgv
Y13HpCY5lqwrZItsuXWS5IYMv8ueYarCm081OJOBvSUKHOtYSe6wdFqsXehokUiy
7oVNief7Li5RvLcf6z5fyjB+i017dds73Dt94mE1imV1DR1WErp1U6QCMEh+TKFa
PL52V9X5VWiYdImzdm8AWOlNBrgicmVzEEQuglejF5uaALf9iiyAjP36apqXv77T
UtxKgjONB1tnRw4XRqzwrEK+QjeOhziKCn1v2ppFX/Z11YYA7ajICVrG6wGJ+ENc
ukf5+v8r+TU7PqxQmb62zocX22jhe8HM644UJ4FWCiBh4Lb1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFjCCA/6gAwIBAgIQCH4Y+4+qkn7odgoNiYL1EjANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0xOTA2MjAxMjIxMzVaFw0yOTA2MjAxMjIxMzVaMFsxCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xGjAYBgNVBAMTEVNlY3VyZSBTaXRlIENBIEcyMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAx7s903fR6SgpA08UdhKEUIZHa2Ig7KPNkTtwMS1+08YS
5QSEDM4DQxy48jP8dZkyyU9J/0WCm8Nlv5ga7HOAxhdJcv+CPP4oadx8EbdrmjAH
rGOv64oHvt7Ina7uzLd3krqxd0doeuxRpTHvFAyjaUhxjSfZx0wh1f6W7prPm7V5
0VcTudj4rI+xtHXUcFAuFz4bcapTcru5aaZ1v6F2usMCMVM+xJxEZcsUM4uTxdIf
W5FUTI0dbP8NyZkr/WVzL59aGwBE4ZU0JKBlgEmtkFpLPR7JCzYunafu7nMk5YY2
6WDOmezpWDjzDxJ8xakizykWYT5gdJYE3ULlUe31WQIDAQABo4IBzjCCAcowHQYD
VR0OBBYEFMQRfohAhsJBv2XzGuG0U0Cjq+x9MB8GA1UdIwQYMBaAFAPeUDVW0Uy7
ZvCj4hsbw5eyPdFVMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcD
AQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAxBggrBgEFBQcBAQQlMCMwIQYI
KwYBBQUHMAGGFWh0dHA6Ly9vY3NwLmRjb2NzcC5jbjBEBgNVHR8EPTA7MDmgN6A1
hjNodHRwOi8vY3JsLmRpZ2ljZXJ0LWNuLmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD
QS5jcmwwgc4GA1UdIASBxjCBwzCBwAYEVR0gADCBtzAoBggrBgEFBQcCARYcaHR0
cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBigYIKwYBBQUHAgIwfgx8QW55IHVz
ZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2Yg
dGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly93
d3cuZGlnaWNlcnQuY29tL3JwYS11YTANBgkqhkiG9w0BAQsFAAOCAQEAE+8lW5Yw
IuiRsHn4gYRRVbLmIypWwYH74lIXnQiALeUsUkWfW7KA0ARF1el3YaTAg8/r6zyX
eZTdlhndxKOKvO5N+rnHWJB6a3fJURn6e0I+rDzKV1Zacv2Vx/ZHLZmza/bp4Azi
BrDOiPlW/Ktj6ALQzAgq70Oytk9htLupBWPuplJDdyhGqb9RfQvWc1Fa1HwXdBQi
oJPibfMaYkHMY3pTbOv2rzMKEoZwHDHqyC73RI9JgqqiXHw0rIL8A1uL3IrymXEr
mycTqbSozQwiiEfb+cxzY82YaNzaLpJyIst0T2QmdDDngmyd2LEmm4NKeXRrcFRh
XDDFfpIn93B7JA==
-----END CERTIFICATE-----
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": ["node_modules", "dist"],
"vueCompilerOptions": {
"target": 2.7
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,41 +4,36 @@ ...@@ -4,41 +4,36 @@
"config": {}, "config": {},
"scripts": { "scripts": {
"dev": "vite --mode dev", "dev": "vite --mode dev",
"build": "cross-env BUILD_ENV=prod vite build && cross-env BUILD_ENV=prod npm run deploy", "build": "vite build --mode prod && npm run deploy",
"build:pre": "vite build", "build:pre": "vite build --mode pre",
"build:test": "vite build --mode test", "build:test": "vite build --mode test",
"preview": "vite preview", "preview": "vite preview",
"deploy": "node ./deploy.js", "deploy": "node ./deploy.js",
"cert": "node ./cert.js",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src" "lint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src"
}, },
"dependencies": { "dependencies": {
"axios": "^0.21.1", "axios": "^1.2.3",
"blueimp-md5": "^2.18.0", "blueimp-md5": "^2.19.0",
"clipboard": "^2.0.8", "clipboard": "^2.0.11",
"element-ui": "^2.15.5", "element-ui": "^2.15.12",
"js-file-download": "^0.4.12", "js-file-download": "^0.4.12",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"query-string": "^7.0.1", "query-string": "^7.0.1",
"vue": "^2.6.14", "vue": "^2.7.14",
"vue-router": "^3.5.2", "vue-router": "^3.6.5",
"vuedraggable": "^2.24.3", "vuedraggable": "^2.24.3",
"vuex": "^3.6.2", "vuex": "^3.6.2",
"xlsx": "^0.17.1" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-eslint": "^8.0.1", "@vitejs/plugin-vue2": "^2.2.0",
"ali-oss": "^6.16.0", "ali-oss": "^6.17.1",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"cross-env": "^7.0.3", "eslint": "^8.32.0",
"eslint": "^7.32.0", "eslint-plugin-vue": "^9.9.0",
"eslint-config-standard": "^16.0.3", "sass": "^1.57.1",
"eslint-plugin-import": "^2.24.2", "vite": "^4.0.4",
"eslint-plugin-node": "^11.1.0", "vite-plugin-checker": "^0.5.3"
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-vue": "^7.16.0",
"sass": "^1.32.13",
"vite": "^2.5.0",
"vite-plugin-vue2": "^1.8.1",
"vue-template-compiler": "^2.6.14"
} }
} }
...@@ -18,14 +18,12 @@ ...@@ -18,14 +18,12 @@
clearable clearable
v-bind="item" v-bind="item"
v-if="item.type === 'select'" v-if="item.type === 'select'"
@change="search" @change="search">
>
<template v-for="(option, index) in item.options"> <template v-for="(option, index) in item.options">
<el-option <el-option
:label="option[item.labelKey] || option.label" :label="option[item.labelKey] || option.label"
:value="option[item.valueKey] || option.value" :value="option[item.valueKey] || option.value"
:key="index" :key="index"></el-option>
></el-option>
</template> </template>
</el-select> </el-select>
</template> </template>
...@@ -51,9 +49,7 @@ ...@@ -51,9 +49,7 @@
v-bind="$attrs" v-bind="$attrs"
v-on="$listeners" v-on="$listeners"
style="height: 100%" style="height: 100%"
ref="table" ref="table">
max-height="750"
>
<template v-for="item in currentColumns"> <template v-for="item in currentColumns">
<el-table-column v-bind="item" :key="item.prop" v-if="visible(item)"> <el-table-column v-bind="item" :key="item.prop" v-if="visible(item)">
<template v-slot:default="scope" v-if="item.slots || item.computed"> <template v-slot:default="scope" v-if="item.slots || item.computed">
...@@ -80,8 +76,7 @@ ...@@ -80,8 +76,7 @@
@size-change="pageSizeChange" @size-change="pageSizeChange"
@current-change="fetchList()" @current-change="fetchList()"
:hide-on-single-page="true" :hide-on-single-page="true"
v-if="hasPagination" v-if="hasPagination">
>
</el-pagination> </el-pagination>
</div> </div>
<!-- 更多筛选 --> <!-- 更多筛选 -->
...@@ -103,14 +98,12 @@ ...@@ -103,14 +98,12 @@
clearable clearable
v-bind="item" v-bind="item"
v-if="item.type === 'select'" v-if="item.type === 'select'"
style="width: 100%" style="width: 100%">
>
<template v-for="(option, index) in item.options"> <template v-for="(option, index) in item.options">
<el-option <el-option
:label="option[item.labelKey] || option.label" :label="option[item.labelKey] || option.label"
:value="option[item.valueKey] || option.value" :value="option[item.valueKey] || option.value"
:key="index" :key="index"></el-option>
></el-option>
</template> </template>
</el-select> </el-select>
</template> </template>
...@@ -250,8 +243,7 @@ export default { ...@@ -250,8 +243,7 @@ export default {
this.page.total = parseInt(total) this.page.total = parseInt(total)
this.dataList = callback ? callback(list) : list this.dataList = callback ? callback(list) : list
}) })
// eslint-disable-next-line node/handle-callback-err .catch(() => {
.catch(error => {
this.page.total = 0 this.page.total = 0
this.dataList = [] this.dataList = []
}) })
...@@ -319,7 +311,7 @@ export default { ...@@ -319,7 +311,7 @@ export default {
// 保存表头设置 // 保存表头设置
primaryColumnsOptions() { primaryColumnsOptions() {
const { key } = this.columnsOptions const { key } = this.columnsOptions
updateTableColumns({ key, value: JSON.stringify(this.editableColumns) }).then(res => { updateTableColumns({ key, value: JSON.stringify(this.editableColumns) }).then(() => {
this.$message.success('保存成功') this.$message.success('保存成功')
this.columnsOptionsVisible = false this.columnsOptionsVisible = false
this.customColumns = this.editableColumns this.customColumns = this.editableColumns
......
...@@ -34,11 +34,11 @@ export default { ...@@ -34,11 +34,11 @@ export default {
path: '/invoice', path: '/invoice',
icon: 'el-icon-postcard' icon: 'el-icon-postcard'
}, },
{ // {
name: '渠道管理', // name: '渠道管理',
path: '/channel', // path: '/channel',
icon: 'el-icon-box' // icon: 'el-icon-box'
}, // },
{ {
name: '项目列表', name: '项目列表',
path: '/project', path: '/project',
...@@ -49,7 +49,11 @@ export default { ...@@ -49,7 +49,11 @@ export default {
}, },
computed: { computed: {
defaultActive() { defaultActive() {
return this.$route.path const found = this.menuList.find(item => {
const regExp = new RegExp(`^${item.path}`)
return regExp.test(this.$route.path)
})
return found ? found.path : ''
} }
} }
} }
...@@ -57,17 +61,17 @@ export default { ...@@ -57,17 +61,17 @@ export default {
<style lang="scss"> <style lang="scss">
.app-aside { .app-aside {
position: sticky;
top: 0;
width: 200px; width: 200px;
z-index: 100;
background: #fff; background: #fff;
border-right: 1px solid rgba(0, 0, 0, 0.12); border-right: 1px solid rgba(0, 0, 0, 0.12);
overflow-x: hidden; overflow-x: hidden;
overflow-y: auto; overflow-y: auto;
flex: 0 0 200px; flex: 0 0 200px;
box-sizing: content-box;
} }
.nav { .nav {
position: fixed;
width: 200px;
margin: 20px 0; margin: 20px 0;
.el-menu { .el-menu {
border-right: 0; border-right: 0;
......
...@@ -39,6 +39,9 @@ export default { ...@@ -39,6 +39,9 @@ export default {
<style lang="scss"> <style lang="scss">
.app-header { .app-header {
position: sticky;
top: 0;
z-index: 1000;
padding: 0 20px; padding: 0 20px;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -46,7 +49,6 @@ export default { ...@@ -46,7 +49,6 @@ export default {
height: 64px; height: 64px;
background-color: #3276fc; background-color: #3276fc;
color: #fff; color: #fff;
.logo { .logo {
width: 120px; width: 120px;
} }
......
...@@ -19,7 +19,7 @@ export default function (blobInfo, succFun, failFun) { ...@@ -19,7 +19,7 @@ export default function (blobInfo, succFun, failFun) {
failFun('上传失败') failFun('上传失败')
}) })
}) })
.catch(response => { .catch(() => {
failFun('获取Signature失败') failFun('获取Signature失败')
}) })
} }
...@@ -7,11 +7,19 @@ import modules from './modules' ...@@ -7,11 +7,19 @@ import modules from './modules'
import '@/assets/css/base.css' import '@/assets/css/base.css'
import beforeEnter from '@/utils/beforeEnter' import beforeEnter from '@/utils/beforeEnter'
// 公共组件
import AppCard from './components/base/AppCard.vue'
import AppList from './components/base/AppList.vue'
// Element-UI // Element-UI
import ElementUI from 'element-ui' import ElementUI from 'element-ui'
import '@/assets/theme/style.scss' import '@/assets/theme/style.scss'
Vue.use(ElementUI, { size: 'small' }) Vue.use(ElementUI, { size: 'small' })
// 注册公共组件
Vue.component('AppCard', AppCard)
Vue.component('AppList', AppList)
// 注册模块 // 注册模块
modules({ router, store }) modules({ router, store })
......
...@@ -3,9 +3,9 @@ import httpRequest from '@/utils/axios' ...@@ -3,9 +3,9 @@ import httpRequest from '@/utils/axios'
/** /**
* 获取渠道列表 * 获取渠道列表
*/ */
export function getChannelList(params) { export function getChannelList() {
// return httpRequest.get('/api/finance/v1/channels/list', { params }) // return httpRequest.get('/api/finance/v1/channels/list', { params })
return new Promise((resolve, reject) => { return new Promise(resolve => {
resolve({ resolve({
data: [ data: [
{ channel_code: '渠道编码1', channel_name: '渠道名称1' }, { channel_code: '渠道编码1', channel_name: '渠道名称1' },
......
...@@ -14,14 +14,10 @@ ...@@ -14,14 +14,10 @@
</template> </template>
<script> <script>
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
// 接口 // 接口
import { getChannelList } from '../api' import { getChannelList } from '../api'
export default { export default {
components: { AppCard, AppList },
data() { data() {
return { return {
// 已选中的数据 // 已选中的数据
......
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
v-for="(item, index) in options" v-for="(item, index) in options"
:key="index" :key="index"
:label="item.user_name" :label="item.user_name"
:value="item.user_id" :value="item.user_id"></el-option>
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -45,7 +44,7 @@ export default { ...@@ -45,7 +44,7 @@ export default {
invoices_id: ids.join(','), invoices_id: ids.join(','),
sales_rep_user_id: this.form.value sales_rep_user_id: this.form.value
} }
assignSales(params).then(res => { assignSales(params).then(() => {
this.$emit('update:visible', false) this.$emit('update:visible', false)
this.$emit('success') this.$emit('success')
}) })
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
style="width: 360px" style="width: 360px">
>
</el-date-picker> </el-date-picker>
</template> </template>
<!-- 末次缴费时间 --> <!-- 末次缴费时间 -->
...@@ -33,8 +32,7 @@ ...@@ -33,8 +32,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
style="width: 360px" style="width: 360px">
>
</el-date-picker> </el-date-picker>
</template> </template>
<el-row style="margin-bottom: 20px"> <el-row style="margin-bottom: 20px">
...@@ -54,7 +52,9 @@ ...@@ -54,7 +52,9 @@
style="margin-left: 10px" style="margin-left: 10px"
>确认领取</el-button >确认领取</el-button
> >
<el-button type="primary" v-if="row.need_offline" style="margin-left: 10px" @click="paperSuccessPop(row)">确认开票</el-button> <el-button type="primary" v-if="row.need_offline" style="margin-left: 10px" @click="paperSuccessPop(row)"
>确认开票</el-button
>
</template> </template>
<template #footer> <template #footer>
<span>已选择{{ multipleSelection.length }}</span> <span>已选择{{ multipleSelection.length }}</span>
...@@ -69,12 +69,15 @@ ...@@ -69,12 +69,15 @@
@success="success" @success="success"
:visible.sync="isShowDialog" :visible.sync="isShowDialog"
:options="conditionList.sales_rep_user_id" :options="conditionList.sales_rep_user_id"
:invoicesIds="multipleSelection" :invoicesIds="multipleSelection"></distribution-dialog>
></distribution-dialog>
<el-dialog title="确认开票" :visible.sync="dialogFormVisible"> <el-dialog title="确认开票" :visible.sync="dialogFormVisible">
<el-form :model="form" label-width="150px"> <el-form :model="form" label-width="150px">
<el-form-item label="发票开具时间"> <el-form-item label="发票开具时间">
<el-date-picker value-format="yyyy-MM-dd HH-mm-ss" v-model="form.invoice_issuing_time" type="datetime" placeholder="选择日期时间"> <el-date-picker
value-format="yyyy-MM-dd HH-mm-ss"
v-model="form.invoice_issuing_time"
type="datetime"
placeholder="选择日期时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="发票号码"> <el-form-item label="发票号码">
...@@ -94,17 +97,15 @@ ...@@ -94,17 +97,15 @@
<script> <script>
// 组件 // 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
import DistributionDialog from '../components/DistributionDialog.vue' import DistributionDialog from '../components/DistributionDialog.vue'
// 接口 // 接口
import { getInvoiceList, getCondition, deposit, confirmReceive, setPaperSuccess } from '../api' import { getInvoiceList, getCondition, deposit, confirmReceive, setPaperSuccess } from '../api'
import XLSX from 'xlsx' import * as XLSX from 'xlsx'
import fileDownload from 'js-file-download' import fileDownload from 'js-file-download'
import queryString from 'query-string' import queryString from 'query-string'
export default { export default {
components: { AppCard, AppList, DistributionDialog }, components: { DistributionDialog },
data() { data() {
return { return {
dialogFormVisible: false, dialogFormVisible: false,
...@@ -286,7 +287,7 @@ export default { ...@@ -286,7 +287,7 @@ export default {
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
setPaperSuccess() { setPaperSuccess() {
setPaperSuccess(this.form).then(res => { setPaperSuccess(this.form).then(() => {
this.$message.success('确认成功') this.$message.success('确认成功')
this.form = { this.form = {
invoice_id: '', invoice_id: '',
...@@ -308,14 +309,14 @@ export default { ...@@ -308,14 +309,14 @@ export default {
}, },
// 发票充值 // 发票充值
deposit() { deposit() {
deposit().then(res => { deposit().then(() => {
this.$message({ this.$message({
message: '充值成功', message: '充值成功',
type: 'success' type: 'success'
}) })
}) })
}, },
beforeRequest(params, isReset) { beforeRequest(params) {
if (params.firstDate) { if (params.firstDate) {
const [firstTimeFrom, firstTimeTo] = params.firstDate const [firstTimeFrom, firstTimeTo] = params.firstDate
params.first_payment_time_from = firstTimeFrom params.first_payment_time_from = firstTimeFrom
......
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
</template> </template>
<script> <script>
// 组件 // 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
import { payCancel } from '../api' import { payCancel } from '../api'
// 接口 // 接口
export default { export default {
...@@ -24,7 +22,6 @@ export default { ...@@ -24,7 +22,6 @@ export default {
type: Object type: Object
} }
}, },
components: { AppCard, AppList },
data() { data() {
return {} return {}
}, },
......
...@@ -97,13 +97,6 @@ export default { ...@@ -97,13 +97,6 @@ export default {
return this.dealList.invoices_list || [] return this.dealList.invoices_list || []
} }
}, },
mounted() {
setTimeout(() => {
Object.keys(this.dealList.invoices_list[0]).forEach(res => {
console.log(res)
})
}, 1000)
},
methods: { methods: {
invoice_type(item) { invoice_type(item) {
if (item.invoice_type === 1 || item.invoice_type === '1') { if (item.invoice_type === 1 || item.invoice_type === '1') {
......
...@@ -12,12 +12,8 @@ ...@@ -12,12 +12,8 @@
</app-card> </app-card>
</template> </template>
<script> <script>
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
// 接口 // 接口
export default { export default {
components: { AppCard, AppList },
props: { props: {
dealList: { dealList: {
type: Object type: Object
......
...@@ -72,8 +72,7 @@ ...@@ -72,8 +72,7 @@
start-placeholder="开始日期时间" start-placeholder="开始日期时间"
end-placeholder="结束日期时间" end-placeholder="结束日期时间"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
size="small" size="small"></el-date-picker>
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="comment"> <el-form-item label="备注" prop="comment">
<el-input type="textarea" v-model="form.comment"> </el-input> <el-input type="textarea" v-model="form.comment"> </el-input>
...@@ -86,8 +85,7 @@ ...@@ -86,8 +85,7 @@
:auto-upload="false" :auto-upload="false"
:on-change="handleChange" :on-change="handleChange"
:on-remove="handleChange" :on-remove="handleChange"
accept="image/*" accept="image/*">
>
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
...@@ -100,11 +98,9 @@ ...@@ -100,11 +98,9 @@
</template> </template>
<script> <script>
import AppCard from '@/components/base/AppCard.vue'
import { payConfirm } from '../api' import { payConfirm } from '../api'
export default { export default {
components: { AppCard },
data() { data() {
const row = JSON.parse(this.$route.query.row) const row = JSON.parse(this.$route.query.row)
const dealList = JSON.parse(this.$route.query.dealList) const dealList = JSON.parse(this.$route.query.dealList)
...@@ -142,7 +138,7 @@ export default { ...@@ -142,7 +138,7 @@ export default {
params[`receiving_voucher_filename[${index}]`] = file.raw params[`receiving_voucher_filename[${index}]`] = file.raw
}) })
delete params.receiving_voucher_filename delete params.receiving_voucher_filename
payConfirm(params).then(res => { payConfirm(params).then(() => {
history.go(-1) history.go(-1)
}) })
}) })
......
...@@ -51,7 +51,6 @@ ...@@ -51,7 +51,6 @@
<script> <script>
// 组件 // 组件
import AppCard from '@/components/base/AppCard.vue'
import Order from '../components/Order.vue' import Order from '../components/Order.vue'
import Student from '../components/Student.vue' import Student from '../components/Student.vue'
import Collection from '../components/Collection.vue' import Collection from '../components/Collection.vue'
...@@ -62,7 +61,7 @@ import Confirmed from '../components/Confirmed.vue' ...@@ -62,7 +61,7 @@ import Confirmed from '../components/Confirmed.vue'
import SecondChannel from '../components/SecondChannel.vue' import SecondChannel from '../components/SecondChannel.vue'
import { payDetail, confirmPayDetail, cancelPayDetail } from '../api' import { payDetail, confirmPayDetail, cancelPayDetail } from '../api'
export default { export default {
components: { AppCard, Order, Student, Collection, Ticket, Channel, Toconfirm, Confirmed, SecondChannel }, components: { Order, Student, Collection, Ticket, Channel, Toconfirm, Confirmed, SecondChannel },
data() { data() {
return { return {
id: '', id: '',
...@@ -130,12 +129,12 @@ export default { ...@@ -130,12 +129,12 @@ export default {
} }
if (this.dealList.payment_status === '70') { if (this.dealList.payment_status === '70') {
// 确认 // 确认
confirmPayDetail(params).then(res => { confirmPayDetail(params).then(() => {
this.fetchTicketDetail() this.fetchTicketDetail()
}) })
} else { } else {
// 取消 // 取消
cancelPayDetail(params).then(res => { cancelPayDetail(params).then(() => {
this.fetchTicketDetail() this.fetchTicketDetail()
}) })
} }
......
...@@ -18,8 +18,7 @@ ...@@ -18,8 +18,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
style="width: 360px" style="width: 360px">
>
</el-date-picker> </el-date-picker>
</template> </template>
<!-- 末次缴费时间 --> <!-- 末次缴费时间 -->
...@@ -32,8 +31,7 @@ ...@@ -32,8 +31,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
style="width: 360px" style="width: 360px">
>
</el-date-picker> </el-date-picker>
</template> </template>
<!-- 状态 --> <!-- 状态 -->
...@@ -43,8 +41,7 @@ ...@@ -43,8 +41,7 @@
active-value="1" active-value="1"
inactive-value="2" inactive-value="2"
@change="handleStatus(row)" @change="handleStatus(row)"
:disabled="row.refund_time !== null" :disabled="row.refund_time !== null"></el-switch>
></el-switch>
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template v-slot:table-x="{ row }"> <template v-slot:table-x="{ row }">
...@@ -79,8 +76,7 @@ ...@@ -79,8 +76,7 @@
:id="id" :id="id"
@close="ticketVisible = false" @close="ticketVisible = false"
@createTicket="handleCreateTicket" @createTicket="handleCreateTicket"
:row="row" :row="row" />
/>
<el-drawer <el-drawer
size="30%" size="30%"
title="历史开票信息" title="历史开票信息"
...@@ -89,8 +85,7 @@ ...@@ -89,8 +85,7 @@
append-to-body append-to-body
:destroy-on-close="true" :destroy-on-close="true"
center center
:modal="false" :modal="false">
>
<History v-if="historyVisible" :hasSearch="true" @select="handleSelect" /> <History v-if="historyVisible" :hasSearch="true" @select="handleSelect" />
</el-drawer> </el-drawer>
</el-drawer> </el-drawer>
...@@ -100,19 +95,17 @@ ...@@ -100,19 +95,17 @@
</template> </template>
<script> <script>
// 组件 // 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
import TicketForm from '../components/TicketForm.vue' import TicketForm from '../components/TicketForm.vue'
import ShareQrcode from '../components/ShareQrcode.vue' import ShareQrcode from '../components/ShareQrcode.vue'
import History from '../components/History.vue' import History from '../components/History.vue'
// 接口 // 接口
import { getCondition, getPayList, allowCreate, createNewTicket, drawBack, cancelTicket, download } from '../api' import { getCondition, getPayList, allowCreate, createNewTicket, drawBack, cancelTicket, download } from '../api'
import XLSX from 'xlsx' import * as XLSX from 'xlsx'
import { funDownload } from '@/utils/util' import { funDownload } from '@/utils/util'
import queryString from 'query-string' import queryString from 'query-string'
export default { export default {
components: { AppCard, AppList, TicketForm, ShareQrcode, History }, components: { TicketForm, ShareQrcode, History },
data() { data() {
return { return {
history: {}, history: {},
...@@ -455,7 +448,7 @@ export default { ...@@ -455,7 +448,7 @@ export default {
this.fetchCondition() // 获取过滤条件 this.fetchCondition() // 获取过滤条件
}, },
methods: { methods: {
beforeRequest(params, isReset) { beforeRequest(params) {
if (params.first_payment_time) { if (params.first_payment_time) {
const [firstTimeFrom, firstTimeTo] = params.first_payment_time const [firstTimeFrom, firstTimeTo] = params.first_payment_time
params.first_payment_time_from = firstTimeFrom params.first_payment_time_from = firstTimeFrom
...@@ -498,7 +491,7 @@ export default { ...@@ -498,7 +491,7 @@ export default {
// 作废发票 // 作废发票
fetchDisabled(row) { fetchDisabled(row) {
const params = { payment_id: row.id } const params = { payment_id: row.id }
cancelTicket(params).then(res => { cancelTicket(params).then(() => {
this.$refs.list.refetch() this.$refs.list.refetch()
}) })
}, },
...@@ -525,7 +518,7 @@ export default { ...@@ -525,7 +518,7 @@ export default {
// 开具发票 // 开具发票
handleCreateTicket(val) { handleCreateTicket(val) {
const params = Object.assign({ payment_id: this.id }, val) const params = Object.assign({ payment_id: this.id }, val)
createNewTicket(params).then(res => { createNewTicket(params).then(() => {
this.$message.success('开票申请已提交') this.$message.success('开票申请已提交')
this.ticketVisible = false this.ticketVisible = false
this.$refs.list.refetch() // 刷新订单列表 this.$refs.list.refetch() // 刷新订单列表
...@@ -535,7 +528,7 @@ export default { ...@@ -535,7 +528,7 @@ export default {
handleStatus(row) { handleStatus(row) {
const params = { id: row.id, can_add_invoice: row.can_add_invoice } const params = { id: row.id, can_add_invoice: row.can_add_invoice }
allowCreate(params) allowCreate(params)
.then(res => { .then(() => {
this.$message.success('更新状态成功') this.$message.success('更新状态成功')
this.$refs.list.refetch() // 刷新订单列表 this.$refs.list.refetch() // 刷新订单列表
}) })
...@@ -546,7 +539,7 @@ export default { ...@@ -546,7 +539,7 @@ export default {
// 确认作废 // 确认作废
confirmDisabledTicket() { confirmDisabledTicket() {
cancelTicket() cancelTicket()
.then(res => { .then(() => {
this.disabledTicketVisible = false this.disabledTicketVisible = false
this.$message.success('发票已作废') this.$message.success('发票已作废')
this.$refs.list.refetch() // 刷新订单列表 this.$refs.list.refetch() // 刷新订单列表
...@@ -570,7 +563,7 @@ export default { ...@@ -570,7 +563,7 @@ export default {
fetchDrawBack(row) { fetchDrawBack(row) {
const params = { id: row.id } const params = { id: row.id }
drawBack(params) drawBack(params)
.then(res => { .then(() => {
this.$refs.list.refetch() // 刷新订单列表 this.$refs.list.refetch() // 刷新订单列表
this.$message.success('退费成功') this.$message.success('退费成功')
}) })
...@@ -644,7 +637,7 @@ export default { ...@@ -644,7 +637,7 @@ export default {
Object.keys(this.tableOptions.remote.params).forEach(key => { Object.keys(this.tableOptions.remote.params).forEach(key => {
if (this.tableOptions.remote.params[key] === '') delete this.tableOptions.remote.params[key] if (this.tableOptions.remote.params[key] === '') delete this.tableOptions.remote.params[key]
}) })
download(this.tableOptions.remote.params).then(res => { download(this.tableOptions.remote.params).then(() => {
const params = queryString.stringify(this.tableOptions.remote.params) const params = queryString.stringify(this.tableOptions.remote.params)
window.open(`/api/finance/v1/payments/download?${params}`) window.open(`/api/finance/v1/payments/download?${params}`)
}) })
......
...@@ -13,14 +13,10 @@ ...@@ -13,14 +13,10 @@
</template> </template>
<script> <script>
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
// 接口 // 接口
import { getProjectList } from '../api' import { getProjectList } from '../api'
export default { export default {
components: { AppCard, AppList },
data() { data() {
return { return {
projectType: [ projectType: [
...@@ -67,7 +63,7 @@ export default { ...@@ -67,7 +63,7 @@ export default {
} }
], ],
columns: [ columns: [
{ label: '项目编号', prop: 'project_id', minWidth: 50 }, { label: '项目编号', prop: 'project_id', width: 100 },
{ label: '项目名称', prop: 'title', minWidth: 150 }, { label: '项目名称', prop: 'title', minWidth: 150 },
{ label: '显示别名', prop: 'alias' }, { label: '显示别名', prop: 'alias' },
{ {
...@@ -90,7 +86,7 @@ export default { ...@@ -90,7 +86,7 @@ export default {
return found ? found.label : row.project_status return found ? found.label : row.project_status
} }
}, },
{ label: '更新时间', prop: 'updated_time', minWidth: 110 } { label: '更新时间', prop: 'updated_time', width: 160 }
] ]
} }
} }
......
import fs from 'fs' import fs from 'fs'
import path from 'path' import path from 'path'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import { createVuePlugin } from 'vite-plugin-vue2' import vue from '@vitejs/plugin-vue2'
import eslint from '@rollup/plugin-eslint' import checker from 'vite-plugin-checker'
export default defineConfig({
base: process.env.BUILD_ENV === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/finance-admin/' : '/', export default defineConfig(({ mode }) => ({
plugins: [eslint({ include: '**/*.+(vue|js|jsx|ts|tsx)' }), createVuePlugin()], base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/finance-admin/' : '/',
plugins: [vue(), checker({ eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } })],
server: { server: {
open: true, open: true,
host: 'dev.ezijing.com', host: 'dev.ezijing.com',
...@@ -13,25 +14,15 @@ export default defineConfig({ ...@@ -13,25 +14,15 @@ export default defineConfig({
key: fs.readFileSync(path.join(__dirname, './https/ezijing.com.key')), key: fs.readFileSync(path.join(__dirname, './https/ezijing.com.key')),
cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem')) cert: fs.readFileSync(path.join(__dirname, './https/ezijing.com.pem'))
}, },
// proxy: {
// '/api/finance': 'https://finance-backend-api.ezijing.com'
// },
proxy: { proxy: {
'/api/finance': { '/api': 'https://finance-center.ezijing.com'
target: 'https://finance-backend-api.ezijing.com',
changeOrigin: true,
rewrite: path => path.replace(/^\/api\/finance/, '')
},
'/api': 'https://app.ezijing.com'
} }
}, },
resolve: { resolve: {
alias: [ alias: [{ find: '@', replacement: path.resolve(__dirname, 'src') }]
{ },
find: '@', css: {
replacement: path.resolve(__dirname, 'src') // 禁用SASS警告提醒
} preprocessorOptions: { scss: { quietDeps: true, charset: false } }
]
} }
}) }))
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论