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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
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' | |||||
}) | |||||
} |
<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> |
<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> |
<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> |
<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> |
<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> |
<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> |
<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> |
<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> |