From 3f6e622083cd63400fd3fc8f5dee4f4c5f2a4ab9 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 08 七月 2024 15:55:46 +0800
Subject: [PATCH] #

---
 zy-asrs-admin/src/views/base/mat/field.vue    |  127 ++++++++++++++++++++++++++++++++++++++++++
 zy-asrs-admin/src/views/base/mat/index.vue    |    8 ++
 zy-asrs-admin/src/views/base/locType/edit.vue |   13 +++-
 zy-asrs-admin/src/views/base/mat/edit.vue     |   10 ++-
 zy-asrs-admin/.vite/deps/_metadata.json       |    8 ++
 zy-asrs-admin/.vite/deps/package.json         |    3 +
 zy-asrs-admin/src/locales/en_US.js            |    1 
 7 files changed, 162 insertions(+), 8 deletions(-)

diff --git a/zy-asrs-admin/.vite/deps/_metadata.json b/zy-asrs-admin/.vite/deps/_metadata.json
new file mode 100644
index 0000000..1974207
--- /dev/null
+++ b/zy-asrs-admin/.vite/deps/_metadata.json
@@ -0,0 +1,8 @@
+{
+  "hash": "f62d655b",
+  "configHash": "23d88a0b",
+  "lockfileHash": "e3b0c442",
+  "browserHash": "43a93352",
+  "optimized": {},
+  "chunks": {}
+}
\ No newline at end of file
diff --git a/zy-asrs-admin/.vite/deps/package.json b/zy-asrs-admin/.vite/deps/package.json
new file mode 100644
index 0000000..3dbc1ca
--- /dev/null
+++ b/zy-asrs-admin/.vite/deps/package.json
@@ -0,0 +1,3 @@
+{
+  "type": "module"
+}
diff --git a/zy-asrs-admin/src/locales/en_US.js b/zy-asrs-admin/src/locales/en_US.js
index e2d4334..195ec89 100644
--- a/zy-asrs-admin/src/locales/en_US.js
+++ b/zy-asrs-admin/src/locales/en_US.js
@@ -44,6 +44,7 @@
     'page.table.no': 'No',
     'page.add': 'Add New',
     'page.adding':'In process of adding',
+    'page.add.field':'Add Field',
     'page.add.success':'Add Successful',
     'page.add.fail':'Add failed, please try again!',
     'page.updating':'Updating now',
