Commit db60e390 by qinjianhui

feat: 对账单、发货单开发

parent e87346cd
...@@ -45,9 +45,12 @@ declare module 'vue' { ...@@ -45,9 +45,12 @@ declare module 'vue' {
ImageView: typeof import('./src/components/ImageView.vue')['default'] ImageView: typeof import('./src/components/ImageView.vue')['default']
LogList: typeof import('./src/components/LogList.vue')['default'] LogList: typeof import('./src/components/LogList.vue')['default']
NavMenu: typeof import('./src/components/NavMenu.vue')['default'] NavMenu: typeof import('./src/components/NavMenu.vue')['default']
RenderColumn: typeof import('./src/components/RenderColumn.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView'] RouterView: typeof import('vue-router')['RouterView']
ShipmentOrderDetail: typeof import('./src/components/ShipmentOrderDetail.vue')['default']
SplitDiv: typeof import('./src/components/splitDiv/splitDiv.vue')['default'] SplitDiv: typeof import('./src/components/splitDiv/splitDiv.vue')['default']
TableColumn: typeof import('./src/components/TableColumn.vue')['default']
TableView: typeof import('./src/components/TableView.vue')['default'] TableView: typeof import('./src/components/TableView.vue')['default']
UploadImage: typeof import('./src/components/UploadImage.vue')['default'] UploadImage: typeof import('./src/components/UploadImage.vue')['default']
WangEditor: typeof import('./src/components/WangEditor.vue')['default'] WangEditor: typeof import('./src/components/WangEditor.vue')['default']
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
"@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/eslint-plugin": "^7.1.1",
"@typescript-eslint/parser": "^7.1.1", "@typescript-eslint/parser": "^7.1.1",
"@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^4.1.0",
"@vue/eslint-config-typescript": "^12.0.0", "@vue/eslint-config-typescript": "^12.0.0",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
...@@ -48,6 +49,19 @@ ...@@ -48,6 +49,19 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@antfu/install-pkg": { "node_modules/@antfu/install-pkg": {
"version": "0.3.1", "version": "0.3.1",
"resolved": "https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-0.3.1.tgz", "resolved": "https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-0.3.1.tgz",
...@@ -69,9 +83,263 @@ ...@@ -69,9 +83,263 @@
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
} }
}, },
"node_modules/@babel/code-frame": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.25.9",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
"integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
"@babel/generator": "^7.26.0",
"@babel/helper-compilation-targets": "^7.25.9",
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helpers": "^7.26.0",
"@babel/parser": "^7.26.0",
"@babel/template": "^7.25.9",
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.26.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
"json5": "^2.2.3",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/babel"
}
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
"integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
"dev": true,
"dependencies": {
"@babel/parser": "^7.26.2",
"@babel/types": "^7.26.0",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
"integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dev": true,
"dependencies": {
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
"integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
"dev": true,
"dependencies": {
"@babel/compat-data": "^7.25.9",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"dependencies": {
"yallist": "^3.0.2"
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
"integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.9",
"@babel/helper-member-expression-to-functions": "^7.25.9",
"@babel/helper-optimise-call-expression": "^7.25.9",
"@babel/helper-replace-supers": "^7.25.9",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
"@babel/traverse": "^7.25.9",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
"integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dev": true,
"dependencies": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
"integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dev": true,
"dependencies": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
"integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dev": true,
"dependencies": {
"@babel/helper-module-imports": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9",
"@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
"integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dev": true,
"dependencies": {
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
"integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-replace-supers": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
"integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
"dev": true,
"dependencies": {
"@babel/helper-member-expression-to-functions": "^7.25.9",
"@babel/helper-optimise-call-expression": "^7.25.9",
"@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
"integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dev": true,
"dependencies": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": { "node_modules/@babel/helper-string-parser": {
"version": "7.25.9", "version": "7.25.9",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
...@@ -79,15 +347,37 @@ ...@@ -79,15 +347,37 @@
}, },
"node_modules/@babel/helper-validator-identifier": { "node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9", "version": "7.25.9",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/helper-validator-option": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
"integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
"integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
"dev": true,
"dependencies": {
"@babel/template": "^7.25.9",
"@babel/types": "^7.26.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.26.2", "version": "7.26.2",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
"dependencies": { "dependencies": {
"@babel/types": "^7.26.0" "@babel/types": "^7.26.0"
...@@ -99,6 +389,55 @@ ...@@ -99,6 +389,55 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
"integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-syntax-typescript": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
"integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-transform-typescript": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz",
"integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.25.9",
"@babel/helper-create-class-features-plugin": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9",
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
"@babel/plugin-syntax-typescript": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/runtime": { "node_modules/@babel/runtime": {
"version": "7.25.7", "version": "7.25.7",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
...@@ -110,9 +449,50 @@ ...@@ -110,9 +449,50 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/template": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
"integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.25.9",
"@babel/parser": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
"integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.25.9",
"@babel/generator": "^7.25.9",
"@babel/parser": "^7.25.9",
"@babel/template": "^7.25.9",
"@babel/types": "^7.25.9",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.26.0", "version": "7.26.0",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
"dependencies": { "dependencies": {
"@babel/helper-string-parser": "^7.25.9", "@babel/helper-string-parser": "^7.25.9",
...@@ -800,10 +1180,52 @@ ...@@ -800,10 +1180,52 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": { "node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15", "version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
}, },
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
...@@ -1370,6 +1792,24 @@ ...@@ -1370,6 +1792,24 @@
"vue": "^3.2.25" "vue": "^3.2.25"
} }
}, },
"node_modules/@vitejs/plugin-vue-jsx": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.0.tgz",
"integrity": "sha512-KuRejz7KAFvhXDzOudlaS2IyygAwoAEEMtHAdcRSy/8cA5iKH043Qudcz48zsC0M0vvN5iKwIwNMuWbBYn6/Yg==",
"dev": true,
"dependencies": {
"@babel/core": "^7.26.0",
"@babel/plugin-transform-typescript": "^7.25.9",
"@vue/babel-plugin-jsx": "^1.2.5"
},
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
"peerDependencies": {
"vite": "^5.0.0",
"vue": "^3.0.0"
}
},
"node_modules/@volar/language-core": { "node_modules/@volar/language-core": {
"version": "2.4.10", "version": "2.4.10",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.10.tgz", "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.10.tgz",
...@@ -1393,6 +1833,110 @@ ...@@ -1393,6 +1833,110 @@
"vscode-uri": "^3.0.8" "vscode-uri": "^3.0.8"
} }
}, },
"node_modules/@vue/babel-helper-vue-transform-on": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz",
"integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==",
"dev": true
},
"node_modules/@vue/babel-plugin-jsx": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz",
"integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==",
"dev": true,
"dependencies": {
"@babel/helper-module-imports": "^7.24.7",
"@babel/helper-plugin-utils": "^7.24.8",
"@babel/plugin-syntax-jsx": "^7.24.7",
"@babel/template": "^7.25.0",
"@babel/traverse": "^7.25.6",
"@babel/types": "^7.25.6",
"@vue/babel-helper-vue-transform-on": "1.2.5",
"@vue/babel-plugin-resolve-type": "1.2.5",
"html-tags": "^3.3.1",
"svg-tags": "^1.0.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
"peerDependenciesMeta": {
"@babel/core": {
"optional": true
}
}
},
"node_modules/@vue/babel-plugin-resolve-type": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz",
"integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.24.7",
"@babel/helper-module-imports": "^7.24.7",
"@babel/helper-plugin-utils": "^7.24.8",
"@babel/parser": "^7.25.6",
"@vue/compiler-sfc": "^3.5.3"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
"integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
"dev": true,
"dependencies": {
"@babel/parser": "^7.25.3",
"@vue/shared": "3.5.12",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
"integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
"dev": true,
"dependencies": {
"@vue/compiler-core": "3.5.12",
"@vue/shared": "3.5.12"
}
},
"node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
"integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
"dev": true,
"dependencies": {
"@babel/parser": "^7.25.3",
"@vue/compiler-core": "3.5.12",
"@vue/compiler-dom": "3.5.12",
"@vue/compiler-ssr": "3.5.12",
"@vue/shared": "3.5.12",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.11",
"postcss": "^8.4.47",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
"integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
"dev": true,
"dependencies": {
"@vue/compiler-dom": "3.5.12",
"@vue/shared": "3.5.12"
}
},
"node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
"dev": true
},
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.4.20", "version": "3.4.20",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.20.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.20.tgz",
...@@ -2100,6 +2644,38 @@ ...@@ -2100,6 +2644,38 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/browserslist": {
"version": "4.24.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
"integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"caniuse-lite": "^1.0.30001669",
"electron-to-chromium": "^1.5.41",
"node-releases": "^2.0.18",
"update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
"node_modules/callsites": { "node_modules/callsites": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
...@@ -2109,6 +2685,26 @@ ...@@ -2109,6 +2685,26 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/caniuse-lite": {
"version": "1.0.30001680",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
},
"node_modules/chalk": { "node_modules/chalk": {
"version": "4.1.2", "version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
...@@ -2189,6 +2785,12 @@ ...@@ -2189,6 +2785,12 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true "dev": true
}, },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
"version": "7.0.3", "version": "7.0.3",
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
...@@ -2310,6 +2912,12 @@ ...@@ -2310,6 +2912,12 @@
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz",
"integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==" "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ=="
}, },
"node_modules/electron-to-chromium": {
"version": "1.5.55",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz",
"integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==",
"dev": true
},
"node_modules/element-plus": { "node_modules/element-plus": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.6.0.tgz", "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.6.0.tgz",
...@@ -2440,6 +3048,15 @@ ...@@ -2440,6 +3048,15 @@
"@esbuild/win32-x64": "0.19.12" "@esbuild/win32-x64": "0.19.12"
} }
}, },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/escape-html": { "node_modules/escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
...@@ -2901,6 +3518,15 @@ ...@@ -2901,6 +3518,15 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/get-stream": { "node_modules/get-stream": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz",
...@@ -3038,6 +3664,18 @@ ...@@ -3038,6 +3664,18 @@
"he": "bin/he" "he": "bin/he"
} }
}, },
"node_modules/html-tags": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
"integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/html-void-elements": { "node_modules/html-void-elements": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
...@@ -3232,6 +3870,12 @@ ...@@ -3232,6 +3870,12 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true "dev": true
}, },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"node_modules/js-yaml": { "node_modules/js-yaml": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
...@@ -3244,6 +3888,18 @@ ...@@ -3244,6 +3888,18 @@
"js-yaml": "bin/js-yaml.js" "js-yaml": "bin/js-yaml.js"
} }
}, },
"node_modules/jsesc": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
"integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
"node": ">=6"
}
},
"node_modules/json-buffer": { "node_modules/json-buffer": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz",
...@@ -3262,6 +3918,18 @@ ...@@ -3262,6 +3918,18 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true "dev": true
}, },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"bin": {
"json5": "lib/cli.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/jsonc-parser": { "node_modules/jsonc-parser": {
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz", "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
...@@ -3400,14 +4068,11 @@ ...@@ -3400,14 +4068,11 @@
} }
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.7", "version": "0.30.12",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.7.tgz", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
"integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15" "@jridgewell/sourcemap-codec": "^1.5.0"
},
"engines": {
"node": ">=12"
} }
}, },
"node_modules/memoize-one": { "node_modules/memoize-one": {
...@@ -3576,6 +4241,12 @@ ...@@ -3576,6 +4241,12 @@
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
}, },
"node_modules/node-releases": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
"dev": true
},
"node_modules/normalize-path": { "node_modules/normalize-path": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
...@@ -3766,9 +4437,9 @@ ...@@ -3766,9 +4437,9 @@
"dev": true "dev": true
}, },
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.0.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
...@@ -3844,9 +4515,9 @@ ...@@ -3844,9 +4515,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.35", "version": "8.4.48",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.35.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.48.tgz",
"integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "integrity": "sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
...@@ -3863,8 +4534,8 @@ ...@@ -3863,8 +4534,8 @@
], ],
"dependencies": { "dependencies": {
"nanoid": "^3.3.7", "nanoid": "^3.3.7",
"picocolors": "^1.0.0", "picocolors": "^1.1.1",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.1"
}, },
"engines": { "engines": {
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
...@@ -4209,9 +4880,9 @@ ...@@ -4209,9 +4880,9 @@
} }
}, },
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.2.0", "version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
...@@ -4301,6 +4972,12 @@ ...@@ -4301,6 +4972,12 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/svg-tags": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
"node_modules/text-table": { "node_modules/text-table": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
...@@ -4553,6 +5230,36 @@ ...@@ -4553,6 +5230,36 @@
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
} }
}, },
"node_modules/update-browserslist-db": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"escalade": "^3.2.0",
"picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
}
},
"node_modules/uri-js": { "node_modules/uri-js": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
"@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/eslint-plugin": "^7.1.1",
"@typescript-eslint/parser": "^7.1.1", "@typescript-eslint/parser": "^7.1.1",
"@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^4.1.0",
"@vue/eslint-config-typescript": "^12.0.0", "@vue/eslint-config-typescript": "^12.0.0",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
......
...@@ -28,4 +28,9 @@ div { ...@@ -28,4 +28,9 @@ div {
li { li {
list-style: none; list-style: none;
} }
ul,
li {
margin: 0;
padding: 0;
}
</style> </style>
import { BasePaginationData, BaseRespData, StatisticsData } from '@/types/api' import { BasePaginationData, BaseRespData } from '@/types/api'
import axios from './axios' import axios from './axios'
import { import {
LogListData, LogListData,
...@@ -10,16 +10,19 @@ import { ...@@ -10,16 +10,19 @@ import {
ShipmentOrderRes, ShipmentOrderRes,
Tab, Tab,
InspectionData, InspectionData,
CountStatus,
Confirm,
} from '@/types/api/order' } from '@/types/api/order'
import { import {
AccountStatementNote,
AccountStatementNoteSearchForm,
DeliveryNoteData, DeliveryNoteData,
DeliveryNoteSearchForm, DeliveryNoteSearchForm,
ProductionOrder, ProductionOrder,
ShipmentOrderDetailData,
} from '@/types/api/deliveryNote' } from '@/types/api/deliveryNote'
import {
AccountStatementNote,
AccountStatementNoteSearchForm,
BillOrderDetailData,
CountStatus,
} from '@/types/api/billOrder'
export function getOrderList( export function getOrderList(
data: SearchForm, data: SearchForm,
...@@ -233,8 +236,8 @@ export function customJomallReconciliation( ...@@ -233,8 +236,8 @@ export function customJomallReconciliation(
currentPage: number, currentPage: number,
pageSize: number, pageSize: number,
) { ) {
return axios.post<never, StatisticsData<AccountStatementNote>>( return axios.post<never, BasePaginationData<AccountStatementNote>>(
'factory/customJomallReconciliation/list_page', 'reconciliation/list',
{ {
...data, ...data,
currentPage, currentPage,
...@@ -285,7 +288,7 @@ export function getOrderByIdApi(id?: number) { ...@@ -285,7 +288,7 @@ export function getOrderByIdApi(id?: number) {
export function getReconciliationAmount(id?: number) { export function getReconciliationAmount(id?: number) {
return axios.get<never, BaseRespData<CountStatus[]>>( return axios.get<never, BaseRespData<CountStatus[]>>(
'factory/customJomallReconciliation/getReconciliationAmount', 'reconciliation/groupCount',
{ {
params: { params: {
id, id,
...@@ -323,17 +326,30 @@ export function updateReconciliation(data: AccountStatementNote) { ...@@ -323,17 +326,30 @@ export function updateReconciliation(data: AccountStatementNote) {
) )
} }
export function getShipmentDetailsById(shipmentId?: string) { export function getShipmentDetailsById(shipmentId?: number) {
return axios.get<never, BaseRespData<AccountStatementNote[]>>( return axios.get<never, BaseRespData<BillOrderDetailData>>(
'factory/customJomallReconciliation/getShipmentDetailsById', 'reconciliation/getById',
{ {
params: { params: {
shipmentId, id: shipmentId,
}, },
}, },
) )
} }
export function auditOrderApi(url: string, data: string) {
export function factoryConfirm(data: Confirm[]) { return axios.get(url, {
return axios.post('factory/customJomallReconciliation/factoryConfirm', data) params: {
ids: data,
},
})
}
export function getShipmentOrderDetailById(id?: number | string) {
return axios.get<never, BaseRespData<ShipmentOrderDetailData>>(
'reconciliation/getShipmentByShipmentId',
{
params: {
id,
},
},
)
} }
<template>
<template v-if="col.subs?.length">
<ElTableColumn header-align="center" :label="col.label" :align="col.align" v-bind="col">
<RenderColumn v-for="item in col.children" :col="item" :key="item.prop">
<template
v-for="slot in Object.keys($slots)"
#[slot]="scope: Record<string, any>"
>
<slot :name="slot" v-bind="scope" />
</template>
</RenderColumn>
<template #header="{ column, $index }">
<component
:is="col.headerRender"
v-if="col.headerRender"
:column="column"
:index="$index"
/>
<slot
v-else-if="col.headerSlot"
:name="col.headerSlot"
:column="column"
:index="$index"
></slot>
<span v-else>{{ column.label }}</span>
</template>
</ElTableColumn>
</template>
<ElTableColumn v-else header-align="center" v-bind="col">
<template #header="{ column, $index }">
<component
:is="col.headerRender"
v-if="col.headerRender"
:column="column"
:index="$index"
/>
<slot
v-else-if="col.headerSlot"
:name="col.headerSlot"
:column="column"
:index="$index"
></slot>
<span v-else>{{ column.label }}</span>
</template>
<template #default="{ row, $index }">
<template v-if="col.formatDate">
<span>{{ col.formatDate(row) }}</span>
</template>
<!-- 如果传递按钮数组,就展示按钮组 END-->
<!-- render函数 (START) 使用内置的component组件可以支持h函数渲染和txs语法-->
<component
:is="col.render"
v-if="col.render"
:row="row"
:index="$index"
/>
<slot
v-else-if="col.slot"
:name="col.slot"
:row="row"
:index="$index"
></slot>
<span v-else>{{ row[col.prop!] }}</span>
</template>
</ElTableColumn>
</template>
<script lang="ts" setup>
import type { Column } from 'element-plus'
import type { PropType } from 'vue'
defineProps({
col: {
type: Object as PropType<Column>,
required: true,
},
})
</script>
<template>
<div class="shipment-order-detail">
<div class="order-detail_order-info">
<div class="order-detail_order-info--title title">发货单详情</div>
<div class="order-detail_order-info--content">
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">收货人电话:</span>
<span class="order-detail_order-info__value value flex-1">{{
detail.lanshou_phone || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">收货人:</span>
<span class="order-detail_order-info__value value flex-1">{{
detail.lanshou_name || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">邮编:</span>
<span class="order-detail_order-info__value value flex-1">{{
detail.lanshou_post || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex overflow-hidden">
<span
style="white-space: nowrap"
class="order-detail_order-info__label label"
>收货地址:</span
>
<span
class="order-detail_order-info__value value flex-1 text-ellipsis"
style="white-space: nowrap"
:title="`${detail.lanshou_region}${detail.lanshou_address}`"
>{{ `${detail.lanshou_region}${detail.lanshou_address}` }}</span
>
</div>
</div>
</div>
<div class="product-detail mt-10">
<div class="product-detail-title">
<span>产品详情</span>
</div>
<div class="product-detail-content">
<div
v-for="item in detail.detailList"
:key="item.id"
class="order-list-expand_item"
>
<div class="order-list-expand_item_img">
<img :src="item.variant_image" style="width: 100%; height: 100%" />
</div>
<div class="order-list-expand_item_info">
<div
:title="item.sub_order_number || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">生产单号:</span>
<span class="order-list-expand_item_value"
>{{ item.sub_order_number || '--'
}}<el-icon
class="icon"
@click="copy(item.sub_order_number || '')"
><DocumentCopy
/></el-icon>
</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">已发数:</span>
<span class="order-list-expand_item_value">{{
item.shipment_num || 0
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">质检(通过):</span>
<span class="order-list-expand_item_value">{{
item.pass_num || 0
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">质检(不通过):</span>
<span class="order-list-expand_item_value">{{
item.not_pass_num || 0
}}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { DocumentCopy } from '@element-plus/icons-vue'
defineProps({
detail: {
type: Object,
required: true,
},
})
const copy = (text: string) => {
navigator.clipboard.writeText(text)
ElMessage.success('复制成功')
}
</script>
<style lang="scss" scoped>
.order-detail_order-info--title.title {
font-size: 18px;
}
.order-detail_order-info--content {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
margin-top: 10px;
font-size: 14px;
}
.product-detail-title {
font-size: 18px;
}
.product-detail-content {
margin-top: 10px;
}
.order-list-expand_item {
display: grid;
font-size: 14px;
gap: 10px;
grid-template-columns: repeat(2, 1fr);
}
.order-list-expand_item_img {
width: 100px;
height: 100px;
}
.order-list-expand_item_info_title {
height: 30px;
line-height: 30px;
}
</style>
<template> <template>
<div class="table-view"> <div class="table-view">
<div></div> <ElTable
:data="paginatedData"
border
:stripe="stripe"
header-align="center"
height="100%"
>
<template v-for="column in columns" :key="column.key">
<ElTableColumn
v-if="
column.type === 'index' ||
column.type === 'selection' ||
column.type === 'expand'
"
v-bind="column"
header-align="center"
>
<!-- 当type等于expand时, 配置通过h函数渲染、txs语法或者插槽自定义内容 -->
<template #default="{ row, $index }">
<component
:is="column.render"
v-if="column.render"
:row="row"
:index="$index"
/>
<slot
v-else-if="column.slot"
name="expand"
:row="row"
:index="$index"
></slot>
</template>
</ElTableColumn>
<RenderColumn v-else :col="column">
<template
v-for="slot in Object.keys($slots)"
#[slot]="scope: Record<string, any>"
>
<slot :name="slot" v-bind="scope" />
</template>
</RenderColumn>
</template>
</ElTable>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="tsx">
import type { Column } from 'element-plus/lib/components/index.js'
import type { PropType } from 'vue'
import RenderColumn from './RenderColumn.vue'
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type DataItemType = Record<string, any>
defineProps({
paginatedData: {
type: Array as PropType<DataItemType[]>,
required: true,
},
columns: {
type: Array as PropType<Column[]>,
required: true,
},
stripe: {
type: Boolean,
default: false,
},
defaultSortProp: {
type: String,
default: '',
},
defaultSortOrder: {
type: String,
default: '',
},
})
</script> </script>
<style lang="scss" scoped></style>
\ No newline at end of file <style lang="scss" scoped>
.table-view {
height: 100%;
overflow: hidden;
}
</style>
...@@ -60,6 +60,12 @@ img { ...@@ -60,6 +60,12 @@ img {
.margin-top-10 { .margin-top-10 {
margin-top: 10px; margin-top: 10px;
} }
.mr-10 {
margin-right: 10px;
}
.mt-10 {
margin-top: 10px;
}
.margin-top-20 { .margin-top-20 {
margin-top: 20px; margin-top: 20px;
...@@ -95,3 +101,9 @@ img { ...@@ -95,3 +101,9 @@ img {
font-size: 16px; font-size: 16px;
cursor: pointer; cursor: pointer;
} }
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
export interface CountStatus {
id?: number
code?: number
count?: number
remark?: string
children?: CountStatus[]
}
export interface AccountStatementNoteSearchForm {
user_mark?: string
status?: number | string | null
dateRange?: string[]
bill_number?: string
rec_number?: string
factory_status?: string
erp_status?: string
start_time?: string
end_time?: string
}
export interface AccountStatementNote {
create_time?: string
pass_num?: number
factory_code?: string
num?: number
end_time?: string
rec_number?: string
not_pass_num?: number
factory_id?: number
start_time?: string
carriage_total_amount?: number
factory_status?: number
factory_total_amount?: number
user_mark?: string
erp_status?: number
id?: number
erp_total_amount?: number
dataVersion: ''
}
export interface BillOrderDetailData {
create_time?: string
pass_num: number
factory_code?: string
num?: number
end_time?: string
rec_number?: string
not_pass_num?: number
factory_id?: number
start_time?: string
carriage_total_amount?: number
factory_status?: number
factory_total_amount: number
user_mark?: string
logList?: LogList[]
erp_status?: number
itemList?: ItemList[]
id: number
erp_total_amount?: number
}
export interface LogList {
create_time?: string
employee_id?: number
info_id?: number
description?: string
id: string
employee_account?: string
}
export interface ItemList {
carriage_amount?: number
pass_num?: number
num?: number
factory_price?: number
shipment_id?: string
not_pass_num?: number
erp_order_number?: string
shipment_time?: string
bill_number?: string
erp_price?: number
info_id?: number
id: number
factory_order_number?: string
}
...@@ -9,12 +9,7 @@ export interface DeliveryNoteSearchForm { ...@@ -9,12 +9,7 @@ export interface DeliveryNoteSearchForm {
orderNumber?: string orderNumber?: string
namespace?: string namespace?: string
shippingWay?: number shippingWay?: number
} status?: number | null
export interface AccountStatementNoteSearchForm {
status?: string | null | number
startTime?: string
endTime?: string
} }
export interface DeliveryNoteData { export interface DeliveryNoteData {
...@@ -101,23 +96,89 @@ export interface ProductionOrder { ...@@ -101,23 +96,89 @@ export interface ProductionOrder {
notPassNum?: number notPassNum?: number
passNum?: number passNum?: number
} }
export interface AccountStatementNote{ export interface ShipmentOrderDetailData {
billNumber?:string carriage_amount?: string | number
shipmentId?:string lanshou_post?: string
userMark?:string carriage_name?: string
shipmentNum?:string create_time?: string
dataVersion?:string order_number?: string
carriageName?:string lanshou_address?: string
lanshouAddress?:string logistics_tracking?: string
totalPrice?:string update_time?: string
passNum?:string bill_number?: string
lanshouPost?:string lanshou_region?: string
notPassNum?:string user_mark?: string
lanshouRegion?:string detailList?: ShipmentDetailList[]
orderNumber?:string lanshou_phone?: string
lanshouName?:string id: string | number
lanshouPhone?:string shipping_way?: number
logisticsTracking?:string dbFactory?: DbFactory
totalAmount?:string lanshou_name?: string
id?:number inspection_status?: boolean
} facotory_no?: number
\ No newline at end of file }
export interface ShipmentDetailList {
product?: Product
create_time?: string
variant_image?: string
base_sku?: string
pass_num?: number
sub_order_number?: string
shipment_id?: string
custom_order_id?: string
custom_order_number?: string
not_pass_num?: number
update_time?: string
variant_sku?: string
id: number | string
shipment_num?: number
inspection_status?: boolean
}
export interface Product {
diy_id?: string
end_product_id?: string
base_sku?: string
num?: number
sub_order_number?: string
print_type?: number
custom_order_id?: string
erp_order_id?: string
erp_sub_order_number?: string
update_time?: string
erp_order_item_id?: string
price?: number
id: string
shipment_num?: number
cost_price?: string | number
erp_product_item_id?: number
erp_id?: string
create_time?: string
variant_image?: string
pass_num?: number
weight?: string | number
not_pass_num?: number
product_name?: string
version?: number
chima_id?: string
material?: string
variant_sku?: string
shop_number?: string
sales_price?: string | number
}
export interface DbFactory {
license?: string | number
goods_number?: number
type_id?: number
bianma?: string
name?: string
mobile?: string
ruzhu_date?: string
id: number
title?: string
create_date?: string
authorize_number?: number
status?: number
}
...@@ -24,11 +24,6 @@ export interface Tab { ...@@ -24,11 +24,6 @@ export interface Tab {
quantity: number quantity: number
} }
export interface CountStatus {
count?: number
status?: number
totalSum?: number
}
export interface OrderData { export interface OrderData {
id: number id: number
...@@ -257,11 +252,6 @@ export interface Reconciliation { ...@@ -257,11 +252,6 @@ export interface Reconciliation {
totalAmount?: string totalAmount?: string
id?: number id?: number
} }
export interface Confirm {
id: number | undefined
dataVersion: string | undefined
}
export interface shopRemark { export interface shopRemark {
resendNum?: number | undefined | null resendNum?: number | undefined | null
remark?: string | undefined | null remark?: string | undefined | null
......
<template> <template>
<div class="page"> <div class="page card h-100 flex-gap-10 overflow-hidden flex">
<div class="left"> <div class="left">
<ElTree <ElTree
ref="treeRef" default-expand-all :expand-on-click-node="false" :default-expanded-keys="[]" ref="treeRef"
:highlight-current="true" node-key="id" :data="treeData" @node-click="nodeClick"> default-expand-all
:expand-on-click-node="false"
:default-expanded-keys="[]"
:highlight-current="true"
node-key="code"
:data="treeData"
:props="{ children: 'children', label: 'remark' }"
@node-click="nodeClick"
>
<template #default="{ data }">
<div class="tree-node">
<div class="tree-node-label">{{ data.remark }}</div>
<div v-if="data.count || data.count === 0" class="tree-node-count">
{{ `(${data.count})` }}
</div>
</div>
</template>
</ElTree> </ElTree>
</div> </div>
<div class="right"> <div class="right">
...@@ -12,9 +28,9 @@ ...@@ -12,9 +28,9 @@
<template #top> <template #top>
<div class="header-filter-form"> <div class="header-filter-form">
<ElForm :model="searchForm" inline> <ElForm :model="searchForm" inline>
<ElFormItem label="客户"> <!-- <ElFormItem label="客户">
<ElSelect <ElSelect
v-model="searchForm.userMark" v-model="searchForm.user_mark"
clearable clearable
placeholder="请选择客户" placeholder="请选择客户"
style="width: 130px" style="width: 130px"
...@@ -26,11 +42,14 @@ ...@@ -26,11 +42,14 @@
:value="item" :value="item"
></ElOption> ></ElOption>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem> -->
<ElFormItem label="创建时间"> <ElFormItem label="创建时间">
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
:default-time="[new Date(0,0,0,0,0,0),new Date(0,0,0,23,59,59)]" :default-time="[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
type="datetimerange" type="datetimerange"
start-placeholder="开始时间" start-placeholder="开始时间"
end-placeholder="结束时间" end-placeholder="结束时间"
...@@ -43,44 +62,44 @@ ...@@ -43,44 +62,44 @@
<ElFormItem label="发货单号"> <ElFormItem label="发货单号">
<ElInput <ElInput
v-model="searchForm.billNumber" v-model="searchForm.bill_number"
clearable clearable
placeholder="发货单号" placeholder="发货单号"
style="width: 130px" style="width: 130px"
/> />
</ElFormItem> </ElFormItem>
<ElFormItem label="单号"> <ElFormItem label="对账单号">
<ElInput <ElInput
v-model="searchForm.orderNumber" v-model="searchForm.rec_number"
clearable clearable
placeholder="单号" placeholder="对账单号"
style="width: 160px" style="width: 160px"
/> />
</ElFormItem> </ElFormItem>
<ElFormItem label="物流跟踪号"> <!-- <ElFormItem label="物流跟踪号">
<ElInput <ElInput
v-model="searchForm.logisticsTracking" v-model="searchForm.logisticsTracking"
placeholder="物流跟踪号" placeholder="物流跟踪号"
clearable clearable
style="width: 160px" style="width: 160px"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem> -->
<ElFormItem label="物流名称"> <!-- <ElFormItem label="物流名称">
<ElInput <ElInput
v-model="searchForm.carriageName" v-model="searchForm.carriageName"
placeholder="物流名称" placeholder="物流名称"
clearable clearable
style="width: 160px" style="width: 160px"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem> -->
<ElFormItem label="收货人"> <!-- <ElFormItem label="收货人">
<ElInput <ElInput
v-model="searchForm.lanshouName" v-model="searchForm.lanshou_name"
placeholder="收货人" placeholder="收货人"
clearable clearable
style="width: 160px" style="width: 160px"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem> -->
<ElFormItem> <ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton> <ElButton type="primary" @click="search">查询</ElButton>
...@@ -88,15 +107,34 @@ ...@@ -88,15 +107,34 @@
<ElFormItem> <ElFormItem>
<ElButton @click="resetSearchForm">重置</ElButton> <ElButton @click="resetSearchForm">重置</ElButton>
</ElFormItem> </ElFormItem>
</ElForm> </ElForm>
</div> </div>
<div class="btn-list"> <div class="btn-list">
<el-button v-if="nodeId===0" type="primary" :disabled="selections.length===0" @click="sureFactory"> <el-button
v-if="nodeId === 10"
type="primary"
@click="auditOrder('confirm')"
>
确认对账单 确认对账单
</el-button> </el-button>
<el-button
v-if="nodeId === 20"
type="warning"
@click="auditOrder('pay')"
>
付款
</el-button>
<el-button
v-if="nodeId === 30"
type="danger"
@click="auditOrder('archive')"
>
归档
</el-button>
</div> </div>
<div class="delivery-note-content flex-1 flex-column overflow-hidden"> <div
class="delivery-note-content flex-1 flex-column overflow-hidden"
>
<div class="delivery-note-list flex-1 overflow-hidden"> <div class="delivery-note-list flex-1 overflow-hidden">
<ElTable <ElTable
ref="singleTableRef" ref="singleTableRef"
...@@ -110,7 +148,6 @@ ...@@ -110,7 +148,6 @@
border border
@current-change="rowClick" @current-change="rowClick"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<ElTableColumn <ElTableColumn
type="selection" type="selection"
...@@ -122,82 +159,124 @@ ...@@ -122,82 +159,124 @@
type="index" type="index"
label="序号" label="序号"
width="60" width="60"
fixed="left"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="客户" label="编码"
show-overflow-tooltip show-overflow-tooltip
prop="userMark" prop="name"
width="200" width="200"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <!-- <ElTableColumn
label="发货单号" label="客户"
show-overflow-tooltip show-overflow-tooltip
prop="billNumber" prop="user_mark"
width="200" width="200"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> -->
<ElTableColumn
label="对账单号"
show-overflow-tooltip
prop="rec_number"
min-width="200"
header-align="center"
align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <!-- <ElTableColumn
label="订单号" label="订单号"
show-overflow-tooltip show-overflow-tooltip
prop="orderNumber" prop="order_number"
width="200" width="200"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> -->
<!-- <ElTableColumn
label="ERP总价格"
show-overflow-tooltip
width="130"
prop="erp_total_amount"
header-align="center"
align="center"
></ElTableColumn> -->
<ElTableColumn
label="商品总价"
show-overflow-tooltip
width="100"
prop="product_total_amount"
header-align="center"
align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="质检未通过数量" label="物流总价"
show-overflow-tooltip show-overflow-tooltip
width="130" width="100"
prop="notPassNum" prop="carriage_total_amount"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="发货数量" label="发货数量"
show-overflow-tooltip show-overflow-tooltip
prop="shipmentNum" prop="num"
width="130"
header-align="center" header-align="center"
align="center" align="center"
width="150"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="质检通过数量" label="质检通过数量"
show-overflow-tooltip show-overflow-tooltip
prop="passNum" prop="pass_num"
width="150" width="130"
header-align="center"
align="center"
></ElTableColumn>
<!-- <ElTableColumn
label="ERP状态"
show-overflow-tooltip
width="130"
prop="erp_status"
header-align="center"
align="center"
></ElTableColumn> -->
<ElTableColumn
label="质检未通过数量"
show-overflow-tooltip
width="130"
prop="not_pass_num"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<!-- <ElTableColumn
label="发货数量"
show-overflow-tooltip
prop="shipment_num"
header-align="center"
align="center"
width="150"
></ElTableColumn>
<ElTableColumn <ElTableColumn
label="质检通过总价" label="质检通过总价"
show-overflow-tooltip show-overflow-tooltip
prop="totalPrice" prop="total_price"
width="200" width="200"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="收货人" label="收货人"
show-overflow-tooltip show-overflow-tooltip
width="200" width="200"
prop="lanshouName" prop="lanshou_name"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="物流跟踪号" label="物流跟踪号"
...@@ -206,7 +285,6 @@ ...@@ -206,7 +285,6 @@
prop="logisticsTracking" prop="logisticsTracking"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="物流名称" label="物流名称"
...@@ -215,7 +293,6 @@ ...@@ -215,7 +293,6 @@
prop="carriageName" prop="carriageName"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="收货人电话" label="收货人电话"
...@@ -233,7 +310,6 @@ ...@@ -233,7 +310,6 @@
prop="lanshouRegion" prop="lanshouRegion"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="揽收地址" label="揽收地址"
...@@ -242,7 +318,6 @@ ...@@ -242,7 +318,6 @@
width="200" width="200"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="揽收邮编" label="揽收邮编"
...@@ -251,19 +326,33 @@ ...@@ -251,19 +326,33 @@
prop="lanshouPost" prop="lanshouPost"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> -->
<ElTableColumn
label="开始时间"
show-overflow-tooltip
width="200"
prop="start_time"
header-align="center"
align="center"
></ElTableColumn>
<ElTableColumn
label="结束时间"
show-overflow-tooltip
width="200"
prop="end_time"
header-align="center"
align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <ElTableColumn
label="创建时间" label="创建时间"
show-overflow-tooltip show-overflow-tooltip
width="200" width="200"
prop="createTime" prop="create_time"
header-align="center" header-align="center"
align="center" align="center"
></ElTableColumn> ></ElTableColumn>
<ElTableColumn <!-- <ElTableColumn
label="操作" label="操作"
fixed="right" fixed="right"
header-align="center" header-align="center"
...@@ -273,14 +362,16 @@ ...@@ -273,14 +362,16 @@
> >
<template #default="{ row }"> <template #default="{ row }">
<div> <div>
<ElButton v-if="nodeId===0" type="primary" link @click="onEditOrder(row)" <ElButton
>编辑 v-if="nodeId === 1"
</ElButton type="primary"
> link
@click="onEditOrder(row)"
>编辑
</ElButton>
</div> </div>
</template> </template>
</ElTableColumn> </ElTableColumn> -->
</ElTable> </ElTable>
</div> </div>
<ElPagination <ElPagination
...@@ -297,38 +388,112 @@ ...@@ -297,38 +388,112 @@
</div> </div>
</template> </template>
<template #bottom> <template #bottom>
<el-tabs v-model="tabsValue" @tab-change="tabsClick"> <el-tabs v-model="tabsValue">
<el-tab-pane name="0" label="发货单详情"> <el-tab-pane name="0" label="发货单详情">
<ElTable :data="detailList" height="100%" border> <ElTable size="small" :data="detailList" height="100%" border>
<ElTableColumn show-overflow-tooltip width="60" align="center" label="序号" type="index" /> <ElTableColumn
<ElTableColumn show-overflow-tooltip align="center" label="图片"> show-overflow-tooltip
<template #default="{row}"> width="60"
<el-image align="center"
preview-teleported style="height: 40px;width: 40px;" :src="row.variantImage" label="序号"
:preview-src-list="[row.variantImage]"></el-image> type="index"
</template> />
</ElTableColumn> <ElTableColumn
<ElTableColumn show-overflow-tooltip align="center" label="商品名称" prop="productName" /> show-overflow-tooltip
<ElTableColumn show-overflow-tooltip align="center" label="baseSku" prop="baseSku" /> align="center"
<ElTableColumn show-overflow-tooltip align="center" label="变体Sku" prop="variantSku" /> label="单号"
<ElTableColumn show-overflow-tooltip align="center" label="生产单号" prop="subOrderNumber" /> prop="factory_order_number"
<ElTableColumn show-overflow-tooltip align="center" label="单价" prop="price" /> />
<ElTableColumn show-overflow-tooltip align="center" label="发货数" prop="shipmentNum" /> <!-- <ElTableColumn
<ElTableColumn show-overflow-tooltip align="center" label="质检(通过)" prop="passNum" /> show-overflow-tooltip
<ElTableColumn show-overflow-tooltip align="center" label="质检(不通过)" prop="notPassNum" /> align="center"
label="ERP单号"
prop="erp_order_number"
/> -->
<ElTableColumn
show-overflow-tooltip
align="center"
label="发货单号"
prop="bill_number"
/>
<ElTableColumn
show-overflow-tooltip
align="center"
label="发货数"
prop="num"
/>
<ElTableColumn
show-overflow-tooltip
align="center"
label="质检通过"
prop="pass_num"
/>
<ElTableColumn
show-overflow-tooltip
align="center"
label="质检不通过"
prop="not_pass_num"
/>
<!-- <ElTableColumn
show-overflow-tooltip
align="center"
label="ERP价格"
prop="erp_price"
/> -->
<ElTableColumn
show-overflow-tooltip
align="center"
label="价格"
prop="price"
/>
<ElTableColumn
show-overflow-tooltip
align="center"
label="物流价格"
prop="carriage_amount"
/>
<ElTableColumn
show-overflow-tooltip
align="center"
label="发货时间"
prop="shipment_time"
/>
<ElTableColumn
width="100"
align="center"
header-align="center"
label="操作"
>
<template #default="{ row }">
<ElButton type="primary" link @click="onDetail(row)"
>查看详情
</ElButton>
</template>
</ElTableColumn>
</ElTable> </ElTable>
</el-tab-pane> </el-tab-pane>
<el-tab-pane name="1" label="操作日志"> <el-tab-pane name="1" label="操作日志">
<ul style="color: #333; font-size: 12px; height: 100%; overflow: auto"> <ul
<li v-for="(item, index) in logList" :key="index" style="display: flex"> style="
<span style="display: inline-block; width: 13%"> color: #333;
{{ item.createTime }} font-size: 12px;
</span> height: 100%;
<span overflow: auto;
style="display: inline-block; width: 80%" "
v-html="item.description"></span> >
<li
v-for="(item, index) in logList"
:key="index"
style="display: flex"
>
<span style="display: inline-block; width: 13%">
{{ item.create_time }}
</span>
<span style="display: inline-block; width: 80%">{{
item.description
}}</span>
</li> </li>
</ul> </ul>
</el-tab-pane> </el-tab-pane>
...@@ -338,8 +503,8 @@ ...@@ -338,8 +503,8 @@
</div> </div>
</div> </div>
</div> </div>
<ElDialog v-model="dialogVisible" width="1100px" draggable title="编辑"> <!-- <ElDialog v-model="dialogVisible" width="1100px" draggable title="编辑">
<el-form v-model="editForm" style="width: 100%;" inline label-width="120px"> <el-form v-model="editForm" style="width: 100%" inline label-width="120px">
<el-form-item prop="billNumber" label="发货单号"> <el-form-item prop="billNumber" label="发货单号">
<el-input v-model="editForm.billNumber" disabled></el-input> <el-input v-model="editForm.billNumber" disabled></el-input>
</el-form-item> </el-form-item>
...@@ -377,109 +542,86 @@ ...@@ -377,109 +542,86 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="dialogVisible=false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitData">确认</el-button> <el-button type="primary" @click="submitData">确认</el-button>
</template> </template>
</ElDialog> </ElDialog> -->
<ElDrawer
v-model="shipmentOrderDetailDrawerVisible"
title="发货单详情"
size="30%"
>
<shipmentOrderDetailInfo :detail="shipmentOrderDetail" />
</ElDrawer>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ElMessage, ElTree, TableColumnCtx } from 'element-plus' import { ElMessage, ElTree, TableColumnCtx } from 'element-plus'
import splitDiv from '@/components/splitDiv/splitDiv.vue' import splitDiv from '@/components/splitDiv/splitDiv.vue'
interface Tree {
label: string
count?: number
children?: Tree[],
id: number | string
}
interface Log {
createTime: string
description: string
}
import {
AccountStatementNote,
} from '@/types/api/deliveryNote'
import { ElTable } from 'element-plus' import { ElTable } from 'element-plus'
import usePageList from '@/utils/hooks/usePageList' import usePageList from '@/utils/hooks/usePageList'
import { useValue } from '@/utils/hooks/useValue' import { useValue } from '@/utils/hooks/useValue'
import { import {
customJomallReconciliation, customJomallReconciliationLog, factoryConfirm, customJomallReconciliation,
getCustomJomallReconciliationById, getReconciliationAmount, getShipmentDetailsById, updateReconciliation, getReconciliationAmount,
getShipmentDetailsById,
auditOrderApi,
getShipmentOrderDetailById,
} from '@/api/order' } from '@/api/order'
import { ref, onMounted, watch, nextTick } from 'vue' import { ref, onMounted, watch, nextTick } from 'vue'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import { Confirm, CountStatus } from '@/types/api/order.ts' import {
import { getUserMarkList } from '@/api/auth.ts' CountStatus,
AccountStatementNote,
ItemList,
LogList,
AccountStatementNoteSearchForm,
} from '@/types/api/billOrder.ts'
import { ShipmentOrderDetailData } from '@/types/api/deliveryNote'
import shipmentOrderDetailInfo from '@/components/ShipmentOrderDetail.vue'
// import { getUserMarkList } from '@/api/auth.ts'
interface Tree {
remark?: string
count?: number
code?: string
children?: Tree[]
}
interface SummaryMethodProps<T = AccountStatementNote> { interface SummaryMethodProps<T = AccountStatementNote> {
columns: TableColumnCtx<T>[] columns: TableColumnCtx<T>[]
data: T[] data: T[]
} }
const nameSpaceList = ref<string[]>([]) // const nameSpaceList = ref<string[]>([])
const treeData = ref<Tree[]>([ const treeData = ref<CountStatus[]>()
{ const [searchForm, resetSearchForm] = useValue<AccountStatementNoteSearchForm>(
label: '全部', {},
id: '-1', )
children: [
{
label: '草稿箱',
id: 0,
children: [],
},
{
label: '待确认',
id: 1,
children: [],
},
{
label: '待付款',
id: 2,
children: [],
}, {
label: '已付款',
id: 3,
children: [],
}, {
label: '归档',
id: 4,
children: [],
},
],
},
])
const [searchForm, resetSearchForm] = useValue<AccountStatementNote>({})
const dateRange = ref<string[]>([]) const dateRange = ref<string[]>([])
const selections = ref<AccountStatementNote[]>([]) const selections = ref<AccountStatementNote[]>([])
const detailList = ref<AccountStatementNote[]>([]) const detailList = ref<ItemList[]>([])
const tabsValue = ref<string>('0') const tabsValue = ref<string>('0')
const singleTableRef = ref<InstanceType<typeof ElTable>>() const singleTableRef = ref<InstanceType<typeof ElTable>>()
const currentRow = ref<AccountStatementNote | null>(null) const currentRow = ref<AccountStatementNote | null>(null)
const logList = ref<Log[]>([]) const logList = ref<LogList[]>([])
const nodeId = ref<number | string>('-1') const nodeId = ref<number | string>(1)
const treeRef = ref<InstanceType<typeof ElTree>>() const treeRef = ref<InstanceType<typeof ElTree>>()
const editForm = ref<AccountStatementNote>({ // const editForm = ref<AccountStatementNote>({
billNumber: '', // billNumber: '',
lanshouAddress: '', // lanshouAddress: '',
shipmentId: '', // shipmentId: '',
totalPrice: '', // totalPrice: '',
shipmentNum: '', // shipmentNum: '',
passNum: '', // passNum: '',
lanshouPost: '', // lanshouPost: '',
lanshouName: '', // lanshouName: '',
lanshouPhone: '', // lanshouPhone: '',
totalAmount: '', // totalAmount: '',
}) // })
const { const {
currentPage, currentPage,
pageSize, pageSize,
...@@ -490,132 +632,84 @@ const { ...@@ -490,132 +632,84 @@ const {
onCurrentPageChange: handleCurrentChange, onCurrentPageChange: handleCurrentChange,
onPageSizeChange: handleSizeChange, onPageSizeChange: handleSizeChange,
} = usePageList({ } = usePageList({
statistics: true, query: (page, pageSize) =>
query: (page, pageSize) => (customJomallReconciliation( customJomallReconciliation(
{ {
...searchForm.value, ...searchForm.value,
status: nodeId.value === '-1' ? null : nodeId.value, status: nodeId.value === -1 ? null : nodeId.value,
startTime: dateRange.value && dateRange.value[0], start_time: dateRange.value && dateRange.value[0],
endTime: dateRange.value && dateRange.value[1], end_time: dateRange.value && dateRange.value[1],
}, },
page, page,
pageSize, pageSize,
).then((res) => res.data) as never), ).then((res) => res.data) as never,
}) })
onMounted(() => { onMounted(() => {
getNameSpaceList() // getNameSpaceList()
treeRef.value!.setCurrentKey(nodeId.value, true)
}) })
const dialogVisible = ref<boolean>(false) // const dialogVisible = ref<boolean>(false)
const getNameSpaceList = async () => { // const getNameSpaceList = async () => {
try { // try {
const res = await getUserMarkList() // const res = await getUserMarkList()
nameSpaceList.value = res.data // nameSpaceList.value = res.data
} catch (e) { // } catch (e) {
// showError(e) // // showError(e)
} // }
} // }
const getTreeNum = async () => { const getTreeNum = async () => {
const res = await getReconciliationAmount()
treeData.value = [{
label: '全部',
id: '-1',
children: [
{
label: '草稿箱',
id: 0,
},
{
label: '待确认',
id: 1,
},
{
label: '待付款',
id: 2,
}, {
label: '已付款',
id: 3,
}, {
label: '归档',
id: 4,
},
],
}]
await nextTick(() => {
treeRef.value!.setCurrentKey(nodeId.value, true)
})
treeData.value.forEach((el) => {
if (!el.children) {
el.children = []
}
el.children.forEach((it) => {
it.count = 0
})
el.children.forEach((it) => {
res.data.forEach((item: CountStatus) => {
if (it.id === item.status) {
it['count'] = item.count
}
})
if (it.id !== '-1') {
it.label = it.label + `(${it.count || 0})`
}
})
})
treeData.value[0].label = ''
treeData.value[0].label = '全部' + (res.data.find((el: CountStatus) => el.totalSum) ? `(${res.data.find((el: CountStatus) => el.totalSum)!.totalSum})` : '(0)')
}
const onEditOrder = async (item: AccountStatementNote) => {
try { try {
const res = await getCustomJomallReconciliationById(item.id) const res = await getReconciliationAmount()
editForm.value = (res.data) as never res.data = [{ code: -1, remark: '全部', children: res.data }]
dialogVisible.value = true treeData.value = res.data
} catch (e) { await nextTick(() => {
// showError(e) treeRef.value!.setCurrentKey(nodeId.value, true)
} })
}
const logOrder = async (item: AccountStatementNote) => {
try {
const res = await customJomallReconciliationLog(item.id)
logList.value = (res.data) as never
} catch (e) {
// showError(e)
}
}
const submitData = async () => {
try {
const res = await updateReconciliation(editForm.value)
logList.value = (res.data) as never
dialogVisible.value = false
ElMessage.success('修改成功')
search()
} catch (e) { } catch (e) {
// showError(e) console.error(e)
} }
} }
// const onEditOrder = async (item: AccountStatementNote) => {
// try {
// const res = await getCustomJomallReconciliationById(item.id)
// editForm.value = res.data as never
// dialogVisible.value = true
// } catch (e) {
// // showError(e)
// }
// }
// const submitData = async () => {
// try {
// const res = await updateReconciliation(editForm.value)
// logList.value = res.data as never
// dialogVisible.value = false
// ElMessage.success('修改成功')
// search()
// } catch (e) {
// // showError(e)
// }
// }
const rowClick = (row: AccountStatementNote) => { const rowClick = (row: AccountStatementNote) => {
currentRow.value = row currentRow.value = row
tabsValue.value = '0' tabsValue.value = '0'
tabsClick(tabsValue.value) tabsClick()
} }
const tabsClick = async (name: string) => { const tabsClick = async () => {
if (!currentRow.value) return if (!currentRow.value) {
if (name === '0') { detailList.value = []
const { data } = await getShipmentDetailsById(currentRow.value!.shipmentId) logList.value = []
detailList.value = data return
} else if (name === '1') { }
await logOrder(currentRow.value) try {
const res = await getShipmentDetailsById(currentRow.value.id)
detailList.value = res.data.itemList || []
logList.value = res.data.logList || []
} catch (e) {
console.error(e)
} }
} }
const handleSelectionChange = (v: AccountStatementNote[]) => { const handleSelectionChange = (v: AccountStatementNote[]) => {
...@@ -645,47 +739,74 @@ const getSummaries = (data: SummaryMethodProps) => { ...@@ -645,47 +739,74 @@ const getSummaries = (data: SummaryMethodProps) => {
}) })
return sums return sums
} }
const auditOrder = (key: string) => {
let url = ''
let text = ''
switch (key) {
case 'pay':
url = 'reconciliation/payment'
text = '确认付款'
break
case 'archiving':
url = 'reconciliation/archiving'
text = '确认归档'
break
case 'confirm':
url = 'reconciliation/confirm'
text = '确认'
break
}
const sureFactory = () => { if (selections.value.length === 0) {
ElMessageBox.confirm(`确认对账单?`, '重要提示', { return ElMessage.warning('请选择要操作的数据')
}
ElMessageBox.confirm(`${text}对账单?`, '重要提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
type: 'warning', type: 'warning',
}).then(async () => { }).then(async () => {
const data:Confirm[] = selections.value.map(el => { const ids = selections.value.map((el) => el.id).join(',')
return { await auditOrderApi(url, ids)
id: el.id,
dataVersion: el.dataVersion,
}
})
await factoryConfirm(data)
ElMessage.success('操作成功') ElMessage.success('操作成功')
search() search()
await getTreeNum() await getTreeNum()
}) })
} }
watch(() => tableData.value, () => { watch(
if (tableData.value && tableData.value.length > 0) { () => tableData.value,
if (singleTableRef.value) { () => {
singleTableRef.value!.setCurrentRow(tableData.value[0]) if (tableData.value && tableData.value.length > 0) {
currentRow.value = (tableData.value as never)[0] if (singleTableRef.value) {
singleTableRef.value!.setCurrentRow(tableData.value[0])
currentRow.value = (tableData.value as never)[0]
}
} else {
detailList.value = []
} }
} else { },
detailList.value = [] { immediate: true },
} )
}, { immediate: true })
const nodeClick = (data: Tree) => { const nodeClick = (data: Tree) => {
nodeId.value = data.id nodeId.value = data.code ?? ''
detailList.value = []
logList.value = []
search() search()
} }
getTreeNum() const shipmentOrderDetailDrawerVisible = ref(false)
const shipmentOrderDetail = ref({} as ShipmentOrderDetailData)
const onDetail = async (row: ItemList) => {
try {
const res = await getShipmentOrderDetailById(row.shipment_id)
shipmentOrderDetail.value = res.data
shipmentOrderDetailDrawerVisible.value = true
} catch (e) {
console.error(e)
}
}
onMounted(() => {
getTreeNum()
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.header-filter-form { .header-filter-form {
margin-bottom: 20px;
:deep(.el-form-item) { :deep(.el-form-item) {
margin-right: 14px; margin-right: 14px;
margin-bottom: 10px; margin-bottom: 10px;
...@@ -741,28 +862,56 @@ $border: solid 1px #ddd; ...@@ -741,28 +862,56 @@ $border: solid 1px #ddd;
} }
} }
.page { .left {
display: flex; width: 160px;
:deep(.el-tree-node__content) {
height: 100%; height: 30px;
line-height: 30px;
}
:deep(.el-tree-node__label) {
font-size: 13px;
cursor: pointer;
display: inline-block;
width: 100%;
color: black !important;
padding: 3px 7px;
}
.left { :deep(.el-tree-node__expand-icon) {
min-width: 150px; display: none;
margin-right: 15px;
background: white;
background-color: white;
padding: 10px;
box-sizing: border-box;
} }
.right { :deep(.is-current) {
flex: 1; .tree-node-label,
flex-shrink: 0; .tree-node-count {
background: white; background-color: #ecf5ff;
overflow: hidden; color: #409eff !important;
}
.el-tree-node__children {
.tree-node-label,
.tree-node-count {
background-color: transparent !important;
color: black !important;
}
}
} }
} }
.tree-node {
display: flex;
color: #333;
font-weight: 500;
}
.right {
flex: 1;
flex-shrink: 0;
background: white;
overflow: hidden;
}
::v-deep(.el-tree-node__label) { ::v-deep(.el-tree-node__label) {
font-size: 13px; font-size: 13px;
color: rgb(96, 98, 102); color: rgb(96, 98, 102);
...@@ -785,7 +934,6 @@ $border: solid 1px #ddd; ...@@ -785,7 +934,6 @@ $border: solid 1px #ddd;
.el-tree-node__label { .el-tree-node__label {
background-color: #ecf5ff; background-color: #ecf5ff;
color: #409eff !important; color: #409eff !important;
} }
.el-tree-node__children { .el-tree-node__children {
...@@ -794,17 +942,14 @@ $border: solid 1px #ddd; ...@@ -794,17 +942,14 @@ $border: solid 1px #ddd;
color: black !important; color: black !important;
} }
} }
} }
::v-deep(.splitpanes__pane) { ::v-deep(.splitpanes__pane) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
::v-deep(.splitpanes--horizontal>.splitpanes__splitter) { ::v-deep(.splitpanes--horizontal > .splitpanes__splitter) {
min-height: 5px; min-height: 5px;
margin-top: 10px; margin-top: 10px;
} }
...@@ -814,11 +959,6 @@ $border: solid 1px #ddd; ...@@ -814,11 +959,6 @@ $border: solid 1px #ddd;
height: 5px; height: 5px;
background: #eff3f6; background: #eff3f6;
} }
.card {
background: transparent;
}
.btn-list { .btn-list {
margin-bottom: 10px; margin-bottom: 10px;
} }
...@@ -826,11 +966,9 @@ $border: solid 1px #ddd; ...@@ -826,11 +966,9 @@ $border: solid 1px #ddd;
::v-deep(.el-tree-node) { ::v-deep(.el-tree-node) {
cursor: pointer; cursor: pointer;
margin-bottom: 5px; margin-bottom: 5px;
} }
::v-deep(.el-tree-node__label) { ::v-deep(.el-tree-node__label) {
font-size: 14px; font-size: 14px;
} }
...@@ -849,4 +987,9 @@ $border: solid 1px #ddd; ...@@ -849,4 +987,9 @@ $border: solid 1px #ddd;
} }
} }
} }
.delivery-note-page {
:deep(#top) {
height: 100%;
}
}
</style> </style>
{ {
"compilerOptions": { "compilerOptions": {
"target": "ES2020", "target": "ES2020",
"jsxImportSource": "vue",
"useDefineForClassFields": true, "useDefineForClassFields": true,
"module": "ESNext", "module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"], "lib": ["ES2020", "DOM", "DOM.Iterable"],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment