gaozhangdian 2 éve
szülő
commit
1d77ac2f50

+ 6 - 6
src/api/bookManage.ts

@@ -10,13 +10,13 @@ import Axios from './axios';
 
 const bookpackge = {
   getBookStatusDropDown: '/fighter-library/book/getBookStatusDropDown',
-  getBookTypeDropDown: '/fighter-library/book/getBookTypeDropDown',
+  listTopCategory: '/fighter-library/CateRelation/listTopCategory',
   queryPackage: '/fighter-library/book/queryBookByPage',
   deleteBatchBook: '/fighter-library/book/deleteBatchBook',
   batchUpperOrLower: '/fighter-library/book/batchUpperOrLower',
   releaseBook: '/fighter-library/book/releaseBook',
   backBook: '/fighter-library/book/backBook',
-  listCategory: '/fighter-library/book/listCategory',
+  listCategory: '/fighter-library/CateRelation/listChildCategory',
 };
 
 //  分页查询套餐参数
@@ -52,16 +52,16 @@ class packagebook {
   }
 
   // 图书类型下拉选
-  static async getBookTypeDropDown(): Promise<HttpResponse> {
-    return Axios(bookpackge.getBookTypeDropDown, {
-      method: 'get',
+  static async listTopCategory(): Promise<HttpResponse> {
+    return Axios(bookpackge.listTopCategory, {
+      method: 'post',
     });
   }
 
   // 图书二级类型下拉选
   static async listCategory(params): Promise<HttpResponse> {
     return Axios(bookpackge.listCategory, {
-      method: 'get',
+      method: 'post',
       params: params,
     });
   }

+ 308 - 310
src/views/bookManage/addDialog.vue

@@ -1,4 +1,3 @@
-
 <template>
   <div>
     <a-modal
@@ -28,8 +27,7 @@
             :allowClear="true"
             :options="typeObj.typeList"
             @change="changeType"
-          >
-          </a-select>
+          />
         </a-form-item>
         <a-form-item has-feedback label="分类" name="subType">
           <a-select v-model:value="formState.subType" placeholder="请选择分类" allow-clear>
@@ -112,347 +110,347 @@
   </div>
 </template>
 
-<script setup lang="ts" >
-import { ref, reactive, toRaw } from 'vue';
-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';
-const title = ref<string>('');
+<script setup lang="ts">
+  import { ref, reactive, toRaw } from 'vue';
+  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';
+  const title = ref<string>('');
 
-const visible = ref<boolean>(false);
+  const visible = ref<boolean>(false);
 
-const formRef = ref();
+  const formRef = ref();
 
-const props = defineProps({
-  typeObj: Object,
-});
+  const props = defineProps({
+    typeObj: Object,
+  });
 
-interface type {
-  value: number | undefined;
-  label: string | undefined;
-}
+  interface type {
+    value: number | undefined;
+    label: string | undefined;
+  }
 
-interface FormState {
-  name: string;
-  author: string;
-  type: number | undefined;
-  subType: number | undefined;
-  isbn?: string;
-  brief: string;
-  contentSource: number;
-  linkAddress?: string;
-  releaseNow: boolean;
-}
+  interface FormState {
+    name: string;
+    author: string;
+    type: number | undefined;
+    subType: number | undefined;
+    isbn?: string;
+    brief: string;
+    contentSource: number;
+    linkAddress?: string;
+    releaseNow: boolean;
+  }
 
-const formState: FormState = reactive({
-  name: '',
-  author: '',
-  type: undefined,
-  isbn: '',
-  brief: '',
-  contentSource: 1,
-  linkAddress: '',
-  releaseNow: false,
-  subType: undefined,
-});
+  const formState: FormState = reactive({
+    name: '',
+    author: '',
+    type: undefined,
+    isbn: '',
+    brief: '',
+    contentSource: 1,
+    linkAddress: '',
+    releaseNow: false,
+    subType: undefined,
+  });
 
-const showIsbn = ref<boolean>(false);
-const subTypeList = ref([]);
-const changeType = (v) => {
-  if (v == 1) {
-    showIsbn.value = true;
-  } else {
-    showIsbn.value = false;
-  }
-  if (v) {
-    getSbuType(v);
-  }
-};
-const getSbuType = (e) => {
-  packagebook.listCategory({ type: e }).then((res) => {
-    const { code, data } = res.data;
-    if (code === 200) {
-      subTypeList.value = data;
+  const showIsbn = ref<boolean>(false);
+  const subTypeList = ref([]);
+  const changeType = (v) => {
+    if (v == 1) {
+      showIsbn.value = true;
+    } else {
+      showIsbn.value = false;
     }
-  });
-};
-let isType = async (value) => {
-  if (!formState.type) {
-    return Promise.reject('请选择图书类型');
-  }
-};
-let isSubType = async (val) => {
-  if (!formState.subType) {
-    return Promise.reject('请选择图书分类');
-  }
-};
+    if (v) {
+      getSbuType(v);
+    }
+  };
+  const getSbuType = (e) => {
+    packagebook.listCategory({ type: e }).then((res) => {
+      const { code, data } = res.data;
+      if (code === 200) {
+        subTypeList.value = data;
+      }
+    });
+  };
+  let isType = async (value) => {
+    if (!formState.type) {
+      return Promise.reject('请选择图书类型');
+    }
+  };
+  let isSubType = async (val) => {
+    if (!formState.subType) {
+      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('请上传图书封面');
-};
+  let validatorImg = async () => {
+    if (allFile.imgList.length < 1) return Promise.reject('请上传图书封面');
+  };
 
-let validatorUrl = async () => {
-  let a = /((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)/;
-  let url = toRaw(formState).linkAddress;
-  if (!a.test(url)) return Promise.reject('请输入正确的链接');
-};
+  let validatorUrl = async () => {
+    let a = /((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)/;
+    let url = toRaw(formState).linkAddress;
+    if (!a.test(url)) return Promise.reject('请输入正确的链接');
+  };
 
-let conSource = async () => {
-  if (!formState.contentSource) return Promise.reject('请选择内容来源');
-};
+  let conSource = async () => {
+    if (!formState.contentSource) return Promise.reject('请选择内容来源');
+  };
 
-let validatorFile = async () => {
-  if (allFile.fileList.length < 1) return Promise.reject('请上传内容');
-};
+  let validatorFile = async () => {
+    if (allFile.fileList.length < 1) return Promise.reject('请上传内容');
+  };
 
-const rules = {
-  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' }],
-  author: [{ required: true, message: '请输入作者名称', trigger: 'blur' }],
-  upImg: [{ required: true, validator: validatorImg, trigger: 'change' }],
-  brief: [{ required: true, message: '请输入图书简介', trigger: 'blur' }],
-  contentSource: [{ required: true, validator: conSource, trigger: 'change' }],
-  linkAddress: [{ required: true, validator: validatorUrl, trigger: 'blur' }],
-  upFile: [{ required: true, validator: validatorFile, trigger: 'change' }],
-};
+  const rules = {
+    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' }],
+    author: [{ required: true, message: '请输入作者名称', trigger: 'blur' }],
+    upImg: [{ required: true, validator: validatorImg, trigger: 'change' }],
+    brief: [{ required: true, message: '请输入图书简介', trigger: 'blur' }],
+    contentSource: [{ required: true, validator: conSource, trigger: 'change' }],
+    linkAddress: [{ required: true, validator: validatorUrl, trigger: 'blur' }],
+    upFile: [{ required: true, validator: validatorFile, trigger: 'change' }],
+  };
 
-const fileObj = reactive<any>({
-  file: {},
-});
+  const fileObj = reactive<any>({
+    file: {},
+  });
 
-const cover = ref();
-const fileUrl = ref();
-const fileName = ref();
-const allFile = reactive({
-  imgList: [],
-  fileList: [],
-});
+  const cover = ref();
+  const fileUrl = ref();
+  const fileName = ref();
+  const allFile = reactive({
+    imgList: [],
+    fileList: [],
+  });
 
-const spinning = ref<boolean>(false);
-const uploadFile = (formData, file, is) => {
-  spinning.value = true;
-  alertBook
-    .uploadFile(formData)
-    .then((res) => {
-      let obj;
-      const { data, code } = res.data;
-      if (code == 200) {
-        let a = file;
-        a.filePath = data.filePath;
-        fileObj.file = a;
-        fileObj.file.url = import.meta.env.VITE__APP_FDFS_WEB_SERVER_URL + data.filePath;
-        obj = fileObj.file;
+  const spinning = ref<boolean>(false);
+  const uploadFile = (formData, file, is) => {
+    spinning.value = true;
+    alertBook
+      .uploadFile(formData)
+      .then((res) => {
+        let obj;
+        const { data, code } = res.data;
+        if (code == 200) {
+          let a = file;
+          a.filePath = data.filePath;
+          fileObj.file = a;
+          fileObj.file.url = import.meta.env.VITE__APP_FDFS_WEB_SERVER_URL + data.filePath;
+          obj = fileObj.file;
+          if (is) {
+            allFile.imgList = [];
+            allFile.imgList.push(obj);
+            cover.value = obj.url;
+            validatorImg();
+            message.success('上传成功');
+          } else {
+            allFile.fileList = [];
+            allFile.fileList.push(obj);
+            fileUrl.value = obj.url;
+            fileName.value = obj.name;
+            message.success('上传成功');
+          }
+          spinning.value = false;
+        }
+      })
+      .catch((err) => {
         if (is) {
           allFile.imgList = [];
-          allFile.imgList.push(obj);
-          cover.value = obj.url;
-          validatorImg();
-          message.success('上传成功');
         } else {
           allFile.fileList = [];
-          allFile.fileList.push(obj);
-          fileUrl.value = obj.url;
-          fileName.value = obj.name;
-          message.success('上传成功');
         }
         spinning.value = false;
-      }
-    })
-    .catch((err) => {
-      if (is) {
-        allFile.imgList = [];
-      } else {
-        allFile.fileList = [];
-      }
-      spinning.value = false;
-      message.error('上传失败');
-    });
-};
-
-const changeImg = (info) => {
-  console.log(info);
-  if (!(info.file.type === 'image/jpeg' || info.file.type === 'image/png')) {
-    allFile.imgList = [];
-  }
-};
-const changeFile = (info) => {
-  if (info.file.type != 'application/pdf') {
-    allFile.fileList = [];
-  }
-};
-const beforeImg = (file, list) => {
-  if (!(file.type === 'image/jpeg' || file.type === 'image/png')) {
-    allFile.imgList = [];
-    message.error('只能上传jpg或者png格式的图片');
-    return false;
-  }
-};
-
-const beforeFile = (file, list) => {
-  if (file.type != 'application/pdf') {
-    message.error('只能上传pdf文件');
-    return false;
-  }
-  return true;
-};
-
-const uploadImg = (options) => {
-  const formData = new FormData();
-  formData.append('file', options.file);
-  uploadFile(formData, options.file, true);
-};
-
-const upPapers = (options) => {
-  const formData = new FormData();
-  formData.append('file', options.file);
-  uploadFile(formData, options.file, false);
-};
+        message.error('上传失败');
+      });
+  };
 
-const removeImg = (file) => {
-  let a = allFile.imgList.indexOf(file);
-  allFile.imgList.splice(a, 1);
-  message.success('删除成功');
-};
+  const changeImg = (info) => {
+    console.log(info);
+    if (!(info.file.type === 'image/jpeg' || info.file.type === 'image/png')) {
+      allFile.imgList = [];
+    }
+  };
+  const changeFile = (info) => {
+    if (info.file.type != 'application/pdf') {
+      allFile.fileList = [];
+    }
+  };
+  const beforeImg = (file, list) => {
+    if (!(file.type === 'image/jpeg' || file.type === 'image/png')) {
+      allFile.imgList = [];
+      message.error('只能上传jpg或者png格式的图片');
+      return false;
+    }
+  };
 
-const removeFile = (file) => {
-  let a = allFile.fileList.indexOf(file);
-  allFile.fileList.splice(a, 1);
-  message.success('删除成功');
-};
+  const beforeFile = (file, list) => {
+    if (file.type != 'application/pdf') {
+      message.error('只能上传pdf文件');
+      return false;
+    }
+    return true;
+  };
 
-const emit = defineEmits(['getTab']);
+  const uploadImg = (options) => {
+    const formData = new FormData();
+    formData.append('file', options.file);
+    uploadFile(formData, options.file, true);
+  };
 
-const bookId = ref();
+  const upPapers = (options) => {
+    const formData = new FormData();
+    formData.append('file', options.file);
+    uploadFile(formData, options.file, false);
+  };
 
-const editAlert = (obj) => {
-  formState.name = obj.name;
-  formState.author = obj.author;
-  formState.type = obj.type;
-  formState.isbn = obj.isbn;
-  formState.brief = obj.brief;
-  formState.contentSource = obj.contentSource;
-  formState.linkAddress = obj.linkAddress;
-  formState.releaseNow = false;
+  const removeImg = (file) => {
+    let a = allFile.imgList.indexOf(file);
+    allFile.imgList.splice(a, 1);
+    message.success('删除成功');
+  };
 
-  cover.value = obj.cover;
-  fileUrl.value = obj.uploadFile;
-  bookId.value = obj.id;
-  let img = {
-    url: obj.cover,
-    uid: obj.id,
+  const removeFile = (file) => {
+    let a = allFile.fileList.indexOf(file);
+    allFile.fileList.splice(a, 1);
+    message.success('删除成功');
   };
-  let files = {
-    url: obj.uploadFile,
-    uid: obj.id,
-    name: obj.fileName,
+
+  const emit = defineEmits(['getTab']);
+
+  const bookId = ref();
+
+  const editAlert = (obj) => {
+    formState.name = obj.name;
+    formState.author = obj.author;
+    formState.type = obj.type;
+    formState.isbn = obj.isbn;
+    formState.brief = obj.brief;
+    formState.contentSource = obj.contentSource;
+    formState.linkAddress = obj.linkAddress;
+    formState.releaseNow = false;
+
+    cover.value = obj.cover;
+    fileUrl.value = obj.uploadFile;
+    bookId.value = obj.id;
+    let img = {
+      url: obj.cover,
+      uid: obj.id,
+    };
+    let files = {
+      url: obj.uploadFile,
+      uid: obj.id,
+      name: obj.fileName,
+    };
+    allFile.imgList.push(img);
+    allFile.fileList.push(files);
+    getSbuType(obj.type);
+    formState.subType = obj.subType;
+    visible.value = true;
   };
-  allFile.imgList.push(img);
-  allFile.fileList.push(files);
-  getSbuType(obj.type);
-  formState.subType = obj.subType;
-  visible.value = true;
-};
 
-const ok = () => {
-  if (spinning.value) {
-    return message.error('文件正在上传中,请稍后再试');
-  }
-  formRef.value
-    .validate()
-    .then(() => {
-      let obj: any = toRaw(formState);
-      if (toRaw(formState).releaseNow) {
-        obj.status = 1;
-      } else {
-        obj.status = 2;
-      }
-      obj.cover = cover.value;
-      obj.uploadFile = fileUrl.value;
-      obj.fileName = fileName.value;
-      if (title.value == '新增') {
-        alertBook
-          .addBook(obj)
-          .then((res) => {
-            if (res.data.code == 200) {
-              visible.value = false;
-              cancel();
-              emit('getTab');
-              message.success('保存成功');
-            }
-          })
-          .catch((err) => {
-            // message.error(err.msg)
-          });
-      } else {
-        alertBook
-          .updateBook({
-            ...obj,
-            id: bookId.value,
-          })
-          .then((res) => {
-            if (res.data.code == 200) {
-              visible.value = false;
-              cancel();
-              emit('getTab');
-              message.success('编辑成功');
-            }
-          })
-          .catch((err) => {
-            console.log(err);
-            // message.error(err.msg)
-          });
-      }
-    })
-    .catch(() => {
-      message.error('您仍有未完成的必填项,请先完成');
-    });
-};
+  const ok = () => {
+    if (spinning.value) {
+      return message.error('文件正在上传中,请稍后再试');
+    }
+    formRef.value
+      .validate()
+      .then(() => {
+        let obj: any = toRaw(formState);
+        if (toRaw(formState).releaseNow) {
+          obj.status = 1;
+        } else {
+          obj.status = 2;
+        }
+        obj.cover = cover.value;
+        obj.uploadFile = fileUrl.value;
+        obj.fileName = fileName.value;
+        if (title.value == '新增') {
+          alertBook
+            .addBook(obj)
+            .then((res) => {
+              if (res.data.code == 200) {
+                visible.value = false;
+                cancel();
+                emit('getTab');
+                message.success('保存成功');
+              }
+            })
+            .catch((err) => {
+              // message.error(err.msg)
+            });
+        } else {
+          alertBook
+            .updateBook({
+              ...obj,
+              id: bookId.value,
+            })
+            .then((res) => {
+              if (res.data.code == 200) {
+                visible.value = false;
+                cancel();
+                emit('getTab');
+                message.success('编辑成功');
+              }
+            })
+            .catch((err) => {
+              console.log(err);
+              // message.error(err.msg)
+            });
+        }
+      })
+      .catch(() => {
+        message.error('您仍有未完成的必填项,请先完成');
+      });
+  };
 
-const cancel = () => {
-  clearPending();
-  allFile.imgList = [];
-  allFile.fileList = [];
-  formRef.value.resetFields();
-  formState.name = '';
-  formState.author = '';
-  formState.type = undefined;
-  formState.isbn = '';
-  formState.brief = '';
-  formState.contentSource = 1;
-  formState.linkAddress = '';
-  formState.releaseNow = false;
-};
+  const cancel = () => {
+    clearPending();
+    allFile.imgList = [];
+    allFile.fileList = [];
+    formRef.value.resetFields();
+    formState.name = '';
+    formState.author = '';
+    formState.type = undefined;
+    formState.isbn = '';
+    formState.brief = '';
+    formState.contentSource = 1;
+    formState.linkAddress = '';
+    formState.releaseNow = false;
+  };
 
-defineExpose({
-  visible,
-  title,
-  editAlert,
-});
+  defineExpose({
+    visible,
+    title,
+    editAlert,
+  });
 </script>
 
-<style lang="less" scoped >
-::v-deep(.ant-form-item) {
-  width: 375px;
-}
-.tips-txt {
-  color: #666666;
-  font-size: 12px;
-}
-.tips-span {
-  margin-left: 20px;
-  color: #666666;
-  font-size: 12px;
-}
+<style lang="less" scoped>
+  ::v-deep(.ant-form-item) {
+    width: 375px;
+  }
+  .tips-txt {
+    color: #666666;
+    font-size: 12px;
+  }
+  .tips-span {
+    margin-left: 20px;
+    color: #666666;
+    font-size: 12px;
+  }
 </style>

+ 147 - 158
src/views/bookManage/audit.vue

@@ -1,4 +1,3 @@
-
 <template>
   <div>
     <a-modal
@@ -13,17 +12,7 @@
           {{ formState.name }}
         </a-form-item>
         <a-form-item label="类型" name="type">
-          {{
-            formState.type == 1
-              ? '电子图书'
-              : formState.type == 2
-              ? '文献资料'
-              : formState.type == 3
-              ? '学术论文'
-              : formState.type == 4
-              ? '其他'
-              : ''
-          }}
+          {{ formState.types.length ? formState.types.join(',') : '--' }}
         </a-form-item>
         <a-form-item v-if="showIsbn" label="ISBN" name="isbn">
           {{ formState.isbn }}
@@ -54,157 +43,157 @@
   </div>
 </template>
 
-<script setup lang="ts" >
-import { ref, reactive, toRaw } from 'vue';
-import { message } from 'ant-design-vue';
-import { PlusOutlined } from '@ant-design/icons-vue';
-import alertBook from '@/api/manageBookAlert';
-import { clearPending } from '@/api/axios';
-
-const title = ref<string>('');
-
-const visible = ref<boolean>(false);
-
-const formRef = ref();
-
-const props = defineProps({
-  typeObj: Object,
-});
-
-interface type {
-  value: number | undefined;
-  label: string | undefined;
-}
-
-interface FormState {
-  name: string;
-  author: string;
-  type: number | undefined;
-  isbn?: string;
-  brief: string;
-  contentSource: number;
-  linkAddress?: string;
-  releaseNow: boolean;
-  auditStatus: number | string | undefined;
-  reviewer: string;
-  remark: string;
-}
-
-const formState: FormState = reactive({
-  name: '',
-  author: '',
-  type: undefined,
-  isbn: '',
-  brief: '',
-  contentSource: 1,
-  linkAddress: '',
-  releaseNow: false,
-  auditStatus: undefined,
-  reviewer: '',
-  remark: '',
-});
-
-const showIsbn = ref<boolean>(false);
-
-const fileObj = reactive<any>({
-  file: {},
-});
-
-const cover = ref();
-const fileUrl = ref();
-const fileName = ref();
-const allFile = reactive({
-  imgList: [],
-  fileList: [],
-});
-
-const spinning = ref<boolean>(false);
-
-const beforeFile = (file, list) => {
-  if (file.type != 'application/pdf') {
-    message.error('只能上传pdf文件');
-    return false;
+<script setup lang="ts">
+  import { ref, reactive, toRaw } from 'vue';
+  import { message } from 'ant-design-vue';
+  import { PlusOutlined } from '@ant-design/icons-vue';
+  import alertBook from '@/api/manageBookAlert';
+  import { clearPending } from '@/api/axios';
+
+  const title = ref<string>('');
+
+  const visible = ref<boolean>(false);
+
+  const formRef = ref();
+
+  const props = defineProps({
+    typeObj: Object,
+  });
+
+  interface type {
+    value: number | undefined;
+    label: string | undefined;
   }
-  return true;
-};
-
-const emit = defineEmits(['getTab']);
-
-const bookId = ref();
-
-const editAlert = (obj) => {
-  formState.name = obj.name;
-  formState.author = obj.author;
-  formState.type = obj.type;
-  formState.isbn = obj.isbn;
-  formState.brief = obj.brief;
-  formState.contentSource = obj.contentSource;
-  formState.linkAddress = obj.linkAddress;
-  formState.releaseNow = false;
-  formState.auditStatus = obj.auditStatus ? obj.auditStatus : undefined;
-  formState.remark = obj.remark;
-  formState.reviewer = obj.reviewer;
-  cover.value = obj.cover;
-  fileUrl.value = obj.uploadFile;
-  bookId.value = obj.id;
-  let img = {
-    url: obj.cover,
-    uid: obj.id,
-  };
-  let files = {
-    url: obj.uploadFile,
-    uid: obj.id,
-    name: obj.fileName,
+
+  interface FormState {
+    name: string;
+    author: string;
+    types: any;
+    isbn?: string;
+    brief: string;
+    contentSource: number;
+    linkAddress?: string;
+    releaseNow: boolean;
+    auditStatus: number | string | undefined;
+    reviewer: string;
+    remark: string;
+  }
+
+  const formState: FormState = reactive({
+    name: '',
+    author: '',
+    types: [],
+    isbn: '',
+    brief: '',
+    contentSource: 1,
+    linkAddress: '',
+    releaseNow: false,
+    auditStatus: undefined,
+    reviewer: '',
+    remark: '',
+  });
+
+  const showIsbn = ref<boolean>(false);
+
+  const fileObj = reactive<any>({
+    file: {},
+  });
+
+  const cover = ref();
+  const fileUrl = ref();
+  const fileName = ref();
+  const allFile = reactive({
+    imgList: [],
+    fileList: [],
+  });
+
+  const spinning = ref<boolean>(false);
+
+  const beforeFile = (file, list) => {
+    if (file.type != 'application/pdf') {
+      message.error('只能上传pdf文件');
+      return false;
+    }
+    return true;
   };
-  allFile.imgList.push(img);
-  allFile.fileList.push(files);
-  visible.value = true;
-};
-
-const ok = () => {
-  console.log(formState.auditStatus);
-  if (formState.auditStatus && formState.reviewer) {
-    const params = {
-      auditStatus: formState.auditStatus,
-      remark: formState.remark,
-      reviewer: formState.reviewer,
-      bookId: bookId.value,
+
+  const emit = defineEmits(['getTab']);
+
+  const bookId = ref();
+
+  const editAlert = (obj) => {
+    formState.name = obj.name;
+    formState.author = obj.author;
+    formState.types = obj.types;
+    formState.isbn = obj.isbn;
+    formState.brief = obj.brief;
+    formState.contentSource = obj.contentSource;
+    formState.linkAddress = obj.linkAddress;
+    formState.releaseNow = false;
+    formState.auditStatus = obj.auditStatus ? obj.auditStatus : undefined;
+    formState.remark = obj.remark;
+    formState.reviewer = obj.reviewer;
+    cover.value = obj.cover;
+    fileUrl.value = obj.uploadFile;
+    bookId.value = obj.id;
+    let img = {
+      url: obj.cover,
+      uid: obj.id,
     };
-    alertBook.auditBook(params).then((res) => {
-      const { code, msg } = res.data;
-      if (code === 200) {
-        message.success('操作成功');
-        visible.value = false;
-        emit('getTab');
-      }
-    });
-  } else {
-    message.error('请先审核,且审核人不能为空!');
-  }
-};
+    let files = {
+      url: obj.uploadFile,
+      uid: obj.id,
+      name: obj.fileName,
+    };
+    allFile.imgList.push(img);
+    allFile.fileList.push(files);
+    visible.value = true;
+  };
+
+  const ok = () => {
+    console.log(formState.auditStatus);
+    if (formState.auditStatus && formState.reviewer) {
+      const params = {
+        auditStatus: formState.auditStatus,
+        remark: formState.remark,
+        reviewer: formState.reviewer,
+        bookId: bookId.value,
+      };
+      alertBook.auditBook(params).then((res) => {
+        const { code, msg } = res.data;
+        if (code === 200) {
+          message.success('操作成功');
+          visible.value = false;
+          emit('getTab');
+        }
+      });
+    } else {
+      message.error('请先审核,且审核人不能为空!');
+    }
+  };
 
-const cancel = () => {
-  clearPending();
-};
+  const cancel = () => {
+    clearPending();
+  };
 
-defineExpose({
-  visible,
-  title,
-  editAlert,
-});
+  defineExpose({
+    visible,
+    title,
+    editAlert,
+  });
 </script>
 
-<style lang="less" scoped >
-::v-deep(.ant-form-item) {
-  width: 375px;
-}
-.tips-txt {
-  color: #666666;
-  font-size: 12px;
-}
-.tips-span {
-  margin-left: 20px;
-  color: #666666;
-  font-size: 12px;
-}
+<style lang="less" scoped>
+  ::v-deep(.ant-form-item) {
+    width: 375px;
+  }
+  .tips-txt {
+    color: #666666;
+    font-size: 12px;
+  }
+  .tips-span {
+    margin-left: 20px;
+    color: #666666;
+    font-size: 12px;
+  }
 </style>

+ 466 - 463
src/views/bookManage/index.vue

@@ -1,4 +1,3 @@
-
 <template>
   <div class="content">
     <div class="top">
@@ -13,19 +12,18 @@
             allow-clear
             @change="selectChange"
           >
-            <a-select-option v-for="item in typeOptions" :key="item.code" :value="item.code">{{
+            <a-select-option v-for="item in typeOptions" :key="item.id" :value="item.id">{{
               item.name
             }}</a-select-option>
           </a-select>
         </a-form-item>
-        <a-form-item
-          has-feedback
-          label="分类"
-          name="subType"
-          :wrapper-col="selectWrapperCol"
-          v-if="isShowType"
-        >
-          <a-select v-model:value="formState.subType" placeholder="请选择分类" allow-clear>
+        <a-form-item has-feedback label="分类" name="subType" :wrapper-col="selectWrapperCol">
+          <a-select
+            :disabled="!isShowType"
+            v-model:value="formState.subType"
+            placeholder="请选择分类"
+            allow-clear
+          >
             <a-select-option v-for="item in subType" :key="item.id" :value="item.id">{{
               item.name
             }}</a-select-option>
@@ -56,7 +54,7 @@
             :options="fileTypeList"
             placeholder="请选择"
             allow-clear
-          ></a-select>
+          />
         </a-form-item>
         <div style="margin-left: 41px">
           <a-button type="primary" html-type="submit" @click="search">搜索</a-button>
@@ -96,12 +94,12 @@
             text == '1'
               ? '电子图书'
               : text == '2'
-              ? '文献资料'
-              : text == '3'
-              ? '学术论文'
-              : text == '4'
-              ? '其他'
-              : ''
+                ? '文献资料'
+                : text == '3'
+                  ? '学术论文'
+                  : text == '4'
+                    ? '其他'
+                    : ''
           }}
         </template>
         <template #audit="{ record }">
@@ -112,7 +110,7 @@
         <template #action="{ record }">
           <a-space :size="10">
             <a-button type="link" @click="updateBook(record)" :disabled="record.status == '1'"
-              >编辑</a-button
+            >编辑</a-button
             >
             <a @click="backBook(record)" v-if="record.status == '1'">撤回</a>
             <a @click="bulkShelves(record)" v-if="record.status == '2'">发布</a>
@@ -147,477 +145,482 @@
   </div>
 </template>
 
-<script setup lang="ts" >
-import { ConfigProvider, message } from 'ant-design-vue';
-import { reactive, ref, onMounted } from 'vue';
-import { useRouter } from 'vue-router';
-// import { Moment } from 'moment';
-import addDialog from './addDialog.vue';
-import audit from './audit.vue';
-import zhCN from 'ant-design-vue/es/locale/zh_CN';
-import packagebook from '@/api/bookManage';
-import alertBook from '@/api/manageBookAlert';
-const router = useRouter();
-interface FormState {
-  name: string;
-  type: number;
-  dateRange: Array<any>;
-  author: string;
-  status: number;
-  fileType: string;
-  subType: number;
-}
-const fileTypeList = ref([
-  { label: 'pdf', value: 'pdf' },
-  { label: 'docx', value: 'docx' },
-  { label: 'doc', value: 'doc' },
-  { label: 'txt', value: 'txt' },
-  { label: 'htm', value: 'htm' },
-  { label: 'prc', value: 'prc' },
-  { label: 'mobi', value: 'mobi' },
-  { label: 'avi', value: 'avi' },
-  { label: 'rmvb', value: 'rmvb' },
-  { label: 'rar', value: 'rar' },
-  { label: 'mp3', value: 'mp3' },
-  { label: 'zip', value: 'zip' },
-  { label: 'chm', value: 'chm' },
-  { label: 'ppt', value: 'ppt' },
-  { label: 'wma', value: 'wma' },
-  { label: 'exe', value: 'exe' },
-  { label: 'fiv', value: 'fiv' },
-  { label: 'pptx', value: 'pptx' },
-  { label: 'swf', value: 'swf' },
-  { label: 'cfg', value: 'cfg' },
-  { label: 'wmv', value: 'wmv' },
-  { label: 'f4v', value: 'f4v' },
-  { label: 'rm', value: 'rm' },
-  { label: 'IFO', value: 'IFO' },
-  { label: 'mp4', value: 'mp4' },
-  { label: 'epub', value: 'epub' },
-  { label: 'azw3', value: 'azw3' },
-  { label: 'psd', value: 'psd' },
-  { label: 'VOB', value: 'VOB' },
-  { label: 'MPG', value: 'MPG' },
-  { label: 'MTS', value: 'MTS' },
-  { label: 'pps', value: 'pps' },
-  { label: 'djvu', value: 'djvu' },
-  { label: 'xls', value: 'xls' },
-  { label: 'pdz', value: 'pdz' },
-  { label: 'ppsx', value: 'ppsx' },
-  { label: 'jpeg', value: 'jpeg' },
-]);
-const formState: FormState = reactive({
-  name: '',
-  type: null,
-  dateRange: [],
-  author: '',
-  status: null,
-  fileType: undefined,
-  subType: null,
-});
-formState.fileType = fileTypeList.value[0].value;
+<script setup lang="ts">
+  import { ConfigProvider, message } from 'ant-design-vue';
+  import { reactive, ref, onMounted } from 'vue';
+  import { useRouter } from 'vue-router';
+  // import { Moment } from 'moment';
+  import addDialog from './addDialog.vue';
+  import audit from './audit.vue';
+  import zhCN from 'ant-design-vue/es/locale/zh_CN';
+  import packagebook from '@/api/bookManage';
+  import alertBook from '@/api/manageBookAlert';
+  const router = useRouter();
+  interface FormState {
+    name: string;
+    type: number;
+    dateRange: Array<any>;
+    author: string;
+    status: number;
+    fileType: string;
+    subType: number;
+  }
+  const fileTypeList = ref([
+    { label: 'pdf', value: 'pdf' },
+    { label: 'docx', value: 'docx' },
+    { label: 'doc', value: 'doc' },
+    { label: 'txt', value: 'txt' },
+    { label: 'htm', value: 'htm' },
+    { label: 'prc', value: 'prc' },
+    { label: 'mobi', value: 'mobi' },
+    { label: 'avi', value: 'avi' },
+    { label: 'rmvb', value: 'rmvb' },
+    { label: 'rar', value: 'rar' },
+    { label: 'mp3', value: 'mp3' },
+    { label: 'zip', value: 'zip' },
+    { label: 'chm', value: 'chm' },
+    { label: 'ppt', value: 'ppt' },
+    { label: 'wma', value: 'wma' },
+    { label: 'exe', value: 'exe' },
+    { label: 'fiv', value: 'fiv' },
+    { label: 'pptx', value: 'pptx' },
+    { label: 'swf', value: 'swf' },
+    { label: 'cfg', value: 'cfg' },
+    { label: 'wmv', value: 'wmv' },
+    { label: 'f4v', value: 'f4v' },
+    { label: 'rm', value: 'rm' },
+    { label: 'IFO', value: 'IFO' },
+    { label: 'mp4', value: 'mp4' },
+    { label: 'epub', value: 'epub' },
+    { label: 'azw3', value: 'azw3' },
+    { label: 'psd', value: 'psd' },
+    { label: 'VOB', value: 'VOB' },
+    { label: 'MPG', value: 'MPG' },
+    { label: 'MTS', value: 'MTS' },
+    { label: 'pps', value: 'pps' },
+    { label: 'djvu', value: 'djvu' },
+    { label: 'xls', value: 'xls' },
+    { label: 'pdz', value: 'pdz' },
+    { label: 'ppsx', value: 'ppsx' },
+    { label: 'jpeg', value: 'jpeg' },
+  ]);
+  const formState: FormState = reactive({
+    name: '',
+    type: null,
+    dateRange: [],
+    author: '',
+    status: null,
+    fileType: undefined,
+    subType: null,
+  });
+  formState.fileType = fileTypeList.value[0].value;
 
-// 表格
-let dataSource = ref([]);
-const formRef = ref();
-const selectWrapperCol = {
-  style: {
-    width: '171px',
-  },
-};
+  // 表格
+  let dataSource = ref([]);
+  const formRef = ref();
+  const selectWrapperCol = {
+    style: {
+      width: '171px',
+    },
+  };
 
-const typeOptions = ref<any>([]);
-const statusOptions = ref<any>([]);
-const resetForm = () => {
-  formRef.value.resetFields();
-  pageSize.value = 10;
-  current.value = 1;
-  queryList();
-};
+  const typeOptions = ref<any>([]);
+  const statusOptions = ref<any>([]);
+  const resetForm = () => {
+    formRef.value.resetFields();
+    pageSize.value = 10;
+    current.value = 1;
+    queryList();
+  };
 
-const search = () => {
-  pageSize.value = 10;
-  current.value = 1;
-  queryList();
-};
+  const search = () => {
+    pageSize.value = 10;
+    current.value = 1;
+    queryList();
+  };
 
-const columns = [
-  {
-    title: '名称',
-    dataIndex: 'name',
-    key: 'name',
-    width: 200,
-    fixed: 'left',
-  },
-  {
-    title: '类型',
-    dataIndex: 'type',
-    key: 'type',
-    slots: { customRender: 'type' },
-  },
-  {
-    title: '作者',
-    dataIndex: 'author',
-    key: 'author',
-  },
-  {
-    title: '创建时间',
-    dataIndex: 'createTime',
-    key: 'createTime',
-    width: 200,
-  },
-  {
-    title: '上传者',
-    width: '100px',
-    dataIndex: 'createUser',
-    key: 'createUser',
-  },
-  {
-    title: '发布状态',
-    width: '100px',
-    dataIndex: 'status',
-    key: 'status',
-    customRender: function (text) {
-      return text.text == '1' ? '已发布' : '未发布';
+  const columns = [
+    {
+      title: '名称',
+      dataIndex: 'name',
+      key: 'name',
+      width: 200,
+      fixed: 'left',
+    },
+    {
+      title: '类型',
+      dataIndex: 'type',
+      key: 'type',
+      slots: { customRender: 'type' },
+    },
+    {
+      title: '作者',
+      dataIndex: 'author',
+      key: 'author',
+    },
+    {
+      title: '创建时间',
+      dataIndex: 'createTime',
+      key: 'createTime',
+      width: 200,
+    },
+    {
+      title: '上传者',
+      width: '100px',
+      dataIndex: 'createUser',
+      key: 'createUser',
+    },
+    {
+      title: '发布状态',
+      width: '100px',
+      dataIndex: 'status',
+      key: 'status',
+      customRender: function (text) {
+        return text.text == '1' ? '已发布' : '未发布';
+      },
+    },
+    {
+      title: '文件类型',
+      width: '100px',
+      dataIndex: 'fileType',
+      key: 'fileType',
     },
-  },
-  {
-    title: '文件类型',
-    width: '100px',
-    dataIndex: 'fileType',
-    key: 'fileType',
-  },
-  {
-    title: '审核状态',
-    dataIndex: 'auditStatus',
-    key: 'auditStatus',
-    slots: { customRender: 'audit' },
-  },
-  {
-    title: '审核原因',
-    dataIndex: 'remark',
-    key: 'remark',
-  },
-  {
-    title: '操作',
-    key: 'operation',
-    fixed: 'right',
-    width: 250,
-    slots: { customRender: 'action' },
-    align: 'center',
-  },
-];
+    {
+      title: '审核状态',
+      dataIndex: 'auditStatus',
+      key: 'auditStatus',
+      slots: { customRender: 'audit' },
+    },
+    {
+      title: '审核原因',
+      dataIndex: 'remark',
+      key: 'remark',
+    },
+    {
+      title: '操作',
+      key: 'operation',
+      fixed: 'right',
+      width: 250,
+      slots: { customRender: 'action' },
+      align: 'center',
+    },
+  ];
 
-const show = ref(false);
-const pageSize = ref<Number>(10);
-const current = ref<number>(1);
-let total = ref();
+  const show = ref(false);
+  const pageSize = ref<Number>(10);
+  const current = ref<number>(1);
+  let total = ref();
 
-const bulkShelves = (scope) => {
-  packagebook
-    .releaseBook({ id: scope.id })
-    .then((res) => {
-      if (res.data && res.data.code === 200) {
-        message.info('操作成功');
-      } else {
-        message.info(res.data.message);
-      }
-      // current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    })
-    .catch((err) => {
-      message.info(err.data.message);
-      // current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    });
-};
-const backBook = (scope) => {
-  packagebook
-    .backBook({ id: scope.id })
-    .then((res) => {
-      if (res.data && res.data.code === 200) {
-        message.info('操作成功');
-      } else {
-        message.info(res.data.message);
+  const bulkShelves = (scope) => {
+    packagebook
+      .releaseBook({ id: scope.id })
+      .then((res) => {
+        if (res.data && res.data.code === 200) {
+          message.info('操作成功');
+        } else {
+          message.info(res.data.message);
+        }
+        // current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      })
+      .catch((err) => {
+        message.info(err.data.message);
+        // current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      });
+  };
+  const backBook = (scope) => {
+    packagebook
+      .backBook({ id: scope.id })
+      .then((res) => {
+        if (res.data && res.data.code === 200) {
+          message.info('操作成功');
+        } else {
+          message.info(res.data.message);
+        }
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      })
+      .catch((err) => {
+        message.info(err.data.message);
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      });
+  };
+  const deleteRecord = (scope) => {
+    batchDelete([scope.id]);
+  };
+  const isShowType = ref<boolean>(false);
+  const subType = ref([]);
+  const selectChange = (value) => {
+    if (!value) return (isShowType.value = false);
+    packagebook.listCategory({ pid: value }).then((res) => {
+      console.log(res, 'sdfsdf');
+      isShowType.value = true;
+      const { code, data } = res.data;
+      if (code === 200) {
+        subType.value = data;
       }
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    })
-    .catch((err) => {
-      message.info(err.data.message);
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
     });
-};
-const deleteRecord = (scope) => {
-  batchDelete([scope.id]);
-};
-const isShowType = ref<boolean>(false);
-const subType = ref([]);
-const selectChange = (value) => {
-  packagebook.listCategory({ type: value }).then((res) => {
-    console.log(res, 'sdfsdf');
-    isShowType.value = true;
-    const { code, data } = res.data;
-    if (code === 200) {
-      subType.value = data;
+  };
+  const batchUpperOrLower = (bookIdList, flag) => {
+    if (!bookIdList) {
+      message.info('请选择数据');
+      return;
     }
-  });
-};
-const batchUpperOrLower = (bookIdList, flag) => {
-  if (!bookIdList) {
-    message.info('请选择数据');
-    return;
-  }
-  let data = {
-    bookIdList: bookIdList,
-    flag: flag,
+    let data = {
+      bookIdList: bookIdList,
+      flag: flag,
+    };
+    packagebook
+      .batchUpperOrLower(data)
+      .then((res) => {
+        if (res.data && res.data.code === 200) {
+          message.info('操作成功');
+          selectedRowKeys.value = [];
+        } else {
+          message.info(res.data.message);
+          selectedRowKeys.value = [];
+        }
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      })
+      .catch((err) => {
+        message.info(err.data.message);
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      });
   };
-  packagebook
-    .batchUpperOrLower(data)
-    .then((res) => {
-      if (res.data && res.data.code === 200) {
-        message.info('操作成功');
-        selectedRowKeys.value = [];
-      } else {
-        message.info(res.data.message);
-        selectedRowKeys.value = [];
-      }
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    })
-    .catch((err) => {
-      message.info(err.data.message);
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    });
-};
 
-// 批量删除
-const batchDelete = (bookIdList) => {
-  if (!bookIdList) {
-    message.info('请选择数据');
-    return;
-  }
-  let params = {
-    bookIdList: bookIdList,
-    flag: null,
+  // 批量删除
+  const batchDelete = (bookIdList) => {
+    if (!bookIdList) {
+      message.info('请选择数据');
+      return;
+    }
+    let params = {
+      bookIdList: bookIdList,
+      flag: null,
+    };
+    packagebook
+      .deleteBatchBook(params)
+      .then((res) => {
+        if (res.data && res.data.code === 200) {
+          message.info('操作成功');
+          selectedRowKeys.value = [];
+        } else {
+          message.info(res.data.message);
+          selectedRowKeys.value = [];
+        }
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      })
+      .catch((err) => {
+        message.info(err.data.message);
+        current.value = 1;
+        pageSize.value = 10;
+        queryList();
+      });
   };
-  packagebook
-    .deleteBatchBook(params)
-    .then((res) => {
-      if (res.data && res.data.code === 200) {
-        message.info('操作成功');
-        selectedRowKeys.value = [];
-      } else {
-        message.info(res.data.message);
-        selectedRowKeys.value = [];
-      }
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    })
-    .catch((err) => {
-      message.info(err.data.message);
-      current.value = 1;
-      pageSize.value = 10;
-      queryList();
-    });
-};
-//新增,编辑
-const addAlert = ref();
-const auditAlert = ref();
-const typeObj = reactive({
-  typeList: [],
-});
+  //新增,编辑
+  const addAlert = ref();
+  const auditAlert = ref();
+  const typeObj = reactive({
+    typeList: [],
+  });
 
-const insertBook = () => {
-  addAlert.value.visible = true;
-  addAlert.value.title = '新增';
-  getBookTypeDropDown();
-};
-//关闭弹窗后刷新页面
-const getTab = () => {
-  // current.value = 1;
-  queryList();
-};
-const updateBook = (scope) => {
-  addAlert.value.title = '编辑';
-  getBookTypeDropDown();
-  alertBook
-    .getDetails({ bookId: scope.id })
-    .then(async (res) => {
-      let obj = res.data.data;
-      obj.id = scope.id;
-      addAlert.value.editAlert(obj);
-    })
-    .catch((err) => {
-      console.log(err);
-    });
-};
-const auditBook = (scope) => {
-  auditAlert.value.title = '审核';
-  getBookTypeDropDown();
-  alertBook
-    .getDetails({ bookId: scope.id })
-    .then(async (res) => {
-      let obj = res.data.data;
-      obj.id = scope.id;
-      auditAlert.value.editAlert(obj);
-    })
-    .catch((err) => {
-      console.log(err);
-    });
-};
-// 表格选择
+  const insertBook = () => {
+    addAlert.value.visible = true;
+    addAlert.value.title = '新增';
+    getBookTypeDropDown();
+  };
+  //关闭弹窗后刷新页面
+  const getTab = () => {
+    // current.value = 1;
+    queryList();
+  };
+  const updateBook = (scope) => {
+    addAlert.value.title = '编辑';
+    getBookTypeDropDown();
+    alertBook
+      .getDetails({ bookId: scope.id })
+      .then(async (res) => {
+        let obj = res.data.data;
+        obj.id = scope.id;
+        addAlert.value.editAlert(obj);
+      })
+      .catch((err) => {
+        console.log(err);
+      });
+  };
+  const auditBook = (scope) => {
+    auditAlert.value.title = '审核';
+    getBookTypeDropDown();
+    alertBook
+      .getDetails({ bookId: scope.id })
+      .then(async (res) => {
+        let obj = res.data.data;
+        obj.id = scope.id;
+        auditAlert.value.editAlert(obj);
+      })
+      .catch((err) => {
+        console.log(err);
+      });
+  };
+  // 表格选择
 
-const selectedRowKeys = ref();
-const onChange = (item, selectedRows) => {
-  selectedRowKeys.value = item;
-};
+  const selectedRowKeys = ref();
+  const onChange = (item, selectedRows) => {
+    selectedRowKeys.value = item;
+  };
 
-// 分页
-const sizeChange = (page, size) => {
-  pageSize.value = size;
-  queryList();
-};
-const cuerrchange = (page) => {
-  current.value = page;
-  queryList();
-};
-const isRead = (file) => {
-  if (file) {
-    // var index = file.lastIndexOf('.');
-    // //获取后缀
-    // var ext = file.substr(index + 1);
-    // console.log(ext);
-    if (file == 'pdf' || file == 'PDF') {
-      return '立即阅读';
+  // 分页
+  const sizeChange = (page, size) => {
+    pageSize.value = size;
+    queryList();
+  };
+  const cuerrchange = (page) => {
+    current.value = page;
+    queryList();
+  };
+  const isRead = (file) => {
+    if (file) {
+      // var index = file.lastIndexOf('.');
+      // //获取后缀
+      // var ext = file.substr(index + 1);
+      // console.log(ext);
+      if (file == 'pdf' || file == 'PDF') {
+        return '立即阅读';
+      } else {
+        return '立即下载';
+      }
     } else {
       return '立即下载';
     }
-  } else {
-    return '立即下载';
-  }
-};
-
-const readPdf = (file) => {
-  window.open(file);
-  console.log(file)
-};
-// 分页查询参数
-const queryList = () => {
-  let createBeginTime = formState.dateRange.length
-    ? formState.dateRange[0].format('YYYY-MM-DD')
-    : null;
-  let createEndTime = formState.dateRange.length
-    ? formState.dateRange[1].format('YYYY-MM-DD')
-    : null;
-  let data = {
-    name: formState.name,
-    type: formState.type,
-    author: formState.author,
-    status: formState.status,
-    createBeginTime: createBeginTime,
-    createEndTime: createEndTime,
-    fileType: formState.fileType,
   };
-  let params = {
-    pageNum: current.value,
-    pageSize: pageSize.value,
+
+  const readPdf = (file) => {
+    window.open(file);
+    console.log(file);
   };
+  // 分页查询参数
+  const queryList = () => {
+    let createBeginTime = formState.dateRange.length
+      ? formState.dateRange[0].format('YYYY-MM-DD')
+      : null;
+    let createEndTime = formState.dateRange.length
+      ? formState.dateRange[1].format('YYYY-MM-DD')
+      : null;
+    let data = {
+      name: formState.name,
+      currentCateIdList: formState.subType
+        ? [formState.subType]
+        : formState.type
+        ? [formState.type]
+        : [],
+      author: formState.author,
+      status: formState.status,
+      createBeginTime: createBeginTime,
+      createEndTime: createEndTime,
+      fileType: formState.fileType,
+    };
+    let params = {
+      pageNum: current.value,
+      pageSize: pageSize.value,
+    };
 
-  packagebook
-    .queryPackage(data, params)
-    .then((res) => {
-      let data = res.data.data;
-      dataSource.value = data.records;
-      total.value = data.total;
-    })
-    .catch((err) => {
-      console.log(err);
-    });
-};
+    packagebook
+      .queryPackage(data, params)
+      .then((res) => {
+        let data = res.data.data;
+        dataSource.value = data.records;
+        total.value = data.total;
+      })
+      .catch((err) => {
+        console.log(err);
+      });
+  };
 
-// 状态
-const getBookStatusDropDown = () => {
-  packagebook
-    .getBookStatusDropDown()
-    .then((res) => {
-      statusOptions.value = res.data.data;
-    })
-    .catch((err) => {
-      console.log(err);
-    });
-};
+  // 状态
+  const getBookStatusDropDown = () => {
+    packagebook
+      .getBookStatusDropDown()
+      .then((res) => {
+        statusOptions.value = res.data.data;
+      })
+      .catch((err) => {
+        console.log(err);
+      });
+  };
 
-// 类型
-const getBookTypeDropDown = () => {
-  // packagebook
-  //   .getBookTypeDropDown()
-  //   .then((res) => {
-  //     typeOptions.value = res.data.data;
-  //     typeObj.typeList = res.data.data.map((i) => {
-  //       return {
-  //         value: i.code,
-  //         label: i.name,
-  //       };
-  //     });
-  //   })
-  //   .catch((err) => {
-  //     console.log(err);
-  //   });
-};
+  // 类型
+  const getBookTypeDropDown = () => {
+    packagebook
+      .listTopCategory()
+      .then((res) => {
+        typeOptions.value = res.data.data;
+        typeObj.typeList = res.data.data.map((i) => {
+          return {
+            value: i.id,
+            label: i.name,
+          };
+        });
+      })
+      .catch((err) => {
+        console.log(err);
+      });
+  };
 
-onMounted(() => {
-  getBookStatusDropDown();
-  getBookTypeDropDown();
-  queryList();
-});
+  onMounted(() => {
+    getBookStatusDropDown();
+    getBookTypeDropDown();
+    queryList();
+  });
 </script>
 
-<style lang="less" scoped >
-.content {
-  margin: 10px 20px;
-}
-.top {
-  margin: 20px 0px 0px 20px;
-}
-.ant-form-item {
-  margin-right: 50px;
-  margin-bottom: 20px;
-}
-.ant-btn-link {
-  padding: 0;
-}
-.options {
-  margin-top: 20px;
-  margin-left: 20px;
-  .ant-btn {
-    margin-right: 5px;
-    border-radius: 4px;
+<style lang="less" scoped>
+  .content {
+    margin: 10px 20px;
+  }
+  .top {
+    margin: 20px 0px 0px 20px;
+  }
+  .ant-form-item {
+    margin-right: 50px;
+    margin-bottom: 20px;
+  }
+  .ant-btn-link {
+    padding: 0;
+  }
+  .options {
+    margin-top: 20px;
+    margin-left: 20px;
+    .ant-btn {
+      margin-right: 5px;
+      border-radius: 4px;
+    }
+  }
+  .list_table {
+    margin-top: 20px;
+    margin-left: 20px;
+    width: 1200px;
+  }
+  .ant-pagination {
+    text-align: center;
+    margin-top: 20px;
+  }
+  .read_txt {
+    cursor: pointer;
+    color: #1890ff;
+    font-weight: 400;
+    line-height: 40px;
+    text-align: center;
   }
-}
-.list_table {
-  margin-top: 20px;
-  margin-left: 20px;
-  width: 1200px;
-}
-.ant-pagination {
-  text-align: center;
-  margin-top: 20px;
-}
-.read_txt {
-  cursor: pointer;
-  color: #1890ff;
-  font-weight: 400;
-  line-height: 40px;
-  text-align: center;
-}
 </style>