今天上午核酸检测,没写代码,申请了优秀毕业生,中午1.30左右开始写,主要完成了对前面内容的曾山改
首先完成了阅读量,只有不是作者id点击文章才可以增加阅读量。
文章阅读量开始
article类里面添加 click_number变量
mapper层 添加 Boolean updateClickNumberByArticleId(Article article);
接口,
xml文件
<update id="updateClickNumberByArticleId">
update article set click_number = #{click_number} where article_id = #{article_id}
</update>
controller层 添加一个函数 通过文章id获取文章 是前台获取文章所以不需要token,其实逻辑就是获取文章信息以后给click_number取出来然后加1再放回去 更新了阅读量
@GetMapping("front/findArticleByArticleId")//会增加阅读量
public AjaxResult findArticleByArticleId (@RequestParam String article_id) {
try {
Article article = articleMapper.findArticleByArticleId(article_id); // 获取文章信息
article.setClick_number(article.getClick_number() + 1); // 阅读量增加 1
articleMapper.updateClickNumberByArticleId(article); // 将新阅读量更新到数据库中
ArticleCategory articleCategory = articleCategoryMapper.findArticleCategoryById(article.getArticle_category());
article.setCategory(articleCategory); // 设置文章分类信息
return AjaxResult.success(200, "根据文章id获取文章信息成功", article);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(5020, "根据文章id获取文章信息失败");
}
}
@GetMapping("front/admin/findArticleByArticleId")//不会增加阅读量
public AjaxResult adminFindArticleByArticleId (@RequestParam String article_id) {
try {
Article article = articleMapper.findArticleByArticleId(article_id); // 获取文章信息
ArticleCategory articleCategory = articleCategoryMapper.findArticleCategoryById(article.getArticle_category());
article.setCategory(articleCategory); // 设置文章分类信息
return AjaxResult.success(200, "根据文章id获取文章信息成功", article);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(5020, "根据文章id获取文章信息失败");
}
}
前段代码
将接口分成了会增加阅读量的查看 还有不增加阅读量的查看 对应的后端代码也不相同
api书写如下
export function adminFindArticleByArticleId (query) { // 不会增加阅读量的查看
return request({
url: '/front/admin/findArticleByArticleId',
method: 'get',
params: query
})
}
export function findArticleByArticleId (query) { // 会增加阅读量的查看
return request({
url: '/front/findArticleByArticleId',
method: 'get',
params: query
})
}
用在前端不同的页面,会增加的放在文章展示界面的created函数中添加以下判断
created () {
if (this.$route.params.state === '1') {
adminFindArticleByArticleId({ article_id: this.$route.params.article_id }).then(res => {
this.article_data = res.data
})
} else if (this.$route.params.state === '0') {
findArticleByArticleId({ article_id: this.$route.params.article_id }).then(res => {
this.article_data = res.data
})
}
}
这样的话如果他的路由参数为1的时候是自己查看 不增加阅读量 0的时候为游客或者其他的查看 添加阅读量
router的写法
{
path: 'article-read/:article_id/:state', // 1 代表作者查看,0 代表非作者查看
name: 'ArticleRead',
component: () => import('../views/article-read')
}
阅读量增加结束
文章管理:显示分类,修改分类开始
首先给文章管理界面添加修改分类,查看,编辑按钮,上架四个按钮 四个一起说了
1.修改分类是在修改分类对应的click事件里面 添加事件 给改变的分类赋值给newCategoryFrom,id也给过去 用来查找文章 然后弹出提示窗 此操作将修改文章分类 同时引入接口updateArticleCategoryByArticleId 将会修改文章分类
2.文章编辑是新建了一个vue将文章的内容获取到赋值给富文本编辑器 同时右上角显示发布文章 ,里面的标题 分类 描述也获取到 引入updateArticle adminFindArticleByArticleId 一个是在created里面创建的时候就获取文章内容 一个是用于更新文章
3.查看就是不会增加阅读量的查看
4. 上下架是 将文章的article_status改变同时更新文章 下架 同理 这里跟是那个面文章编辑用的api不同 其实应该相同 我自己写完才发现可以一样因为vuex里面存有文章id文章的信息
下面是vue代码
article-admin
<template>
<div class="article_list">
<el-table
:data="articleList" size="medial" style="width: 1040px; margin: 0 auto;">
<el-table-column label="文章标题" width="140" prop="article_title"></el-table-column>
<el-table-column label="文章简介" width="140" prop="article_describe"></el-table-column>
<el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.article_category === 1" type="success"> 护理 </el-tag>
<el-tag size="mini" v-else-if="scope.row.article_category === 2" type="success"> 养生 </el-tag>
</template>
</el-table-column>
<el-table-column prop="click_number" label="阅读量" width="100"></el-table-column>
<el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.article_status === '1'" type="success"> 上架 </el-tag>
<el-tag size="mini" v-else-if="scope.row.article_status === '0'" type="danger"> 下架 </el-tag>
</template>
</el-table-column>
<el-table-column label="发布时间" width="160">
<template slot-scope="scope">
{{ scope.row.create_time.substring(0,19).replace("T", " ") }}
</template>
</el-table-column>
<el-table-column width="300">
<template slot="header">
<el-button type="success" size="mini" @click="handleToAdd">新增文章</el-button>
</template>
<template slot-scope="scope">
<el-button size="mini" type="warning" @click="handlePreviewArticle(scope.row)"> 查看 </el-button>
<el-button size="mini" type="warning" @click="handleEditArticle(scope.row)"> 编辑 </el-button>
<el-button size="mini" type="warning" @click="handleUpdateCategory(scope.row)"> 修改分类 </el-button>
<el-button size="mini" v-if="scope.row.article_status === '0'" type="warning" @click="handlePublishArticle(scope.row)"> 上架 </el-button>
<el-button size="mini" v-else-if="scope.row.article_status === '1'" type="danger" @click="handleUnShelveArticle(scope.row)"> 下架 </el-button>
</template>
</el-table-column>
</el-table>
<!-- 修改分类对话框:开始 -->
<el-dialog title="提示" width="35%" :visible.sync="updateArticleCategoryDialogVisibe">
<el-form :model="newCategoryFrom">
<el-form-item prop="article_category" label="请选择分类" >
<el-select @change="handleChangeCategory"
style="width: 240px" v-model="newCategoryFrom.article_category">
<el-option label="护理" value="1"/>
<el-option label="养生" value="2"/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="updateArticleCategoryDialogVisibe = false">取 消</el-button>
<el-button type="primary" @click="handleConfirmUpdateArticleCategory">确 定</el-button>
</div>
</el-dialog>
<!-- 修改分类对话框:结束 -->
</div>
</template>
<script>
import { findArticleByAuthorId, updateStateByArticleId, updateArticleCategoryByArticleId } from '../../api/article'
export default {
name: 'ArticleAdmin',
data () {
return {
articleList: [],
newCategoryFrom: {
article_id: '',
article_category: ''
},
updateArticleCategoryDialogVisibe: false // 控制修改分类对话框的显示
}
},
created () {
this.fetchArticleList()
},
methods: {
handleToAdd () { // 新增文章
this.$router.push({ name: 'ArticleAdd' })
},
handlePreviewArticle (article) { // 查看文章
this.$router.push({ name: 'ArticleRead', params: { article_id: article.article_id, state: '1' } })
},
handleEditArticle (article) { // 编辑文章
this.$router.push({ name: 'ArticleEdit', params: { article_id: article.article_id } })
},
handleUpdateCategory (article) {
this.newCategoryFrom.article_category = article.article_category + ''
this.newCategoryFrom.article_id = article.article_id
this.updateArticleCategoryDialogVisibe = true
},
handleChangeCategory (articleCategory) {
this.newCategoryFrom.article_category = articleCategory
},
handleConfirmUpdateArticleCategory () {
this.$confirm('此操作将修改文章分类, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
this.updateArticleCategoryDialogVisibe = false
return updateArticleCategoryByArticleId(this.newCategoryFrom)
}).then(() => {
this.fetchArticleList()
this.$message({
type: 'success',
message: '修改成功',
offset: 100
})
}).catch(error => {
if (error !== 'cancel') {
this.$message({
type: 'error',
message: '修改失败',
offset: 100
})
}
})
},
handlePublishArticle (article) {
this.$confirm('此操作将上架文章, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
article.article_status = '1'
return updateStateByArticleId(article)
}).then(() => {
this.fetchArticleList()
this.$message({
type: 'success',
message: '上架成功',
offset: 100
})
}).catch(error => {
if (error !== 'cancel') {
this.$message({
type: 'error',
message: '上架失败',
offset: 100
})
}
})
},
handleUnShelveArticle (article) {
this.$confirm('此操作将下架文章, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
article.article_status = '0'
return updateStateByArticleId(article)
}).then(() => {
this.fetchArticleList()
this.$message({
type: 'success',
message: '下架成功',
offset: 100
})
}).catch(error => {
console.log(error)
if (error !== 'cancel') {
this.$message({
type: 'error',
message: '下架失败',
offset: 100
})
}
})
},
fetchArticleList () {
findArticleByAuthorId({ author_id: this.$store.state.user.userinfo.user_id }).then(res => {
console.log('res.data', res.data)
this.articleList = res.data
}).catch(error => {
console.log(error)
})
}
}
}
</script>
<style lang="less" scoped>
.article_list {
padding-top: 50px;
}
</style>
article-edit
<template>
<div>
<el-row id="article-top">
<a href="#/article-admin" class="back"> <i class="el-icon-back"></i> 返回</a>
<div class="action">
<el-button type="warning" @click="handleUpdateArticleCheck">+ 发布文章</el-button>
</div>
</el-row>
<el-row id="article-editor">
<quill-editor v-model="article.article_content"
style="height: 600px; margin-bottom: 10px"></quill-editor>
</el-row>
<!-- 更新文章对话框:开始 -->
<el-dialog title="提示" width="35%" :visible.sync="updateArticleDialogVisible">
<el-form :model="article" :rules="articleRules" ref="articleRef">
<el-form-item prop="article_title" label='请输入文章标题' >
<el-input v-model="article.article_title"></el-input>
</el-form-item>
<el-form-item prop="article_describe" label='请输入文章描述' >
<el-input v-model="article.article_describe"></el-input>
</el-form-item>
<el-form-item label="文章分类" prop="article_category">
<el-select placeholder="请选择文章分类" clearable
v-model="article.article_category" style="width: 240px">
<el-option label="护理" :value="1"/>
<el-option label="养生" :value="2"/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="updateArticleDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="handleConfirmUpdateArticle">确 定</el-button>
</div>
</el-dialog>
<!-- 更新文章对话框:结束 -->
</div>
</template>
<script>
import { updateArticle } from '../../api/doctor/article'
import { adminFindArticleByArticleId } from '../../api/article'
export default {
name: 'ArticleEdit',
data () {
return {
updateArticleDialogVisible: false, // 控制更新文章对话框显示
article: {
author_id: '',
article_content: '',
article_title: '',
article_describe: '',
article_category: '1'
},
articleRules: {
article_title: [
{ required: true, message: '请输入文章标题', trigger: 'blur' }
],
article_describe: [
{ required: true, message: '请输入文章描述', trigger: 'blur' }
],
article_category: [
{ required: true, message: '请选择分类', trigger: 'blur' }
]
}
}
},
created () {
adminFindArticleByArticleId({ article_id: this.$route.params.article_id }).then(res => {
this.article = res.data
})
this.article.article_id = this.$route.params.article_id
},
methods: {
handleConfirmUpdateArticle () {
this.$refs.articleRef.validate((valid) => {
if (valid) {
this.$confirm(`确定更新文章:${this.article.article_title}`, '询问', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
return updateArticle(this.article)
}).then(() => {
this.publishArticleDialogVisible = false
this.$message({ type: 'success', message: '更新成功!' })
this.$router.go(-1)
}).catch(error => {
if (error !== 'cancel') {
this.$message({ type: 'error', message: '更新失败!' })
}
})
} else {
return false
}
})
},
/**
* 检测文章内容是否为空
*/
handleUpdateArticleCheck: function () {
if (this.article.article_content === '') {
this.$notify({
title: '警告',
message: '内容不能为空',
type: 'warning'
})
} else {
this.updateArticleDialogVisible = true
}
}
}
}
</script>
<style lang="less" scoped>
#article-top {
height: 7vh;
display: flex;
position: relative;
box-shadow: 0 0px 5px 0 #efefef;
.back {
text-align: center;
width: 10%;
height: 7vh;
line-height: 7vh;
text-decoration: none;
background-color: #f1f1f1;
color: #3377ff;
cursor: pointer;
}
.action {
background-color: #fff;
width: 90%;
display: flex;
padding-right: 25px;
justify-content: flex-end;
align-items: center;
}
}
#article-editor {
padding: 50px 150px;
}
</style>
article-read
<template>
<div class="article_show__wrapper">
<article-show :article="article_data"/>
</div>
</template>
<script>
import { findArticleByArticleId, adminFindArticleByArticleId } from '../../api/article'
import ArticleShow from '../../components/article-show'
export default {
name: 'ArticleRead',
data () {
return {
article_data: ''
}
},
components: { ArticleShow },
created () {
if (this.$route.params.state === '1') {
adminFindArticleByArticleId({ article_id: this.$route.params.article_id }).then(res => {
this.article_data = res.data
})
} else if (this.$route.params.state === '0') {
findArticleByArticleId({ article_id: this.$route.params.article_id }).then(res => {
this.article_data = res.data
})
}
}
}
</script>
<style lang="less" scoped>
.article_show__wrapper {
display: flex; justify-content: center;
}
</style>
article
<template>
<div id="article-wrapper">
<el-row id="article-category">
<aside>
<ul>
<li :class="{ active: currentSelet === '1' }" @click="handleChange('1')">护理</li>
<li :class="{ active: currentSelet === '2' }" @click="handleChange('2')">养生</li>
</ul>
</aside>
<div id="article-container">
<article-card @readArticle="handleReadArticle" v-for="item in articleList" :article-data="item" :key="item.article_id"></article-card>
</div>
</el-row>
<el-row id="pagination">
<!-- 分页:开始 -->
<el-pagination v-if="page.listTotal !== '0'"
small :page-sizes="[6, 12, 18]" :page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="page.listTotal"
@size-change="handleSizeChange" @current-change="handleCurrentChange">
</el-pagination>
<!-- 分页:结束 -->
<el-empty description="文章暂无" v-if="!page.listTotal"></el-empty>
</el-row>
</div>
</template>
<script>
import ArticleCard from '../../components/article-card'
import { findArticleByCategory, findArticleTotalByCategory } from '../../api/article'
export default {
name: 'Article',
components: { ArticleCard },
data () {
return {
articleList: [],
currentSelet: '1',
page: { // 分页数据
article_category: '1',
pageNum: 1,
pageSize: 6,
listTotal: 0
}
}
},
created () {
this.fetchArticleList()
},
methods: {
handleSizeChange (newPageSize) {
this.page.pageSize = newPageSize
this.fetchArticleList()
},
handleCurrentChange (newPageNum) {
this.page.pageNum = newPageNum
this.fetchArticleList()
},
handleChange (category) {
this.currentSelet = category
this.page.article_category = category
this.page.pageNum = 1
this.page.pageSize = 6
this.fetchArticleList()
},
fetchArticleList () {
findArticleTotalByCategory({ article_category: this.page.article_category }).then(res => { // Promise 链式处理
console.log(res)
this.page.listTotal = res.data
return findArticleByCategory(this.page)
}).then(res => {
this.articleList = res.data
console.log(res) // for debug
}).catch(error => {
console.log(error)
})
},
handleReadArticle (id) {
this.$router.push({ name: 'ArticleRead', params: { article_id: id,state : '0' } })
}
}
}
</script>
<style lang="less" scoped>
#article-wrapper {
padding-top: 25px;
#article-category {
display: flex;
ul {
width: 100px; position: fixed;
li {
padding: 10px 25px;
text-align: center;
line-height: 25px;
overflow: hidden;
background-color: #f8f8f8;
font-weight: 400;
font-size: 14px;
border-bottom: 1px solid #eee;
cursor: pointer;
}
li.active {
background-color: #fff;
font-weight: bold;
}
}
#article-container {
width: 80%; margin: 0 auto;
display: flex; flex-wrap: wrap; justify-content: flex-start;
}
}
#pagination {
text-align: center; padding-top: 25px;
}
}
</style>
用到的api
export function updateArticle (data) {
return request({
url: '/front/updateArticle',
method: 'post',
data: data
})
}
import request from '../request'
export function findAllArticle () {
return request({
url: '/findAllArticle',
method: 'get'
})
}
export function findArticleByCategory (query) {
return request({
url: '/front/findArticleByCategory',
method: 'get',
params: query
})
}
export function findArticleTotalByCategory (query) {
return request({
url: '/front/findArticleTotalByCategory',
method: 'get',
params: query
})
}
export function adminFindArticleByArticleId (query) { // 不会增加阅读量的查看
return request({
url: '/front/admin/findArticleByArticleId',
method: 'get',
params: query
})
}
export function findArticleByArticleId (query) { // 会增加阅读量的查看
return request({
url: '/front/findArticleByArticleId',
method: 'get',
params: query
})
}
export function findArticleByAuthorId (query) {
return request({
url: '/front/findArticleByAuthorId',
method: 'get',
params: query
})
}
export function updateStateByArticleId (data) {
return request({
url: '/updateStateByArticleId',
method: 'post',
data: data
})
}
export function updateArticleCategoryByArticleId (data) {
return request({
url: '/front/updateArticleCategoryByArticleId',
method: 'post',
data: data
})
}
前端代码结束
后端 实体类不变
xml文件添加
<update id="updateStateByArticleId">
update article set article_status = #{article_status} where article_id = #{article_id}
</update>
<update id="updateClickNumberByArticleId">
update article set click_number = #{click_number} where article_id = #{article_id}
</update>
<!--update article set article_category = 2 where article_id = 32-->
<update id="updateArticleCategoryByArticleId">
update article set article_category = #{article_category}
where article_id = #{article_id}
</update>
mapper添加
Boolean updateArticleCategoryByArticleId(Article article);
Boolean updateArticle(Article article);
controller添加
/**
* 前台:中医生文章管理:更新文章分类
* @param request
* @param article
* @return
*/
@PostMapping("front/updateArticleCategoryByArticleId")
public AjaxResult updateArticleCategoryByArticleId (HttpServletRequest request, @RequestBody Article article) {
try {
String token = request.getHeader("Authorization");
try {
Claims claims = JwtUtils.checkToken(token);
if (claims == null) {
return AjaxResult.error(50012, "未传输 token");
}
} catch (ExpiredJwtException e) {
return AjaxResult.error(50013, "token 已过期");
} catch (Exception e) {
return AjaxResult.error(50014, "无效 token");
}
Boolean result = articleMapper.updateArticleCategoryByArticleId(article);
if (result) {
return AjaxResult.success(200, "修改文章分类成功", result);
} else {
return AjaxResult.error(5005, "修改文章分类失败");
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(5005, "修改文章分类失败");
}
}
/**
* 前台:文章管理:更新文章内容
*/
@PostMapping("front/updateArticle")
public AjaxResult updateArticle (HttpServletRequest request, @RequestBody Article article) {
try {
String token = request.getHeader("Authorization");
try {
Claims claims = JwtUtils.checkToken(token);
if (claims == null) {
return AjaxResult.error(50012, "未传输 token");
}
} catch (ExpiredJwtException e) {
return AjaxResult.error(50013, "token 已过期");
} catch (Exception e) {
return AjaxResult.error(50014, "无效 token");
}
Boolean addArticleResult = articleMapper.updateArticle(article);
if (addArticleResult) {
return AjaxResult.success(200, "发布文章成功", addArticleResult);
} else {
return AjaxResult.error(5010, "发布文章失败");
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(5010, "发布文章失败");
}
}
编辑文章 查看文章结束
服务的上架与下架开始
首先在service实体类添加一个 private String service_sign; 表示今天明天后天 三天 服务只允许上架三天的服务 后续会继续更改
然后mapper里面添加
Boolean updateService(Service service);
List findTimeBySignId(@Param(“doctor_id”) Integer doctor_id, @Param(“service_sign”) String service_sign);两个接口
xml文件里面添加
<update id="updateService"
parameterType="bysj.bysj.model.Service">
update service set service_state = #{service_state}
where service_id = #{service_id}
</update>
<select id="findTimeBySignId"
resultMap="serviceMap">
select * from service as s, time as t
where doctor_id = #{doctor_id} and service_sign = #{service_sign}
and s.time_id = t.time_id
</select>
controller
/**
* 前台:服务管理:上架下架
*/
@PostMapping("front/updateService")
public AjaxResult updateService (HttpServletRequest request, @RequestBody Service service) {
try {
String token = request.getHeader("Authorization");
try {
Claims claims = JwtUtils.checkToken(token);
if (claims == null) {
return AjaxResult.error(50012, "未传输 token");
}
} catch (ExpiredJwtException e) {
return AjaxResult.error(50013, "token 已过期");
} catch (Exception e) {
return AjaxResult.error(50014, "无效 token");
}
Boolean updateResult = serviceMapper.updateService(service);
if (updateResult) {
return AjaxResult.success(200, "更改状态成功", updateResult);
} else {
return AjaxResult.error(5010, "更改状态失败");
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(5010, "更改状态失败");
}
/**
* 前台:服务管理:获取服务时间列表
* @param request
* @return
*/
@GetMapping("front/findTimeBySignId")
public AjaxResult findTimeBySignId (HttpServletRequest request, @RequestParam Integer doctor_id, @RequestParam String service_sign) {
try {
String token = request.getHeader("Authorization");
try {
Claims claims = JwtUtils.checkToken(token);
if (claims == null) {
return AjaxResult.error(50012, "未传输 token");
}
} catch (ExpiredJwtException e) {
return AjaxResult.error(50013, "token 已过期");
} catch (Exception e) {
return AjaxResult.error(50014, "无效 token");
}
return AjaxResult.success(200, "获取服务时间列表成功", serviceMapper.findTimeBySignId(doctor_id, service_sign));
} catch (Exception e) {
return AjaxResult.error(5025, "获取服务时间列表失败");
}
}
两个接口写完了
前段api
export function serviceGetUserDoctorTotal () {
return request({
url: '/front/service/getUserDoctorTotal',
method: 'get'
})
}
export function findTimeBySignId (query) {
return request({
url: '/front/findTimeBySignId',
method: 'get',
params: query
})
}
export function updateService (data) {
return request({
url: '/front/updateService',
method: 'post',
data: data
})
}
服务管理界面,首先会通过sign获取三天的所有time列表 然后上下架的时候 引入updateService这个api更像服务的状态
然后结束
service-admin.vue
<template>
<div id="service-admin">
<div class="time-container">
<div class="time-item">
{{ todayTime }}
<el-table :data="todayTimeList" border>
<el-table-column prop="time.time_content" label="时段" width="180">
</el-table-column>
<el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.service_state === '0'" type="success"> 上架 </el-tag>
<el-tag size="mini" v-else-if="scope.row.service_state === '1'" type="danger"> 下架 </el-tag>
</template>
</el-table-column>
<el-table-column width="150" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="warning" v-if="scope.row.service_state === '1'" @click="handlePublish(scope.row)"> 上架 </el-button>
<el-button size="mini" type="danger" v-else-if="scope.row.service_state === '0'" @click="handleGround(scope.row)"> 下架 </el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="time-item">
{{ tomorrowTime }}
<el-table :data="tomorrowTimeList" border>
<el-table-column prop="time.time_content" label="时段" width="180">
</el-table-column>
<el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.service_state === '0'" type="success"> 上架 </el-tag>
<el-tag size="mini" v-else-if="scope.row.service_state === '1'" type="danger"> 下架 </el-tag>
</template>
</el-table-column>
<el-table-column width="150" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="warning" v-if="scope.row.service_state === '1'" @click="handlePublish(scope.row)"> 上架 </el-button>
<el-button size="mini" type="danger" v-else-if="scope.row.service_state === '0'" @click="handleGround(scope.row)"> 下架 </el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="time-item">
{{ afterTomorrowTime }}
<el-table :data="afterTomorrowTimeList" border>
<el-table-column prop="time.time_content" label="时段" width="180">
</el-table-column>
<el-table-column label="状态" width="100">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.service_state === '0'" type="success"> 上架 </el-tag>
<el-tag size="mini" v-else-if="scope.row.service_state === '1'" type="danger"> 下架 </el-tag>
</template>
</el-table-column>
<el-table-column width="150" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="warning" v-if="scope.row.service_state === '1'" @click="handlePublish(scope.row)"> 上架 </el-button>
<el-button size="mini" type="danger" v-else-if="scope.row.service_state === '0'" @click="handleGround(scope.row)"> 下架 </el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div style="padding-top: 50px;">
任务提醒:你于2022年4月8日上午8:00至10:00要为客户离若进行拔罐。
</div>
</div>
</template>
<script>
import { findTimeBySignId, updateService } from '../../api/service'
export default {
name: 'ServiceAdmin',
data () {
return {
timeList: [],
serviceDate: new Date(),
todayTimeList: [],
todayTime: '',
tomorrowTimeList: [],
tomorrowTime: '',
afterTomorrowTimeList: [],
afterTomorrowTime: '',
groundForm: {
time_id: '',
service_date: '',
doctor_id: ''
}
}
},
created () {
const doctorId = this.$store.state.user.userinfo.user_id
findTimeBySignId({ doctor_id: doctorId, service_sign: '1' }).then(res => {
this.todayTime = res.data[0].service_date
console.log(this.todayTime)
this.todayTimeList = res.data
console.log(res.data)
})
findTimeBySignId({ doctor_id: doctorId, service_sign: '2' }).then(res => {
this.tomorrowTime = res.data[0].service_date
this.tomorrowTimeList = res.data
})
findTimeBySignId({ doctor_id: doctorId, service_sign: '3' }).then(res => {
this.afterTomorrowTime = res.data[0].service_date
this.afterTomorrowTimeList = res.data
})
},
methods: {
handlePublish (service) { // 进行上架操作
this.$confirm('此操作将上架服务, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
service.service_state = '0'
return updateService(service)
}).then(() => {
this.$message({
type: 'success',
message: '上架成功!',
offset: 100
})
}).catch((error) => {
console.log('error', error)
if (error !== 'cancel') {
this.$message({
type: 'error',
message: '上架失败!'
})
}
})
},
handleGround (service) { // 进行下架操作
this.$confirm('此操作将下架服务, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
service.service_state = '1'
return updateService(service)
}).then(() => {
this.$message({
type: 'success',
message: '下架成功!',
offset: 100
})
}).catch((error) => {
console.log('error', error)
if (error !== 'cancel') {
this.$message({
type: 'error',
message: '下架失败!'
})
}
})
}
}
}
</script>
<style lang="less" scoped>
.time-item {
width: 431px; margin: 15px;
& /deep/ .el-date-editor.el-input {
width: 129px;
}
& /deep/ .cell {
text-align: center;
}
}
.time-container {
display: flex; justify-content: center;
}
#service-admin {
text-align: center;
}
</style>
服务的上架下架结束
睡觉!!!