parent
1595b738fa
commit
6ed285e231
@ -0,0 +1,25 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\dao\store; |
||||
|
||||
use app\common\dao\BaseDao; |
||||
use app\common\model\store\Deposit; |
||||
|
||||
class DepositDao extends BaseDao |
||||
{ |
||||
|
||||
|
||||
protected function getModel(): string |
||||
{ |
||||
return Deposit::class; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,25 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\dao\store; |
||||
|
||||
use app\common\dao\BaseDao; |
||||
use app\common\model\store\Lottery; |
||||
|
||||
class LotteryDao extends BaseDao |
||||
{ |
||||
|
||||
|
||||
protected function getModel(): string |
||||
{ |
||||
return Lottery::class; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,30 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\model\store; |
||||
|
||||
use app\common\model\BaseModel; |
||||
|
||||
|
||||
class Deposit extends BaseModel |
||||
{ |
||||
|
||||
public static function tablePk(): string |
||||
{ |
||||
return 'id'; |
||||
} |
||||
|
||||
public static function tableName(): string |
||||
{ |
||||
return 'deposit'; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,30 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\model\store; |
||||
|
||||
use app\common\model\BaseModel; |
||||
|
||||
|
||||
class Lottery extends BaseModel |
||||
{ |
||||
|
||||
public static function tablePk(): string |
||||
{ |
||||
return 'id'; |
||||
} |
||||
|
||||
public static function tableName(): string |
||||
{ |
||||
return 'lottery'; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,109 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\repositories\store; |
||||
|
||||
use app\common\dao\store\DepositDao; |
||||
use app\common\dao\store\GuaranteeDao; |
||||
use app\common\repositories\BaseRepository; |
||||
use app\common\repositories\store\product\ProductRepository; |
||||
use FormBuilder\Factory\Elm; |
||||
use think\facade\Route; |
||||
|
||||
class DepositRepository extends BaseRepository |
||||
{ |
||||
/** |
||||
* @var GuaranteeDao |
||||
*/ |
||||
protected $dao; |
||||
|
||||
|
||||
/** |
||||
* GuaranteeRepository constructor. |
||||
* @param DepositDao $dao |
||||
*/ |
||||
public function __construct(DepositDao $dao) |
||||
{ |
||||
$this->dao = $dao; |
||||
} |
||||
|
||||
/** |
||||
* TODO 平台列表 |
||||
* @param $where |
||||
* @param $page |
||||
* @param $limit |
||||
* @return array |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function getList($where,$page, $limit) |
||||
{ |
||||
$query = $this->dao->getSearch($where)->order('id DESC'); |
||||
$count = $query->count(); |
||||
$list = $query->page($page,$limit)->select(); |
||||
return compact('count','list'); |
||||
} |
||||
|
||||
public function select(array $where) |
||||
{ |
||||
$list = $this->dao->getSearch($where)->field('guarantee_id,guarantee_name,guarantee_info,image')->order('sort DESC')->select(); |
||||
return $list; |
||||
} |
||||
/** |
||||
* TODO 添加form |
||||
* @param int|null $id |
||||
* @param array $formData |
||||
* @return \FormBuilder\Form |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function form($id = null,array $formData = []) |
||||
{ |
||||
$isCreate = is_null($id); |
||||
$action = Route::buildUrl($isCreate ? 'systemDepositCreate' : 'systemDepositUpdate', $isCreate ? [] : compact('id'))->build(); |
||||
return Elm::createForm($action, [ |
||||
Elm::number('money', '预存金额:')->placeholder('请输入等级名称')->min(0)->required(), |
||||
Elm::number('cycle', '周期:')->placeholder('请输入周期')->min(0)->required(), |
||||
Elm::number('diamond', '赠送钻石/天:')->placeholder('请输入赠送钻石数')->min(0)->required(), |
||||
Elm::number('diamond_max', '赠送最大钻石:')->placeholder('请输入赠送最大钻石数')->min(0)->required(), |
||||
Elm::number('count', '名额:')->placeholder('请输入名额')->min(0)->required(), |
||||
])->setTitle($isCreate ? '添加预存' : '编辑预存')->formData($formData); |
||||
} |
||||
|
||||
/** |
||||
* TODO 编辑form |
||||
* @param $id |
||||
* @return \FormBuilder\Form |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function updateForm($id) |
||||
{ |
||||
$ret = $this->dao->get($id); |
||||
return $this->form($id,$ret->toArray()); |
||||
} |
||||
|
||||
/** |
||||
* TODO 获取详情 |
||||
* @param $id |
||||
* @return array|\think\Model|null |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function get($id) |
||||
{ |
||||
$where = [ |
||||
$this->dao->getPk() => $id, |
||||
'is_del' => 0, |
||||
]; |
||||
$ret = $this->dao->getWhere($where); |
||||
return $ret; |
||||
} |
||||
} |
@ -0,0 +1,74 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\common\repositories\store; |
||||
|
||||
use app\common\dao\store\GuaranteeDao; |
||||
use app\common\dao\store\LotteryDao; |
||||
use app\common\repositories\BaseRepository; |
||||
|
||||
class LotteryRepository extends BaseRepository |
||||
{ |
||||
/** |
||||
* @var GuaranteeDao |
||||
*/ |
||||
protected $dao; |
||||
|
||||
|
||||
/** |
||||
* GuaranteeRepository constructor. |
||||
* @param LotteryDao $dao |
||||
*/ |
||||
public function __construct(LotteryDao $dao) |
||||
{ |
||||
$this->dao = $dao; |
||||
} |
||||
|
||||
/** |
||||
* TODO 平台列表 |
||||
* @param $where |
||||
* @param $page |
||||
* @param $limit |
||||
* @return array |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function getList($where,$page, $limit) |
||||
{ |
||||
$query = $this->dao->getSearch($where)->order('sort DESC'); |
||||
$count = $query->count(); |
||||
$list = $query->page($page,$limit)->select(); |
||||
return compact('count','list'); |
||||
} |
||||
|
||||
public function select(array $where) |
||||
{ |
||||
$list = $this->dao->getSearch($where)->field('guarantee_id,guarantee_name,guarantee_info,image')->order('sort DESC')->select(); |
||||
return $list; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* TODO 获取详情 |
||||
* @param $id |
||||
* @return array|\think\Model|null |
||||
* @author Qinii |
||||
* @day 5/17/21 |
||||
*/ |
||||
public function get($id) |
||||
{ |
||||
$where = [ |
||||
$this->dao->getPk() => $id, |
||||
'is_del' => 0, |
||||
]; |
||||
$ret = $this->dao->getWhere($where); |
||||
return $ret; |
||||
} |
||||
} |
@ -0,0 +1,152 @@ |
||||
<?php |
||||
|
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\controller\admin\system; |
||||
|
||||
|
||||
use app\common\repositories\store\DepositRepository; |
||||
use app\validate\admin\DepositValidate; |
||||
use crmeb\basic\BaseController; |
||||
use FormBuilder\Exception\FormBuilderException; |
||||
use think\App; |
||||
use think\db\exception\DataNotFoundException; |
||||
use think\db\exception\DbException; |
||||
use think\db\exception\ModelNotFoundException; |
||||
|
||||
/** |
||||
* Class UserGroup |
||||
* @package app\controller\admin\user |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
class Deposit extends BaseController |
||||
{ |
||||
/** |
||||
* @var DepositRepository |
||||
*/ |
||||
protected $repository; |
||||
|
||||
/** |
||||
* UserGroup constructor. |
||||
* @param App $app |
||||
* @param DepositRepository $repository |
||||
*/ |
||||
public function __construct(App $app, DepositRepository $repository) |
||||
{ |
||||
parent::__construct($app); |
||||
$this->repository = $repository; |
||||
} |
||||
|
||||
/** |
||||
* @return mixed |
||||
* @throws DataNotFoundException |
||||
* @throws DbException |
||||
* @throws ModelNotFoundException |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function lst() |
||||
{ |
||||
[$page, $limit] = $this->getPage(); |
||||
return app('json')->success($this->repository->getList(['status' => 1], $page, $limit)); |
||||
} |
||||
|
||||
/** |
||||
* @return mixed |
||||
* @throws FormBuilderException |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function createForm() |
||||
{ |
||||
return app('json')->success(formToData($this->repository->form())); |
||||
} |
||||
|
||||
/** |
||||
* @param DepositValidate $validate |
||||
* @return mixed |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function create(DepositValidate $validate) |
||||
{ |
||||
$data = $this->checkParams($validate); |
||||
$this->repository->create($data); |
||||
|
||||
return app('json')->success('添加成功'); |
||||
} |
||||
|
||||
/** |
||||
* @param $id |
||||
* @return mixed |
||||
* @throws DbException |
||||
* @throws FormBuilderException |
||||
* @throws DataNotFoundException |
||||
* @throws ModelNotFoundException |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function updateForm($id) |
||||
{ |
||||
if (!$this->repository->exists($id)) |
||||
return app('json')->fail('数据不存在'); |
||||
return app('json')->success(formToData($this->repository->updateForm($id))); |
||||
} |
||||
|
||||
/** |
||||
* @param $id |
||||
* @param DepositValidate $validate |
||||
* @return mixed |
||||
* @throws DbException |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function update($id, DepositValidate $validate) |
||||
{ |
||||
$data = $this->checkParams($validate); |
||||
if (!$this->repository->exists($id)) |
||||
return app('json')->fail('数据不存在'); |
||||
$this->repository->update($id, $data); |
||||
|
||||
return app('json')->success('编辑成功'); |
||||
} |
||||
|
||||
/** |
||||
* @param $id |
||||
* @return mixed |
||||
* @throws DbException |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
public function delete($id) |
||||
{ |
||||
if (!$this->repository->exists($id)) |
||||
return app('json')->fail('数据不存在'); |
||||
$this->repository->update($id, array('status' => 0)); |
||||
|
||||
return app('json')->success('删除成功'); |
||||
} |
||||
|
||||
/** |
||||
* @param DepositValidate $validate |
||||
* @return array |
||||
* @author xaboy |
||||
* @day 2020-05-07 |
||||
*/ |
||||
protected function checkParams(DepositValidate $validate) |
||||
{ |
||||
$data = $this->request->params(['count','cycle', 'diamond', 'diamond_max', 'money']); |
||||
$validate->check($data); |
||||
return $data; |
||||
} |
||||
} |
@ -0,0 +1,106 @@ |
||||
<?php |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
namespace app\controller\admin\system; |
||||
|
||||
use app\common\repositories\system\CacheRepository; |
||||
use app\common\repositories\system\config\ConfigValueRepository; |
||||
use crmeb\basic\BaseController; |
||||
use crmeb\services\RedisCacheService; |
||||
use think\App; |
||||
use think\facade\Cache as BaseCache; |
||||
|
||||
class Lottery extends BaseController |
||||
{ |
||||
/** |
||||
* @var CacheRepository |
||||
*/ |
||||
protected $repository; |
||||
|
||||
/** |
||||
* CacheRepository constructor. |
||||
* @param App $app |
||||
*/ |
||||
public function __construct(App $app, CacheRepository $repository) |
||||
{ |
||||
parent::__construct($app); |
||||
$this->repository = $repository; |
||||
} |
||||
|
||||
|
||||
public function getKeyLst() |
||||
{ |
||||
$type = $this->request->param('type', 0); |
||||
$data = $this->repository->getAgreeList($type); |
||||
return app('json')->success($data); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @Author:Qinii |
||||
* @Date: 2020/9/15 |
||||
* @return mixed |
||||
*/ |
||||
public function getAgree($key) |
||||
{ |
||||
$allow = $this->repository->getAgreeKey(); |
||||
if (!in_array($key, $allow)) return app('json')->fail('数据不存在'); |
||||
$data = $this->repository->getResult($key); |
||||
return app('json')->success($data); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @Author:Qinii |
||||
* @Date: 2020/9/15 |
||||
* @return mixed |
||||
*/ |
||||
public function saveAgree($key) |
||||
{ |
||||
$allow = $this->repository->getAgreeKey(); |
||||
if (!in_array($key, $allow)) return app('json')->fail('KEY不存在'); |
||||
|
||||
$value = $this->request->param('agree'); |
||||
$this->repository->save($key, $value); |
||||
|
||||
if ($key == CacheRepository::USER_PRIVACY) |
||||
$this->repository->setUserAgreement($value); |
||||
if ($key == CacheRepository::USER_AGREE) |
||||
$this->repository->setUserRegister($value); |
||||
|
||||
return app('json')->success('保存成功'); |
||||
} |
||||
|
||||
/** |
||||
* TODO 清除缓存 |
||||
* @return \think\response\Json |
||||
* @author Qinii |
||||
* @day 12/9/21 |
||||
*/ |
||||
public function clearCache() |
||||
{ |
||||
$type = $this->request->param('type', 1); |
||||
switch ($type) { |
||||
case 2: |
||||
BaseCache::tag('get_product')->clear(); |
||||
break; |
||||
case 3: |
||||
BaseCache::delete('get_api_config'); |
||||
break; |
||||
default: |
||||
BaseCache::clear(); |
||||
break; |
||||
} |
||||
$configValueRepository = app()->make(ConfigValueRepository::class); |
||||
$configValueRepository->syncConfig(); |
||||
$configValueRepository->special(); |
||||
return app('json')->success('清除缓存成功'); |
||||
} |
||||
} |
@ -0,0 +1,30 @@ |
||||
<?php |
||||
|
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
|
||||
|
||||
namespace app\validate\admin; |
||||
|
||||
|
||||
use think\Validate; |
||||
|
||||
class DepositValidate extends Validate |
||||
{ |
||||
protected $failException = true; |
||||
|
||||
protected $rule = [ |
||||
'money|金额' => 'require', |
||||
'cycle|周期' => 'require', |
||||
'diamond|分组名称' => 'require', |
||||
'diamond_max|分组名称' => 'require', |
||||
'count|名额' => 'require', |
||||
]; |
||||
} |
@ -0,0 +1,323 @@ |
||||
<template> |
||||
<div class="divBox"> |
||||
<el-card class="box-card"> |
||||
<div slot="header" class="clearfix"> |
||||
<div class="container"> |
||||
<el-form size="small" inline label-width="100px"> |
||||
<el-form-item label="昵称:"> |
||||
<el-input |
||||
style="width: 200px" |
||||
placeholder="请输入昵称" |
||||
v-model="tableFrom.nickname" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item label="手机号:"> |
||||
<el-input |
||||
style="width: 200px" |
||||
placeholder="请输入手机号" |
||||
v-model="tableFrom.phone" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item label="货币类型:" clearable> |
||||
<el-select |
||||
v-model="tableFrom.asset_type" |
||||
placeholder="请选择货币类型" |
||||
clearable |
||||
> |
||||
<el-option value="1" label="消费积分">消费积分</el-option> |
||||
<el-option value="2" label="分红点">分红点</el-option> |
||||
<el-option value="3" label="福利积分">福利积分</el-option> |
||||
<el-option value="4" label="惠通宝">惠通宝</el-option> |
||||
<el-option value="5" label="贡献值">贡献值</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="分值来源:"> |
||||
<el-select |
||||
placeholder="请选择" |
||||
v-model="tableFrom.type" |
||||
clearable |
||||
> |
||||
<el-option value="1" label="个人下单">个人下单</el-option> |
||||
<el-option value="2" label="签到">签到</el-option> |
||||
<el-option value="3" label="消费积分兑换分红点">消费积分兑换分红点</el-option> |
||||
<el-option value="4" label="分红点返佣">分红点返佣</el-option> |
||||
<el-option value="5" label="推广返佣">推广返佣</el-option> |
||||
<el-option value="6" label="培育奖">培育奖</el-option> |
||||
<el-option value="7" label="区域代理奖">区域代理奖</el-option> |
||||
<el-option value="8" label="惠通宝兑换消费积分">惠通宝兑换消费积分</el-option> |
||||
<el-option value="9" label="转让他人">转让他人</el-option> |
||||
<el-option value="10" label="他人转让">他人转让</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="时间选择:" class="width100"> |
||||
<el-date-picker |
||||
v-model="timeVal" |
||||
value-format="yyyy/MM/dd" |
||||
format="yyyy/MM/dd" |
||||
size="small" |
||||
type="daterange" |
||||
placement="bottom-end" |
||||
placeholder="自定义时间" |
||||
style="width: 250px;" |
||||
@change="onchangeTime" |
||||
/> |
||||
</el-form-item> |
||||
<el-button size="small" type="primary" icon="el-icon-search" @click="getList()">搜索</el-button> |
||||
<el-button size="small" type="primary" @click="exportTableToExcel('table', 'exported-data')">导出</el-button> |
||||
</el-form> |
||||
</div> |
||||
</div> |
||||
<el-table v-loading="loading" :data="tableData.data" style="width: 100%" size="small" id="table"> |
||||
<el-table-column label="ID" prop="id" min-width="80"/> |
||||
<el-table-column label="用户昵称" prop="user_nickname" min-width="120"/> |
||||
<el-table-column label="手机" prop="user_phone" min-width="120"/> |
||||
<el-table-column label="货币类型" prop="asset_type" min-width="120"/> |
||||
<el-table-column label="分值来源" prop="type" min-width="120"/> |
||||
<el-table-column label="变动情况" prop="count" min-width="120"/> |
||||
<el-table-column label="变动时间" prop="create_time" min-width="120" /> |
||||
|
||||
</el-table> |
||||
<div class="block"> |
||||
<el-pagination |
||||
:page-sizes="[20, 40, 60, 80]" |
||||
:page-size="tableFrom.limit" |
||||
:current-page="tableFrom.page" |
||||
layout="total, sizes, prev, pager, next, jumper" |
||||
:total="tableData.total" |
||||
@size-change="handleSizeChange" |
||||
@current-change="pageChange" |
||||
/> |
||||
</div> |
||||
</el-card> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from "vuex"; |
||||
import {discountsList, discountsChangeStatus, discountsGetDetails, assetsLogList} from "@/api/marketing"; |
||||
import { formatDate } from "@/utils/validate"; |
||||
import { roterPre } from '@/settings' |
||||
|
||||
import { saveAs } from 'file-saver'; |
||||
import * as XLSX from 'xlsx'; |
||||
export default { |
||||
name: "Discounts", |
||||
filters: { |
||||
formatDate(time) { |
||||
if (time !== 0) { |
||||
let date = new Date(time * 1000); |
||||
return formatDate(date, "yyyy-MM-dd hh:mm"); |
||||
} |
||||
}, |
||||
}, |
||||
data() { |
||||
return { |
||||
loading: false, |
||||
dialogLoading: false, |
||||
roterPre: roterPre, |
||||
dialogVisible: false, |
||||
tableData: { |
||||
data: [], |
||||
total: 0, |
||||
}, |
||||
tableFrom: { |
||||
type: "", |
||||
nickname: "", |
||||
phone: "", |
||||
page: 1, |
||||
asset_type: "", |
||||
limit: 20, |
||||
}, |
||||
specsMainData: [], |
||||
specsData: [], |
||||
timeVal: [], |
||||
formValidate: { |
||||
title: "", //套餐名称 |
||||
type: 0, //套餐类型 |
||||
image: "", //套餐主图 |
||||
is_time: 0, //是否限时 |
||||
is_limit: 0, //限量1/不限量0 |
||||
limit_num: 0, //限量 |
||||
link_ids: [], //参与用户标签 |
||||
time: [], //套餐时间 |
||||
sort: 0, //排序 |
||||
free_shipping: 1, //是否包邮 |
||||
status: 1, |
||||
products: [], |
||||
}, |
||||
}; |
||||
}, |
||||
computed: { |
||||
}, |
||||
created() { |
||||
this.getList(''); |
||||
}, |
||||
methods: { |
||||
exportTableToExcel(tableId, fileName) { |
||||
/* 获取表格数据 */ |
||||
const ws = XLSX.utils.table_to_sheet(document.getElementById(tableId)); |
||||
|
||||
/* 新建工作簿并添加工作表 */ |
||||
const wb = XLSX.utils.book_new(); |
||||
XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); |
||||
|
||||
/* 生成Excel文件 */ |
||||
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' }); |
||||
|
||||
/* 字符串转ArrayBuffer */ |
||||
function s2ab(s) { |
||||
const buf = new ArrayBuffer(s.length); |
||||
const view = new Uint8Array(buf); |
||||
for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; |
||||
return buf; |
||||
} |
||||
|
||||
/* 保存文件 */ |
||||
saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), fileName + '.xlsx'); |
||||
}, |
||||
// 查看 |
||||
handleDetail(id) { |
||||
this.dialogVisible = true; |
||||
this.dialogLoading = true; |
||||
discountsGetDetails(id).then((res) => { |
||||
this.formValidate = res.data; |
||||
this.formValidate.time = res.data.time || []; |
||||
this.dialogLoading = false; |
||||
for (let i = 0; i < res.data.discountsProduct.length; i++) { |
||||
const element = res.data.discountsProduct[i]; |
||||
element.attr= []; |
||||
const attrArr = element['product'] && element['product']['attrValue'] || []; |
||||
for (let j = 0; j < attrArr.length; j++) { |
||||
const attr = attrArr[j]; |
||||
if (attr.productSku) { |
||||
element.attr.push(attr) |
||||
} |
||||
} |
||||
if (element.type == 1) { |
||||
this.specsMainData.push(element); |
||||
} else { |
||||
this.specsData.push(element); |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
|
||||
// 列表 |
||||
getList(num) { |
||||
this.loading = true; |
||||
this.tableFrom.page = num ? num : this.tableFrom.page; |
||||
assetsLogList(this.tableFrom) |
||||
.then(async (res) => { |
||||
this.tableData.data = res.data.list; |
||||
this.tableData.total = res.data.count; |
||||
this.loading = false; |
||||
}) |
||||
.catch((res) => { |
||||
this.loading = false; |
||||
this.$message.error(res.message); |
||||
}); |
||||
}, |
||||
pageChange(page) { |
||||
this.tableFrom.page = page; |
||||
this.getList(''); |
||||
}, |
||||
handleSizeChange(val) { |
||||
this.tableFrom.limit = val; |
||||
this.getList(''); |
||||
}, |
||||
|
||||
// 具体日期 |
||||
onchangeTime(e) { |
||||
this.timeVal = e; |
||||
this.tableFrom.date = this.timeVal ? this.timeVal.join("-") : ""; |
||||
}, |
||||
|
||||
// 修改是否显示 |
||||
onchangeIsShow(row) { |
||||
discountsChangeStatus(row.discount_id,row.status) |
||||
.then(async (res) => { |
||||
this.$message.success(res.message); |
||||
this.getList(''); |
||||
}) |
||||
.catch((res) => { |
||||
this.$message.error(res.message); |
||||
this.getList(''); |
||||
}); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped lang="scss"> |
||||
.tabBox_img { |
||||
width: 36px; |
||||
height: 36px; |
||||
border-radius: 4px; |
||||
cursor: pointer; |
||||
|
||||
img { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
} |
||||
.box-container { |
||||
overflow: hidden; |
||||
} |
||||
.box-container .list { |
||||
float: left; |
||||
line-height: 40px; |
||||
|
||||
} |
||||
.box-container .sp { |
||||
width: 50%; |
||||
//white-space: nowrap; |
||||
//overflow: hidden; |
||||
//text-overflow: ellipsis; |
||||
} |
||||
.box-container .sp3 { |
||||
width: 33.3333%; |
||||
} |
||||
.box-container .sp100 { |
||||
width: 100%; |
||||
} |
||||
.box-container .list .name { |
||||
display: inline-block; |
||||
color: #606266; |
||||
} |
||||
.box-container .list .blue { |
||||
color: #1890ff; |
||||
} |
||||
.box-container .list.image { |
||||
margin: 20px 0; |
||||
position: relative; |
||||
} |
||||
.box-container .list.image img { |
||||
position: absolute; |
||||
top: -20px; |
||||
} |
||||
.labeltop{ |
||||
max-height: 280px; |
||||
min-height: 120px; |
||||
overflow-y: auto; |
||||
} |
||||
.title{ |
||||
margin-bottom: 16px; |
||||
color: #17233d; |
||||
font-size: 14px; |
||||
font-weight: bold; |
||||
padding-bottom: 2px; |
||||
border-bottom: 1px solid #dfe6ec; |
||||
} |
||||
.product-data { |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
.image { |
||||
width: 50px !important; |
||||
height: 50px !important; |
||||
margin-right: 10px; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,166 @@ |
||||
<template> |
||||
<div class="divBox"> |
||||
<el-card> |
||||
<div class="mb20"> |
||||
<el-button size="small" type="primary" @click="onAdd">{{ '添加预存'}}</el-button> |
||||
</div> |
||||
<el-table |
||||
v-loading="listLoading" |
||||
:data="tableData.data" |
||||
size="small" |
||||
highlight-current-row |
||||
> |
||||
<el-table-column |
||||
label="ID" |
||||
min-width="60" |
||||
> |
||||
<template slot-scope="{row}"> |
||||
<span v-text="row.id" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
:label="'预存金额'" |
||||
min-width="180" |
||||
> |
||||
<template slot-scope="{row}"> |
||||
<span v-text="row.money" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
prop="cycle" |
||||
label="提现周期" |
||||
min-width="150" |
||||
/> |
||||
<el-table-column |
||||
prop="count" |
||||
label="名额" |
||||
min-width="150" |
||||
/> |
||||
<el-table-column |
||||
prop="diamond" |
||||
label="赠送钻石/天" |
||||
min-width="150" |
||||
/> |
||||
<el-table-column |
||||
prop="diamond_max" |
||||
label="钻石最大值" |
||||
min-width="150" |
||||
/> |
||||
<el-table-column |
||||
prop="create_time" |
||||
label="创建时间" |
||||
min-width="150" |
||||
/> |
||||
<el-table-column label="操作" min-width="90" fixed="right"> |
||||
<template slot-scope="scope"> |
||||
<el-button type="text" size="small" @click="onEdit(scope.row.id)">编辑</el-button> |
||||
<el-button type="text" size="small" @click="handleDelete(scope.row.id, scope.$index)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<div class="block"> |
||||
<el-pagination |
||||
background |
||||
:page-size="tableFrom.limit" |
||||
:current-page="tableFrom.page" |
||||
layout="total, prev, pager, next, jumper" |
||||
:total="tableData.total" |
||||
@size-change="handleSizeChange" |
||||
@current-change="pageChange" |
||||
/> |
||||
</div> |
||||
</el-card> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
import { |
||||
depositLstApi, |
||||
depositFormApi, |
||||
depositEditApi, |
||||
depositDeleteApi, |
||||
} from '@/api/user' |
||||
export default { |
||||
name: 'UserGroup', |
||||
data() { |
||||
return { |
||||
tableFrom: { |
||||
page: 1, |
||||
limit: 20 |
||||
}, |
||||
tableData: { |
||||
data: [], |
||||
total: 0 |
||||
}, |
||||
listLoading: true |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.getList() |
||||
}, |
||||
watch:{ |
||||
'$route.path': { |
||||
handler: function() { |
||||
this.getList() |
||||
}, |
||||
immediate: false, |
||||
deep: true |
||||
}, |
||||
}, |
||||
methods: { |
||||
// 列表 |
||||
getList() { |
||||
this.listLoading = true |
||||
depositLstApi(this.tableFrom).then(res => { |
||||
this.tableData.data = res.data.list |
||||
this.tableData.total = res.data.count |
||||
this.listLoading = false |
||||
}).catch(res => { |
||||
this.listLoading = false |
||||
this.$message.error(res.message) |
||||
}) |
||||
}, |
||||
pageChange(page) { |
||||
this.tableFrom.page = page |
||||
this.getList() |
||||
}, |
||||
handleSizeChange(val) { |
||||
this.tableFrom.limit = val |
||||
this.getList() |
||||
}, |
||||
// 添加 |
||||
onAdd() { |
||||
this.$modalForm(depositFormApi()).then(() => this.getList()) |
||||
}, |
||||
// 编辑 |
||||
onEdit(id) { |
||||
this.$modalForm(depositEditApi(id)).then(() => this.getList()) |
||||
}, |
||||
// 删除 |
||||
handleDelete(id, idx) { |
||||
this.$modalSure('删除').then(() => { |
||||
depositDeleteApi(id).then(({ message }) => { |
||||
this.$message.success(message) |
||||
this.tableData.data.splice(idx, 1) |
||||
this.getList() |
||||
}).catch(({ message }) => { |
||||
this.$message.error(message) |
||||
}) |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped lang="scss"> |
||||
|
||||
</style> |
@ -0,0 +1,112 @@ |
||||
<template> |
||||
<div class="divBox"> |
||||
<el-card class="box-card"> |
||||
<div class="search"> |
||||
<div class="input"> |
||||
<span>赠送方手机号</span> |
||||
<el-input v-model="account"></el-input> |
||||
</div> |
||||
<el-button size="small" style="margin-left:20px;" type="primary">查询</el-button> |
||||
<el-button size="small" type="info">重置</el-button> |
||||
</div> |
||||
<div class="info">惠通宝当前市值:{{huitong}}</div> |
||||
<el-table :data="tableData" style="width: 100%;"> |
||||
<el-table-column prop="user_phone" label="转让账户"></el-table-column> |
||||
<el-table-column prop="to_phone" label="收款账户"></el-table-column> |
||||
<el-table-column prop="count" label="转让数量"></el-table-column> |
||||
<el-table-column prop="create_time" label="转让时间"></el-table-column> |
||||
|
||||
</el-table> |
||||
<div style="text-align: right;"> |
||||
<el-pagination |
||||
@size-change="handleSizeChange" |
||||
@current-change="handleCurrentChange" |
||||
:current-page="pageIndex" |
||||
:page-sizes="[10, 20, 50, 100]" |
||||
:page-size="pageSize" |
||||
layout="total, sizes, prev, pager, next, jumper" |
||||
:total="total"> |
||||
</el-pagination> |
||||
</div> |
||||
</el-card> |
||||
|
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import {getHuitongbao} from '@/api/user' |
||||
// +---------------------------------------------------------------------- |
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] |
||||
// +---------------------------------------------------------------------- |
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved. |
||||
// +---------------------------------------------------------------------- |
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 |
||||
// +---------------------------------------------------------------------- |
||||
// | Author: CRMEB Team <admin@crmeb.com> |
||||
// +---------------------------------------------------------------------- |
||||
import { |
||||
|
||||
} from '@/api/user' |
||||
|
||||
|
||||
export default { |
||||
|
||||
data() { |
||||
return { |
||||
account:'', |
||||
tableData:[], |
||||
pageIndex:1, |
||||
pageSize:10, |
||||
total:0, |
||||
huitong:0, |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.getHuitongbaoHandle() |
||||
}, |
||||
methods: { |
||||
handleCurrentChange(val){ |
||||
this.pageIndex = val; |
||||
this.getHuitongbaoHandle() |
||||
}, |
||||
handleSizeChange(val){ |
||||
this.pageSize = val; |
||||
this.getHuitongbaoHandle() |
||||
}, |
||||
getHuitongbaoHandle(){ |
||||
let params = { |
||||
page:this.pageIndex, |
||||
limit:this.pageSize, |
||||
phone:this.account |
||||
} |
||||
getHuitongbao(params).then(res=>{ |
||||
console.log(res,"99") |
||||
this.tableData = res.data.list; |
||||
this.total = res.data.count; |
||||
this.huitong = res.data.huitong |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.search{ |
||||
display: flex; |
||||
align-items: center; |
||||
.input{ |
||||
display: flex; |
||||
align-items: center; |
||||
span{ |
||||
display:inline-block; |
||||
width:200px; |
||||
} |
||||
} |
||||
} |
||||
.info{ |
||||
font-size: 18px; |
||||
font-weight: bold; |
||||
margin:10px 0; |
||||
|
||||
} |
||||
</style> |
Loading…
Reference in new issue