|  | @@ -0,0 +1,233 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div>
 | 
	
		
			
				|  |  | +    <vxe-toolbar perfect>
 | 
	
		
			
				|  |  | +      <template v-slot:buttons>
 | 
	
		
			
				|  |  | +        <vxe-button icon="el-icon-delete" status="perfect" @click="deleteData">删除</vxe-button>
 | 
	
		
			
				|  |  | +        <vxe-button icon="el-icon-position" status="perfect" @click="updateData">编辑</vxe-button>
 | 
	
		
			
				|  |  | +        <vxe-button icon="el-icon-plus" status="perfect" @click="addData">新增</vxe-button>
 | 
	
		
			
				|  |  | +      </template>
 | 
	
		
			
				|  |  | +    </vxe-toolbar>
 | 
	
		
			
				|  |  | +    <vxe-table
 | 
	
		
			
				|  |  | +      border
 | 
	
		
			
				|  |  | +      show-overflow
 | 
	
		
			
				|  |  | +      row-id="id"
 | 
	
		
			
				|  |  | +      size="medium"
 | 
	
		
			
				|  |  | +      :data="tableData"
 | 
	
		
			
				|  |  | +      @radio-change="radioChangeEvent"
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <vxe-table-column type="radio" width="60" />
 | 
	
		
			
				|  |  | +      <vxe-table-column type="seq" field="序号" width="60" />
 | 
	
		
			
				|  |  | +      <vxe-table-column field="name" title="书名" />
 | 
	
		
			
				|  |  | +      <vxe-table-column field="ISBN" title="编码" />
 | 
	
		
			
				|  |  | +      <vxe-table-column field="type" title="类型"></vxe-table-column>
 | 
	
		
			
				|  |  | +      <vxe-table-column field="author" title="作者">
 | 
	
		
			
				|  |  | +        <template v-slot="{row}">
 | 
	
		
			
				|  |  | +          <el-tag v-for="author in row.author" :key="author.id">{{author.author__name}}</el-tag>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </vxe-table-column>
 | 
	
		
			
				|  |  | +      <vxe-table-column field="price" title="价格" />
 | 
	
		
			
				|  |  | +      <vxe-table-column field="release_time" title="出版日期" />
 | 
	
		
			
				|  |  | +    </vxe-table>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <vxe-modal
 | 
	
		
			
				|  |  | +      v-model="modelVisi"
 | 
	
		
			
				|  |  | +      width="600"
 | 
	
		
			
				|  |  | +      :title="modelTitle"
 | 
	
		
			
				|  |  | +      show-footer
 | 
	
		
			
				|  |  | +      @close="close"
 | 
	
		
			
				|  |  | +      resize
 | 
	
		
			
				|  |  | +      @confirm="submitEvent"
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <vxe-form ref="xForm" title-align="right" title-width="100" :data="formData">
 | 
	
		
			
				|  |  | +        <vxe-form-item title="书名" field="name" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot="scope">
 | 
	
		
			
				|  |  | +            <vxe-input
 | 
	
		
			
				|  |  | +              v-model="formData.name"
 | 
	
		
			
				|  |  | +              placeholder="请输入书名"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              @input="$refs.xForm.updateStatus(scope)"
 | 
	
		
			
				|  |  | +            ></vxe-input>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +        <vxe-form-item title="ISBN" field="ISBN" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot="scope">
 | 
	
		
			
				|  |  | +            <vxe-input
 | 
	
		
			
				|  |  | +              v-model="formData.ISBN"
 | 
	
		
			
				|  |  | +              placeholder="请输入ISBN"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              @input="$refs.xForm.updateStatus(scope)"
 | 
	
		
			
				|  |  | +            ></vxe-input>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +        <vxe-form-item title="类型" field="type" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot>
 | 
	
		
			
				|  |  | +            <vxe-select v-model="formData.type" clearable>
 | 
	
		
			
				|  |  | +              <vxe-option v-for="t in types" :key="t.id" :value="t.id" :label="t.name"></vxe-option>
 | 
	
		
			
				|  |  | +            </vxe-select>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +        <vxe-form-item title="作者" field="type" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot>
 | 
	
		
			
				|  |  | +            <vxe-select v-model="formData.author" multiple clearable>
 | 
	
		
			
				|  |  | +              <vxe-option
 | 
	
		
			
				|  |  | +                v-for="user in authors"
 | 
	
		
			
				|  |  | +                :key="user.id"
 | 
	
		
			
				|  |  | +                :value="user.id"
 | 
	
		
			
				|  |  | +                :label="user.name"
 | 
	
		
			
				|  |  | +              ></vxe-option>
 | 
	
		
			
				|  |  | +            </vxe-select>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +        <vxe-form-item title="价格" field="type" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot>
 | 
	
		
			
				|  |  | +            <vxe-input v-model="formData.price" placeholder="请输入价格" type="number"></vxe-input>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +        <vxe-form-item title="出版日期" field="type" span="24">
 | 
	
		
			
				|  |  | +          <template v-slot>
 | 
	
		
			
				|  |  | +            <vxe-input v-model="formData.release_time" placeholder="日期类型" type="date" />
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </vxe-form-item>
 | 
	
		
			
				|  |  | +      </vxe-form>
 | 
	
		
			
				|  |  | +    </vxe-modal>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- <vxe-pager
 | 
	
		
			
				|  |  | +      border
 | 
	
		
			
				|  |  | +      size="medium"
 | 
	
		
			
				|  |  | +      :loading="loading2"
 | 
	
		
			
				|  |  | +      :current-page="tablePage2.currentPage"
 | 
	
		
			
				|  |  | +      :page-size="tablePage2.pageSize"
 | 
	
		
			
				|  |  | +      :total="tablePage2.totalResult"
 | 
	
		
			
				|  |  | +      :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
 | 
	
		
			
				|  |  | +      @page-change="handlePageChange2"
 | 
	
		
			
				|  |  | +    ></vxe-pager>-->
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  getBook,
 | 
	
		
			
				|  |  | +  postBook,
 | 
	
		
			
				|  |  | +  getAuthor,
 | 
	
		
			
				|  |  | +  deleteBook,
 | 
	
		
			
				|  |  | +  putBook,
 | 
	
		
			
				|  |  | +  getType,
 | 
	
		
			
				|  |  | +} from "@/api/book";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "book-c",
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      tableData: [],
 | 
	
		
			
				|  |  | +      radioId: null,
 | 
	
		
			
				|  |  | +      modelVisi: false,
 | 
	
		
			
				|  |  | +      modelTitle: "",
 | 
	
		
			
				|  |  | +      formData: {
 | 
	
		
			
				|  |  | +        ISBN: "",
 | 
	
		
			
				|  |  | +        author: [],
 | 
	
		
			
				|  |  | +        name: "",
 | 
	
		
			
				|  |  | +        price: 0,
 | 
	
		
			
				|  |  | +        release_time: "",
 | 
	
		
			
				|  |  | +        type: [],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      authors: [],
 | 
	
		
			
				|  |  | +      types: [],
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  components: {},
 | 
	
		
			
				|  |  | +  created() {
 | 
	
		
			
				|  |  | +    this.init();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    init() {
 | 
	
		
			
				|  |  | +      this.getBookDate();
 | 
	
		
			
				|  |  | +      getAuthor().then((res) => {
 | 
	
		
			
				|  |  | +        console.log("获取作者信息");
 | 
	
		
			
				|  |  | +        console.log(res.data);
 | 
	
		
			
				|  |  | +        if (res.data.length > 0) {
 | 
	
		
			
				|  |  | +          console.log("getAuthor");
 | 
	
		
			
				|  |  | +          console.log(res.data);
 | 
	
		
			
				|  |  | +          this.authors = res.data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      getType().then((res) => {
 | 
	
		
			
				|  |  | +        this.types = res.data;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getBookDate() {
 | 
	
		
			
				|  |  | +      getBook(null).then((res) => {
 | 
	
		
			
				|  |  | +        console.log(res.data);
 | 
	
		
			
				|  |  | +        if (res.data.length > 0) {
 | 
	
		
			
				|  |  | +          console.log("getBook");
 | 
	
		
			
				|  |  | +          console.log(res.data);
 | 
	
		
			
				|  |  | +          this.tableData = res.data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    radioChangeEvent(row) {
 | 
	
		
			
				|  |  | +      console.log("单击事件");
 | 
	
		
			
				|  |  | +      console.log(row.rowid);
 | 
	
		
			
				|  |  | +      this.radioId = row.rowid;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    addData() {
 | 
	
		
			
				|  |  | +      console.log("新增按钮");
 | 
	
		
			
				|  |  | +      this.modelVisi = true;
 | 
	
		
			
				|  |  | +      this.modelTitle = "新增";
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    submitEvent() {
 | 
	
		
			
				|  |  | +      console.log("模态框的按钮");
 | 
	
		
			
				|  |  | +      console.log(this.formData);
 | 
	
		
			
				|  |  | +      if (this.radioId == null) {
 | 
	
		
			
				|  |  | +        postBook(this.formData).then((res) => {
 | 
	
		
			
				|  |  | +          if (res.status === 200) {
 | 
	
		
			
				|  |  | +            this.$message.success("新增图书成功");
 | 
	
		
			
				|  |  | +            this.getBookDate();
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        putBook(this.radioId, this.formData).then((res) => {
 | 
	
		
			
				|  |  | +          if (res.status === 200) {
 | 
	
		
			
				|  |  | +            this.getBookDate();
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.close();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    deleteData() {
 | 
	
		
			
				|  |  | +      deleteBook(this.radioId).then((res) => {
 | 
	
		
			
				|  |  | +        if (res.status === 204) {
 | 
	
		
			
				|  |  | +          this.$message.success("删除图书成功");
 | 
	
		
			
				|  |  | +          this.getBookDate();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    updateData() {
 | 
	
		
			
				|  |  | +      getBook(this.radioId).then((res) => {
 | 
	
		
			
				|  |  | +        if (res.status === 200) {
 | 
	
		
			
				|  |  | +          this.modelVisi = true;
 | 
	
		
			
				|  |  | +          console.log("获取一个图书信息");
 | 
	
		
			
				|  |  | +          console.log(res);
 | 
	
		
			
				|  |  | +          let au = [];
 | 
	
		
			
				|  |  | +          for (let v of res.data.author) {
 | 
	
		
			
				|  |  | +            au.push(v.author_id);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          res.data.author = au;
 | 
	
		
			
				|  |  | +          this.formData = res.data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    close() {
 | 
	
		
			
				|  |  | +      console.log("关闭");
 | 
	
		
			
				|  |  | +      this.radioId = null;
 | 
	
		
			
				|  |  | +      this.formData = {
 | 
	
		
			
				|  |  | +        ISBN: "",
 | 
	
		
			
				|  |  | +        author: [],
 | 
	
		
			
				|  |  | +        name: "",
 | 
	
		
			
				|  |  | +        price: 0,
 | 
	
		
			
				|  |  | +        release_time: "",
 | 
	
		
			
				|  |  | +        type: 1,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 |