diff --git a/zy-asrs-admin/src/views/base/locType/edit.vue b/zy-asrs-admin/src/views/base/locType/edit.vue
index 1274ac1..040e925 100644
--- a/zy-asrs-admin/src/views/base/locType/edit.vue
+++ b/zy-asrs-admin/src/views/base/locType/edit.vue
@@ -67,11 +67,16 @@
 }
 
 watch(formData, (newVal, oldVal) => {
-    let contain = JSON.parse(formData.value.contain)
-    if (contain != null && contain.length > 0) {
-        locTypeSelected.value = contain;
-    }else {
+    if(formData.value.contain == null) {
         locTypeSelected.value = [];
+        return
+    }
+
+    if(formData.value.contain.length == 0) {
+        locTypeSelected.value = [];
+    }else {
+        let contain = JSON.parse(formData.value.contain);
+        locTypeSelected.value = contain;
     }
 })
 
diff --git a/zy-asrs-admin/src/views/base/mat/edit.vue b/zy-asrs-admin/src/views/base/mat/edit.vue
index 2d32427..2d83057 100644
--- a/zy-asrs-admin/src/views/base/mat/edit.vue
+++ b/zy-asrs-admin/src/views/base/mat/edit.vue
@@ -3,6 +3,9 @@
 import { get, post, postBlob, postForm } from '@/utils/request.js'
 import { formatMessage } from '@/utils/localeUtils.js';
 import { message } from 'ant-design-vue';
+import {
+    MinusCircleOutlined,
+} from "@ant-design/icons-vue";
 
 const formTable = ref(null);
 const submitButton = ref(null);
@@ -22,7 +25,6 @@
 };
 
 const onFinish = values => {
-    // console.log('Success:', values);
     open.value = false;
     post(isSave.value ? '/api/mat/save' : '/api/mat/update', formData.value).then((resp) => {
         let result = resp.data;
@@ -118,9 +120,9 @@
                 <a-form-item :label="formatMessage('db.man_mat.tag_id', '鎵�灞炲綊绫�')" name="tagId" style="width: 250px;"
                     :rules="[{ required: true, message: '涓婄骇鑿滃崟涓嶈兘涓虹┖!' }]">
                     <a-tree-select v-model:value="formData.tagId" show-search style="width: 100%"
-                        :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" :placeholder="formatMessage('page.input', '璇疯緭鍏�')"
-                        allow-clea tree-data-simple-mode :tree-data="TagQueryTree" tree-node-filter-prop="name"
-                        :field-names="{
+                        :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
+                        :placeholder="formatMessage('page.input', '璇疯緭鍏�')" allow-clea tree-data-simple-mode
+                        :tree-data="TagQueryTree" tree-node-filter-prop="name" :field-names="{
                             children: 'children',
                             label: 'name',
                             value: 'id',
diff --git a/zy-asrs-admin/src/views/base/mat/field.vue b/zy-asrs-admin/src/views/base/mat/field.vue
new file mode 100644
index 0000000..c07cbbc
--- /dev/null
+++ b/zy-asrs-admin/src/views/base/mat/field.vue
@@ -0,0 +1,127 @@
+<script setup>
+import { ref, nextTick, reactive } from 'vue';
+import { get, post, postBlob, postForm } from '@/utils/request.js'
+import { formatMessage } from '@/utils/localeUtils.js';
+import { message } from 'ant-design-vue';
+import {
+    MinusCircleOutlined,
+} from "@ant-design/icons-vue";
+
+const formTable = ref(null);
+const submitButton = ref(null);
+const open = ref(false);
+const initFormData = {}
+let formData = ref([]);
+
+const dynamicField = reactive({
+    col: [],
+});
+
+const removeCol = item => {
+    const index = dynamicField.col.indexOf(item);
+    if (index !== -1) {
+        dynamicField.col.splice(index, 1);
+    }
+};
+const addCol = () => {
+    dynamicField.col.push({
+        name: '',
+        type: '',
+        require: false,
+        desc: '',
+        language: '',
+    });
+};
+
+const emit = defineEmits(['tableReload'])
+
+const handleOk = (e) => {
+    nextTick(() => {
+        setTimeout(() => {
+            submitButton.value.$el.click();
+        }, 100);
+    });
+};
+
+const onFinish = values => {
+    // console.log('Success:', values);
+    // console.log(dynamicField);
+    open.value = false;
+    // post('/api/mat/addField', dynamicField).then((resp) => {
+    //     let result = resp.data;
+    //     if (result.code === 200) {
+    //         message.success(isSave.value ? formatMessage('page.add.success', '鏂板鎴愬姛') : formatMessage('page.update.success', '鏇存柊鎴愬姛'));
+    //     } else {
+    //         message.error(result.msg);
+    //     }
+    //     emit('tableReload', 'reload')
+    //     nextTick(() => {
+    //         formTable.value.resetFields()
+    //     })
+    // })
+};
+const onFinishFailed = errorInfo => {
+    console.log('Failed:', errorInfo);
+};
+
+
+defineExpose({
+    open,
+})
+
+</script>
+
+<script>
+export default {
+    name: '鍟嗗搧妗f-field'
+}
+</script>
+
+<template>
+    <div>
+        <a-modal v-model:open="open"
+            :title="formatMessage('page.add.field', '娣诲姞瀛楁')" @ok="handleOk"
+            style="width: 600px;">
+            <a-form :model="formData" ref="formTable" name="formTable" :label-col="{ span: 8 }"
+                :wrapper-col="{ span: 16 }" style="display: flex;justify-content: space-between;flex-wrap: wrap;"
+                autocomplete="off" @finish="onFinish" @finishFailed="onFinishFailed">
+                <div v-for="(item, index) in dynamicField.col" :key="item.id"
+                    style="display: flex;justify-content: space-between;flex-wrap: wrap;">
+                    <a-form-item :label="formatMessage('dynamicField.name', '瀛楁')" :name="['col-name', index,]"
+                        style="width: 250px;">
+                        <a-input v-model:value="item.name" />
+                    </a-form-item>
+                    <a-form-item :label="formatMessage('dynamicField.type', '绫诲瀷')" :name="['col-type', index]"
+                        style="width: 250px;">
+                        <a-input v-model:value="item.type"/>
+                    </a-form-item>
+                    <a-form-item :label="formatMessage('dynamicField.desc', '鎻忚堪')" :name="['col-desc', index]"
+                        style="width: 250px;">
+                        <a-input v-model:value="item.desc"/>
+                    </a-form-item>
+                    <a-form-item :label="formatMessage('dynamicField.language', '鍥介檯鍖�')"
+                        :name="['col-language', index]" style="width: 250px;">
+                        <a-input v-model:value="item.language"/>
+                    </a-form-item>
+                    <a-form-item :label="formatMessage('dynamicField.delete', '鍒犻櫎')"
+                        :name="['col-delete', index]" style="width: 250px;">
+                        <MinusCircleOutlined @click="removeCol(item)" />
+                    </a-form-item>
+                </div>
+
+                <a-form-item>
+                    <a-button type="primary" html-type="submit" ref="submitButton"
+                        style="visibility: hidden;">Submit</a-button>
+                </a-form-item>
+
+            </a-form>
+
+            <a-button type="dashed" style="width: 100%" @click="addCol">
+                <PlusOutlined />
+                {{ formatMessage('page.add.field', '娣诲姞瀛楁') }}
+            </a-button>
+        </a-modal>
+    </div>
+</template>
+
+<style></style>
diff --git a/zy-asrs-admin/src/views/base/mat/index.vue b/zy-asrs-admin/src/views/base/mat/index.vue
index 414c1ee..987cb16 100644
--- a/zy-asrs-admin/src/views/base/mat/index.vue
+++ b/zy-asrs-admin/src/views/base/mat/index.vue
@@ -5,6 +5,7 @@
 import { message, Modal } from 'ant-design-vue';
 import { logout } from '@/config.js';
 import EditView from './edit.vue'
+import FieldView from './field.vue'
 import { formatMessage } from '@/utils/localeUtils.js';
 const context = getCurrentInstance()?.appContext.config.globalProperties;
 
@@ -15,6 +16,7 @@
 let pageSize = 10;
 const searchInput = ref("")
 const editChild = ref(null)
+const fieldChild = ref(null)
 
 let tableData = ref([]);
 getPage();
@@ -272,6 +274,10 @@
   editChild.value.isSave = item == null;
 }
 
+const handleField = () => {
+  fieldChild.value.open = true;
+}
+
 const handleDel = (rows) => {
   Modal.confirm({
     title: formatMessage('page.delete', '鍒犻櫎'),
@@ -330,12 +336,14 @@
 
 <template>
   <div>
+    <FieldView ref="fieldChild" @tableReload="handleTableReload" />
     <EditView ref="editChild" @tableReload="handleTableReload" />
     <div class="table-header">
       <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '璇疯緭鍏�')"
         style="width: 200px;" @search="onSearch" />
       <div class="table-header-right">
         <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button>
+        <a-button @click="handleField" type="primary">{{ formatMessage('page.add.field', '娣诲姞瀛楁') }}</a-button>
         <a-button @click="handleExport">{{ formatMessage('page.export', '瀵煎嚭') }}</a-button>
       </div>
     </div>

--
Gitblit v1.9.1