提交 f24a5d72 authored 作者: 宋雄's avatar 宋雄

二期功能提交

上级 515bcd55
NODE_ENV=development NODE_ENV=development
# VUE_APP_API_BASE_URL='http://192.168.0.119:9999' VUE_APP_API_BASE_URL='http://220.203.25.212:9998'
# VUE_APP_API_BASE_URL='http://192.168.0.102:9999' # VUE_APP_API_BASE_URL='http://192.168.0.100:9999'
VUE_APP_API_BASE_URL='http://220.203.25.212:9999' # VUE_APP_API_BASE_URL='http://220.203.25.212:9999'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
......
{ {
"name": "vue-antd-jeecg", "name": "vue-antd-jeecg",
"version": "2.2.1", "version": "3.4.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
...@@ -1179,7 +1179,6 @@ ...@@ -1179,7 +1179,6 @@
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz",
"integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==",
"dev": true,
"requires": { "requires": {
"regenerator-runtime": "^0.13.4" "regenerator-runtime": "^0.13.4"
}, },
...@@ -1187,8 +1186,7 @@ ...@@ -1187,8 +1186,7 @@
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.13.5", "version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
"dev": true
} }
} }
}, },
...@@ -1400,6 +1398,11 @@ ...@@ -1400,6 +1398,11 @@
} }
} }
}, },
"@jeecg/antd-online-mini": {
"version": "3.4.3-beta2",
"resolved": "https://registry.npmjs.org/@jeecg/antd-online-mini/-/antd-online-mini-3.4.3-beta2.tgz",
"integrity": "sha512-uZLjtQG/vAcBsCEysE1HceUyzwiHwU+JlNzvHxNnenNDHeaawZa9CfILUImNFJ5JQVqE5J11QpQNb6i5Boo3Gw=="
},
"@mrmlnc/readdir-enhanced": { "@mrmlnc/readdir-enhanced": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
...@@ -1417,18 +1420,18 @@ ...@@ -1417,18 +1420,18 @@
"dev": true "dev": true
}, },
"@simonwep/pickr": { "@simonwep/pickr": {
"version": "1.7.1", "version": "1.7.4",
"resolved": "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.7.1.tgz", "resolved": "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.7.4.tgz",
"integrity": "sha512-ftbskrPKAkRLYVj8IhV4Bn86g16It9Uq/p4G0FdjRz36pKKjW0JdxdDWDIVuAev0Urg8604Ho98js6JmjXdiZQ==", "integrity": "sha512-fq7jgKJT21uWGC1mARBHvvd1JYlEf93o7SuVOB4Lr0x/2UPuNC9Oe9n/GzVeg4oVtqMDfh1wIEJpsdOJEZb+3g==",
"requires": { "requires": {
"core-js": "^3.6.5", "core-js": "^3.6.5",
"nanopop": "^1.3.0" "nanopop": "^2.1.0"
}, },
"dependencies": { "dependencies": {
"core-js": { "core-js": {
"version": "3.6.5", "version": "3.32.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz",
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" "integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ=="
} }
} }
}, },
...@@ -1443,11 +1446,6 @@ ...@@ -1443,11 +1446,6 @@
"string-width": "^2.0.0" "string-width": "^2.0.0"
} }
}, },
"@sphinxxxx/color-conversion": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz",
"integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw=="
},
"@tinymce/tinymce-vue": { "@tinymce/tinymce-vue": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-2.1.0.tgz",
...@@ -3735,11 +3733,6 @@ ...@@ -3735,11 +3733,6 @@
"negotiator": "0.6.2" "negotiator": "0.6.2"
} }
}, },
"ace-builds": {
"version": "1.4.12",
"resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.12.tgz",
"integrity": "sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg=="
},
"acorn": { "acorn": {
"version": "5.7.4", "version": "5.7.4",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
...@@ -3924,9 +3917,9 @@ ...@@ -3924,9 +3917,9 @@
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
}, },
"ant-design-vue": { "ant-design-vue": {
"version": "1.6.3", "version": "1.7.8",
"resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-1.6.3.tgz", "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-1.7.8.tgz",
"integrity": "sha512-Zt0z0SXzHCgow0chv4OA8lONxVOzXf7iLmZxdVHlsS3IaPn5n8QNPCzBUh3z0IXBdaDPiX9tjELQCXf9vdXdlw==", "integrity": "sha512-F1hmiS9vwbyfuFvlamdW5l9bHKqRlj9wHaGDIE41NZMWXyWy8qL0UFa/+I0Wl8gQWZCqODW5pN6Yfoyn85At3A==",
"requires": { "requires": {
"@ant-design/icons": "^2.1.1", "@ant-design/icons": "^2.1.1",
"@ant-design/icons-vue": "^2.0.0", "@ant-design/icons-vue": "^2.0.0",
...@@ -3988,11 +3981,6 @@ ...@@ -3988,11 +3981,6 @@
"integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==",
"dev": true "dev": true
}, },
"area-data": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/area-data/-/area-data-5.0.6.tgz",
"integrity": "sha512-QxLoA+823xXKyhw5S3750I9TToki0OS42HU9ol3rCOsCXfkjtl8RtQ/eoj0cK0Levn4//oEM05FmMumfw/HIlg=="
},
"argparse": { "argparse": {
"version": "1.0.10", "version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
...@@ -4148,9 +4136,9 @@ ...@@ -4148,9 +4136,9 @@
"dev": true "dev": true
}, },
"async-validator": { "async-validator": {
"version": "3.3.0", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.3.0.tgz", "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz",
"integrity": "sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg==" "integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ=="
}, },
"asynckit": { "asynckit": {
"version": "0.4.0", "version": "0.4.0",
...@@ -4829,7 +4817,7 @@ ...@@ -4829,7 +4817,7 @@
"babel-plugin-transform-runtime": { "babel-plugin-transform-runtime": {
"version": "6.23.0", "version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz",
"integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "integrity": "sha512-cpGMVC1vt/772y3jx1gwSaTitQVZuFDlllgreMsZ+rTYC6jlYXRyf5FQOgSnckOiA5QmzbXTyBY2A5AmZXF1fA==",
"requires": { "requires": {
"babel-runtime": "^6.22.0" "babel-runtime": "^6.22.0"
} }
...@@ -5400,6 +5388,15 @@ ...@@ -5400,6 +5388,15 @@
} }
} }
}, },
"call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
}
},
"call-me-maybe": { "call-me-maybe": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
...@@ -5543,6 +5540,11 @@ ...@@ -5543,6 +5540,11 @@
"integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
"dev": true "dev": true
}, },
"china-area-data": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/china-area-data/-/china-area-data-5.0.1.tgz",
"integrity": "sha512-BQDPpiv5Nn+018ekcJK2oSD9PAD+E1bvXB0wgabc//dFVS/KvRqCgg0QOEUt3vBkx9XzB5a9BmkJCEZDBxVjVw=="
},
"chokidar": { "chokidar": {
"version": "3.4.0", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
...@@ -5626,9 +5628,9 @@ ...@@ -5626,9 +5628,9 @@
} }
}, },
"classnames": { "classnames": {
"version": "2.2.6", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
}, },
"clean-css": { "clean-css": {
"version": "4.2.3", "version": "4.2.3",
...@@ -6090,7 +6092,7 @@ ...@@ -6090,7 +6092,7 @@
"component-classes": { "component-classes": {
"version": "1.2.6", "version": "1.2.6",
"resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz",
"integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", "integrity": "sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==",
"requires": { "requires": {
"component-indexof": "0.0.3" "component-indexof": "0.0.3"
} }
...@@ -6103,7 +6105,7 @@ ...@@ -6103,7 +6105,7 @@
"component-indexof": { "component-indexof": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz",
"integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" "integrity": "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw=="
}, },
"compressible": { "compressible": {
"version": "2.0.18", "version": "2.0.18",
...@@ -6314,6 +6316,11 @@ ...@@ -6314,6 +6316,11 @@
} }
} }
}, },
"comutils": {
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/comutils/-/comutils-1.1.19.tgz",
"integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw=="
},
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
...@@ -6588,6 +6595,15 @@ ...@@ -6588,6 +6595,15 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"cron-parser": {
"version": "2.18.0",
"resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.18.0.tgz",
"integrity": "sha512-s4odpheTyydAbTBQepsqd2rNWGa2iV3cyo8g7zbI2QQYGLVsfbhmwukayS1XHppe02Oy1fg7mg6xoaraVJeEcg==",
"requires": {
"is-nan": "^1.3.0",
"moment-timezone": "^0.5.31"
}
},
"cross-env": { "cross-env": {
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
...@@ -6806,6 +6822,11 @@ ...@@ -6806,6 +6822,11 @@
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
}, },
"cssfilter": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
"integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
},
"cssnano": { "cssnano": {
"version": "3.10.0", "version": "3.10.0",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
...@@ -8029,7 +8050,7 @@ ...@@ -8029,7 +8050,7 @@
"dom-closest": { "dom-closest": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz", "resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz",
"integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=", "integrity": "sha512-6neTn1BtJlTSt+XSISXpnOsF1uni1CHsP/tmzZMGWxasYFHsBOqrHPnzmneqEgKhpagnfnfSfbvRRW0xFsBHAA==",
"requires": { "requires": {
"dom-matches": ">=1.0.1" "dom-matches": ">=1.0.1"
} }
...@@ -8046,7 +8067,7 @@ ...@@ -8046,7 +8067,7 @@
"dom-matches": { "dom-matches": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz", "resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz",
"integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw=" "integrity": "sha512-2VI856xEDCLXi19W+4BechR5/oIS6bKCKqcf16GR8Pg7dGLJ/eBOWVbCmQx2ISvYH6wTNx5Ef7JTOw1dRGRx6A=="
}, },
"dom-scroll-into-view": { "dom-scroll-into-view": {
"version": "2.0.1", "version": "2.0.1",
...@@ -8195,6 +8216,22 @@ ...@@ -8195,6 +8216,22 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"echarts": {
"version": "5.4.3",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz",
"integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
"requires": {
"tslib": "2.3.0",
"zrender": "5.4.4"
},
"dependencies": {
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -9763,6 +9800,24 @@ ...@@ -9763,6 +9800,24 @@
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
}, },
"get-intrinsic": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
"integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3"
},
"dependencies": {
"has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
}
}
},
"get-stdin": { "get-stdin": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
...@@ -9920,6 +9975,11 @@ ...@@ -9920,6 +9975,11 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
}, },
"has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
},
"has-symbols": { "has-symbols": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
...@@ -10461,6 +10521,14 @@ ...@@ -10461,6 +10521,14 @@
"resolve-from": "^3.0.0" "resolve-from": "^3.0.0"
} }
}, },
"import-html-entry": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/import-html-entry/-/import-html-entry-1.15.1.tgz",
"integrity": "sha512-flVVS3lQTaHUUEF/zByio0WHdJRMNwT/1sI48/ps9VVGWNn+oE1wuX+fBRZkXLKAeggVVmfU41MpgNnZ7I9nRg==",
"requires": {
"@babel/runtime": "^7.7.2"
}
},
"import-local": { "import-local": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
...@@ -10599,7 +10667,7 @@ ...@@ -10599,7 +10667,7 @@
"intersperse": { "intersperse": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/intersperse/-/intersperse-1.0.0.tgz", "resolved": "https://registry.npmjs.org/intersperse/-/intersperse-1.0.0.tgz",
"integrity": "sha1-8lYfsc/vn1J3zDNHoiiGtDUaUYE=" "integrity": "sha512-LGcfug7OTeWkaQ8PEq8XbTy9Jl6uCNg8DrPnQUmwxSY8UETj1Y+LLmpdD0qHdEj6KVchuH3BE3ZzIXQ1t3oFUw=="
}, },
"invariant": { "invariant": {
"version": "2.2.4", "version": "2.2.4",
...@@ -10772,10 +10840,19 @@ ...@@ -10772,10 +10840,19 @@
"resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz", "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz",
"integrity": "sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg==" "integrity": "sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg=="
}, },
"is-nan": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
"integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"requires": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3"
}
},
"is-negative-zero": { "is-negative-zero": {
"version": "2.0.0", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
"integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
}, },
"is-number": { "is-number": {
"version": "7.0.0", "version": "7.0.0",
...@@ -10910,22 +10987,12 @@ ...@@ -10910,22 +10987,12 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true "dev": true
}, },
"javascript-natural-sort": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
"integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k="
},
"javascript-stringify": { "javascript-stringify": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz",
"integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=",
"dev": true "dev": true
}, },
"jmespath": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
"integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
},
"js-base64": { "js-base64": {
"version": "2.6.3", "version": "2.6.3",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz",
...@@ -11004,11 +11071,6 @@ ...@@ -11004,11 +11071,6 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
}, },
"json-source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz",
"integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg=="
},
"json-stable-stringify-without-jsonify": { "json-stable-stringify-without-jsonify": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
...@@ -11032,7 +11094,7 @@ ...@@ -11032,7 +11094,7 @@
"json2mq": { "json2mq": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
"integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
"requires": { "requires": {
"string-convert": "^0.2.0" "string-convert": "^0.2.0"
} }
...@@ -11050,21 +11112,6 @@ ...@@ -11050,21 +11112,6 @@
"minimist": "^1.2.0" "minimist": "^1.2.0"
} }
}, },
"jsoneditor": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-9.0.3.tgz",
"integrity": "sha512-4uwT7nmNBAlC2KUUpsHaX2GZ+KoOohjtE/HzGToufYASGjnMzkf6EcLS+pAwwVHLv7VUnXmAuMY4NaQ9cS25lA==",
"requires": {
"ace-builds": "^1.4.11",
"ajv": "^6.12.2",
"javascript-natural-sort": "^0.7.1",
"jmespath": "^0.15.0",
"json-source-map": "^0.6.1",
"mobius1-selectr": "^2.4.13",
"picomodal": "^3.0.0",
"vanilla-picker": "^2.10.1"
}
},
"jsonfile": { "jsonfile": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
...@@ -11470,11 +11517,6 @@ ...@@ -11470,11 +11517,6 @@
"resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
"integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
}, },
"lodash.toarray": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
"integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
},
"lodash.transform": { "lodash.transform": {
"version": "4.6.0", "version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
...@@ -12064,15 +12106,18 @@ ...@@ -12064,15 +12106,18 @@
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
}, },
"mobius1-selectr": {
"version": "2.4.13",
"resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz",
"integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw=="
},
"moment": { "moment": {
"version": "2.27.0", "version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"moment-timezone": {
"version": "0.5.43",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
"integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
"requires": {
"moment": "^2.29.4"
}
}, },
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
...@@ -12155,9 +12200,9 @@ ...@@ -12155,9 +12200,9 @@
} }
}, },
"nanopop": { "nanopop": {
"version": "1.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/nanopop/-/nanopop-1.3.0.tgz", "resolved": "https://registry.npmjs.org/nanopop/-/nanopop-2.3.0.tgz",
"integrity": "sha512-DQDhHyPhKLKrXOjVkChsAoWh/WpKuVINDKl4qvFbguqokRJWQBSNSlPzMS+Xy3yBQKeQ39rICMB2asDvdUiVxw==" "integrity": "sha512-fzN+T2K7/Ah25XU02MJkPZ5q4Tj5FpjmIYq4rvoHX4yb16HzFdCO6JxFFn5Y/oBhQ8no8fUZavnyIv9/+xkBBw=="
}, },
"natural-compare": { "natural-compare": {
"version": "1.4.0", "version": "1.4.0",
...@@ -12195,11 +12240,18 @@ ...@@ -12195,11 +12240,18 @@
} }
}, },
"node-emoji": { "node-emoji": {
"version": "1.10.0", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
"integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
"requires": { "requires": {
"lodash.toarray": "^4.4.0" "lodash": "^4.17.21"
},
"dependencies": {
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}
} }
}, },
"node-forge": { "node-forge": {
...@@ -12868,11 +12920,6 @@ ...@@ -12868,11 +12920,6 @@
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"optional": true "optional": true
}, },
"picomodal": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz",
"integrity": "sha1-+s0w9PvzSoCcHgTqUl8ATzmcC4I="
},
"pify": { "pify": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
...@@ -14649,6 +14696,32 @@ ...@@ -14649,6 +14696,32 @@
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
}, },
"qiankun": {
"version": "2.10.13",
"resolved": "https://registry.npmjs.org/qiankun/-/qiankun-2.10.13.tgz",
"integrity": "sha512-US861R2do2DMCU/BT1TEa3ccFHfCJtcu9Qs7Ytxax8sLNtPQLZpzBW3Itt9XjhBwL8q4F6nMg8WzYl/qczGT4Q==",
"requires": {
"@babel/runtime": "^7.10.5",
"import-html-entry": "^1.14.6",
"lodash": "^4.17.11",
"single-spa": "^5.9.2"
},
"dependencies": {
"@babel/runtime": {
"version": "7.22.11",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz",
"integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
},
"regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
}
}
},
"qs": { "qs": {
"version": "6.7.0", "version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
...@@ -15563,6 +15636,11 @@ ...@@ -15563,6 +15636,11 @@
} }
} }
}, },
"single-spa": {
"version": "5.9.5",
"resolved": "https://registry.npmjs.org/single-spa/-/single-spa-5.9.5.tgz",
"integrity": "sha512-9SQdmsyz4HSP+3gs6PJzhkaMEg+6zTlu9oxIghnwUX3eq+ajq4ft5egl0iyR55LAmO/UwvU8NgIWs/ZyQMa6dw=="
},
"slash": { "slash": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
...@@ -16002,7 +16080,7 @@ ...@@ -16002,7 +16080,7 @@
"string-convert": { "string-convert": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
"integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
}, },
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
...@@ -16531,9 +16609,9 @@ ...@@ -16531,9 +16609,9 @@
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
}, },
"tinycolor2": { "tinycolor2": {
"version": "1.4.1", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
"integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
}, },
"tinymce": { "tinymce": {
"version": "5.4.1", "version": "5.4.1",
...@@ -17006,14 +17084,6 @@ ...@@ -17006,14 +17084,6 @@
"spdx-expression-parse": "^3.0.0" "spdx-expression-parse": "^3.0.0"
} }
}, },
"vanilla-picker": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.10.1.tgz",
"integrity": "sha512-Bo4HOKkSorcQoRB08HwDMb8X2jt3SsZw7gzFlbzXbhnaxdUVJBm3LOUudr7M1SCVwPCo8d3nq8ajiAg8lAoqPg==",
"requires": {
"@sphinxxxx/color-conversion": "^2.2.2"
}
},
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
...@@ -17269,9 +17339,9 @@ ...@@ -17269,9 +17339,9 @@
} }
}, },
"vue-print-nb-jeecg": { "vue-print-nb-jeecg": {
"version": "1.0.9", "version": "1.0.12",
"resolved": "https://registry.npmjs.org/vue-print-nb-jeecg/-/vue-print-nb-jeecg-1.0.9.tgz", "resolved": "https://registry.npmjs.org/vue-print-nb-jeecg/-/vue-print-nb-jeecg-1.0.12.tgz",
"integrity": "sha512-dWLbThjeq/hBo50wcKoHrJAxLEZcqiwoIFEjZQEvntVQs76PdDrWvpkC8F8tGZ5G9GXs9ihrddkXpaIltHJ1dQ==", "integrity": "sha512-jHyWm6/TxB1iU2nHL7upQdHVdxb1SJQ9n3XKeYTaruFdbSphLo1vDtTunS2qVCjupk8lui7FlF5rxxSNr0zjZg==",
"requires": { "requires": {
"babel-plugin-transform-runtime": "^6.23.0" "babel-plugin-transform-runtime": "^6.23.0"
} }
...@@ -17286,6 +17356,14 @@ ...@@ -17286,6 +17356,14 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
"integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg==" "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg=="
}, },
"vue-seamless-scroll": {
"version": "1.1.23",
"resolved": "https://registry.npmjs.org/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
"integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
"requires": {
"comutils": "^1.1.9"
}
},
"vue-splitpane": { "vue-splitpane": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/vue-splitpane/-/vue-splitpane-1.0.6.tgz", "resolved": "https://registry.npmjs.org/vue-splitpane/-/vue-splitpane-1.0.6.tgz",
...@@ -17327,6 +17405,16 @@ ...@@ -17327,6 +17405,16 @@
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz", "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz",
"integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw==" "integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw=="
}, },
"vxe-table": {
"version": "2.9.13",
"resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-2.9.13.tgz",
"integrity": "sha512-MOaJLLJtdgVbiZX8netLqG8+daB7IbjBM9+5Ppt+seyjBrNV2C4dd8JkGpGX5zPThSzkYPGz66vo404Yu5Q/EA=="
},
"vxe-table-plugin-antd": {
"version": "1.8.10",
"resolved": "https://registry.npmjs.org/vxe-table-plugin-antd/-/vxe-table-plugin-antd-1.8.10.tgz",
"integrity": "sha512-XsNToY1zSmuLo/oQfSeDjnD4I03U+YYiMcBiduW8/BhZ7/eSTF4L2Rmu7cSDbLJefPwxsQKRd+jlFeF7T433Mw=="
},
"warning": { "warning": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
...@@ -18176,6 +18264,11 @@ ...@@ -18176,6 +18264,11 @@
"async-limiter": "~1.0.0" "async-limiter": "~1.0.0"
} }
}, },
"xe-utils": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-2.4.8.tgz",
"integrity": "sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q=="
},
"xregexp": { "xregexp": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz",
...@@ -18185,6 +18278,15 @@ ...@@ -18185,6 +18278,15 @@
"@babel/runtime-corejs3": "^7.8.3" "@babel/runtime-corejs3": "^7.8.3"
} }
}, },
"xss": {
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
"integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
"requires": {
"commander": "^2.20.3",
"cssfilter": "0.0.10"
}
},
"xtend": { "xtend": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
...@@ -18277,6 +18379,21 @@ ...@@ -18277,6 +18379,21 @@
"dev": true "dev": true
} }
} }
},
"zrender": {
"version": "5.4.4",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz",
"integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
"requires": {
"tslib": "2.3.0"
},
"dependencies": {
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
} }
} }
} }
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
"vue-photo-preview": "^1.1.3", "vue-photo-preview": "^1.1.3",
"vue-print-nb-jeecg": "^1.0.12", "vue-print-nb-jeecg": "^1.0.12",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vue-seamless-scroll": "^1.1.23",
"vue-splitpane": "^1.0.4", "vue-splitpane": "^1.0.4",
"vuedraggable": "^2.20.0", "vuedraggable": "^2.20.0",
"vuex": "^3.1.0", "vuex": "^3.1.0",
......
...@@ -4,6 +4,7 @@ import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types" ...@@ -4,6 +4,7 @@ import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
// 首页统计数据 // 首页统计数据
const getDataStatisticsApi = (params)=>getAction("/property-central/central/homepage/dataStatistics",params); const getDataStatisticsApi = (params)=>getAction("/property-central/central/homepage/dataStatistics",params);
const shareBoardApi = (params)=>getAction("/property-community/order/paymentOrder/shareBoard",params);
//角色管理 //角色管理
const addRole = (params)=>postAction("/sys/role/add",params); const addRole = (params)=>postAction("/sys/role/add",params);
...@@ -121,10 +122,44 @@ const AddUpdateCostApi = (params)=>postAction("/property-central/property/proper ...@@ -121,10 +122,44 @@ const AddUpdateCostApi = (params)=>postAction("/property-central/property/proper
const AuditUpdateCostApi = (params)=>postAction("/property-central/property/propertyChargrule/audit",params); const AuditUpdateCostApi = (params)=>postAction("/property-central/property/propertyChargrule/audit",params);
const getPropertyChargruleListApi = (params)=>getAction("/property-central/property/propertyChargrule/propertyChargruleList",params); const getPropertyChargruleListApi = (params)=>getAction("/property-central/property/propertyChargrule/propertyChargruleList",params);
// 对账管理
const getDetailReconciliationApi = (params)=>getAction("/property-community/property/communityReconciliation/queryById",params);
const getAccountListByIdApi = (params)=>getAction("/property-community/property/communityReconciliation/getAccountListById",params);
const companyAuditAccountPageApi = (params)=>postAction("/property-community/property/communityReconciliation/centralAudit",params);
const getCommunityRecordListApi = (params)=>getAction("/property-central/property/auditRecord/getRecordList",params);
const appropriationApi = (params)=>getAction("/property-community/property/communityReconciliation/appropriation",params);
// 分利规则管理
const getRuleDayDetailApi = (params)=>getAction("/property-central/sharerule/settlementSet/queryById",params);
const editRuleDayDetailApi = (params)=>postAction("/property-central/sharerule/settlementSet/edit",params);
const addRuleDayDetailApi = (params)=>postAction("/property-central/sharerule/shareRule/add",params);
const editShareRuleDetailApi = (params)=>postAction("/property-central/sharerule/shareRule/edit",params);
const getShareRuleDetailApi = (params)=>getAction("/property-central/sharerule/shareRule/queryById",params);
const updateRuleStatusApi = (id, status)=>getAction(`/property-central/sharerule/shareRule/updateRuleStatus/${id}/${status}`, {});
// 分利对账管理
const getshareBenefitApi = (params)=>getAction("/property-central/partners/shareBenefit/queryById",params);
const auditshareBenefitApi = (params)=>postAction("/property-central/partners/shareBenefit/audit",params);
// 分利对账结算
const getshareBalanceApi = (params)=>getAction("/property-central/partners/shareBalance/queryById",params);
const auditshareBalanceApi = (params)=>postAction("/property-central/partners/shareBalance/audit",params);
// 积分管理
const editIntegralApi = (params)=>postAction("/property-central/integral/ownerIntegral/editIntegral",params);
const freezeIntegral = (params)=>getAction(`/property-central/integral/ownerIntegral/freezeIntegral/${params.id}/${params.status}`,{});
const ownerIntegralListApi = (params)=>getAction("/property-central/integral/integralRecord/ownerIntegralList",params);
const queryByIdIntegralDetailApi = (params)=>getAction("/property-central/integral/ownerIntegral/queryById",params);
// 退款
const refundQueryByIdApi = (params)=>getAction("/property-community/order/paymentOrder/queryById",params);
const auditRefundOrderApi = (params)=>postAction("/property-community/order/paymentOrder/auditRefundOrder",params);
const confirmRefundOrderApi = (params)=>getAction(`/property-community/order/paymentOrder/confirmRefundOrder/${params.id}/${params.status}`,{});
const getPropertyAdvEditApi = (params)=>postAction("/property-central/property/propertyAdv/edit",params); const getPropertyAdvEditApi = (params)=>postAction("/property-central/property/propertyAdv/edit",params);
const proPertyChargruleApi = (params)=>getAction(`/property-central/property/propertyChargrule/freezeOrThaw/${params.id}/${params.status}`,{}); const proPertyChargruleApi = (params)=>getAction(`/property-central/property/propertyChargrule/freezeOrThaw/${params.id}/${params.status}`,{});
export { export {
getDataStatisticsApi, getDataStatisticsApi,
shareBoardApi,
addRole, addRole,
editRole, editRole,
checkRoleCode, checkRoleCode,
...@@ -196,6 +231,28 @@ export { ...@@ -196,6 +231,28 @@ export {
getCouncilsDetailApi, getCouncilsDetailApi,
auditCouncilsApi, auditCouncilsApi,
freezeOrCouncilsApi, freezeOrCouncilsApi,
getDetailReconciliationApi,
getAccountListByIdApi,
companyAuditAccountPageApi,
getCommunityRecordListApi,
appropriationApi,
getRuleDayDetailApi,
editRuleDayDetailApi,
addRuleDayDetailApi,
getShareRuleDetailApi,
editShareRuleDetailApi,
updateRuleStatusApi,
getshareBenefitApi,
auditshareBenefitApi,
getshareBalanceApi,
auditshareBalanceApi,
editIntegralApi,
freezeIntegral,
ownerIntegralListApi,
queryByIdIntegralDetailApi,
refundQueryByIdApi,
auditRefundOrderApi,
confirmRefundOrderApi
} }
......
// 与业主关系
export const RELATION_SHIP = [
{label: '业主', value: 'self'},
{label: '租户', value: 'tenant'},
{label: '亲人', value: 'relative'},
{label: '朋友', value: 'friend'},
{label: '其他', value: 'other'}
]
// 紧急程度
export const URGENT_DEGREE = [
{label: '一般', value: 'usual'},
{label: '紧急', value: 'urgent'}
]
// 是否定时发布
export const SCHEDULED_RELEASE = [
{label: '是', value: 1},
{label: '否', value: 0}
]
// 公告状态
export const NOTICE_STATUS = [
{label: '已发布', value: 'published'},
{label: '待发布', value: 'waitPublish'}
]
// 付费周期
export const CHARGING_CYCLE = [
{label: '每月', value: '1'},
{label: '每季度', value: '2'},
{label: '每年', value: '3'},
{label: '一次性付清', value: '4'},
{label: '预付', value: '5'}
]
// 物业对账审核状态
export const COMPANY_AUDIT_STATUS = [
{label: '物业待审核', value: 'companyWaitAudit'},
{label: '物业审核通过', value: 'companyAuditPass'},
{label: '物业审核驳回', value: 'companyRefuse'}
]
// 总平台对账审核状态
export const CENTRAL_AUDIT_STATUS = [
{label: '总平台待审核', value: 'centralWaitAudit'},
{label: '总平台审核通过', value: 'centralAuditPass'},
{label: '总平台审核驳回', value: 'centralRefuse'}
]
// 分利对账审核状态
export const FENLICENTRAL_AUDIT_STATUS = [
{label: '未对账', value: '1'},
{label: '对账待审核', value: '2'},
{label: '对账完成', value: '3'},
{label: '对账拒绝', value: '4'}
]
// 分利对账結算状态
export const BALANCE_STATUS = [
{label: '结算待审核', value: '2'},
{label: '已结算', value: '3'},
{label: '结算驳回', value: '4'}
]
// 总平台拨款状态
export const APPROPRIATION_STATUS = [
{label: '待拨款', value: 'waitAppropriation'},
{label: '拨款成功', value: 'appropriationed'}
]
// 退款状态
export const REFUND_STATUS = [
{label: '已付款', value: 'paid'},
{label: '退款待审核', value: 'refundWaitAudit'},
{label: '退款驳回', value: 'refundReject'},
{label: '退款中', value: 'refundRunning'},
{label: '已退款', value: 'refunded'}
]
/**
* 翻译字段值对应的文本
* @param children
* @returns string
*/
export function filterDictTextByStatic(dictList, value) {
if(!dictList || dictList.length === 0){
return;
}
let obj = dictList.find(item=>item.value == value)
return obj ? obj.label : ''
}
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4> <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
<v-chart :forceFit="true" :height="height" :data="dataSource" :scale="scale" :padding="padding"> <v-chart :forceFit="true" :height="height" :data="dataSource" :scale="scale" :padding="padding">
<v-tooltip/> <v-tooltip/>
<v-axis/> <v-axis position="right" />
<v-bar position="x*y"/> <v-bar position="x*y"/>
</v-chart> </v-chart>
</div> </div>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
} }
}, },
data() { data() {
return { padding: ['auto', 'auto', '40', '50'] } return { padding: ['auto', 'auto', '50', '40'] }
}, },
computed: { computed: {
scale() { scale() {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
height="254" height="254"
:data="datasource" :data="datasource"
:forceFit="true" :forceFit="true"
:padding="['auto', 'auto', '40', '50']"> :padding="['auto', 'auto', '50', '40']">
<v-tooltip /> <v-tooltip />
<v-axis /> <v-axis />
<v-bar position="x*y"/> <v-bar position="x*y"/>
......
<template> <template>
<div :style="{ padding: '0 0 32px 32px' }"> <div :style="{ padding: '0 0 32px 0' }">
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4> <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
<v-chart :force-fit="true" :height="height" :data="data" :scale="scale" :onClick="handleClick"> <v-chart :force-fit="true" :height="height" :data="data" :scale="scale" :onClick="handleClick" :padding="padding">
<v-tooltip/> <v-tooltip/>
<v-axis/> <v-axis/>
<v-legend/> <v-legend/>
...@@ -62,7 +62,8 @@ ...@@ -62,7 +62,8 @@
min: 0, min: 0,
max: 1 max: 1
}], }],
style: { stroke: '#fff', lineWidth: 1 } style: { stroke: '#fff', lineWidth: 1 },
padding: ['auto', 'auto', '60', '30']
} }
}, },
computed: { computed: {
......
<template>
<j-modal
:title="title"
:width="modalWidth"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
wrapClassName="j-popup-modal"
@ok="handleSubmit"
@cancel="handleCancel"
cancelText="关闭">
<!-- <div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchByquery">
<a-row :gutter="24" v-if="showSearchFlag">
<template v-for="(item,index) in queryInfo">
<template v-if=" item.hidden==='1' ">
<a-col :md="8" :sm="24" :key=" 'query'+index " v-show="toggleSearchStatus">
<online-query-form-item :queryParam="queryParam" :item="item" :dictOptions="dictOptions"></online-query-form-item>
</a-col>
</template>
<template v-else>
<a-col :md="8" :sm="24" :key=" 'query'+index ">
<online-query-form-item :queryParam="queryParam" :item="item" :dictOptions="dictOptions"></online-query-form-item>
</a-col>
</template>
</template>
<a-col :md="8" :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchByquery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>
已选择&nbsp;<a style="font-weight: 600">{{ table.selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
<a v-if="!showSearchFlag" style="margin-left: 24px" @click="onlyReload">刷新</a>
</div> -->
<a-table
ref="table"
size="middle"
bordered
:rowKey="combineRowKey"
:columns="columns"
:dataSource="table.dataSource"
:pagination="table.pagination"
:loading="table.loading"
:rowSelection="{type:rowSelectionType,fixed:true,selectedRowKeys: table.selectedRowKeys, onChange: handleChangeInTableSelect}"
@change="handleChangeInTable"
style="min-height: 300px"
:scroll="tableScroll"
:customRow="clickThenCheck">
</a-table>
</j-modal>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import {filterObj} from '@/utils/util'
import { filterMultiDictText } from '@/components/dict/JDictSelectUtil'
import { httpGroupRequest } from '@/api/GroupRequest.js'
import md5 from 'md5'
export default {
name: 'JPopupOnlReport',
props: ['title','url', 'columns', 'multi', 'modalWidth'],
data(){
return {
visible:false,
confirmLoading: false,
queryInfo:[],
toggleSearchStatus:false,
queryParam:{
},
dictOptions: {},
table: {
loading: false,
// 表头
columns: [],
//数据集
dataSource: [],
// 选择器
selectedRowKeys: [],
selectionRows: [],
// 分页参数
pagination: {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条'
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
}
},
cgRpConfigId:"",
tableScroll:{x:true}
}
},
mounted() {
this.loadData();
},
computed:{
showSearchFlag(){
return this.queryInfo && this.queryInfo.length>0
},
// 行选择框类型,根据是否多选来控制显示为单选框还是多选框
rowSelectionType() {
return this.multi ? 'checkbox' : 'radio'
},
},
methods:{
loadColumnsInfo(){
httpGroupRequest(() => getAction(this.url)).then(res => {
if(res.success){
if(res.result.length > 0){
this.table.dataSource = res.result
}else if(res.result.records.length > 0){
this.table.dataSource = res.result.records
}
} else {
this.$error({
title: '出错了',
content: (<p>Popup初始化失败,请检查你的配置或稍后重试!<br/>错误信息如下:{res.message}</p>),
onOk: () => this.close()
})
}
})
},
initQueryInfo() {
let url = `${this.url.getQueryInfo}${this.cgRpConfigId}`
//缓存key
let groupIdKey
if (this.groupId) {
groupIdKey = this.groupId + url
}
httpGroupRequest(() => getAction(url), groupIdKey).then((res) => {
// console.log("获取查询条件", res);
if (res.success) {
this.queryInfo = res.result
//查询条件加载后再请求数据
this.loadData(1)
} else {
this.$message.warning(res.message)
}
})
},
loadData(arg) {
if (arg == 1) {
this.table.pagination.current = 1
}
let params = this.getQueryParams();//查询条件
this.table.loading = true
httpGroupRequest(() => getAction(this.url, params)).then(res => {
this.table.loading = false
let data = res.result
if (data) {
this.table.pagination.total = Number(data.total)
this.table.dataSource = data.records
} else {
this.table.pagination.total = 0
this.table.dataSource = []
}
})
},
getQueryParams() {
let param = {}
param.pageNo = this.table.pagination.current;
param.pageSize = this.table.pagination.pageSize;
return param
},
handleChangeInTableSelect(selectedRowKeys, selectionRows) {
//update-begin-author:taoyan date:2020902 for:【issue】开源online的几个问题 LOWCOD-844
if(!selectedRowKeys || selectedRowKeys.length==0){
this.table.selectionRows = []
}else if(selectedRowKeys.length == selectionRows.length){
this.table.selectionRows = selectionRows
}else{
//当两者长度不一的时候 需要判断
let keys = this.table.selectedRowKeys
let rows = this.table.selectionRows;
//这个循环 添加新的记录
for(let i=0;i<selectionRows.length;i++){
let combineKey = this.combineRowKey(selectionRows[i])
if(keys.indexOf(combineKey)<0){
//如果 原来的key 不包含当前记录 push
rows.push(selectionRows[i])
}
}
//这个循环 移除取消选中的数据
this.table.selectionRows = rows.filter(item=>{
let combineKey = this.combineRowKey(item)
return selectedRowKeys.indexOf(combineKey)>=0
})
}
//update-end-author:taoyan date:2020902 for:【issue】开源online的几个问题 LOWCOD-844
this.table.selectedRowKeys = selectedRowKeys
},
handleChangeInTable(pagination, filters, sorter) {
this.table.pagination = pagination
this.loadData()
},
handleCancel() {
this.close()
},
handleSubmit() {
if(!this.multi){
if(this.table.selectionRows && this.table.selectionRows.length>1){
this.$message.warning("请选择一条记录")
return false
}
}
if(!this.table.selectionRows || this.table.selectionRows.length==0){
this.$message.warning("请选择一条记录")
return false
}
this.$emit('ok', this.table.selectionRows);
this.close()
},
close() {
this.$emit('close');
this.visible = false;
this.onClearSelected()
},
show(){
this.visible = true
this.loadColumnsInfo()
},
handleToggleSearch(){
this.toggleSearchStatus = !this.toggleSearchStatus;
},
searchByquery(){
this.loadData(1);
},
onlyReload(){
this.loadData();
},
searchReset(){
Object.keys(this.queryParam).forEach(key=>{
this.queryParam[key]=""
})
this.loadData(1);
},
onClearSelected(){
this.table.selectedRowKeys = []
this.table.selectionRows = []
},
combineRowKey(record){
let res = ''
Object.keys(record).forEach(key=>{
//update-begin---author:liusq Date:20210203 for:pop选择器列主键问题 issues/I29P9Q------------
if(key=='id'){
res=record[key]+res
}else{
res+=record[key]
}
//update-end---author:liusq Date:20210203 for:pop选择器列主键问题 issues/I29P9Q------------
})
// update-begin---author:taoyan Date:20211025 for:jpopup 表格key重复BUG /issues/3121
res = md5(res)
/*if(res.length>50){
res = res.substring(0,50)
}*/
// update-end---author:taoyan Date:20211025 for:jpopup 表格key重复BUG /issues/3121
return res
},
clickThenCheck(record){
return {
on: {
click: () => {
let rowKey = this.combineRowKey(record)
if(!this.table.selectedRowKeys || this.table.selectedRowKeys.length==0){
let arr1=[],arr2=[]
arr1.push(record)
arr2.push(rowKey)
this.table.selectedRowKeys=arr2
this.table.selectionRows=arr1
}else{
if(this.table.selectedRowKeys.indexOf(rowKey)<0){
this.table.selectedRowKeys.push(rowKey)
this.table.selectionRows.push(record)
}else{
let rowKey_index = this.table.selectedRowKeys.indexOf(rowKey)
this.table.selectedRowKeys.splice(rowKey_index,1);
this.table.selectionRows.splice(rowKey_index,1);
}
}
// 判断是否允许多选,如果不允许多选,就只存储最后一个选中的行
if (!this.multi && this.table.selectedRowKeys.length > 1) {
this.table.selectionRows = [this.table.selectionRows.pop()]
this.table.selectedRowKeys = [this.table.selectedRowKeys.pop()]
}
}
}
}
},
//防止字典中有垃圾数据
initDictOptionData(dictOptions){
let obj = { }
Object.keys(dictOptions).map(k=>{
obj[k] = dictOptions[k].filter(item=>{
return item!=null
});
});
this.dictOptions = obj
}
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="components-input-demo-presuffix">
<!---->
<a-input v-if="showModal" @click="openModal" :placeholder="placeholder" v-model="showText" readOnly :disabled="disabled">
<a-icon slot="prefix" :type="icon" :title="title"/>
<a-icon v-if="showText" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
</a-input>
<j-popup-onl-report
ref="jPopupOnlReport"
:url="url"
:title="title"
:columns="columns"
:multi="multi"
:modalWidth="modalWidth"
@ok="callBack"
/>
</div>
</template>
<script>
import JPopupOnlReport from './modal/JPopupOnlReport'
export default {
name: 'JPopup',
components: {
JPopupOnlReport
},
props: {
showModal: {
type: Boolean,
required: false,
default: true
},
title: {
type: String,
default: '',
required: false
},
url: {
type: String,
default: '',
required: false
},
columns: {
type: Array,
default: [],
required: true
},
placeholder: {
type: String,
default: '请选择',
required: false
},
modalWidth: {
type: Number,
default: 1200,
required: false
},
value: {
type: String,
required: false
},
triggerChange: {
type: Boolean,
required: false,
default: true
},
disabled: {
type: Boolean,
required: false,
default: false
},
multi: {
type: Boolean,
required: false,
default: false
},
spliter:{
type: String,
required: false,
default: ','
},
icon: {
type: String,
default: 'cluster',
required: false
}
},
data() {
return {
showText: ''
}
},
watch: {
value: {
immediate: true,
handler: function(val) {
if (!val) {
this.showText = ''
} else {
this.showText = val.split(this.spliter).join(',')
}
}
}
},
created() {
},
mounted() {
},
methods: {
openModal() {
if (this.disabled === false) {
this.$refs.jPopupOnlReport.show()
}
},
handleEmpty() {
// 禁用时,不允许清空内容
if (this.disabled) {
return
}
this.showText = ''
if (this.triggerChange) {
this.$emit('callback', '')
} else {
this.$emit('input', '', '')
}
},
callBack(rows) {
if (this.triggerChange) {
this.$emit('callback', rows)
} else {
this.$emit('input', str, rows)
}
}
}
}
</script>
<style scoped>
.components-input-demo-presuffix .anticon-close-circle {
cursor: pointer;
color: #ccc;
transition: color 0.3s;
font-size: 12px;
}
.components-input-demo-presuffix .anticon-close-circle:hover {
color: #f5222d;
}
.components-input-demo-presuffix .anticon-close-circle:active {
color: #666;
}
</style>
\ No newline at end of file
...@@ -218,9 +218,9 @@ export const JeecgListMixin = { ...@@ -218,9 +218,9 @@ export const JeecgListMixin = {
} }
console.log('currentIndex',currentIndex) console.log('currentIndex',currentIndex)
}, },
handleEdit: function (record) { handleEdit: function (record, title) {
this.$refs.modalForm.edit(record); this.$refs.modalForm.edit(record);
this.$refs.modalForm.title = "编辑"; this.$refs.modalForm.title = title || "编辑";
this.$refs.modalForm.disableSubmit = false; this.$refs.modalForm.disableSubmit = false;
}, },
handleAdd: function () { handleAdd: function () {
......
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>{{title}}</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine('4')" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine('3')" v-if="pageType == '2'">审核通过</a-button>
</div>
</div>
<j-form-container :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="订单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.id" placeholder="请输入订单编号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入提交时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="账户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buyerName">
<a-input v-model="model.buyerName" placeholder="请输入账户"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input v-model="model.createBy" placeholder="请输入提交人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoney">
<a-input-number v-model="model.totalMoney" :min="1" placeholder="请输入订单金额" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="支付方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payWay">
<a-input v-model="model.payWay" placeholder="请输入支付方式"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单来源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderSourceName">
<a-input v-model="model.orderSourceName" placeholder="请输入订单来源"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationStatusName">
<a-input v-model="model.reconciliationStatusName" placeholder="请输入订单状态"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属平台" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入所属平台"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityName">
<a-input v-model="model.communityName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="商铺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shopName">
<a-input v-model="model.shopName" placeholder="请输入商铺"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partnersName">
<a-input v-model="model.partnersName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs: { span: 24 }, sm: { span: 3 } }" :wrapperCol="wrapperCol" prop="remarks">
<a-input v-model="model.remarks" placeholder="请输入备注"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="balanceStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<a-modal v-model="remarksVisible" :title="`${remarksModel.reconciliationStatus === '3' ? '通过' : '驳回'}说明`" @ok="submitHandleOk">
<a-form-model ref="form" :model="remarksModel">
<a-row>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs: { span: 24 },sm: { span: 3 } }" :wrapperCol="{ xs: { span: 24 }, sm: { span: 20 } }" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="remarksModel.remarks" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</a-spin>
</template>
<script>
import { getshareBenefitApi, auditshareBenefitApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
const columns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '付款状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
scopedSlots: { customRender: 'balanceStatus' }
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
data() {
return {
title: '',
pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
columns: columns,
dataSource: [],
remarksVisible: false,
remarksModel: {
remarks: '',
reconciliationStatus: ''
}
}
},
methods: {
async getPageDetail() {
let { result } = await getshareBenefitApi({ id: this.$route.query.id })
result.shareBenefit['orderSourceName'] = result.shareBenefit.orderSource === 'miniapp' ? '小程序' : 'pc'
result.shareBenefit['reconciliationStatusName'] = filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, result.shareBenefit.reconciliationStatus)
this.model = {...result.shareBenefit}
this.dataSource = [...result.list]
},
onCancel() {
this.closeCurrent()
},
onExamine(status) {
this.remarksModel.reconciliationStatus = status
this.remarksVisible = true
},
submitHandleOk() {
auditshareBenefitApi({
id: this.$route.query.id,
...this.remarksModel
}).then((res) => {
this.$message.success(`${this.remarksModel.reconciliationStatus === '3' ? '审核通过' : '审核驳回'}成功`)
this.closeCurrent()
})
}
},
mounted() {
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '详情'
} else {
this.title = '审核'
}
if (this.$route.query.id) {
this.getPageDetail()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="订单编号">
<j-input placeholder="请输入订单编号" v-model="queryParam.orderNum"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交开始时间">
<a-date-picker placeholder="提交开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交结束时间">
<a-date-picker placeholder="提交结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button> -->
<!-- <a-button icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="onBatchVerify"><a-icon type="audit" />批量审核</a-menu-item>
</a-menu>
<a-button type="primary" style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="orderSource">小程序</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.reconciliationStatus === 2">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
</a-card>
</template>
<script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '订单编号',
dataIndex: 'orderNum',
key: 'orderNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'buyerName',
key: 'buyerName',
align: 'center',
},
{
title: '分利金额',
dataIndex: 'shareMoney',
key: 'shareMoney',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payWay',
key: 'payWay',
align: 'center'
},
{
title: '订单来源',
dataIndex: 'orderSource',
key: 'orderSource',
align: 'center',
scopedSlots: { customRender: 'orderSource' },
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '合作伙伴',
dataIndex: 'partnersName',
key: 'partnersName',
align: 'center',
},
{
title: '商铺',
dataIndex: 'shopName',
key: 'shopName',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
auditList: FENLICENTRAL_AUDIT_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBenefit/list'
}
}
},
methods: {
propertyDetails(type, id) {
this.$router.push({
path: '/benefits/ReconciliationDetails?id=' + id +'&type=' + type,
})
},
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onBatchVerify(record) {
let that = this
this.$confirm({
title: '确认批量审核此?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'auditPass',
// }).then((res) => {
// that.searchQuery()
// })
},
onCancel() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.searchQuery()
// })
},
})
},
onStatus(record) {
let that = this
this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
onOk() {
return freezeOrPropertyApi({
id: record.id,
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => {
that.searchQuery()
})
},
onCancel() {},
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
},
// loadData() {
// console.log('不请求')
// }
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>{{title}}</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine('4')" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine('3')" v-if="pageType == '2'">审核通过</a-button>
<!-- <a-button type="primary" @click="onSettlement()" v-if="pageType == '3'">确认</a-button> -->
</div>
</div>
<a-card title="请选择对账" v-if="pageType === '3'">
<!-- <div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="住户">
<j-input placeholder="请输入住户" v-model="queryParam.residentName"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="收费类型">
<a-select style="width: 100%" v-model="queryParam.chargeTypeName" placeholder="请选择收费类型">
<a-select-option v-for="item in chargeTypeOptions" :key="item.typeCode" :value="item.typeName">{{item.typeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div> -->
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
已选择 <a style="font-weight: 600"> {{ selectionRows.length }}</a>个对账单,共计<span style="color:red">{{totalMoney}}</span>
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-row>
<a-table ref="table" size="middle" :scroll="{ x: true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="roomId" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
</a-table>
</a-row>
</a-card>
<j-form-container v-else :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="结算单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceNum">
<a-input v-model="model.balanceNum" placeholder="请输入结算单号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入提交时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input v-model="model.createBy" placeholder="请输入提交人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="结算金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceMoney">
<a-input-number v-model="model.balanceMoney" :min="1" placeholder="请输入结算金额" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="结算方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceWay">
<a-input v-model="model.balanceWay" placeholder="请输入结算方式"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="对账信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
</a-table>
</div>
</a-row>
</a-card>
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="handleColumns"
:dataSource="handleDataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="balanceStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<a-modal v-model="remarksVisible" :title="`${remarksModel.balanceStatus === '3' ? '通过' : '驳回'}说明`" @ok="submitHandleOk">
<a-form-model ref="form" :model="remarksModel">
<a-row>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs: { span: 24 },sm: { span: 3 } }" :wrapperCol="{ xs: { span: 24 }, sm: { span: 20 } }" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="remarksModel.remarks" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</a-spin>
</template>
<script>
import { getshareBalanceApi, auditshareBalanceApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS, BALANCE_STATUS } from '@/assets/static.js'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
const columns = [
{
title: '订单编号',
dataIndex: 'orderNum',
key: 'orderNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'buyerName',
key: 'buyerName',
align: 'center',
},
{
title: '订单金额',
dataIndex: 'totalMoney',
key: 'totalMoney',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payWay',
key: 'payWay',
align: 'center',
},
{
title: '订单来源',
dataIndex: 'orderSource',
key: 'orderSource',
align: 'center',
customRender: function (text) {
return '小程序'
},
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
},
]
const handleColumns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(BALANCE_STATUS, text)
}
},
{
title: '付款状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
scopedSlots: { customRender: 'balanceStatus' }
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
mixins: [JeecgListMixin],
data() {
return {
title: '',
pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
url: {
add: '/property-central/property/propertySettled/add',
list: '/property-central/partners/shareBenefit/listBalance?platformType=central'
},
disableMixinCreated: true,
columns: columns,
handleColumns: handleColumns,
handleDataSource: [],
remarksVisible: false,
remarksModel: {
remarks: '',
balanceStatus: ''
}
}
},
computed: {
totalMoney() {
return this.selectionRows.reduce((prev,cur,index,arr)=> {
return parseFloat((prev + cur.totalMoney).toFixed(2))
}, 0)
}
},
methods: {
onCheckboxProps(record) {
let props = {
disabled: record.paymentStatus === 'paid',
name: record.chargeTypeName,
}
return props
},
async getPageDetail() {
let { result } = await getshareBalanceApi({ id: this.$route.query.id })
this.edit(result)
},
onCancel() {
this.closeCurrent()
},
edit(record) {
this.model = Object.assign({}, record.shareBalance)
this.dataSource = [...record.shareBenefitsList]
this.handleDataSource = [...record.list]
},
onExamine(status) {
this.remarksModel.balanceStatus = status
this.remarksVisible = true
},
submitHandleOk() {
auditshareBalanceApi({
id: this.$route.query.id,
...this.remarksModel
}).then((res) => {
this.$message.success(`${this.remarksModel.balanceStatus === '3' ? '审核通过' : '审核驳回'}成功`)
this.closeCurrent()
})
},
onSettlement() {
if(this.selectionRows.length === 0) {
this.$message.warning('请选择对账单!')
return
}
let shareBenefitIds = this.selectionRows.map(item=>item.id).join(',')
this.handleEdit({balanceMoney: this.totalMoney, shareBenefitIds}, '申请结算')
},
submitForm() {
const that = this
// 触发表单验证
this.$refs.form.validate((valid) => {
if (valid) {
that.confirmLoading = true
let httpurl = ''
let method = ''
if (!this.model.id) {
httpurl += this.url.add
method = 'post'
} else {
httpurl += this.url.edit
method = 'put'
}
//this.model.registAdress = undefined
httpAction(httpurl, this.model, method)
.then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
this.closeCurrent()
} else {
that.$message.warning(res.message)
}
})
.finally(() => {
that.confirmLoading = false
})
}
})
}
},
mounted() {
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '详情'
this.getPageDetail()
} else if (this.$route.query.type == '2') {
this.title = '审核'
this.getPageDetail()
} else if (this.$route.query.type == '3') {
this.title = '结账申请'
this.loadData()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="结算编号">
<j-input placeholder="请输入结算编号" v-model="queryParam.balanceNum"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费开始时间">
<a-date-picker placeholder="缴费开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费结束时间">
<a-date-picker placeholder="缴费结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button> -->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="empowerEndDate" slot-scope="text, record">
<span v-if="record.empowerEndDate">{{record.empowerBeginDate}}{{record.empowerEndDate}} </span>
</span>
<span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.balanceStatus === 2">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
</a-card>
</template>
<script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, BALANCE_STATUS } from '@/assets/static.js'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'balanceDate',
key: 'balanceDate',
align: 'center',
},
{
title: '身份',
dataIndex: 'platformName',
key: 'platformName',
align: 'center',
},
{
title: '提交人',
dataIndex: 'updateBy',
key: 'updateBy',
align: 'center',
},
{
title: '结算总金额',
dataIndex: 'balanceMoney',
key: 'balanceMoney',
align: 'center',
},
{
title: '账单数量',
dataIndex: 'balanceCount',
key: 'balanceCount',
align: 'center',
},
{
title: '结算方式',
dataIndex: 'balanceWay',
key: 'balanceWay',
align: 'center',
},
{
title: '结算状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(BALANCE_STATUS, text)
}
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
auditList: BALANCE_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBalance/list',
}
}
},
methods: {
propertyDetails(type, id) {
this.$router.push({
path: '/benefits/SettlementDetails?id=' + id +'&type=' + type,
})
},
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onExamine(record) {
let that = this
this.$confirm({
title: '确认审核此物业?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
return auditPropertyApi({
id: record.id,
auditStatus: 'auditPass',
}).then((res) => {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse',
}).then((res) => {
that.searchQuery()
})
},
})
},
onStatus(record) {
let that = this
this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
onOk() {
return freezeOrPropertyApi({
id: record.id,
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => {
that.searchQuery()
})
},
onCancel() {},
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
}
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>详情</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<!-- <a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button> -->
</div>
</div>
<j-form-container :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="订单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.id" placeholder="请输入订单编号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入提交时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="账户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buyerName">
<a-input v-model="model.buyerName" placeholder="请输入账户"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input v-model="model.createBy" placeholder="请输入提交人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoney">
<a-input-number v-model="model.totalMoney" :min="1" placeholder="请输入订单金额" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="支付方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payWay">
<a-input v-model="model.payWay" placeholder="请输入支付方式"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单来源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderSourceName">
<a-input v-model="model.orderSourceName" placeholder="请输入订单来源"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationStatusName">
<a-input v-model="model.reconciliationStatusName" placeholder="请输入订单状态"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属平台" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入所属平台"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityName">
<a-input v-model="model.communityName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="商铺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shopName">
<a-input v-model="model.shopName" placeholder="请输入商铺"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partnersName">
<a-input v-model="model.partnersName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs: { span: 24 }, sm: { span: 3 } }" :wrapperCol="wrapperCol" prop="remarks">
<a-input v-model="model.remarks" placeholder="请输入备注"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="balanceStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { getshareBenefitApi, auditshareBenefitApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
const columns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '付款状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
scopedSlots: { customRender: 'balanceStatus' }
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
data() {
return {
// title: '',
// pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
columns: columns,
dataSource: []
}
},
methods: {
async getPageDetail() {
let { result } = await getshareBenefitApi({ id: this.$route.query.id })
result.shareBenefit['orderSourceName'] = result.shareBenefit.orderSource === 'miniapp' ? '小程序' : 'pc'
result.shareBenefit['reconciliationStatusName'] = filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, result.shareBenefit.reconciliationStatus)
this.model = {...result.shareBenefit}
this.dataSource = [...result.list]
},
onCancel() {
this.closeCurrent()
},
onExamine(type) {
const that = this
if (type == 1) {
return auditshareBenefitApi({
id: this.$route.query.id,
reconciliationStatus: '3',
remarks: ''
}).then((res) => {
that.$message.success('审核通过成功')
that.$emit('ok')
this.closeCurrent()
})
} else if (type == 2) {
return auditshareBenefitApi({
id: this.$route.query.id,
reconciliationStatus: '4',
remarks: ''
}).then((res) => {
that.$message.success('审核驳回成功')
this.closeCurrent()
})
}
}
},
mounted() {
// this.pageType = this.$route.query.type
// if (this.$route.query.type == '1') {
// this.title = '详情'
// } else {
// this.title = '审核'
// }
if (this.$route.query.id) {
this.getPageDetail()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="订单编号">
<j-input placeholder="请输入订单编号" v-model="queryParam.orderNum"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交开始时间">
<a-date-picker placeholder="提交开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交结束时间">
<a-date-picker placeholder="提交结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<!-- <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a> -->
以下账单,展示 <span style="color:red">{{showDay}}</span> 天前的账单金额
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="orderSource">小程序</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(record.id)">详情</a>
<template v-if="record.isShow === '1' && record.reconciliationStatus === 1 || record.reconciliationStatus === 4">
<a-divider type="vertical" />
<a href="javascript:;" @click="handleEdit(record, '申请对账')">申请对账</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
<property-adv-modal ref="modalForm" @ok="modalFormOk"></property-adv-modal>
</a-card>
</template>
<script>
import { getRuleDayDetailApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
import PropertyAdvModal from './modules/PropertyAdvModal'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '订单编号',
dataIndex: 'orderNum',
key: 'orderNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'buyerName',
key: 'buyerName',
align: 'center',
},
{
title: '订单金额',
dataIndex: 'totalMoney',
key: 'totalMoney',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payWay',
key: 'payWay',
align: 'center'
},
{
title: '订单来源',
dataIndex: 'orderSource',
key: 'orderSource',
align: 'center',
scopedSlots: { customRender: 'orderSource' },
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '合作伙伴',
dataIndex: 'partnersName',
key: 'partnersName',
align: 'center',
},
{
title: '商铺',
dataIndex: 'shopName',
key: 'shopName',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {
PropertyAdvModal,
},
data() {
return {
showDay: 7,
auditList: FENLICENTRAL_AUDIT_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBenefit/list?platformType=central'
}
}
},
methods: {
propertyDetails(id) {
this.$router.push({
path: '/benefitsAudit/ReconciliationDetails?id=' + id
})
}
},
created() {
getRuleDayDetailApi().then(res=> {
this.showDay = res.result.days
})
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="对账总金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoneyName">
<a-input v-model="model.totalMoneyName" placeholder="请输入对账总金额" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="对账日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入对账日期" disabled></a-input>
</a-form-model-item>
</a-col>
<!-- <a-col :span="24">
<a-form-model-item label="广告有效期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advDate">
<a-range-picker valueFormat="YYYY-MM-DD" :placeholder="['广告有效开始时间', '请选择广告有效结束时间']" v-model="model.advDate" style="width: 100%" />
</a-form-model-item>
</a-col> -->
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="model.remarks" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'PropertyAdvForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {},
url: {
add: "/property-central/partners/shareBenefit/reconciliation"
},
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record, {totalMoneyName: ${record.totalMoney}`, remarks: ''});
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let obj = {
id: this.model.id,
remarks: this.model.remarks
}
httpAction(this.url.add, obj, 'post').then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-adv-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-adv-form>
</j-modal>
</template>
<script>
import PropertyAdvForm from './PropertyAdvForm'
export default {
name: 'PropertyAdvModal',
components: {
PropertyAdvForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>{{title}}</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button>
<a-button type="primary" @click="onSettlement()" v-if="pageType == '3'">确认</a-button>
</div>
</div>
<a-card title="请选择对账" v-if="pageType === '3'">
<!-- <div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="住户">
<j-input placeholder="请输入住户" v-model="queryParam.residentName"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="收费类型">
<a-select style="width: 100%" v-model="queryParam.chargeTypeName" placeholder="请选择收费类型">
<a-select-option v-for="item in chargeTypeOptions" :key="item.typeCode" :value="item.typeName">{{item.typeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div> -->
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
已选择 <a style="font-weight: 600"> {{ selectionRows.length }}</a>个对账单,共计<span style="color:red">{{totalMoney}}</span>
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-row>
<a-table ref="table" size="middle" :scroll="{ x: true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
}" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="roomId" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
</a-table>
</a-row>
</a-card>
<j-form-container v-else :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="结算单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceNum">
<a-input v-model="model.balanceNum" placeholder="请输入结算单号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入提交时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input v-model="model.createBy" placeholder="请输入提交人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="结算金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceMoney">
<a-input-number v-model="model.balanceMoney" :min="1" placeholder="请输入结算金额" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="结算方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceWay">
<a-input v-model="model.balanceWay" placeholder="请输入结算方式"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="对账信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
</a-table>
</div>
</a-row>
</a-card>
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="handleColumns"
:dataSource="handleDataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="balanceStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<property-adv-modal ref="modalForm" @ok="modalFormOk"></property-adv-modal>
</a-spin>
</template>
<script>
import { getshareBalanceApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import PropertyAdvModal from './modules/PropertyAdvModal'
const columns = [
{
title: '订单编号',
dataIndex: 'orderNum',
key: 'orderNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'buyerName',
key: 'buyerName',
align: 'center',
},
{
title: '订单金额',
dataIndex: 'totalMoney',
key: 'totalMoney',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payWay',
key: 'payWay',
align: 'center',
},
{
title: '订单来源',
dataIndex: 'orderSource',
key: 'orderSource',
align: 'center',
customRender: function (text) {
return '小程序'
},
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
},
]
const handleColumns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '付款状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
scopedSlots: { customRender: 'balanceStatus' }
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
mixins: [JeecgListMixin],
components: {
PropertyAdvModal,
},
data() {
return {
title: '',
pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
url: {
add: '/property-central/property/propertySettled/add',
// list: '/property-central/partners/shareBenefit/list?reconciliationStatus=3'
list: '/property-central/partners/shareBenefit/listBalance?platformType=central'
},
disableMixinCreated: true,
columns: columns,
handleColumns: handleColumns,
handleDataSource: [],
}
},
computed: {
totalMoney() {
return this.selectionRows.reduce((prev,cur,index,arr)=> {
return parseFloat((prev + cur.totalMoney).toFixed(2))
}, 0)
}
},
methods: {
onCheckboxProps(record) {
let props = {
disabled: record.paymentStatus === 'paid',
name: record.chargeTypeName,
}
return props
},
async getPageDetail() {
let { result } = await getshareBalanceApi({ id: this.$route.query.id })
this.edit(result)
},
onCancel() {
this.closeCurrent()
},
edit(record) {
this.model = Object.assign({}, record.shareBalance)
this.dataSource = [...record.shareBenefitsList]
this.handleDataSource = [...record.list]
},
onExamine(type) {
this.closeCurrent()
// const that = this
// if (type == 1) {
// return auditPropertyApi({
// id: this.$route.query.id,
// auditStatus: 'auditPass',
// }).then((res) => {
// that.$message.success('审核通过成功')
// that.$emit('ok')
// this.closeCurrent()
// })
// } else if (type == 2) {
// return auditPropertyApi({
// id: this.$route.query.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.$message.success('审核驳回成功')
// this.closeCurrent()
// })
// }
},
onSettlement() {
if(this.selectionRows.length === 0) {
this.$message.warning('请选择对账单!')
return
}
let shareBenefitIds = this.selectionRows.map(item=>item.id).join(',')
this.handleEdit({balanceMoney: this.totalMoney, shareBenefitIds}, '申请结算')
},
submitForm() {
const that = this
// 触发表单验证
this.$refs.form.validate((valid) => {
if (valid) {
that.confirmLoading = true
let httpurl = ''
let method = ''
if (!this.model.id) {
httpurl += this.url.add
method = 'post'
} else {
httpurl += this.url.edit
method = 'put'
}
//this.model.registAdress = undefined
httpAction(httpurl, this.model, method)
.then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
this.closeCurrent()
} else {
that.$message.warning(res.message)
}
})
.finally(() => {
that.confirmLoading = false
})
}
})
}
},
mounted() {
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '详情'
this.getPageDetail()
} else if (this.$route.query.type == '2') {
this.title = '审核'
this.getPageDetail()
} else if (this.$route.query.type == '3') {
this.title = '结账申请'
this.loadData()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="结算编号">
<j-input placeholder="请输入结算编号" v-model="queryParam.balanceNum"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费开始时间">
<a-date-picker placeholder="缴费开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费结束时间">
<a-date-picker placeholder="缴费结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="propertyDetails(3)" type="primary" icon="plus">申请结算</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="empowerEndDate" slot-scope="text, record">
<span v-if="record.empowerEndDate">{{record.empowerBeginDate}}{{record.empowerEndDate}} </span>
</span>
<span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.balanceStatus === 1">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核结算</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
</a-card>
</template>
<script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, BALANCE_STATUS } from '@/assets/static.js'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'balanceDate',
key: 'balanceDate',
align: 'center',
},
{
title: '身份',
dataIndex: 'platformName',
key: 'platformName',
align: 'center',
},
{
title: '提交人',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '结算总金额',
dataIndex: 'balanceMoney',
key: 'balanceMoney',
align: 'center',
},
{
title: '账单数量',
dataIndex: 'balanceCount',
key: 'balanceCount',
align: 'center',
},
{
title: '结算方式',
dataIndex: 'balanceWay',
key: 'balanceWay',
align: 'center',
},
{
title: '结算状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(BALANCE_STATUS, text)
}
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
auditList: BALANCE_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBalance/list',
}
}
},
methods: {
propertyDetails(type, id) {
let params = id ? `?type=${type}&id=${id}` : `?type=${type}`
this.$router.push({
path: '/benefitsAudit/SettlementDetails' + params
})
},
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onExamine(record) {
let that = this
this.$confirm({
title: '确认审核此物业?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
return auditPropertyApi({
id: record.id,
auditStatus: 'auditPass',
}).then((res) => {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse',
}).then((res) => {
that.searchQuery()
})
},
})
},
onStatus(record) {
let that = this
this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
onOk() {
return freezeOrPropertyApi({
id: record.id,
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => {
that.searchQuery()
})
},
onCancel() {},
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
}
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="结算总金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoneyName">
<a-input v-model="model.totalMoneyName" placeholder="请输入结算总金额" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="结算日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceDate">
<a-date-picker
v-model="model.balanceDate"
placeholder="请输入结算日期"
format="YYYY-MM-DD HH:mm:ss"
valueFormat="YYYY-MM-DD HH:mm:ss"
:showTime="true"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="结算方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceWay">
<a-select v-model="model.balanceWay" placeholder="请选择结算方式" style="width: 100%">
<a-select-option value="转账">转账</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="银行卡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bankCard">
<a-input v-model="model.bankCard" placeholder="请输入银行卡"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="model.remarks" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'PropertyAdvForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
totalMoneyName: [{ required: true, message: '请输入结算总金额', trigger: 'blur' }],
balanceDate: [{ required: true, message: '请输入结算日期', trigger: 'change' }],
balanceWay: [{ required: true, message: '请选择结算方式', trigger: 'change' }],
bankCard: [{ required: true, message: '请输入银行卡', trigger: 'blur' }]
},
url: {
add: "/property-central/partners/shareBalance/add"
},
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({
balanceDate: '',
balanceWay: '转账',
bankCard: '',
remarks: ''
}, record, {totalMoneyName: ${record.balanceMoney}`});
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
httpAction(this.url.add, {...this.model, balanceStatus: '2'}, 'post').then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-adv-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-adv-form>
</j-modal>
</template>
<script>
import PropertyAdvForm from './PropertyAdvForm'
export default {
name: 'PropertyAdvModal',
components: {
PropertyAdvForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="8" :sm="8">
<a-form-item label="日期">
<a-range-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" v-model="dataRangeList" />
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="6">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#1890ff;"><a-icon type="gold" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">绑定商铺数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">23</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#7262fd;"><a-icon type="home" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">平台总小区数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">56</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#ffaa00;"><a-icon type="user" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">平台总业主数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">45634</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#52c41a;"><a-icon type="team" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">合作伙伴分利</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">5656</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#1890ff;"><a-icon type="line-chart" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">新增订单数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">5656</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#52c41a;"><a-icon type="dollar" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">总营收</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">5656</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#52c41a;"><a-icon type="dollar" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">本月营收</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">5656</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<div class="icon" style="color:#52c41a;"><a-icon type="dollar" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">本月营收</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">5656</p>
</div>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">最新成交订单</h3>
<div class="order">
<div class="order-title">
<span style="width: 30%;">订单编号</span>
<span>提交时间</span><span>买家名称</span>
<span>订单金额</span>
</div>
<vue-seamless-scroll :data="data.shareOrder" class="seamless-warp" :class-option="defineScroll">
<div v-for="(item, index) in data.shareOrder" :key="index" class="item">
<span style="width: 30%;">{{ item.order_num }}</span>
<span>{{ item.create_time }}</span>
<span>{{ item.buyer_name }}</span>
<span>¥{{ item.total_money }}</span>
</div>
</vue-seamless-scroll>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">月成交金额</h3>
<line-chart-multid :dataSource="dataList1" :fields="dayFields1" style="padding: 0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">月成交订单数量</h3>
<line-chart-multid :dataSource="dataList2" :fields="dayFields2" style="padding: 0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">总平台、合作伙伴、商铺分利金额</h3>
<line-chart-multid :dataSource="dataList1" :fields="dayFields1" style="padding: 0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">合作伙伴新增数量</h3>
<bar :dataSource="dataList3" style="padding:0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">入驻商铺新增数量</h3>
<bar :dataSource="dataList3" style="padding:0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">巡报订单数量</h3>
<line-chart-multid :dataSource="dataList4" :fields="dayFields4" style="padding: 0;" />
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="statistics-box">
<h3 class="title">巡报订单金额</h3>
<line-chart-multid :dataSource="dataList5" :fields="dayFields5" style="padding: 0;" />
</div>
</a-col>
</a-row>
</a-card>
</template>
<script>
import Bar from '@/components/chart/Bar'
import LineChartMultid from '@/components/chart/LineChartMultid'
import vueSeamlessScroll from 'vue-seamless-scroll'
import { shareBoardApi } from '@/api/api'
export default {
name: 'PermissionListAsync',
components: {
Bar,
LineChartMultid,
vueSeamlessScroll
},
data() {
return {
dataRangeList: ['2023-01-01', '2023-08-01'],
// 表头
loading: true,
time: '',
data: {},
dayFields1: ['月成交金额'],
dataList1: [],
dayFields2: ['月成交订单数量'],
dataList2: [],
dataList3: [],
dayFields4: ['巡报订单数量'],
dataList4: [],
dayFields5: ['巡报订单金额'],
dataList5: [],
defineScroll: {
data: {},
step: 0.5, // 数值越大速度滚动越快
limitMoveNum: 5, // 开始无缝滚动的数据量 this.dataList.length
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
}
}
},
methods: {
searchQuery() {},
searchReset() {},
async getDataStatistics() {
let { result } = await shareBoardApi({ platformType: 'community', date: this.time })
if (result) {
this.data = result
this.dataList1 =
result.shareByMonth.map((item) => {
return {
type: item.MONTH,
月成交金额: item.shareMoney,
}
}) || []
this.dataList2 =
result.orderCountByMonth.map((item) => {
return {
type: item.MONTH,
月成交订单数量: item.orderCount,
}
}) || []
this.dataList3 =
result.shopCountByMonth.map((item) => {
return {
x: item.MONTH,
y: item.shopCount,
}
}) || []
this.dataList4 =
result.shareList.map((item) => {
return {
type: item.st_date_day,
巡报订单数量: item.order_num,
}
}) || []
this.dataList5 =
result.shareList.map((item) => {
return {
type: item.st_date_day,
巡报订单金额: item.share_money,
}
}) || []
}
}
},
created() {
this.getDataStatistics()
}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
.statistics {
// flex: none;
background: #fff;
width: 100%;
height: 90px;
box-sizing: border-box;
border: 1px solid #e0dfdf;
display: flex;
align-items: center;
padding-left: 20px;
.icon {
width: 60px;
height: 60px;
border-radius: 60px;
margin-right: 12px;
display: flex;
text-align: center;
align-items: center;
justify-content: center;
.anticon {
font-size: 50px;
}
}
span {
font-size: 14px;
color: #1890ff;
}
}
.statistics-box {
background: #fff;
width: 100%;
height: 320px;
box-sizing: border-box;
border: 1px solid #e0dfdf;
.title {
line-height: 40px;
background-color: #f1f1f1;
text-align: center;
margin-bottom: 0;
}
.order {
.order-title {
background: #fafafa;
height: 40px;
line-height: 40px;
display: flex;
border-left: 1px solid #e8e8e8;
span {
width: 25%;
border-right: 1px solid #e8e8e8;
border-top: 1px solid #e8e8e8;
text-align: center;
font-weight: bold;
}
}
.seamless-warp {
border: 1px solid #e8e8e8;
border-right: none;
.item {
height: 40px;
line-height: 40px;
display: flex;
span {
width: 25%;
border-right: 1px solid #e8e8e8;
//border-top: 1px solid #e8e8e8;
border-bottom: 1px solid #e8e8e8;
text-align: center;
overflow: hidden;
}
}
}
}
}
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>积分详情</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
</div>
</div>
<j-form-container :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerId">
<a-input v-model="model.ownerId" placeholder="请输入用户账号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="用户昵称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nickName">
<a-input v-model="model.nickName" placeholder="请输入用户昵称"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属物业集团" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入所属物业集团"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="platformName">
<a-input v-model="model.platformName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="可用积分" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="availableIntegral">
<a-input v-model="model.availableIntegral" placeholder="请输入可用积分"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="历史总积分" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="historyIntegral">
<a-input v-model="model.historyIntegral" placeholder="请输入历史总积分"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="系统冻结积分" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="systemFreezeIntegral">
<a-input v-model="model.systemFreezeIntegral" placeholder="请输入系统冻结积分"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="手动冻结积分" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="manualFreezeIntegral">
<a-input v-model="model.manualFreezeIntegral" placeholder="请输入手动冻结积分"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<a-card title="数据列表">
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="paymentNo" slot-scope="text, record">
<span style="color:blue;cursor:pointer">{{record.paymentNo}}</span>
</span>
<span slot="type" slot-scope="text, record">
<span>{{record.type === 'scanQrCodePay' ? '扫码支付' : '抵扣物业费'}}</span>
</span>
</a-table>
</a-card>
</a-spin>
</template>
<script>
import { queryByIdIntegralDetailApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
const columns = [
{
title: '支付订单编号',
dataIndex: 'paymentNo',
key: 'paymentNo',
align: 'center',
scopedSlots: { customRender: 'paymentNo' }
},
{
title: '操作类型',
dataIndex: 'type',
key: 'type',
align: 'center',
scopedSlots: { customRender: 'type' }
},
{
title: '优币变化',
dataIndex: 'integralChange',
key: 'integralChange',
align: 'center',
},
{
title: '时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
mixins: [JeecgListMixin],
data() {
return {
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
columns: columns,
disableMixinCreated: true,
url: {
list: ''
}
}
},
methods: {
async getPageDetail() {
let { result } = await queryByIdIntegralDetailApi({ id: this.$route.query.id })
this.model = {...result}
},
async getPageList() {
let { result } = await getPropertyDetailApi({ id: this.$route.query.id })
},
onCancel() {
this.closeCurrent()
}
},
mounted() {
this.getPageDetail()
this.url.list = `/property-central/integral/integralRecord/ownerIntegralList?phone=${this.$route.query.phone}&platformCode=${this.$route.query.platformCode}`
this.loadData();
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="用户ID">
<j-input placeholder="请输入用户ID" v-model="queryParam.ownerId"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="手机号">
<j-input placeholder="请输入手机号" v-model="queryParam.ownerPhone"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="用户昵称">
<j-input placeholder="请输入用户昵称" v-model="queryParam.nickName"></j-input>
</a-form-item>
</a-col>
<!-- <a-col :md="6" :sm="8">
<a-form-item label="会员等级">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option value="1">白银</a-select-option>
<a-select-option value="2">黄金</a-select-option>
<a-select-option value="5">钻石</a-select-option>
</a-select>
</a-form-item>
</a-col> -->
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button type="primary" :disabled="selectedRowKeys.length === 0" icon="edit" @click="onBatchEdit">批量修改</a-button>
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="onReconciliation()"><a-icon type="audit" /></a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown> -->
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
>
<span slot="freezeIntegral" slot-scope="text, record">
<span>{{(record.manualFreezeIntegral + record.systemFreezeIntegral).toFixed(2).replace('.00', '')}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(record)">积分明细</a>
<a-divider type="vertical" />
<a href="javascript:;" @click="onEditScore(record.id)">修改数值</a>
<a-divider type="vertical" />
<a href="javascript:;" @click="onFreezeScore(record)">{{record.manualFreezeIntegral > 0 ? '解冻积分' : '冻结积分'}}</a>
</span>
</a-table>
</div>
<!-- table区域-end -->
<a-modal v-model="scoreVisible" title="修改积分" @ok="submitHandleOk">
<a-form-model ref="form" :model="scoreModel">
<a-row>
<a-col :span="24">
<a-form-model-item label="调整积分:" :labelCol="{ xs: { span: 24 },sm: { span: 4 } }" :wrapperCol="{ xs: { span: 24 }, sm: { span: 20 } }" prop="score">
<!-- <a-input-number id="inputNumber" v-model="scoreModel.score" :min="0" /> -->
<a-radio-group v-model="scoreModel.type" @change="onCleatValue">
<div style="display:flex;margin-bottom:10px">
<a-radio :style="radioStyle" value="plus">增加</a-radio>
<a-input-number :disabled="scoreModel.type !== 'plus'" v-model="scoreModel.plusScore" id="inputNumber" :min="1" />
</div>
<div style="display:flex;margin-bottom:10px">
<a-radio :style="radioStyle" value="minus">减少</a-radio>
<a-input-number :disabled="scoreModel.type !== 'minus'" v-model="scoreModel.minusScore" id="inputNumber" :min="1" />
</div>
<!-- <div style="display:flex">
<a-radio :style="radioStyle" value="equal">等于</a-radio>
<a-input-number :disabled="scoreModel.type !== 'equal'" v-model="scoreModel.equalScore" id="inputNumber" :min="1" />
</div> -->
</a-radio-group>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</a-card>
</template>
<script>
import { editIntegralApi, freezeIntegral } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
const columns = [
{
title: '用户ID',
dataIndex: 'ownerId',
key: 'ownerId',
align: 'center',
},
{
title: '手机号',
dataIndex: 'ownerPhone',
key: 'ownerPhone',
align: 'center',
},
{
title: '用户昵称',
dataIndex: 'nickName',
key: 'nickName',
align: 'center',
},
{
title: '所属物业集团',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '所属小区',
dataIndex: 'platformName',
key: 'platformName',
align: 'center',
},
{
title: '可用积分',
dataIndex: 'availableIntegral',
key: 'availableIntegral',
align: 'center',
},
{
title: '历史总积分',
dataIndex: 'historyIntegral',
key: 'historyIntegral',
align: 'center',
},
{
title: '系统冻结积分',
dataIndex: 'systemFreezeIntegral',
key: 'systemFreezeIntegral',
align: 'center'
},
{
title: '手动冻结积分',
dataIndex: 'manualFreezeIntegral',
key: 'manualFreezeIntegral',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 180,
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
radioStyle: {
display: 'block',
height: '30px',
lineHeight: '30px',
},
// 表头
columns: columns,
url: {
list: '/property-central/integral/ownerIntegral/list',
delete: '/property-central/property/communityReconciliation/delete',
deleteBatch: '/property-central/property/communityReconciliation/deleteBatch',
},
scoreVisible: false,
scoreModel: {
id: '',
type: 'plus',
plusScore: '',
minusScore: '',
// equalScore: ''
}
}
},
methods: {
onCleatValue() {
this.scoreModel.plusScore = ''
this.scoreModel.minusScore = ''
// this.scoreModel.equalScore = ''
},
propertyDetails(row) {
this.$router.push({
path: `/integral/IntegralDetails?id=${row.id}&phone=${row.ownerPhone}&platformCode=${row.platformCode}`
})
},
onBatchEdit() {
this.scoreModel.id = this.selectedRowKeys.join(',')
this.scoreVisible = true
},
onEditScore(id) {
this.onClearSelected()
this.scoreModel.id = id
this.scoreVisible = true
},
submitHandleOk() {
let score = 1
if(this.scoreModel.type === 'plus') {
if(this.scoreModel.plusScore) {
score = this.scoreModel.plusScore
} else {
this.$message.warning('请输入增加的积分!');
return
}
}
if(this.scoreModel.type === 'minus') {
if(this.scoreModel.minusScore) {
score = this.scoreModel.minusScore
} else {
this.$message.warning('请输入减少的积分!');
return
}
}
// if(this.scoreModel.type === 'equal') {
// if(this.scoreModel.equalScore) {
// score = this.scoreModel.equalScore
// } else {
// this.$message.warning('请输入等于的积分!');
// return
// }
// }
editIntegralApi({
ids: this.scoreModel.id,
type: this.scoreModel.type,
score
}).then(res=> {
this.scoreVisible = false
this.$message.success(res.message);
this.loadData();
this.onCleatValue()
})
},
onFreezeScore(row) {
let _this = this
this.$confirm({
title: `${row.manualFreezeIntegral > 0 ? '解冻' : '冻结'}积分`,
content: `是否确认${row.manualFreezeIntegral > 0 ? '解冻' : '冻结'}此用户积分?`,
onOk: function () {
freezeIntegral({id: row.id, status: row.manualFreezeIntegral > 0 ? 'normal' : 'freeze'}).then(res=> {
_this.$message.success(res.message);
_this.loadData();
})
}
});
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>{{title}}</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine('refuse')" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine('auditPass')" v-if="pageType == '2'">审核通过</a-button>
<a-button type="primary" @click="onRefund" v-if="pageType == '3'">确认退款</a-button>
</div>
</div>
<j-form-container :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="订单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNo">
<a-input v-model="model.orderNo" placeholder="请输入订单编号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityName">
<a-input v-model="model.communityName" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="业主名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerName">
<a-input v-model="model.ownerName" placeholder="请输入业主名称"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ownerPhone">
<a-input v-model="model.ownerPhone" placeholder="请输入用户账号" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="支付方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName">
<a-input value="微信支付" placeholder="请输入支付方式"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单来源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maker">
<a-input :value="model.paySource === 'wechat' ? '微信' : '小程序'" placeholder="请输入订单来源"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<!-- <a-card title="操作信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="操作者" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入操作者"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="操作时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creditCode">
<a-input v-model="model.creditCode" placeholder="请输入操作时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName">
<a-input v-model="model.legalName" placeholder="请输入订单状态"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="付款状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital">
<a-input-number v-model="model.registCapital" :min="1" placeholder="请输入付款状态" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maker">
<a-input v-model="model.maker" placeholder="请输入备注"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card> -->
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="payStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
<a-modal v-model="remarksVisible" :title="`${remarksModel.auditStatus === 'auditPass' ? '通过' : '驳回'}说明`" @ok="submitHandleOk">
<a-form-model ref="form" :model="remarksModel">
<a-row>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs: { span: 24 },sm: { span: 3 } }" :wrapperCol="{ xs: { span: 24 }, sm: { span: 20 } }" prop="refundDes">
<a-textarea placeholder="请输入备注" v-model="remarksModel.refundDes" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</a-spin>
</template>
<script>
import { refundQueryByIdApi, auditRefundOrderApi, confirmRefundOrderApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, REFUND_STATUS } from '@/assets/static.js'
const columns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'auditStatus',
key: 'auditStatus',
align: 'center',
// customRender: function (text) {
// return filterDictTextByStatic(REFUND_STATUS, text)
// }
},
{
title: '付款状态',
dataIndex: 'payStatus',
key: 'payStatus',
align: 'center',
scopedSlots: { customRender: 'payStatus' }
},
{
title: '备注',
dataIndex: 'refuseDesc',
key: 'refuseDesc',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
mixins: [JeecgListMixin],
data() {
return {
title: '',
pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
url: {
add: '/property-central/property/propertySettled/add',
list: `/property-central/property/auditRecord/getRecordList?dataId=${this.$route.query.id}&auditType=refundAudit`
},
columns: columns,
remarksVisible: false,
remarksModel: {
refundDes: '',
auditStatus: ''
}
}
},
methods: {
async getPageDetail() {
let { result } = await refundQueryByIdApi({ id: this.$route.query.id })
this.edit(result)
},
onCancel() {
this.closeCurrent()
},
edit(record) {
this.model = Object.assign({}, record)
this.model.registAdress = [record.provinceCode, record.cityCode, record.countyCode]
this.visible = true
},
onExamine(status) {
this.remarksModel.auditStatus = status
this.remarksVisible = true
},
submitHandleOk() {
auditRefundOrderApi({
id: this.$route.query.id,
...this.remarksModel
}).then((res) => {
this.$message.success(`${this.remarksModel.auditStatus === 'auditPass' ? '审核通过' : '审核驳回'}成功`)
this.closeCurrent()
})
},
onRefund() {
let _this = this
this.$confirm({
title: "确认退款",
content: "是否确认退款?",
onOk: function () {
confirmRefundOrderApi({id: _this.$route.query.id, status: 'refunded'}).then(res=> {
_this.$message.success('退款成功');
_this.closeCurrent();
})
}
});
}
},
mounted() {
//备份model原始值
//this.modelDefault = JSON.parse(JSON.stringify(this.model))
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '详情'
} else if (this.$route.query.type == '2') {
this.title = '审核'
}
if (this.$route.query.id) {
this.getPageDetail()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="订单编号">
<j-input placeholder="请输入订单编号" v-model="queryParam.orderNo"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="用户">
<j-input placeholder="请输入用户" v-model="queryParam.ownerPhone"></j-input>
</a-form-item>
</a-col>
<!-- <a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option value="1">待审核</a-select-option>
<a-select-option value="2">已驳回</a-select-option>
<a-select-option value="3">已退款</a-select-option>
<a-select-option value="4">已付款</a-select-option>
<a-select-option value="5">已对账</a-select-option>
</a-select>
</a-form-item>
</a-col> -->
<a-col :md="6" :sm="8">
<a-form-item label="提交开始时间">
<a-date-picker placeholder="提交开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交结束时间">
<a-date-picker placeholder="提交结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button> -->
<!-- <a-button icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="onBatchVerify"><a-icon type="audit" />批量审核</a-menu-item>
</a-menu>
<a-button type="primary" style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="payType">微信支付</span>
<span slot="paySource" slot-scope="text, record">
<span>{{record.paySource === 'wechat' ? '微信' : '小程序'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.orderStatus === 'refundWaitAudit'">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</template>
<template v-if="record.orderStatus === 'refundRunning'">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(3, record.id)">退款</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
</a-card>
</template>
<script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, REFUND_STATUS } from '@/assets/static.js'
const columns = [
{
title: '订单编号',
dataIndex: 'orderNo',
key: 'orderNo',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'ownerPhone',
key: 'ownerPhone',
align: 'center',
},
{
title: '订单金额',
dataIndex: 'orderAmount',
key: 'orderAmount',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payType',
key: 'payType',
align: 'center',
scopedSlots: { customRender: 'payType' }
},
{
title: '订单来源',
dataIndex: 'paySource',
key: 'paySource',
align: 'center',
scopedSlots: { customRender: 'paySource' }
},
{
title: '订单状态',
dataIndex: 'orderStatus',
key: 'orderStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(REFUND_STATUS, text)
}
},
{
title: '退款说明',
dataIndex: 'refundDes',
key: 'refundDes',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '申请商铺',
dataIndex: 'shopName',
key: 'shopName',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
// 表头
columns: columns,
url: {
list: '/property-community/order/paymentOrder/refundOrderList',
delete: '/property-community/property/communityReconciliation/delete',
deleteBatch: '/property-community/property/communityReconciliation/deleteBatch',
}
}
},
methods: {
propertyDetails(type, id) {
this.$router.push({
path: '/refund/RefundDetails?id=' + id +'&type=' + type,
})
},
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onBatchVerify(record) {
let that = this
this.$confirm({
title: '确认批量审核此?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'auditPass',
// }).then((res) => {
// that.searchQuery()
// })
},
onCancel() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.searchQuery()
// })
},
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
}
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<a-form-model ref="form" :model="model" :rules="validatorRules">
<a-card title="分利日期设置">
<a-row>
<a-col>
<a-form-model-item label="订单完成超过:" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="days" style="margin-bottom:10px">
<a-input-number v-model="model.days" :min="1" placeholder="请输入天数" style="width: 90%" />
<span style="margin-left:3px"></span>
</a-form-model-item>
</a-col>
<a-col :offset="5">
<p style="color:red">自动结束交易,不能申请退款 ,超过日期后的订单才能进行结算</p>
</a-col>
<a-col>
<a-form-model-item label="业主支付使用积分数:" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payUsePoints" style="margin-bottom:10px">
<a-input-number v-model="model.payUsePoints" :min="1" placeholder="请输入" style="width: 90%" />
<span style="margin-left:3px">积分</span>
</a-form-model-item>
</a-col>
<a-col :offset="5">
<p style="color:red">抵扣物业费1元使用积分数</p>
</a-col>
<a-col>
<a-form-model-item label=" 业主支付获取积分数:" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payGetPoints" style="margin-bottom:10px">
<a-input-number v-model="model.payGetPoints" :min="1" placeholder="请输入天数" style="width: 90%" />
<span style="margin-left:3px">积分</span>
</a-form-model-item>
</a-col>
<a-col :offset="5">
<p style="color:red">商品购买1元获取积分数</p>
</a-col>
<a-col style="margin-top: 100px">
<a-form-model-item :wrapper-col="{ span: 14, offset: 8 }">
<a-button type="primary" @click="onSubmit">提交</a-button>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</a-spin>
</template>
<script>
import { getRuleDayDetailApi, editRuleDayDetailApi } from '@/api/api'
export default {
name: 'PermissionListAsync',
data() {
return {
// 表头
confirmLoading: false,
labelCol: {
xs: { span: 6 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 8 },
sm: { span: 8 },
},
model: {
days: 7,
payUsePoints: 1,
payGetPoints: 1
},
validatorRules: {
days: [{ required: true, message: '请输入天数', trigger: 'blur' }],
payUsePoints: [{ required: true, message: '请输入积分', trigger: 'blur' }],
payGetPoints: [{ required: true, message: '请输入积分', trigger: 'blur' }]
}
}
},
methods: {
async getDetails() {
let {result} = await getRuleDayDetailApi({ id: 1 })
this.model.days = result.days
this.model.payUsePoints = result.payUsePoints
this.model.payGetPoints = result.payGetPoints
},
onSubmit() {
this.$refs.form.validate(valid => {
if(valid) {
editRuleDayDetailApi({...this.model, id: 1}).then(res=> {
this.$message.success('修改成功!');
})
}
})
}
},
created() {
this.getDetails()
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>{{title}}</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<a-button type="primary" @click="submitForm()" v-if="pageType !== '3'">确认</a-button>
</div>
</div>
<j-form-container :disabled="pageType == '3'">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-card>
<a-row>
<a-col :span="12">
<a-form-model-item label="分利规则名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ruleName">
<a-input v-model="model.ruleName" placeholder="请输入"></a-input>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="选择合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partnerName">
<my-popup
v-model="model.partnerName"
icon="team"
field="name"
title="选择合作伙伴"
:multi="false"
url="/property-central/partners/partnersInfo/list?auditStatus=auditPass"
:columns="partnersColumns"
@callback="onChosePartners"
/>
</a-form-model-item>
<!-- <p style="margin-bottom:0;transform:translate(25%, -23px)">若不选合作伙伴,则商铺未绑定合作伙伴时,合作伙伴不进行分利</p> -->
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="商铺数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shopNum">
<a-input-group compact>
<a-select style="width: 30%" v-model="model.judgingCondition">
<a-select-option value=">">{{'>'}}</a-select-option>
<a-select-option value="≤"></a-select-option>
</a-select>
<!-- <a-input style="width: 50%" placeholder="商铺数量" v-model="model.shopNum" /> -->
<a-input-number
v-model="model.shopNum"
:min="1"
placeholder="商铺数量"
style="width:150px"
/>
</a-input-group>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="是否限定小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="rangeType">
<a-radio-group v-model="model.rangeType">
<a-radio value="point">指定</a-radio>
<a-radio value="all">全部</a-radio>
</a-radio-group>
</a-form-model-item>
</a-col>
</a-row>
<div style="" v-if="model.rangeType === 'point'">
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="onHandleAddVillage" type="primary" icon="plus">新增</a-button>
</div>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="villageBenefitsColumns" :dataSource="villageDataSource">
<span slot="saasBenefits" slot-scope="text, record">
<a-input-number
v-model="record.saasBenefits"
:min="0"
:max="99"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</span>
<span slot="partnerBenefits" slot-scope="text, record">
<a-input-number
v-model="record.partnerBenefits"
:min="0"
:max="99"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</span>
<span slot="communityBenefits" slot-scope="text, record">
<a-input-number
v-model="record.communityBenefits"
:min="0"
:max="99"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</span>
<span slot="action" slot-scope="text, record">
<a @click="onHandleEdit(record)">删除</a>
</span>
</a-table>
</div>
</div>
<my-popup
:showModal="false"
ref="villageRef"
title="选择小区"
:multi="true"
url="/property-company/community/companyCommunity/queryCommunityList"
:columns="villageColumns"
@callback="onChoseVillage"
/>
<template v-if="model.rangeType === 'all'">
<a-row>
<a-col :span="12">
<a-form-model-item label="总平台分利" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="saasBenefits">
<!-- <a-input v-model="model.saasBenefits" suffix="%" placeholder="请输入总平台分利"></a-input> -->
<a-input-number
v-model="model.saasBenefits"
:min="0"
:max="99"
placeholder="总平台分利"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="合作伙伴分利" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partnerBenefits">
<!-- <a-input v-model="model.partnerBenefits" suffix="%" placeholder="请输入合作伙伴分利"></a-input> -->
<a-input-number
v-model="model.partnerBenefits"
:min="0"
:max="99"
placeholder="合作伙伴分利"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="小区分利" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityBenefits">
<!-- <a-input v-model="model.communityBenefits" suffix="%" placeholder="请输入小区分利"></a-input> -->
<a-input-number
v-model="model.communityBenefits"
:min="0"
:max="99"
placeholder="小区分利"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</a-form-model-item>
</a-col>
</a-row>
<!-- <a-row>
<a-col :span="12">
<a-form-model-item label="业主支付使用积分数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName">
<a-input v-model="model.legalName" placeholder="抵扣物业费1元使用积分数"></a-input>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="业主支付获取积分数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital">
<a-input-number v-model="model.registCapital" :min="1" placeholder="商品购买1元获取积分数" style="width: 100%" />
</a-form-model-item>
</a-col>
</a-row> -->
</template>
</a-card>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import myPopup from '@/components/custom/myPopup'
import { addRuleDayDetailApi, getShareRuleDetailApi, editShareRuleDetailApi } from '@/api/api'
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
components: {
myPopup
},
data() {
return {
title: '',
pageType: '',
model: {
ruleName: '',
partnerId: '',
partnerCode: '',
partnerName: '',
judgingCondition: '>',
rangeType: 'all',
shopNum: '',
saasBenefits: '',
partnerBenefits: '',
communityBenefits: ''
},
validatorRules: {
ruleName: [{ required: true, message: '请输入分利规则名称', trigger: 'blur' }],
payUsePoints: [{ required: true, message: '请输入积分', trigger: 'blur' }],
payGetPoints: [{ required: true, message: '请输入积分', trigger: 'blur' }]
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
url: {
add: '/property-central/property/propertySettled/add',
edit: '/property-central/property/propertySettled/edit',
queryById: '/property-central/property/propertySettled/queryById',
list: '/property-central/property/communityReconciliation/communityAccountPage'
},
partnersColumns: [
{
title: '合作伙伴名称',
dataIndex: 'partnersName',
key: 'partnersName',
align: 'center',
},
{
title: '联系人',
dataIndex: 'contactName',
key: 'contactName',
align: 'center',
},
{
title: '联系电话',
dataIndex: 'contactPhone',
key: 'contactPhone',
align: 'center',
},
{
title: '入驻时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
}
],
villageColumns: [
{
title: '小区名称',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '物业公司',
dataIndex: 'platformName',
key: 'platformName',
align: 'center',
},
{
title: '管理员',
dataIndex: 'adminName',
key: 'adminName',
align: 'center',
},
{
title: '电话',
dataIndex: 'adminPhone',
key: 'adminPhone',
align: 'center',
},
{
title: '添加时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
}
],
villageDataSource: [],
villageBenefitsColumns: [
{
title: '小区名称',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '业主数量',
dataIndex: 'ownerNum',
key: 'ownerNum',
align: 'center',
},
{
title: '商铺数量',
dataIndex: 'shopNum',
key: 'shopNum',
align: 'center',
},
{
title: '总平台分利',
dataIndex: 'saasBenefits',
scopedSlots: { customRender: 'saasBenefits' },
key: 'saasBenefits',
align: 'center',
},
{
title: '合作伙伴分利',
dataIndex: 'partnerBenefits',
scopedSlots: { customRender: 'partnerBenefits' },
key: 'partnerBenefits',
align: 'center',
},
{
title: '小区分利',
dataIndex: 'communityBenefits',
scopedSlots: { customRender: 'communityBenefits' },
key: 'communityBenefits',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
}
]
}
},
methods: {
async getPageDetail() {
let { result } = await getShareRuleDetailApi({ id: this.$route.query.id })
this.model = {...result}
this.villageDataSource = [...result.shareRuleRefList]
},
onCancel() {
this.closeCurrent()
},
onChosePartners(list) {
if(list) {
const row = list[0]
this.model.partnerId = row.id
this.model.partnerCode = row.platformCode
this.model.partnerName = row.partnersName
} else {
this.model.partnerId = ''
this.model.partnerCode = ''
this.model.partnerName = ''
}
},
onChoseVillage(list) {
this.villageDataSource = list.map(item=> {
return {
...item,
saasBenefits: '',
partnerBenefits: '',
communityBenefits: ''
}
})
},
onHandleEdit(row) {
let currentKey = this.villageDataSource.findIndex(item=>item.id === row.id)
this.villageDataSource.splice(currentKey, 1)
},
onHandleAddVillage() {
this.$refs.villageRef.$refs.jPopupOnlReport.show()
},
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
this.confirmLoading = true
let shareRuleRefList = this.villageDataSource.map(item=> {
return {
propertyCode: item.platformCode,
propertyName: item.platformName,
communityCode: item.communityCode,
communityName: item.communityName,
saasBenefits: item.saasBenefits,
partnerBenefits: item.partnerBenefits,
communityBenefits: item.communityBenefits,
shopNum: item.shopNum,
ownerNum: item.ownerNum
}
})
if(this.$route.query.type == '1') {
addRuleDayDetailApi({...this.model, shareRuleRefList}).then(res=> {
this.$message.success(res.message);
this.closeCurrent()
this.confirmLoading = false
}).catch(err=> {
this.confirmLoading = false
})
} else {
editShareRuleDetailApi({...this.model, shareRuleRefList}).then(res=> {
this.$message.success(res.message);
this.closeCurrent()
this.confirmLoading = false
}).catch(err=> {
this.confirmLoading = false
})
}
}
})
}
},
mounted() {
//备份model原始值
//this.modelDefault = JSON.parse(JSON.stringify(this.model))
this.pageType = this.$route.query.type
if (this.$route.query.type == '1') {
this.title = '新增'
} else if (this.$route.query.type == '2') {
this.title = '编辑'
this.getPageDetail()
} else if (this.$route.query.type == '3') {
this.title = '详情'
this.getPageDetail()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="规则名称">
<j-input placeholder="请输入规则名称" v-model="queryParam.propertyName"></j-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="onBatchVerify"><a-icon type="delete" />删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSourceMap"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
>
<span slot="reconciliationAmount" slot-scope="text, record">
<span v-if="record.rangeType === 'all'">
<span v-if="record.shopNum">{{`总平台 ${record.saasBenefits}% 合作伙伴 ${record.partnerBenefits}% 小区 ${record.communityBenefits}%`}}</span>
<span v-else>{{`总平台 ${record.saasBenefits}% 小区 ${record.communityBenefits}%`}}</span>
</span>
<span v-else>
<p v-for="item in record.shareRuleRefList" :key="item.id">
总平台 {{item.saasBenefits}}% 合作伙伴 {{item.partnerBenefits}}% 小区 {{item.communityBenefits}}%
</p>
</span>
</span>
<span slot="rangeType" slot-scope="text, record">
<span v-if="record.rangeType === 'all'">所有小区</span>
<span v-else>{{record.shareRuleRefList.map(item=>item.communityName).join(',')}}</span>
</span>
<span slot="status" slot-scope="text, record">
<a-switch :disabled="!record.shopNum" checked-children="启用" un-checked-children="冻结" v-model="record.statusBoolean" @change="flag=>onStatusChange(flag, record)" />
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(2, record)">编辑</a>
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(3, record)">查看</a>
<template v-if="!!record.shopNum">
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
<default-rule-modal ref="modalForm" @ok="searchQuery"></default-rule-modal>
</a-card>
</template>
<script>
import { updateRuleStatusApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import defaultRuleModal from './modules/defaultRuleModal'
const columns = [
{
title: '序号',
dataIndex: 'id',
key: 'id',
align: 'center',
},
{
title: '规则名称',
dataIndex: 'ruleName',
key: 'ruleName',
align: 'center',
},
{
title: '所属合作伙伴',
dataIndex: 'partnerName',
key: 'partnerName',
align: 'center',
},
{
title: '限制内容',
dataIndex: 'reconciliationAmount',
key: 'reconciliationAmount',
align: 'center',
scopedSlots: { customRender: 'reconciliationAmount' }
},
{
title: '限制小区',
dataIndex: 'rangeType',
key: 'rangeType',
align: 'center',
scopedSlots: { customRender: 'rangeType' }
},
{
title: '已添加数量',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '添加时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '是否启用',
dataIndex: 'status',
key: 'status',
align: 'center',
scopedSlots: { customRender: 'status' }
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
}
]
export default {
name: 'PermissionListAsync',
components: {
defaultRuleModal,
},
mixins: [JeecgListMixin],
data() {
return {
// 表头
columns: columns,
url: {
list: '/property-central/sharerule/shareRule/list',
delete: '/property-central/sharerule/shareRule/delete',
deleteBatch: '/property-central/sharerule/shareRule/deleteBatch'
}
}
},
computed: {
dataSourceMap() {
return this.dataSource.map(item=> {
return {
...item,
statusBoolean: item.status === 'normal' // normal:正常,freeze:冻结
}
})
}
},
methods: {
propertyDetails(type, row) {
if(row && !row.shopNum) {
if(type === 2) {
this.handleEdit(row)
} else {
this.handleDetail(row)
}
} else {
let params = row ? `id=${row.id}&type=${type}` : `type=${type}`
this.$router.push({
path: '/rule/ruleDetail?' + params
})
}
},
async onStatusChange(flag, row) {
console.log(row)
// value.switchLoading = true
let status = flag ? 'normal' : 'freeze'
await updateRuleStatusApi(row.id, status)
this.$message.success(`${flag ? '启用' : '冻结'}成功!`);
this.searchQuery()
},
onBatchVerify(record) {
let that = this
this.$confirm({
title: '确认批量审核此?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'auditPass',
// }).then((res) => {
// that.searchQuery()
// })
},
onCancel() {
// return auditPropertyApi({
// id: record.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.searchQuery()
// })
},
})
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
}
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="分利规则名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ruleName">
<a-input v-model="model.ruleName" placeholder="请输入分利规则名称"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="总平台分利" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="saasBenefits">
<a-input-number
v-model="model.saasBenefits"
:min="0"
:max="99"
:precision="2"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="物业小区分利" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityBenefits">
<a-input-number
v-model="model.communityBenefits"
:min="0"
:max="99"
:precision="2"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="商铺收益" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input-number
v-model="shopBenefits"
:min="0"
:max="99"
:precision="2"
:formatter="value => value ? `${value}%` : ''"
:parser="value => value.replace('%', '')"
style="width:100%"
disabled
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { editShareRuleDetailApi } from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
ruleName: '',
saasBenefits: '',
communityBenefits: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
ruleName: [{ required: true, message: '请输入收费名称', trigger: 'blur' }],
saasBenefits: [{ required: true, message: '请输入授权日期', trigger: 'blur' }],
communityBenefits: [{ required: true, message: '请输入授权小区数量', trigger: 'blur' }]
},
url: {
add: "/property-central/property/propertyChargrule/add",
edit: "/property-central/property/propertyChargrule/edit",
queryById: "/property-central/property/propertyChargrule/queryById"
},
dictOptions: []
}
},
computed: {
formDisabled(){
return this.disabled
},
shopBenefits() {
return 100 - (this.model.saasBenefits || 0) - (this.model.communityBenefits || 0)
}
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
this.$refs.form.validate(valid => {
if (valid) {
this.confirmLoading = true;
editShareRuleDetailApi({...this.model}).then(res=> {
this.$message.success(res.message);
this.$emit('ok');
}).finally(err=> {
this.confirmLoading = false
})
}
})
}
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<default-rule-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></default-rule-form>
</j-modal>
</template>
<script>
import defaultRuleForm from './defaultRuleForm'
export default {
name: 'defaultRuleModal',
components: {
defaultRuleForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
...@@ -77,6 +77,10 @@ ...@@ -77,6 +77,10 @@
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
</a-form-model>
</j-form-container>
<j-form-container :disabled="pageType=='detail'">
<a-form-model ref="empowerForm" :model="model" :rules="validatorRules" slot="detail">
<a-card title="授权信息"> <a-card title="授权信息">
<a-row> <a-row>
<!-- <a-col :span="12"> <!-- <a-col :span="12">
...@@ -118,16 +122,14 @@ ...@@ -118,16 +122,14 @@
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12" style="position:relative"> <a-col :span="12" style="position:relative">
<a-form-model-item label="访问域名前缀" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accessAddress" <a-form-model-item label="访问域名前缀" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accessAddress">
v-if="pageType=='add' || pageType=='edit'">
<a-input v-model="model.accessAddress" placeholder="请输入访问域名前缀" <a-input v-model="model.accessAddress" placeholder="请输入访问域名前缀"
addon-after=".property.hjxbc.cn"></a-input> addon-after=".property.hjxbc.cn"></a-input>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="访问域名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accessAddress" <!-- <a-form-model-item label="访问域名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accessAddress" v-if="model.accessAddress" :disabled="false">
:disabled="false" v-else> <p>{{ model.accessAddress }}.property.hjxbc.cn</p>
<p v-if="model.accessAddress">{{ model.accessAddress }}.property.hjxbc.cn</p> </a-form-model-item> -->
</a-form-model-item> <a @click="onCopyLink" v-if="model.accessAddress && pageType=='detail'" style="position:absolute;top:0;right:-10px;line-height:40px;z-index:999;pointer-events:auto;">复制</a>
<a @click="onCopyLink" v-if="model.accessAddress" style="position:absolute;top:0;right:-10px;line-height:40px;z-index:999;pointer-events:auto;">复制</a>
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
...@@ -314,8 +316,9 @@ export default { ...@@ -314,8 +316,9 @@ export default {
} }
}, },
onCancel() { onCancel() {
this.$store.dispatch('tags/delView', this.$route.path) // this.$store.dispatch('tags/delView', this.$route.path)
this.$router.go(-1) // this.$router.go(-1)
this.closeCurrent()
}, },
// onValidatorInputNum(val) { // onValidatorInputNum(val) {
// if(this.model.chargingStandardId) { // if(this.model.chargingStandardId) {
...@@ -344,22 +347,59 @@ export default { ...@@ -344,22 +347,59 @@ export default {
this.visible = true this.visible = true
}, },
onExamine(type) { onExamine(type) {
const that = this let _this = this
if(type === 1) {
this.$refs.empowerForm.validate(valid => {
if(valid) {
this.$confirm({
title: '审核',
content: '确认审核通过此入驻申请吗?',
onOk() {
_this.onSubmitExamine(type)
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
}
})
} else {
this.$confirm({
title: '审核',
content: '确认驳回此入驻申请吗?',
onOk() {
_this.onSubmitExamine(type)
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
}
},
onSubmitExamine(type) {
if (type == 1) { if (type == 1) {
return auditPropertyApi({ return auditPropertyApi({
...this.model,
id: this.$route.query.id, id: this.$route.query.id,
auditStatus: 'auditPass', auditStatus: 'auditPass'
}).then((res) => { }).then((res) => {
that.$message.success('审核通过成功') if (res.success) {
that.$emit('ok') this.$message.success('审核通过成功')
this.onCancel() this.$emit('ok')
this.onCancel()
} else {
this.$message.warning(res.message)
}
}) })
} else if (type == 2) { } else if (type == 2) {
return auditPropertyApi({ return auditPropertyApi({
...this.model,
id: this.$route.query.id, id: this.$route.query.id,
auditStatus: 'refuse', auditStatus: 'refuse'
}).then((res) => { }).then((res) => {
that.$message.success('审核驳回成功') this.$message.success('审核驳回成功')
this.onCancel() this.onCancel()
}) })
} }
...@@ -463,38 +503,50 @@ export default { ...@@ -463,38 +503,50 @@ export default {
document.body.removeChild(txa); document.body.removeChild(txa);
this.$message.success("复制成功!"); this.$message.success("复制成功!");
}, },
validatePrm(form) {
return new Promise((resove, reject)=> {
this.$refs[form].validate((valid, list) => {
if(valid) {
resove(true)
} else {
reject(list)
}
})
})
},
submitForm() { submitForm() {
const that = this const that = this
// 触发表单验证 // 触发表单验证
this.$refs.form.validate((valid) => { let validateList = [this.validatePrm('form'), this.validatePrm('empowerForm')]
if (valid) { Promise.all(validateList).then(res=> {
that.confirmLoading = true that.confirmLoading = true
let httpurl = '' let httpurl = ''
let method = '' let method = ''
if (!this.model.id) { if (!this.model.id) {
httpurl += this.url.add httpurl += this.url.add
method = 'post' method = 'post'
} else { } else {
httpurl += this.url.edit httpurl += this.url.edit
method = 'put' method = 'put'
}
//this.model.registAdress = undefined
httpAction(httpurl, this.model, method)
.then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
this.onCancel()
} else {
that.$message.warning(res.message)
}
})
.finally(() => {
that.confirmLoading = false
})
} }
//this.model.registAdress = undefined
httpAction(httpurl, this.model, method)
.then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
this.onCancel()
} else {
that.$message.warning(res.message)
}
})
.finally(() => {
that.confirmLoading = false
})
}).catch(err=> {
console.log(err)
}) })
}, }
}, },
beforeDestroy() { beforeDestroy() {
clearTimeout(timer) clearTimeout(timer)
......
...@@ -64,6 +64,9 @@ ...@@ -64,6 +64,9 @@
<span slot="propertyStatus" slot-scope="text, record"> <span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span> <span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span> </span>
<span slot="source" slot-scope="text, record">
<span>{{record.source === 'pc' ? 'pc' : '小程序'}}</span>
</span>
<span slot="expirationStatus" slot-scope="text, record"> <span slot="expirationStatus" slot-scope="text, record">
<a-tag>{{record.expirationStatus === 'notStarted' ? '未开始' :record.expirationStatus === 'normal' ? '正常' :record.expirationStatus === 'soonExpired' ? '即将到期' :record.expirationStatus === 'expire' ? '已过期' : ''}}</a-tag> <a-tag>{{record.expirationStatus === 'notStarted' ? '未开始' :record.expirationStatus === 'normal' ? '正常' :record.expirationStatus === 'soonExpired' ? '即将到期' :record.expirationStatus === 'expire' ? '已过期' : ''}}</a-tag>
</span> </span>
...@@ -80,8 +83,8 @@ ...@@ -80,8 +83,8 @@
<a-menu-item v-if="record.auditStatus === 'auditPass'"> <a-menu-item v-if="record.auditStatus === 'auditPass'">
<a @click="handlePerssion(record.roleId)">授权</a> <a @click="handlePerssion(record.roleId)">授权</a>
</a-menu-item> </a-menu-item>
<a-menu-item> <a-menu-item v-if="record.auditStatus != 'waitAudit'">
<a href="javascript:;" @click="propertyDetails(2, record.id)" v-if="record.auditStatus != 'waitAudit'">编辑</a> <a href="javascript:;" @click="propertyDetails(2, record.id)">编辑</a>
</a-menu-item> </a-menu-item>
<a-menu-item v-if="record.auditStatus === 'waitAudit'"> <a-menu-item v-if="record.auditStatus === 'waitAudit'">
<a href="javascript:;" @click="propertyDetails(3, record.id)">审核</a> <a href="javascript:;" @click="propertyDetails(3, record.id)">审核</a>
...@@ -161,6 +164,14 @@ const columns = [ ...@@ -161,6 +164,14 @@ const columns = [
customRender: function (text) { customRender: function (text) {
return filterDictTextByCache('auditStatus', text) return filterDictTextByCache('auditStatus', text)
}, },
align: 'center',
},
{
title: '入驻来源',
dataIndex: 'source',
key: 'source',
scopedSlots: { customRender: 'source' },
align: 'center',
}, },
{ {
title: '到期提示', title: '到期提示',
......
...@@ -6,159 +6,216 @@ ...@@ -6,159 +6,216 @@
<a-button @click="onCancel">返回</a-button> <a-button @click="onCancel">返回</a-button>
<a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button> <a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button> <a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button>
<a-button type="primary" @click="onExamine(3)" v-if="pageType == '3'">确认</a-button>
</div> </div>
</div> </div>
<j-form-container :disabled="true"> <j-form-container :disabled="true">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-form-model ref="form" :model="model" slot="detail">
<a-card title="对账信息"> <a-card title="对账信息">
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName"> <a-form-model-item label="对账单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.propertyName" placeholder="请输入对账单号"></a-input> <a-input v-model="model.id" placeholder="请输入对账单号"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creditCode"> <a-form-model-item label="对账开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationBeginDate">
<a-input v-model="model.creditCode" placeholder="请输入对账开始时间"></a-input> <a-input v-model="model.reconciliationBeginDate" placeholder="请输入对账开始时间"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName"> <a-form-model-item label="对账结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationEndDate">
<a-input v-model="model.legalName" placeholder="请输入对账结束时间"></a-input> <a-input v-model="model.reconciliationEndDate" placeholder="请输入对账结束时间"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital"> <a-form-model-item label="操作人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input-number v-model="model.registCapital" :min="1" placeholder="请输入操作人" style="width: 100%" /> <a-input-number v-model="model.createBy" :min="1" placeholder="请输入操作人" style="width: 100%" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName"> <a-form-model-item label="操作日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.contactName" placeholder="请输入操作日期"></a-input> <a-input v-model="model.createTime" placeholder="请输入操作日期"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
<a-card title="对账明细">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
</a-table>
</div>
</a-row>
</a-card>
</a-form-model> </a-form-model>
</j-form-container> </j-form-container>
<a-card title="转账凭证" v-if="pageType == '3'"> <a-card title="对账明细">
<j-image-upload bizPath="scott/pic" v-model="model.image"></j-image-upload> <p>已选择{{dataSource.length}}个缴费单,共计<span style="color:red">{{model.reconciliationAmount}}</span></p>
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{ x: true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap">
<span slot="residentPhone" slot-scope="text, record">
<span>{{record.residentName}}{{record.residentPhone}}</span>
</span>
<span slot="roomId" slot-scope="text, record">
<span>{{record.buildingName}}{{record.unitName}}{{record.roomName}}</span>
</span>
</a-table>
</div>
</a-row>
</a-card>
<a-card title="审核记录">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{ x: 600}" bordered rowKey="id" :columns="recordColumns"
:dataSource="recordList" class="j-table-force-nowrap">
</a-table>
</div>
</a-row>
</a-card>
<a-card title="审核说明" v-if="pageType === '2'">
<a-textarea placeholder="请输入审核说明" v-model="auditDescription" />
</a-card> </a-card>
</a-spin> </a-spin>
</template> </template>
<script> <script>
import { getPropertyChargruleListApi, getPropertyDetailApi, auditPropertyApi } from '@/api/api' import { getDetailReconciliationApi, getAccountListByIdApi, getCommunityRecordListApi, companyAuditAccountPageApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage' import { httpAction, getAction } from '@/api/manage'
import { isMobile, validateCreditCode } from '@/utils/validate'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { PAYMENT_STATUS, RELATION_SHIP, filterDictTextByStatic, } from '@/assets/static.js'
const columns = [ const columns = [
{ {
title: '所属小区', title: '收费类型',
dataIndex: 'propertyName', dataIndex: 'chargeTypeName',
key: 'propertyName', key: 'chargeTypeName',
width: 120,
align: 'center', align: 'center',
}, },
{ {
title: '费用项目', title: '收费项目',
dataIndex: 'creditCode', dataIndex: 'chargeItem',
key: 'creditCode', key: 'chargeItem',
align: 'center', width: 220,
},
{
title: '业主',
dataIndex: 'reconciliationBeginDate',
key: 'reconciliationBeginDate',
align: 'center', align: 'center',
}, },
{ {
title: '与业主关系', title: '与业主关系',
dataIndex: 'reaship', dataIndex: 'relationShip',
key: 'reaship', key: 'relationShip',
width: 120,
align: 'center', align: 'center',
customRender: function (text) {
return filterDictTextByStatic(RELATION_SHIP, text)
},
}, },
{ {
title: '住户', title: '住户',
dataIndex: 'reconcilname', dataIndex: 'residentPhone',
key: 'reconcilname', key: 'residentPhone',
width: 160,
scopedSlots: { customRender: 'residentPhone' },
align: 'center', align: 'center',
}, },
{ {
title: '房屋编号', title: '房屋编号',
dataIndex: 'reconciliationEndDate', dataIndex: 'roomId',
key: 'reconciliationEndDate', scopedSlots: { customRender: 'roomId' },
key: 'roomId',
width: 140,
align: 'center', align: 'center',
}, },
{ {
title: '费用', title: '金额(元)',
dataIndex: 'reconciliationAmount', dataIndex: 'totalAmount',
key: 'reconciliationAmount', key: 'totalAmount',
width: 120,
align: 'center', align: 'center',
}, },
{ {
title: '缴费日期', title: '本期读表时间',
dataIndex: 'updateTime', dataIndex: 'meterReadingTime',
key: 'updateTime', key: 'meterReadingTime',
width: 150,
align: 'center', align: 'center',
}, },
// {
// title: '缴费状态',
// dataIndex: 'paymentStatus',
// key: 'paymentStatus',
// width: 120,
// align: 'center',
// customRender: function (text) {
// return filterDictTextByStatic(PAYMENT_STATUS, text)
// },
// },
{ {
title: '缴费单号', title: '缴费单号',
dataIndex: 'empowerCommunityNum', dataIndex: 'paymentNum',
key: 'empowerCommunityNum', key: 'paymentNum',
// customRender: function (text) { width: 120,
// return filterDictTextByCache('companyAuditStatus', text) align: 'center',
// }, },
{
title: '缴费日期',
dataIndex: 'paymentTime',
key: 'paymentTime',
width: 150,
align: 'center',
}, },
{ {
title: '创建日期', title: '创建日期',
dataIndex: 'createTime',
key: 'createTime',
width: 150,
align: 'center',
}
]
const recordColumns = [
{
title: '审核平台',
dataIndex: 'platformName',
key: 'platformName',
width: 100,
align: 'center',
},
{
title: '审核状态',
dataIndex: 'auditStatus', dataIndex: 'auditStatus',
key: 'auditStatus', key: 'auditStatus',
width: 100,
align: 'center',
// customRender: (text)=> {
// return filterDictTextByStatic(RECONCILIATION_STATUS, text)
// },
}, },
{
title: '审核说明',
dataIndex: 'refuseDesc',
key: 'refuseDesc',
width: 200,
align: 'center',
ellipsis: true
},
{
title: '审核人',
dataIndex: 'createBy',
key: 'createBy',
width: 100,
align: 'center'
},
{
title: '审核时间',
dataIndex: 'createTime',
key: 'createTime',
width: 100,
align: 'center',
}
] ]
export default { export default {
name: 'PropertySettledForm', name: 'PropertySettledForm',
inject: ['closeCurrent'], inject: ['closeCurrent'],
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
data() { data() {
const validateToNextPhone = (rule, value, callback) => {
if (value && isMobile(value)) {
callback()
} else {
callback('请输入正确的联系人电话!')
}
}
const validateCode = (rule, value, callback) => {
if (value && validateCreditCode(value)) {
callback()
} else {
callback('社会统一信用代码输入错误')
}
}
return { return {
title: '', title: '',
pageType: '', pageType: '',
pcaa: this.$Jpcaa, model: {},
model: {
propertyName: '234234234',
creditCode: '2023-03-22',
legalName: '2023-06-22',
registCapital: 'ADMIN',
contactName: '2023-06-23',
image: ''
},
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 6 }, sm: { span: 6 },
...@@ -168,89 +225,55 @@ export default { ...@@ -168,89 +225,55 @@ export default {
sm: { span: 16 }, sm: { span: 16 },
}, },
confirmLoading: false, confirmLoading: false,
validatorRules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }, { validator: validateCode }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [
{ required: true, message: '请输入联系人电话', trigger: 'blur' },
{ validator: validateToNextPhone },
],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
empowerBeginDate: [{ required: true, message: '请选择授权开始日期', trigger: 'change' }],
empowerEndDate: [{ required: true, message: '请选择权结束日期', trigger: 'change' }],
empowerCommunityNum: [{ required: true, message: '请输入授权小区数量', trigger: 'blur' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
adminLoginName: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }],
adminPassword: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }],
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }],
},
url: { url: {
add: '/property-central/property/propertySettled/add',
edit: '/property-central/property/propertySettled/edit',
queryById: '/property-central/property/propertySettled/queryById', queryById: '/property-central/property/propertySettled/queryById',
list: '/property-central/property/communityReconciliation/communityAccountPage' list: '/property-central/property/communityReconciliation/communityAccountPage'
}, },
costList: [],
mapRef: null,
columns: columns, columns: columns,
loading: false, recordColumns: recordColumns,
dataSource: [ recordList: [],
{propertyName: '汉江之星小区', creditCode: '物业费', reconciliationBeginDate: '张飒,15198765634',reaship: '租户', reconcilname: '李白,15165245634', reconciliationEndDate: '2栋2单元101', reconciliationAmount: '345.23', updateTime: '2023-04-05', empowerCommunityNum: 'LD23423843223', auditStatus: '2023-05-06'}, auditDescription: ''
{propertyName: '汉江之星小区', creditCode: '水费', reconciliationBeginDate: '李生,1515235634',reaship: '本人', reconcilname: '李生,1515235634', reconciliationEndDate: '1栋2单元301', reconciliationAmount: '1345.45', updateTime: '2023-05-05', empowerCommunityNum: 'DFG2342342323', auditStatus: '2023-05-16'},
{propertyName: '汉江之星小区', creditCode: '电费', reconciliationBeginDate: '李丽,19812348976',reaship: '租户', reconcilname: '张飒,15198765634', reconciliationEndDate: '9栋1单元401', reconciliationAmount: '34234', updateTime: '2023-02-06', empowerCommunityNum: 'JTR323422', auditStatus: '2023-03-06'},
{propertyName: '汉江之星小区', creditCode: '水费', reconciliationBeginDate: '张盛,1890987567',reaship: '本人', reconcilname: '张盛,1890987567', reconciliationEndDate: '4栋2单元403', reconciliationAmount: '34', updateTime: '2023-06-07', empowerCommunityNum: 'DFGD32423423', auditStatus: '2023-04-23'},
{propertyName: '汉江之星小区', creditCode: '燃气费', reconciliationBeginDate: '李婷婷,18809875634',reaship: '租户', reconcilname: '话梅,15198765634', reconciliationEndDate: '9栋2单元1201', reconciliationAmount: '654', updateTime: '2023-05-06', empowerCommunityNum: 'FDBEWRW2342342', auditStatus: '2023-06-26'},
]
} }
}, },
methods: { methods: {
async onLoadCostList() { async getCommunityReconciliation() {
let data = await getPropertyChargruleListApi() let formModel = await getDetailReconciliationApi({
this.costList = data.result id: this.$route.query.id
}, })
async getPageDetail() { this.model = {...formModel.result}
let { result } = await getPropertyDetailApi({ id: this.$route.query.id }) let formList = await getAccountListByIdApi({
this.edit(result) reconciliationId: this.$route.query.id
})
this.dataSource = [...formList.result.records]
let record = await getCommunityRecordListApi({
dataId: this.$route.query.id,
auditType: 'reconciliation'
})
this.recordList = [...record.result]
}, },
onCancel() { onCancel() {
this.closeCurrent() this.closeCurrent()
}, },
contactPhoneChange(e) {
if(!this.model.adminLoginName) {
this.model.adminLoginName = e.target.value
}
},
edit(record) { edit(record) {
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.model.registAdress = [record.provinceCode, record.cityCode, record.countyCode] this.model.registAdress = [record.provinceCode, record.cityCode, record.countyCode]
this.visible = true this.visible = true
}, },
onExamine(type) { onExamine(type) {
this.closeCurrent() companyAuditAccountPageApi({
// const that = this auditStatus: type === 1 ? 'auditPass' : 'refuse',
// if (type == 1) { id: this.$route.query.id,
// return auditPropertyApi({ refuseDesc: this.auditDescription
// id: this.$route.query.id, }).then(res=> {
// auditStatus: 'auditPass', this.$message.success(`${type === 1 ? '审核' : '驳回'}成功!`)
// }).then((res) => { this.closeCurrent()
// that.$message.success('审核通过成功') })
// that.$emit('ok')
// this.closeCurrent()
// })
// } else if (type == 2) {
// return auditPropertyApi({
// id: this.$route.query.id,
// auditStatus: 'refuse',
// }).then((res) => {
// that.$message.success('审核驳回成功')
// this.closeCurrent()
// })
// }
}, },
submitForm() { submitForm() {
const that = this const that = this
// 触发表单验证 // 触发表单验证
...@@ -288,22 +311,13 @@ export default { ...@@ -288,22 +311,13 @@ export default {
} }
}, },
mounted() { mounted() {
//备份model原始值
//this.modelDefault = JSON.parse(JSON.stringify(this.model))
// this.onLoadCostList()
this.pageType = this.$route.query.type this.pageType = this.$route.query.type
if (this.$route.query.type == '1') { if (this.$route.query.type == '1') {
this.title = '详情' this.title = '详情'
} else if (this.$route.query.type == '2') { } else{
this.title = '审核' this.title = '审核'
} else if (this.$route.query.type == '3') {
this.title = '拨款'
} }
console.log(this.title) this.getCommunityReconciliation()
console.log(this.pageType)
// if (this.$route.query.id) {
// this.getPageDetail()
// }
} }
} }
</script> </script>
......
...@@ -6,19 +6,31 @@ ...@@ -6,19 +6,31 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="对账单号"> <a-form-item label="对账单号">
<j-input placeholder="请输入对账单号" v-model="queryParam.propertyName"></j-input> <j-input placeholder="请输入对账单号" v-model="queryParam.id"></j-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="小区名称"> <a-form-item label="小区名称">
<j-input placeholder="请输入小区名称" v-model="queryParam.propertyName"></j-input> <j-input placeholder="请输入小区名称" v-model="queryParam.platformName"></j-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="8" :sm="10"> <a-col :md="6" :sm="8">
<a-form-item label="缴费日期"> <a-form-item label="对账开始时间">
<a-range-picker @change="onChange" /> <a-date-picker placeholder="对账开始时间" valueFormat="YYYY-MM-DD 00:00:00" v-model="queryParam.beginDate"></a-date-picker>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md="6" :sm="8">
<a-form-item label="对账结束时间">
<a-date-picker placeholder="对账结束时间" valueFormat="YYYY-MM-DD 23:59:59" v-model="queryParam.endDate"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="对账状态">
<a-select style="width: 100%" v-model="queryParam.centralAuditStatus" placeholder="请选择对账状态">
<a-select-option v-for="item in audioStatusList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24"> <a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button> <a-button type="primary" @click="searchQuery">查询</a-button>
...@@ -30,57 +42,29 @@ ...@@ -30,57 +42,29 @@
</div> </div>
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <!-- <div class="table-operator">
<!-- <a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button> -->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0"> <a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item> <a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
</a-menu> </a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown> </a-dropdown>
</div> </div> -->
<!-- table区域-begin --> <!-- table区域-begin -->
<div> <div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> -->
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns" <a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange"> :dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="empowerEndDate" slot-scope="text, record">
<span v-if="record.empowerEndDate">{{record.empowerBeginDate}}{{record.empowerEndDate}} </span>
</span>
<span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span>
<span slot="expirationStatus" slot-scope="text, record">
<a-tag>{{record.expirationStatus === 'notStarted' ? '未开始' :record.expirationStatus === 'normal' ? '正常' :record.expirationStatus === 'soonExpired' ? '即将到期' :record.expirationStatus === 'expire' ? '已过期' : ''}}</a-tag>
</span>
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a> <a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.centralAuditStatus === 'centralWaitAudit'">
<a-divider type="vertical" /> <a-divider type="vertical" />
<a-dropdown> <a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
<a class="ant-dropdown-link"> </template>
更多 <a-icon type="down" /> <template v-if="record.centralAuditStatus === 'centralAuditPass' && record.appropriationStatus !== 'appropriationed'">
</a> <a-divider type="vertical" />
<a-menu slot="overlay"> <a href="javascript:;" @click="onReconciliation(record.id)">拨款</a>
<!-- <a-menu-item v-if="record.auditStatus === 'auditPass'"> </template>
<a @click="handlePerssion(record.roleId)">授权</a>
</a-menu-item> -->
<a-menu-item>
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="propertyDetails(3, record.id)">拨款</a>
</a-menu-item>
</a-menu>
</a-dropdown>
</span> </span>
</a-table> </a-table>
...@@ -95,11 +79,11 @@ ...@@ -95,11 +79,11 @@
</template> </template>
<script> <script>
import { auditPropertyApi, freezeOrPropertyApi } from '@/api/api' import { appropriationApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import PropertySettledModal from './modules/PropertySettledModal' import PropertySettledModal from './modules/PropertySettledModal'
import UserRoleModal from './modules/UserRoleModal' import UserRoleModal from './modules/UserRoleModal'
import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil' import { filterDictTextByStatic, COMPANY_AUDIT_STATUS, CENTRAL_AUDIT_STATUS, APPROPRIATION_STATUS } from '@/assets/static.js'
const columns = [ const columns = [
{ {
...@@ -110,8 +94,8 @@ const columns = [ ...@@ -110,8 +94,8 @@ const columns = [
}, },
{ {
title: '所属小区', title: '所属小区',
dataIndex: 'creditCode', dataIndex: 'platformName',
key: 'creditCode', key: 'platformName',
align: 'center', align: 'center',
}, },
{ {
...@@ -140,29 +124,39 @@ const columns = [ ...@@ -140,29 +124,39 @@ const columns = [
}, },
{ {
title: '操作日期', title: '操作日期',
dataIndex: 'updateTime', dataIndex: 'createTime',
key: 'updateTime', key: 'createTime',
align: 'center', align: 'center',
}, },
{ {
title: '操作人', title: '操作人',
dataIndex: 'empowerCommunityNum', dataIndex: 'createBy',
key: 'empowerCommunityNum', key: 'createBy',
align: 'center', align: 'center',
}, },
{ {
title: '审核状态', title: '审核状态',
dataIndex: 'auditStatus', dataIndex: 'centralAuditStatus',
scopedSlots: { customRender: 'auditStatus' }, customRender: function (text) {
return filterDictTextByStatic(CENTRAL_AUDIT_STATUS, text)
},
align: 'center', align: 'center',
}, },
{ {
title: '公司审核状态', title: '物业审核状态',
dataIndex: 'companyAuditStatus', dataIndex: 'companyAuditStatus',
key: 'companyAuditStatus', key: 'companyAuditStatus',
// customRender: function (text) { customRender: function (text) {
// return filterDictTextByCache('companyAuditStatus', text) return filterDictTextByStatic(COMPANY_AUDIT_STATUS, text)
// }, }
},
{
title: '拨款状态',
dataIndex: 'appropriationStatus',
customRender: function (text) {
return filterDictTextByStatic(APPROPRIATION_STATUS, text)
},
align: 'center',
}, },
{ {
title: '操作', title: '操作',
...@@ -183,25 +177,13 @@ export default { ...@@ -183,25 +177,13 @@ export default {
}, },
data() { data() {
return { return {
// 表头 audioStatusList: CENTRAL_AUDIT_STATUS,
columns: columns, columns: columns,
loading: false,
url: { url: {
list: '/property-central/property/communityReconciliation/list', list: '/property-community/property/communityReconciliation/centralAuditList',
delete: '/property-central/property/communityReconciliation/delete', delete: '/property-central/property/communityReconciliation/delete',
deleteBatch: '/property-central/property/communityReconciliation/deleteBatch', deleteBatch: '/property-central/property/communityReconciliation/deleteBatch',
}, }
dataSource: [
{id: 'JD239423', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-01', reconciliationEndDate: '2023-02-03', reconciliationAmount: '345.23', updateTime: '2023-04-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'JD453454', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-04-06', reconciliationEndDate: '2023-06-03', reconciliationAmount: '1345.45', updateTime: '2023-05-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
{id: 'JD567454', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-02-05', reconciliationEndDate: '2023-02-23', reconciliationAmount: '34234', updateTime: '2023-02-06', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'KF343455', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-11-01', reconciliationEndDate: '2023-01-03', reconciliationAmount: '34', updateTime: '2023-06-07', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
{id: 'KD435345', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-01-21', reconciliationEndDate: '2022-10-03', reconciliationAmount: '654', updateTime: '2023-05-06', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'LG345352', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2022-01-10', reconciliationEndDate: '2022-02-03', reconciliationAmount: '897.98', updateTime: '2023-05-08', empowerCommunityNum: 'admin', auditStatus: '待审核', companyAuditStatus: '待审核'},
{id: 'MG345354', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-04', reconciliationEndDate: '2023-06-03', reconciliationAmount: '234', updateTime: '2023-05-05', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'LB345353', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-02-01', reconciliationEndDate: '2023-05-03', reconciliationAmount: '1000', updateTime: '2023-04-04', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '待审核'},
{id: 'LC234234', creditCode: '汉江之星小区', propertyName: '汉江之星物业集团', reconciliationBeginDate: '2023-01-23', reconciliationEndDate: '2023-02-03', reconciliationAmount: '3443', updateTime: '2023-01-02', empowerCommunityNum: 'admin', auditStatus: '审核通过', companyAuditStatus: '审核通过'},
]
} }
}, },
methods: { methods: {
...@@ -210,70 +192,21 @@ export default { ...@@ -210,70 +192,21 @@ export default {
path: '/settled/RecordDetails?id=' + id +'&type=' + type, path: '/settled/RecordDetails?id=' + id +'&type=' + type,
}) })
}, },
onLoadDetail(record, type) { onReconciliation(id) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if (type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onChange(date, dateString) {
if (dateString.length > 0) {
this.queryParam.createTime_begin = dateString[0]
this.queryParam.createTime_end = dateString[1]
} else {
this.queryParam.createTime_begin = ''
this.queryParam.createTime_end = ''
}
},
onExamine(record) {
let that = this
this.$confirm({
title: '确认审核此物业?',
closable: true,
okText: '审核通过',
cancelText: '审核驳回',
onOk() {
return auditPropertyApi({
id: record.id,
auditStatus: 'auditPass',
}).then((res) => {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse',
}).then((res) => {
that.searchQuery()
})
},
})
},
onStatus(record) {
let that = this let that = this
this.$confirm({ this.$confirm({
title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`, title: '确认要拨款吗?',
closable: true, closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`, okText: '确认',
onOk() { onOk() {
return freezeOrPropertyApi({ return appropriationApi({
id: record.id, id
status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => { }).then((res) => {
that.$message.success('拨款成功!')
that.searchQuery() that.searchQuery()
}) })
}, }
onCancel() {},
}) })
},
handlePerssion(roleId) {
this.$refs.modalUserRole.show(roleId)
},
loadData() {
console.log('不请求')
} }
}, },
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论