@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点文章管理列表 | |||
export function listArticle(query) { | |||
return request({ | |||
url: '/system/article/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点文章管理详细 | |||
export function getArticle(id) { | |||
return request({ | |||
url: '/system/article/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点文章管理 | |||
export function addArticle(data) { | |||
return request({ | |||
url: '/system/article', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点文章管理 | |||
export function updateArticle(data) { | |||
return request({ | |||
url: '/system/article', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点文章管理 | |||
export function delArticle(id) { | |||
return request({ | |||
url: '/system/article/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点文章分类管理列表 | |||
export function listArticleCategory(query) { | |||
return request({ | |||
url: '/system/articleCategory/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点文章分类管理详细 | |||
export function getArticleCategory(id) { | |||
return request({ | |||
url: '/system/articleCategory/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点文章分类管理 | |||
export function addArticleCategory(data) { | |||
return request({ | |||
url: '/system/articleCategory', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点文章分类管理 | |||
export function updateArticleCategory(data) { | |||
return request({ | |||
url: '/system/articleCategory', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点文章分类管理 | |||
export function delArticleCategory(id) { | |||
return request({ | |||
url: '/system/articleCategory/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点banner管理列表 | |||
export function listBanner(query) { | |||
return request({ | |||
url: '/system/banner/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点banner管理详细 | |||
export function getBanner(id) { | |||
return request({ | |||
url: '/system/banner/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点banner管理 | |||
export function addBanner(data) { | |||
return request({ | |||
url: '/system/banner', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点banner管理 | |||
export function updateBanner(data) { | |||
return request({ | |||
url: '/system/banner', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点banner管理 | |||
export function delBanner(id) { | |||
return request({ | |||
url: '/system/banner/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点栏目管理列表 | |||
export function listColumn(query) { | |||
return request({ | |||
url: '/system/column/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点栏目管理详细 | |||
export function getColumn(id) { | |||
return request({ | |||
url: '/system/column/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点栏目管理 | |||
export function addColumn(data) { | |||
return request({ | |||
url: '/system/column', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点栏目管理 | |||
export function updateColumn(data) { | |||
return request({ | |||
url: '/system/column', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点栏目管理 | |||
export function delColumn(id) { | |||
return request({ | |||
url: '/system/column/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点产品管理列表 | |||
export function listProduct(query) { | |||
return request({ | |||
url: '/system/product/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点产品管理详细 | |||
export function getProduct(id) { | |||
return request({ | |||
url: '/system/product/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点产品管理 | |||
export function addProduct(data) { | |||
return request({ | |||
url: '/system/product', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点产品管理 | |||
export function updateProduct(data) { | |||
return request({ | |||
url: '/system/product', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点产品管理 | |||
export function delProduct(id) { | |||
return request({ | |||
url: '/system/product/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点产品分类管理列表 | |||
export function listProductCategory(query) { | |||
return request({ | |||
url: '/system/productCategory/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点产品分类管理详细 | |||
export function getProductCategory(id) { | |||
return request({ | |||
url: '/system/productCategory/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点产品分类管理 | |||
export function addProductCategory(data) { | |||
return request({ | |||
url: '/system/productCategory', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点产品分类管理 | |||
export function updateProductCategory(data) { | |||
return request({ | |||
url: '/system/productCategory', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点产品分类管理 | |||
export function delProductCategory(id) { | |||
return request({ | |||
url: '/system/productCategory/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点产品用途管理列表 | |||
export function listPurpose(query) { | |||
return request({ | |||
url: '/system/purpose/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点产品用途管理详细 | |||
export function getPurpose(id) { | |||
return request({ | |||
url: '/system/purpose/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点产品用途管理 | |||
export function addPurpose(data) { | |||
return request({ | |||
url: '/system/purpose', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点产品用途管理 | |||
export function updatePurpose(data) { | |||
return request({ | |||
url: '/system/purpose', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点产品用途管理 | |||
export function delPurpose(id) { | |||
return request({ | |||
url: '/system/purpose/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,44 @@ | |||
import request from '@/utils/request' | |||
// 查询站点信息列表 | |||
export function listWebsite(query) { | |||
return request({ | |||
url: '/system/website/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 查询站点信息详细 | |||
export function getWebsite(id) { | |||
return request({ | |||
url: '/system/website/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增站点信息 | |||
export function addWebsite(data) { | |||
return request({ | |||
url: '/system/website', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改站点信息 | |||
export function updateWebsite(data) { | |||
return request({ | |||
url: '/system/website', | |||
method: 'put', | |||
data: data | |||
}) | |||
} | |||
// 删除站点信息 | |||
export function delWebsite(id) { | |||
return request({ | |||
url: '/system/website/' + id, | |||
method: 'delete' | |||
}) | |||
} |
@@ -0,0 +1,450 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="文章标题" prop="title"> | |||
<el-input | |||
v-model="queryParams.title" | |||
placeholder="请输入文章标题" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="发布状态" prop="status"> | |||
<el-select v-model="queryParams.status" placeholder="请选择发布状态" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_status" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="是否启用" prop="isDisabled"> | |||
<el-select v-model="queryParams.isDisabled" placeholder="请选择是否启用" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:article:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="success" | |||
plain | |||
icon="el-icon-edit" | |||
size="mini" | |||
:disabled="single" | |||
@click="handleUpdate" | |||
v-hasPermi="['system:article:edit']" | |||
>修改</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="el-icon-delete" | |||
size="mini" | |||
:disabled="multiple" | |||
@click="handleDelete" | |||
v-hasPermi="['system:article:remove']" | |||
>删除</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="warning" | |||
plain | |||
icon="el-icon-download" | |||
size="mini" | |||
@click="handleExport" | |||
v-hasPermi="['system:article:export']" | |||
>导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table v-loading="loading" :data="articleList" @selection-change="handleSelectionChange"> | |||
<el-table-column type="selection" width="55" align="center" /> | |||
<el-table-column label="主键ID" align="center" prop="id" v-if="false"/> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="文章标题" align="center" prop="title" /> | |||
<el-table-column label="摘要" align="center" prop="excerpt" /> | |||
<el-table-column label="文章内容" align="center" prop="content" /> | |||
<el-table-column label="封面图" align="center" prop="cover" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.cover" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="外链地址" align="center" prop="blankLink" /> | |||
<el-table-column label="图集" align="center" prop="galleryList" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.galleryList" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="文章标签" align="center" prop="articleTag" /> | |||
<el-table-column label="SEO标题" align="center" prop="seoTitle" /> | |||
<el-table-column label="SEO关键词" align="center" prop="seoKeyword" /> | |||
<el-table-column label="SEO描述" align="center" prop="seoDescripetion" /> | |||
<el-table-column label="发布状态" align="center" prop="status"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_status" :value="scope.row.status"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="是否启用" align="center" prop="isDisabled"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_is_disabled" :value="scope.row.isDisabled"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="发布时间" align="center" prop="publishTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:article:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:article:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<pagination | |||
v-show="total>0" | |||
:total="total" | |||
:page.sync="queryParams.pageNum" | |||
:limit.sync="queryParams.pageSize" | |||
@pagination="getList" | |||
/> | |||
<!-- 添加或修改站点文章管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="栏目ID" prop="columnId"> | |||
<el-input v-model="form.columnId" placeholder="请输入栏目ID" /> | |||
</el-form-item> | |||
<el-form-item label="分类IDs" prop="categoryIds"> | |||
<el-input v-model="form.categoryIds" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="文章标题" prop="title"> | |||
<el-input v-model="form.title" placeholder="请输入文章标题" /> | |||
</el-form-item> | |||
<el-form-item label="摘要" prop="excerpt"> | |||
<el-input v-model="form.excerpt" placeholder="请输入摘要" /> | |||
</el-form-item> | |||
<el-form-item label="文章内容"> | |||
<editor v-model="form.content" :min-height="192"/> | |||
</el-form-item> | |||
<el-form-item label="封面图" prop="cover"> | |||
<image-upload v-model="form.cover"/> | |||
</el-form-item> | |||
<el-form-item label="外链地址" prop="blankLink"> | |||
<el-input v-model="form.blankLink" placeholder="请输入外链地址" /> | |||
</el-form-item> | |||
<el-form-item label="图集" prop="galleryList"> | |||
<image-upload v-model="form.galleryList"/> | |||
</el-form-item> | |||
<el-form-item label="文章标签" prop="articleTag"> | |||
<el-input v-model="form.articleTag" placeholder="请输入文章标签" /> | |||
</el-form-item> | |||
<el-form-item label="SEO标题" prop="seoTitle"> | |||
<el-input v-model="form.seoTitle" placeholder="请输入SEO标题" /> | |||
</el-form-item> | |||
<el-form-item label="SEO关键词" prop="seoKeyword"> | |||
<el-input v-model="form.seoKeyword" placeholder="请输入SEO关键词" /> | |||
</el-form-item> | |||
<el-form-item label="SEO描述" prop="seoDescripetion"> | |||
<el-input v-model="form.seoDescripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="发布状态" prop="status"> | |||
<el-select v-model="form.status" placeholder="请选择发布状态"> | |||
<el-option | |||
v-for="dict in dict.type.zs_status" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="是否启用" prop="isDisabled"> | |||
<el-select v-model="form.isDisabled" placeholder="请选择是否启用"> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="发布时间" prop="publishTime"> | |||
<el-date-picker clearable | |||
v-model="form.publishTime" | |||
type="datetime" | |||
value-format="yyyy-MM-dd HH:mm:ss" | |||
placeholder="请选择发布时间"> | |||
</el-date-picker> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listArticle, getArticle, delArticle, addArticle, updateArticle } from "@/api/system/article"; | |||
export default { | |||
name: "Article", | |||
dicts: ['zs_is_disabled', 'zs_status', 'zs_sys_language'], | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 选中数组 | |||
ids: [], | |||
// 非单个禁用 | |||
single: true, | |||
// 非多个禁用 | |||
multiple: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 站点文章管理表格数据 | |||
articleList: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNum: 1, | |||
pageSize: 10, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
title: undefined, | |||
status: undefined, | |||
isDisabled: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点文章管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listArticle(this.queryParams).then(response => { | |||
this.articleList = response.rows; | |||
this.total = response.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
websiteId: undefined, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
columnId: undefined, | |||
categoryIds: undefined, | |||
title: undefined, | |||
excerpt: undefined, | |||
content: undefined, | |||
cover: undefined, | |||
blankLink: undefined, | |||
galleryList: undefined, | |||
articleTag: undefined, | |||
seoTitle: undefined, | |||
seoKeyword: undefined, | |||
seoDescripetion: undefined, | |||
status: undefined, | |||
isDisabled: undefined, | |||
publishTime: undefined, | |||
createTime: undefined, | |||
updateTime: undefined, | |||
createBy: undefined, | |||
updateBy: undefined | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNum = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
// 多选框选中数据 | |||
handleSelectionChange(selection) { | |||
this.ids = selection.map(item => item.id) | |||
this.single = selection.length!==1 | |||
this.multiple = !selection.length | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加站点文章管理"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
const id = row.id || this.ids | |||
getArticle(id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点文章管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateArticle(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addArticle(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const ids = row.id || this.ids; | |||
this.$modal.confirm('是否确认删除站点文章管理编号为"' + ids + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delArticle(ids); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
this.download('system/article/export', { | |||
...this.queryParams | |||
}, `article_${new Date().getTime()}.xlsx`) | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,353 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="分类名称" prop="name"> | |||
<el-input | |||
v-model="queryParams.name" | |||
placeholder="请输入分类名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:articleCategory:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="info" | |||
plain | |||
icon="el-icon-sort" | |||
size="mini" | |||
@click="toggleExpandAll" | |||
>展开/折叠</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table | |||
v-if="refreshTable" | |||
v-loading="loading" | |||
:data="articleCategoryList" | |||
row-key="id" | |||
:default-expand-all="isExpandAll" | |||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" | |||
> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="分类层级" align="center" prop="level" /> | |||
<el-table-column label="分类名称" align="center" prop="name" /> | |||
<el-table-column label="分类描述" align="center" prop="descripetion" /> | |||
<el-table-column label="分类标签" align="center" prop="tag" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:articleCategory:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-plus" | |||
@click="handleAdd(scope.row)" | |||
v-hasPermi="['system:articleCategory:add']" | |||
>新增</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:articleCategory:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 添加或修改站点文章分类管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="父分类ID" prop="parentId"> | |||
<treeselect v-model="form.parentId" :options="articleCategoryOptions" :normalizer="normalizer" placeholder="请选择父分类ID" /> | |||
</el-form-item> | |||
<el-form-item label="分类层级" prop="level"> | |||
<el-input v-model="form.level" placeholder="请输入分类层级" /> | |||
</el-form-item> | |||
<el-form-item label="分类名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入分类名称" /> | |||
</el-form-item> | |||
<el-form-item label="分类描述" prop="descripetion"> | |||
<el-input v-model="form.descripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="分类标签" prop="tag"> | |||
<el-input v-model="form.tag" placeholder="请输入分类标签" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listArticleCategory, getArticleCategory, delArticleCategory, addArticleCategory, updateArticleCategory } from "@/api/system/articleCategory"; | |||
import Treeselect from "@riophae/vue-treeselect"; | |||
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | |||
export default { | |||
name: "ArticleCategory", | |||
dicts: ['zs_sys_language'], | |||
components: { | |||
Treeselect | |||
}, | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 站点文章分类管理表格数据 | |||
articleCategoryList: [], | |||
// 站点文章分类管理树选项 | |||
articleCategoryOptions: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 是否展开,默认全部展开 | |||
isExpandAll: true, | |||
// 重新渲染表格状态 | |||
refreshTable: true, | |||
// 查询参数 | |||
queryParams: { | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
websiteId: [ | |||
{ required: true, message: "网站ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点文章分类管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listArticleCategory(this.queryParams).then(response => { | |||
this.articleCategoryList = this.handleTree(response.data, "id", "parentId"); | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 转换站点文章分类管理数据结构 */ | |||
normalizer(node) { | |||
if (node.children && !node.children.length) { | |||
delete node.children; | |||
} | |||
return { | |||
id: node.id, | |||
label: node.name, | |||
children: node.children | |||
}; | |||
}, | |||
/** 查询站点文章分类管理下拉树结构 */ | |||
getTreeselect() { | |||
listArticleCategory().then(response => { | |||
this.articleCategoryOptions = []; | |||
const data = { id: 0, name: '顶级节点', children: [] }; | |||
data.children = this.handleTree(response.data, "id", "parentId"); | |||
this.articleCategoryOptions.push(data); | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
websiteId: null, | |||
websiteName: null, | |||
languageCode: null, | |||
parentId: null, | |||
level: null, | |||
name: null, | |||
descripetion: null, | |||
tag: null, | |||
createTime: null, | |||
updateTime: null, | |||
createBy: null, | |||
updateBy: null | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd(row) { | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null && row.id) { | |||
this.form.parentId = row.id; | |||
} else { | |||
this.form.parentId = 0; | |||
} | |||
this.open = true; | |||
this.title = "添加站点文章分类管理"; | |||
}, | |||
/** 展开/折叠操作 */ | |||
toggleExpandAll() { | |||
this.refreshTable = false; | |||
this.isExpandAll = !this.isExpandAll; | |||
this.$nextTick(() => { | |||
this.refreshTable = true; | |||
}); | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null) { | |||
this.form.parentId = row.id; | |||
} | |||
getArticleCategory(row.id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点文章分类管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateArticleCategory(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addArticleCategory(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
this.$modal.confirm('是否确认删除站点文章分类管理编号为"' + row.id + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delArticleCategory(row.id); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,418 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="标题" prop="title"> | |||
<el-input | |||
v-model="queryParams.title" | |||
placeholder="请输入标题" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="启用状态" prop="isDisabled"> | |||
<el-select v-model="queryParams.isDisabled" placeholder="请选择启用状态" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:banner:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="success" | |||
plain | |||
icon="el-icon-edit" | |||
size="mini" | |||
:disabled="single" | |||
@click="handleUpdate" | |||
v-hasPermi="['system:banner:edit']" | |||
>修改</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="el-icon-delete" | |||
size="mini" | |||
:disabled="multiple" | |||
@click="handleDelete" | |||
v-hasPermi="['system:banner:remove']" | |||
>删除</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="warning" | |||
plain | |||
icon="el-icon-download" | |||
size="mini" | |||
@click="handleExport" | |||
v-hasPermi="['system:banner:export']" | |||
>导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table v-loading="loading" :data="bannerList" @selection-change="handleSelectionChange"> | |||
<el-table-column type="selection" width="55" align="center" /> | |||
<el-table-column label="主键ID" align="center" prop="id" v-if="false"/> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="图片" align="center" prop="galleryList" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.galleryList" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="位置" align="center" prop="local"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_local" :value="scope.row.local"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="标题" align="center" prop="title" /> | |||
<el-table-column label="描述" align="center" prop="descripetion" /> | |||
<el-table-column label="链接URL" align="center" prop="hrefUrl" /> | |||
<el-table-column label="排序值" align="center" prop="sort" /> | |||
<el-table-column label="启用状态" align="center" prop="isDisabled"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_is_disabled" :value="scope.row.isDisabled"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="轮播类型" align="center" prop="isSider"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_is_sider" :value="scope.row.isSider"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="图片ALT文本" align="center" prop="altText" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:banner:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:banner:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<pagination | |||
v-show="total>0" | |||
:total="total" | |||
:page.sync="queryParams.pageNum" | |||
:limit.sync="queryParams.pageSize" | |||
@pagination="getList" | |||
/> | |||
<!-- 添加或修改站点banner管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="图片" prop="galleryList"> | |||
<image-upload v-model="form.galleryList"/> | |||
</el-form-item> | |||
<el-form-item label="位置" prop="local"> | |||
<el-select v-model="form.local" placeholder="请选择位置"> | |||
<el-option | |||
v-for="dict in dict.type.zs_local" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="标题" prop="title"> | |||
<el-input v-model="form.title" placeholder="请输入标题" /> | |||
</el-form-item> | |||
<el-form-item label="描述" prop="descripetion"> | |||
<el-input v-model="form.descripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="链接URL" prop="hrefUrl"> | |||
<el-input v-model="form.hrefUrl" placeholder="请输入链接URL" /> | |||
</el-form-item> | |||
<el-form-item label="排序值" prop="sort"> | |||
<el-input v-model="form.sort" placeholder="请输入排序值" /> | |||
</el-form-item> | |||
<el-form-item label="启用状态" prop="isDisabled"> | |||
<el-select v-model="form.isDisabled" placeholder="请选择启用状态"> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="parseInt(dict.value)" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="轮播类型" prop="isSider"> | |||
<el-select v-model="form.isSider" placeholder="请选择轮播类型"> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_sider" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="parseInt(dict.value)" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="图片ALT文本" prop="altText"> | |||
<el-input v-model="form.altText" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listBanner, getBanner, delBanner, addBanner, updateBanner } from "@/api/system/banner"; | |||
export default { | |||
name: "Banner", | |||
dicts: ['zs_is_disabled', 'zs_local', 'zs_is_sider', 'zs_sys_language'], | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 选中数组 | |||
ids: [], | |||
// 非单个禁用 | |||
single: true, | |||
// 非多个禁用 | |||
multiple: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 站点banner管理表格数据 | |||
bannerList: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNum: 1, | |||
pageSize: 10, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
title: undefined, | |||
isDisabled: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
websiteId: [ | |||
{ required: true, message: "网站ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点banner管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listBanner(this.queryParams).then(response => { | |||
this.bannerList = response.rows; | |||
this.total = response.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
websiteId: undefined, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
galleryList: undefined, | |||
local: undefined, | |||
title: undefined, | |||
descripetion: undefined, | |||
hrefUrl: undefined, | |||
sort: undefined, | |||
isDisabled: undefined, | |||
isSider: undefined, | |||
altText: undefined, | |||
createTime: undefined, | |||
updateTime: undefined, | |||
createBy: undefined, | |||
updateBy: undefined | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNum = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
// 多选框选中数据 | |||
handleSelectionChange(selection) { | |||
this.ids = selection.map(item => item.id) | |||
this.single = selection.length!==1 | |||
this.multiple = !selection.length | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加站点banner管理"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
const id = row.id || this.ids | |||
getBanner(id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点banner管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateBanner(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addBanner(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const ids = row.id || this.ids; | |||
this.$modal.confirm('是否确认删除站点banner管理编号为"' + ids + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delBanner(ids); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
this.download('system/banner/export', { | |||
...this.queryParams | |||
}, `banner_${new Date().getTime()}.xlsx`) | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,440 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="栏目名称" prop="name"> | |||
<el-input | |||
v-model="queryParams.name" | |||
placeholder="请输入栏目名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="发布状态" prop="status"> | |||
<el-select v-model="queryParams.status" placeholder="请选择发布状态" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_status" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:column:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="info" | |||
plain | |||
icon="el-icon-sort" | |||
size="mini" | |||
@click="toggleExpandAll" | |||
>展开/折叠</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table | |||
v-if="refreshTable" | |||
v-loading="loading" | |||
:data="columnList" | |||
row-key="id" | |||
:default-expand-all="isExpandAll" | |||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" | |||
> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="栏目名称" align="center" prop="name" /> | |||
<el-table-column label="栏目描述" align="center" prop="descripetion" /> | |||
<el-table-column label="栏目层级" align="center" prop="level" /> | |||
<el-table-column label="URL别名" align="center" prop="urlAlias" /> | |||
<el-table-column label="栏目类型" align="center" prop="columnType"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_column_type" :value="scope.row.columnType"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="单页内容" align="center" prop="columnSingleContent" /> | |||
<el-table-column label="导航显示" align="center" prop="navigationDisplay"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_navigation_display" :value="scope.row.navigationDisplay"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="导航排序" align="center" prop="navigationSort" /> | |||
<el-table-column label="外链地址" align="center" prop="blankLink" /> | |||
<el-table-column label="SEO标题" align="center" prop="seoTitle" /> | |||
<el-table-column label="SEO关键词" align="center" prop="seoKeyword" /> | |||
<el-table-column label="SEO描述" align="center" prop="seoDescripetion" /> | |||
<el-table-column label="模板ID" align="center" prop="templateId" /> | |||
<el-table-column label="发布状态" align="center" prop="status"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_status" :value="scope.row.status"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:column:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-plus" | |||
@click="handleAdd(scope.row)" | |||
v-hasPermi="['system:column:add']" | |||
>新增</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:column:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 添加或修改站点栏目管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="栏目名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入栏目名称" /> | |||
</el-form-item> | |||
<el-form-item label="栏目描述" prop="descripetion"> | |||
<el-input v-model="form.descripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="父栏目ID" prop="parentId"> | |||
<treeselect v-model="form.parentId" :options="columnOptions" :normalizer="normalizer" placeholder="请选择父栏目ID" /> | |||
</el-form-item> | |||
<el-form-item label="栏目层级" prop="level"> | |||
<el-input v-model="form.level" placeholder="请输入栏目层级" /> | |||
</el-form-item> | |||
<el-form-item label="URL别名" prop="urlAlias"> | |||
<el-input v-model="form.urlAlias" placeholder="请输入URL别名" /> | |||
</el-form-item> | |||
<el-form-item label="栏目类型" prop="columnType"> | |||
<el-select v-model="form.columnType" placeholder="请选择栏目类型"> | |||
<el-option | |||
v-for="dict in dict.type.zs_column_type" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="parseInt(dict.value)" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="单页内容"> | |||
<editor v-model="form.columnSingleContent" :min-height="192"/> | |||
</el-form-item> | |||
<el-form-item label="导航显示" prop="navigationDisplay"> | |||
<el-select v-model="form.navigationDisplay" placeholder="请选择导航显示"> | |||
<el-option | |||
v-for="dict in dict.type.zs_navigation_display" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="parseInt(dict.value)" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="导航排序" prop="navigationSort"> | |||
<el-input v-model="form.navigationSort" placeholder="请输入导航排序" /> | |||
</el-form-item> | |||
<el-form-item label="外链地址" prop="blankLink"> | |||
<el-input v-model="form.blankLink" placeholder="请输入外链地址" /> | |||
</el-form-item> | |||
<el-form-item label="SEO标题" prop="seoTitle"> | |||
<el-input v-model="form.seoTitle" placeholder="请输入SEO标题" /> | |||
</el-form-item> | |||
<el-form-item label="SEO关键词" prop="seoKeyword"> | |||
<el-input v-model="form.seoKeyword" placeholder="请输入SEO关键词" /> | |||
</el-form-item> | |||
<el-form-item label="SEO描述" prop="seoDescripetion"> | |||
<el-input v-model="form.seoDescripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="模板ID" prop="templateId"> | |||
<el-input v-model="form.templateId" placeholder="请输入模板ID" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listColumn, getColumn, delColumn, addColumn, updateColumn } from "@/api/system/column"; | |||
import Treeselect from "@riophae/vue-treeselect"; | |||
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | |||
export default { | |||
name: "Column", | |||
dicts: ['zs_navigation_display', 'zs_status', 'zs_sys_language', 'zs_column_type'], | |||
components: { | |||
Treeselect | |||
}, | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 站点栏目管理表格数据 | |||
columnList: [], | |||
// 站点栏目管理树选项 | |||
columnOptions: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 是否展开,默认全部展开 | |||
isExpandAll: true, | |||
// 重新渲染表格状态 | |||
refreshTable: true, | |||
// 查询参数 | |||
queryParams: { | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
status: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
websiteId: [ | |||
{ required: true, message: "网站ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
name: [ | |||
{ required: true, message: "栏目名称不能为空", trigger: "blur" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点栏目管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listColumn(this.queryParams).then(response => { | |||
this.columnList = this.handleTree(response.data, "id", "parentId"); | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 转换站点栏目管理数据结构 */ | |||
normalizer(node) { | |||
if (node.children && !node.children.length) { | |||
delete node.children; | |||
} | |||
return { | |||
id: node.id, | |||
label: node.name, | |||
children: node.children | |||
}; | |||
}, | |||
/** 查询站点栏目管理下拉树结构 */ | |||
getTreeselect() { | |||
listColumn().then(response => { | |||
this.columnOptions = []; | |||
const data = { id: 0, name: '顶级节点', children: [] }; | |||
data.children = this.handleTree(response.data, "id", "parentId"); | |||
this.columnOptions.push(data); | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
websiteId: null, | |||
websiteName: null, | |||
languageCode: null, | |||
name: null, | |||
descripetion: null, | |||
parentId: null, | |||
level: null, | |||
urlAlias: null, | |||
columnType: null, | |||
columnSingleContent: null, | |||
navigationDisplay: null, | |||
navigationSort: null, | |||
blankLink: null, | |||
seoTitle: null, | |||
seoKeyword: null, | |||
seoDescripetion: null, | |||
templateId: null, | |||
status: null, | |||
createTime: null, | |||
updateTime: null, | |||
createBy: null, | |||
updateBy: null | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd(row) { | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null && row.id) { | |||
this.form.parentId = row.id; | |||
} else { | |||
this.form.parentId = 0; | |||
} | |||
this.open = true; | |||
this.title = "添加站点栏目管理"; | |||
}, | |||
/** 展开/折叠操作 */ | |||
toggleExpandAll() { | |||
this.refreshTable = false; | |||
this.isExpandAll = !this.isExpandAll; | |||
this.$nextTick(() => { | |||
this.refreshTable = true; | |||
}); | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null) { | |||
this.form.parentId = row.id; | |||
} | |||
getColumn(row.id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点栏目管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateColumn(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addColumn(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
this.$modal.confirm('是否确认删除站点栏目管理编号为"' + row.id + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delColumn(row.id); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,449 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="产品名称" prop="name"> | |||
<el-input | |||
v-model="queryParams.name" | |||
placeholder="请输入产品名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="是否启用" prop="isDisabled"> | |||
<el-select v-model="queryParams.isDisabled" placeholder="请选择是否启用" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:product:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="success" | |||
plain | |||
icon="el-icon-edit" | |||
size="mini" | |||
:disabled="single" | |||
@click="handleUpdate" | |||
v-hasPermi="['system:product:edit']" | |||
>修改</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="el-icon-delete" | |||
size="mini" | |||
:disabled="multiple" | |||
@click="handleDelete" | |||
v-hasPermi="['system:product:remove']" | |||
>删除</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="warning" | |||
plain | |||
icon="el-icon-download" | |||
size="mini" | |||
@click="handleExport" | |||
v-hasPermi="['system:product:export']" | |||
>导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table v-loading="loading" :data="productList" @selection-change="handleSelectionChange"> | |||
<el-table-column type="selection" width="55" align="center" /> | |||
<el-table-column label="主键ID" align="center" prop="id" v-if="false"/> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="产品分类ID" align="center" prop="categoryId" /> | |||
<el-table-column label="用途IDs" align="center" prop="purposeIds" /> | |||
<el-table-column label="产品名称" align="center" prop="name" /> | |||
<el-table-column label="描述1" align="center" prop="descripetion1" /> | |||
<el-table-column label="描述2" align="center" prop="descripetion2" /> | |||
<el-table-column label="产品封面" align="center" prop="cover" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.cover" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="产品详情" align="center" prop="intro" /> | |||
<el-table-column label="图片相册" align="center" prop="galleryList" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.galleryList" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="产品信息" align="center" prop="productInfo" /> | |||
<el-table-column label="附件集合" align="center" prop="attachmentListJson" /> | |||
<el-table-column label="SEO标题" align="center" prop="seoTitle" /> | |||
<el-table-column label="SEO关键词" align="center" prop="seoKeyword" /> | |||
<el-table-column label="SEO描述" align="center" prop="seoDescripetion" /> | |||
<el-table-column label="是否启用" align="center" prop="isDisabled"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_is_disabled" :value="scope.row.isDisabled"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="第三方平台" align="center" prop="platformIds" /> | |||
<el-table-column label="是否推荐" align="center" prop="isRecommend"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_recommend" :value="scope.row.isRecommend"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:product:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:product:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<pagination | |||
v-show="total>0" | |||
:total="total" | |||
:page.sync="queryParams.pageNum" | |||
:limit.sync="queryParams.pageSize" | |||
@pagination="getList" | |||
/> | |||
<!-- 添加或修改站点产品管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="产品分类ID" prop="categoryId"> | |||
<el-input v-model="form.categoryId" placeholder="请输入产品分类ID" /> | |||
</el-form-item> | |||
<el-form-item label="用途IDs" prop="purposeIds"> | |||
<el-input v-model="form.purposeIds" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="产品名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入产品名称" /> | |||
</el-form-item> | |||
<el-form-item label="描述1" prop="descripetion1"> | |||
<el-input v-model="form.descripetion1" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="描述2" prop="descripetion2"> | |||
<el-input v-model="form.descripetion2" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="产品封面" prop="cover"> | |||
<image-upload v-model="form.cover"/> | |||
</el-form-item> | |||
<el-form-item label="产品详情"> | |||
<editor v-model="form.intro" :min-height="192"/> | |||
</el-form-item> | |||
<el-form-item label="图片相册" prop="galleryList"> | |||
<image-upload v-model="form.galleryList"/> | |||
</el-form-item> | |||
<el-form-item label="产品信息"> | |||
<editor v-model="form.productInfo" :min-height="192"/> | |||
</el-form-item> | |||
<el-form-item label="附件集合" prop="attachmentListJson"> | |||
<file-upload v-model="form.attachmentListJson"/> | |||
</el-form-item> | |||
<el-form-item label="SEO标题" prop="seoTitle"> | |||
<el-input v-model="form.seoTitle" placeholder="请输入SEO标题" /> | |||
</el-form-item> | |||
<el-form-item label="SEO关键词" prop="seoKeyword"> | |||
<el-input v-model="form.seoKeyword" placeholder="请输入SEO关键词" /> | |||
</el-form-item> | |||
<el-form-item label="SEO描述" prop="seoDescripetion"> | |||
<el-input v-model="form.seoDescripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="是否启用" prop="isDisabled"> | |||
<el-select v-model="form.isDisabled" placeholder="请选择是否启用"> | |||
<el-option | |||
v-for="dict in dict.type.zs_is_disabled" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="第三方平台" prop="platformIds"> | |||
<el-input v-model="form.platformIds" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="是否推荐" prop="isRecommend"> | |||
<el-select v-model="form.isRecommend" placeholder="请选择是否推荐"> | |||
<el-option | |||
v-for="dict in dict.type.zs_recommend" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listProduct, getProduct, delProduct, addProduct, updateProduct } from "@/api/system/product"; | |||
export default { | |||
name: "Product", | |||
dicts: ['zs_is_disabled', 'zs_recommend', 'zs_sys_language'], | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 选中数组 | |||
ids: [], | |||
// 非单个禁用 | |||
single: true, | |||
// 非多个禁用 | |||
multiple: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 站点产品管理表格数据 | |||
productList: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNum: 1, | |||
pageSize: 10, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
isDisabled: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
websiteId: [ | |||
{ required: true, message: "网站ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
categoryId: [ | |||
{ required: true, message: "产品分类ID不能为空", trigger: "blur" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点产品管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listProduct(this.queryParams).then(response => { | |||
this.productList = response.rows; | |||
this.total = response.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
websiteId: undefined, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
categoryId: undefined, | |||
purposeIds: undefined, | |||
name: undefined, | |||
descripetion1: undefined, | |||
descripetion2: undefined, | |||
cover: undefined, | |||
intro: undefined, | |||
galleryList: undefined, | |||
productInfo: undefined, | |||
attachmentListJson: undefined, | |||
seoTitle: undefined, | |||
seoKeyword: undefined, | |||
seoDescripetion: undefined, | |||
isDisabled: undefined, | |||
platformIds: undefined, | |||
isRecommend: undefined, | |||
createTime: undefined, | |||
updateTime: undefined, | |||
createBy: undefined, | |||
updateBy: undefined | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNum = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
// 多选框选中数据 | |||
handleSelectionChange(selection) { | |||
this.ids = selection.map(item => item.id) | |||
this.single = selection.length!==1 | |||
this.multiple = !selection.length | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加站点产品管理"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
const id = row.id || this.ids | |||
getProduct(id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点产品管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateProduct(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addProduct(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const ids = row.id || this.ids; | |||
this.$modal.confirm('是否确认删除站点产品管理编号为"' + ids + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delProduct(ids); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
this.download('system/product/export', { | |||
...this.queryParams | |||
}, `product_${new Date().getTime()}.xlsx`) | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,367 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="分类名称" prop="name"> | |||
<el-input | |||
v-model="queryParams.name" | |||
placeholder="请输入分类名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:productCategory:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="info" | |||
plain | |||
icon="el-icon-sort" | |||
size="mini" | |||
@click="toggleExpandAll" | |||
>展开/折叠</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table | |||
v-if="refreshTable" | |||
v-loading="loading" | |||
:data="productCategoryList" | |||
row-key="id" | |||
:default-expand-all="isExpandAll" | |||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" | |||
> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="分类层级" align="center" prop="level" /> | |||
<el-table-column label="分类名称" align="center" prop="name" /> | |||
<el-table-column label="分类描述" align="center" prop="descripetion" /> | |||
<el-table-column label="栏目封面" align="center" prop="cover" width="100"> | |||
<template #default="scope"> | |||
<image-preview :src="scope.row.cover" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="外链地址" align="center" prop="blankUrl" /> | |||
<el-table-column label="排序权重" align="center" prop="sort" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:productCategory:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-plus" | |||
@click="handleAdd(scope.row)" | |||
v-hasPermi="['system:productCategory:add']" | |||
>新增</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:productCategory:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 添加或修改站点产品分类管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="父分类ID" prop="parentId"> | |||
<treeselect v-model="form.parentId" :options="productCategoryOptions" :normalizer="normalizer" placeholder="请选择父分类ID" /> | |||
</el-form-item> | |||
<el-form-item label="分类层级" prop="level"> | |||
<el-input v-model="form.level" placeholder="请输入分类层级" /> | |||
</el-form-item> | |||
<el-form-item label="分类名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入分类名称" /> | |||
</el-form-item> | |||
<el-form-item label="分类描述" prop="descripetion"> | |||
<el-input v-model="form.descripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="栏目封面" prop="cover"> | |||
<image-upload v-model="form.cover"/> | |||
</el-form-item> | |||
<el-form-item label="外链地址" prop="blankUrl"> | |||
<el-input v-model="form.blankUrl" placeholder="请输入外链地址" /> | |||
</el-form-item> | |||
<el-form-item label="排序权重" prop="sort"> | |||
<el-input v-model="form.sort" placeholder="请输入排序权重" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listProductCategory, getProductCategory, delProductCategory, addProductCategory, updateProductCategory } from "@/api/system/productCategory"; | |||
import Treeselect from "@riophae/vue-treeselect"; | |||
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | |||
export default { | |||
name: "ProductCategory", | |||
dicts: ['zs_sys_language'], | |||
components: { | |||
Treeselect | |||
}, | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 站点产品分类管理表格数据 | |||
productCategoryList: [], | |||
// 站点产品分类管理树选项 | |||
productCategoryOptions: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 是否展开,默认全部展开 | |||
isExpandAll: true, | |||
// 重新渲染表格状态 | |||
refreshTable: true, | |||
// 查询参数 | |||
queryParams: { | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
websiteId: [ | |||
{ required: true, message: "网站ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点产品分类管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listProductCategory(this.queryParams).then(response => { | |||
this.productCategoryList = this.handleTree(response.data, "id", "parentId"); | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 转换站点产品分类管理数据结构 */ | |||
normalizer(node) { | |||
if (node.children && !node.children.length) { | |||
delete node.children; | |||
} | |||
return { | |||
id: node.id, | |||
label: node.name, | |||
children: node.children | |||
}; | |||
}, | |||
/** 查询站点产品分类管理下拉树结构 */ | |||
getTreeselect() { | |||
listProductCategory().then(response => { | |||
this.productCategoryOptions = []; | |||
const data = { id: 0, name: '顶级节点', children: [] }; | |||
data.children = this.handleTree(response.data, "id", "parentId"); | |||
this.productCategoryOptions.push(data); | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
websiteId: null, | |||
websiteName: null, | |||
languageCode: null, | |||
parentId: null, | |||
level: null, | |||
name: null, | |||
descripetion: null, | |||
cover: null, | |||
blankUrl: null, | |||
sort: null, | |||
createTime: null, | |||
updateTime: null, | |||
createBy: null, | |||
updateBy: null | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd(row) { | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null && row.id) { | |||
this.form.parentId = row.id; | |||
} else { | |||
this.form.parentId = 0; | |||
} | |||
this.open = true; | |||
this.title = "添加站点产品分类管理"; | |||
}, | |||
/** 展开/折叠操作 */ | |||
toggleExpandAll() { | |||
this.refreshTable = false; | |||
this.isExpandAll = !this.isExpandAll; | |||
this.$nextTick(() => { | |||
this.refreshTable = true; | |||
}); | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
this.getTreeselect(); | |||
if (row != null) { | |||
this.form.parentId = row.id; | |||
} | |||
getProductCategory(row.id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点产品分类管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateProductCategory(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addProductCategory(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
this.$modal.confirm('是否确认删除站点产品分类管理编号为"' + row.id + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delProductCategory(row.id); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,331 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input | |||
v-model="queryParams.websiteName" | |||
placeholder="请输入网站名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="用途名称" prop="name"> | |||
<el-input | |||
v-model="queryParams.name" | |||
placeholder="请输入用途名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:purpose:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="success" | |||
plain | |||
icon="el-icon-edit" | |||
size="mini" | |||
:disabled="single" | |||
@click="handleUpdate" | |||
v-hasPermi="['system:purpose:edit']" | |||
>修改</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="el-icon-delete" | |||
size="mini" | |||
:disabled="multiple" | |||
@click="handleDelete" | |||
v-hasPermi="['system:purpose:remove']" | |||
>删除</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="warning" | |||
plain | |||
icon="el-icon-download" | |||
size="mini" | |||
@click="handleExport" | |||
v-hasPermi="['system:purpose:export']" | |||
>导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table v-loading="loading" :data="purposeList" @selection-change="handleSelectionChange"> | |||
<el-table-column type="selection" width="55" align="center" /> | |||
<el-table-column label="主键ID" align="center" prop="id" v-if="false"/> | |||
<el-table-column label="网站名称" align="center" prop="websiteName" /> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="用途名称" align="center" prop="name" /> | |||
<el-table-column label="用途描述" align="center" prop="descripetion" /> | |||
<el-table-column label="排序权重" align="center" prop="sort" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:purpose:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:purpose:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<pagination | |||
v-show="total>0" | |||
:total="total" | |||
:page.sync="queryParams.pageNum" | |||
:limit.sync="queryParams.pageSize" | |||
@pagination="getList" | |||
/> | |||
<!-- 添加或修改站点产品用途管理对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="网站ID" prop="websiteId"> | |||
<el-input v-model="form.websiteId" placeholder="请输入网站ID" /> | |||
</el-form-item> | |||
<el-form-item label="网站名称" prop="websiteName"> | |||
<el-input v-model="form.websiteName" placeholder="请输入网站名称" /> | |||
</el-form-item> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="用途名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入用途名称" /> | |||
</el-form-item> | |||
<el-form-item label="用途描述" prop="descripetion"> | |||
<el-input v-model="form.descripetion" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="排序权重" prop="sort"> | |||
<el-input v-model="form.sort" placeholder="请输入排序权重" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listPurpose, getPurpose, delPurpose, addPurpose, updatePurpose } from "@/api/system/purpose"; | |||
export default { | |||
name: "Purpose", | |||
dicts: ['zs_sys_language'], | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 选中数组 | |||
ids: [], | |||
// 非单个禁用 | |||
single: true, | |||
// 非多个禁用 | |||
multiple: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 站点产品用途管理表格数据 | |||
purposeList: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNum: 1, | |||
pageSize: 10, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点产品用途管理列表 */ | |||
getList() { | |||
this.loading = true; | |||
listPurpose(this.queryParams).then(response => { | |||
this.purposeList = response.rows; | |||
this.total = response.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
websiteId: undefined, | |||
websiteName: undefined, | |||
languageCode: undefined, | |||
name: undefined, | |||
descripetion: undefined, | |||
sort: undefined, | |||
createTime: undefined, | |||
updateTime: undefined, | |||
createBy: undefined, | |||
updateBy: undefined | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNum = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
// 多选框选中数据 | |||
handleSelectionChange(selection) { | |||
this.ids = selection.map(item => item.id) | |||
this.single = selection.length!==1 | |||
this.multiple = !selection.length | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加站点产品用途管理"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
const id = row.id || this.ids | |||
getPurpose(id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点产品用途管理"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updatePurpose(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addPurpose(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const ids = row.id || this.ids; | |||
this.$modal.confirm('是否确认删除站点产品用途管理编号为"' + ids + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delPurpose(ids); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
this.download('system/purpose/export', { | |||
...this.queryParams | |||
}, `purpose_${new Date().getTime()}.xlsx`) | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,385 @@ | |||
<template> | |||
<div class="app-container"> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="queryParams.languageCode" placeholder="请选择语言编码" clearable> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="名称" prop="siteName"> | |||
<el-input | |||
v-model="queryParams.siteName" | |||
placeholder="请输入名称" | |||
clearable | |||
@keyup.enter.native="handleQuery" | |||
/> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="el-icon-plus" | |||
size="mini" | |||
@click="handleAdd" | |||
v-hasPermi="['system:website:add']" | |||
>新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="success" | |||
plain | |||
icon="el-icon-edit" | |||
size="mini" | |||
:disabled="single" | |||
@click="handleUpdate" | |||
v-hasPermi="['system:website:edit']" | |||
>修改</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="el-icon-delete" | |||
size="mini" | |||
:disabled="multiple" | |||
@click="handleDelete" | |||
v-hasPermi="['system:website:remove']" | |||
>删除</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button | |||
type="warning" | |||
plain | |||
icon="el-icon-download" | |||
size="mini" | |||
@click="handleExport" | |||
v-hasPermi="['system:website:export']" | |||
>导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<el-table v-loading="loading" :data="websiteList" @selection-change="handleSelectionChange"> | |||
<el-table-column type="selection" width="55" align="center" /> | |||
<el-table-column label="主键ID" align="center" prop="id" v-if="false"/> | |||
<el-table-column label="语言编码" align="center" prop="languageCode"> | |||
<template slot-scope="scope"> | |||
<dict-tag :options="dict.type.zs_sys_language" :value="scope.row.languageCode"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="网站地址" align="center" prop="url" /> | |||
<el-table-column label="名称" align="center" prop="siteName" /> | |||
<el-table-column label="口号" align="center" prop="slogan" /> | |||
<el-table-column label="Logo" align="center" prop="logo" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.logo" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="icon" align="center" prop="icon" width="100"> | |||
<template slot-scope="scope"> | |||
<image-preview :src="scope.row.icon" :width="50" :height="50"/> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="备案" align="center" prop="record" /> | |||
<el-table-column label="版本号" align="center" prop="version" /> | |||
<el-table-column label="邮箱" align="center" prop="email" /> | |||
<el-table-column label="SEO标题" align="center" prop="seoTitle" /> | |||
<el-table-column label="SEO关键字" align="center" prop="seoKeyword" /> | |||
<el-table-column label="SEO描述" align="center" prop="seoDescription" /> | |||
<el-table-column label="robots" align="center" prop="robotsRule" /> | |||
<el-table-column label="sitemap" align="center" prop="sitemapGule" /> | |||
<el-table-column label="统计编码" align="center" prop="statisticsCode" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"> | |||
<template slot-scope="scope"> | |||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="创建人" align="center" prop="createBy" /> | |||
<el-table-column label="更新人" align="center" prop="updateBy" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template slot-scope="scope"> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-edit" | |||
@click="handleUpdate(scope.row)" | |||
v-hasPermi="['system:website:edit']" | |||
>修改</el-button> | |||
<el-button | |||
size="mini" | |||
type="text" | |||
icon="el-icon-delete" | |||
@click="handleDelete(scope.row)" | |||
v-hasPermi="['system:website:remove']" | |||
>删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<pagination | |||
v-show="total>0" | |||
:total="total" | |||
:page.sync="queryParams.pageNum" | |||
:limit.sync="queryParams.pageSize" | |||
@pagination="getList" | |||
/> | |||
<!-- 添加或修改站点信息对话框 --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="语言编码" prop="languageCode"> | |||
<el-select v-model="form.languageCode" placeholder="请选择语言编码"> | |||
<el-option | |||
v-for="dict in dict.type.zs_sys_language" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" | |||
></el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="网站地址" prop="url"> | |||
<el-input v-model="form.url" placeholder="请输入网站地址" /> | |||
</el-form-item> | |||
<el-form-item label="名称" prop="siteName"> | |||
<el-input v-model="form.siteName" placeholder="请输入名称" /> | |||
</el-form-item> | |||
<el-form-item label="口号" prop="slogan"> | |||
<el-input v-model="form.slogan" placeholder="请输入口号" /> | |||
</el-form-item> | |||
<el-form-item label="Logo" prop="logo"> | |||
<image-upload v-model="form.logo"/> | |||
</el-form-item> | |||
<el-form-item label="icon" prop="icon"> | |||
<image-upload v-model="form.icon"/> | |||
</el-form-item> | |||
<el-form-item label="备案" prop="record"> | |||
<el-input v-model="form.record" placeholder="请输入备案" /> | |||
</el-form-item> | |||
<el-form-item label="版本号" prop="version"> | |||
<el-input v-model="form.version" placeholder="请输入版本号" /> | |||
</el-form-item> | |||
<el-form-item label="邮箱" prop="email"> | |||
<el-input v-model="form.email" placeholder="请输入邮箱" /> | |||
</el-form-item> | |||
<el-form-item label="SEO标题" prop="seoTitle"> | |||
<el-input v-model="form.seoTitle" placeholder="请输入SEO标题" /> | |||
</el-form-item> | |||
<el-form-item label="SEO关键字" prop="seoKeyword"> | |||
<el-input v-model="form.seoKeyword" placeholder="请输入SEO关键字" /> | |||
</el-form-item> | |||
<el-form-item label="SEO描述" prop="seoDescription"> | |||
<el-input v-model="form.seoDescription" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="robots" prop="robotsRule"> | |||
<el-input v-model="form.robotsRule" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="sitemap" prop="sitemapGule"> | |||
<el-input v-model="form.sitemapGule" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="统计编码" prop="statisticsCode"> | |||
<el-input v-model="form.statisticsCode" placeholder="请输入统计编码" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { listWebsite, getWebsite, delWebsite, addWebsite, updateWebsite } from "@/api/system/website"; | |||
export default { | |||
name: "Website", | |||
dicts: ['zs_sys_language'], | |||
data() { | |||
return { | |||
// 按钮loading | |||
buttonLoading: false, | |||
// 遮罩层 | |||
loading: true, | |||
// 选中数组 | |||
ids: [], | |||
// 非单个禁用 | |||
single: true, | |||
// 非多个禁用 | |||
multiple: true, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 站点信息表格数据 | |||
websiteList: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNum: 1, | |||
pageSize: 10, | |||
languageCode: undefined, | |||
siteName: undefined, | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
id: [ | |||
{ required: true, message: "主键ID不能为空", trigger: "blur" } | |||
], | |||
languageCode: [ | |||
{ required: true, message: "语言编码不能为空", trigger: "change" } | |||
], | |||
siteName: [ | |||
{ required: true, message: "名称不能为空", trigger: "blur" } | |||
], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询站点信息列表 */ | |||
getList() { | |||
this.loading = true; | |||
listWebsite(this.queryParams).then(response => { | |||
this.websiteList = response.rows; | |||
this.total = response.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
// 取消按钮 | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
languageCode: undefined, | |||
url: undefined, | |||
siteName: undefined, | |||
slogan: undefined, | |||
logo: undefined, | |||
icon: undefined, | |||
record: undefined, | |||
version: undefined, | |||
email: undefined, | |||
seoTitle: undefined, | |||
seoKeyword: undefined, | |||
seoDescription: undefined, | |||
robotsRule: undefined, | |||
sitemapGule: undefined, | |||
statisticsCode: undefined, | |||
createTime: undefined, | |||
updateTime: undefined, | |||
createBy: undefined, | |||
updateBy: undefined | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNum = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
// 多选框选中数据 | |||
handleSelectionChange(selection) { | |||
this.ids = selection.map(item => item.id) | |||
this.single = selection.length!==1 | |||
this.multiple = !selection.length | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加站点信息"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.loading = true; | |||
this.reset(); | |||
const id = row.id || this.ids | |||
getWebsite(id).then(response => { | |||
this.loading = false; | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改站点信息"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (valid) { | |||
this.buttonLoading = true; | |||
if (this.form.id != null) { | |||
updateWebsite(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} else { | |||
addWebsite(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}).finally(() => { | |||
this.buttonLoading = false; | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const ids = row.id || this.ids; | |||
this.$modal.confirm('是否确认删除站点信息编号为"' + ids + '"的数据项?').then(() => { | |||
this.loading = true; | |||
return delWebsite(ids); | |||
}).then(() => { | |||
this.loading = false; | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => { | |||
}).finally(() => { | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
this.download('system/website/export', { | |||
...this.queryParams | |||
}, `website_${new Date().getTime()}.xlsx`) | |||
} | |||
} | |||
}; | |||
</script> |