Parcourir la source

feat():init

geek il y a 4 ans
Parent
commit
c25b6d0162

+ 4 - 20
src/api/join.js

@@ -8,33 +8,17 @@ export function fetchList(query) {
   })
 }
 
-export function fetchJoin(id) {
+export function fetchBrand(id) {
   return request({
-    url: '/join/read',
+    url: '/brand/read',
     method: 'get',
     params: { id }
   })
 }
 
-export function createBanner(data) {
+export function updateBrand(data) {
   return request({
-    url: '/Carousel/save',
-    method: 'post',
-    data
-  })
-}
-
-export function updateJoin(data) {
-  return request({
-    url: '/Join/update?id=' + data.id,
-    method: 'post',
-    data
-  })
-}
-
-export function dealJoin(data) {
-  return request({
-    url: '/Join/dealJoin',
+    url: '/brand/update?id=' + data.id,
     method: 'post',
     data
   })

+ 9 - 9
src/api/advice.js

@@ -2,39 +2,39 @@ import request from '@/utils/request'
 
 export function fetchList(query) {
   return request({
-    url: '/advice/index',
+    url: '/home/index',
     method: 'get',
     params: query
   })
 }
 
-export function fetchAdvice(id) {
+export function fetchHome(id) {
   return request({
-    url: '/advice/read',
+    url: '/home/read',
     method: 'get',
     params: { id }
   })
 }
 
-export function createAdvice(data) {
+export function createHome(data) {
   return request({
-    url: '/advice/save',
+    url: '/home/save',
     method: 'post',
     data
   })
 }
 
-export function updateAdvice(data) {
+export function updateHome(data) {
   return request({
-    url: '/advice/update?id=' + data.id,
+    url: '/home/update?id=' + data.id,
     method: 'post',
     data
   })
 }
 
-export function deleteAdvice(id) {
+export function deleteHome(id) {
   return request({
-    url: '/advice/delete?id=' + id,
+    url: '/home/delete?id=' + id,
     method: 'get'
   })
 }

+ 2 - 2
src/api/setting.js

@@ -2,14 +2,14 @@ import request from '@/utils/request'
 
 export function fetchSetting(type) {
   return request({
-    url: '/setting/read?type=' + type,
+    url: '/setting/read',
     method: 'get',
     params: { type }
   })
 }
 export function updateSetting(data, type) {
   return request({
-    url: '/setting/update?type=' + type,
+    url: '/setting/update',
     method: 'post',
     data
   })

+ 1 - 1
src/components/Tinymce/index.vue

@@ -14,7 +14,7 @@
  */
 // import editorImage from './components/EditorImage'
 import plugins from './plugins'
-import toolbar from './toolbar'
+// import toolbar from './toolbar'
 import load from './dynamicLoadScript'
 import { uploadImg } from '@/api/qiniu'
 

+ 30 - 229
src/router/index.js

@@ -68,101 +68,65 @@ export const constantRoutes = [
     ]
   },
   {
-    path: '/join',
+    path: '/home',
     component: Layout,
+    meta: {
+      title: '图片列表',
+      icon: 'el-icon-setting'
+    },
     children: [
       {
         path: 'list',
-        name: 'join',
-        component: () => import('@/views/join/list'),
-        meta: { title: '新店加盟申请列表', icon: 'el-icon-s-help' }
+        name: 'home',
+        component: () => import('@/views/home/list'),
+        meta: { title: '图片列表', icon: 'el-icon-s-help' }
       },
       {
         path: 'edit/:id(\\d+)',
-        name: 'editJoin',
-        component: () => import('@/views/join/edit'),
-        meta: { title: '新店加盟申请查看', icon: 'el-icon-s-help' },
+        name: 'edithome',
+        component: () => import('@/views/home/edit'),
+        meta: { title: '查看图片', icon: 'el-icon-s-help' },
         hidden: true
-      }
-    ]
-  },
-  {
-    path: '/branchJoin',
-    component: Layout,
-    children: [
-      {
-        path: 'list',
-        name: 'join',
-        component: () => import('@/views/branchJoin/list'),
-        meta: { title: '分店加盟申请列表', icon: 'el-icon-s-help' }
       },
       {
-        path: 'edit/:id(\\d+)',
-        name: 'editJoin',
-        component: () => import('@/views/branchJoin/edit'),
-        meta: { title: '分店申请查看', icon: 'el-icon-s-help' },
-        hidden: true
-      }
-    ]
-  },
-  {
-    path: '/city',
-    component: Layout,
-    children: [
-      {
-        path: 'list',
-        name: 'join',
-        component: () => import('@/views/city/list'),
-        meta: { title: '开放区域列表', icon: 'el-icon-s-help' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        name: 'editJoin',
-        component: () => import('@/views/join/edit'),
-        meta: { title: '加盟申请查看', icon: 'el-icon-s-help' },
-        hidden: true
+        path: 'create',
+        name: 'createHome',
+        component: () => import('@/views/home/create'),
+        meta: { title: '创建图片', icon: 'el-icon-s-help' }
       }
     ]
   },
   {
-    path: '/advice',
+    path: '/setting',
     component: Layout,
+    name: 'setting',
+    meta: {
+      title: '基本设置',
+      icon: 'el-icon-setting'
+    },
     children: [
       {
-        path: 'list',
-        name: 'advice',
-        component: () => import('@/views/advice/list'),
-        meta: { title: '意见列表', icon: 'el-icon-s-help' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        name: 'editAdvice',
-        component: () => import('@/views/advice/edit'),
-        meta: { title: '查看意见', icon: 'el-icon-s-help' },
-        hidden: true
+        path: 'edit',
+        component: () => import('@/views/setting/edit'),
+        name: 'CreateBanner',
+        meta: { title: '参数设置', icon: 'el-icon-edit' }
       }
     ]
   },
   {
-    path: '/setting',
+    path: '/brand',
     component: Layout,
-    name: 'setting',
+    name: 'brand',
     meta: {
-      title: '小程序设置',
+      title: '基本设置',
       icon: 'el-icon-setting'
     },
     children: [
       {
         path: 'edit',
-        component: () => import('@/views/setting/edit'),
+        component: () => import('@/views/brand/edit'),
         name: 'CreateBanner',
-        meta: { title: '门店数量', icon: 'el-icon-edit' }
-      },
-      {
-        path: 'editServer',
-        component: () => import('@/views/setting/editServer'),
-        name: 'EditBanner',
-        meta: { title: '服务协议', icon: 'el-icon-edit' }
+        meta: { title: '品牌介绍', icon: 'el-icon-edit' }
       }
     ]
   },
@@ -197,169 +161,6 @@ export const constantRoutes = [
       }
     ]
   },
-  {
-    path: '/question',
-    component: Layout,
-    redirect: '/banner/list',
-    name: 'question',
-    meta: {
-      title: '常见疑问设置',
-      icon: 'el-icon-s-help'
-    },
-    children: [
-      {
-        path: 'create',
-        component: () => import('@/views/question/create'),
-        name: 'CreateQuestion',
-        meta: { title: '创建疑问', icon: 'el-icon-edit' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        component: () => import('@/views/question/edit'),
-        name: 'EditBanner',
-        meta: { title: '修改疑问', noCache: true, activeMenu: '/question/list' },
-        hidden: true
-      },
-      {
-        path: 'list',
-        component: () => import('@/views/question/list'),
-        name: 'BannerList',
-        meta: { title: '常见疑问列表', icon: 'el-icon-s-order' }
-      }
-    ]
-  },
-  {
-    path: '/user',
-    component: Layout,
-    redirect: '/user/list',
-    name: 'user',
-    meta: {
-      title: '用户',
-      icon: 'el-icon-user'
-    },
-    children: [
-      {
-        path: 'create',
-        component: () => import('@/views/user/create'),
-        name: 'CreateUser',
-        meta: { title: '创建用户', icon: 'el-icon-edit' },
-        hidden: true
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        component: () => import('@/views/user/edit'),
-        name: 'EditUser',
-        meta: { title: '修改用户', noCache: true, activeMenu: '/user/list' },
-        hidden: true
-      },
-      {
-        path: 'list',
-        component: () => import('@/views/user/list'),
-        name: 'UserList',
-        meta: { title: '用户列表', icon: 'el-icon-s-order' }
-      }
-    ]
-  },
-  {
-    path: '/article',
-    component: Layout,
-    redirect: '/article/list',
-    name: 'article',
-    meta: {
-      title: '资讯信息',
-      icon: 'el-icon-reading'
-    },
-    children: [
-      {
-        path: 'create',
-        component: () => import('@/views/article/create'),
-        name: 'CreateArticle',
-        meta: { title: '创建资讯', icon: 'el-icon-edit' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        component: () => import('@/views/article/edit'),
-        name: 'EditArticle',
-        meta: { title: '修改资讯', noCache: true, activeMenu: '/article/list' },
-        hidden: true
-      },
-      {
-        path: 'list',
-        component: () => import('@/views/article/list'),
-        name: 'ArticleList',
-        meta: { title: '资讯列表', icon: 'el-icon-s-order' }
-      }
-    ]
-  },
-  {
-    path: '/live',
-    component: Layout,
-    redirect: '/live/list',
-    name: 'live',
-    meta: {
-      title: '直播列表',
-      icon: 'el-icon-reading'
-    },
-    children: [
-      {
-        path: 'create',
-        component: () => import('@/views/live/create'),
-        name: 'CreateLive',
-        meta: { title: '创建直播间', icon: 'el-icon-edit' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        component: () => import('@/views/live/edit'),
-        name: 'EditLive',
-        meta: { title: '修改直播间', noCache: true, activeMenu: '/live/list' },
-        hidden: true
-      },
-      {
-        path: 'list',
-        component: () => import('@/views/live/list'),
-        name: 'ArticleLive',
-        meta: { title: '直播列表', icon: 'el-icon-s-order' }
-      },
-      {
-        path: 'chatList/:id(\\d+)',
-        component: () => import('@/views/live/chatList'),
-        name: 'chatList',
-        meta: { title: '聊天列表', noCache: true, activeMenu: '/live/list' },
-        hidden: true
-      }
-    ]
-  },
-  {
-    path: '/video',
-    component: Layout,
-    redirect: '/video/list',
-    name: 'video',
-    meta: {
-      title: '短视频',
-      icon: 'el-icon-video-camera'
-    },
-    children: [
-      {
-        path: 'create',
-        component: () => import('@/views/video/create'),
-        name: 'CreateVideo',
-        meta: { title: '创建短视频', icon: 'el-icon-edit' }
-      },
-      {
-        path: 'edit/:id(\\d+)',
-        component: () => import('@/views/video/edit'),
-        name: 'EditVideo',
-        meta: { title: '修改短视频', noCache: true, activeMenu: '/video/list' },
-        hidden: true
-      },
-      {
-        path: 'list',
-        component: () => import('@/views/video/list'),
-        name: 'VideoList',
-        meta: { title: '短视频列表', icon: 'el-icon-s-order' }
-      }
-    ]
-  },
   // 404 page must be placed at the end !!!
   { path: '*', redirect: '/404', hidden: true }
 ]

+ 33 - 48
src/views/banner/components/ArticleDetail.vue

@@ -1,56 +1,39 @@
 <template>
   <div class="createPost-container">
-    <el-form ref="postForm" :model="postForm" :rules="rules" class="form-container">
+    <el-form ref="postForm" :model="postForm" :rules="rules" class="form-container" :label-position="labelPosition" label-width="100px">
       <div class="createPost-main-container">
         <el-row>
           <el-col :span="24">
             <div class="postInfo-container">
-              <div style="margin-bottom: 10px;">banner图</div>
-              <el-form-item prop="url" style="margin-bottom: 30px;" label="">
+              <el-form-item prop="url" style="margin-bottom: 30px;" label="轮播图片">
                 <Upload v-model="postForm.url" />
               </el-form-item>
             </div>
           </el-col>
         </el-row>
-        <el-row>
-          <div class="postInfo-container">
-            <div style="margin-bottom: 10px;">跳转路径</div>
-            <el-form-item prop="redirect" style="margin-bottom: 30px;" label="">
-              <el-input v-model="postForm.redirect" placeholder="请输入路径" style="width: 300px;" />
-            </el-form-item>
-          </div>
-        </el-row>
-        <el-row>
-          <div class="postInfo-container">
-            <div style="margin-bottom: 10px;">排序</div>
-            <el-form-item prop="sort" style="margin-bottom: 30px;" label="">
-              <el-input v-model="postForm.sort" placeholder="排序(倒序)" style="width: 100px;" />
-            </el-form-item>
-          </div>
-        </el-row>
-        <el-row>
-          <div class="postInfo-container">
-            <div style="margin-bottom: 10px;">所属位置</div>
-            <el-form-item prop="position" style="margin-bottom: 30px;" label="">
-              <template>
-                <el-radio-group v-model="postForm.position">
-                  <el-radio :label="1">首页</el-radio>
-                  <el-radio :label="2">资讯列表</el-radio>
-                  <el-radio :label="3">短视频页</el-radio>
-                  <el-radio :label="4">开业指导页</el-radio>
-                </el-radio-group>
-              </template>
-            </el-form-item>
-          </div>
-        </el-row>
-        <el-row>
-          <div class="postInfo-container">
-            <div style="margin-bottom: 10px;">状态</div>
-            <el-form-item prop="status" style="margin-bottom: 30px;" label="">
-              <el-switch v-model="postForm.status" active-text="激活" inactive-text="隐藏" />
-            </el-form-item>
-          </div>
-        </el-row>
+        <el-form-item prop="sort" style="margin-bottom: 30px;" label="排序">
+          <el-input v-model="postForm.sort" placeholder="排序(倒序)" style="width: 100px;" />
+        </el-form-item>
+        <el-form-item prop="position" style="margin-bottom: 30px;" label="所属位置">
+          <template>
+            <el-radio-group v-model="postForm.position">
+              <el-radio :label="1">门店</el-radio>
+              <el-radio :label="2">产品</el-radio>
+            </el-radio-group>
+          </template>
+        </el-form-item>
+        <el-form-item v-if="postForm.position === 2" prop="product_name" style="margin-bottom: 30px;" label="产品名称">
+          <el-input v-model="postForm.product_name" placeholder="" style="width: 300px;" />
+        </el-form-item>
+        <el-form-item v-if="postForm.position === 2" prop="product_desc" style="margin-bottom: 30px;" label="产品描述">
+          <el-input v-model="postForm.product_desc" placeholder="" style="width: 600px;" type="textarea" />
+        </el-form-item>
+        <el-form-item v-if="postForm.position === 2" prop="product_series" style="margin-bottom: 30px;" label="产品系列">
+          <el-input v-model="postForm.product_series" placeholder="" style="width: 300px;" />
+        </el-form-item>
+        <el-form-item prop="status" style="margin-bottom: 30px;" label="状态">
+          <el-switch v-model="postForm.status" active-text="激活" inactive-text="隐藏" />
+        </el-form-item>
         <el-row>
           <el-button v-if="!isEdit" v-loading="loading" type="success" @click="submitForm">
             提交
@@ -116,7 +99,8 @@ export default {
       rules: {
         url: [{ message: 'banner图不为空', validator: validateRequire }]
       },
-      tempRoute: {}
+      tempRoute: {},
+      labelPosition: 'left'
     }
   },
   computed: {
@@ -136,6 +120,7 @@ export default {
       fetchBanner(id).then(response => {
         this.postForm = response.data.info
         this.postForm.status = this.postForm.status === 1
+        console.log(this.postForm.position)
         this.postForm.position = this.editPosition(this.postForm.position)
         // set tags view title
         // this.setTagsViewTitle()
@@ -161,7 +146,7 @@ export default {
           createBanner(this.postForm).then(response => {
             this.$notify({
               title: '成功',
-              message: 'banner创建成功',
+              message: '创建成功',
               type: 'success',
               duration: 2000
             })
@@ -210,9 +195,9 @@ export default {
     formatCreatePosition(position) {
       switch (position) {
         case 1:
-          return 'HOME'
+          return 'SHOP'
         case 2:
-          return 'NEWS'
+          return 'PRODUCT'
         case 3:
           return 'VIDEO'
         case 4:
@@ -221,9 +206,9 @@ export default {
     },
     editPosition(position) {
       switch (position) {
-        case 'HOME':
+        case 'SHOP':
           return 1
-        case 'NEWS':
+        case 'PRODUCT':
           return 2
         case 'VIDEO':
           return 3

+ 10 - 15
src/views/banner/list.vue

@@ -3,12 +3,9 @@
     <div class="filter-container">
       <router-link :to="{ path: '/banner/create' }">
         <el-button v-waves class="filter-item" type="primary" icon="el-icon-edit">
-          新建banner
+          新建轮播图
         </el-button>
       </router-link>
-      <!--<el-checkbox v-model="showReviewer" class="filter-item" style="margin-left:15px;" @change="tableKey=tableKey+1">
-        reviewer
-      </el-checkbox>-->
     </div>
     <el-table v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%">
       <el-table-column align="center" label="ID" width="80">
@@ -22,15 +19,15 @@
           <span>{{ scope.row.create_time }}</span>
         </template>
       </el-table-column>
-      <el-table-column class-name="status-col" label="状态" width="80px">
+      <el-table-column class-name="status-col" align="center" label="状态" width="80px">
         <template slot-scope="{row}">
           <el-tag :type="row.status | statusFilter">
-            {{ row.status == '1' ? "正常" : "隐藏" }}
+            {{ row.status === '1' ? "正常" : "隐藏" }}
           </el-tag>
         </template>
       </el-table-column>
 
-      <el-table-column min-width="300px" label="位置" width="100px">
+      <el-table-column min-width="300px" align="center" label="位置" width="100px">
         <template slot-scope="{row}">
           <router-link :to="'/banner/edit/'+row.id" class="link-type">
             <el-tag :type="row.posiiton | positionFilter">
@@ -39,16 +36,16 @@
           </router-link>
         </template>
       </el-table-column>
-      <el-table-column min-width="300px" label="排序" width="80px">
+      <el-table-column min-width="300px" align="center" label="排序" width="80px">
         <template slot-scope="{row}">
           <el-tag :type="info">
             {{ row.sort }}
           </el-tag>
         </template>
       </el-table-column>
-      <el-table-column min-width="300px" label="跳转路径">
+      <el-table-column min-width="300px" label="产品名称">
         <template slot-scope="{row}">
-          <span>{{ row.redirect }}</span>
+          <span>{{ row.product_name }}</span>
         </template>
       </el-table-column>
       <el-table-column align="center" label="Actions" width="190" class-name="small-padding fixed-width">
@@ -89,7 +86,7 @@ export default {
     },
     positionFilter(status) {
       const statusMap = {
-        'HOME': 'success',
+        'SHOP': 'success',
         draft: 'info',
         2: 'danger'
       }
@@ -97,10 +94,8 @@ export default {
     },
     positionFilterTxt(status) {
       const statusMap = {
-        HOME: '首页',
-        NEWS: '资讯列表',
-        VIDEO: '短视频页',
-        GUIDE: '开店指导'
+        SHOP: '门店',
+        PRODUCT: '产品'
       }
       return statusMap[status]
     }

+ 28 - 25
src/views/city/components/ArticleDetail.vue

@@ -2,14 +2,20 @@
   <div class="createPost-container">
     <el-form ref="postForm" :label-position="labelPosition" :model="postForm" :rules="rules" class="form-container">
       <div class="createPost-main-container">
-        <el-form-item prop="question" style="" label="问题">
-          <el-input v-model="postForm.question" placeholder="" style="width: 300px;" />
+        <el-form-item prop="brand" style="" label="品牌介绍">
+          <el-input v-model="postForm.brand" placeholder="" type="textarea" style="width: 800px;" :rows="3" />
         </el-form-item>
-        <el-form-item prop="content" style="" label="回答">
-          <Tinymce ref="editor" v-model="postForm.answer" :height="400" />
+        <el-form-item prop="brand_desc" style="" label="品牌介绍详细">
+          <el-input v-model="postForm.brand_desc" style="width: 800px;" type="textarea" :rows="3" />
         </el-form-item>
-        <el-form-item prop="sort" style="" label="排序">
-          <el-input v-model="postForm.sort" placeholder="" style="width: 100px;" />
+        <el-form-item prop="brand_product" style="" label="品牌产品">
+          <el-input  v-model="postForm.brand_product" style="width: 600px;" type="textarea" :rows="10" />
+        </el-form-item>
+        <el-form-item prop="brand_lc" style="" label="品牌历程">
+          <el-input v-model="postForm.brand_lc" placeholder="" style="width: 600px;" type="textarea" :rows="10" />
+        </el-form-item>
+        <el-form-item prop="brand_dw" style="" label="品牌定位">
+          <el-input v-model="postForm.brand_dw" placeholder="" style="width: 600px;" type="textarea" :rows="3" />
         </el-form-item>
         <el-row>
           <el-button v-if="!isEdit" v-loading="loading" type="success" @click="submitForm">
@@ -25,11 +31,9 @@
 </template>
 
 <script>
-import Tinymce from '@/components/Tinymce'
-
 // import Sticky from '@/components/Sticky' // 粘性header组件
 // import { validURL } from '@/utils/validate'
-import { fetchQuestion, createQuestion, updateQuestion } from '@/api/question'
+import { fetchBrand, updateBrand } from '@/api/brand'
 import { searchUser } from '@/api/remote-search'
 // import { CommentDropdown, PlatformDropdown, SourceUrlDropdown } from './Dropdown'
 
@@ -49,7 +53,7 @@ const defaultForm = {
 
 export default {
   name: 'ArticleDetail',
-  components: { Tinymce },
+  components: { },
   props: {
     isEdit: {
       type: Boolean,
@@ -110,7 +114,7 @@ export default {
   },
   methods: {
     fetchData(id) {
-      fetchQuestion(id).then(response => {
+      fetchBrand(id).then(response => {
         this.postForm = response.data.info
         // set tags view title
         // this.setTagsViewTitle()
@@ -129,18 +133,18 @@ export default {
         if (valid) {
           this.loading = true
           console.log(this.postForm)
-          createQuestion(this.postForm).then(response => {
-            this.$notify({
-              title: '成功',
-              message: '发布成功',
-              type: 'success',
-              duration: 2000
-            })
-            this.postForm.status = 'published'
-            this.loading = false
-            this.listLoading = false
-            this.$router.push(`/question/list`)
-          })
+          // createBrand(this.postForm).then(response => {
+          //   this.$notify({
+          //     title: '成功',
+          //     message: '发布成功',
+          //     type: 'success',
+          //     duration: 2000
+          //   })
+          //   this.postForm.status = 'published'
+          //   this.loading = false
+          //   this.listLoading = false
+          //   this.$router.push(`/question/list`)
+          // })
         } else {
           console.log('error submit!!')
           return false
@@ -149,7 +153,7 @@ export default {
     },
     updateArticle() {
       console.log(this.postForm)
-      updateQuestion(this.postForm).then(response => {
+      updateBrand(this.postForm).then(response => {
         this.$notify({
           title: '修改',
           message: '修改成功',
@@ -159,7 +163,6 @@ export default {
         this.postForm.status = 'published'
         this.loading = false
         this.listLoading = false
-        this.$router.push(`/question/list`)
       })
     },
     draftForm() {

src/views/advice/components/Dropdown/Comment.vue → src/views/brand/components/Dropdown/Comment.vue


src/views/advice/components/Dropdown/Platform.vue → src/views/brand/components/Dropdown/Platform.vue


src/views/advice/components/Dropdown/SourceUrl.vue → src/views/brand/components/Dropdown/SourceUrl.vue


src/views/advice/components/Dropdown/index.js → src/views/brand/components/Dropdown/index.js


src/views/advice/components/Warning.vue → src/views/brand/components/Warning.vue


src/views/advice/create.vue → src/views/brand/create.vue


src/views/advice/edit.vue → src/views/brand/edit.vue


src/views/city/list.vue → src/views/brand/list.vue


+ 54 - 45
src/views/advice/components/ArticleDetail.vue

@@ -2,24 +2,35 @@
   <div class="createPost-container">
     <el-form ref="postForm" :label-position="labelPosition" :model="postForm" :rules="rules" class="form-container">
       <div class="createPost-main-container">
-        <el-form-item prop="advice" style="" label="建议">
-          <el-input v-model="postForm.advice" placeholder="" style="width: 600px;" type="textarea" :rows="2" />
+        <el-form-item prop="img_url" style="" label="图片">
+          <Upload v-model="postForm.img_url" />
         </el-form-item>
-        <el-form-item prop="mobile" style="" label="手机号">
-          <el-input v-model="postForm.mobile" placeholder="" style="width: 300px;" />
+        <el-form-item prop="sort" style="" label="排序(倒序)">
+          <el-input v-model="postForm.sort" placeholder="" type="number" style="width: 160px;" />
         </el-form-item>
-        <el-form-item prop="user_id" style="" label="用户id">
-          <el-input v-model="postForm.user_id" placeholder="" style="width: 100px;" />
+        <el-form-item prop="status" style="" label="状态">
+          <template>
+            <el-radio-group v-model="postForm.status">
+              <el-radio :label="0">隐藏</el-radio>
+              <el-radio :label="1">显示</el-radio>
+            </el-radio-group>
+          </template>
         </el-form-item>
-        <el-form-item prop="mark" style="" label="备注">
-          <el-input v-model="postForm.mark" placeholder="" style="width: 300px;" />
+        <el-form-item prop="type" style="" label="类型">
+          <template>
+            <el-radio-group v-model="postForm.type">
+              <el-radio :label="1">首页图片</el-radio>
+              <el-radio :label="2">合作图片</el-radio>
+              <el-radio :label="3">问答图片</el-radio>
+            </el-radio-group>
+          </template>
         </el-form-item>
         <el-row>
           <el-button v-if="!isEdit" v-loading="loading" type="success" @click="submitForm">
             提交
           </el-button>
           <el-button v-if="isEdit" v-loading="loading" type="success" @click="updateArticle">
-            返回
+            修改
           </el-button>
         </el-row>
       </div>
@@ -28,29 +39,22 @@
 </template>
 
 <script>
-// import Sticky from '@/components/Sticky' // 粘性header组件
+import Upload from '@/components/Upload/SingleImage3'
 // import { validURL } from '@/utils/validate'
-import { fetchAdvice } from '@/api/advice'
-import { searchUser } from '@/api/remote-search'
+import { fetchHome, updateHome, createHome } from '@/api/home'
 // import { CommentDropdown, PlatformDropdown, SourceUrlDropdown } from './Dropdown'
 
 const defaultForm = {
-  status: 'draft',
-  title: '', // 文章题目
-  content: '', // 文章内容
-  content_short: '', // 文章摘要
-  video_url: '', // 文章外链
-  cover_img: '', // 文章图片
-  display_time: undefined, // 前台展示时间
-  id: undefined,
-  platforms: ['a-platform'],
-  comment_disabled: false,
-  importance: 0
+  status: 1,
+  img_url: '', // 文章题目
+  type: 1, // 文章内容
+  sort: 1, // 文章摘要
+  id: undefined
 }
 
 export default {
   name: 'ArticleDetail',
-  components: { },
+  components: { Upload },
   props: {
     isEdit: {
       type: Boolean,
@@ -97,7 +101,7 @@ export default {
   },
   methods: {
     fetchData(id) {
-      fetchAdvice(id).then(response => {
+      fetchHome(id).then(response => {
         this.postForm = response.data.info
         // set tags view title
         // this.setTagsViewTitle()
@@ -114,7 +118,18 @@ export default {
     submitForm() {
       this.$refs.postForm.validate(valid => {
         if (valid) {
-          this.$router.push(`/advice/list`)
+          createHome(this.postForm).then(response => {
+            this.$notify({
+              title: '新增',
+              message: '创建成功',
+              type: 'success',
+              duration: 2000
+            })
+            // this.postForm.status = 'published'
+            this.loading = false
+            this.listLoading = false
+            this.$router.push(`/home/list`)
+          })
         } else {
           console.log('error submit!!')
           return false
@@ -123,19 +138,19 @@ export default {
     },
     updateArticle() {
       console.log(this.postForm)
-      // updateAdvice(this.postForm).then(response => {
-      //   this.$notify({
-      //     title: '修改',
-      //     message: '修改成功',
-      //     type: 'success',
-      //     duration: 2000
-      //   })
-      //   this.postForm.status = 'published'
-      //   this.loading = false
-      //   this.listLoading = false
-      //   this.$router.push(`/advice/list`)
-      // })
-      this.$router.push(`/advice/list`)
+      updateHome(this.postForm).then(response => {
+        this.$notify({
+          title: '修改',
+          message: '修改成功',
+          type: 'success',
+          duration: 2000
+        })
+        // this.postForm.status = 'published'
+        this.loading = false
+        this.listLoading = false
+        this.$router.push(`/home/list`)
+      })
+      // this.$router.push(`/advice/list`)
     },
     draftForm() {
       if (this.postForm.content.length === 0 || this.postForm.title.length === 0) {
@@ -152,12 +167,6 @@ export default {
         duration: 1000
       })
       this.postForm.status = 'draft'
-    },
-    getRemoteUserList(query) {
-      searchUser(query).then(response => {
-        if (!response.data.items) return
-        this.userListOptions = response.data.items.map(v => v.name)
-      })
     }
   }
 }

src/views/city/components/Dropdown/Comment.vue → src/views/home/components/Dropdown/Comment.vue


src/views/city/components/Dropdown/Platform.vue → src/views/home/components/Dropdown/Platform.vue


src/views/city/components/Dropdown/SourceUrl.vue → src/views/home/components/Dropdown/SourceUrl.vue


src/views/city/components/Dropdown/index.js → src/views/home/components/Dropdown/index.js


src/views/city/components/Warning.vue → src/views/home/components/Warning.vue


src/views/city/create.vue → src/views/home/create.vue


src/views/city/edit.vue → src/views/home/edit.vue


+ 38 - 27
src/views/advice/list.vue

@@ -12,55 +12,43 @@
           <span>{{ scope.row.create_time }}</span>
         </template>
       </el-table-column>
+      <el-table-column align="center" label="排序">
+        <template slot-scope="scope">
+          <span>{{ scope.row.sort }}</span>
+        </template>
+      </el-table-column>
       <el-table-column class-name="status-col" label="状态" width="80ß">
         <template slot-scope="{row}">
           <el-tag :type="row.status | statusFilter">
-            {{ row.status == '1' ? "未处理 " : "已处理" }}
+            {{ row.status == '1' ? "正常 " : "隐藏" }}
           </el-tag>
         </template>
       </el-table-column>
-      <el-table-column min-width="300px" label="问题">
+      <el-table-column min-width="300px" label="类型">
         <template slot-scope="{row}">
-          <router-link :to="'/advice/edit/'+row.id" class="link-type">
-            <span>{{ row.advice }}</span>
-          </router-link>
+          {{ row.type | typeFilter }}
         </template>
       </el-table-column>
       <el-table-column align="center" label="Actions" width="230" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <router-link :to="'/advice/edit/'+scope.row.id">
+          <router-link :to="'/home/edit/'+scope.row.id">
             <el-button type="primary" size="mini" icon="el-icon-edit">
               修改
             </el-button>
           </router-link>
           <el-button type="danger" size="mini" icon="el-icon-s-check" style="margin-left: 10px;" :disabled="scope.row.status == '1' ? false : true" @click="handleDelete(scope)">
-            {{ scope.row.status == '1' ? "处理 " : "已处理" }}
+            {{ scope.row.status == '1' ? "隐藏 " : "已隐藏" }}
           </el-button>
         </template>
       </el-table-column>
     </el-table>
 
     <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.pageSize" @pagination="getList" />
-    <el-dialog title="处理备注" :visible.sync="dialogFormVisible">
-      <el-form ref="dataForm" :model="temp" label-position="left" label-width="70px" style="width: 400px; margin-left:50px;">
-        <el-form-item label="备注" prop="mark">
-          <el-input v-model="temp.mark" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormVisible = false">
-          取消
-        </el-button>
-        <el-button type="primary" @click="updateData()">
-          确定
-        </el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { fetchList, updateAdvice, fetchAdvice } from '@/api/advice'
+import { fetchList, deleteHome, fetchHome, updateHome } from '@/api/home'
 import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
 import waves from '@/directive/waves'
 
@@ -75,6 +63,14 @@ export default {
         2: 'info'
       }
       return statusMap[status]
+    },
+    typeFilter(type) {
+      const statusMap = {
+        1: '首页图片',
+        2: '合作图片',
+        3: '问答图片'
+      }
+      return statusMap[type]
     }
   },
   data() {
@@ -114,14 +110,29 @@ export default {
       })
     },
     handleDelete({ $index, row }) {
-      this.temp = Object.assign({}, row) // copy obj
-      this.dialogFormVisible = true
+      // this.temp = Object.assign({}, row) // copy obj
+      // this.dialogFormVisible = true
+      const type = row.status === 1 ? '隐藏' : '开启'
+      this.$confirm('您确定要隐藏吗', '警告', {
+        confirmButtonText: '是的',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(async() => {
+          await deleteHome(row.id)
+          const rs = await fetchHome(row.id)
+          this.list.splice($index, 1, rs.data.info)
+          this.$message({
+            type: 'success',
+            message: type + '成功'
+          })
+        })
     },
     async updateData() {
       const tempData = Object.assign({}, this.temp)
       const index = this.list.findIndex(v => v.id === this.temp.id)
-      await updateAdvice(tempData)
-      const rs = await fetchAdvice(tempData.id)
+      await updateHome(tempData)
+      const rs = await fetchHome(tempData.id)
       this.list.splice(index, 1, rs.data.info)
       this.dialogFormVisible = false
       this.$message({

+ 0 - 149
src/views/live/chatList.vue

@@ -1,149 +0,0 @@
-<template>
-  <div class="app-container">
-    <!--<div class="filter-container">
-      <el-input v-model="listQuery.mobile" placeholder="手机号" style="width: 200px;" class="filter-item" @keyup.enter.native="handleFilter" />
-      <el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">
-        搜索
-      </el-button>
-    </div>-->
-    <el-table v-loading="listLoading" :data="list" border fit highlight-current-row style="width: 100%">
-      <el-table-column align="center" label="ID" width="80">
-        <template slot-scope="scope">
-          <span>{{ scope.row.id }}</span>
-        </template>
-      </el-table-column>
-     <!-- <el-table-column width="180px" align="center" label="用户id">
-        <template slot-scope="scope">
-          <span>{{ scope.row.user_id }}</span>
-        </template>
-      </el-table-column>-->
-      <el-table-column class-name="status-col" align="center" label="用户名称">
-        <template slot-scope="scope">
-          <span>{{ scope.row.user_name }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column class-name="status-col" label="内容">
-        <template slot-scope="scope">
-          <span>{{ scope.row.content }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column class-name="status-col" label="发送时间" width="180px" align="center">
-        <template slot-scope="scope">
-          <span>{{ scope.row.send_time }}</span>
-        </template>
-      </el-table-column>
-      <!--<el-table-column class-name="status-col" label="主播昵称" align="center">
-        <template slot-scope="scope">
-          <span>{{ scope.row.anchor_name }}</span>
-        </template>
-      </el-table-column>-->
-      <!--<el-table-column class-name="status-col" label="直播类型" align="center">
-        <template slot-scope="scope">
-          <span>{{ scope.row.type | typeFilter }}</span>
-        </template>
-      </el-table-column>-->
-     <!-- <el-table-column align="center" label="Actions" width="300" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-row>
-            <router-link :to="'/live/edit/'+scope.row.id">
-              <el-button type="primary" size="mini" icon="el-icon-edit" style="margin-right: 10px;">
-                查看
-              </el-button>
-            </router-link>
-          </el-row>
-        </template>
-      </el-table-column>-->
-    </el-table>
-
-    <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.pageSize" @pagination="getList" />
-  </div>
-</template>
-
-<script>
-import { fetchList } from '@/api/chat'
-import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
-import waves from '@/directive/waves'
-
-export default {
-  name: 'ChatList',
-  components: { Pagination },
-  directives: { waves },
-  filters: {
-    typeFilter(type) {
-      const statusMap = {
-        1: '推流',
-        0: '手机直播'
-      }
-      return statusMap[type]
-    }
-  },
-  data() {
-    return {
-      list: null,
-      total: 0,
-      listLoading: true,
-      listQuery: {
-        page: 1,
-        pageSize: 10,
-        roomId: 0
-      },
-      temp: {
-        id: undefined,
-        mark: '',
-        status: ''
-      },
-      dialogFormVisible: false
-    }
-  },
-  created() {
-    const id = this.$route.params && this.$route.params.id
-    if (!isNaN(id)) {
-      this.listQuery['roomId'] = id
-    }
-    this.getList()
-  },
-  methods: {
-    getList() {
-      this.listLoading = true
-      fetchList(this.listQuery).then(response => {
-        this.list = response.data.list
-        this.total = response.data.count
-        this.listLoading = false
-      })
-    },
-    handleFilter() {
-      this.listLoading = true
-      fetchList(this.listQuery).then(response => {
-        this.list = response.data.list
-        this.total = response.data.count
-        this.listLoading = false
-      })
-    },
-    async handleUpdate({ $index, row }) {
-      this.temp = Object.assign({}, row) // copy obj
-      this.dialogFormVisible = true
-      this.$nextTick(() => {
-        this.$refs['dataForm'].clearValidate()
-      })
-    }
-  }
-}
-</script>
-
-<style scoped>
-.edit-input {
-  padding-right: 100px;
-}
-.cancel-btn {
-  position: absolute;
-  right: 15px;
-  top: 10px;
-}
-.filter-container{
-  margin-bottom: 20px;
-}
-.filter-item {
-  margin-right: 10px;
-}
-
-</style>

+ 36 - 17
src/views/setting/components/ArticleDetail.vue

@@ -1,12 +1,33 @@
 <template>
   <div class="createPost-container">
-    <el-form ref="postForm" :label-position="labelPosition" :model="postForm" :rules="rules" class="form-container">
+    <el-form ref="postForm" :label-position="labelPosition" :model="postForm" :rules="rules" class="form-container" label-width="120px">
       <div class="createPost-main-container">
-        <el-form-item prop="content" style="" label="门店数量">
-          <el-input v-model="postForm.content" placeholder="" style="width: 300px;" />
+        <el-form-item prop="zs_hot_line" style="" label="招商热线">
+          <el-input v-model="postForm.zs_hot_line" placeholder="" style="width: 200px;" />
+        </el-form-item>
+        <el-form-item prop="kf_hot_line" style="" label="客服热线">
+          <el-input v-model="postForm.kf_hot_line" placeholder="" style="width: 200px;" />
+        </el-form-item>
+        <el-form-item prop="sw_concat" style="" label="商务合作联系">
+          <el-input v-model="postForm.sw_concat" placeholder="" style="width: 300px;" />
+        </el-form-item>
+        <el-form-item prop="zp_mail" style="" label="招聘邮箱">
+          <el-input v-model="postForm.zp_mail" placeholder="" style="width: 400px;" />
+        </el-form-item>
+        <el-form-item prop="address" style="" label="公司地址">
+          <el-input v-model="postForm.address" placeholder="" style="width: 600px;" />
+        </el-form-item>
+        <el-form-item prop="qq_concat" style="" label="qq咨询">
+          <el-input v-model="postForm.qq_concat" placeholder="" style="width: 600px;" />
+        </el-form-item>
+        <el-form-item prop="kf_wechat" style="" label="客服微信">
+          <Upload v-model="postForm.kf_wechat" />
         </el-form-item>
         <el-row>
-          <el-button v-loading="loading" type="success" @click="updateArticle">
+          <el-button v-if="!isEdit" v-loading="loading" type="success" @click="submitForm">
+            提交
+          </el-button>
+          <el-button v-if="isEdit" v-loading="loading" type="success" @click="updateArticle">
             修改
           </el-button>
         </el-row>
@@ -17,26 +38,24 @@
 
 <script>
 import { fetchSetting, updateSetting } from '@/api/setting'
+import Upload from '@/components/Upload/SingleImage3'
 // import { searchUser } from '@/api/remote-search'
 // import { CommentDropdown, PlatformDropdown, SourceUrlDropdown } from './Dropdown'
 
 const defaultForm = {
-  status: 'draft',
-  title: '', // 文章题目
-  content: '', // 文章内容
-  content_short: '', // 文章摘要
-  video_url: '', // 文章外链
-  cover_img: '', // 文章图片
-  display_time: undefined, // 前台展示时间
-  id: undefined,
-  platforms: ['a-platform'],
-  comment_disabled: false,
-  importance: 0
+  zs_hot_line: '',
+  kf_hot_line: '',
+  sw_concat: '',
+  zp_mail: '',
+  address: '',
+  qq_concat: '',
+  id: '',
+  kf_wechat: ''
 }
 
 export default {
   name: 'ArticleDetail',
-  components: { },
+  components: { Upload },
   props: {
     isEdit: {
       type: Boolean,
@@ -51,7 +70,7 @@ export default {
       rules: {
       },
       tempRoute: {},
-      labelPosition: 'top'
+      labelPosition: 'left'
     }
   },
   computed: {

+ 0 - 181
src/views/setting/components/ArticleDetailServer.vue

@@ -1,181 +0,0 @@
-<template>
-  <div class="createPost-container">
-    <el-form ref="postForm" :label-position="labelPosition" :model="postForm" :rules="rules" class="form-container">
-      <div class="createPost-main-container">
-        <el-form-item prop="content" style="" label="服务协议">
-          <Tinymce ref="editor" v-model="postForm.content" :height="400" />
-        </el-form-item>
-        <el-row>
-          <el-button v-loading="loading" type="success" @click="updateArticle">
-            修改
-          </el-button>
-        </el-row>
-      </div>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import Tinymce from '@/components/Tinymce'
-// import Sticky from '@/components/Sticky' // 粘性header组件
-// import { validURL } from '@/utils/validate'
-import { fetchSetting, updateSetting } from '@/api/setting'
-import { searchUser } from '@/api/remote-search'
-// import { CommentDropdown, PlatformDropdown, SourceUrlDropdown } from './Dropdown'
-
-const defaultForm = {
-  status: 'draft',
-  title: '', // 文章题目
-  content: '', // 文章内容
-  content_short: '', // 文章摘要
-  video_url: '', // 文章外链
-  cover_img: '', // 文章图片
-  display_time: undefined, // 前台展示时间
-  id: undefined,
-  platforms: ['a-platform'],
-  comment_disabled: false,
-  importance: 0
-}
-
-export default {
-  name: 'ArticleDetail',
-  components: { Tinymce },
-  props: {
-    isEdit: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      postForm: Object.assign({}, defaultForm),
-      loading: false,
-      userListOptions: [],
-      rules: {
-      },
-      tempRoute: {},
-      labelPosition: 'top'
-    }
-  },
-  computed: {
-    contentShortLength() {
-      return this.postForm.content_short.length
-    },
-    displayTime: {
-      // set and get is useful when the data
-      // returned by the back end api is different from the front end
-      // back end return => "2013-06-25 06:59:25"
-      // front end need timestamp => 1372114765000
-      get() {
-        return (+new Date(this.postForm.display_time))
-      },
-      set(val) {
-        this.postForm.display_time = new Date(val)
-      }
-    }
-  },
-  created() {
-    if (this.isEdit) {
-      const id = this.$route.params && this.$route.params.id
-      this.fetchData(id)
-    }
-    // Why need to make a copy of this.$route here?
-    // Because if you enter this page and quickly switch tag, may be in the execution of the setTagsViewTitle function, this.$route is no longer pointing to the current page
-    // https://github.com/PanJiaChen/vue-element-admin/issues/1221
-    this.tempRoute = Object.assign({}, this.$route)
-  },
-  methods: {
-    fetchData(id) {
-      const type = 'server'
-      fetchSetting(type).then(response => {
-        this.postForm = response.data.info
-        // set tags view title
-        // this.setTagsViewTitle()
-        // set page title
-        // this.setPageTitle()
-      }).catch(err => {
-        console.log(err)
-      })
-    },
-    setPageTitle() {
-      const title = 'Edit Article'
-      document.title = `${title} - ${this.postForm.id}`
-    },
-    updateArticle() {
-      this.postForm.type = 'server'
-      updateSetting(this.postForm, 'server').then(response => {
-        this.$notify({
-          title: '修改',
-          message: '修改成功',
-          type: 'success',
-          duration: 2000
-        })
-        this.postForm.status = 'published'
-        this.loading = false
-        this.listLoading = false
-      })
-    },
-    draftForm() {
-      if (this.postForm.content.length === 0 || this.postForm.title.length === 0) {
-        this.$message({
-          message: '请填写必要的标题和内容',
-          type: 'warning'
-        })
-        return
-      }
-      this.$message({
-        message: '保存成功',
-        type: 'success',
-        showClose: true,
-        duration: 1000
-      })
-      this.postForm.status = 'draft'
-    },
-    getRemoteUserList(query) {
-      searchUser(query).then(response => {
-        if (!response.data.items) return
-        this.userListOptions = response.data.items.map(v => v.name)
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "~@/styles/mixin.scss";
-
-.createPost-container {
-  position: relative;
-
-  .createPost-main-container {
-    padding: 40px 45px 20px 50px;
-
-    .postInfo-container {
-      position: relative;
-      @include clearfix;
-      margin-bottom: 10px;
-
-      .postInfo-container-item {
-        float: left;
-      }
-    }
-  }
-
-  .word-counter {
-    width: 40px;
-    position: absolute;
-    right: 10px;
-    top: 0px;
-  }
-}
-
-.article-textarea ::v-deep {
-  textarea {
-    padding-right: 40px;
-    resize: none;
-    border: none;
-    border-radius: 0px;
-    border-bottom: 1px solid #bfcbd9;
-  }
-}
-</style>

+ 0 - 13
src/views/setting/editServer.vue

@@ -1,13 +0,0 @@
-<template>
-  <article-detail :is-edit="true" />
-</template>
-
-<script>
-import ArticleDetail from './components/ArticleDetailServer'
-
-export default {
-  name: 'EditForm',
-  components: { ArticleDetail }
-}
-</script>
-