完成全部字典模块

This commit is contained in:
2024-07-26 17:55:44 +08:00
parent f9c142a7ca
commit d3e0002975
29 changed files with 3715 additions and 1496 deletions

294
package-lock.json generated
View File

@ -1446,33 +1446,12 @@
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
@ -1484,40 +1463,6 @@
"strip-ansi": "^7.0.1"
}
},
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
@ -1527,23 +1472,6 @@
"ansi-regex": "^6.0.1"
}
},
"strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
}
}
},
"wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@ -1554,60 +1482,6 @@
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
}
},
"wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
}
}
},
@ -4176,7 +4050,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"requires": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@ -6487,7 +6360,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
"requires": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@ -7147,7 +7019,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dev": true,
"requires": {
"get-intrinsic": "^1.2.4"
}
@ -7155,8 +7026,7 @@
"es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
},
"es-object-atoms": {
"version": "1.0.0",
@ -8605,7 +8475,6 @@
"version": "1.2.4",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"requires": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@ -8782,7 +8651,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
"requires": {
"get-intrinsic": "^1.1.3"
}
@ -8904,7 +8772,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"requires": {
"es-define-property": "^1.0.0"
}
@ -8912,14 +8779,12 @@
"has-proto": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q=="
},
"has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
"has-tostringtag": {
"version": "1.0.2",
@ -13110,8 +12975,7 @@
"object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz",
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
},
"object-is": {
"version": "1.1.6",
@ -16419,9 +16283,12 @@
"dev": true
},
"qs": {
"version": "0.6.6",
"resolved": "https://registry.npmmirror.com/qs/-/qs-0.6.6.tgz",
"integrity": "sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA=="
"version": "6.12.3",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.12.3.tgz",
"integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==",
"requires": {
"side-channel": "^1.0.6"
}
},
"query-string": {
"version": "4.3.4",
@ -16791,6 +16658,13 @@
"stringstream": "~0.0.4",
"tough-cookie": ">=0.12.0",
"tunnel-agent": "~0.4.0"
},
"dependencies": {
"qs": {
"version": "0.6.6",
"resolved": "https://registry.npmmirror.com/qs/-/qs-0.6.6.tgz",
"integrity": "sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA=="
}
}
},
"request-promise-core": {
@ -17507,7 +17381,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"requires": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@ -17618,7 +17491,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"requires": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@ -18296,6 +18168,46 @@
"strip-ansi": "^3.0.0"
}
},
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"string.prototype.trim": {
"version": "1.2.9",
"resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
@ -18352,6 +18264,23 @@
"ansi-regex": "^2.0.0"
}
},
"strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
}
}
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz",
@ -21147,6 +21076,81 @@
}
}
},
"wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",

View File

@ -26,6 +26,7 @@
"leaflet.wmts": "^1.0.2",
"node-sass": "^4.12.0",
"ol": "6.4.0",
"qs": "^6.12.3",
"sass-loader": "^7.1.0",
"swiper": "^6.8.4",
"vue": "^2.5.2",

206
src/api/dataTransfer.js Normal file
View File

