+
+/* 卡片样式 */
+.card-3d {
+ border-radius: 12px;
+ border: 1px solid #e8eef4;
+ background: white;
+ position: relative;
+ transition: all 0.3s ease;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
+ overflow: hidden;
+ cursor: pointer;
+}
+
+.card-3d:hover {
+ border-color: #1890ff;
+ box-shadow: 0 4px 12px rgba(24, 144, 255, 0.1);
+ transform: translateY(-2px);
+}
+
+.card-collapsed {
+ min-height: auto !important;
+ height: auto !important;
+
+ :deep(.ant-card-body) {
+ padding: 16px 20px;
+ }
+}
+
+:deep(.ant-card-body) {
+ padding: 16px 20px;
+ transition: padding 0.3s ease;
+}
+
+.card-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ cursor: inherit;
+ user-select: none;
+}
+
+.card-header .left-area {
+ flex: 1;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 24px;
+}
+
+.region-name {
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.region-code {
+ font-size: 14px;
+ font-weight: bold;
+ color: darkgrey;
+}
+
+.expand-icon {
+ font-size: 14px;
+ color: #1890ff;
+ padding: 4px 12px;
+ border-radius: 4px;
+ transition: all 0.2s ease;
+
+ span {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ }
+}
+
+.card-header:hover .expand-icon {
+ background-color: rgba(24, 144, 255, 0.1);
+}
+
+.card-content {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ margin-top: 16px;
+ padding-top: 16px;
+ border-top: 1px solid #f0f2f5;
+}
+
+.top-section {
+ display: flex;
+ gap: 20px;
+ min-height: 100px;
+}
+
+.right-area {
+ flex: 3;
+ background: #ffffff;
+ padding: 12px;
+ border-radius: 10px;
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.02);
+}
+
+.bottom-section {
+ .section-title {
+ font-size: 14px;
+ font-weight: 600;
+ color: #1f2f3d;
+ margin-bottom: 12px;
+ padding-left: 4px;
+ border-left: 3px solid #1890ff;
+ }
+}
+
+.device-list {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.device-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 12px 16px;
+ background: #fafbfc;
+ border-radius: 8px;
+ transition: all 0.2s ease;
+
+ &:hover {
+ background: #f5f8ff;
+ transform: translateX(2px);
+ }
+}
+
+.device-info {
+ flex: 1;
+
+ .device-name {
+ font-size: 14px;
+ font-weight: 600;
+ color: #1f2f3d;
+ margin-bottom: 4px;
+ }
+
+ .device-detail {
+ font-size: 12px;
+ color: #8a9aa8;
+ line-height: 1.4;
+ }
+}
+
+.device-quantity {
+ margin-left: 16px;
+
+ .quantity-input {
+ width: 130px;
+
+ :deep(.ant-input-number-input) {
+ text-align: center;
+ }
+ }
+}
+
+@media (max-width: 768px) {
+ .top-section {
+ flex-direction: column;
+ }
+
+ .device-item {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ }
+
+ .device-quantity {
+ margin-left: 0;
+ width: 100%;
+
+ .quantity-input {
+ width: 100%;
+ }
+ }
+}
+
+.right-area {
+
+ :deep(.ant-checkbox-wrapper),
+ :deep(.ant-checkbox-wrapper-disabled),
+ :deep(.ant-checkbox + span),
+ :deep(.ant-checkbox-disabled + span) {
+ color: rgba(0, 0, 0, 0.88) !important;
+ }
+}
+
\ No newline at end of file
diff --git a/src/views/device/manager/components/preview/preview.api.ts b/src/views/device/manager/components/preview/preview.api.ts
index 16af8ed..a7b3b95 100644
--- a/src/views/device/manager/components/preview/preview.api.ts
+++ b/src/views/device/manager/components/preview/preview.api.ts
@@ -7,6 +7,7 @@ enum Api {
nuList = '/iot/device/manager/nuList',
savePreview = '/iot/device/manager/savePreview',
updatePreview = '/iot/device/manager/updatePreview',
+ previewBatchSave = '/iot/device/manager/previewBatchSave',
deletePreview = '/iot/device/manager/deletePreview',
batchSave = '/iot/device/manager/batchSave',
queryQuantityByOrgCode = '/iot/device/manager/queryQuantityByOrgCode',
@@ -36,7 +37,7 @@ export const savePreview = (params, isUpdate) => {
* @returns
*/
export const batchSave = (params) => {
- return defHttp.post({ url: Api.batchSave, params });
+ return defHttp.post({ url: Api.batchSave, params }, { isTransformResponse: false });
};
/**
@@ -51,4 +52,8 @@ export const queryQuantityByOrgCode = (params) => {
export const getNuListByOrgCode = (params) => {
return defHttp.get({ url: Api.getNuListByOrgCode, params });
-};
\ No newline at end of file
+};
+
+export const previewBatchSave = (params) => {
+ return defHttp.post({ url: Api.previewBatchSave, params }, { isTransformResponse: false });
+};
diff --git a/src/views/device/manager/components/preview/preview.data.ts b/src/views/device/manager/components/preview/preview.data.ts
index eabda23..dd3968a 100644
--- a/src/views/device/manager/components/preview/preview.data.ts
+++ b/src/views/device/manager/components/preview/preview.data.ts
@@ -52,17 +52,17 @@ export const departColumns: BasicColumn[] = [
];
export const nuColumns: BasicColumn[] = [
- {
- title: '机构编码',
- align: "center",
- dataIndex: 'orgCode',
- width: 100
- },
- {
- title: '机构名称',
- align: "center",
- dataIndex: 'departName',
- },
+ // {
+ // title: '机构编码',
+ // align: "center",
+ // dataIndex: 'orgCode',
+ // width: 100
+ // },
+ // {
+ // title: '机构名称',
+ // align: "center",
+ // dataIndex: 'departName',
+ // },
{
title: '区域编码',
align: "center",