diff --git a/package.json b/package.json
index 6c27fe3..515ab0c 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
"fuse.js": "6.6.2",
"js-cookie": "3.0.1",
"jsencrypt": "3.3.1",
+ "lodash-es": "^4.17.21",
"nprogress": "0.2.0",
"pinia": "2.0.22",
"vue": "3.2.45",
diff --git a/src/api/product/product.js b/src/api/product/product.js
new file mode 100644
index 0000000..3398132
--- /dev/null
+++ b/src/api/product/product.js
@@ -0,0 +1,56 @@
+import request from "@/utils/request";
+
+// 查询产品列表
+export function listProduct(query) {
+ return request({
+ url: "/product/product/list",
+ method: "get",
+ params: query
+ });
+}
+
+// 查询产品详细
+export function getProduct(productId) {
+ return request({
+ url: "/product/product/" + productId,
+ method: "get"
+ });
+}
+
+// 新增产品
+export function addProduct(data) {
+ return request({
+ url: "/product/product",
+ method: "post",
+ data: data
+ });
+}
+
+// 修改产品
+export function updateProduct(data) {
+ return request({
+ url: "/product/product",
+ method: "put",
+ data: data
+ });
+}
+
+// 删除产品
+export function delProduct(productId) {
+ return request({
+ url: "/product/product/" + productId,
+ method: "delete"
+ });
+}
+
+/**
+ * 检查产品SN是否唯一
+ * @param productSn
+ * @return {*}
+ */
+export function checkProductSn(productSn) {
+ return request({
+ url: `/product/product/check/${productSn}`
+ , method: "get"
+ });
+}
\ No newline at end of file
diff --git a/src/assets/images/product.jpg b/src/assets/images/product.jpg
new file mode 100644
index 0000000..263203a
Binary files /dev/null and b/src/assets/images/product.jpg differ
diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue
index d1976b8..79c1644 100644
--- a/src/components/ImageUpload/index.vue
+++ b/src/components/ImageUpload/index.vue
@@ -152,7 +152,7 @@ function handleExceed() {
// 上传成功回调
function handleUploadSuccess(res, file) {
if (res.code === 200) {
- uploadList.value.push({ name: res.fileName, url: res.fileName });
+ uploadList.value.push({ name: res.fileName, url: res.url });
uploadedSuccessfully();
} else {
number.value--;
diff --git a/src/constant/dict.js b/src/constant/dict.js
index 529a0ce..73e7646 100644
--- a/src/constant/dict.js
+++ b/src/constant/dict.js
@@ -1,4 +1,34 @@
export const statusMap = new Map([
["0", "正常"],
- ["1", "禁用"],
+ ["1", "禁用"]
]);
+
+export const deviceTypeMap = new Map([
+ [1, "直连设备"],
+ [2, "网关子设备"],
+ [3, "网关子设备"]
+]);
+export const vertificateMethodOptions = [
+ {
+ label: "简单认证",
+ value: 1
+ }, {
+ label: "加密认证",
+ value: 2
+ }, {
+ label: "简单+加密",
+ value: 3
+ }
+];
+
+export const isTopMap = new Map([
+ [0, "是"],
+ [1, "否"]
+]);
+
+export const isMonitor = new Map([
+ [0, "是"],
+ [1, "否"]
+]);
+
+
diff --git a/src/views/login.vue b/src/views/login.vue
index c303dbd..cadf3d6 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -11,127 +11,133 @@