dingxin hace 6 años
padre
commit
6779f155c5

+ 11
- 1
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/TpAnnouncementController.java Ver fichero

@@ -58,7 +58,7 @@ public class TpAnnouncementController extends BaseController {
58 58
         return tpAnnouncement;
59 59
     }
60 60
 
61
-    @ApiOperation(value = "查询公告详情",nickname ="查询公告详情")
61
+    @ApiOperation(value = "修改公告",nickname ="修改公告")
62 62
     @ApiImplicitParams({
63 63
             @ApiImplicitParam(paramType = "body", dataType = "String", name = "paramets", value ="id:公告id,announcementTitle:公告标题," +
64 64
                     "announcementCarouselImg:轮播图,announcementContent:内容,contentImg:内容图片,sort:权重值,status:'0 是已作废 1 是已发布   2 是草稿 3 是已修改',")})
@@ -69,5 +69,15 @@ public class TpAnnouncementController extends BaseController {
69 69
         return tpAnnouncement;
70 70
     }
71 71
 
72
+    @ApiOperation(value = "批量删除公告",nickname ="批量删除公告")
73
+    @ApiImplicitParams({
74
+            @ApiImplicitParam(paramType = "body", dataType = "String", name = "paramets", value ="id:公告id(多个)")})
75
+    @RequestMapping(value="/deleteAnnouncement",method = RequestMethod.POST)
76
+    public ResponseBean deleteAnnouncement(@RequestBody String paramets,HttpSession session){
77
+        UserElement userElement = getUserElement(session);
78
+        ResponseBean tpAnnouncement= tpAnnouncementService.deleteAnnouncement(paramets,userElement.getCommunityId(),userElement.getId());
79
+        return tpAnnouncement;
80
+    }
81
+
72 82
 
73 83
 }

+ 1
- 3
CODE/smart-community/property-api/src/main/java/com/community/huiju/dao/TpAnnouncementMapper.java Ver fichero

@@ -17,13 +17,11 @@ public interface TpAnnouncementMapper extends BaseMapper<TpAnnouncement> {
17 17
 
18 18
     int insert(TpAnnouncement record);
19 19
 
20
-    int insertSelective(TpAnnouncement record);
21
-
22 20
     TpAnnouncement selectByPrimaryKey(@Param("id") Integer id, @Param("communityId") Integer communityId);
23 21
 
24 22
     int updateByPrimaryKeySelective(@Param("id") Integer id, @Param("viewCount") Integer viewCount);
25 23
 
26
-    int updateByPrimaryKey(TpAnnouncement record);
24
+    int updateTpAnnouncement(TpAnnouncement record);
27 25
 
28 26
     IPage<TpAnnouncement> getAnnouncements(Page page ,@Param("record")TpAnnouncement record);
29 27
 

+ 9
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/TpAnnouncementService.java Ver fichero

@@ -39,4 +39,13 @@ public interface TpAnnouncementService extends IService<TpAnnouncement> {
39 39
      * @return
40 40
      */
41 41
     ResponseBean updateAnnouncement(String paramets,Integer communityId,Integer userId);
42
+
43
+    /**
44
+     * 批量删除公告
45
+      * @param paramets
46
+     * @param communityId
47
+     * @param id
48
+     * @return
49
+     */
50
+    ResponseBean deleteAnnouncement(String paramets, Integer communityId, Integer id);
42 51
 }

+ 19
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/TpAnnouncementServiceImpl.java Ver fichero

@@ -185,4 +185,23 @@ private  TpAnnouncementMapper tpAnnouncementMapper;
185 185
         }
186 186
         return response;
187 187
     }
188
+
189
+    @Override
190
+    public ResponseBean deleteAnnouncement(String paramets, Integer communityId, Integer userId) {
191
+        ResponseBean response = new ResponseBean();
192
+        JSONObject parseObject = JSONObject.parseObject(paramets);
193
+
194
+        JSONArray announcementIdId = parseObject.getJSONArray("id");
195
+        Integer[] announcementIdArray = announcementIdId.toArray(new Integer[]{});
196
+        for (Integer id : announcementIdArray) {
197
+            TpAnnouncement tpAnnouncement = new TpAnnouncement();
198
+            tpAnnouncement.setId(id);
199
+            tpAnnouncement.setCommunityId(communityId);
200
+            tpAnnouncement.setStatus("0");
201
+            tpAnnouncement.setUpdateUser(userId);
202
+            tpAnnouncement.setUpdateDate(new Date());
203
+            tpAnnouncementMapper.updateTpAnnouncement(tpAnnouncement);
204
+        }
205
+        return response;
206
+    }
188 207
 }

