From 715b0f45cf00a6ae98594d8463298646ee4c0b07 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 14 八月 2024 16:37:28 +0800
Subject: [PATCH] 业务类型整合代码&&对话框表格 表单边距调整

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue |  683 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 680 insertions(+), 3 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
index 53e5dd8..b5c03e9 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -1,13 +1,690 @@
 <template>
-  <p>涓氬姟绫诲瀷</p>
+  <el-container>
+    <el-aside>
+      <basic-container>
+        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
+          <div class="headerCon">
+            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
+            </el-button>
+            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
+            </el-button>
+            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎
+            </el-button>
+            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
+            </el-button>
+            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆
+            </el-button>
+            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
+                       type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘
+            </el-button>
+            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
+                       type="primary" @click="checkClickHandler">鍒涘缓绱㈠紩
+            </el-button>
+            <el-button icon="el-icon-menu" plain size="small" style="width: 82px;text-align: center;padding-left: 1px"
+                       type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�
+            </el-button>
+            <el-button class="miniBtn" icon="el-icon-delete" plain size="small"
+                       type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁
+            </el-button>
+            <el-button class="smallBtn" plain size="small"
+                       type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷
+            </el-button>
+            <el-button class="smallBtn" plain size="small" type="primary">鏌ョ湅浣跨敤鑼冨洿
+            </el-button>
+          </div>
+          <!-- 宸︿晶鏍� -->
+          <div style="height:  calc(100vh - 330px);">
+            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
+          <span slot-scope="{ node, data }" class="el-tree-node__label">
+           <span style="font-size: 15px">
+              <i class="el-icon-s-promotion"></i>
+                {{ (node || {}).label }}
+            </span>
+          </span>
+            </avue-tree>
+          </div>
+        </div>
+      </basic-container>
+    </el-aside>
+    <el-main>
+      <basic-container>
+        <div style="display: flex;justify-content: center; height: 230px">
+          <div class="descBox" style="max-height: 100px">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鍚嶇О
+                </template>
+                <el-tag v-if="nodeRow.id">{{ nodeRow.id }}</el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鏍囩
+                </template>
+                <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  瀹炵幇绫�
+                </template>
+                <el-tooltip v-if="nodeRow.implClass" :content="nodeRow.implClass" class="item" effect="dark"
+                            placement="top-start">
+                  <el-tag style="max-width: 250px;overflow: hidden">{{ nodeRow.implClass }}
+                  </el-tag>
+                </el-tooltip>
+              </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鎻忚堪
+                </template>
+                <span v-if="nodeRow.description">{{ nodeRow.description }}</span>
+              </el-descriptions-item>
+            </el-descriptions>
+          </div>
+          <div class="descBox">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="鐗堟湰瑙勫垯">
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鐗堟湰瑙勫垯
+                </template>
+                <el-tag v-if="nodeRow.revLevel"
+                        :type="nodeRow.revLevel === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
+                  {{
+                    nodeRow.revLevel === '0'
+                      ? '涓嶅彲淇'
+                      : nodeRow.revLevel === '1'
+                      ? '閲囩敤涓�绾х増鏈鐞�'
+                      : '閲囩敤浜岀骇鐗堟湰绠$悊'
+                  }}
+                </el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鐗堟湰鍙疯鍒�
+                </template>
+                <el-tag v-if="nodeRow.revRuleName">{{ nodeRow.revRuleName }}</el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鍒嗛殧绗�
+                </template>
+                <el-tag v-if="nodeRow.delimiter">{{ nodeRow.delimiter }}</el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0' && nodeRow.revLevel !== '1'"
+                                    :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鐗堟鍙疯鍒�
+                </template>
+                <el-tag v-if="nodeRow.verRuleName"
+                        :type="nodeRow.verRuleName === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
+                  {{
+                    nodeRow.verRuleName === '0'
+                      ? '1.2.3...'
+                      : nodeRow.revLevel === '1'
+                      ? 'a.b.c...'
+                      : '0.1.2...'
+                  }}
+                </el-tag>
+              </el-descriptions-item>
+
+            </el-descriptions>
+          </div>
+          <div class="descBox">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="鐢熷懡鍛ㄦ湡">
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鐢熷懡鍛ㄦ湡
+                </template>
+                <el-tag v-if="nodeRow.lifeCycle">{{ nodeRow.lifeCycle }}</el-tag>
+              </el-descriptions-item>
+            </el-descriptions>
+          </div>
+        </div>
+        <div style="margin-top: 30px">
+          <h3>灞炴�у垪琛�</h3>
+          <avue-crud
+            :data="attrData"
+            :option="attrOption">
+          </avue-crud>
+        </div>
+      </basic-container>
+    </el-main>
+
+    <!-- 鏂板 && 缂栬緫 -->
+    <el-dialog
+      v-dialogDrag
+      :title="title === 'add' ? '鍒涘缓' : '淇敼'"
+      :visible.sync="visible"
+      append-to-body="true"
+      class="avue-dialog"
+      width="75%"
+      @close="addDialogClose">
+      <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+        <div class="dialogForm">
+          <div class="leftForm">
+            <el-form-item label="绫诲瀷鍚嶇О锛�" prop="name">
+              <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input>
+            </el-form-item>
+            <el-form-item label="鏍囩锛�">
+              <el-input v-model="form.name"></el-input>
+            </el-form-item>
+            <el-form-item label="缁ф壙鑷細">
+              <el-input v-model="form.name" :readOnly="title === 'edit'"></el-input>
+            </el-form-item>
+            <el-form-item label="瀹炵幇绫伙細">
+              <el-input v-model="form.implClass"></el-input>
+            </el-form-item>
+            <el-form-item label="鎻忚堪">
+              <el-input v-model="form.description" :rows="2" type="textarea"></el-input>
+            </el-form-item>
+          </div>
+          <div class="centerForm">
+            <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="100px" prop="revLevel">
+              <el-select v-model="form.revLevel">
+                <el-option label="涓嶅彲淇" value="0"></el-option>
+                <el-option label="閲囩敤涓�绾х増鏈鐞�" value="1"></el-option>
+                <el-option label="閲囩敤浜岀骇鐗堟湰绠$悊" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="100px" prop="revLevel">
+              <div style="display: flex;gap: 5px;align-items: center">
+                <el-input v-model="form.revRuleName" :readOnly="true"></el-input>
+                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="versionAddHandler">娣诲姞</el-button>
+              </div>
+            </el-form-item>
+            <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="revLevel">
+              <el-select v-model="form.delimiter" clearable>
+                <el-option label="." value="."></el-option>
+                <el-option label="-" value="-"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="100px"
+                          prop="revLevel">
+              <el-select v-model="form.verRuleName" clearable>
+                <el-option label="1.2.3..." value="1.2.3..."></el-option>
+                <el-option label="a.b.c..." value="a.b.c..."></el-option>
+                <el-option label="0.1.2..." value="0.1.2..."></el-option>
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="rightForm">
+            <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="revLevel">
+              <div style="display: flex;gap: 5px;align-items: center">
+                <el-input v-model="form.lifeCycle" :readOnly="true"></el-input>
+                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success">娣诲姞</el-button>
+              </div>
+            </el-form-item>
+
+            <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px">
+              <div style="display: flex; align-items: center">
+                <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
+                  <!-- 鍐呭 -->
+                  <el-table
+                    :data="bizFormData"
+                    :show-header="false"
+                    style="width: 100%">
+                    <el-table-column
+                      align="center"
+                      prop="name">
+                    </el-table-column>
+                    <el-table-column
+                      fixed="right"
+                      label="鎿嶄綔"
+                      width="60">
+                      <template slot-scope="scope">
+                        <el-button
+                          size="small"
+                          style="color:#F56C6C;"
+                          type="text"
+                          @click.native.prevent="bizTypeDeleteRow('form',scope.$index)">
+                          绉婚櫎
+                        </el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+                <el-button plain size="mini" style="margin-left: 5px" type="success"
+                           @click="FormItemReferChange('form')">娣诲姞
+                </el-button>
+
+              </div>
+            </el-form-item>
+          </div>
+        </div>
+      </el-form>
+      <div class="bottomForm">
+        <h3>灞炴�ф睜鍒楄〃</h3>
+        <avue-crud
+          :data="dialogAttrData"
+          :option="dialogAttrOption">
+          <template slot="menuLeft">
+            <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button>
+          </template>
+        </avue-crud>
+      </div>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="addDialogClose">鍙� 娑�</el-button>
+         <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
+        </span>
+    </el-dialog>
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="attrPollDialogVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      title="灞炴�ф睜"
+      width="60%"
+      @close="dialogAttrClose"
+    >
+      <avue-crud
+        :key="dialogAttrReload"
+        ref="dialogAttrCrud"
+        :data="dialogAttrSaveData"
+        :option="dialogAttrSaveOption"
+        :page.sync="attrPage"
+        :table-loading="dialogAttrLoading"
+        @selection-change="dialogAttrSelectChange"
+        @row-click="dialogAttrRowClickHandler"
+        @size-change="attrSizeChange"
+        @current-change="attrCurrentChange"
+        @search-change="attrHandleSearch"
+        @search-reset="attrHandleReset"
+      >
+      </avue-crud>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="dialogAttrClose">鍙� 娑�</el-button>
+         <el-button type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button>
+        </span>
+    </el-dialog>
+
+  </el-container>
 </template>
 
 <script>
