Ver Fonte

上线会所

zhengjinyi há 5 anos atrás
pai
commit
e0ad094b57

+ 24 - 0
src/api/goods.js

@@ -39,3 +39,27 @@ export function saveGoodsSort(sorts) {
     params: sorts
   })
 }
+
+export function getAddList(query) {
+  return request({
+    url: '/product/cmMallOrganizeProducts/toAddProduct1',
+    method: 'get',
+    params: query
+  })
+}
+
+export function saveAddList(data) {
+  return request({
+    url: '/product/cmMallOrganizeProducts/saveAddProductInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+export function canncelProduct(data) {
+  return request({
+    url: '/product/cmMallOrganizeProducts/canncelProduct',
+    method: 'post',
+    data: data
+  })
+}

+ 18 - 0
src/api/order.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+export function getList(query) {
+  return request({
+    url: '/order/organize/orderList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getDetail(query) {
+  return request({
+    url: '/order/organize/detail',
+    method: 'get',
+    params: query
+  })
+}
+

+ 0 - 8
src/api/qiniu.js

@@ -1,8 +0,0 @@
-import request from '@/utils/request'
-
-export function getToken() {
-  return request({
-    url: '/qiniu/upload/token', // 假地址 自行替换
-    method: 'get'
-  })
-}

+ 0 - 17
src/api/remote-search.js

@@ -1,17 +0,0 @@
-import request from '@/utils/request'
-
-export function searchUser(name) {
-  return request({
-    url: '/search/user',
-    method: 'get',
-    params: { name }
-  })
-}
-
-export function transactionList(query) {
-  return request({
-    url: '/transaction/list',
-    method: 'get',
-    params: query
-  })
-}

+ 0 - 38
src/api/role.js

@@ -1,38 +0,0 @@
-import request from '@/utils/request'
-
-export function getRoutes() {
-  return request({
-    url: '/routes',
-    method: 'get'
-  })
-}
-
-export function getRoles() {
-  return request({
-    url: '/roles',
-    method: 'get'
-  })
-}
-
-export function addRole(data) {
-  return request({
-    url: '/role',
-    method: 'post',
-    data
-  })
-}
-
-export function updateRole(id, data) {
-  return request({
-    url: `/role/${id}`,
-    method: 'put',
-    data
-  })
-}
-
-export function deleteRole(id) {
-  return request({
-    url: `/role/${id}`,
-    method: 'delete'
-  })
-}

+ 2 - 2
src/router/index.js

@@ -51,7 +51,7 @@ export const constantRoutes = [
       path: 'dashboard',
       name: 'Dashboard',
       component: () => import('@/views/dashboard/index'),
-      meta: { title: '首页', icon: 'dashboard', affix: true }
+      meta: { title: 'Dashboard', icon: 'dashboard', affix: true }
     }]
   },
   {
@@ -127,7 +127,7 @@ export const constantRoutes = [
         path: 'list/preferred',
         name: 'PreferredProduct',
         component: () => import('@/views/goods/list-preferred'),
-        meta: { title: '星范优', noCache: true, activeMenu: '/goods/list' },
+        meta: { title: '星范优', noCache: true, activeMenu: '/goods/list' },
         hidden: true
       },
       {

+ 1 - 22
src/views/dashboard/admin/index.vue

@@ -1,6 +1,5 @@
 <template>
   <div class="dashboard-editor-container">
-    <github-corner class="github-corner" />
 
     <panel-group @handleSetLineChartData="handleSetLineChartData" />
 
@@ -25,31 +24,15 @@
         </div>
       </el-col>
     </el-row>
-
-    <el-row :gutter="8">
-      <el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;">
-        <transaction-table />
-      </el-col>
-      <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
-        <todo-list />
-      </el-col>
-      <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
-        <box-card />
-      </el-col>
-    </el-row>
   </div>
 </template>
 
 <script>
-import GithubCorner from '@/components/GithubCorner'
 import PanelGroup from './components/PanelGroup'
 import LineChart from './components/LineChart'
 import RaddarChart from './components/RaddarChart'
 import PieChart from './components/PieChart'
 import BarChart from './components/BarChart'
-import TransactionTable from './components/TransactionTable'
-import TodoList from './components/TodoList'
-import BoxCard from './components/BoxCard'
 
 const lineChartData = {
   newVisitis: {
@@ -73,15 +56,11 @@ const lineChartData = {
 export default {
   name: 'DashboardAdmin',
   components: {
-    GithubCorner,
     PanelGroup,
     LineChart,
     RaddarChart,
     PieChart,
-    BarChart,
-    TransactionTable,
-    TodoList,
-    BoxCard
+    BarChart
   },
   data() {
     return {

+ 22 - 9
src/views/goods/list-commonly.vue

@@ -3,9 +3,9 @@
 
     <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal">
       <el-menu-item index="0"><router-link to="/goods/list">全部商品</router-link></el-menu-item>
-      <el-menu-item v-if="modules.firstModulesName" index="1"><router-link to="/goods/list/preferred">{{ modules.firstModulesName }}</router-link></el-menu-item>
-      <el-menu-item v-if="modules.secondModulesName" index="2"><router-link to="/goods/list/preferential">{{ modules.secondModulesName }}</router-link></el-menu-item>
-      <el-menu-item v-if="modules.thirdModulesName" index="3"><router-link to="/goods/list/commonly">{{ modules.thirdModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.firstModulesName" index="1"><router-link to="/goods/list/preferred">{{ modules.firstModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.secondModulesName" index="2"><router-link to="/goods/list/preferential">{{ modules.secondModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.thirdModulesName" index="3"><router-link to="/goods/list/commonly">{{ modules.thirdModulesName }}</router-link></el-menu-item>
     </el-menu>
 
     <div class="filter-container" style="margin-top:20px;">
@@ -57,14 +57,14 @@
           <span>{{ row.addTime | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="排序值" align="center" prop="sort">
+      <el-table-column label="排序值" align="center" prop="commonlyProductSort">
         <template slot-scope="{row}">
-          <el-input v-model="row.preferredProductSort" style="width:60px;" size="small" />
+          <el-input v-model="row.commonlyProductSort" size="small" type="number" min="1" />
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
-          <el-button :vid="row.id" type="primary" size="small">取消</el-button>
+          <el-button type="primary" size="small" @click="cancelGoods(row.id)">取消</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -75,7 +75,7 @@
 </template>
 
 <script>
-import { getList, getModule, saveGoodsSort } from '@/api/goods'
+import { getList, getModule, saveGoodsSort, canncelProduct } from '@/api/goods'
 import Pagination from '@/components/Pagination'
 export default {
   components: { Pagination },
@@ -125,9 +125,22 @@ export default {
     batchSaveSort() {
       const sorts = []
       this.list.map(item => {
-        sorts.push(item.id + '-' + item.preferredProduct)
+        sorts.push(item.id + '-' + item.commonlyProductSort)
       })
-      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(() => {
+      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(response => {
+        this.$notify({
+          title: response.code * 1 === 1 ? 'Success' : 'Error',
+          message: response.msg,
+          type: response.code * 1 === 1 ? 'success' : 'error',
+          duration: 2000
+        })
+        this.fetchData()
+      }).catch(() => {
+        this.fetchData()
+      })
+    },
+    cancelGoods(id) {
+      canncelProduct({ id: id, modules: this.activeIndex }).then(() => {
         this.fetchData()
       }).catch(() => {
         this.fetchData()

+ 22 - 9
src/views/goods/list-preferential.vue

@@ -3,9 +3,9 @@
 
     <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal">
       <el-menu-item index="0"><router-link to="/goods/list">全部商品</router-link></el-menu-item>
-      <el-menu-item v-if="modules.firstModulesName" index="1"><router-link to="/goods/list/preferred">{{ modules.firstModulesName }}</router-link></el-menu-item>
-      <el-menu-item v-if="modules.secondModulesName" index="2"><router-link to="/goods/list/preferential">{{ modules.secondModulesName }}</router-link></el-menu-item>
-      <el-menu-item v-if="modules.thirdModulesName" index="3"><router-link to="/goods/list/commonly">{{ modules.thirdModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.firstModulesName" index="1"><router-link to="/goods/list/preferred">{{ modules.firstModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.secondModulesName" index="2"><router-link to="/goods/list/preferential">{{ modules.secondModulesName }}</router-link></el-menu-item>
+      <el-menu-item v-if="modules && modules.thirdModulesName" index="3"><router-link to="/goods/list/commonly">{{ modules.thirdModulesName }}</router-link></el-menu-item>
     </el-menu>
 
     <div class="filter-container" style="margin-top:20px;">
@@ -57,14 +57,14 @@
           <span>{{ row.addTime | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="排序值" align="center" prop="sort">
+      <el-table-column label="排序值" align="center" prop="preferentialProductSort">
         <template slot-scope="{row}">
-          <el-input v-model="row.preferredProductSort" style="width:60px;" size="small" />
+          <el-input v-model="row.preferentialProductSort" size="small" type="number" min="1" />
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
-          <el-button :vid="row.id" type="primary" size="small">取消</el-button>
+          <el-button type="primary" size="small" @click="cancelGoods(row.id)">取消</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -75,7 +75,7 @@
 </template>
 
 <script>
-import { getList, getModule, saveGoodsSort } from '@/api/goods'
+import { getList, getModule, saveGoodsSort, canncelProduct } from '@/api/goods'
 import Pagination from '@/components/Pagination'
 export default {
   components: { Pagination },
@@ -125,9 +125,22 @@ export default {
     batchSaveSort() {
       const sorts = []
       this.list.map(item => {
-        sorts.push(item.id + '-' + item.preferredProduct)
+        sorts.push(item.id + '-' + item.preferentialProductSort)
       })
-      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(() => {
+      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(response => {
+        this.$notify({
+          title: response.code * 1 === 1 ? 'Success' : 'Error',
+          message: response.msg,
+          type: response.code * 1 === 1 ? 'success' : 'error',
+          duration: 2000
+        })
+        this.fetchData()
+      }).catch(() => {
+        this.fetchData()
+      })
+    },
+    cancelGoods(id) {
+      canncelProduct({ id: id, modules: this.activeIndex }).then(() => {
         this.fetchData()
       }).catch(() => {
         this.fetchData()

+ 16 - 3
src/views/goods/list-preferred.vue

@@ -64,7 +64,7 @@
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
-          <el-button :vid="row.id" type="primary" size="small">取消</el-button>
+          <el-button type="primary" size="small" @click="cancelGoods(row.id)">取消</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -75,7 +75,7 @@
 </template>
 
 <script>
-import { getList, getModule, saveGoodsSort } from '@/api/goods'
+import { getList, getModule, saveGoodsSort, canncelProduct } from '@/api/goods'
 import Pagination from '@/components/Pagination'
 export default {
   components: { Pagination },
@@ -127,7 +127,20 @@ export default {
       this.list.map(item => {
         sorts.push(item.id + '-' + item.preferredProductSort)
       })
-      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(() => {
+      saveGoodsSort({ newProducSorttList: sorts.join(','), modules: this.activeIndex }).then(response => {
+        this.$notify({
+          title: response.code * 1 === 1 ? 'Success' : 'Error',
+          message: response.msg,
+          type: response.code * 1 === 1 ? 'success' : 'error',
+          duration: 2000
+        })
+        this.fetchData()
+      }).catch(() => {
+        this.fetchData()
+      })
+    },
+    cancelGoods(id) {
+      canncelProduct({ id: id, modules: this.activeIndex }).then(() => {
         this.fetchData()
       }).catch(() => {
         this.fetchData()

+ 50 - 11
src/views/goods/list-select.vue

@@ -1,8 +1,10 @@
 <template>
   <div class="app-container">
 
-    <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal">
-      <el-menu-item index="1">选择商品</el-menu-item>
+    <el-menu :default-active="moduleId" class="el-menu-demo" mode="horizontal">
+      <el-menu-item v-if="moduleId===1 && modules && modules.firstModulesName" index="1">{{ modules.firstModulesName }}</el-menu-item>
+      <el-menu-item v-if="moduleId===2 && modules && modules.secondModulesName" index="2">{{ modules.secondModulesName }}</el-menu-item>
+      <el-menu-item v-if="moduleId===3 && modules && modules.thirdModulesName" index="3">{{ modules.thirdModulesName }}</el-menu-item>
     </el-menu>
 
     <div class="filter-container" style="margin-top:20px;">
@@ -17,7 +19,7 @@
       <el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">
         搜索
       </el-button>
-      <el-button class="filter-item" type="primary" icon="el-icon-check">确定选择</el-button>
+      <el-button class="filter-item" type="primary" icon="el-icon-check" @click="confirmChoose()">确定选择</el-button>
       <el-button class="filter-item" type="primary" icon="el-icon-close" @click="toggleSelection()">取消选择</el-button>
     </div>
 
@@ -54,7 +56,7 @@
 </template>
 
 <script>
-import { getList } from '@/api/goods'
+import { getAddList, getModule, saveAddList } from '@/api/goods'
 import Pagination from '@/components/Pagination'
 export default {
   components: { Pagination },
@@ -70,10 +72,10 @@ export default {
   data() {
     return {
       list: null,
+      modules: null,
       classify: null,
       listLoading: true,
       total: 0,
-      activeIndex: '1',
       listQuery: {
         index: 1,
         pageSize: 20,
@@ -82,30 +84,67 @@ export default {
         productName: '',
         shopName: '',
         classifyID: ''
-      }
+      },
+      multipleSelection: []
     }
   },
   computed: {
     moduleId: function() {
-      return window.location.href.split('/').reverse()[0]
+      return window.location.href.split('/').reverse()[0] * 1
     }
   },
   created() {
+    this.getModuleType()
     this.fetchData()
   },
   methods: {
+    getModuleType() {
+      getModule({ organizeID: this.organizeID }).then(response => {
+        this.modules = response.data[0]
+      })
+    },
     fetchData() {
       this.listLoading = true
-      getList(this.listQuery).then(response => {
-        const { organizeProductsPage, listByEffective } = response.data
-        this.list = organizeProductsPage.results
-        this.total = organizeProductsPage.totalRecord
+      getAddList(this.listQuery).then(response => {
+        const { productsPage, listByEffective } = response.data
+        this.list = productsPage.results
+        this.total = productsPage.totalRecord
         this.classify = listByEffective
         this.listLoading = false
       })
     },
     handleFilter() {
       this.fetchData()
+    },
+    toggleSelection(rows) {
+      if (rows) {
+        rows.forEach(row => {
+          this.$refs.multipleTable.toggleRowSelection(row)
+        })
+      } else {
+        this.$refs.multipleTable.clearSelection()
+      }
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val
+    },
+    confirmChoose() {
+      console.log(this.multipleSelection)
+      const itemsList = []
+      this.multipleSelection.map(item => {
+        itemsList.push(item.id)
+      })
+      saveAddList({ itemsList: itemsList, organizeID: this.organizeID, modules: this.moduleId }).then(response => {
+        this.$notify({
+          title: response.code * 1 === 1 ? 'Success' : 'Error',
+          message: response.code * 1 === 1 ? '添加成功' : response.msg,
+          type: response.code * 1 === 1 ? 'success' : 'error',
+          duration: 2000
+        })
+        this.fetchData()
+      }).catch(() => {
+        this.fetchData()
+      })
     }
   }
 }

+ 1 - 1
src/views/goods/list.vue

@@ -204,7 +204,7 @@ export default {
   methods: {
     getModuleType() {
       getModule({ organizeID: this.organizeID }).then(response => {
-        this.modules = response.data
+        this.modules = response.data[0]
       })
     },
     fetchData() {

+ 74 - 0
src/views/order/components/discount.vue

@@ -0,0 +1,74 @@
+<template>
+  <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible">
+    <el-form ref="dataForm" :rules="rules" :model="dialog" label-position="left" label-width="220px" style="width:360px; margin:0 auto;">
+      <el-form-item label="商品分类" prop="classifyID">
+        <el-select v-model="dialog.classifyID" placeholder="商品分类" :label="dialog.productClassifyName" clearable class="filter-item" :value="dialog.classifyID*1">
+          <template v-for="item in classify">
+            <el-option v-if="item.status*1 === 1" :key="item.id" :label="item.classifyName" :value="item.id" />
+          </template>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="'市场价(' + dialog.normalPrice + '),修改为:'" prop="normalPrice">
+        <el-input v-model="dialog.normalPrice" />
+      </el-form-item>
+      <el-form-item :label="'成本价(' + dialog.costPrice + '),修改为:'" prop="costPrice">
+        <el-input v-model="dialog.costPrice" />
+      </el-form-item>
+      <el-form-item :label="'售价(' + dialog.retailPrice + '),修改为:'" prop="retailPrice">
+        <el-input v-model="dialog.retailPrice" />
+      </el-form-item>
+      <el-form-item :label="'起订量(' + dialog.minBuyNumber + '),修改为:'" prop="minBuyNumber">
+        <el-input v-model="dialog.minBuyNumber" />
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="dialogFormVisible = false">
+        关闭
+      </el-button>
+      <el-button type="primary" @click="updateGoods">
+        确认
+      </el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    dialogTitle: {
+      type: String,
+      default: '编辑经理折扣'
+    },
+    dialogFormVisible: {
+      type: Boolean,
+      default: false
+    },
+    dialog: {
+      type: Object,
+      default: {
+        id: '',
+        classifyID: 0,
+        normalPrice: '',
+        costPrice: '',
+        retailPrice: '',
+        minBuyNumber: '',
+        productClassifyName: ''
+      }
+    },
+
+    dialog: {
+      id: '',
+      classifyID: 0,
+      normalPrice: '',
+      costPrice: '',
+      retailPrice: '',
+      minBuyNumber: '',
+      productClassifyName: ''
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 154 - 4
src/views/order/detail.vue

@@ -6,26 +6,176 @@
       <el-menu-item index="2">订单详情</el-menu-item>
     </el-menu>
 
+    <el-card v-if="order" class="box-card">
+      <el-row :gutter="24" class="box-row">
+        <el-col :span="6">订单编号: {{ order.orderID }}</el-col>
+        <el-col :span="6">下单时间: {{ order.orderTime }}</el-col>
+        <el-col :span="6">订单状态:
+          <template v-if="['11','12','13','21','22','23','31','32','33'].indexOf(order.status)>=0">
+            <el-tag type="success" size="small">{{ '交易中('+statusObj[order.status]+')' }}</el-tag>
+          </template>
+          <template v-else>
+            <el-tag :type="row.status*1===6?'info':''" size="small">{{ statusObj[order.status] }}</el-tag>
+          </template>
+        </el-col>
+        <el-col :span="6">收款状态:
+          <el-tag v-if="order.receiptStatus*1===1" type="danger" size="small">待收款</el-tag>
+          <el-tag v-if="order.receiptStatus*1===2" type="warning" size="small">部分收款</el-tag>
+          <el-tag v-if="order.receiptStatus*1===3" type="success" size="small">已收款</el-tag>
+        </el-col>
+      </el-row>
+      <el-row :gutter="24" class="box-row">
+        <el-col :span="6">付款状态:
+          <el-tag v-if="order.payStatus*1===1" type="danger" size="small">待付款</el-tag>
+          <el-tag v-if="order.payStatus*1===2" type="warning" size="small">部分付款</el-tag>
+          <el-tag v-if="order.payStatus*1===3" type="success" size="small">已付款</el-tag>
+        </el-col>
+        <el-col :span="6">退款状态:
+          <el-tag v-if="order.refundType*1===1" type="warning" size="small">部分退</el-tag>
+          <el-tag v-if="order.refundType*1===2" type="danger" size="small">全部退</el-tag>
+          <el-tag v-else type="info" size="small">无退款</el-tag>
+        </el-col>
+        <el-col :span="6">发货状态:
+          <el-tag v-if="order.sendOutStatus*1===1" type="danger" size="small">待发货</el-tag>
+          <el-tag v-if="order.sendOutStatus*1===2" type="warning" size="small">部分发货</el-tag>
+          <el-tag v-if="order.sendOutStatus*1===3" type="success" size="small">已发货</el-tag>
+        </el-col>
+        <el-col :span="6">买家: {{ order.bpOrderUserinfo.name }}</el-col>
+      </el-row>
+    </el-card>
+
+    <el-card class="box-card">
+      <el-row :gutter="24" class="box-row">
+        <el-col :span="6">收货人: {{ order.bpOrderUserinfo.shouHuoRen }}</el-col>
+        <el-col :span="6">手机: {{ order.bpOrderUserinfo.mobile }}</el-col>
+        <el-col :span="12">地址: {{ order.bpOrderUserinfo.province +' '+ order.bpOrderUserinfo.city +' '+ order.bpOrderUserinfo.town +' '+ order.bpOrderUserinfo.address }}</el-col>
+      </el-row>
+      <el-row :gutter="24" class="box-row">
+        <el-col :span="6">订单金额: ¥{{ order.payTotalFee | toThousandFilter }}</el-col>
+        <el-col :span="6">应收金额: ¥{{ order.payableAmount | toThousandFilter }}<span style="color:red;"> (账户余额抵扣:¥{{ order.balancePayFee | toThousandFilter }})</span></el-col>
+        <el-col :span="6">已收金额:
+          <template v-if="order.receiptStatus*1===1">¥0</template>
+          <template v-else>¥{{ receiptAmount | toThousandFilter }}</template>
+        </el-col>
+        <el-col :span="6">退款金额(已完成): ¥{{ returnValue | toThousandFilter }}
+          <span style="color:red;">({{ '原:¥' + returnedPurchaseFee + ',折扣取消:¥' + (order.discountFee>returnedPurchaseFee ? returnedPurchaseFee : order.discountFee) }})</span>
+        </el-col>
+      </el-row>
+      <el-row :gutter="24" class="box-row">
+        <el-col :span="6">经理折扣:
+          <template v-if="order.discountFee<0">¥0</template>
+          <template v-else>
+            ¥{{ order.discountFee>returnedPurchaseFee ? (order.discountFee - returnedPurchaseFee) : '0' }}
+            <span style="color:red;">({{ '原:¥' + order.discountFee + ',折扣取消:¥' + (order.discountFee>returnedPurchaseFee ? returnedPurchaseFee : order.discountFee) }})</span>
+          </template>
+        </el-col>
+        <el-col :span="6">运费:
+          <template v-if="order.freight*1===0">包邮</template>
+          <template v-else-if="order.freight*1===-1">到付</template>
+          <template v-else-if="order.freight*1===-2">仪器到付-产品包邮</template>
+          <template v-else>¥{{ order.freight }}</template>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-card class="box-card grey">
+      <div v-for="shopOrder in order.newShopOrders" :key="shopOrder.shopOrderID" class="order-item">
+        <el-row :gutter="24" class="box-row">
+          <el-col :span="6">子订单号(ID): {{ shopOrder.shopOrderNo + '(' + shopOrder.shopOrderID + ')' }}</el-col>
+          <el-col :span="6">下单时间: {{ shopOrder.orderTime }}</el-col>
+          <el-col :span="6">子订单金额: {{ shopOrder.needPayAmount }}</el-col>
+          <el-col :span="6">发货状态:
+            <el-tag v-if="shopOrder.sendOutStatus*1===1" type="danger" size="small">待发货</el-tag>
+            <el-tag v-if="shopOrder.sendOutStatus*1===2" type="warning" size="small">部分发货</el-tag>
+            <el-tag v-if="shopOrder.sendOutStatus*1===3" type="success" size="small">已发货</el-tag>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="box-row">
+          <el-col :span="24">留言: {{ shopOrder.note }}</el-col>
+        </el-row>
+        <el-row :gutter="24" class="box-row">
+          <el-col :span="24">供应商: {{ shopOrder.shopName }}</el-col>
+        </el-row>
+        <el-row v-for="op in shopOrder.newOrderProducts" :key="op.orderProductID" :gutter="24" class="box-row">
+          <el-col :span="2">
+            <img :src="op.productImage" width="60" alt="">
+          </el-col>
+          <el-col :span="7">{{ op.name }}</el-col>
+          <el-col :span="5" />
+          <el-col :span="5" />
+          <el-col :span="5" />
+        </el-row>
+      </div>
+    </el-card>
   </div>
 </template>
 
 <script>
+import { getDetail } from '@/api/order'
 export default {
   data() {
     return {
-      activeIndex: '2'
+      activeIndex: '2',
+      order: null,
+      receiptAmount: 0,
+      returnValue: 0,
+      returnedPurchaseFee: 0,
+      statusObj: {
+        '0': '待确认',
+        '4': '交易完成',
+        '5': '订单完成',
+        '6': '已关闭',
+        '7': '交易全退',
+        '11': '待收待发',
+        '12': '待收部发',
+        '13': '待收全发',
+        '21': '部收待发',
+        '22': '部收部发',
+        '23': '部收全发',
+        '31': '已收待发',
+        '32': '已收部发',
+        '33': '已收全发'
+      }
+    }
+  },
+  computed: {
+    orderID: function() {
+      return window.location.href.split('/').reverse()[0] * 1
     }
   },
   created() {
-
+    this.fetchData()
   },
   methods: {
-
+    fetchData() {
+      this.listLoading = true
+      getDetail({ id: this.orderID }).then(response => {
+        this.order = response.data.order
+        this.receiptAmount = response.data.receiptAmount
+        this.returnValue = response.data.returnValue
+        this.returnedPurchaseFee = response.data.returnedPurchaseFee
+        this.listLoading = false
+      }).catch(() => {
+        this.listLoading = false
+      })
+    }
   }
 }
 </script>
 
 <style scoped>
-
+  .box-card{
+    margin-top: 20px;
+    font-size: 14px;
+  }
+  .box-row{
+    padding: 10px 0;
+  }
+  .box-card.grey{
+    background:#F2F6FC;
+  }
+  .order-item{
+    border-bottom: 1px solid #DCDFE6;
+  }
 </style>
 

+ 96 - 85
src/views/order/list.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="app-container">
     <div class="filter-container">
-      <el-input v-model="listQuery.form.orderID" placeholder="订单ID" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
-      <el-input v-model="listQuery.form.orderNo" placeholder="订单号" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
+      <el-input v-model="listQuery.orderID" placeholder="订单ID" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
+      <el-input v-model="listQuery.orderNo" placeholder="订单号" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
       <el-form-item label="创建时间:">
         <el-date-picker
           v-model="searchTimeVal"
@@ -12,24 +12,24 @@
           end-placeholder="结束日期"
         />
       </el-form-item>
-      <el-input v-model="listQuery.form.buyer" placeholder="买家" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
-      <el-input v-model="listQuery.form.receiver" placeholder="收货人" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
-      <el-select v-model="listQuery.form.status" placeholder="订单状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-input v-model="listQuery.buyer" placeholder="买家" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
+      <el-input v-model="listQuery.receiver" placeholder="收货人" style="width: 120px;" class="filter-item" @keyup.enter.native="handleFilter" />
+      <el-select v-model="listQuery.status" placeholder="订单状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
-      <el-select v-model="listQuery.form.receiptStatus" placeholder="收款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-select v-model="listQuery.receiptStatus" placeholder="收款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
-      <el-select v-model="listQuery.form.sendOutStatus" placeholder="发货状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-select v-model="listQuery.sendOutStatus" placeholder="发货状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
-      <el-select v-model="listQuery.form.payStatus" placeholder="付款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-select v-model="listQuery.payStatus" placeholder="付款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
-      <el-select v-model="listQuery.form.refundType" placeholder="退款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-select v-model="listQuery.refundType" placeholder="退款状态" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
-      <el-select v-model="listQuery.form.returnedPurchaseStatus" placeholder="待审核退款" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
+      <el-select v-model="listQuery.returnedPurchaseStatus" placeholder="待审核退款" clearable style="width: 110px" class="filter-item" value="" @change="handleFilter">
         <!-- <el-option v-for="item in statusList" :key="item.id" :label="item.status" :value="item.id" /> -->
       </el-select>
       <el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">查询</el-button>
@@ -44,7 +44,7 @@
       highlight-current-row
       style="width:100%;margin-top:20px;"
     >
-      <el-table-column align="center" label="序号" width="35px">
+      <el-table-column align="center" label="序号" width="50">
         <template slot-scope="scope">
           {{ scope.$index }}
         </template>
@@ -53,13 +53,55 @@
       <el-table-column label="订单编号" align="center" prop="orderNo" />
       <el-table-column label="买家" align="center" prop="buyer" />
       <el-table-column label="收货人" align="center" prop="receiver" />
-      <el-table-column label="订单状态" align="center" prop="status" />
-      <el-table-column label="收款状态" align="center" prop="receiptStatus" />
-      <el-table-column label="付款状态" align="center" prop="payStatus" />
-      <el-table-column label="发货状态" align="center" prop="sendOutStatus" />
-      <el-table-column label="退款状态" align="center" prop="refundType" />
-      <el-table-column label="待审核退款" align="center" prop="returnedPurchaseStatus" />
-      <el-table-column label="订单金额" align="center" prop="payTotalFee" />
+      <el-table-column label="订单状态" align="center" prop="status">
+        <template slot-scope="{row}">
+          <template v-if="['11','12','13','21','22','23','31','32','33'].indexOf(row.status)>=0">
+            <el-tag type="success" size="small">交易中</el-tag><span>{{ '('+statusObj[row.status]+')' }}</span>
+          </template>
+          <template v-else>
+            <el-tag :type="row.status*1===6?'info':''" size="small">{{ statusObj[row.status] }}</el-tag>
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column label="收款状态" align="center" prop="receiptStatus">
+        <template slot-scope="{row}">
+          <el-tag v-if="row.receiptStatus*1===1" type="danger" size="small">待收款</el-tag>
+          <el-tag v-if="row.receiptStatus*1===2" type="warning" size="small">部分收款</el-tag>
+          <el-tag v-if="row.receiptStatus*1===3" type="success" size="small">已收款</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="付款状态" align="center" prop="payStatus">
+        <template slot-scope="{row}">
+          <el-tag v-if="row.payStatus*1===1" type="danger" size="small">待付款</el-tag>
+          <el-tag v-if="row.payStatus*1===2" type="warning" size="small">部分付款</el-tag>
+          <el-tag v-if="row.payStatus*1===3" type="success" size="small">已付款</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="发货状态" align="center" prop="sendOutStatus">
+        <template slot-scope="{row}">
+          <el-tag v-if="row.sendOutStatus*1===1" type="danger" size="small">待发货</el-tag>
+          <el-tag v-if="row.sendOutStatus*1===2" type="warning" size="small">部分发货</el-tag>
+          <el-tag v-if="row.sendOutStatus*1===3" type="success" size="small">已发货</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="退款状态" align="center" prop="refundType">
+        <template slot-scope="{row}">
+          <el-tag v-if="row.refundType*1===1" type="info" size="small">部分退</el-tag>
+          <el-tag v-if="row.refundType*1===2" type="info" size="small">全部退</el-tag>
+          <el-tag v-else type="info" size="small">无退款</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="待审核退款" align="center" prop="returnedPurchaseStatus">
+        <template slot-scope="{row}">
+          <el-tag v-if="row.returnedPurchaseStatus*1===1" type="warning" size="small">有</el-tag>
+          <el-tag v-else type="info" size="small">无</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="订单金额" align="center" prop="payTotalFee">
+        <template slot-scope="{row}">
+          ¥{{ row.payTotalFee | toThousandFilter }}
+        </template>
+      </el-table-column>
       <el-table-column align="center" label="下单时间" prop="orderTime">
         <template slot-scope="{row}">
           <i class="el-icon-time" />
@@ -85,25 +127,16 @@
       </el-table-column>
     </el-table>
 
-    <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="fetchData" />
+    <pagination v-show="total>0" :total="total" :page.sync="listQuery.index" :limit.sync="listQuery.pageSize" @pagination="fetchData" />
 
   </div>
 </template>
 
 <script>
-import { getList } from '@/api/goods'
+import { getList } from '@/api/order'
 import Pagination from '@/components/Pagination'
 export default {
   components: { Pagination },
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        1: 'success',
-        0: 'gray'
-      }
-      return statusMap[status]
-    }
-  },
   data() {
     return {
       list: null,
@@ -111,21 +144,35 @@ export default {
       total: 0,
       searchTimeVal: '',
       listQuery: {
-        page: 1,
-        limit: 10,
-        form: {
-          orderID: '',
-          orderNo: '',
-          buyer: '',
-          receiver: '',
-          status: '',
-          receiptStatus: '',
-          sendOutStatus: '',
-          payStatus: '',
-          refundType: '',
-          returnedPurchaseStatus: '',
-          organizeID: this.organizeID
-        }
+        index: 1,
+        pageSize: 20,
+        organizeID: this.organizeID,
+        orderID: '',
+        orderNo: '',
+        buyer: '',
+        receiver: '',
+        status: '',
+        receiptStatus: '',
+        sendOutStatus: '',
+        payStatus: '',
+        refundType: '',
+        returnedPurchaseStatus: ''
+      },
+      statusObj: {
+        '0': '待确认',
+        '4': '交易完成',
+        '5': '订单完成',
+        '6': '已关闭',
+        '7': '交易全退',
+        '11': '待收待发',
+        '12': '待收部发',
+        '13': '待收全发',
+        '21': '部收待发',
+        '22': '部收部发',
+        '23': '部收全发',
+        '31': '已收待发',
+        '32': '已收部发',
+        '33': '已收全发'
       }
     }
   },
@@ -135,52 +182,16 @@ export default {
   methods: {
     fetchData() {
       this.listLoading = true
-      getList().then(response => {
-        this.list = response.data.items
+      getList(this.listQuery).then(response => {
+        this.list = response.data.results
+        this.total = response.data.totalRecord
         this.listLoading = false
       }).catch(() => {
-        // 封装静态数据
-        this.list = [
-          {
-            orderID: '1',
-            orderNo: 'ffgvdf',
-            buyer: '',
-            receiver: '',
-            status: '',
-            receiptStatus: '',
-            sendOutStatus: '',
-            payStatus: '',
-            refundType: '',
-            returnedPurchaseStatus: '',
-            payTotalFee: '',
-            orderTime: new Date(),
-            organizeID: this.organizeID
-          },
-          {
-            orderID: '',
-            orderNo: '',
-            buyer: '',
-            receiver: '',
-            status: '',
-            receiptStatus: '',
-            sendOutStatus: '',
-            payStatus: '',
-            refundType: '',
-            returnedPurchaseStatus: '',
-            payTotalFee: '',
-            orderTime: new Date(),
-            organizeID: this.organizeID
-          }
-        ]
+        this.listLoading = false
       })
-      this.listLoading = false
-      this.total = 2
     },
     handleFilter() {
-      alert('搜索')
-    },
-    handleCreate() {
-      alert('添加')
+      this.fetchData()
     }
   }
 }