+ 42
- 1
CODE/smart-community/property-api/src/main/resources/mapper/TpAnnouncementMapper.xml Ver fichero

@@ -32,5 +32,46 @@
32 32
     tp_announcement
33 33
     WHERE community_id = #{record.communityId,jdbcType=INTEGER}
34 34
   </select>
35
-
35
+  <update id="updateTpAnnouncement" parameterType="com.community.huiju.model.TpAnnouncement" >
36
+    update tp_announcement
37
+    <set >
38
+      <if test="communityId != null" >
39
+        community_id = #{communityId,jdbcType=INTEGER},
40
+      </if>
41
+      <if test="announcementTitle != null" >
42
+        announcement_title = #{announcementTitle,jdbcType=VARCHAR},
43
+      </if>
44
+      <if test="announcementCarouselImg != null and announcementCarouselImg !=''">
45
+        announcement_carousel_img = #{announcementCarouselImg,jdbcType=VARCHAR},
46
+      </if>
47
+      <if test="announcementContent != null" >
48
+        announcement_content = #{announcementContent,jdbcType=VARCHAR},
49
+      </if>
50
+      <if test="sort != null" >
51
+        sort = #{sort,jdbcType=INTEGER},
52
+      </if>
53
+      <if test="viewCount != null" >
54
+        view_count = #{viewCount,jdbcType=INTEGER},
55
+      </if>
56
+      <if test="setUpCarousel != null" >
57
+        set_up_carousel = #{setUpCarousel,jdbcType=CHAR},
58
+      </if>
59
+      <if test="status != null" >
60
+        status = #{status,jdbcType=CHAR},
61
+      </if>
62
+      <if test="createUser != null" >
63
+        create_user = #{createUser,jdbcType=INTEGER},
64
+      </if>
65
+      <if test="createDate != null" >
66
+        create_date = #{createDate,jdbcType=TIMESTAMP},
67
+      </if>
68
+      <if test="updateUser != null" >
69
+        update_user = #{updateUser,jdbcType=INTEGER},
70
+      </if>
71
+      <if test="updateDate != null" >
72
+        update_date = #{updateDate,jdbcType=TIMESTAMP},
73
+      </if>
74
+    </set>
75
+    where id = #{id,jdbcType=INTEGER}
76
+  </update>
36 77
 </mapper>

+ 10
- 0
VUECODE/smart-property-manage/src/api/announcement.js Ver fichero

@@ -54,3 +54,13 @@ export function updateannouncement(data) {
54 54
     }
55 55
   })
56 56
 }
57
+// 批量删除(data)里面是单子字段的多个id
58
+export function deleteAnnouncement(data) {
59
+  return request({
60
+    url: '/deleteAnnouncement',
61
+    method: 'post',
62
+    data: {
63
+      id: data
64
+    }
65
+  })
66
+}

+ 7
- 0
VUECODE/smart-property-manage/src/router/index.js Ver fichero

@@ -157,6 +157,13 @@ export const constantRouterMap = [
157 157
         name: 'signUp-info',
158 158
         hidden: true,
159 159
         meta: { title: '活动报名人', icon: 'table' }
160
+      },
161
+      {     
162
+        path: '/announcement',
163
+        component: () => import('@/views/social/announcement/details'),
164
+        name: 'contentParticulars-details',
165
+        hidden: true,
166
+        meta: { title: '编辑公告', icon: 'table' }
160 167
       }
161 168
     ]
162 169
   },

+ 13
- 1
VUECODE/smart-property-manage/src/store/modules/announcement.js Ver fichero

@@ -1,4 +1,4 @@
1
-import { listAnnouncement, addAnnouncement, announcementById, updateannouncement } from '@/api/announcement'
1
+import { listAnnouncement, addAnnouncement, announcementById, updateannouncement, deleteAnnouncement } from '@/api/announcement'
2 2
 
