From bd82158c1ef6b3f71115bfc1d5fe77fb7c9287db Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期四, 25 七月 2024 19:01:01 +0800
Subject: [PATCH] 知识库操作功能开发以及解析方法的开发

---
 src/views/dmx/knowledgeLib/tool.vue   |  177 +++++++++++++++++
 src/views/dmx/knowledgeLib/edit.vue   |  103 +--------
 src/views/dmx/knowledgeLib/index.vue  |  182 ++++++-----------
 src/views/dmx/knowledgeLib/add.vue    |   82 +++++++
 src/views/dmx/knowledgeLib/config.vue |   11 
 5 files changed, 347 insertions(+), 208 deletions(-)

diff --git a/src/views/dmx/knowledgeLib/add.vue b/src/views/dmx/knowledgeLib/add.vue
index 4fa459a..b1f803a 100644
--- a/src/views/dmx/knowledgeLib/add.vue
+++ b/src/views/dmx/knowledgeLib/add.vue
@@ -4,14 +4,14 @@
     <template #icon>
       <icon-plus />
     </template>
-    鏂板缓鏂囦欢
+    鏂板鏂囦欢
   </a-button>
   <a-modal v-model:visible="visible" title="涓婁紶鏂囦欢" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk" title-align="start">
     <a-tabs :default-active-key="activeKey" @change="activeKeyChange">
       <a-tab-pane key="1" title="鏂囦欢">
         <div class="aUpload">
 <!--          <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm," :custom-request="customRequest" />-->
-          <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt," :custom-request="customRequest" />
+          <a-upload :file-list="uploadList" draggable :accept="acceptNameList" :custom-request="customRequest" />
         </div>
       </a-tab-pane>
       <a-tab-pane key="2" title="鏂囦欢澶�">
@@ -24,8 +24,10 @@
 </template>
 
 <script lang="ts" setup>
-import { onMounted ,onBeforeMount, reactive, ref } from "vue";
-
+import { onMounted, onBeforeMount, reactive, ref, computed } from "vue";
+import axios from 'axios';
+let CancelToken = axios.CancelToken
+let source = null
 const visible = ref(false);
 const loading = ref(false);
 const activeKey = ref('1');
@@ -37,8 +39,11 @@
   post: '',// 宀椾綅
   txt: '',// 澶囨敞
 });
-
-
+const acceptNameList = computed(
+  ()=>{
+    return '.word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,'
+  }
+)
 const customRequest = (option) => {
   const {onProgress, onError, onSuccess, fileItem, name} = option
   const xhr = new XMLHttpRequest();
@@ -64,7 +69,7 @@
 
   const formData = new FormData();
   formData.append(name || 'file', fileItem.file);
-  xhr.open('post', '//upload-z2.qbox.me/', true);
+  xhr.open('post', '/v1/user/login', true);
   xhr.send(formData);
 
   return {
@@ -73,6 +78,69 @@
     }
   }
 };
