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