3 3
 const announcement = {
4 4
   actions: {
@@ -49,6 +49,18 @@ const announcement = {
49 49
           reject(error)
50 50
         })
51 51
       })
52
+    },
53
+    /**
54
+     * 批量删除
55
+     */
56
+    DeleteAnnouncement({ commit }, data) {
57
+      return new Promise((resolve, reject) => {
58
+        deleteAnnouncement(data).then(response => {
59
+          resolve(response)
60
+        }).catch(error => {
61
+          reject(error)
62
+        })
63
+      })
52 64
     }
53 65
   }
54 66
 }

+ 8
- 9
VUECODE/smart-property-manage/src/views/social/announcement/add.vue Ver fichero

@@ -1,10 +1,10 @@
1 1
 <template>
2 2
   <div id="root">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-position="top" label-width="150px" class="ruleForm">
4
-      <el-form-item label="活动标题" prop="announcementTitle">
4
+      <el-form-item label="公告标题" prop="announcementTitle">
5 5
         <el-input v-model="ruleForm.announcementTitle" placeholder="15字以内"/>
6 6
       </el-form-item>
7
-      <el-form-item label="活动轮播图" prop="announcementCarouselImg">
7
+      <el-form-item label="公告轮播图" prop="announcementCarouselImg">
8 8
         <el-upload
9 9
           :show-file-list="false"
10 10
           :on-success="handleAvatarSuccess"
@@ -16,10 +16,10 @@
16 16
           <i v-else class="el-icon-plus avatar-uploader-icon"/>
17 17
         </el-upload>
18 18
       </el-form-item>
19
-      <el-form-item label="活动详细描述">
20
-        <el-input v-model="ruleForm.announcementContent" :rows="10" type="textarea" placeholder="活动内容, 活动规则, 活动举办开始时间, 活动举办结束时间, 报名人数上限等"/>
19
+      <el-form-item label="公告详细描述">
20
+        <el-input v-model="ruleForm.announcementContent" :rows="10" type="textarea" placeholder="公告内容"/>
21 21
       </el-form-item>
22
-      <el-form-item label="活动配图">
22
+      <el-form-item label="公告配图">
23 23
         <el-upload
24 24
           :on-preview="handlePictureCardPreview"
25 25
           :on-remove="handleRemove"
