|
@@ -9,7 +9,38 @@
|
|
|
element-loading-spinner="el-icon-loading"
|
|
|
>
|
|
|
<span v-if="view === 'list'">
|
|
|
- <data-search :fields="searchFields" v-model="searchInfo" @query="search"> </data-search>
|
|
|
+ <data-search :fields="searchFields" v-model="searchInfo" @query="search">
|
|
|
+ <template #goods>
|
|
|
+ <el-select
|
|
|
+ v-model="searchInfo.goods"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ remote
|
|
|
+ :remote-method="querySearch"
|
|
|
+ placeholder="请选择商品名称"
|
|
|
+ :loading="loading"
|
|
|
+ size="small"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in goodsList" :key="item._id" :label="item.name" :value="item._id"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ <template #leader>
|
|
|
+ <el-select
|
|
|
+ v-model="searchInfo.leader"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ remote
|
|
|
+ :remote-method="leaderSearch"
|
|
|
+ placeholder="请选择团长名称"
|
|
|
+ :loading="loading"
|
|
|
+ size="small"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in leaderList" :key="item._id" :label="item.name" :value="item._id"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </data-search>
|
|
|
<data-btn :fields="btnList" @add="toAdd"></data-btn>
|
|
|
<data-table
|
|
|
ref="dataTable"
|
|
@@ -33,6 +64,8 @@ const _ = require('lodash');
|
|
|
import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
const { mapActions: group } = createNamespacedHelpers('group'); // 团表
|
|
|
const { mapActions: dictData } = createNamespacedHelpers('dictData'); // 字典
|
|
|
+const { mapActions: goods } = createNamespacedHelpers('goods'); // 商品
|
|
|
+const { mapActions: users } = createNamespacedHelpers('users'); // 团长
|
|
|
export default {
|
|
|
name: 'index',
|
|
|
props: {},
|
|
@@ -42,10 +75,12 @@ export default {
|
|
|
data: function () {
|
|
|
return {
|
|
|
loadings: true,
|
|
|
+ loading: false,
|
|
|
view: 'list',
|
|
|
fields: [
|
|
|
- { label: '商品名称', model: 'goods', showTip: false },
|
|
|
- { label: '团长', model: 'leader' },
|
|
|
+ { label: '商品名称', model: 'goods.name', showTip: false },
|
|
|
+ { label: '团长', model: 'leader.name' },
|
|
|
+ { label: '人数限制', model: 'person_limit' },
|
|
|
{ label: '开始时间', model: 'start_time' },
|
|
|
{ label: '结束时间', model: 'end_time' },
|
|
|
{
|
|
@@ -64,8 +99,8 @@ export default {
|
|
|
],
|
|
|
btnList: [{ label: '添加', method: 'add' }],
|
|
|
searchFields: [
|
|
|
- { label: '商品名称', model: 'goods' },
|
|
|
- { label: '规格名称', model: 'spec' },
|
|
|
+ { label: '商品名称', model: 'goods', custom: true },
|
|
|
+ { label: '团长', model: 'leader', custom: true },
|
|
|
],
|
|
|
searchInfo: {},
|
|
|
list: [],
|
|
@@ -73,6 +108,10 @@ export default {
|
|
|
// 团状态
|
|
|
statusList: [],
|
|
|
id: '',
|
|
|
+ // 商品列表
|
|
|
+ goodsList: [],
|
|
|
+ // 团长列表
|
|
|
+ leaderList: [],
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -80,6 +119,8 @@ export default {
|
|
|
this.search();
|
|
|
},
|
|
|
methods: {
|
|
|
+ ...goods({ goodsQuery: 'query' }),
|
|
|
+ ...users({ userQuery: 'query' }),
|
|
|
...dictData({ getDict: 'query' }),
|
|
|
...group(['query', 'delete', 'fetch', 'update', 'create']),
|
|
|
// 查询
|
|
@@ -93,6 +134,19 @@ export default {
|
|
|
}
|
|
|
this.loadings = false;
|
|
|
},
|
|
|
+ // 远程查询
|
|
|
+ async querySearch(value) {
|
|
|
+ this.loading = true;
|
|
|
+ let res = await this.goodsQuery({ name: value });
|
|
|
+ if (this.$checkRes(res)) this.$set(this, 'goodsList', res.data);
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ async leaderSearch(value) {
|
|
|
+ this.loading = true;
|
|
|
+ let res = await this.userQuery({ name: value, is_leader: '0' });
|
|
|
+ if (this.$checkRes(res)) this.$set(this, 'leaderList', res.data);
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
// 新增
|
|
|
toAdd() {
|
|
|
let id = '';
|