|
@@ -22,7 +22,7 @@
|
|
|
</a-form-item>
|
|
|
<a-form-item label="类型" name="type">
|
|
|
<a-select
|
|
|
- v-model:value="formState.type"
|
|
|
+ v-model:value="formState.currentTypeId"
|
|
|
placeholder="请选择图书类型"
|
|
|
:allowClear="true"
|
|
|
:options="typeObj.typeList"
|
|
@@ -30,11 +30,26 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
<a-form-item has-feedback label="分类" name="subType">
|
|
|
- <a-select v-model:value="formState.subType" placeholder="请选择分类" allow-clear>
|
|
|
+ <!-- <a-select v-model:value="formState.currentCateId" placeholder="请选择分类" allow-clear>
|
|
|
<a-select-option v-for="item in subTypeList" :key="item.id" :value="item.id">{{
|
|
|
item.name
|
|
|
}}</a-select-option>
|
|
|
- </a-select>
|
|
|
+ </a-select> -->
|
|
|
+ <a-tree-select
|
|
|
+ v-model:value="formState.currentCateId"
|
|
|
+ show-search
|
|
|
+ style="width: 100%"
|
|
|
+ :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
|
|
+ placeholder="请选择分类"
|
|
|
+ allow-clear
|
|
|
+ :tree-data="subTypeList"
|
|
|
+ :replaceFields="{
|
|
|
+ children: 'children',
|
|
|
+ title: 'name',
|
|
|
+ value: 'id',
|
|
|
+ key: 'id',
|
|
|
+ }"
|
|
|
+ />
|
|
|
</a-form-item>
|
|
|
<a-form-item v-if="showIsbn" label="ISBN" name="isbn">
|
|
|
<a-input v-model:value="formState.isbn" placeholder="请输入13位编码" :allowClear="true" />
|
|
@@ -112,11 +127,13 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, reactive, toRaw } from 'vue';
|
|
|
+ import { SessionStorageService, LocalStorageService } from '@/utils/storage';
|
|
|
import { message } from 'ant-design-vue';
|
|
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
|
|
import alertBook from '@/api/manageBookAlert';
|
|
|
import { clearPending } from '@/api/axios';
|
|
|
import packagebook from '@/api/bookManage';
|
|
|
+ import { map } from 'lodash';
|
|
|
const title = ref<string>('');
|
|
|
|
|
|
const visible = ref<boolean>(false);
|
|
@@ -135,8 +152,8 @@
|
|
|
interface FormState {
|
|
|
name: string;
|
|
|
author: string;
|
|
|
- type: number | undefined;
|
|
|
- subType: number | undefined;
|
|
|
+ currentTypeId: number | undefined;
|
|
|
+ currentCateId: number | undefined;
|
|
|
isbn?: string;
|
|
|
brief: string;
|
|
|
contentSource: number;
|
|
@@ -147,18 +164,19 @@
|
|
|
const formState: FormState = reactive({
|
|
|
name: '',
|
|
|
author: '',
|
|
|
- type: undefined,
|
|
|
+ currentTypeId: undefined,
|
|
|
isbn: '',
|
|
|
brief: '',
|
|
|
- contentSource: 1,
|
|
|
+ contentSource: 2,
|
|
|
linkAddress: '',
|
|
|
releaseNow: false,
|
|
|
- subType: undefined,
|
|
|
+ currentCateId: undefined,
|
|
|
});
|
|
|
|
|
|
const showIsbn = ref<boolean>(false);
|
|
|
const subTypeList = ref([]);
|
|
|
const changeType = (v) => {
|
|
|
+ formState.currentCateId = undefined;
|
|
|
if (v == 1) {
|
|
|
showIsbn.value = true;
|
|
|
} else {
|
|
@@ -168,32 +186,46 @@
|
|
|
getSbuType(v);
|
|
|
}
|
|
|
};
|
|
|
- const getSbuType = (e) => {
|
|
|
- packagebook.listCategory({ type: e }).then((res) => {
|
|
|
- const { code, data } = res.data;
|
|
|
- if (code === 200) {
|
|
|
- subTypeList.value = data;
|
|
|
- }
|
|
|
- });
|
|
|
+
|
|
|
+ const getSbuType = (v) => {
|
|
|
+ // dataCache.set("userInfo",res);
|
|
|
+
|
|
|
+ let arr = LocalStorageService.get('subType' + v);
|
|
|
+ subTypeList.value = arr;
|
|
|
+ // if (arr) {
|
|
|
+ // subTypeList.value = arr;
|
|
|
+ // } else {
|
|
|
+ // packagebook.listTree().then((res) => {
|
|
|
+ // const { code, data } = res.data;
|
|
|
+ // if (code === 200) {
|
|
|
+ // // subTypeList.value = data;
|
|
|
+ // data.forEach((e) => {
|
|
|
+ // dataCache.set(e.id, e.children);
|
|
|
+ // });
|
|
|
+ // subTypeList.value = data[0]?.children;
|
|
|
+ // console.log(subTypeList.value, '===========');
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
};
|
|
|
let isType = async (value) => {
|
|
|
- if (!formState.type) {
|
|
|
+ if (!formState.currentTypeId) {
|
|
|
return Promise.reject('请选择图书类型');
|
|
|
}
|
|
|
};
|
|
|
let isSubType = async (val) => {
|
|
|
- if (!formState.subType) {
|
|
|
+ if (!formState.currentCateId) {
|
|
|
return Promise.reject('请选择图书分类');
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- let isbnRule = async (value) => {
|
|
|
- let a = /[0-9]{13,16}/;
|
|
|
- let txt = toRaw(formState).isbn;
|
|
|
- if (txt.length > 13) {
|
|
|
- return Promise.reject('编码位数不能超过13位');
|
|
|
- } else if (!a.test(txt)) return Promise.reject('请输入正确的编码');
|
|
|
- };
|
|
|
+ // let isbnRule = async (value) => {
|
|
|
+ // let a = /[0-9]{13,16}/;
|
|
|
+ // let txt = toRaw(formState).isbn;
|
|
|
+ // if (txt.length > 13) {
|
|
|
+ // return Promise.reject('编码位数不能超过13位');
|
|
|
+ // } else if (!a.test(txt)) return Promise.reject('请输入正确的编码');
|
|
|
+ // };
|
|
|
|
|
|
let validatorImg = async () => {
|
|
|
if (allFile.imgList.length < 1) return Promise.reject('请上传图书封面');
|
|
@@ -217,7 +249,7 @@
|
|
|
name: [{ required: true, message: '请输入图书名称', trigger: 'blur' }],
|
|
|
type: [{ required: true, validator: isType, trigger: 'blur' }],
|
|
|
subType: [{ required: true, validator: isSubType, trigger: 'blur' }],
|
|
|
- isbn: [{ required: true, validator: isbnRule, trigger: 'blur' }],
|
|
|
+ // isbn: [{ required: true, validator: isbnRule, trigger: 'blur' }],
|
|
|
author: [{ required: true, message: '请输入作者名称', trigger: 'blur' }],
|
|
|
upImg: [{ required: true, validator: validatorImg, trigger: 'change' }],
|
|
|
brief: [{ required: true, message: '请输入图书简介', trigger: 'blur' }],
|
|
@@ -337,7 +369,8 @@
|
|
|
const editAlert = (obj) => {
|
|
|
formState.name = obj.name;
|
|
|
formState.author = obj.author;
|
|
|
- formState.type = obj.type;
|
|
|
+ formState.currentTypeId = obj.currentTypeId[0];
|
|
|
+ formState.currentCateId = obj.currentCateId[0];
|
|
|
formState.isbn = obj.isbn;
|
|
|
formState.brief = obj.brief;
|
|
|
formState.contentSource = obj.contentSource;
|
|
@@ -358,8 +391,9 @@
|
|
|
};
|
|
|
allFile.imgList.push(img);
|
|
|
allFile.fileList.push(files);
|
|
|
- getSbuType(obj.type);
|
|
|
- formState.subType = obj.subType;
|
|
|
+ // debugger;
|
|
|
+ getSbuType(1);
|
|
|
+ formState.currentCateId = obj.currentCateId[0];
|
|
|
visible.value = true;
|
|
|
};
|
|
|
|
|
@@ -376,6 +410,7 @@
|
|
|
} else {
|
|
|
obj.status = 2;
|
|
|
}
|
|
|
+
|
|
|
obj.cover = cover.value;
|
|
|
obj.uploadFile = fileUrl.value;
|
|
|
obj.fileName = fileName.value;
|
|
@@ -425,10 +460,10 @@
|
|
|
formRef.value.resetFields();
|
|
|
formState.name = '';
|
|
|
formState.author = '';
|
|
|
- formState.type = undefined;
|
|
|
+ formState.currentTypeId = undefined;
|
|
|
formState.isbn = '';
|
|
|
formState.brief = '';
|
|
|
- formState.contentSource = 1;
|
|
|
+ formState.contentSource = 2;
|
|
|
formState.linkAddress = '';
|
|
|
formState.releaseNow = false;
|
|
|
};
|