@@ -62,11 +62,11 @@ export default {
62 62
       dialogImageUrl: '', // 活动配图, 图片链接 (以单张为单位)
63 63
       rules: {
64 64
         announcementTitle: [
65
-          { required: true, message: '请输入活动名称', trigger: 'blur' },
65
+          { required: true, message: '请输入公告名称', trigger: 'blur' },
66 66
           { min: 1, max: 15, message: '长度在 15 个字符以内', trigger: 'blur' }
67 67
         ],
68 68
         announcementContent: [
69
-          { required: true, message: '活动详细描述', trigger: 'blur' }
69
+          { required: true, message: '公告详细描述', trigger: 'blur' }
70 70
         ],
71 71
         sort: [
72 72
           { required: true, message: '请输入权重值', trigger: 'change' }
@@ -87,7 +87,7 @@ export default {
87 87
       this.$refs[formName].validate((valid) => {
88 88
         if (valid) {
89 89
           if (this.ruleForm.announcementContent.length <= 0 && this.ruleForm.contentImg.length <= 0) {
90
-            this.$message.error('活动内容描述 和 活动配图至少要存在一个!')
90
+            this.$message.error('公告内容描述 和 公告配图至少要存在一个!')
91 91
             return 
92 92
           }
93 93
           this.ruleForm.status = status // 发布状态
@@ -147,7 +147,6 @@ export default {
147 147
     handleSuccessContentImg(response, file, fileList) { // 活动配图上传成功时回调
148 148
       const resImg = response.data[0]
149 149
       this.ruleForm.contentImg.push(resImg)
150
-      console.log('上传活动配图成功时回调!')
151 150
     },
152 151
     sortHandleChange(value) { // 权重值
153 152
       this.ruleForm.sort = value

+ 151
- 0
VUECODE/smart-property-manage/src/views/social/announcement/details.vue Ver fichero

@@ -0,0 +1,151 @@
1
+<template>
2
+  <div id="root">
3
+    <span class="activityTile">{{ ruleForm.activityTitle }}</span>
4
+    <img :src="ruleForm.activityCarouselImg" width="700" height="500">
5
+    <div class="activityContext">
6
+      {{ ruleForm.activityContent }}
7
+    </div>
8
+    <div class="activityContextImg">
9
+       <img v-for="item in ruleForm.contentImg" :src="item" width="700" height="500" >
10
+    </div>
11
+    <div class="progress">
12
+      <div class="text-progress">
13
+        <span class="people-number">已报名人数 {{ ruleForm.signUpCount }}</span>
14
+        <div class="outer-layer"/>
15
+        <div class="inner-layer"/>
16
+      </div>
17
+      <div class="circular"/>
18
+      <div class="people-limit">限制{{ ruleForm.signUpMax }}人</div>
19
+      <el-button type="primary" style="float: left;">查看报名名单</el-button>
20
+    </div>
21
+    <span>报名截止时间:{{ formatDate(ruleForm.registrationEndTime) }}</span>
22
+    <div class="bom-button">
23
+      <el-button type="primary" style="width: 100px;" @click="ediActivity">修改</el-button>
24
+    </div>
25
+  </div>
26
+</template>
27
+
28
+<script>
29
+export default {
30
+  name: 'Index',
31
+  data() {
32
+    return {
33
+      asOfdate: '2018/10/10 23:59:59',
34
+      ruleForm: {
35
+        id: '',
36
+        activityTitle: '',
37
+        activityCarouselImg: '', // 轮播图
38
+        activityContent: '', // 活动内容详细
39
+        contentImg: [], // 活动内容配图
40
+        signUpCount: '', // 报名人数统计
41
+        signUpMax: '', //  活动人数上限
42
+        registrationEndTime: '', // 报名活动结束时间
43
+        sort: 1, // 权重
44
+        status: '' // 状态 0 是已作废 1 是已发布   2 是草稿 3 是已修改
45
+      }
46
+    }
47
+  },
48
+  mounted() {
49
+    this.getById(this.$route.params.id)
50
+    console.log("this.$route.params.id",this.$route.params.id)
51
+  },
52
+  methods: {
53
+    getById(id) { // 根据ID获取活动信息
54
+    console.log(123)
55
+    console.log(id)
56
+      this.$store.dispatch('ActivityById', id).then((res) => {
57
+        const resData = res.data
58
+        this.ruleForm = resData.info
59
+        this.ruleForm.contentImg = resData.contentImg
60
+      })
61
+    },
62
+    formatDate(val) {
63
+      var value = new Date(val)
64
+      var year = value.getFullYear()
65
+      var month = value.getMonth() + 1
66
+      var day = value.getDate()
67
+      // var hour = value.getHours()
68
+      // var minutes = value.getMinutes()
69
+      // var seconds = value.getSeconds()
70
+      // return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds
71
+      return year + '-' + month + '-' + day
72
+    },
73
+    ediActivity() { // 修改活动
74
+      this.$router.push({ name: 'activity-edi', params: { id: this.ruleForm.id }})
75
+    }
76
+  }
77
+}
78
+</script>
79
+
80
+<style scoped>
81
+#root {
82
+  display: flex;
83
+  flex-flow: column;
84
+  width: 700px;
85
+  margin-top: 50px;
86
+  margin-left: auto;
87
+  margin-right: auto;
88
+}
89
+.activityTile{
90
+  text-align: center;
91
+  font-size: 30px;
92
+  margin-bottom: 10px;
93
+}
94
+.activityContext{
95
+  margin-top: 20px;
96
+  margin-bottom: 20px;
97
+  font-size: 20px;
98
+  justify-items: center;
99
+}
100
+.progress {
101
+  display: flex;
102
+  justify-content: space-between;
103
+  margin-top: 20px;
104
+  margin-bottom: 20px;
105
+}
106
+.text-progress {
107
+  width: 500px;
108
+  float: left;
109
+  align-content: center;
110
+  position: absolute;
111
+  margin-top: 12px;
112
+}
113
+.people-number {
114
+  position: relative;
115
+  margin-left: 180px;
116
+}
117
+.outer-layer {
118
+  background-color: gainsboro;
119
+  height: 3px;
120
+  width: 450px;
121
+  margin-top: -10px;
122
+  position: relative;
123
+}
124
+.inner-layer {
125
+  background-color: aquamarine;
126
+  height: 6px;
127
+  width: 100px;
128
+  position: relative;
129
+  margin-top: -4px;
130
+}
131
+.circular {
132
+  border: 1px #001528 solid;
133
+  border-radius: 10px;
134
+  /*background-color: chartreuse;*/
135
+  width: 20px;
136
+  height: 20px;
137
+  position: relative;
138
+  margin-left: 452px;
139
+  margin-top: 11px;
140
+  float: left;
141
+}
142
+.people-limit {
143
+  margin-top: 13px;
144
+}
145
+.bom-button{
146
+  display: flex;
147
+  justify-content: center;
148
+  margin-top: 20px;
149
+  margin-bottom: 100px;
150
+}
151
+</style>

+ 10
- 10
VUECODE/smart-property-manage/src/views/social/announcement/edit.vue Ver fichero

@@ -1,10 +1,10 @@
1 1
 <template>
2 2
   <div id="root">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-position="top" label-width="150px" class="ruleForm">
4
-      <el-form-item label="活动标题" prop="announcementTitle">
4
+      <el-form-item label="公告标题" prop="announcementTitle">
5 5
         <el-input v-model="ruleForm.announcementTitle" placeholder="15字以内"/>
6 6
       </el-form-item>
7
-      <el-form-item label="活动轮播图" prop="announcementCarouselImg">
7
+      <el-form-item label="公告轮播图" prop="announcementCarouselImg">
8 8
         <el-upload
9 9
           :show-file-list="false"
10 10
           :on-success="handleAvatarSuccess"
@@ -16,10 +16,10 @@
16 16
           <i v-else class="el-icon-plus avatar-uploader-icon"/>
17 17
         </el-upload>
18 18
       </el-form-item>
19
-      <el-form-item label="活动详细描述">
20
-        <el-input v-model="ruleForm.announcementContent" :rows="10" type="textarea" placeholder="活动内容, 活动规则, 活动举办开始时间, 活动举办结束时间, 报名人数上限等"/>
19
+      <el-form-item label="公告详细描述">
20
+        <el-input v-model="ruleForm.announcementContent" :rows="10" type="textarea" placeholder="公告内容"/>
21 21
       </el-form-item>
22
-      <el-form-item label="活动配图">
22
+      <el-form-item label="公告配图">
23 23
         <el-upload
24 24
           :on-preview="handlePictureCardPreview"
25 25
           :on-remove="handleRemove"
@@ -60,15 +60,15 @@ export default {
60 60
       },
61 61
       contentImgList: [],
62 62
       Urlimage: '', // 轮播图预览
63
-      dialogVisible: false, // 活动配图, 默认不显示 (以单张为单位)
64
-      dialogImageUrl: '', // 活动配图, 图片链接 (以单张为单位)
63
+      dialogVisible: false, // 公告配图, 默认不显示 (以单张为单位)
64
+      dialogImageUrl: '', // 公告配图, 图片链接 (以单张为单位)
65 65
       rules: {
66 66
         announcementTitle: [
67
-          { required: true, message: '请输入活动名称', trigger: 'blur' },
67
+          { required: true, message: '请输入公告名称', trigger: 'blur' },
68 68
           { min: 1, max: 15, message: '长度在 15 个字符以内', trigger: 'blur' }
69 69
         ],
70 70
         announcementContent: [
71
-          { required: true, message: '活动详细描述', trigger: 'blur' }
71
+          { required: true, message: '公告详细描述', trigger: 'blur' }
72 72
         ],
73 73
         sort: [
74 74
           { required: true, message: '请输入权重值', trigger: 'change' }
@@ -92,7 +92,7 @@ export default {
92 92
       this.$refs[formName].validate((valid) => {
93 93
         if (valid) {
94 94
           if (this.ruleForm.announcementContent.length <= 0 && this.ruleForm.contentImg.length <= 0) {
95
-            this.$message.error('活动内容描述 和 活动配图至少要存在一个!')
95
+            this.$message.error('公告内容描述 和 公告配图至少要存在一个!')
96 96
             loading.close()
97 97
             return 
98 98
           }

+ 29
- 13
VUECODE/smart-property-manage/src/views/social/announcement/index.vue Ver fichero

@@ -16,7 +16,7 @@
16 16
     <div class="button">
17 17
       <el-button type="primary" @click="add">添加</el-button>
18 18
       <el-button type="warning" @click="edit">修改</el-button>
19
-      <el-button type="danger">作废</el-button>
19
+      <el-button type="danger" @click="deleteAnnouncement">作废</el-button>
20 20
     </div>
21 21
     <el-table
22 22
       v-loading="listLoading"
@@ -30,10 +30,19 @@
30 30
         type="selection"
31 31
         width="55"/>
32 32
       <el-table-column prop="id" label="编号" align="center"/>
33
-      <el-table-column prop="announcementTitle" label="标题" align="center" />
33
+      <el-table-column prop="announcementTitle" label="标题" align="center" >
34
+        <template slot-scope="scope"><a><span @click="clickTitle(scope.row.id)" style="text-decoration: underline; color: blue ">{{ scope.row.announcementTitle }}</span></a></template>
35
+      </el-table-column>
34 36
       <el-table-column prop="viewCount" label="查看数量" align="center"/>
35 37
       <el-table-column prop="sort" label="权重" align="center"/>
36
-      <el-table-column prop="status" label="状态" align="center"/>
38
+      <el-table-column prop="status" label="状态" align="center">
39
+        <template slot-scope="scope">
40
+          <span v-if="scope.row.status==0">{{ '已作废' }}</span>
41
+          <span v-if="scope.row.status==1">{{ '已发布' }}</span>
42
+          <span v-if="scope.row.status==2">{{ '草稿' }}</span>
43
+          <span v-if="scope.row.status==3">{{ '已修改' }}</span>
44
+        </template>
45
+      </el-table-column>   
37 46
       <el-table-column prop="createDate" label="发布时间" align="center"><template slot-scope="scope">{{ formatDate(scope.row.createDate) }}</template></el-table-column>
38 47
       <el-table-column prop="createUserName" label="发布人" align="center"/>
39 48
       <el-table-column prop="updateDate" label="修改时间" align="center" ><template slot-scope="scope">{{ formatDate(scope.row.updateDate) }}</template></el-table-column>
@@ -59,6 +68,7 @@ export default {
59 68
   data() {
60 69
     return {
61 70
       listQuery: {
71
+        id: '',
62 72
         number: '',
63 73
         announcementTitle: '',
64 74
         viewCount: '',
@@ -102,16 +112,6 @@ export default {
102 112
       value = value < 10 ? '0' + value : value
103 113
       return value
104 114
     },
105
-    // formatDate(val) {
106
-    //   var value = new Date(val)
107
-    //   var year = value.getFullYear()
108
-    //   var month = this.padDate(value.getMonth() + 1)
109
-    //   var day = this.padDate(value.getDate())
110
-    //   var hour = this.padDate(value.getHours())
111
-    //   var minutes = this.padDate(value.getMinutes())
112
-    //   var seconds = this.padDate(value.getSeconds())
113
-    //   return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds
114
-    // },
115 115
     dataQuery() { // 查询数据
116 116
       this.listLoading = true
117 117
       this.$store.dispatch('ListAnnouncement', this.listQuery).then((res) => {
@@ -160,6 +160,22 @@ export default {
160 160
       }
161 161
       this.$router.push({ name: 'announcement-edit', params: { id: ids[0] }})
162 162
      },
163
+     deleteAnnouncement(){
164
+      const ids = this.deleteIds
165
+      this.listLoading = true
166
+      console.log(ids)
167
+      this.$store.dispatch('DeleteAnnouncement',ids).then((res) => {
168
+        this.listLoading = false
169
+        this.dataQuery()
170
+      }).catch(() => {
171
+        this.listLoading = false
172
+        console.log('error DeleteAnnouncement')
173
+      })
174
+     },
175
+    clickTitle(id){
176
+      console.log("id:",id)
177
+      this.$router.push({ name: 'contentParticulars-details' , params: { id: id }})
178
+    },
163 179
     formatDate(val) {
164 180
       var value = new Date(val)
165 181
       var year = value.getFullYear()