+import basicOption from '@/util/basic-option'
+import {getBizTypes} from "@/api/modeling/businessType/api"
+import {gridAttribute} from "@/api/modeling/attributePool/api";
+import func from "@/util/func";
+
 export default {
-  name: "index"
+  name: "index",
+  data() {
+    return {
+      dialogAttrSelectList: [],
+      searchAttrParams: {},
+      dialogAttrLoading: false,
+      dialogAttrReload: Math.random(),
+      attrPage: {
+        currentPage: 1,
+        pageSize: 30,
+        total: 0,
+        pageSizes: [30, 50, 100, 200],
+      },
+      dialogAttrSaveOption: {
+        ...basicOption,
+        calcHeight: -60,
+        addBtn: false,
+        menu: false,
+        refreshBtn: false,
+        index: false,
+        highlightCurrentRow: true,
+        height: 450,
+        searchMenuSpan: 8,
+        column: [
+          {
+            label: '灞炴�у悕',
+            prop: 'id',
+            sortable: true,
+            search: true,
+          },
+          {
+            label: '灞炴�х被鍨�',
+            prop: 'attributeDataType',
+            sortable: true,
+          },
+          {
+            label: '鍒濆鍊�',
+            prop: 'defaultValue',
+            sortable: true,
+          },
+          {
+            label: '璇存槑',
+            prop: 'description',
+            sortable: true,
+            overHidden: true
+          }
+        ]
+      },
+      dialogAttrSaveData: [],
+      attrPollDialogVisible: false,
+      rules: [],
+      dialogAttrData: [],
+      dialogAttrOption: {
+        ...basicOption,
+        editBtn: false,
+        refreshBtn: false,
+        selection: false,
+        height: 210,
+        addBtn: false,
+        // index:false,
+        column: [
+          {
+            label: '灞炴�у悕',
+            prop: 'id',
+            sortable: true,
+          },
+          {
+            label: '灞炴�х被鍨�',
+            prop: 'attributeDataType',
+            sortable: true,
+          },
+          {
+            label: '鍒濆鍊�',
+            prop: 'defaultValue',
+            sortable: true,
+          },
+          {
+            label: '璇存槑',
+            prop: 'description',
+            overHidden: true
+          }
+        ]
+      },
+      title: '',
+      visible: false,
+      attrData: [],
+      attrOption: {
+        ...basicOption,
+        calcHeight: -40,
+        addBtn: false,
+        menu: false,
+        index: false,
+        selection: false,
+        refreshBtn: false,
+        column: [
+          {
+            prop: 'id',
+            label: '灞炴�у悕',
+            sortable: true
+          },
+          {
+            prop: 'btmTypeId',
+            label: '涓氬姟绫诲瀷',
+            sortable: true
+          },
+          {
+            prop: 'attrDataType',
+            label: '灞炴�х被鍨�',
+            sortable: true
+          },
+          {
+            prop: 'defaultValue',
+            label: '榛樿鍊�',
+            sortable: true
+          },
+          {
+            prop: 'description',
+            label: '璇存槑',
+            overHidden: true
+          }
+        ]
+      },
+      form: {},
+      nodeRow: {},
+      treeOption: {
+        height: 'auto',
+        defaultExpandAll: false,
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'id',
+          value: 'id',
+          children: 'children'
+        }
+      },
+      treeData: [],
+      descriptionOption: {
+        labelStyle: 'text-align:center;width:100px;',
+        contentStyle: 'max-width:200px;text-align:center;word-break;break-all;'
+      },
+      icons: {
+        id: 'el-icon-finished',
+        name: 'el-icon-tickets',
+        desc: 'el-icon-chat-line-square'
+      },
+    }
+  },
+  created() {
+    this.getTreeList();
+  },
+  methods: {
+    //鏍戣〃鏌ヨ
+    getTreeList() {
+      getBizTypes().then(res => {
+        const data = res.data.data.map(item => {
+          return item.attributes;
+        });
+        this.treeData = data;
+      })
+    },
+
+    // 鏍戠偣鍑�
+    nodeClick(row) {
+      this.attrData = JSON.parse(row.attributes);
+      this.nodeRow = row;
+    },
+
+    // 鍒涘缓鎸夐挳
+    addClickHandler() {
+      this.title = 'add';
+      this.visible = true;
+    },
+
+    // 瀵硅瘽妗� 灞炴�ф睜鍒楄〃澧炲姞鎸夐挳
+    addDialogClickHandler() {
+      this.dialogAttrLoading = true;
+      this.attrPollDialogVisible = true;
+      this.dialogAttrReload = Math.random(); // 寮哄埗鍒锋柊琛ㄦ牸 瑙e喅琛ㄦ牸閿欒
+      this.getAttrDialogDta();
+    },
+
+    // 鏌ヨ灞炴�ф睜鍒楄〃鏁版嵁
+    getAttrDialogDta() {
+      gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => {
+        const data = res.data.data;
+        this.dialogAttrSaveData = data;
+        this.attrPage.total = res.data.total;
+        this.dialogAttrLoading = false;
+      }).catch(err => {
+        this.$message.error(err);
+      });
+    },
+
+    // 鏂板灞炴�ф睜鍒楄〃鍏抽棴瀵硅瘽妗�
+    dialogAttrClose() {
+      this.attrPollDialogVisible = false;
+      this.searchAttrParams = {};
+    },
+
+    // 娣诲姞灞炴�ф睜琛ㄦ牸閫夋嫨妗�
+    dialogAttrSelectChange(row) {
+      this.dialogAttrSelectList = row;
+    },
+
+    // 娣诲姞灞炴�ф睜 琛岀偣鍑�
+    dialogAttrRowClickHandler(row) {
+
+      func.rowClickHandler(
+        row,
+        this.$refs.dialogAttrCrud,
+        this.attrLastIndex,
+        (newIndex) => {
+          this.attrLastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
+      );
+    },
+
+    //娣诲姞灞炴�ф睜 鏉℃暟
+    attrSizeChange(val) {
+      this.attrPage.pageSize = val;
+      this.getAttrDialogDta()
+    },
+
+    //娣诲姞灞炴�ф睜 椤电爜
+    attrCurrentChange(val) {
+      this.attrPage.currentPage = val;
+      this.getAttrDialogDta();
+    },
+
+    //娣诲姞灞炴�ф睜 鎼滅储
+    attrHandleSearch(params, done) {
+      if (func.isEmptyObject(params)) {
+        this.searchAttrParams = {};
+      } else {
+        this.searchAttrParams = {
+          "conditionMap[id]": "*" + params.id + "*"
+        };
+      }
+
+      this.getAttrDialogDta();
+      done();
+    },
+
+    //娣诲姞灞炴�ф睜 娓呯┖鎼滅储
+    attrHandleReset() {
+      this.searchAttrParams = {};
+      this.getAttrDialogDta();
+    },
+
+    // 娣诲姞灞炴�ф睜 淇濆瓨
+    dialogAttrAddClickHandler() {
+      let hasDuplicate = false;
+
+      // 鍏堝垱寤轰竴涓复鏃舵暟缁勬潵瀛樺偍涓嶉噸澶嶇殑椤�
+      const newItems = [];
+
+      this.dialogAttrSelectList.forEach(item => {
+        const exists = this.dialogAttrData.some(existingItem => existingItem.id === item.id);
+
+        if (exists) {
+          hasDuplicate = true;
+          return;
+        }
+
+        // 濡傛灉娌℃湁閲嶅椤癸紝鍒欏皢璇ラ」娣诲姞鍒颁复鏃舵暟缁勪腑
+        newItems.push({
+          id: item.id,
+          attributeDataType: item.attributeDataType,
+          defaultValue: item.defaultValue,
+          description: item.description
+        });
+      });
+
+      if (hasDuplicate) {
+        this.$message.error('璇锋鏌ユ槸鍚︽湁娣诲姞閲嶅椤癸紒');
+      } else {
+        // 濡傛灉娌℃湁閲嶅椤癸紝灏嗘柊椤规坊鍔犲埌 dialogAttrData
+        this.dialogAttrData.push(...newItems);
+        this.attrPollDialogVisible = false;
+      }
+    },
+
+    // 鐗堟湰瑙勫垯绠$悊娣诲姞
+    versionAddHandler(){
+
+    }
+  }
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
+::v-deep {
+  .avue-dialog .el-dialog__body{
+    padding: 20px 20px 0px 20px; // 涓婂彸涓嬪乏
+    margin-bottom: 10px !important;
+  }
+
+  .el-scrollbar__wrap {
+    overflow: auto !important;
+  }
+
+  .el-form-item .el-select {
+    width: 100%;
+  }
+
+  .headerCon {
+    .el-button {
+      width: 82px;
+    }
+  }
+}
+
+.headerCon {
+  display: flex;
+  flex-wrap: wrap;
+  margin-bottom: 5px;
+
+  .el-button + .el-button {
+    margin-left: 5px;
+  }
+
+  .el-button {
+    margin-top: 5px;
+  }
+}
+
+.headerCon > .el-button:nth-child(4) {
+  margin-left: 0;
+}
+
+.headerCon > .el-button:nth-child(7) {
+  margin-left: 0;
+}
+
+.headerCon > .el-button:nth-child(10) {
+  margin-left: 0;
+}
+
+.miniBtn {
+  width: 82px;
+  text-align: center;
+  padding-left: 7px;
+}
+
+.smallBtn {
+  width: 82px;
+  text-align: center;
+  padding-left: 4.5px;
+}
+
+.descBox {
+  width: 32%;
+  margin-left: 20px;
+}
+
+.dialogForm {
+  display: flex;
+  justify-content: space-around;
+}
+
+.dialogForm > div {
+  width: 29%;
+  border: 1px solid #eee;
+  padding: 25px 20px 5px 10px; /* 涓� 鍙� 涓� 宸� */
+  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* 娣诲姞闃村奖鏁堟灉 */
+}
+
 
 </style>

--
Gitblit v1.9.3