@ -0,0 +1,206 @@
import request from '@/utils/request'
/* ********************************* 航次数据汇交接口 **************************************/
// 航次数据汇交列表
export function voyageRegList(data) {
return request({
url: '/voyage/reg/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 航次数据汇交新增编辑
export function voyageRegEdit(data) {
return request({
url: '/voyage/reg/edit.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 航次数据汇交新增删除
export function voyageRegDelete(data) {
return request({
url: '/voyage/reg/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
/* ********************************* 样品数据集汇交接口 **************************************/
// 样品数据集汇列表
export function sampleDatasetList(data) {
return request({
url: '/sample/dataset/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 根据id查询样品数据集
export function sampleDatasetFind(data) {
return request({
url: '/sample/dataset/find.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 样品数据集新增编辑
export function sampleDatasetEdit(data) {
return request({
url: '/sample/dataset/edit.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 样品数据集删除
export function sampleDatasetDelete(data) {
return request({
url: '/sample/dataset/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 站位作业样品列表
export function stationList(data) {
return request({
url: '/sample/station/list.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 站位作业样品新增编辑
export function stationEdit(data) {
return request({
url: '/sample/station/edit.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 站位作业样品删除
export function stationDelete(data) {
return request({
url: '/sample/station/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 测线作业样品列表
export function lineList(data) {
return request({
url: '/sample/line/list.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 测线作业样品新增编辑
export function lineEdit(data) {
return request({
url: '/sample/line/edit.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 测线作业样品删除
export function lineDelete(data) {
return request({
url: '/sample/line/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 站位数据样品汇交列表
export function stationPage(data) {
return request({
url: '/sample/station/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 测线数据样品汇交列表
export function linePage(data) {
return request({
url: '/sample/line/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 平台类型字典
export function platformDict(data) {
return request({
url: '/dict/platform/all.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 设备类型字典
export function equipmentDict(data) {
return request({
url: '/dict/equipment/all.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 样品类型字典
export function dataDict(data) {
return request({
url: '/dict/data/all.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 参航人员列表
export function memberList(data) {
return request({
url: '/voyage/member/list.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 轨迹坐标
export function trackMap(data) {
return request({
url: '/sample/dataset/track/total.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}

View File

@ -1,129 +1,161 @@
import request from '@/utils/request'
/* ********************************* 数据样品类型字典接口 **************************************/
// 数据样品类型字典列表
export function dictDataList(data) {
return request({
url: 'dict/data/page.htm',
method: 'post',
params: data
})
}
// 字典列表检索
export function getDicList(data) {
return request({
url: '/dic/type/list?' + 'page=' + data.page + '&size=' + data.size + '&type=' + data.type,
method: 'get',
type: 'application/x-www-form-urlencoded'
})
}
// 字典删除
export function deleteDoc(data) {
return request({
url: '/dic/type/delete',
url: '/dict/data/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 设备类型字典添加
export function equAdd(data) {
// 数据样品类型字典新增编辑
export function dictDataEdit(data) {
return request({
url: '/dic/equ/add',
url: '/dict/data/edit.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 设备类型字典修改
export function equUpdate(data) {
// 数据样品类型字典删除
export function dictDataDelete(data) {
return request({
url: '/dic/equ/update',
url: '/dict/data/delete.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 参航单位字典添加
export function partAdd(data) {
/* ********************************* 设备类型字典接口 **************************************/
// 设备类型字典列表
export function dictEquipmentList(data) {
return request({
url: '/dic/part/add',
url: '/dict/equipment/page.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 参航单位字典修改
export function partUpdate(data) {
// 设备类型字典新增编辑
export function dictEquipmentEdit(data) {
return request({
url: '/dic/part/update',
url: '/dict/equipment/edit.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 平台类型字典添加
export function platformAdd(data) {
// 设备类型字典删除
export function dictEquipmentDelete(data) {
return request({
url: '/dic/platform/add',
url: '/dict/equipment/delete.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 平台类型字典修改
export function platformUpdate(data) {
/* ********************************* 平台类型字典接口 **************************************/
// 平台类型字典列表
export function dictPlatformList(data) {
return request({
url: '/dic/platform/update',
url: '/dict/platform/page.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 数据样品类型字典添加
export function sampleAdd(data) {
// 平台类型字典新增编辑
export function dictPlatformEdit(data) {
return request({
url: '/dic/sample/add',
url: '/dict/platform/edit.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 数据样品类型字典修改
export function sampleUpdate(data) {
// 平台类型字典删除
export function dictPlatformDelete(data) {
return request({
url: '/dic/sample/update',
url: '/dict/platform/delete.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 共享机构字典添加
export function shareAdd(data) {
/* ********************************* 参航单位字典接口 **************************************/
// 参航单位字典列表
export function dictSailList(data) {
return request({
url: '/dic/share/add',
url: '/dict/unit/sail/page.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 共享机构字典修改
export function shareUpdate(data) {
// 参航单位字典新增编辑
export function dictSailEdit(data) {
return request({
url: '/dic/share/update',
url: '/dict/unit/sail/edit.htm',
method: 'post',
type: 'application/json',
type: 'application/x-www-form-urlencoded',
data
})
}
// 参航单位字典删除
export function dictSailDelete(data) {
return request({
url: '/dict/unit/sail/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
/* ********************************* 共享单位字典接口 **************************************/
// 共享单位字典列表
export function dictShareList(data) {
return request({
url: 'dict/unit/share/page.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 共享单位字典新增编辑
export function dictShareEdit(data) {
return request({
url: '/dict/unit/share/edit.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 共享单位字典删除
export function dictShareDelete(data) {
return request({
url: '/dict/unit/share/delete.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}

22
src/api/login.js Normal file
View File

@ -0,0 +1,22 @@
import request from '@/utils/request'
// 登录
export function login(data) {
return request({
url: '/frame/optr/login.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}
// 退出登录
export function loginOut(data) {
return request({
url: '/frame/optr/logout.htm ',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}

View File

@ -1,55 +1,72 @@
<template>
<header>
<div id="topnavbar">
<div class="logo logo2 cursor">
<img src="../../../static/images/logo.png" alt="">
</div>
<div id="topnanv" v-show="!collapse || navShow">
<nav>
<ul class="content clearfix">
<li class="dropdown" v-for="(item,index) in menu" :key="index">
<a href="javascript:void(0);" @click="routerTurn(item.path)">{{item.name}}<img v-show="item.children.length" src="../../../static/images/arrow-down.png" alt=""></a>
<ul class="sub-menu" v-show="item.children.length">
<li v-for="(item1,index1) in item.children" :key="index1">
<a href="javascript:void(0);" @click="routerTurn(item1.path)">{{item1.name}}</a>
</li>
</ul>
</li>
<li class="dropdown">
<el-dropdown trigger="click">
<span class="el-dropdown-link userClass">
<a href="javascript:void(0);">admin<img src="../../../static/images/arrow-down.png" alt=""></a>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<a href="javascript:void(0);" @click="routerTurn('personalCenter')">个人中心</a>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</li>
<div id="topnavbar">
<div class="logo logo2 cursor">
<img src="../../../static/images/logo.png" alt="">
</div>
<div id="topnanv" v-show="!collapse || navShow">
<nav>
<ul class="content clearfix">
<li class="dropdown" v-for="(item,index) in menu" :key="index">
<a href="javascript:void(0);" @click="routerTurn(item.path)">{{item.name}}<img v-show="item.children.length" src="../../../static/images/arrow-down.png" alt=""></a>
<ul class="sub-menu" v-show="item.children.length">
<li v-for="(item1,index1) in item.children" :key="index1">
<a href="javascript:void(0);" @click="routerTurn(item1.path)">{{item1.name}}</a>
</li>
</ul>
</li>
<li class="dropdown">
<el-dropdown trigger="click">
<span class="el-dropdown-link userClass">
<a href="javascript:void(0);">admin<img src="../../../static/images/arrow-down.png" alt=""></a>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<a href="javascript:void(0);" @click="routerTurn('personalCenter')">个人中心</a>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</li>
</ul>
</nav>
</div>
<div class="menu2" >
<i class="el-icon-menu" @click="handleMenu"></i>
</div>
<div class="fr">
<i v-if="loginStatuss" class="logOut" @click="loginOut">logOut</i>
</div>
<!-- <div class="fr loginReg ovh">
<div v-if="loginStatuss"FV>
<span>welcome</span>
<el-tooltip v-if="loginStatuss.length>5" :content="loginStatuss" placement="bottom" effect="dark">
<span class="ellCu">{{ loginStatuss }}</span>
</el-tooltip>
<span v-else class="ellCu">
{{ $store.state.app.cu }}
</span>
</div>
<div v-else class="login cursor" @click="loginIn"> <img src="../../../static/images/形状 1@2x.png" alt=""> LOGIN &nbsp;| &nbsp;REGISTER</div>
</div> -->
</div>
</ul>
</nav>
</div>
<div class="menu2" >
<i class="el-icon-menu" @click="handleMenu"></i>
</div>
<div>
<el-tooltip class="tooltip" effect="dark" content="登录" placement="bottom">
<el-button type="primary" icon="el-icon-user" circle @click="onLogin"></el-button>
</el-tooltip>
</div>
</div>
<!-- 登录弹窗-->
<el-dialog title="用户登录" :visible.sync="open" :before-close="cancel" width="500px" append-to-body>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules">
<el-form-item prop="loginName">
<el-input
v-model="loginForm.loginName"
type="text"
auto-complete="off"
placeholder="请输入登录名称"
prefix-icon="el-icon-user"
/>
</el-form-item>
<el-form-item prop="loginPass">
<el-input
v-model="loginForm.loginPass"
type="loginPass"
auto-complete="off"
placeholder="请输入登录密码"
prefix-icon="el-icon-lock"
@keyup.enter.native="handleLogin"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleLogin"> </el-button>
</div>
</el-dialog>
</header>
</template>
@ -59,7 +76,8 @@ import {
} from '@/utils/logoutCas' // get token from cookie
import {
removeToken
} from '@/utils/auth' // get token from cookie
} from '@/utils/auth'
import { login } from '@/api/login' // get token from cookie
export default {
name: 'headers',
props: {
@ -119,16 +137,15 @@ export default {
},
{
name:"数据汇交",
path:"voyageDelivery",
children:[
{
name:"航次数据汇交",
path:"voyageDelivery",
path:"VoyageReg",
children:[]
},
{
name:"数据样品信息汇交",
path:"sampleRemitt",
name:"样品数据集汇交",
path:"SampleDataset",
children:[]
}
]
@ -200,22 +217,33 @@ export default {
// },
],
nowPathName: '',
navShow:false,
nowPathName: '',
navShow:false,
open: false,
loginForm: {
loginName: '',
loginPass: '',
loginCode: '1234'
},
loginRules: {
loginName: [
{ required: true, trigger: "blur", message: "请输入登录名称" }
],
loginPass: [
{ required: true, trigger: "blur", message: "请输入登录密码" }
],
},
}
},
created() {
this.loginStatuss = this.$store.state.app.cu
// this.loginStatuss = 'test_jisjf'
},
mounted(){
$('.dropdown').hover(
function () {
$(this).children('.sub-menu').slideDown(200);
$(this).children('.sub-menu').slideDown(10);
},
function () {
$(this).children('.sub-menu').slideUp(200);
$(this).children('.sub-menu').slideUp(10);
}
);
this.changeClass()
@ -226,7 +254,6 @@ export default {
})()
}
this.nowPathName = this.$route.name
},
methods:{
//1400
@ -236,113 +263,54 @@ export default {
this.navShow=true
} else{
this.navShow=false
}
},
handleMenu(){
this.collapse=!this.collapse
},
activeMethod(item){
if(this.nowPathName==item.path){
return 'activeClass'
}else{
return ''
}
},
routerTurn(name){
this.nowPathName = name
if(name!=this.$route.name && name){
// debugger
this.$router.push({name:name})
this.collapse=true
}
this.nowPathName = name
if(name!=this.$route.name && name){
// debugger
this.$router.push({name:name})
this.collapse=true
}
},
//
handleCommand(value) {
localStorage.setItem('user_lang', value)
this.$i18n.locale = value//
location.reload()
//
onLogin() {
this.open = true
},
handleClick() {
console.log(this.activeName)
},
loginIn() {
window.location.href = process.env.VUE_APP_CAS_LOGIN_FRONT
},
loginOut() {
this.$confirm('Are you sure you want to log out?', 'hint', {
confirmButtonText: 'Sure',
cancelButtonText: 'Cancel',
type: 'warning'
}).then(() => {
removeToken()
this.loginStatuss = ''
window.sessionStorage.setItem('cu', '')
window.sessionStorage.setItem('userID', '')
logoutCas(process.env.VUE_APP_CAS_LOGOUT_URL_FRONT, true)
}).catch(() => {
//
handleLogin() {
this.$refs['loginForm'].validate(valid => {
if (valid) {
login(this.loginForm).then(res => {
console.log(res)
})
}
})
}
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
loginName: '',
loginPass: '',
loginCode: '1234'
}
this.$refs['form'].resetFields()
},
}
}
</script>
<style lang="scss">
.fr {
float: right;
.tooltip {
z-index: 3000;
}
.loginReg {
height: 32px;
line-height: 32px;
text-align: center;
font-size: 14px;
color: #fff;
margin-top: 24px;
}
.topic {
width: 100%;
height: 50px;
position: relative;
background: #1d2a73;
// padding: 0 20px;
overflow: hidden;
}
.loginReg .login{
color:white;
// text-decoration: underline;
}
.loginReg img{
width:13px;
padding-right:10px;
margin-bottom:-2px;
}
.topic .fr i{
font-style: normal;
color:white;
width: 56px;
height: 32px;
line-height: 32px;
text-align: center;
font-size: 14px;
color: #fff;
margin-top: 9px;
display: inline-block;
cursor: pointer;
}
.ellCu{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width:40px;
}
.loginReg>div{
display: inline-block;
width:148px;
}
.loginReg>div span{
float:left;
}
.el-icon-menu{
float:right;
font-size: 20px;

View File

@ -59,15 +59,35 @@ export const constantRoutes = [
}
},
{
path: 'voyageDelivery',
name: 'voyageDelivery',
component: () => import('@/views/voyageDelivery.vue'),
path: 'voyageReg',
name: 'VoyageReg',
component: () => import('@/views/dataTransfer/voyageReg.vue'),
meta: {
title: '航次数据汇交',
icon: 'peoples',
loginAuthority: true
}
},
{
path: 'sampleDataset',
name: 'SampleDataset',
component: () => import('@/views/dataTransfer/sampleDataset.vue'),
meta: {
title: '数据样品信息汇交',
icon: 'peoples',
loginAuthority: true
}
},
// {
// path: 'voyageDelivery',
// name: 'voyageDelivery',
// component: () => import('@/views/voyageDelivery.vue'),
// meta: {
// title: '航次数据汇交',
// icon: 'peoples',
// loginAuthority: true
// }
// },
{
path: 'voyageEntry',
name: 'voyageEntry',
@ -78,16 +98,16 @@ export const constantRoutes = [
loginAuthority: true
}
},
{
path: 'sampleRemitt',
name: 'sampleRemitt',
component: () => import('@/views/sampleRemitt.vue'),
meta: {
title: '数据样品信息汇交',
icon: 'peoples',
loginAuthority: true
}
},
// {
// path: 'sampleRemitt',
// name: 'sampleRemitt',
// component: () => import('@/views/sampleRemitt.vue'),
// meta: {
// title: '数据样品信息汇交',
// icon: 'peoples',
// loginAuthority: true
// }
// },
{
path: 'sampleEntry',
name: 'sampleEntry',

View File

@ -3,6 +3,7 @@ import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import sample from '@/store/modules/sample'
// import user from './modules/user'
Vue.use(Vuex)
@ -10,7 +11,8 @@ Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
app,
settings
settings,
sample
// user
},
getters

View File

@ -0,0 +1,31 @@
const sample = {
state: {
// 数据样品集表单参数
formData: new Object(),
// 当前数据样品集数据
datasetRow: new Object(),
// 当前数据样品集ID
datasetId: null
},
mutations: {
SET_FORM_DATA: (state, data) => {
const obj = data
for (const key in obj) {
if (obj[key] === null || obj[key] === undefined || obj[key] === '') {
delete obj[key]
} else if (typeof obj[key] === 'object' && Object.keys(obj[key]).length === 0) {
delete obj[key]
}
}
state.formData = { ...state.formData, ...obj }
},
SET_ROW: (state, row) => {
state.datasetRow = row
},
SET_ID: (state, id) => {
state.datasetId = id
}
}
}
export default sample

View File

@ -196,7 +196,7 @@ color:#0ba1e4;
.checkBtn{
float:right;
text-align: right;
}
.topic1{
padding:0px 16px;
@ -223,7 +223,7 @@ color:#0ba1e4;
background: #fff;
}
.page-body .page-header{
padding: 15px;
margin: -15px -15px 15px -15px;
}
@ -241,13 +241,13 @@ color:#0ba1e4;
// flex-direction:column;
// }
// #app .container_a{
// flex:1;
// flex:1;
// }
.wp{
max-width: 1240px;
width: 96%;
margin: 0 auto;
}
.el-message{
z-index:9999 !important

View File

@ -17,6 +17,7 @@ header{
height: 90px;
background: #012458;
padding: 0 3%;
box-sizing: border-box;
position: fixed;
top: 0;
left: 0;

View File

@ -20,7 +20,7 @@ service.defaults.crossDomain = true
service.interceptors.request.use(
config => {
if (config.type == 'application/x-www-form-urlencoded') {
config.data = qs.stringify(config.data)
config.data = qs.stringify(config.data, { arrayFormat: 'repeat' })
config.headers['content-type'] = config.type
} else {
config.headers['content-type'] = config.type ? config.type : 'application/json'

View File

@ -0,0 +1,110 @@
<template>
<div id="" class="page-body">
<div class="page-header">
<h1 class="page-title">数据样品信息汇交</h1>
<el-breadcrumb>
<el-breadcrumb-item :to="{path: '/'}">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{name: 'VoyageReg'}">数据汇交</el-breadcrumb-item>
<el-breadcrumb-item>样品数据集管理</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button
v-for="item in btnList"
:key="item.value"
:type="item.value === currentValue ? 'primary' : ''"
size="medium"
@click="handleBtn(item)"
>{{ item.label }}</el-button>
</div>
</div>
<!--新增数据集-->
<add-data v-if="currentValue === 'add'" />
<!--编辑数据集-->
<add-data v-if="currentValue === 'edit'" />
<!--数据集列表-->
<data-list v-if="currentValue === 'list'" @edit="handleEdit" />
<!--测线数据样品汇交-->
<line-list v-if="currentValue === 'line'" @edit="handleEdit" />
<!--站位数据样品汇交-->
<station-list v-if="currentValue === 'station'" @edit="handleEdit" />
</div>
</template>
<script>
import AddData from '@/views/dataTransfer/sampleViews/AddData'
import DataList from '@/views/dataTransfer/sampleViews/DataList'
import LineList from '@/views/dataTransfer/sampleViews/LineList'
import StationList from '@/views/dataTransfer/sampleViews/StationList'
export default {
name: 'SampleDataset',
components: { AddData, DataList, LineList, StationList },
data() {
return {
btnList: [
{
label: '新增数据集',
value: 'add'
},
{
label: '数据集列表',
value: 'list'
},
{
label: '测线数据样品汇交',
value: 'line'
},
{
label: '站位数据样品汇交',
value: 'station'
},
{
label: '批量导入样品',
value: 'sample'
},
{
label: '批量导入下潜轨迹',
value: 'track'
}
],
currentValue: 'add',
row: {},
id: null
}
},
created() {
},
methods: {
handleBtn(item) {
if (item.value === 'sample') {
} else {
this.currentValue = item.value
if (item.value === 'edit') {
return false
} else if (item.value === 'add') {
this.$store.commit('SET_ROW', {})
this.$store.commit('SET_ID', null)
} else {
this.btnList[0] = {
label: '新增数据集',
value: 'add'
}
}
}
},
handleEdit(row) {
this.currentValue = 'edit'
this.btnList[0] = {
label: '数据集详细信息',
value: 'edit'
}
this.$store.commit('SET_ROW', row)
this.$store.commit('SET_ID', row.tsy_id)
}
}
}
</script>

View File

@ -0,0 +1,74 @@
<template>
<div class="container-add">
<el-breadcrumb separator="/">
<el-breadcrumb-item v-for="(item, index) in steps" :key="index">
<span
style="color: #909fa7;"
:class="currentStep == index ? 'current-s' : ''"
>{{ item }}</span>
</el-breadcrumb-item>
</el-breadcrumb>
<el-card class="box-card">
<!-- 平台信息表单-->
<platform v-if="currentStep === 0" @next="handleNext" />
<!-- 设备信息表单-->
<equipment v-if="currentStep === 1" @next="handleNext" />
<!-- 数据样品类型信息表单-->
<data-type v-if="currentStep === 2" @next="handleNext" @first="handleFirst" />
<!-- 数据样品条目-->
<sample-list v-if="currentStep === 3" />
<!-- 潜次信息-->
<track-info v-if="currentStep === 0 && id" />
</el-card>
</div>
</template>
<script>
import Platform from '@/views/dataTransfer/sampleViews/formViews/Platform'
import Equipment from '@/views/dataTransfer/sampleViews/formViews/Equipment'
import DataType from '@/views/dataTransfer/sampleViews/formViews/DataType'
import SampleList from '@/views/dataTransfer/sampleViews/formViews/SampleList'
import TrackInfo from '@/views/dataTransfer/sampleViews/formViews/TrackInfo'
export default {
name: 'AddData',
components: { Platform, Equipment, DataType, SampleList, TrackInfo },
data() {
return {
//
steps: ['平台信息', '设备信息', '数据样品类型信息', '数据样品条目'],
//
currentStep: 0
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
}
},
created() {
},
methods: {
// handleStep(index) {
// this.currentStep = index
// },
handleNext() {
this.currentStep++
},
handleFirst() {
this.currentStep = 0
}
}
}
</script>
<style lang="scss" scoped>
.container-add {
min-height: 400px;
.current-s {
color: #27c24c !important;
}
.box-card {
margin: 20px 0;
}
}
</style>

View File

@ -0,0 +1,161 @@
<template>
<div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" @expand-change="expandChange" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="expand">
<template v-slot="slot">
<el-table v-if="slot.row.job_type === '站位作业'" v-loading="slot.row.loading" stripe border :data="slot.row.childRowData">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="sample_name" label="样品编号" />
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="publish_rule" label="公开期限" width="160" />
<el-table-column prop="sampling_time" label="采样时间" width="160" />
<el-table-column prop="sampling_lon" label="采样经度" width="100" />
<el-table-column prop="sampling_lat" label="采样纬度" width="100" />
<el-table-column prop="sampling_deep" label="采样深度" width="100" />
<el-table-column prop="sample_tag_name" label="样品标签" width="100" />
</el-table>
<el-table v-if="slot.row.job_type === '测线作业'" v-loading="slot.row.loading" stripe border :data="slot.row.childRowData">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="sample_name" label="样品编号" />
<el-table-column prop="funding_org" label="资助机构" width="250" />
<el-table-column prop="publish_rule" label="公开期限" width="160" />
<el-table-column prop="line_sn" label="测线号" width="80" />
<el-table-column prop="line_deep" label="探测深度" width="100" />
<el-table-column prop="start_time" label="开始时间" width="160" />
<el-table-column prop="end_time" label="结束时间" width="160" />
<el-table-column prop="sample_status" label="处理状态" width="100" />
<el-table-column prop="sample_tag_name" label="样品标签" width="100" />
</el-table>
</template>
</el-table-column>
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="dataset_name" label="数据集名称编号" />
<el-table-column prop="file_total" label="样品数量" width="100" />
<el-table-column prop="platform_type" label="平台类型" width="150" />
<el-table-column prop="platform_name" label="平台名称" width="150" />
<el-table-column prop="diving_sn" label="潜次名称" width="100" />
<el-table-column prop="equipment_type" label="设备类型" width="150" />
<el-table-column prop="job_type" label="作业类型" width="100" />
<el-table-column prop="data_type" label="样本类型" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end" v-if="!scope.row.file_total">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
background
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import { lineList, sampleDatasetDelete, sampleDatasetList, stationList } from '@/api/dataTransfer'
export default {
name: 'DataList',
data() {
return {
loading: false,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0
}
},
created() {
this.getData()
},
methods: {
//
getData() {
this.loading = true
sampleDatasetList(this.params).then(res => {
const arr = res.page.records
arr.map(item => {
item.open = false
item.loading = false
item.childRowData = []
})
this.tableData = arr
this.total = Number(res.page.total)
this.loading = false
})
},
//
expandChange(row) {
const datasetId = row.tsy_id
const jobType = row.job_type
this.tableData.map(item => {
if (item.tsy_id == row.tsy_id) {
if (item.open) { //
item.open = false
} else {
item.open = true
item.loading = true
if (jobType === '站位作业') {
stationList({ dataset_id: datasetId }).then(res => {
item.childRowData = res.array
item.loading = false
})
} else {
lineList({ dataset_id: datasetId }).then(res => {
item.childRowData = res.array
item.loading = false
})
}
}
}
})
},
//
handleEdit(row) {
this.$emit('edit', row)
},
//
handleDelete(row) {
this.$confirm('确定要删除该数据集吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
sampleDatasetDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
}
}
</script>

View File

@ -0,0 +1,89 @@
<template>
<div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="sample_name" label="数据样品编号" />
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="publish_rule" label="公开期限" width="160" />
<el-table-column prop="line_sn" label="测线号" width="80" />
<el-table-column prop="start_time" label="测线开始时间" width="160" />
<el-table-column prop="end_time" label="测线结束时间" width="160" />
<el-table-column prop="sample_status" label="数据状态" width="100" />
<el-table-column prop="sample_tag_name" label="数据标签" width="100" />
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
background
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import { linePage, sampleDatasetFind } from '@/api/dataTransfer'
export default {
name: 'LineList',
data() {
return {
loading: false,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0
}
},
created() {
this.getData()
},
methods: {
//
getData() {
this.loading = true
linePage(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
})
},
//
handleEdit(row) {
sampleDatasetFind({ dataset_id: row.dataset_id }).then(res => {
const data = res.entity
this.$emit('edit', data)
})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
}
}
</script>

View File

@ -0,0 +1,101 @@
<template>
<div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="sample_name" label="数据样品编号" />
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="publish_rule" label="公开期限" width="160" />
<el-table-column prop="sampling_time" label="采样时间" width="160" />
<el-table-column prop="sampling_lon" label="采样经度" width="100">
<template slot-scope="scope">
<span>{{ scope.row.sampling_lon + '°'}}</span>
</template>
</el-table-column>
<el-table-column prop="sampling_lat" label="采样纬度" width="100">
<template slot-scope="scope">
<span>{{ scope.row.sampling_lat + '°'}}</span>
</template>
</el-table-column>
<el-table-column prop="sampling_deep" label="采样深度" width="100">
<template slot-scope="scope">
<span>{{ scope.row.sampling_deep + '米'}}</span>
</template>
</el-table-column>
<el-table-column prop="sample_tag_name" label="数据标签" width="100" />
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
background
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import { sampleDatasetFind, stationPage } from '@/api/dataTransfer'
export default {
name: 'StationList',
data() {
return {
loading: false,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0
}
},
created() {
this.getData()
},
methods: {
//
getData() {
this.loading = true
stationPage(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
})
},
//
handleEdit(row) {
sampleDatasetFind({ dataset_id: row.dataset_id }).then(res => {
const data = res.entity
this.$emit('edit', data)
})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
}
}
</script>

View File

@ -0,0 +1,140 @@
<template>
<div>
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="200px">
<el-row>
<el-col :span="8">
<el-form-item label="作业类型" prop="job_type">
<el-select v-model="form.job_type" filterable placeholder="" :disabled="disabled" style="width: 100%;">
<el-option v-for="item in jobTypes" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="样品类型" prop="data_id">
<el-select v-model="form.data_id" filterable placeholder="" :disabled="disabled" style="width: 100%;">
<el-option v-for="item in dataDicts" :key="item.tsy_id" :label="`${item.data_name}(${item.data_alias})`" :value="item.tsy_id"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="描述信息" prop="dataset_remark">
<el-input type="textarea" :rows="3" v-model="form.dataset_remark" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider></el-divider>
<div class="submit-box">
<template v-if="id">
<el-button type="primary" @click="onNext">修改样品数据集</el-button>
<el-button @click="onCopy">复制当前数据集</el-button>
<el-button @click="onList">查看数据样品条目</el-button>
</template>
<el-button v-else type="primary" @click="onNext">保存数据样品集进入下一步输入数据样品条目</el-button>
</div>
</div>
</template>
<script>
import { dataDict, sampleDatasetEdit } from '@/api/dataTransfer'
export default {
name: 'Equipment',
data() {
return {
//
disabled: false,
//
jobTypes: ['站位作业', '测线作业'],
//
dataDicts: [],
//
form: {
job_type: '',
data_id: '',
dataset_remark: ''
},
rules: {
job_type: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
data_id: [
{ required: true, message: '此处为必填项', trigger: 'change' }
]
}
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
},
row() {
return this.$store.state.sample.datasetRow
}
},
created() {
this.disabled = this.id ? true : false
this.getDataDict()
},
methods: {
//
getDataDict() {
dataDict().then(res => {
this.dataDicts = res.array
if (this.id || this.row.job_type) {
this.echoEdit()
}
})
},
//
echoEdit() {
Object.keys(this.form).forEach((key) => {
this.form[key] = this.row[key]
})
},
//
onNext() {
this.$refs['form'].validate(valid => {
if (valid) {
this.$store.commit('SET_FORM_DATA', this.form)
const formData = this.$store.state.sample.formData
this.submitForm(formData)
}
})
},
onCopy() {
this.$store.commit('SET_FORM_DATA', this.form)
const formData = this.$store.state.sample.formData
this.$store.commit('SET_ID', null)
this.$store.commit('SET_ROW', formData)
this.$emit('first')
},
onList() {
this.$emit('next')
},
//
submitForm(formData) {
if (this.id) {
sampleDatasetEdit({ ...formData, tsy_id: this.id }).then(res => {
this.$emit('next')
this.$message.success('已更新数据集!')
})
} else {
sampleDatasetEdit(formData).then(res => {
this.$store.commit('SET_ID', res.entity.tsy_id)
this.$store.commit('SET_ROW', res.entity)
this.$emit('next')
this.$message.success('已创建新的数据集!')
})
}
}
}
}
</script>
<style scoped>
.submit-box {
text-align: center;
}
</style>

View File

@ -0,0 +1,107 @@
<template>
<div>
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="200px">
<el-row>
<el-col :span="24">
<el-form-item label="设备类型" prop="equipment_id">
<el-select v-model="form.equipment_id" filterable placeholder="" :disabled="disabled" style="width: 100%;">
<el-option v-for="item in equipmentDicts" :key="item.tsy_id" :label="`${item.equipment_name}(${item.equipment_alias})`" :value="item.tsy_id"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="设备定标时间" prop="equipment_time">
<el-date-picker v-model="form.equipment_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备型号" prop="equipment_model">
<el-input v-model="form.equipment_model" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备序号" prop="equipment_sn">
<el-input v-model="form.equipment_sn" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider></el-divider>
<div class="submit-box">
<el-button type="primary" @click="onNext">下一步数据样品类型信息</el-button>
</div>
</div>
</template>
<script>
import { equipmentDict } from '@/api/dataTransfer'
export default {
name: 'Equipment',
data() {
return {
//
disabled: false,
//
equipmentDicts: [],
//
form: {
equipment_id: '',
equipment_time: '',
equipment_model: '',
equipment_sn: ''
},
rules: {
equipment_id: [
{ required: true, message: '此处为必填项', trigger: 'change' }
]
}
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
},
row() {
return this.$store.state.sample.datasetRow
}
},
created() {
this.disabled = this.id ? true : false
this.getEquipmentDict()
},
methods: {
//
getEquipmentDict() {
equipmentDict().then(res => {
this.equipmentDicts = res.array
if (this.id || this.row.equipment_id) {
this.echoEdit()
}
})
},
//
echoEdit() {
Object.keys(this.form).forEach((key) => {
this.form[key] = this.row[key]
})
},
//
onNext() {
this.$refs['form'].validate(valid => {
if (valid) {
this.$store.commit('SET_FORM_DATA', this.form)
this.$emit('next')
}
})
}
}
}
</script>
<style scoped>
.submit-box {
text-align: center;
}
</style>

View File

@ -0,0 +1,507 @@
<template>
<div>
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="200px">
<el-row v-if="id">
<el-col :span="24">
<el-form-item label="数据集名称" prop="dataset_name">
<el-input v-model="form.dataset_name" :disabled="disabled" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="航次名称" prop="voyage_id">
<el-select v-model="form.voyage_id" filterable placeholder="" style="width: 100%;" @change="changeVoyage" :disabled="disabled">
<el-option v-for="item in voyageOptions" :key="item.tsy_id" :label="item.voyage_name" :value="item.tsy_id"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="showPlatform">
<el-col :span="24">
<el-form-item label="平台类型" prop="platform_id">
<el-select v-model="form.platform_id" filterable placeholder="" style="width: 100%;" @change="changePlatform" :disabled="disabled">
<el-option v-for="item in platformDicts" :key="item.tsy_id" :label="`${item.platform_name}(${item.platform_alias})`" :value="item.tsy_id"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<template v-if="currentPlatform === '载人潜水器组'">
<el-row>
<el-col :span="8">
<el-form-item label="平台名称" prop="platform_name">
<el-input v-model="form.platform_name" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="潜次序号" prop="diving_sn">
<el-input v-model="form.diving_sn" :disabled="disabled" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="主驾" prop="driver_master">
<el-select v-model="form.driver_master" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in memberOptions" :key="item.member_name" :label="item.member_name" :value="item.member_name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="左舷" prop="driver_left">
<el-select v-model="form.driver_left" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in memberOptions" :key="item.member_name" :label="item.member_name" :value="item.member_name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="右舷" prop="driver_right">
<el-select v-model="form.driver_right" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in memberOptions" :key="item.member_name" :label="item.member_name" :value="item.member_name"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label=""></el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="左舷科学家单位" prop="driver_unit_left">
<el-input v-model="form.driver_unit_left" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="右舷科学家单位" prop="driver_unit_right">
<el-input v-model="form.driver_unit_right" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="入水时间" prop="water_in_time">
<el-date-picker v-model="form.water_in_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出水时间" prop="water_out_time">
<el-date-picker v-model="form.water_out_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8" v-if="id">
<el-form-item label="水中时间" prop="water_minutes">
<el-input v-model="form.water_minutes" :disabled="disabled">
<template slot="append">分钟</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="坐底时间" prop="bottom_time">
<el-date-picker v-model="form.bottom_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="抛载时间" prop="throwing_time">
<el-date-picker v-model="form.throwing_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8" v-if="id">
<el-form-item label="作业时间" prop="job_minutes">
<el-input v-model="form.job_minutes" :disabled="disabled">
<template slot="append">分钟</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="回收时间" prop="receive_time">
<el-date-picker v-model="form.receive_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="布放经度" prop="wiring_lon">
<el-input v-model="form.wiring_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放纬度" prop="wiring_lat">
<el-input v-model="form.wiring_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放深度" prop="wiring_deep">
<el-input v-model="form.wiring_deep">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="currentPlatform === '无人潜水器组'">
<el-row>
<el-col :span="8">
<el-form-item label="平台名称" prop="platform_name">
<el-input v-model="form.platform_name" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="潜次序号" prop="diving_name">
<el-input v-model="form.diving_name" :disabled="disabled" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="入水时间" prop="water_in_time">
<el-date-picker v-model="form.water_in_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出水时间" prop="water_out_time">
<el-date-picker v-model="form.water_out_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8" v-if="id">
<el-form-item label="水中时间" prop="water_minutes">
<el-input v-model="form.water_minutes" :disabled="disabled">
<template slot="append">分钟</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="坐底时间" prop="bottom_time">
<el-date-picker v-model="form.bottom_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="抛载时间" prop="throwing_time">
<el-date-picker v-model="form.throwing_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8" v-if="id">
<el-form-item label="作业时间" prop="job_minutes">
<el-input v-model="form.job_minutes" :disabled="disabled">
<template slot="append">分钟</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="回收时间" prop="receive_time">
<el-date-picker v-model="form.receive_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="布放经度" prop="wiring_lon">
<el-input v-model="form.wiring_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放纬度" prop="wiring_lat">
<el-input v-model="form.wiring_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放深度" prop="wiring_deep">
<el-input v-model="form.wiring_deep">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="currentPlatform === '船舶组'">
<el-row>
<el-col :span="8">
<el-form-item label="平台名称" prop="platform_name">
<el-input v-model="form.platform_name" />
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="currentPlatform === '其他组'">
<el-row>
<el-col :span="8">
<el-form-item label="入水时间" prop="water_in_time">
<el-date-picker v-model="form.water_in_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出水时间" prop="water_out_time">
<el-date-picker v-model="form.water_out_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8" v-if="id">
<el-form-item label="水中时间" prop="water_minutes">
<el-input v-model="form.water_minutes">
<template slot="append">分钟</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="回收时间" prop="receive_time">
<el-date-picker v-model="form.receive_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="布放经度" prop="wiring_lon">
<el-input v-model="form.wiring_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放纬度" prop="wiring_lat">
<el-input v-model="form.wiring_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="布放深度" prop="wiring_deep">
<el-input v-model="form.wiring_deep">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</template>
</el-form>
<el-divider></el-divider>
<div class="submit-box">
<el-button type="primary" @click="onNext">下一步设备信息</el-button>
</div>
</div>
</template>
<script>
import { memberList, platformDict, voyageRegList } from '@/api/dataTransfer'
export default {
name: 'Platform',
data() {
return {
//
disabled: false,
//
voyageOptions: [],
//
platformDicts: [],
//
memberOptions: [],
//
form: {
dataset_name: '',
voyage_id: '',
platform_id: '',
platform_name: '',
diving_sn: '',
driver_master: '',
driver_left: '',
driver_right: '',
driver_unit_left: '',
driver_unit_right: '',
water_in_time: '',
water_out_time: '',
water_minutes: '',
bottom_time: '',
throwing_time: '',
job_minutes: '',
receive_time: '',
wiring_lon: '',
wiring_lat: '',
wiring_deep: '',
//
diving_name: ''
},
rules: {
voyage_id: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
platform_id: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
platform_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
diving_sn: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
driver_master: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
driver_left: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
driver_right: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
driver_unit_left: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
driver_unit_right: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
water_in_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
water_out_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
bottom_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
throwing_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
wiring_lon: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
wiring_lat: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
wiring_deep: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
//
diving_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
//
currentPlatform: '',
//
showPlatform: false
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
},
row() {
return this.$store.state.sample.datasetRow
}
},
created() {
console.log(this.row)
this.disabled = this.id ? true : false
this.getVoyageList()
},
methods: {
//
getVoyageList() {
voyageRegList().then(res => {
this.voyageOptions = res.page.records
this.getPlatformDict()
})
},
//
getPlatformDict() {
platformDict().then(res => {
this.platformDicts = res.array
if (this.id || this.row.platform_id) {
this.showPlatform = true
//
this.platformDicts.forEach(item => {
if (item.tsy_id == this.row.platform_id) {
this.currentPlatform = item.platform_group
}
})
this.echoEdit()
}
})
},
//
echoEdit() {
Object.keys(this.form).forEach((key) => {
this.form[key] = this.row[key]
})
},
//
getMemberList(id) {
memberList({ voyage_id: id }).then(res => {
this.memberOptions = res.array
})
},
//
changeVoyage(val) {
this.getMemberList(val)
this.showPlatform = val ? true : false
},
//
changePlatform(val) {
this.platformDicts.forEach(item => {
if (item.tsy_id == val) {
this.currentPlatform = item.platform_group
}
})
},
//
onNext() {
this.$refs['form'].validate(valid => {
if (valid) {
this.$store.commit('SET_FORM_DATA', this.form)
this.$emit('next')
}
})
},
//
reset() {
this.form = {
dataset_name: '',
voyage_id: '',
platform_id: '',
platform_name: '',
diving_sn: '',
driver_master: '',
driver_left: '',
driver_right: '',
driver_unit_left: '',
driver_unit_right: '',
water_in_time: '',
water_out_time: '',
water_minutes: '',
bottom_time: '',
throwing_time: '',
job_minutes: '',
receive_time: '',
wiring_lon: '',
wiring_lat: '',
wiring_deep: '',
//
diving_name: ''
}
this.$refs['form'].resetFields()
this.showPlatform = false
this.currentPlatform = ''
}
}
}
</script>
<style scoped>
.submit-box {
text-align: center;
}
</style>

View File

@ -0,0 +1,514 @@
<template>
<div>
<div class="bar">
<span class="track-name">{{ row.job_type }}数据样品 [{{ row.dataset_name }}]</span>
<el-button type="primary" @click="handleAdd">新增样品</el-button>
</div>
<el-table v-if="row.job_type === '站位作业'" v-loading="loading" stripe border :data="dataList">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="publish_rule" label="公开期限" />
<el-table-column prop="sampling_time" label="采样时间" />
<el-table-column prop="sampling_lon" label="采样经度" />
<el-table-column prop="sampling_lat" label="采样纬度" />
<el-table-column prop="sampling_deep" label="采样深度" />
<el-table-column prop="sample_tag_name" label="样品标签" />
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上传轨迹文件" placement="top-end">
<el-button id="mod" size="mini" type="info" class="el-icon-upload2" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<el-table v-if="row.job_type === '测线作业'" v-loading="loading" stripe border :data="dataList">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="publish_rule" label="公开期限" />
<el-table-column prop="line_sn" label="测线号" />
<el-table-column prop="line_deep" label="探测深度" />
<el-table-column prop="start_time" label="开始时间" />
<el-table-column prop="end_time" label="结束时间" />
<el-table-column prop="sample_status" label="处理状态" />
<el-table-column prop="sample_tag_name" label="样品标签" />
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上传轨迹文件" placement="top-end">
<el-button id="mod" size="mini" type="info" class="el-icon-upload2" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}数据样品`" :visible.sync="open" :before-close="cancel" width="1000px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="资助机构">
<el-tag
:key="tag"
v-for="tag in dynamicTags"
closable
:disable-transitions="false"
@close="handleClose(tag)">
{{tag}}
</el-tag>
<el-input
class="input-new-tag"
v-if="inputVisible"
v-model="inputValue"
ref="saveTagInput"
size="small"
@keyup.enter.native="handleInputConfirm"
@blur="handleInputConfirm"
>
</el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput">+ 添加</el-button>
</el-form-item>
</el-col>
</el-row>
<template v-if="row.job_type === '站位作业'">
<el-row>
<el-col :span="8">
<el-form-item label="公开期限" prop="publish_rule">
<el-select v-model="form.publish_rule" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in publishRuleDicts" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采样时间" prop="sampling_time">
<el-date-picker v-model="form.sampling_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="采样经度" prop="sampling_lon">
<el-input v-model="form.sampling_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采样纬度" prop="sampling_lat">
<el-input v-model="form.sampling_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采样深度" prop="sampling_deep">
<el-input v-model="form.sampling_deep">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="row.job_type === '测线作业'">
<el-row>
<el-col :span="8">
<el-form-item label="公开期限" prop="publish_rule">
<el-select v-model="form.publish_rule" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in publishRuleDicts" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="处理状态" prop="sample_status">
<el-select v-model="form.sample_status" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in sampleStatusDicts" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="数据格式" prop="sample_format">
<el-input v-model="form.sample_format" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="测线编号" prop="line_sn">
<el-input v-model="form.line_sn" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="测线开始时间" prop="start_time">
<el-date-picker v-model="form.start_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="测线结束时间" prop="end_time">
<el-date-picker v-model="form.end_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="测线开始经度" prop="start_lon">
<el-input v-model="form.start_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="测线开始纬度" prop="start_lat">
<el-input v-model="form.start_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="测线结束经度" prop="end_lon">
<el-input v-model="form.end_lon">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="测线结束纬度" prop="end_lat">
<el-input v-model="form.end_lat">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="探测深度" prop="line_deep">
<el-input v-model="form.line_deep">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</template>
<el-row>
<el-col :span="8">
<el-form-item label="标签类型" prop="sample_tag_name">
<el-select v-model="form.sample_tag_name" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in tagTypes" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="描述信息" prop="sample_remark">
<el-input type="textarea" :rows="3" v-model="form.sample_remark" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
lineDelete,
lineEdit,
lineList,
stationDelete,
stationEdit,
stationList
} from '@/api/dataTransfer'
export default {
name: 'SampleList',
data() {
return {
jobType: '站位作业',
loading: false,
//
dataList: [],
//
open: false,
title: '新增',
form: {
funding_org_array: [],
funding_org: '',
publish_rule: '',
sampling_time: '',
sampling_lon: '',
sampling_lat: '',
sampling_deep: '',
sample_tag_name: '',
sample_remark: '',
sample_status: '',
sample_format: '',
line_sn: '',
start_time: '',
end_time: '',
start_lon: '',
start_lat: '',
end_lon: '',
end_lat: '',
line_deep: ''
},
rules: {
publish_rule: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
sampling_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
sampling_lon: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
sampling_lat: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
sampling_deep: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
sample_status: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
line_sn: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
start_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
end_time: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
start_lon: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
start_lat: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
end_lon: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
end_lat: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
line_deep: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
//
publishRuleDicts: ['公开获取', '延期公开(6个月)', '延期公开(12个月)', '延期公开(24个月)', '不公开'],
//
sampleStatusDicts: ['原始数据', '预处理数据', '后处理数据'],
//
tagTypes: ['应急搜捞', '全球深渊深潜计划', '崖州湾共享航次', '基金委共享航次'],
inputVisible: false,
dynamicTags: [],
inputValue: ''
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
},
row() {
return this.$store.state.sample.datasetRow
}
},
created() {
this.getData()
},
methods: {
//
getData() {
this.loading = true
if (this.row.job_type === '站位作业') {
stationList({ dataset_id: this.id }).then(res => {
this.dataList = res.array
this.loading = false
})
} else {
lineList({ dataset_id: this.id }).then(res => {
this.dataList = res.array
this.loading = false
})
}
},
//
handleAdd() {
this.title = '新增'
this.open = true
},
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
this.dynamicTags = this.form.funding_org.split('、')
},
//
formatParams() {
this.form.funding_org_array = this.dynamicTags
this.form.funding_org = this.dynamicTags.join('、')
this.form.dataset_id = this.id
//
const obj = this.form
for (const key in obj) {
if (obj[key] === null || obj[key] === undefined || obj[key] === '') {
delete obj[key]
} else if (typeof obj[key] === 'object' && Object.keys(obj[key]).length === 0) {
delete obj[key]
}
}
},
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.row.job_type === '站位作业') {
if (this.title === '新增') {
this.formatParams()
stationEdit(this.form).then(res => {
this.$message.success('已创建新的站位数据样品!')
this.getData()
this.cancel()
})
} else {
this.formatParams()
stationEdit(this.form).then(res => {
this.$message.success('站位数据样品已更新!')
this.getData()
this.cancel()
})
}
} else {
if (this.title === '新增') {
this.formatParams()
lineEdit(this.form).then(res => {
this.$message.success('已创建新的测线数据样品!')
this.getData()
this.cancel()
})
} else {
this.formatParams()
lineEdit(this.form).then(res => {
this.$message.success('测线数据样品已更新!')
this.getData()
this.cancel()
})
}
}
}
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
funding_org_array: [],
funding_org: '',
publish_rule: '',
sampling_time: '',
sampling_lon: '',
sampling_lat: '',
sampling_deep: '',
sample_tag_name: '',
sample_remark: '',
sample_status: '',
sample_format: '',
line_sn: '',
start_time: '',
end_time: '',
start_lon: '',
start_lat: '',
end_lon: '',
end_lat: '',
line_deep: ''
}
this.dynamicTags = []
this.$refs['form'].resetFields()
},
//
handleDelete(row) {
this.$confirm('确定要删除该数据样品吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (this.row.job_type === '站位作业') {
stationDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
} else {
lineDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}
}).catch(() => {})
},
handleClose(type, tag) {
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1)
},
showInput() {
this.inputVisible = true
this.$nextTick(_ => {
this.$refs.saveTagInput.$refs.input.focus()
})
},
handleInputConfirm() {
const inputValue = this.inputValue
if (inputValue) {
this.dynamicTags.push(inputValue)
}
this.inputVisible = false
this.inputValue = ''
}
}
}
</script>
<style scoped>
.bar {
margin: 20px 0;
padding: 10px 0;
display: flex;
justify-content: space-between;
align-items: center;
background-color: rgba(250,251,252);
color: #929292;
font-size: 24px;
}
.el-tag + .el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
</style>

View File

@ -0,0 +1,126 @@
<template>
<div>
<div class="bar">
<span class="track-name">潜次 [{{ diving_sn }}]</span>
<el-button type="primary">上传轨迹文件</el-button>
</div>
<el-form ref="form" :model="form" size="small" label-width="200px">
<el-row>
<el-col :span="24">
<el-form-item label="轨迹文件名称">
<el-input v-model="diving_track_file" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="轨迹开始时间">
<el-input v-model="form.start.track_time" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="轨迹结束时间">
<el-input v-model="form.end.track_time" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="轨迹开始经度">
<el-input v-model="form.start.track_lon" :disabled="true">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="轨迹开始纬度">
<el-input v-model="form.start.track_lat" :disabled="true">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="轨迹结束经度">
<el-input v-model="form.end.track_lon" :disabled="true">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="轨迹结束纬度">
<el-input v-model="form.end.track_lat" :disabled="true">
<template slot="append">°</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
import { trackMap } from '@/api/dataTransfer'
export default {
name: 'TrackInfo',
data() {
return {
//
form: {
start: {
track_time: '',
track_lon: '',
track_lat: ''
},
end: {
track_time: '',
track_lon: '',
track_lat: ''
}
}
}
},
computed: {
id() {
return this.$store.state.sample.datasetId
},
row() {
return this.$store.state.sample.datasetRow
},
diving_sn() {
return this.$store.state.sample.datasetRow.diving_sn
},
diving_track_file() {
return this.$store.state.sample.datasetRow.diving_track_file
}
},
created() {
this.getTrackInfo()
},
methods: {
getTrackInfo() {
trackMap({ dataset_id: this.id }).then(res => {
const map = res.map
if (Object.keys(map).length) {
this.form = map
}
})
}
}
}
</script>
<style scoped>
.bar {
margin: 20px 0;
padding: 10px 0;
display: flex;
justify-content: space-between;
align-items: center;
background-color: rgba(250,251,252);
color: #929292;
font-size: 24px;
}
</style>

View File

@ -0,0 +1,430 @@
<template>
<div id="" class="page-body">
<div class="page-header">
<h1 class="page-title">航次数据汇交</h1>
<el-breadcrumb>
<el-breadcrumb-item :to="{path: '/'}">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{name: 'VoyageReg'}">数据汇交</el-breadcrumb-item>
<el-breadcrumb-item>航次数据汇交</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">航次数据录入</el-button>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="voyage_name" label="航次名称" />
<el-table-column prop="ship_name" label="科考船舶" />
<el-table-column prop="voyage_start_date" label="离港日期" />
<el-table-column prop="voyage_end_date" label="返港日期" />
<el-table-column prop="voyage_officer" label="首席" />
<el-table-column prop="member_total" label="参航人数" />
<el-table-column prop="funding_org" label="资助机构" />
<el-table-column prop="funding_code" label="资助编号" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
background
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}航次信息`" :visible.sync="open" :before-close="cancel" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="航次名称" prop="voyage_name">
<el-input v-model="form.voyage_name" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="资助编号" prop="funding_code">
<el-input v-model="form.funding_code" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="科考船舶" prop="ship_name">
<el-select v-model="form.ship_name" style="width: 100%">
<el-option
v-for="(item, index) in shipOptions"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="涉密航次" prop="serect_status">
<el-select v-model="form.serect_status" style="width: 100%">
<el-option
v-for="(item, index) in secretOptions"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="离岗日期" prop="start_date">
<el-date-picker
style="width: 100%"
v-model="form.start_date"
type="date">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="返岗日期" prop="end_date">
<el-date-picker
style="width: 100%"
v-model="form.end_date"
type="date">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="航次资助机构">
<el-tag
:key="tag"
v-for="tag in dynamicTags1"
closable
:disable-transitions="false"
@close="handleClose(1, tag)">
{{tag}}
</el-tag>
<el-input
class="input-new-tag"
v-if="inputVisible1"
v-model="inputValue1"
ref="saveTagInput1"
size="small"
@keyup.enter.native="handleInputConfirm(1)"
@blur="handleInputConfirm(1)"
>
</el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput(1)">+ 添加</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="航次首席" prop="voyage_officer">
<el-tag
:key="tag"
v-for="tag in dynamicTags2"
closable
:disable-transitions="false"
@close="handleClose(2, tag)">
{{tag}}
</el-tag>
<el-input
class="input-new-tag"
v-if="inputVisible2"
v-model="inputValue2"
ref="saveTagInput2"
size="small"
@keyup.enter.native="handleInputConfirm(2)"
@blur="handleInputConfirm(2)"
>
</el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput(2)">+ 添加</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="描述信息" prop="voyage_remark">
<el-input type="textarea" :rows="3" v-model="form.voyage_remark" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { voyageRegList, voyageRegEdit, voyageRegDelete } from '@/api/dataTransfer'
import { time } from '@/utils/validate'
export default {
name: 'VoyageReg',
data() {
return {
loading: false,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0,
//
open: false,
title: '新增',
form: {
voyage_name: '',
ship_name: '',
serect_status: '',
start_date: '',
end_date: '',
voyage_officer_array: [],
funding_org_array: [],
funding_code: '',
voyage_remark: '',
voyage_officer: '',
funding_org: '',
voyage_start_date: '',
voyage_end_date: ''
},
rules: {
voyage_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
ship_name: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
start_date: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
end_date: [
{ required: true, message: '此处为必填项', trigger: 'change' }
],
voyage_officer: [
{ required: true, message: '此处为必填项', trigger: 'change' }
]
},
shipOptions: ['探索一号', '探索二号'],
secretOptions: [
{
label: '是',
value: 'Active'
},
{
label: '否',
value: 'InActive'
}
],
inputVisible1: false,
dynamicTags1: [],
inputValue1: '',
dynamicTags2: [],
inputVisible2: false,
inputValue2: ''
}
},
created() {
this.getData()
},
methods: {
//
getData() {
this.loading = true
voyageRegList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
})
},
//
handleAdd() {
this.title = '新增'
this.open = true
},
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
this.form.start_date = new Date(this.form.voyage_start_date)
this.form.end_date = new Date(this.form.voyage_end_date)
this.dynamicTags1 = this.form.funding_org.split('、')
this.form.funding_org_array = this.dynamicTags1
this.dynamicTags2 = this.form.voyage_officer.split('、')
this.form.voyage_officer_array = this.dynamicTags2
},
//
formatParams() {
this.form.funding_org_array = this.dynamicTags1
this.form.funding_org = this.dynamicTags1.join('、')
this.form.voyage_officer_array = this.dynamicTags2
this.form.voyage_officer = this.dynamicTags2.join('、')
this.form.voyage_start_date = time(this.form.start_date, 'date')
this.form.voyage_end_date = time(this.form.end_date, 'date')
},
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.title === '新增') {
this.formatParams()
voyageRegEdit(this.form).then(res => {
this.$message.success('已创建新的航次信息!')
this.getData()
this.cancel()
})
} else {
this.formatParams()
voyageRegEdit(this.form).then(res => {
this.$message.success('航次信息已更新!')
this.getData()
this.cancel()
})
}
}
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
voyage_name: '',
ship_name: '',
serect_status: '',
start_date: '',
end_date: '',
voyage_officer_array: [],
funding_org_array: [],
funding_code: '',
voyage_remark: '',
voyage_officer: '',
funding_org: '',
voyage_start_date: '',
voyage_end_date: ''
}
this.dynamicTags1 = []
this.dynamicTags2 = []
this.$refs['form'].resetFields()
},
//
handleDelete(row) {
this.$confirm('确定要删除该航次数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
voyageRegDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
handleClose(type, tag) {
if (type === 1) {
this.dynamicTags1.splice(this.dynamicTags1.indexOf(tag), 1)
}
if (type === 2) {
this.dynamicTags2.splice(this.dynamicTags2.indexOf(tag), 1)
}
},
showInput(type) {
if (type === 1) {
this.inputVisible1 = true
this.$nextTick(_ => {
this.$refs.saveTagInput1.$refs.input.focus()
})
}
if (type === 2) {
this.inputVisible2 = true
this.$nextTick(_ => {
this.$refs.saveTagInput2.$refs.input.focus()
})
}
},
handleInputConfirm(type) {
if (type === 1) {
const inputValue1 = this.inputValue1
if (inputValue1) {
this.dynamicTags1.push(inputValue1)
}
this.inputVisible1 = false
this.inputValue1 = ''
}
if (type === 2) {
const inputValue2 = this.inputValue2
if (inputValue2) {
this.dynamicTags2.push(inputValue2)
}
this.inputVisible2 = false
this.inputValue2 = ''
}
}
},
watch: {
dynamicTags2(arr) {
if (arr.length) {
this.form.voyage_officer = this.dynamicTags2.join('、')
this.$refs.form.clearValidate('voyage_officer')
} else {
this.form.voyage_officer = ''
}
}
}
}
</script>
<style>
.el-tag + .el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
</style>

View File

@ -15,12 +15,22 @@
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="data_name" label="数据样品类型类型名称" />
<el-table-column prop="data_name" label="数据样品类型名称" />
<el-table-column prop="data_eng" label="英文名称" />
<el-table-column prop="data_alias" label="别名" width="100" />
<el-table-column prop="data_order" label="排序" width="100" />
<el-table-column prop="data_group" label="分组" width="100" />
<el-table-column prop="data_group" label="分组" width="120" />
<el-table-column prop="create_time" label="创建时间" width="160" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
@ -34,48 +44,38 @@
@current-change="handleCurrentChange"
/>
</div>
<div class="modal">
<el-dialog
:title="handleType ? '添加数据样品类型' : '修改数据样品类型'"
:visible.sync="open"
width="30%"
>
<el-form ref="form" :model="form" label-width="140px" :rules="rules">
<el-form-item label="数据样品类型名称" prop="nameZh">
<el-input v-model="form.nameZh" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="英文名称" prop="nameEn">
<el-input v-model="form.nameEn" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="别名" prop="alias">
<el-input v-model="form.alias" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="数据样品类型描述" prop="description">
<el-input v-model="form.description" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
</el-form>
<el-row type="flex" justify="center">
<el-button
style="width: 100px"
type="primary"
size="medium"
@click="submitForm"
>确定</el-button>
<el-button
size="medium"
style="margin-left: 10px; width: 100px"
type="info"
plain
@click="cancel"
>取消</el-button>
</el-row>
</el-dialog>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}数据样品类型`" :visible.sync="open" :before-close="cancel" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-form-item label="数据样品类型名称" prop="data_name">
<el-input v-model="form.data_name" />
</el-form-item>
<el-form-item label="类型分组" prop="data_group">
<el-input v-model="form.data_group" />
</el-form-item>
<el-form-item label="英文名称" prop="data_eng">
<el-input v-model="form.data_eng" />
</el-form-item>
<el-form-item label="别名(简称)" prop="data_alias">
<el-input v-model="form.data_alias" />
</el-form-item>
<el-form-item label="排序" prop="data_order">
<el-input v-model="form.data_order" type="number" maxlength="4" />
</el-form-item>
<el-form-item label="描述信息" prop="data_remark">
<el-input v-model="form.data_remark" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { dictDataList } from '@/api/dicManage'
import { dictDataDelete, dictDataEdit, dictDataList } from '@/api/dicManage'
export default {
name: 'DataSampleType',
data() {
@ -91,21 +91,29 @@ export default {
//
tableData: [],
total: 0,
//
handleType: 1,
//
open: false,
//
form: {},
//
title: '新增',
form: {
data_name: '',
data_group: '',
data_eng: '',
data_alias: '',
data_order: '',
data_remark: ''
},
rules: {
nameZh: [
{ required: true, message: '请输入数据样品类型名称', trigger: 'blur' }
data_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
nameEn: [
{ required: true, message: '请输入英文名称', trigger: 'blur' }
data_eng: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
alias: [
{ required: true, message: '请输入别名', trigger: 'blur' }
data_alias: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
data_order: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
}
}
@ -116,19 +124,74 @@ export default {
methods: {
//
getData() {
this.loading = true
dictDataList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
})
},
//
handleAdd() {},
handleAdd() {
this.title = '新增'
this.open = true
},
//
handleEdit() {},
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
},
//
submitForm() {},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.title === '新增') {
dictDataEdit(this.form).then(res => {
this.$message.success('已创建新的数据样品类型!')
this.getData()
this.cancel()
})
} else {
dictDataEdit(this.form).then(res => {
this.$message.success('数据样品类型已更新!')
this.getData()
this.cancel()
})
}
}
})
},
//
cancel() {},
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
data_name: '',
data_group: '',
data_eng: '',
data_alias: '',
data_order: '',
data_remark: ''
}
this.$refs['form'].resetFields()
},
//
handleDelete(row) {
this.$confirm('确定要删除该数据样品类型吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dictDataDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val

View File

@ -10,30 +10,24 @@
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="batchImport">设备类型录入</el-button>
<el-button type="primary" size="medium" @click="handleAdd">设备类型录入</el-button>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" height="600px" @row-click="openModal">
<el-table-column
type="index"
width="50"
/>
<el-table-column prop="nameZh" label="设备类型名称" />
<el-table-column prop="nameEn" label="英文名称" />
<el-table-column prop="alias" label="别名" />
<el-table-column prop="description" label="描述" />
<el-table-column prop="updateTime" label="创建时间">
<template slot-scope="scope">
{{ time(scope.row.updateTime) }}
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="equipment_name" label="设备类型名称" />
<el-table-column prop="equipment_eng" label="英文名称" />
<el-table-column prop="equipment_alias" label="别名" width="100" />
<el-table-column prop="equipment_order" label="排序" width="100" />
<el-table-column prop="equipment_group" label="分组" width="120" />
<el-table-column prop="create_time" label="创建时间" width="160" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" />
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" style="margin-left: 0%;" />
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
@ -41,308 +35,173 @@
<div class="pagination-box">
<el-pagination
background
:current-page="currentPage"
:page-sizes="[15, 30, 50]"
:page-size="pagesize"
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="count"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<div class="modal">
<el-dialog
:title="userStatus? '添加设备类型' : '修改设备类型'"
:visible.sync="showUserForm"
width="30%"
:before-close="handleClose"
>
<el-form ref="form" :model="form" label-width="140px" :rules="rules">
<el-form-item label="设备类型名称" prop="nameZh">
<el-input v-model="form.nameZh" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="英文名称" prop="nameEn">
<el-input v-model="form.nameEn" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="别名" prop="alias">
<el-input v-model="form.alias" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="数据样品类型描述" prop="description">
<el-input v-model="form.description" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
</el-form>
<el-row type="flex" justify="center">
<el-button
v-loading="subLoading"
style="width: 100px"
type="primary"
size="medium"
@click="saveData"
>确定</el-button>
<el-button
size="medium"
style="margin-left: 10px; width: 100px"
type="info"
plain
@click="showUserForm = false;clearInput();resetForm();"
>取消</el-button>
</el-row>
</el-dialog>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}设备类型`" :visible.sync="open" width="500px" :before-close="cancel" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-form-item label="设备类型名称" prop="equipment_name">
<el-input v-model="form.equipment_name" />
</el-form-item>
<el-form-item label="设备分组" prop="equipment_group">
<el-input v-model="form.equipment_group" />
</el-form-item>
<el-form-item label="英文名称" prop="equipment_eng">
<el-input v-model="form.equipment_eng" />
</el-form-item>
<el-form-item label="别名(简称)" prop="equipment_alias">
<el-input v-model="form.equipment_alias" />
</el-form-item>
<el-form-item label="排序" prop="equipment_order">
<el-input v-model="form.equipment_order" type="number" maxlength="4" />
</el-form-item>
<el-form-item label="描述信息" prop="equipment_remark">
<el-input v-model="form.equipment_remark" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDicList, deleteDoc, equAdd, equUpdate
} from '@/api/dicManage'
import { dictEquipmentDelete, dictEquipmentEdit, dictEquipmentList } from '@/api/dicManage'
export default {
name: 'DocType',
data() {
return {
loading: false,
subLoading: false,
//
userStatus: true,
// model
recordEnabled: 0,
showUserForm: false,
delDialogVisible: false,
currentPage: 1,
pagesize: 15,
count: 0,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0,
//
open: false,
title: '新增',
form: {
nameZh: '',
nameEn: '',
alias: '',
description: '',
typeId: '',
id: ''
equipment_name: '',
equipment_group: '',
equipment_eng: '',
equipment_alias: '',
equipment_order: '',
equipment_remark: ''
},
rules: {
nameZh: [
{ required: true, message: '请输入数据样品类型名称', trigger: 'blur' }
equipment_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
nameEn: [
{ required: true, message: '请输入英文名称', trigger: 'blur' }
equipment_eng: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
alias: [
{ required: true, message: '请输入别名', trigger: 'blur' }
equipment_alias: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
equipment_order: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
tableData: [
// {
// name: '',
// enName: 'Sidescan',
// alias: 'VD',
// describe: '',
// updateTime: '2022.3.4 12: 20: 00'
// },
]
}
}
},
created() {
this.init()
this.getData()
},
methods: {
batchImport() {
this.showUserForm = true
this.userStatus = true
},
time(val) {
if (!val) {
return ''
}
var date = new Date(val)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var minute = date.getMinutes()
minute = minute < 10 ? '0' + minute : minute
var second = date.getSeconds()
second = second < 10 ? '0' + second : second
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
},
tableIndex(index) {
return (this.currentPage - 1) * this.pagesize + index + 1
},
openModal(row, event, column) {
//
var opType = column.target.id
if (opType == 'del') {
this.$confirm('确定删除选中的数据吗?此操作不可撤销!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.deleteData(row.typeId)
})
.catch((error) => {
console.log(error)
})
} else if (opType == 'mod') {
this.showUserForm = true
this.userStatus = false
this.form = JSON.parse(JSON.stringify(row))
}
},
async deleteData(typeId) {
//
getData() {
this.loading = true
const data = {
type: 'equType',
typeId
}
try {
const res = await deleteDoc(data)
if (res.code == 200) {
this.init()
}
dictEquipmentList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
})
},
init() {
this.currentPage = 1
this.getData()
//
handleAdd() {
this.title = '新增'
this.open = true
},
// currentPagepagesizedata
handleSizeChange: function(size) {
this.pagesize = size
this.getData()
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
},
handleCurrentChange: function(currentPage) {
this.currentPage = currentPage
this.getData()
},
fuzzyQueryFunction() {
this.currentPage = 1
this.getData()
},
reset() {
this.queryName = ''
},
async getData() {
this.loading = true
const data = {
page: this.currentPage,
size: this.pagesize,
type: 'equType'
}
try {
const res = await getDicList(data)
if (res.code == 200) {
if (res.data.content) {
this.tableData = res.data.content
this.count = Number(res.data.count)
}
}
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
},
saveData() {
this.$refs['form'].validate((valid) => {
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.userStatus) {
this.addFunction()
if (this.title === '新增') {
dictEquipmentEdit(this.form).then(res => {
this.$message.success('已创建新的设备类型!')
this.getData()
this.cancel()
})
} else {
this.updateFunction()
dictEquipmentEdit(this.form).then(res => {
this.$message.success('设备类型已更新!')
this.getData()
this.cancel()
})
}
} else {
return false
}
})
},
async addFunction() {
this.subLoading = true
const data = {
nameZh: this.form.nameZh,
nameEn: this.form.nameEn,
alias: this.form.alias,
description: this.form.description
}
try {
const res = await equAdd(data)
if (res.code === 200) {
this.$message({
message: '添加成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
//
cancel() {
this.open = false
this.reset()
},
async updateFunction() {
this.subLoading = true
const data = {
nameZh: this.form.nameZh,
nameEn: this.form.nameEn,
alias: this.form.alias,
description: this.form.description,
typeId: this.form.typeId,
id: this.form.id
//
reset() {
this.form = {
equipment_name: '',
equipment_group: '',
equipment_eng: '',
equipment_alias: '',
equipment_order: '',
equipment_remark: ''
}
try {
const res = await equUpdate(data)
if (res.code === 200) {
this.$message({
message: '修改成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
},
resetForm() {
this.$refs['form'].resetFields()
},
handleClose(done) { //
this.clearInput()
this.resetForm()
done()
//
handleDelete(row) {
this.$confirm('确定要删除该设备类型吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dictEquipmentDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
clearInput() {
this.form = {
nameZh: '',
nameEn: '',
alias: '',
description: '',
typeId: '',
id: ''
}
}
}
}
</script>

View File

@ -10,30 +10,24 @@
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="batchImport">平台类型录入</el-button>
<el-button type="primary" size="medium" @click="handleAdd">平台类型录入</el-button>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" height="600px" @row-click="openModal">
<el-table-column
type="index"
width="50"
/>
<el-table-column prop="nameZh" label="平台类型名称" />
<el-table-column prop="nameEn" label="英文名称" />
<el-table-column prop="alias" label="别名" />
<el-table-column prop="description" label="描述" />
<el-table-column prop="updateTime" label="创建时间">
<template slot-scope="scope">
{{ time(scope.row.updateTime) }}
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="platform_name" label="平台类型名称" />
<el-table-column prop="platform_eng" label="英文名称" />
<el-table-column prop="platform_alias" label="别名" width="100" />
<el-table-column prop="platform_order" label="排序" width="100" />
<el-table-column prop="platform_group" label="分组" width="120" />
<el-table-column prop="create_time" label="创建时间" width="160" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" />
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" style="margin-left: 0%;" />
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
@ -41,298 +35,173 @@
<div class="pagination-box">
<el-pagination
background
:current-page="currentPage"
:page-sizes="[15, 30, 50]"
:page-size="pagesize"
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="count"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<div class="modal">
<el-dialog
:title="userStatus? '添加平台类型' : '修改平台类型'"
:visible.sync="showUserForm"
width="30%"
:before-close="handleClose"
>
<el-form ref="form" :model="form" label-width="140px" :rules="rules">
<el-form-item label="平台类型名称" prop="nameZh">
<el-input v-model="form.nameZh" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="英文名称" prop="nameEn">
<el-input v-model="form.nameEn" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="别名" prop="alias">
<el-input v-model="form.alias" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="平台类型描述" prop="description">
<el-input v-model="form.description" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
</el-form>
<el-row type="flex" justify="center">
<el-button
v-loading="subLoading"
style="width: 100px"
type="primary"
size="medium"
@click="saveData"
>确定</el-button>
<el-button
size="medium"
style="margin-left: 10px; width: 100px"
type="info"
plain
@click="showUserForm = false;clearInput();resetForm();"
>取消</el-button>
</el-row>
</el-dialog>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}平台类型`" :visible.sync="open" :before-close="cancel" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-form-item label="平台类型名称" prop="platform_name">
<el-input v-model="form.platform_name" />
</el-form-item>
<el-form-item label="平台分组" prop="platform_group">
<el-input v-model="form.platform_group" />
</el-form-item>
<el-form-item label="英文名称" prop="platform_eng">
<el-input v-model="form.platform_eng" />
</el-form-item>
<el-form-item label="别名(简称)" prop="platform_alias">
<el-input v-model="form.platform_alias" />
</el-form-item>
<el-form-item label="排序" prop="platform_order">
<el-input v-model="form.platform_order" type="number" maxlength="4" />
</el-form-item>
<el-form-item label="描述信息" prop="platform_remark">
<el-input v-model="form.platform_remark" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDicList, deleteDoc, platformAdd, platformUpdate
} from '@/api/dicManage'
import { dictPlatformDelete, dictPlatformEdit, dictPlatformList } from '@/api/dicManage'
export default {
name: 'PlatformType',
data() {
return {
loading: false,
subLoading: false,
//
userStatus: true,
// model
recordEnabled: 0,
showUserForm: false,
delDialogVisible: false,
currentPage: 1,
pagesize: 15,
count: 0,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0,
//
open: false,
title: '新增',
form: {
nameZh: '',
nameEn: '',
alias: '',
description: '',
typeId: '',
id: ''
platform_name: '',
platform_group: '',
platform_eng: '',
platform_alias: '',
platform_order: '',
platform_remark: ''
},
rules: {
nameZh: [
{ required: true, message: '请输入平台类型名称', trigger: 'blur' }
platform_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
nameEn: [
{ required: true, message: '请输入英文名称', trigger: 'blur' }
platform_eng: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
alias: [
{ required: true, message: '请输入别名', trigger: 'blur' }
platform_alias: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
platform_order: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
tableData: [
// {
// name: '',
// enName: 'Sidescan',
// alias: 'VD',
// description: '',
// updateTime: '2022.3.4 12: 20: 00'
// },
]
}
}
},
created() {
this.init()
this.getData()
},
methods: {
batchImport() {
this.showUserForm = true
this.userStatus = true
},
time(val) {
if (!val) {
return ''
}
var date = new Date(val)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var minute = date.getMinutes()
minute = minute < 10 ? '0' + minute : minute
var second = date.getSeconds()
second = second < 10 ? '0' + second : second
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
},
openModal(row, event, column) {
//
var opType = column.target.id
if (opType == 'del') {
this.$confirm('确定删除选中的数据吗?此操作不可撤销!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.deleteData(row.typeId)
})
.catch((error) => {
console.log(error)
})
} else if (opType == 'mod') {
this.showUserForm = true
this.userStatus = false
this.form = JSON.parse(JSON.stringify(row))
}
},
async deleteData(typeId) {
//
getData() {
this.loading = true
const data = {
type: 'platformType',
typeId
}
try {
const res = await deleteDoc(data)
if (res.code == 200) {
this.init()
}
dictPlatformList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
})
},
init() {
this.currentPage = 1
this.getData()
//
handleAdd() {
this.title = '新增'
this.open = true
},
// currentPagepagesizedata
handleSizeChange: function(size) {
this.pagesize = size
this.getData()
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
},
handleCurrentChange: function(currentPage) {
this.currentPage = currentPage
this.getData()
},
async getData() {
this.loading = true
const data = {
page: this.currentPage,
size: this.pagesize,
type: 'platformType'
}
try {
const res = await getDicList(data)
if (res.code == 200) {
if (res.data.content) {
this.tableData = res.data.content
this.count = Number(res.data.count)
}
}
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
},
saveData() {
this.$refs['form'].validate((valid) => {
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.userStatus) {
this.addFunction()
if (this.title === '新增') {
dictPlatformEdit(this.form).then(res => {
this.$message.success('已创建新的平台类型!')
this.getData()
this.cancel()
})
} else {
this.updateFunction()
dictPlatformEdit(this.form).then(res => {
this.$message.success('平台类型已更新!')
this.getData()
this.cancel()
})
}
} else {
return false
}
})
},
async addFunction() {
this.subLoading = true
const data = {
nameZh: this.form.nameZh,
nameEn: this.form.nameEn,
alias: this.form.alias,
description: this.form.description
}
try {
const res = await platformAdd(data)
if (res.code === 200) {
this.$message({
message: '添加成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
//
cancel() {
this.open = false
this.reset()
},
async updateFunction() {
this.subLoading = true
const data = {
nameZh: this.form.nameZh,
nameEn: this.form.nameEn,
alias: this.form.alias,
description: this.form.description,
typeId: this.form.typeId,
id: this.form.id
//
reset() {
this.form = {
platform_name: '',
platform_group: '',
platform_eng: '',
platform_alias: '',
platform_order: '',
platform_remark: ''
}
try {
const res = await platformUpdate(data)
if (res.code === 200) {
this.$message({
message: '修改成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
},
resetForm() {
this.$refs['form'].resetFields()
},
handleClose(done) { //
this.clearInput()
this.resetForm()
done()
//
handleDelete(row) {
this.$confirm('确定要删除该平台类型吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dictPlatformDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
clearInput() {
this.form = {
nameZh: '',
nameEn: '',
alias: '',
description: '',
typeId: '',
id: ''
}
}
}
}
</script>

View File

@ -10,27 +10,27 @@
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="batchImport">共享单位录入</el-button>
<el-button type="primary" size="medium" @click="handleAdd">共享单位录入</el-button>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" height="600px" @row-click="openModal">
<el-table-column
type="index"
width="50"
/>
<el-table-column prop="orgName" label="单位名称" />
<el-table-column prop="updateTime" label="创建时间">
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="unit_name" label="共享单位名称" width="300" />
<el-table-column prop="unit_type" label="单位类型" width="200">
<template slot-scope="scope">
{{ time(scope.row.updateTime) }}
<span>{{ scope.row.unit_type ? '单位类型' + scope.row.unit_type : '' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<el-table-column prop="link_man" label="单位负责人" width="100" />
<el-table-column prop="link_tel" label="联系电话" width="150" />
<el-table-column prop="unit_addr" label="单位地址" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" />
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" style="margin-left: 0%;" />
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
@ -38,271 +38,195 @@
<div class="pagination-box">
<el-pagination
background
:current-page="currentPage"
:page-sizes="[15, 30, 50]"
:page-size="pagesize"
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="count"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<div class="modal">
<el-dialog
:title="userStatus? '添加共享单位' : '修改共享单位'"
:visible.sync="showUserForm"
width="30%"
:before-close="handleClose"
>
<el-form ref="form" :model="form" label-width="140px" :rules="rules">
<el-form-item label="单位名称" prop="orgName">
<el-input v-model="form.orgName" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
</el-form>
<el-row type="flex" justify="center">
<el-button
v-loading="subLoading"
style="width: 100px"
type="primary"
size="medium"
@click="saveData"
>确定</el-button>
<el-button
size="medium"
style="margin-left: 10px; width: 100px"
type="info"
plain
@click="showUserForm = false;clearInput();resetForm();"
>取消</el-button>
</el-row>
</el-dialog>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}共享单位`" :visible.sync="open" :before-close="cancel" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="单位名称" prop="unit_name">
<el-input v-model="form.unit_name" />
</el-form-item>
<el-form-item label="单位类型" prop="unit_type">
<el-select v-model="form.unit_type" style="width: 100%;">
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="单位地址" prop="unit_addr">
<el-input v-model="form.unit_addr" />
</el-form-item>
<el-form-item label="单位负责人" prop="link_man">
<el-input v-model="form.link_man" />
</el-form-item>
<el-form-item label="电子邮件" prop="link_email">
<el-input v-model="form.link_email" />
</el-form-item>
<el-form-item label="联系电话" prop="link_tel">
<el-input v-model="form.link_tel" />
</el-form-item>
<el-form-item label="传真号码" prop="link_fax">
<el-input v-model="form.link_fax" />
</el-form-item>
<el-form-item label="备注信息" prop="unit_remark">
<el-input v-model="form.unit_remark" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDicList, deleteDoc, shareAdd, shareUpdate
} from '@/api/dicManage'
import { dictShareDelete, dictShareEdit, dictShareList } from '@/api/dicManage'
export default {
name: 'VisitorUnit',
name: 'SharedUnit',
data() {
return {
loading: false,
subLoading: false,
//
userStatus: true,
// model
recordEnabled: 0,
showUserForm: false,
delDialogVisible: false,
currentPage: 1,
pagesize: 15,
count: 0,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0,
//
open: false,
title: '新增',
form: {
orgName: '',
typeId: '',
id: ''
unit_name: '',
unit_type: '',
unit_addr: '',
link_man: '',
link_email: '',
link_tel: '',
link_fax: '',
unit_remark: ''
},
rules: {
orgName: [
{ required: true, message: '请输入单位名称', trigger: 'blur' }
unit_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
tableData: [
// {
// name: '',
// enName: 'Sidescan',
// latitude: 'VD',
// description: '',
// updateTime: '2022.3.4 12: 20: 00'
// },
typeOptions: [
{
label: '单位类型A',
value: 'A'
},
{
label: '单位类型B',
value: 'B'
},
{
label: '单位类型C',
value: 'C'
}
]
}
},
created() {
this.init()
this.getData()
},
methods: {
batchImport() {
this.showUserForm = true
this.userStatus = true
},
time(val) {
if (!val) {
return ''
}
var date = new Date(val)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var minute = date.getMinutes()
minute = minute < 10 ? '0' + minute : minute
var second = date.getSeconds()
second = second < 10 ? '0' + second : second
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
},
openModal(row, event, column) {
//
var opType = column.target.id
if (opType == 'del') {
this.$confirm('确定删除选中的数据吗?此操作不可撤销!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.deleteData(row.typeId)
})
.catch((error) => {
console.log(error)
})
} else if (opType == 'mod') {
this.showUserForm = true
this.userStatus = false
this.form = JSON.parse(JSON.stringify(row))
}
},
async deleteData(typeId) {
//
getData() {
this.loading = true
const data = {
type: 'shareOrg',
typeId
}
try {
const res = await deleteDoc(data)
if (res.code == 200) {
this.init()
}
dictShareList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
})
},
init() {
this.currentPage = 1
this.getData()
//
handleAdd() {
this.title = '新增'
this.open = true
},
// currentPagepagesizedata
handleSizeChange: function(size) {
this.pagesize = size
this.getData()
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
},
handleCurrentChange: function(currentPage) {
this.currentPage = currentPage
this.getData()
},
async getData() {
this.loading = true
const data = {
page: this.currentPage,
size: this.pagesize,
type: 'shareOrg'
}
try {
const res = await getDicList(data)
if (res.code == 200) {
if (res.data.content) {
this.tableData = res.data.content
this.count = Number(res.data.count)
}
}
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
},
saveData() {
this.$refs['form'].validate((valid) => {
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.userStatus) {
this.addFunction()
if (this.title === '新增') {
dictShareEdit(this.form).then(res => {
this.$message.success('已创建新的共享单位!')
this.getData()
this.cancel()
})
} else {
this.updateFunction()
dictShareEdit(this.form).then(res => {
this.$message.success('共享单位已更新!')
this.getData()
this.cancel()
})
}
} else {
return false
}
})
},
async addFunction() {
this.subLoading = true
const data = {
orgName: this.form.orgName,
}
try {
const res = await shareAdd(data)
if (res.code === 200) {
this.$message({
message: '添加成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
//
cancel() {
this.open = false
this.reset()
},
async updateFunction() {
this.subLoading = true
const data = {
orgName: this.form.orgName,
typeId: this.form.typeId,
id: this.form.id
//
reset() {
this.form = {
unit_name: '',
unit_type: '',
unit_addr: '',
link_man: '',
link_email: '',
link_tel: '',
link_fax: '',
unit_remark: ''
}
try {
const res = await shareUpdate(data)
if (res.code === 200) {
this.$message({
message: '修改成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
},
resetForm() {
this.$refs['form'].resetFields()
},
handleClose(done) { //
this.clearInput()
this.resetForm()
done()
//
handleDelete(row) {
this.$confirm('确定要删除该单位吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dictShareDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
clearInput() {
this.form = {
orgName: '',
typeId: '',
id: ''
}
}
}
}
</script>

View File

@ -10,30 +10,21 @@
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="batchImport">参航单位录入</el-button>
<el-button type="primary" size="medium" @click="handleAdd">新增参航单位</el-button>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" height="600px" @row-click="openModal">
<el-table-column
type="index"
width="50"
/>
<el-table-column prop="orgName" label="单位名称" />
<el-table-column prop="longitude" label="经度" />
<el-table-column prop="latitude" label="纬度" />
<el-table-column prop="description" label="单位介绍" />
<el-table-column prop="updateTime" label="创建时间">
<template slot-scope="scope">
{{ time(scope.row.updateTime) }}
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="unit_name" label="参航单位名称" />
<el-table-column prop="unit_lon" label="经度" width="200" />
<el-table-column prop="unit_lat" label="纬度" width="200" />
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="修改" placement="top-end">
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" />
<el-button id="mod" size="mini" type="warning" class="el-icon-edit" @click="handleEdit(scope.row)" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-end">
<el-button id="del" size="mini" type="danger" class="el-icon-delete" style="margin-left: 0%;" />
<el-button id="del" size="mini" type="danger" class="el-icon-delete" @click="handleDelete(scope.row)" style="margin-left: 0%;" />
</el-tooltip>
</template>
</el-table-column>
@ -41,298 +32,165 @@
<div class="pagination-box">
<el-pagination
background
:current-page="currentPage"
:page-sizes="[15, 30, 50]"
:page-size="pagesize"
:page-sizes="[10, 20, 30]"
:page-size="params.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="count"
:total="total"
:current-page="pageNum"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
<div class="modal">
<el-dialog
:title="userStatus? '添加参航单位' : '修改参航单位'"
:visible.sync="showUserForm"
width="30%"
:before-close="handleClose"
>
<el-form ref="form" :model="form" label-width="140px" :rules="rules">
<el-form-item label="单位名称" prop="orgName">
<el-input v-model="form.orgName" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="单位介绍" prop="description">
<el-input v-model="form.description" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="经度" prop="longitude">
<el-input v-model="form.longitude" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
<el-form-item label="纬度" prop="latitude">
<el-input v-model="form.latitude" size="medium" auto-complete="off" placeholder="请输入" />
</el-form-item>
</el-form>
<el-row type="flex" justify="center">
<el-button
v-loading="subLoading"
style="width: 100px"
type="primary"
size="medium"
@click="saveData"
>确定</el-button>
<el-button
size="medium"
style="margin-left: 10px; width: 100px"
type="info"
plain
@click="showUserForm = false;clearInput();resetForm();"
>取消</el-button>
</el-row>
</el-dialog>
</div>
<!-- 新增/编辑弹窗-->
<el-dialog :title="`${title}参航单位`" :visible.sync="open" :before-close="cancel" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="单位名称" prop="unit_name">
<el-input v-model="form.unit_name" />
</el-form-item>
<el-form-item label="单位地址" prop="unit_addr">
<el-input v-model="form.unit_addr" />
</el-form-item>
<el-form-item label="所在经度" prop="unit_lon">
<el-input v-model="form.unit_lon" />
</el-form-item>
<el-form-item label="所在纬度" prop="unit_lat">
<el-input v-model="form.unit_lat" />
</el-form-item>
<el-form-item label="备注信息" prop="unit_remark">
<el-input v-model="form.unit_remark" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDicList, deleteDoc, partAdd, partUpdate
} from '@/api/dicManage'
import { dictSailList, dictSailEdit, dictSailDelete } from '@/api/dicManage'
export default {
name: 'VisitorUnit',
data() {
return {
loading: false,
subLoading: false,
//
userStatus: true,
// model
recordEnabled: 0,
showUserForm: false,
delDialogVisible: false,
currentPage: 1,
pagesize: 15,
count: 0,
//
params: {
start: 0,
limit: 10,
group: 10
},
pageNum: 1,
//
tableData: [],
total: 0,
//
open: false,
title: '新增',
form: {
orgName: '',
longitude: '',
latitude: '',
description: '',
typeId: '',
id: ''
unit_name: '',
unit_addr: '',
unit_lon: '',
unit_lat: '',
unit_remark: ''
},
rules: {
orgName: [
{ required: true, message: '请输入参航单位名称', trigger: 'blur' }
unit_name: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
longitude: [
{ required: true, message: '请输入经度', trigger: 'blur' }
unit_lon: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
],
latitude: [
{ required: true, message: '请输入纬度', trigger: 'blur' }
unit_lat: [
{ required: true, message: '此处为必填项', trigger: 'blur' }
]
},
tableData: [
// {
// name: '',
// enName: 'Sidescan',
// latitude: 'VD',
// description: '',
// updateTime: '2022.3.4 12: 20: 00'
// },
]
}
}
},
created() {
this.init()
this.getData()
},
methods: {
batchImport() {
this.showUserForm = true
this.userStatus = true
},
time(val) {
if (!val) {
return ''
}
var date = new Date(val)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var minute = date.getMinutes()
minute = minute < 10 ? '0' + minute : minute
var second = date.getSeconds()
second = second < 10 ? '0' + second : second
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
},
openModal(row, event, column) {
//
var opType = column.target.id
if (opType == 'del') {
this.$confirm('确定删除选中的数据吗?此操作不可撤销!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.deleteData(row.typeId)
})
.catch((error) => {
console.log(error)
})
} else if (opType == 'mod') {
this.showUserForm = true
this.userStatus = false
this.form = JSON.parse(JSON.stringify(row))
}
},
async deleteData(typeId) {
//
getData() {
this.loading = true
const data = {
type: 'partOrg',
typeId
}
try {
const res = await deleteDoc(data)
if (res.code == 200) {
this.init()
}
dictSailList(this.params).then(res => {
this.tableData = res.page.records
this.total = Number(res.page.total)
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
})
},
init() {
this.currentPage = 1
this.getData()
//
handleAdd() {
this.title = '新增'
this.open = true
},
// currentPagepagesizedata
handleSizeChange: function(size) {
this.pagesize = size
this.getData()
//
handleEdit(row) {
this.title = '编辑'
this.open = true
this.form = JSON.parse(JSON.stringify(row))
},
handleCurrentChange: function(currentPage) {
this.currentPage = currentPage
this.getData()
},
async getData() {
this.loading = true
const data = {
page: this.currentPage,
size: this.pagesize,
type: 'partOrg'
}
try {
const res = await getDicList(data)
if (res.code == 200) {
if (res.data.content) {
this.tableData = res.data.content
this.count = Number(res.data.count)
}
}
this.loading = false
} catch (error) {
console.log(error)
this.loading = false
}
},
saveData() {
this.$refs['form'].validate((valid) => {
//
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.userStatus) {
this.addFunction()
if (this.title === '新增') {
dictSailEdit(this.form).then(res => {
this.$message.success('已创建新的参航单位!')
this.getData()
this.cancel()
})
} else {
this.updateFunction()
dictSailEdit(this.form).then(res => {
this.$message.success('参航单位已更新!')
this.getData()
this.cancel()
})
}
} else {
return false
}
})
},
async addFunction() {
this.subLoading = true
const data = {
orgName: this.form.orgName,
longitude: this.form.longitude,
latitude: this.form.latitude,
description: this.form.description
}
try {
const res = await partAdd(data)
if (res.code === 200) {
this.$message({
message: '添加成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
//
cancel() {
this.open = false
this.reset()
},
async updateFunction() {
this.subLoading = true
const data = {
orgName: this.form.orgName,
longitude: this.form.longitude,
latitude: this.form.latitude,
description: this.form.description,
typeId: this.form.typeId,
id: this.form.id
//
reset() {
this.form = {
unit_name: '',
unit_addr: '',
unit_lon: '',
unit_lat: '',
unit_remark: ''
}
try {
const res = await partUpdate(data)
if (res.code === 200) {
this.$message({
message: '修改成功!',
type: 'success'
})
this.resetForm()
this.subLoading = false
this.showUserForm = false
this.init()
} else {
this.$message({
message: res.message,
type: 'warning'
})
this.subLoading = false
}
} catch (error) {
console.log(error)
this.subLoading = false
}
},
resetForm() {
this.$refs['form'].resetFields()
},
handleClose(done) { //
this.clearInput()
this.resetForm()
done()
//
handleDelete(row) {
this.$confirm('确定要删除该单位吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dictSailDelete(row).then(() => {
this.$message.success('删除成功!')
this.getData()
})
}).catch(() => {})
},
//
handleCurrentChange(val) {
this.pageNum = val
this.params.start = val * this.params.limit - this.params.limit
this.getData()
},
handleSizeChange(val) {
this.params.limit = val
this.getData()
},
clearInput() {
this.form = {
orgName: '',
longitude: '',
latitude: '',
description: '',
typeId: '',
id: ''
}
}
}
}
</script>

View File

@ -115,15 +115,15 @@ export default {
},
multipleSelection: [],
tableData: [
// {
// no: 'SY510-TXS-YS-01',
// name: 'TS-14',
// platformType: '',
// cino: '3444',
// docType: '',
// workType: '',
// sampleType: ''
// },
{
no: 'SY510-TXS-YS-01',
name: 'TS-14',
platformType: '载人潜水器',
cino: '3444',
docType: '机械手',
workType: '站位作业',
sampleType: '岩石'
},
// {
// no: 'SY510-TXS-YS-02',
// name: 'TS2-18',