+// 涓婁紶鏂囦欢
+// async submitForm = ()=>{
+//   if (this.fileList && this.fileList.length > 0) {
+//     source = CancelToken.source()
+//     this.fileUploadLoad = true
+//     const formdata = new FormData()
+//     let param = {
+//       userName: this.userInfo.userName,
+//       userId: this.userInfo.userID,
+//       cfeId: this.currow.conferences[0].id,
+//     }
+//     this.fileList.map((item) => {
+//       formdata.append('file', item.raw)
+//     })
+//     uploadCfeFile(
+//       { param, formdata },
+//       (progressEvent) => {
+//         let total = progressEvent.total
+//         let loaded = progressEvent.loaded
+//         this.uploadPercent = parseInt(((loaded / total) * 100).toFixed(0))
+//       },
+//       source
+//     )
+//       .then((res) => {
+//         if (res.data.code === '0') {
+//           //涓婁紶鎴愬姛
+//           this.$successMessage(
+//             this.translateTitle(
+//               'json_fileupload.json_file_tip.json_file_tip08'
+//             )
+//           )
+//           this.fileList = []
+//           this.$refs.upload.clearFiles()
+//           this.queryList()
+//         } else {
+//           this.$errorMessage(res.data.message)
+//         }
+//         this.fileUploadLoad = false
+//         this.uploadPercent = 0
+//       })
+//       .catch((error) => {
+//         this.fileUploadLoad = false
+//         this.uploadPercent = 0
+//         if (axios.isCancel(error)) {
+//           //宸茬粓姝笂浼�
+//           this.$errorMessage(
+//             this.translateTitle(
+//               'json_fileupload.json_file_tip.json_file_tip09'
+//             )
+//           )
+//         } else {
+//           this.$errorMessage('鏂囦欢澶у皬瓒呰繃闄愬埗锛屼笂浼犲け璐�')
+//         }
+//       })
+//   } else {
+//     //璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢
+//     this.$warningMessage(
+//       this.translateTitle('json_fileupload.json_file_tip.json_file_tip10')
+//     )
+//   }
+// }
+
+
 
 const handleSubmit = ({values, errors}) => {
   console.log('values:', values, '\nerrors:', errors)
diff --git a/src/views/dmx/knowledgeLib/config.vue b/src/views/dmx/knowledgeLib/config.vue
index d134148..74bc5e9 100644
--- a/src/views/dmx/knowledgeLib/config.vue
+++ b/src/views/dmx/knowledgeLib/config.vue
@@ -103,8 +103,10 @@
           </a-form-item>
           <div v-if="form.raptor">
             <a-form-item field="section" label="鎻愮ず璇�">
-              <a-textarea style="height: 10rem;border: 1px solid  var(--color-fill-3);border-radius: 4px" placeholder=""
-                          allow-clear />
+              <a-textarea
+                v-model="form.prompt"
+                style="height: 10rem;border: 1px solid  var(--color-fill-3);border-radius: 4px" placeholder=""
+                allow-clear />
             </a-form-item>
             <a-form-item field="slider" label="鏈�澶oken鏁�"
                          :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
@@ -232,7 +234,10 @@
   switch: false,
   multiSelect: ["section one"],
   treeSelect: "",
-  raptor: false
+  raptor: false,
+  prompt: '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n' +
+    '      {cluster_content}\n' +
+    '浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��',
 });
 const options = [
   {
diff --git a/src/views/dmx/knowledgeLib/edit.vue b/src/views/dmx/knowledgeLib/edit.vue
index 56fe9f9..808619a 100644
--- a/src/views/dmx/knowledgeLib/edit.vue
+++ b/src/views/dmx/knowledgeLib/edit.vue
@@ -1,25 +1,21 @@
 
 <template>
-  <a-button type="primary" @click="handleClick">
+  <a-button type="text" @click="handleClick" size="small">
     <template #icon>
-      <icon-plus />
+      <icon-edit />
     </template>
-    鏂板缓鏂囦欢
   </a-button>
-  <a-modal v-model:visible="visible" title="涓婁紶鏂囦欢" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk" title-align="start">
+  <a-modal v-model:visible="visible" title="閲嶅懡鍚�" @before-open="handleOpened" @cancel="handleCancel" :footer="false" title-align="start">
     <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit" >
-      <a-form-item field="name" label="鐢ㄦ埛鍚�">
-
+      <a-form-item field="name" label="鍚嶇О">
+        <a-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�"/>
       </a-form-item>
-      <a-form-item label="澶囨敞">
-        <a-textarea  v-model="form.txt" placeholder="璇疯緭鍏�" allow-clear/>
+      <a-form-item>
+        <div style="width: 100%;text-align: right">
+          <a-button @click="visible = false">鍙栨秷</a-button>
+          <a-button style="margin-left: 10px" type="primary" html-type="submit">纭畾</a-button>
+        </div>
       </a-form-item>
-<!--      <a-form-item>-->
-<!--        <div style="width: 100%;text-align: right">-->
-<!--          <a-button @click="visible = false">鍙栨秷</a-button>-->
-<!--          <a-button style="margin-left: 10px" type="primary" html-type="submit">纭畾</a-button>-->
-<!--        </div>-->
-<!--      </a-form-item>-->
     </a-form>
   </a-modal>
 </template>
@@ -41,69 +37,8 @@
   name: [
     {
       required: true,
-      message:'鐢ㄦ埛鍚嶄笉鍏佽涓虹┖',
+      message:'鍚嶇О涓嶅厑璁镐负绌�',
     },
-  ],
-  nameJoin: [
-    {
-      required: true,
-      message:'鏄电О涓嶅厑璁镐负绌�',
-    },
-  ],
-  password: [
-    {
-      required: true,
-      message:'password is required',
-    },
-  ],
-  password2: [
-    {
-      required: true,
-      message:'password is required',
-    },
-    {
-      validator: (value, cb) => {
-        if (value !== form.password) {
-          cb('two passwords do not match')
-        } else {
-          cb()
-        }
-      }
-    }
-  ],
-  email: [
-    {
-      type: 'email',
-      required: true,
-    }
-  ],
-  ip: [
-    {
-      type: 'ip',
-      required: true,
-    }
-  ],
-  url: [
-    {
-      type: 'url',
-      required: true,
-    }
-  ],
-  match: [
-    {
-      required: true,
-      validator: (value, cb) => {
-        return new Promise((resolve) => {
-          if (!value) {
-            cb('Please enter match')
-          }
-          if (value !== 'match') {
-            cb('match must be match!')
-          }
-          resolve()
-        })
-      }
-    }
   ],
 }
 
@@ -116,15 +51,15 @@
   visible.value = true;
 };
 const handleBeforeOk = (done) => {
-    formRef.value.validate().then(res => {
-      console.log('form:', form)
-      if (!form.name) {
-        done(false)
-      }else {
-        console.log('璇锋眰鏁版嵁');
+  formRef.value.validate().then(res => {
+    console.log('form:', form)
+    if (!form.name) {
+      done(false)
+    }else {
+      console.log('璇锋眰鏁版嵁');
 
-      }
-    })
+    }
+  })
 };
 const handleCancel = () => {
   visible.value = false;
diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index de20746..0ec488f 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -46,79 +46,9 @@
                           <!--            鏂板缓-->
                           <add />
                         </a-col>
-                        <!--              <a-col :span="8">-->
-                        <!--                <a-form-item field="name" :label="$t('searchTable.form.name')">-->
-                        <!--                  <a-input-->
-                        <!--                    v-model="formModel.name"-->
-                        <!--                    :placeholder="$t('searchTable.form.name.placeholder')"-->
-                        <!--                  />-->
-                        <!--                </a-form-item>-->
-                        <!--              </a-col>-->
-                        <!--              <a-col :span="8">-->
-                        <!--                <a-form-item-->
-                        <!--                  field="contentType"-->
-                        <!--                  :label="$t('searchTable.form.contentType')"-->
-                        <!--                >-->
-                        <!--                  <a-select-->
-                        <!--                    v-model="formModel.contentType"-->
-                        <!--                    :options="contentTypeOptions"-->
-                        <!--                    :placeholder="$t('searchTable.form.selectDefault')"-->
-                        <!--                  />-->
-                        <!--                </a-form-item>-->
-                        <!--              </a-col>-->
-                        <!--              <a-col :span="8">-->
-                        <!--                <a-form-item-->
-                        <!--                  field="filterType"-->
-                        <!--                  :label="$t('searchTable.form.filterType')"-->
-                        <!--                >-->
-                        <!--                  <a-select-->
-                        <!--                    v-model="formModel.filterType"-->
-                        <!--                    :options="filterTypeOptions"-->
-                        <!--                    :placeholder="$t('searchTable.form.selectDefault')"-->
-                        <!--                  />-->
-                        <!--                </a-form-item>-->
-                        <!--              </a-col>-->
-                        <!--              <a-col :span="8">-->
-                        <!--                <a-form-item-->
-                        <!--                  field="createdTime"-->
-                        <!--                  :label="$t('searchTable.form.createdTime')"-->
-                        <!--                >-->
-                        <!--                  <a-range-picker-->
-                        <!--                    v-model="formModel.createdTime"-->
-                        <!--                    style="width: 100%"-->
-                        <!--                  />-->
-                        <!--                </a-form-item>-->
-                        <!--              </a-col>-->
-                        <!--              <a-col :span="8">-->
-                        <!--                <a-form-item-->
-                        <!--                  field="status"-->
-                        <!--                  :label="$t('searchTable.form.status')"-->
-                        <!--                >-->
-                        <!--                  <a-select-->
-                        <!--                    v-model="formModel.status"-->
-                        <!--                    :options="statusOptions"-->
-                        <!--                    :placeholder="$t('searchTable.form.selectDefault')"-->
-                        <!--                  />-->
-                        <!--                </a-form-item>-->
-                        <!--              </a-col>-->
                       </a-row>
                     </a-form>
                   </a-col>
-                  <!--                <a-divider style="height: 40px" direction="vertical" />-->
-                  <!--                <a-col :flex="'200px'" style="text-align: right">-->
-                  <!--                  <a-button @click="reset" style="margin-right: 20px">-->
-                  <!--                    <template #icon>-->
-                  <!--                      <icon-refresh />-->
-                  <!--                    </template>-->
-                  <!--                    {{ $t('searchTable.form.reset') }}-->
-                  <!--                  </a-button>-->
-                  <!--                  <a-button type="primary" @click="search">-->
-                  <!--                    <template #icon>-->
-                  <!--                      <icon-search />-->
-                  <!--                    </template>-->
-                  <!--                    {{ $t('searchTable.form.search') }}-->
-                  <!--                  </a-button>-->
-                  <!--                </a-col>-->
                 </a-row>
                 <a-divider style="margin-top: 0" />
                 <a-row style="margin-bottom: 16px">
@@ -217,51 +147,67 @@
                   :scroll="{ y: 580 }"
                 >
                   <template #contentType="{ record }">
-                    <a-space>
-                      <a-avatar
-                        v-if="record.contentType === 'img'"
-                        :size="16"
-                        shape="square"
-                      >
-                        <img
-                          alt="avatar"
-                          src="//p3-armor.byteimg.com/tos-cn-i-49unhts6dw/581b17753093199839f2e327e726b157.svg~tplv-49unhts6dw-image.image"
-                        />
-                      </a-avatar>
-                      <a-avatar
-                        v-else-if="record.contentType === 'horizontalVideo'"
-                        :size="16"
-                        shape="square"
-                      >
-                        <img
-                          alt="avatar"
-                          src="//p3-armor.byteimg.com/tos-cn-i-49unhts6dw/77721e365eb2ab786c889682cbc721c1.svg~tplv-49unhts6dw-image.image"
-                        />
-                      </a-avatar>
-                      <a-avatar v-else :size="16" shape="square">
-                        <img
-                          alt="avatar"
-                          src="//p3-armor.byteimg.com/tos-cn-i-49unhts6dw/ea8b09190046da0ea7e070d83c5d1731.svg~tplv-49unhts6dw-image.image"
-                        />
-                      </a-avatar>
-                      {{ $t(`searchTable.form.contentType.${record.contentType}`) }}
-                    </a-space>
+
                   </template>
-                  <template #filterType="{ record }">
-                    {{ $t(`searchTable.form.filterType.${record.filterType}`) }}
+                  <template #staue="{ record }">
+                    <a-switch :model-value="record.staue"/>
                   </template>
                   <template #status="{ record }">
-                    <span v-if="record.status === 'offline'" class="circle"></span>
-                    <span v-else class="circle pass"></span>
-                    {{ $t(`searchTable.form.status.${record.status}`) }}
+                    <div style="display: flex;align-items: center;">
+                      <div style="width: 100px">
+                        <a-popover title="Title">
+                          <a-tag :color="'blue'" border>鎴愬姛</a-tag>
+                          <template #content>
+                            <p>Here is the text content</p>
+                          </template>
+                        </a-popover>
+                        <a-popover title="Title">
+                          <a-tag :color="'gold'" border>鍙栨秷</a-tag>
+                          <template #content>
+                            <p>Here is the text content</p>
+                          </template>
+                        </a-popover>
+                        <a-popover title="Title">
+                          <a-tag :color="'green'" border>鏈惎鍔�</a-tag>
+                          <template #content>
+                            <p>Here is the text content</p>
+                          </template>
+                        </a-popover>
+                      </div>
+                      <div>
+                        <a-button type="text" size="large">
+                          <template #icon>
+                            <icon-sync />
+                          </template>
+                        </a-button>
+                        <a-button type="text" size="large">
+                          <template #icon>
+                            <icon-sync style="color: green" />
+                          </template>
+                        </a-button>
+                        <a-button type="text" size="large">
+                          <template #icon>
+                            <icon-play-circle style="color: green" />
+                          </template>
+                        </a-button>
+                      </div>
+                    </div>
                   </template>
-                  <template #operations="{ record }">
-
+                  <template #operations="{ record }" >
+                    <tool/>
+                    <edit/>
                     <a-popconfirm content="纭畾鍒犻櫎鍚楋紵" type="warning" @ok="deleteItem(record)">
                       <a-button v-permission="['admin']" type="text" size="small">
-                        {{ $t('鍒犻櫎') }}
+                        <template #icon>
+                          <icon-delete />
+                        </template>
                       </a-button>
                     </a-popconfirm>
+                    <a-button type="text" size="small">
+                      <template #icon>
+                        <icon-download />
+                      </template>
+                    </a-button>
                   </template>
                 </a-table>
               </a-card>
@@ -294,9 +240,11 @@
   import cloneDeep from 'lodash/cloneDeep';
   import Sortable from 'sortablejs';
   import add from '@/views/dmx/knowledgeLib/add.vue'
+  import edit from '@/views/dmx/knowledgeLib/edit.vue'
   import addKnow from '@/views/dmx/knowledgeLib/addKnow.vue'
   import config from '@/views/dmx/knowledgeLib/config.vue'
   import test from '@/views/dmx/knowledgeLib/test.vue'
+  import tool from '@/views/dmx/knowledgeLib/tool.vue'
   import { deleteAccount } from "@/api/account";
   type SizeProps = 'mini' | 'small' | 'medium' | 'large';
   type Column = TableColumnData & { checked?: true };
@@ -317,7 +265,6 @@
   const formModel = ref(generateFormModel());
   const cloneColumns = ref<Column[]>([]);
   const showColumns = ref<Column[]>([]);
-  const edit = ref('add');
 
   const size = ref<SizeProps>('medium');
   let visible = ref(false)
@@ -354,11 +301,6 @@
     },
   ]);
   const columns = computed<TableColumnData[]>(() => [
-    // {
-    //   title: t('搴忓彿'),
-    //   dataIndex: 'index',
-    //   slotName: 'index',
-    // },
     {
       title: t('鍚嶇О'),
       dataIndex: 'name',
@@ -381,9 +323,21 @@
       dataIndex: 'createdTime',
     },
     {
+      title: t('鍚敤'),
+      dataIndex: 'staue',
+      slotName: 'staue',
+    },
+    {
+      title: t('瑙f瀽鐘舵��'),
+      dataIndex: 'status',
+      slotName: 'status',
+    },
+    {
       title: t('鎿嶄綔'),
       dataIndex: 'operations',
       slotName: 'operations',
+      width: 150,
+      minWidth: 100,
     },
   ]);
   const contentTypeOptions = computed<SelectOptionData[]>(() => [
@@ -427,7 +381,7 @@
     try {
       const { data } = await queryPolicyList(params);
       renderData.value = data.list;
-      console.log(renderData);
+      console.log(renderData, 'renderData');
       pagination.current = params.current;
       pagination.total = data.total;
     } catch (err) {
diff --git a/src/views/dmx/knowledgeLib/tool.vue b/src/views/dmx/knowledgeLib/tool.vue
new file mode 100644
index 0000000..50a1a08
--- /dev/null
+++ b/src/views/dmx/knowledgeLib/tool.vue
@@ -0,0 +1,177 @@
+
+<template>
+  <a-button type="text" @click="handleClick" size="small">
+    <template #icon>
+      <icon-tool />
+    </template>
+  </a-button>
+  <a-modal
+    v-model:visible="visible"
+    title="瑙f瀽鏂规硶"
+    @before-open="handleOpened"
+    @cancel="handleCancel"
+    :footer="false"
+    title-align="start"
+    width="700px"
+  >
+  <div style="display: flex;align-items: center;">
+    <div>
+      瑙f瀽鏂规硶:
+    </div>
+    <div style="margin-left: 10px">
+      <a-select v-model="form.section" placeholder="璇烽�夋嫨" allow-clear>
+        <a-option value="section one">Section One</a-option>
+        <a-option value="section two">Section Two</a-option>
+        <a-option value="section three">Section Three</a-option>
+      </a-select>
+    </div>
+  </div>
+    <a-form ref="formRef" :rules="rules" :model="form"  auto-label-width @submit="handleSubmit" >
+      <a-divider style="margin-top: 10px" />
+      <a-form-item field="slider" label="鏈�澶oken鏁�"
+                   :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+        <a-slider v-model="form.section" :max="10" />
+        <a-input-number v-model="form.section" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}"
+                        placeholder="Please Enter" class="input-demo" :min="10" :max="1000" />
+      </a-form-item>
+      <a-divider style="margin-top: 10px" />
+      <a-form-item field="raptor" label="浣跨敤鍙洖澧炲己RAPTOR绛栫暐">
+        <a-space direction="vertical" size="large">
+          <a-switch v-model="form.raptor" @change="onChangeRAPTOR" />
+        </a-space>
+      </a-form-item>
+      <div v-if="form.raptor">
+        <a-form-item field="section" label="鎻愮ず璇�">
+          <a-textarea
+            v-model="form.prompt"
+            style="height: 10rem;border: 1px solid  var(--color-fill-3);border-radius: 4px" placeholder=""
+                      allow-clear />
+        </a-form-item>
+        <a-form-item field="slider" label="鏈�澶oken鏁�"
+                     :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+          <a-slider v-model="form.score" :max="10" />
+          <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}"
+                          placeholder="Please Enter" class="input-demo" :min="10" :max="1000" />
+        </a-form-item>
+        <a-form-item field="slider" label="闃堝��" :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+          <a-slider v-model="form.score" :max="10" />
+          <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}"
+                          placeholder="Please Enter" class="input-demo" :min="10" :max="1000" />
+        </a-form-item>
+        <a-form-item field="slider" label="鏈�澶ц仛绫绘暟"
+                     :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+          <a-slider v-model="form.score" :max="10" />
+          <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}"
+                          placeholder="Please Enter" class="input-demo" :min="10" :max="1000" />
+        </a-form-item>
+        <a-form-item field="slider" label="闅忔満绉嶅瓙"
+                     :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+          <a-input-number v-model="form.score" :style="{width:'300px',marginRight:'1rem',borderRadius:'4px'}"
+                          placeholder="璇疯緭鍏�" class="input-demo" :min="10" :max="100" />
+          <a-button type="primary" @click="">
+            <icon-plus />
+          </a-button>
+
+        </a-form-item>
+
+      </div>
+      <a-form-item>
+        <div style="width: 100%;text-align: right">
+          <a-button @click="visible = false">鍙栨秷</a-button>
+          <a-button style="margin-left: 10px" type="primary" html-type="submit">纭畾</a-button>
+        </div>
+      </a-form-item>
+    </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts" setup>
+import { onMounted ,onBeforeMount, reactive, ref } from "vue";
+
+const visible = ref(false);
+const loading = ref(false);
+const form = reactive({
+  size: "medium",
+  name: "",
+  age: undefined,
+  section: "0",
+  province: "haidian",
+  options: [],
+  date: "",
+  time: "",
+  radio: "radio one",
+  slider: 5,
+  score: 5,
+  switch: false,
+  multiSelect: ["section one"],
+  treeSelect: "",
+  raptor: true,
+  prompt: '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n' +
+    '      {cluster_content}\n' +
+    '浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��',
+});
+const formRef = ref(null);
+
+const rules = {
+  name: [
+    {
+      required: true,
+      message:'鍚嶇О涓嶅厑璁镐负绌�',
+    },
+  ],
+}
+
+
+const handleSubmit = ({values, errors}) => {
+  console.log('values:', values, '\nerrors:', errors)
+}
+
+const handleClick = () => {
+  visible.value = true;
+};
+const handleBeforeOk = (done) => {
+  formRef.value.validate().then(res => {
+    console.log('form:', form)
+    if (!form.name) {
+      done(false)
+    }else {
+      console.log('璇锋眰鏁版嵁');
+
+    }
+  })
+};
+const handleCancel = () => {
+  visible.value = false;
+}
+
+const handleOpened =(el) => {
+  Object.assign(form,{
+    name: '',// 鐢ㄦ埛鍚�
+    nameJoin: '',// 鏄电О
+    post: '',// 宀椾綅
+    txt: '',// 澶囨敞
+  });
+  formRef.value.resetFields();
+}
+
+const onChangeRAPTOR = () => {
+  console.log(form.raptor);
+};
+
+onBeforeMount(()=>{
+
+})
+onMounted(()=>{
+
+
+})
+</script>
+
+<script lang="ts">
+export default {
+  name: 'add',
+  methods: {
+
+  }
+};
+</script>
\ No newline at end of file

--
Gitblit v1.8.0