insert 完成厨神标签后台页面及接口对接(增删改查)
New file |
| | |
| | | import service from "@/libs/axios"; |
| | | |
| | | // 神厨分页 |
| | | export const getKitchenType = (data) => { |
| | | return service({ |
| | | url: "/lmk/kitchen-type/page", |
| | | method: "GET", |
| | | params: data |
| | | }) |
| | | } |
| | | // 添加神厨标签 |
| | | export const addKitchenType = (data) => { |
| | | return service({ |
| | | url: "/lmk/kitchen-type", |
| | | method: "POST", |
| | | data: data |
| | | }) |
| | | } |
| | | // 添加神厨标签 |
| | | export const editKitchenType = (data) => { |
| | | return service({ |
| | | url: "/lmk/kitchen-type", |
| | | method: "PUT", |
| | | data: data |
| | | }) |
| | | } |
| | | // 删除神厨标签 |
| | | export const delKitchenType = (id) => { |
| | | return service({ |
| | | url: "/lmk/kitchen-type/"+id, |
| | | method: "DELETE", |
| | | }) |
| | | } |
| | | // 批量删除神厨标签 |
| | | export const deleteBatch = (data) => { |
| | | return service({ |
| | | url: "/lmk/kitchen-type/batch", |
| | | method: "DELETE", |
| | | data: data |
| | | }) |
| | | } |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <Card> |
| | | <Form |
| | | ref="searchForm" |
| | | @keydown.enter.native="handleSearch" |
| | | :model="searchForm" |
| | | inline |
| | | :label-width="70" |
| | | class="search-form" |
| | | > |
| | | <Form-item label="标签名称" prop="typeName"> |
| | | <Input |
| | | type="text" |
| | | v-model="searchForm.typeName" |
| | | clearable |
| | | @on-clear="handleSearch" |
| | | @on-change="handleSearch" |
| | | style="width: 160px" |
| | | /> |
| | | </Form-item> |
| | | <Button |
| | | @click="handleSearch" |
| | | type="primary" |
| | | icon="ios-search" |
| | | class="search-btn" |
| | | >搜索</Button |
| | | > |
| | | </Form> |
| | | |
| | | <Row class="operation padding-row"> |
| | | <Button @click="openAdd" type="info">添加</Button> |
| | | <Button @click="delBatch" type="error">批量删除</Button> |
| | | </Row> |
| | | |
| | | <Modal |
| | | v-model="modelShow" |
| | | :title="modelTitle" |
| | | > |
| | | <Form ref="form" :model="form" :label-width="70" :rules="rules"> |
| | | <Row :gutter="24"> |
| | | <Col span="12"> |
| | | <FormItem label="标签名称" prop="typeName"> |
| | | <Input v-model="form.typeName" autocomplete="off"/> |
| | | </FormItem> |
| | | </Col> |
| | | <Col span="12"> |
| | | <FormItem label="排序" prop="sortNum"> |
| | | <Input v-model="form.sortNum" autocomplete="off"/> |
| | | </FormItem> |
| | | </Col> |
| | | </Row> |
| | | </Form> |
| | | <div slot="footer"> |
| | | <Button type="text" @click="modelClose">取消</Button> |
| | | <Button type="primary" :loading="submitLoading" @click="saveOrUpdate">提交</Button> |
| | | </div> |
| | | </Modal> |
| | | |
| | | <Table |
| | | :loading="loading" |
| | | border |
| | | :columns="columns" |
| | | :data="data" |
| | | ref="table" |
| | | sortable="custom" |
| | | @on-sort-change="changeSort" |
| | | @on-selection-change="showSelect" |
| | | > |
| | | <template slot-scope="{ row, index }" slot="action"> |
| | | <Button type="info" size="small" style="margin-right: 5px" @click="openEdit(row)">编辑</Button> |
| | | <Button type="error" size="small" @click="delById(row)">删除</Button> |
| | | </template> |
| | | </Table> |
| | | |
| | | <Row type="flex" justify="end" class="mt_10"> |
| | | <Page |
| | | :current="searchForm.pageNumber" |
| | | :total="total" |
| | | :page-size="searchForm.pageSize" |
| | | @on-change="changePage" |
| | | @on-page-size-change="changePageSize" |
| | | :page-size-opts="[10, 20, 50]" |
| | | size="small" |
| | | show-total |
| | | show-elevator |
| | | show-sizer |
| | | ></Page> |
| | | </Row> |
| | | </Card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import JsonExcel from "vue-json-excel"; |
| | | import {deleteVideoTagById, getVideoTags, editVideoTag, addVideoTag, deleteVideoTagByIds} from "@/api/videoTag"; |
| | | import {addKitchenType, deleteBatch, delKitchenType, editKitchenType, getKitchenType} from "@/api/kitchen"; |
| | | export default { |
| | | name: "VideoTagList", |
| | | components: { |
| | | "download-excel": JsonExcel, |
| | | }, |
| | | data() { |
| | | return { |
| | | // 保存加载 |
| | | submitLoading: false, |
| | | // 新增修改表单 |
| | | form: { |
| | | id: '', |
| | | typeName: '', |
| | | sortNum: '', |
| | | }, |
| | | rules: { |
| | | typeName: [ |
| | | {required: true, message: "标签名称不能为空", trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value === null || value === '') { |
| | | callback(new Error('标签名称不能为空')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | } |
| | | ], |
| | | sortNum : [ |
| | | {required: true, message: "序号不能为空", trigger: "blur", |
| | | validator: (rule, value, callback) => { |
| | | if (value === null || value === '') { |
| | | callback(new Error('序号不能为空')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }} |
| | | ], |
| | | }, |
| | | modelShow: false, // 弹窗显隐 |
| | | modelTitle: '', // 弹窗title |
| | | // 表格的表头以及内容 |
| | | fields: { |
| | | 类型: "tagName", |
| | | 引用次数: "useNum", |
| | | 排序: "sort_num", |
| | | 操作: "action" |
| | | }, |
| | | loading: true, // 表单加载状态 |
| | | searchForm: { |
| | | // 搜索框初始化对象 |
| | | pageNumber: 1, // 当前页数 |
| | | pageSize: 10, // 页面大小 |
| | | typeName: '', // 标签名称 |
| | | }, |
| | | selectDate: null, |
| | | columns: [ |
| | | { |
| | | type: 'selection', |
| | | width: 60, |
| | | align: 'center' |
| | | }, |
| | | { |
| | | title: "标签", |
| | | key: "typeName", |
| | | minWidth: 170, |
| | | tooltip: true, |
| | | }, |
| | | // { |
| | | // title: "引用次数", |
| | | // key: "useNum", |
| | | // width: 170, |
| | | // sortable: true |
| | | // }, |
| | | { |
| | | title: "排序", |
| | | key: "sortNum", |
| | | width: 400, |
| | | }, |
| | | { |
| | | title: "操作", |
| | | key: "action", |
| | | slot: "action", |
| | | align: "center", |
| | | width: 400, |
| | | }, |
| | | ], |
| | | data: [], // 表单数据 |
| | | total: 0, // 表单数据总数 |
| | | selectCount: 0, // 已选数量 |
| | | selectList: [], // 已选数据列表 |
| | | }; |
| | | }, |
| | | methods: { |
| | | showSelect(e) { |
| | | this.selectList = e.map(d => d.id); |
| | | this.selectCount = e.length; |
| | | }, |
| | | // 排序 |
| | | changeSort(e) { |
| | | this.searchForm.sort = e.key; |
| | | this.searchForm.order = e.order; |
| | | if (e.order == "normal") { |
| | | this.searchForm.order = ""; |
| | | } |
| | | this.getDataList(); |
| | | }, |
| | | // 批量删除 |
| | | delBatch() { |
| | | if (this.selectCount <= 0) { |
| | | this.$Message.warning("您还未选择要删除的数据"); |
| | | return; |
| | | } |
| | | this.$Modal.confirm({ |
| | | title: "确认删除", |
| | | content: "您确认要删除所选的 " + this.selectCount + " 条数据?", |
| | | loading: true, |
| | | onOk: () => { |
| | | deleteBatch(this.selectList).then(res => { |
| | | this.$Modal.remove(); |
| | | if (res.code == 200) { |
| | | this.$Message.success("删除成功"); |
| | | this.selectList = []; |
| | | this.selectCount = 0; |
| | | this.getDataList(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // id删除 |
| | | delById(row) { |
| | | this.$Modal.confirm({ |
| | | title: "确认删除", |
| | | content: "您确认要删除标签: " + row.typeName + " ?", |
| | | loading: true, |
| | | onOk: () => { |
| | | delKitchenType(row.id).then(res => { |
| | | this.$Modal.remove(); |
| | | if (res.code == 200) { |
| | | this.$Message.success("删除成功"); |
| | | this.getDataList(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 打开新增 |
| | | openAdd() { |
| | | this.modelTitle = "新增标签" |
| | | this.modelShow = true |
| | | this.form ={} |
| | | }, |
| | | // 打开修改 |
| | | openEdit(row) { |
| | | this.modelTitle = "修改标签" |
| | | this.form = {}; |
| | | this.form.id = row.id |
| | | this.form.typeName = row.typeName |
| | | this.form.sortNum = row.sortNum |
| | | this.modelShow = true |
| | | console.log(this.form) |
| | | }, |
| | | // 新增或修改 |
| | | saveOrUpdate() { |
| | | this.$refs.form.validate(valid => { |
| | | try { |
| | | if (valid) { |
| | | this.submitLoading = true |
| | | if (this.form.id) { |
| | | // 修改 |
| | | editKitchenType(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$Message.success("修改成功"); |
| | | this.modelClose() |
| | | this.getDataList() |
| | | } |
| | | }) |
| | | } else { |
| | | // 新增 |
| | | addKitchenType(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$Message.success("添加成功"); |
| | | this.modelClose() |
| | | this.getDataList() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }finally { |
| | | this.submitLoading = false |
| | | } |
| | | }); |
| | | }, |
| | | // 关闭弹窗 |
| | | modelClose() { |
| | | this.submitLoading = false |
| | | this.modelShow = false |
| | | }, |
| | | // 初始化数据 |
| | | init() { |
| | | this.getDataList(); |
| | | }, |
| | | // 分页 改变页码 |
| | | changePage(v) { |
| | | this.searchForm.pageNumber = v; |
| | | this.getDataList(); |
| | | }, |
| | | // 分页 改变页数 |
| | | changePageSize(v) { |
| | | this.searchForm.pageNumber = 1; |
| | | this.searchForm.pageSize = v; |
| | | this.getDataList(); |
| | | }, |
| | | // 搜索 |
| | | handleSearch() { |
| | | this.searchForm.pageNumber = 1; |
| | | this.searchForm.pageSize = 10; |
| | | this.getDataList(); |
| | | }, |
| | | // 起止时间从新赋值 |
| | | selectDateRange(v) { |
| | | if (v) { |
| | | this.searchForm.startDate = v[0]; |
| | | this.searchForm.endDate = v[1]; |
| | | } |
| | | }, |
| | | // 获取列表数据 |
| | | getDataList() { |
| | | this.loading = true; |
| | | getKitchenType(this.searchForm).then((res) => { |
| | | console.log(res) |
| | | this.loading = false; |
| | | if (res.code == 200) { |
| | | this.data = res.data; |
| | | this.total = res.total; |
| | | } |
| | | }); |
| | | this.total = this.data.length; |
| | | this.loading = false; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .export { |
| | | margin: 10px 20px 10px 0; |
| | | } |
| | | .export-excel-wrapper { |
| | | display: inline; |
| | | } |
| | | .order-tab { |
| | | width: 950px; |
| | | height: 36px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | background-color: #f0f0f0; |
| | | padding: 0 10px; |
| | | margin-bottom: 10px; |
| | | div { |
| | | text-align: center; |
| | | padding: 4px 12px; |
| | | border-radius: 4px; |
| | | cursor: pointer; |
| | | } |
| | | .current { |
| | | background-color: #ffffff; |
| | | } |
| | | } |
| | | </style> |