From abc7edc3c8ad59ff213c85413d0d6a10d7a0b6f7 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Wed, 17 Dec 2025 18:03:09 +0800
Subject: [PATCH] 1. 发布供需消耗连盟币,连盟币数量在后台独立设置 2. 小程序供需个人中心可自由切换身份 3. 增加私信系统 4. 增加评论系统,用户可在发布者详情页进行评论操作,评论获得的连盟币可在后台设置 5. 增加发布者的等级,以好评个数为条件进行升级,小程序端会显示该等级的图标,如没有等级则不会显示图标 6. 增加设置消耗连盟币可以解锁、查看发布的信息,费用可在后台设置 7. 小程序供需大厅界面优化,以及增加了推荐栏目,该栏目按发布的分类相似进行匹配,比如A用户发布了 互联网 分类的需求,则会优先推荐匹配互联网分类的供应需求给他。
---
supplier_vue/src/views/plus/release/demand/user/dialog/Edit.vue | 93
supplier_vue/src/views/plus/release/cash/dialog/Edit.vue | 94
admin/app/common/model/plus/release/Project.php | 10
supplier_vue/src/views/plus/release/releasecategory/Add.vue | 103
supplier_vue/src/views/plus/release/demand/apply/dialog/Edit.vue | 88
shop_vue/src/views/supplier/supplier/add.vue | 11
admin/app/api/model/plus/release/Chat.php | 86
admin/app/supplier/controller/plus/release/Grade.php | 66
shop_vue/src/views/plus/release/supply/user/User.vue | 13
supplier_vue/src/views/plus/release/supply/apply/Apply.vue | 168 +
admin/app/shop/model/plus/release/Grade.php | 52
supplier_vue/src/views/plus/release/grade/part/Edit.vue | 131
supplier_vue/src/views/plus/release/tag/Edit.vue | 85
admin/app/supplier/controller/plus/release/Evaluate.php | 40
shop_vue/src/views/plus/release/grade/part/Edit.vue | 131
admin/app/api/model/plus/release/Project.php | 31
admin/app/shop/controller/plus/release/DemandUser.php | 5
admin/app/supplier/controller/plus/release/DemandApply.php | 43
admin/app/supplier/controller/plus/release/ReleaseCategory.php | 68
mobile/pages.json | 21
admin/app/common/model/plus/release/Evaluate.php | 59
admin/app/common/model/plus/release/Grade.php | 112
admin/app/api/controller/plus/release/SupplyIndex.php | 29
admin/app/common/model/plus/release/ChatRelation.php | 44
mobile/pages3/release/chat/chat_list.vue | 155
shop_vue/src/views/supplier/supplier/edit.vue | 9
supplier_vue/src/views/plus/release/demandproject/dialog/Edit.vue | 92
shop_vue/src/views/plus/release/supply/user/dialog/Edit.vue | 13
admin/app/shop/controller/plus/release/Grade.php | 61
admin/app/api/controller/plus/release/Project.php | 12
mobile/pages3/release/project/popup/evaluate.vue | 232 +
admin/app/api/model/plus/release/SupplyUser.php | 32
supplier_vue/src/views/plus/release/evaluate/list.vue | 174 +
admin/app/common/model/plus/agent/Referee.php | 2
mobile/pages3/release/chat/chat.vue | 585 +++
supplier_vue/src/views/plus/bonus/setting/part/Basic.vue | 37
shop_vue/src/views/plus/release/demand/user/User.vue | 13
admin/app/supplier/controller/plus/release/Cash.php | 85
shop_vue/src/api/plus/release.js | 24
supplier_vue/src/views/plus/release/index.vue | 192 +
shop_vue/src/views/plus/release/index.vue | 24
mobile/pages/branch/admin/activity/user.vue | 1
mobile/pages3/release/supplyproject/edit.vue | 11
shop_vue/src/views/plus/vip/user/User.vue | 16
admin/app/common/model/plus/bonus/Setting.php | 2
admin/app/api/model/plus/release/ChatRelation.php | 23
admin/app/common/model/plus/release/Chat.php | 68
supplier_vue/src/views/plus/release/demandproject/index.vue | 232 +
supplier_vue/src/views/plus/release/releasecategory/index.vue | 130
admin/app/common/model/plus/release/SupplyUser.php | 9
admin/app/supplier/controller/plus/release/SupplyUser.php | 59
shop_vue/src/views/plus/bonus/setting/part/Basic.vue | 37
supplier_vue/src/views/plus/release/order/Order.vue | 281 +
shop_vue/src/views/plus/release/demand/user/dialog/Edit.vue | 12
admin/app/common/model/plus/release/DemandUser.php | 9
admin/app/supplier/controller/plus/release/SupplyApply.php | 43
supplier_vue/src/views/plus/release/demandproject/Edit.vue | 78
admin/app/api/model/plus/release/DemandUser.php | 32
supplier_vue/src/views/plus/release/tag/index.vue | 147
shop_vue/src/views/plus/vip/setting/part/Basic.vue | 37
mobile/pages3/release/project/list.vue | 95
supplier_vue/src/views/plus/release/releasecategory/Edit.vue | 106
shop_vue/src/views/plus/release/setting/Setting.vue | 2
supplier_vue/src/views/plus/release/setting/Setting.vue | 58
supplier_vue/src/views/plus/release/grade/part/list.vue | 189 +
supplier_vue/src/views/plus/release/grade/index.vue | 32
admin/app/shop/model/plus/release/SupplyUser.php | 2
supplier_vue/src/views/plus/release/order/dialog/Edit.vue | 182 +
supplier_vue/src/views/plus/release/setting/part/Settlement备份可删.vue | 104
supplier_vue/src/views/plus/release/cash/Cash.vue | 333 ++
admin/app/shop/model/plus/release/DemandUser.php | 2
admin/app/api/model/branch/ActivityUser.php | 3
supplier_vue/src/views/plus/release/supply/apply/dialog/Edit.vue | 88
supplier_vue/src/views/plus/release/supply/user/dialog/Edit.vue | 93
admin/app/supplier/controller/plus/release/SupplyProject.php | 53
shop_vue/src/views/plus/release/setting/part/Settlement.vue | 30
admin/app/api/service/order/settled/OrderSettledService.php | 2
admin/app/api/model/plus/release/DemandProject.php | 22
mobile/pages3/release/demandproject/edit.vue | 10
admin/app/common/model/branch/ActivityUser.php | 4
mobile/pages3/release/supplyindex/index.vue | 91
shop_vue/src/views/plus/release/grade/part/Add.vue | 136
admin/app/api/controller/plus/release/SupplyProject.php | 16
admin/app/api/controller/plus/release/Evaluate.php | 55
admin/app/api/model/plus/release/SupplyProject.php | 21
admin/app/api/controller/plus/release/Chat.php | 60
supplier_vue/src/views/plus/release/supply/user/User.vue | 214 +
supplier_vue/src/views/plus/release/demand/user/User.vue | 214 +
admin/app/supplier/controller/plus/release/DemandUser.php | 59
mobile/pages3/release/demandproject/release.vue | 23
supplier_vue/src/views/plus/release/tag/Add.vue | 86
shop_vue/src/views/plus/release/supplyproject/index.vue | 14
admin/app/common/model/user/User.php | 9
supplier_vue/src/views/plus/vip/setting/part/Basic.vue | 68
admin/app/shop/controller/plus/release/Evaluate.php | 35
admin/app/api/model/plus/release/Evaluate.php | 98
shop_vue/src/views/plus/release/demandproject/index.vue | 20
shop_vue/src/views/plus/release/grade/part/list.vue | 189 +
mobile/pages3/release/project/detail.vue | 117
admin/app/common/model/plus/vip/Order.php | 35
admin/app/shop/model/plus/release/DemandProject.php | 4
shop_vue/src/views/plus/release/evaluate/list.vue | 174 +
admin/app/supplier/controller/plus/release/Setting.php | 144
supplier_vue/src/api/plus/release.js | 178 +
shop_vue/src/views/plus/release/grade/index.vue | 32
admin/app/supplier/controller/plus/release/Tag.php | 71
mobile/pages3/release/project/look-evaluate/look-evaluate.vue | 295 +
admin/app/shop/controller/plus/release/SupplyUser.php | 5
admin/app/shop/model/plus/release/SupplyProject.php | 4
supplier_vue/src/views/plus/release/demand/apply/Apply.vue | 169 +
supplier_vue/src/views/plus/bonus/index.vue | 5
supplier_vue/src/views/plus/release/supplyproject/dialog/Edit.vue | 92
supplier_vue/src/views/plus/release/setting/part/Settlement.vue | 102
admin/app/api/controller/plus/release/DemandProject.php | 18
admin/app/common/model/plus/vip/User.php | 4
shop_vue/src/views/plus/release/setting/part/Settlement备份可删.vue | 104
admin/app/supplier/controller/plus/release/Order.php | 91
supplier_vue/src/views/plus/release/supplyproject/Edit.vue | 77
shop_vue/src/views/plus/vip/user/dialog/SubUser.vue | 136
/dev/null | 35
admin/app/common/model/plus/bonus/Order.php | 20
mobile/pages3/release/supplyproject/release.vue | 21
admin/app/shop/model/plus/release/Evaluate.php | 45
mobile/pages3/release/demandindex/index.vue | 88
admin/app/api/controller/plus/release/DemandIndex.php | 28
supplier_vue/src/views/plus/release/supplyproject/index.vue | 227 +
supplier_vue/src/views/plus/release/grade/part/Add.vue | 136
admin/app/common/model/plus/vip/Setting.php | 4
admin/app/supplier/controller/plus/release/DemandProject.php | 54
129 files changed, 9,723 insertions(+), 162 deletions(-)
diff --git a/admin/app/api/controller/plus/release/Chat.php b/admin/app/api/controller/plus/release/Chat.php
new file mode 100644
index 0000000..6cc832d
--- /dev/null
+++ b/admin/app/api/controller/plus/release/Chat.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace app\api\controller\plus\release;
+
+use app\api\model\plus\release\Chat as ChatModel;
+use app\api\controller\Controller;
+
+/**
+ * 客服消息
+ */
+class Chat extends Controller
+{
+ protected $user;
+ /**
+ * 构造方法
+ */
+ public function initialize()
+ {
+ $this->user = $this->getUser();
+ }
+
+ //我的聊天列表
+ public function index()
+ {
+ $Chat = new ChatModel;
+ $list = $Chat->myList($this->user);
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ //添加消息
+ public function add()
+ {
+ $Chat = new ChatModel;
+ if ($Chat->add($this->postData(), $this->user)) {
+ return $this->renderSuccess('发送成功');
+ } else {
+ return $this->renderError($Chat->getError() ?: '发送失败');
+ }
+
+ }
+
+ //获取聊天信息
+ public function message()
+ {
+ $postData = $this->postData();
+ // $postData['you_user_id'] = 796;
+ $Chat = new ChatModel;
+ $list = $Chat->getMessage($postData, $this->user);
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ //获取聊天用户信息
+ public function getInfo()
+ {
+ $Chat = new ChatModel;
+ $info = $Chat->getInfo($this->user['user_id']);
+ return $this->renderSuccess('', compact('info'));
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/api/controller/plus/release/DemandIndex.php b/admin/app/api/controller/plus/release/DemandIndex.php
index 70a1471..3558941 100644
--- a/admin/app/api/controller/plus/release/DemandIndex.php
+++ b/admin/app/api/controller/plus/release/DemandIndex.php
@@ -7,6 +7,7 @@
use app\api\model\plus\release\DemandUser as DemandUserModel;
use app\api\model\settings\Message as MessageModel;
use app\common\exception\BaseException;
+use app\api\model\plus\release\Setting;
/**
* 首页
@@ -32,6 +33,9 @@
public function index()
{
$is_release = $this->isReleaseUser();
+ //获取开通权限连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
return $this->renderSuccess('', [
'is_release' => $is_release,
@@ -41,6 +45,7 @@
'user' => $this->user,
// 信息
'release' => $this->release,
+ 'setting' => $setting,
// 背景图
'background' => '',
]);
@@ -95,4 +100,27 @@
}
return $this->renderError($model->getError() ?: '提交失败');
}
+
+ public function topay()
+ {
+ $data = $this->postData();
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ $user = $this->user;
+ $pay_price = empty($setting['check_price']) ? 0 : $setting['check_price'];
+ $point = $user['points'];
+ if($pay_price > $point){
+ return $this->renderError('连盟币不足');
+ }
+ $release= $this->release;
+ if($release['is_check'] == 1){
+ return $this->renderError('权限已开通,请勿重复开通');
+ }
+ $model = new DemandUserModel;
+ if ($model->topay($user, $pay_price)) {
+ return $this->renderSuccess('开通成功');
+ }
+ return $this->renderError($model->getError() ?: '提交失败');
+ }
}
\ No newline at end of file
diff --git a/admin/app/api/controller/plus/release/DemandProject.php b/admin/app/api/controller/plus/release/DemandProject.php
index c4fd0a8..428266a 100644
--- a/admin/app/api/controller/plus/release/DemandProject.php
+++ b/admin/app/api/controller/plus/release/DemandProject.php
@@ -7,6 +7,7 @@
use app\api\model\plus\release\DemandUser as DemandUserModel;
use app\api\model\plus\release\ReleaseCategory as ReleaseCategoryModel;
use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
+use app\api\model\plus\release\Setting;
/**
@@ -53,8 +54,12 @@
*/
public function defaultData()
{
- return $this->renderSuccess('', [
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ return $this->renderSuccess('', [
'category_list' => ReleaseCategoryModel::getALL(),
+ 'setting' => $setting,
]);
}
@@ -81,8 +86,17 @@
public function add()
{
$postData = $this->postData();
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ $user = $this->user;
+ $pay_price = empty($setting['demand_price']) ? 0 : $setting['demand_price'];
+ $point = $user['points'];
+ if($pay_price > $point){
+ return $this->renderError('连盟币不足');
+ }
$model = new ProjectModel;
- if ($model->add($postData,$this->demand)) {
+ if ($model->add($postData,$this->demand, $pay_price)) {
return $this->renderSuccess('提交成功');
}
return $this->renderError($model->getError() ?: '提交失败');
diff --git a/admin/app/api/controller/plus/release/Evaluate.php b/admin/app/api/controller/plus/release/Evaluate.php
new file mode 100644
index 0000000..d38e42f
--- /dev/null
+++ b/admin/app/api/controller/plus/release/Evaluate.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace app\api\controller\plus\release;
+
+use app\api\controller\Controller;
+use app\api\model\plus\release\Evaluate as EvaluateModel;
+
+
+/**
+ * 模型
+ */
+class Evaluate extends Controller
+{
+ // 当前用户
+ private $user;
+
+ /**
+ * 构造方法
+ */
+ public function initialize()
+ {
+ // 用户信息
+ $this->user = $this->getUser();;
+ }
+
+ /**
+ * 列表
+ */
+ public function lists($project_id, $scoreType = -1)
+ {
+ $model = new EvaluateModel;
+ $list = $model->getEvaluateList($project_id, $scoreType, $this->postData());
+ $total = $model->getTotal($project_id);
+ return $this->renderSuccess('', compact('list', 'total'));
+ }
+
+
+
+ /**
+ *评论
+ */
+ public function evaluate()
+ {
+ $params = $this->request->param();
+ $model = new EvaluateModel;
+ $params['user_id'] = $this->user['user_id'];
+ $params['image_list'] = json_decode($params['image_list'],true);
+ $result = $model->evaluate($params);
+ if(!$result){
+ return $this->renderError($model->getError() ?: '评论失败');
+ }
+ return $this->renderSuccess('评论成功');
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/api/controller/plus/release/Project.php b/admin/app/api/controller/plus/release/Project.php
index 04b67f1..2ec5dfe 100644
--- a/admin/app/api/controller/plus/release/Project.php
+++ b/admin/app/api/controller/plus/release/Project.php
@@ -38,10 +38,22 @@
$model = new ProjectModel;
$user_id = $this->user['user_id'];
+ $is_check = 0;
+ $demanduser = DemandUserModel::detail($user_id);
+ if(empty($demanduser)){
+ $supplyuser = SupplyUserModel::detail($user_id);
+ if(!empty($supplyuser)){
+ $is_check = $supplyuser['is_check'];
+ }
+ }else{
+ $is_check = $demanduser['is_check'];
+ }
+
return $this->renderSuccess('', [
// 列表
'list' => $model->getList($user_id,$postData),
'category_list' => ReleaseCategoryModel::getALL(),
+ 'is_check' => $is_check,
]);
}
diff --git a/admin/app/api/controller/plus/release/SupplyIndex.php b/admin/app/api/controller/plus/release/SupplyIndex.php
index 569e99f..ea5a0eb 100644
--- a/admin/app/api/controller/plus/release/SupplyIndex.php
+++ b/admin/app/api/controller/plus/release/SupplyIndex.php
@@ -7,6 +7,7 @@
use app\api\model\plus\release\SupplyUser as SupplyUserModel;
use app\api\model\settings\Message as MessageModel;
use app\common\exception\BaseException;
+use app\api\model\plus\release\Setting;
/**
* 首页
@@ -33,6 +34,10 @@
{
$is_release = $this->isReleaseUser();
+ //获取开通权限连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+
return $this->renderSuccess('', [
// 当前是否
'is_release' => $is_release,
@@ -42,6 +47,7 @@
'user' => $this->user,
// 信息
'release' => $this->release,
+ 'setting' => $setting,
// 背景图
'background' => '',
]);
@@ -96,4 +102,27 @@
}
return $this->renderError($model->getError() ?: '提交失败');
}
+
+ public function topay()
+ {
+ $data = $this->postData();
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ $user = $this->user;
+ $pay_price = empty($setting['check_price']) ? 0 : $setting['check_price'];
+ $point = $user['points'];
+ if($pay_price > $point){
+ return $this->renderError('连盟币不足');
+ }
+ $release= $this->release;
+ if($release['is_check'] == 1){
+ return $this->renderError('权限已开通,请勿重复开通');
+ }
+ $model = new SupplyUserModel;
+ if ($model->topay($user, $pay_price)) {
+ return $this->renderSuccess('开通成功');
+ }
+ return $this->renderError($model->getError() ?: '提交失败');
+ }
}
\ No newline at end of file
diff --git a/admin/app/api/controller/plus/release/SupplyProject.php b/admin/app/api/controller/plus/release/SupplyProject.php
index 932b90b..cec5ab4 100644
--- a/admin/app/api/controller/plus/release/SupplyProject.php
+++ b/admin/app/api/controller/plus/release/SupplyProject.php
@@ -9,6 +9,7 @@
use app\api\model\plus\release\Tag as TagModel;
use app\common\model\plus\release\ReleaseProjectTag as ReleaseProjectTagModel;
use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
+use app\api\model\plus\release\Setting;
/**
@@ -55,9 +56,13 @@
*/
public function defaultData()
{
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
return $this->renderSuccess('', [
'category_list' => ReleaseCategoryModel::getALL(),
'tag_list' => TagModel::getALL(),
+ 'setting' => $setting,
]);
}
@@ -94,8 +99,17 @@
public function add()
{
$postData = $this->postData();
+ //获取支付连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ $user = $this->user;
+ $pay_price = empty($setting['supply_price']) ? 0 : $setting['supply_price'];
+ $point = $user['points'];
+ if($pay_price > $point){
+ return $this->renderError('连盟币不足');
+ }
$model = new ProjectModel;
- if ($model->add($postData,$this->supply)) {
+ if ($model->add($postData,$this->supply, $pay_price)) {
return $this->renderSuccess('提交成功');
}
return $this->renderError($model->getError() ?: '提交失败');
diff --git a/admin/app/api/model/branch/ActivityUser.php b/admin/app/api/model/branch/ActivityUser.php
index fe233e7..792b2dd 100644
--- a/admin/app/api/model/branch/ActivityUser.php
+++ b/admin/app/api/model/branch/ActivityUser.php
@@ -39,7 +39,7 @@
public function getListForUser($user_id, $params = [])
{
// 构建查询规则
- $model = $this->alias('A')->with(['activity' => ['branch', 'image']])
+ $model = $this->alias('A')->with(['activity' => ['branch', 'image'],'branch'])
->join('branch_activity B', 'B.activity_id = A.activity_id')
->field('A.*')
->visible(['activity' => ['name', 'image' => ['file_path'], 'branch' => ['name']]])
@@ -65,6 +65,7 @@
{
// 构建查询规则
$model = $this->alias('auser')
+ ->with('branch')
->field('auser.*,user.nickName,auser.real_name,user.avatarUrl')
->join('user', 'user.user_id = auser.user_id')
->where('auser.is_delete', '=', 0)
diff --git a/admin/app/api/model/plus/release/Chat.php b/admin/app/api/model/plus/release/Chat.php
new file mode 100644
index 0000000..50bbca1
--- /dev/null
+++ b/admin/app/api/model/plus/release/Chat.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace app\api\model\plus\release;
+
+use app\common\model\plus\release\Chat as ChatModel;
+use app\common\model\plus\release\ChatRelation as ChatRelationModel;
+use app\api\model\user\User as UserModel;
+
+/**
+ * 消息模型类
+ */
+class Chat extends ChatModel
+{
+
+ /**
+ * 隐藏字段
+ */
+ protected $hidden = [
+ 'app_id',
+ 'update_time'
+ ];
+
+ //消息列表
+ public function myList($user)
+ {
+ $ChatRelation = new ChatRelation();
+ $list = $ChatRelation->with(['user'])
+ ->where(['user_id' => $user['user_id']])
+ ->whereOr(['other_user_id' => $user['user_id']])
+ ->order('update_time desc')
+ ->select();
+ foreach ($list as $key => &$value) {
+ $where['relation_id'] = $value['relation_id'];
+ if($value['user_id'] == $user['user_id']){
+ $where['user_id']= $other_user_id = $value['other_user_id'];
+ }else{
+ $where['user_id']= $other_user_id = $value['user_id'];
+ }
+ $where['status'] = 0;
+ $value['num'] = $this->where($where)->count();
+ unset($where['status']);
+ $value['newMessage'] = $this->where($where)->order('chat_id desc')->field('content,create_time')->find();
+ $value['user'] = UserModel::detail($other_user_id);
+ }
+ return $list;
+ }
+
+ //获取聊天信息
+ public function getMessage($data, $user)
+ {
+ $relation_id = ChatRelationModel::getRelationId($user['user_id'],$data['you_user_id']);
+ $list = $this->where("relation_id","=",$relation_id)
+ ->with(['user'])
+ ->order('chat_id desc')
+ ->paginate($data);
+ $where['relation_id'] = $relation_id;
+ $where['user_id'] = $data['you_user_id'];
+ $this->where($where)->update(['status' => 1]);
+ return $list;
+ }
+
+ //获取消息条数
+ public function mCount($user)
+ {
+ $num = 0;
+ if ($user) {
+ $num = $this->where('user_id', '=', $user['user_id'])->whereOr('user_id', '=', $user['user_id'])->count();
+ }
+ return $num;
+ }
+
+ //获取用户信息
+ public function getInfo($user_id)
+ {
+ $userInfo = UserModel::detail($user_id);
+ $data['avatarUrl'] = $userInfo['avatarUrl'];
+ return $data;
+ }
+
+ public static function getNoReadCount($user_id){
+ return self::where('user_id', '=', $user_id)->whereOr('user_id', '=', $user_id)
+ //->where('status', '=', 0)
+ ->count();
+ }
+
+}
diff --git a/admin/app/api/model/plus/release/ChatRelation.php b/admin/app/api/model/plus/release/ChatRelation.php
new file mode 100644
index 0000000..f566a1b
--- /dev/null
+++ b/admin/app/api/model/plus/release/ChatRelation.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace app\api\model\plus\release;
+use app\common\model\plus\release\ChatRelation as ChatRelationModel;
+
+
+/**
+ * 消息关系模型类
+ */
+class ChatRelation extends ChatRelationModel
+{
+
+ /**
+ * 隐藏字段
+ */
+ protected $hidden = [
+ 'app_id',
+ 'create_time',
+ 'update_time'
+ ];
+
+
+}
diff --git a/admin/app/api/model/plus/release/DemandProject.php b/admin/app/api/model/plus/release/DemandProject.php
index 8cbc59f..5774776 100644
--- a/admin/app/api/model/plus/release/DemandProject.php
+++ b/admin/app/api/model/plus/release/DemandProject.php
@@ -4,7 +4,8 @@
use app\common\model\plus\release\Project as ProjectModel;
use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
-
+use app\common\model\user\User as UserModel;
+use app\common\model\user\PointsLog as PointsLogModel;
/**
* 模型
@@ -29,7 +30,7 @@
/**
* 新增记录
*/
- public function add($postdata,$demand)
+ public function add($postdata,$demand,$pay_price)
{
$data = json_decode($postdata["formData"],true);
if (empty($data['name'])) {
@@ -55,6 +56,8 @@
'category_id'=>$data["category_id"],
'price'=>$data["price"],
'content'=>$data["content"],
+ 'product_content'=>$data["product_content"],
+ 'product_case'=>$data["product_case"],
'detail'=>$data["detail"],
'show_phone'=>$data["show_phone"],
'is_show'=>$data["is_show"],
@@ -66,11 +69,22 @@
$save_data["finish_time"] = '';
}
- return $this->transaction(function () use ($data, $save_data) {
+ return $this->transaction(function () use ($data, $save_data,$pay_price) {
// 记录内容
$this->save($save_data);
// 记录图片
$this->saveAllImages($this['project_id'],$data);
+
+ //减少连盟币
+ if($pay_price>0){
+ (new UserModel())->where('user_id', '=', $save_data['user_id'])->dec('points',$pay_price)->update();
+ PointsLogModel::add([
+ 'user_id' => $save_data['user_id'],
+ 'value' => -$pay_price,
+ 'describe' => "发布需求消耗连盟币",
+ 'app_id' => $save_data['app_id'],
+ ]);
+ }
return $this['project_id'];
});
@@ -103,6 +117,8 @@
'category_id'=>$data["category_id"],
'price'=>$data["price"],
'content'=>$data["content"],
+ 'product_content'=>$data["product_content"],
+ 'product_case'=>$data["product_case"],
'detail'=>$data["detail"],
'show_phone'=>$data["show_phone"],
'is_show'=>$data["is_show"],
diff --git a/admin/app/api/model/plus/release/DemandUser.php b/admin/app/api/model/plus/release/DemandUser.php
index 79085f3..88c1efb 100644
--- a/admin/app/api/model/plus/release/DemandUser.php
+++ b/admin/app/api/model/plus/release/DemandUser.php
@@ -3,6 +3,9 @@
namespace app\api\model\plus\release;
use app\common\model\plus\release\DemandUser as UserModel;
+use app\common\model\plus\release\SupplyUser as SupplyUserModel;
+use app\common\model\user\User as RealUserModel;
+use app\common\model\user\PointsLog as PointsLogModel;
/**
* 用户模型
@@ -28,4 +31,33 @@
]);
}
+ /**
+ * 开通权限
+ */
+ public function topay($user,$pay_price)
+ {
+ $save_data =[
+ 'is_check'=>1,
+ ];
+
+ return $this->transaction(function () use ($user, $save_data,$pay_price) {
+ // 改变权限状态
+ $this->where(['user_id'=>$user['user_id']])->save($save_data);
+ (new SupplyUserModel())->where(['user_id'=>$user['user_id']])->save($save_data);
+
+ //减少连盟币
+ if($pay_price>0){
+ (new RealUserModel())->where('user_id', '=', $user['user_id'])->dec('points',$pay_price)->update();
+ PointsLogModel::add([
+ 'user_id' => $user['user_id'],
+ 'value' => -$pay_price,
+ 'describe' => "开通查看信息权限消耗连盟币",
+ 'app_id' => self::$app_id,
+ ]);
+ }
+
+ return true;
+ });
+ }
+
}
\ No newline at end of file
diff --git a/admin/app/api/model/plus/release/Evaluate.php b/admin/app/api/model/plus/release/Evaluate.php
new file mode 100644
index 0000000..a4e4b68
--- /dev/null
+++ b/admin/app/api/model/plus/release/Evaluate.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace app\api\model\plus\release;
+
+use app\common\model\plus\release\Evaluate as EvaluateModel;
+use app\common\model\user\User as UserModel;
+use app\common\model\user\PointsLog as PointsLogModel;
+use app\api\model\plus\release\Setting;
+use app\common\model\plus\release\Project as ProjectModel;
+use app\common\model\plus\release\Grade as GradeModel;
+
+/**
+ * 模型
+ */
+class Evaluate extends EvaluateModel
+{
+
+ /**
+ * 获取指定评论列表
+ */
+ public function getEvaluateList($project_id, $scoreType = -1, $limit = 15)
+ {
+ // 筛选条件
+ $filter = [
+ 'project_id' => $project_id,
+ ];
+ // 评分
+ $scoreType > 0 && $filter['score'] = $scoreType;
+ return $this->with(['user'])
+ ->where($filter)
+ ->order(['create_time' => 'desc'])
+ ->paginate($limit);
+ }
+
+ /**
+ * 获取指定评分总数
+ */
+ public function getTotal($project_id)
+ {
+ return $this->field([
+ 'count(id) AS `all`',
+ 'count(score = 10 OR NULL) AS `praise`',
+ 'count(score = 20 OR NULL) AS `review`',
+ 'count(score = 30 OR NULL) AS `negative`',
+ ])->where([
+ 'project_id' => $project_id,
+ ])->find();
+ }
+ /**
+ * 添加评论
+ */
+ public function evaluate($params)
+ {
+ //判断重复评论
+ $result = $this->where('user_id','=',$params["user_id"])->where('project_id','=',$params["project_id"])->find();
+ if(!empty($result)){
+ $this->error = '请勿重复评论';
+ return false;
+ }
+
+ //获取奖励的连盟币
+ $setting = Setting::getAll();
+ $setting = $setting['settlement']['values'];
+ $money = empty($setting['eve_money']) ? 0 : $setting['eve_money'];
+
+ return $this->transaction(function () use ($params,$money) {
+ //奖励连盟币
+ if($money>0){
+ (new UserModel())->where('user_id', '=', $params['user_id'])->inc('points',$money)->update();
+ PointsLogModel::add([
+ 'user_id' => $params['user_id'],
+ 'value' => $money,
+ 'describe' => "评论奖励连盟币",
+ 'app_id' => self::$app_id,
+ ]);
+ }
+
+ $project = ProjectModel::detail($params["project_id"]);
+
+ $data["user_id"] = $params["user_id"];
+ $data["project_user_id"] = $project["user_id"];
+ $data["project_id"] = $params["project_id"];
+ $data["evaluate_content"] = $params["evaluate_content"];
+ //$data["server_score"] = $params["server_score"];
+ $data["score"] = empty($params["score"]) ? 10 : $params["score"];
+ $data["image_list"] = json_encode($params["image_list"]);
+ $data["app_id"] = self::$app_id;
+ $this->save($data);
+
+ //好评判断升级等级
+ if($params["score"] == 10){
+ (new GradeModel())->setUserGrade($project["user_id"],$project["project_type"]);
+ }
+
+ return true;
+ });
+ }
+}
\ No newline at end of file
diff --git a/admin/app/api/model/plus/release/Project.php b/admin/app/api/model/plus/release/Project.php
index 020ba26..ba04a29 100644
--- a/admin/app/api/model/plus/release/Project.php
+++ b/admin/app/api/model/plus/release/Project.php
@@ -3,7 +3,9 @@
namespace app\api\model\plus\release;
use app\common\model\plus\release\Project as ProjectModel;
-
+use app\common\model\plus\release\DemandUser as DemandUserModel;
+use app\common\model\plus\release\SupplyUser as SupplyUserModel;
+use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
/**
* 模型
@@ -20,15 +22,38 @@
$model = $model->where('name', 'like', '%'.$postdata["keyword"].'%');
}
if(!empty($postdata["category_id"])){
- $model = $model->where('category_id', '=', $postdata["category_id"]);
+ if($postdata["category_id"] == '-1'){
+ //根据分类匹配
+ $category_ids = (new ProjectModel())->where('user_id','=',$user_id)
+ ->where('project_type','=',$postdata["product_type"])
+ ->column('category_id');
+ if(!empty($category_ids)){
+ $model = $model->where('category_id', 'in', $category_ids);
+ }
+ }else{
+ $model = $model->where('category_id', '=', $postdata["category_id"]);
+ }
+
}
- return $model->with(['category','user'])->where('is_delete', '=', 0)
+ $list = $model->with(['category','user'])->where('is_delete', '=', 0)
->where('project_type', '=', $postdata["product_type"])
->where('status', '=', 1)
->where('is_show', '=', 1)
->where('user_id', '<>', $user_id)
->order(['create_time' => 'desc'])
->paginate($postdata);
+
+ foreach($list as &$val){
+ if($postdata["product_type"] == 0){
+ $release_user = DemandUserModel::detail($val['user_id'],['grade']);
+ }else{
+ $release_user = SupplyUserModel::detail($val['user_id'],['grade']);
+ }
+ $val['grade'] = empty($release_user['grade']) ? '' : $release_user['grade'];
+ $image_list = ReleaseProjectImageModel::getImage($val["project_id"]);
+ $val['image'] = empty($image_list[0]) ? '/static/default.png' : $image_list[0]['file_path'];
+ }
+ return $list;
}
}
\ No newline at end of file
diff --git a/admin/app/api/model/plus/release/SupplyProject.php b/admin/app/api/model/plus/release/SupplyProject.php
index ba90cc3..e22e939 100644
--- a/admin/app/api/model/plus/release/SupplyProject.php
+++ b/admin/app/api/model/plus/release/SupplyProject.php
@@ -6,6 +6,8 @@
use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
use app\common\model\plus\release\Tag as TagModel;
use app\common\model\plus\release\ReleaseProjectTag as ReleaseProjectTagModel;
+use app\common\model\user\User as UserModel;
+use app\common\model\user\PointsLog as PointsLogModel;
/**
@@ -31,7 +33,7 @@
/**
* 新增记录
*/
- public function add($postdata,$supply)
+ public function add($postdata,$supply,$pay_price)
{
$data = json_decode($postdata["formData"],true);
if (empty($data['name'])) {
@@ -57,6 +59,8 @@
'category_id'=>$data["category_id"],
'price'=>$data["price"],
'content'=>$data["content"],
+ 'product_content'=>$data["product_content"],
+ 'product_case'=>$data["product_case"],
'detail'=>$data["detail"],
'project_type'=>1,
'is_show'=>$data["is_show"],
@@ -69,13 +73,24 @@
$save_data["finish_time"] = '';
}
- return $this->transaction(function () use ($data, $save_data) {
+ return $this->transaction(function () use ($data, $save_data,$pay_price) {
// 记录内容
$this->save($save_data);
// 记录图片
$this->saveAllImages($this['project_id'],$data);
// 记录标签
$this->saveTag($this['project_id'],$data);
+
+ //减少连盟币
+ if($pay_price>0){
+ (new UserModel())->where('user_id', '=', $save_data['user_id'])->dec('points',$pay_price)->update();
+ PointsLogModel::add([
+ 'user_id' => $save_data['user_id'],
+ 'value' => -$pay_price,
+ 'describe' => "发布供应消耗连盟币",
+ 'app_id' => $save_data['app_id'],
+ ]);
+ }
return $this['project_id'];
});
@@ -108,6 +123,8 @@
'category_id'=>$data["category_id"],
'price'=>$data["price"],
'content'=>$data["content"],
+ 'product_content'=>$data["product_content"],
+ 'product_case'=>$data["product_case"],
'detail'=>$data["detail"],
'is_show'=>$data["is_show"],
'status'=>0,
diff --git a/admin/app/api/model/plus/release/SupplyUser.php b/admin/app/api/model/plus/release/SupplyUser.php
index 156e50f..981ba6a 100644
--- a/admin/app/api/model/plus/release/SupplyUser.php
+++ b/admin/app/api/model/plus/release/SupplyUser.php
@@ -3,6 +3,9 @@
namespace app\api\model\plus\release;
use app\common\model\plus\release\SupplyUser as UserModel;
+use app\common\model\plus\release\DemandUser as DemandUserModel;
+use app\common\model\user\User as RealUserModel;
+use app\common\model\user\PointsLog as PointsLogModel;
/**
* 用户模型
@@ -28,4 +31,33 @@
]);
}
+ /**
+ * 开通权限
+ */
+ public function topay($user,$pay_price)
+ {
+ $save_data =[
+ 'is_check'=>1,
+ ];
+
+ return $this->transaction(function () use ($user, $save_data,$pay_price) {
+ // 改变权限状态
+ $this->where(['user_id'=>$user['user_id']])->save($save_data);
+ (new DemandUserModel())->where(['user_id'=>$user['user_id']])->save($save_data);
+
+ //减少连盟币
+ if($pay_price>0){
+ (new RealUserModel())->where('user_id', '=', $user['user_id'])->dec('points',$pay_price)->update();
+ PointsLogModel::add([
+ 'user_id' => $user['user_id'],
+ 'value' => -$pay_price,
+ 'describe' => "开通查看信息权限消耗连盟币",
+ 'app_id' => self::$app_id,
+ ]);
+ }
+
+ return true;
+ });
+ }
+
}
\ No newline at end of file
diff --git a/admin/app/api/service/order/settled/OrderSettledService.php b/admin/app/api/service/order/settled/OrderSettledService.php
index 8753840..31cecd8 100644
--- a/admin/app/api/service/order/settled/OrderSettledService.php
+++ b/admin/app/api/service/order/settled/OrderSettledService.php
@@ -342,7 +342,7 @@
private function setOrderSettlementPrice($productList)
{
// 订单商品的总金额(不含优惠券折扣)
- $this->orderData['settlement_price'] = helper::number2(helper::getArrayColumnSum($productList, 'settlement_price'));
+ $this->orderData['settlement_price'] = helper::number2(helper::getArrayColumnSum($productList, 'total_settlement_price'));
}
/**
diff --git a/admin/app/common/model/branch/ActivityUser.php b/admin/app/common/model/branch/ActivityUser.php
index d484aa3..a930a81 100644
--- a/admin/app/common/model/branch/ActivityUser.php
+++ b/admin/app/common/model/branch/ActivityUser.php
@@ -43,6 +43,10 @@
{
return $this->belongsTo('app\\common\\model\\branch\\Activity', 'activity_id', 'activity_id');
}
+ public function branch()
+ {
+ return $this->belongsTo('app\\common\\model\\branch\\Branch', 'branch_id', 'branch_id');
+ }
/**
* 支付状态
diff --git a/admin/app/common/model/plus/agent/Referee.php b/admin/app/common/model/plus/agent/Referee.php
index fc81252..db30d1b 100644
--- a/admin/app/common/model/plus/agent/Referee.php
+++ b/admin/app/common/model/plus/agent/Referee.php
@@ -59,7 +59,7 @@
if($level > -1){
$model = $model->where('referee.level', '=', $level);
}
- return $model->with(['agent', 'user'])
+ return $model->with(['agent', 'user'=>['grade']])
->alias('referee')
->field('referee.*')
->join('user', 'user.user_id = referee.user_id','left')
diff --git a/admin/app/common/model/plus/bonus/Order.php b/admin/app/common/model/plus/bonus/Order.php
index 5af96d9..ddb6e2b 100644
--- a/admin/app/common/model/plus/bonus/Order.php
+++ b/admin/app/common/model/plus/bonus/Order.php
@@ -4,7 +4,8 @@
use app\common\model\BaseModel;
use app\common\enum\order\OrderTypeEnum;
-use app\common\model\plus\bonus\User as UserModel;
+use app\common\model\plus\bonus\User as BonusUserModel;
+use app\common\model\user\User as UserModel;
/**
* 队长订单模型
*/
@@ -208,7 +209,7 @@
return false;
}
// 获取当前买家的直推奖用户id和业绩奖用户id
- $agentUser = $model->getAgentUserId($order, $setting['begin_num']);
+ $agentUser = $model->getAgentUserId($order, $setting['begin_num'], $setting);
// 无分红用户
if (!$agentUser['first_user_id'] && !$agentUser['second_user_id']) {
return false;
@@ -251,21 +252,26 @@
/**
* 获取当前买家的所有上级分销商用户id
*/
- private function getAgentUserId($order, $begin_num)
+ private function getAgentUserId($order, $begin_num, $setting)
{
- $user = UserModel::detail($order['user_id']);
+ $user = BonusUserModel::detail($order['user_id']);
if (empty($user['parent_id'])) {
$second_user_id = 0;
} else {
- $second_user_id = UserModel::getSecondUserId($user['user_id'], $begin_num, $order);
+ $second_user_id = BonusUserModel::getSecondUserId($user['user_id'], $begin_num, $order);
}
if ($second_user_id==0){
$subsidy_user_id = 0;
}else{
- $subsidy_user_id = UserModel::getSubsidyUserId($second_user_id); //补贴用户
+ $subsidy_user_id = BonusUserModel::getSubsidyUserId($second_user_id); //补贴用户
+ if ($subsidy_user_id!=0){
+ if (!UserModel::getOperatingSubsidy($subsidy_user_id,$setting)){
+ $subsidy_user_id = 0;
+ }
+ }
}
$agentUser = [
- 'first_user_id' => UserModel::getFirstUserId($order['user_id']), //直推用户
+ 'first_user_id' => BonusUserModel::getFirstUserId($order['user_id']), //直推用户
'second_user_id' => $second_user_id, //业绩奖用户
'subsidy_user_id'=>$subsidy_user_id, //补贴用户
];
diff --git a/admin/app/common/model/plus/bonus/Setting.php b/admin/app/common/model/plus/bonus/Setting.php
index 6ec258d..b2e422f 100644
--- a/admin/app/common/model/plus/bonus/Setting.php
+++ b/admin/app/common/model/plus/bonus/Setting.php
@@ -125,6 +125,8 @@
'keep_assets' => '0', // 更换排位用户是否保留资产 1保留 0不保留
// 收益补贴
'operating_subsidy' => '0',
+ 'referee_grade_ids'=>[],
+ 'referee_grade_count'=>0,
],
],
'condition' => [
diff --git a/admin/app/common/model/plus/release/Chat.php b/admin/app/common/model/plus/release/Chat.php
new file mode 100644
index 0000000..bebf8c5
--- /dev/null
+++ b/admin/app/common/model/plus/release/Chat.php
@@ -0,0 +1,68 @@
+<?php
+namespace app\common\model\plus\release;
+
+use app\common\model\BaseModel;
+
+/**
+ * 消息模型
+ */
+class Chat extends BaseModel
+{
+ protected $pk = 'chat_id';
+ protected $name = 'release_chat';
+
+ /**
+ * 关联会员表
+ */
+ public function user()
+ {
+ return $this->belongsTo("app\\common\\model\\user\\User", 'user_id', 'user_id');
+ }
+
+
+
+
+ //添加信息
+ public function add($postdata,$user)
+ {
+ // 开启事务
+ $this->startTrans();
+ try {
+
+ $ChatRelation = new ChatRelation();
+
+ $info = $ChatRelation->where('user_id', '=', $user['user_id'])->where('other_user_id', '=', $postdata['you_user_id'])->find();
+ if(empty($info)){
+ $info = $ChatRelation->where('user_id', '=', $postdata['you_user_id'])->where('other_user_id', '=', $user['user_id'])->find();
+ }
+ if (!$info) {
+ $save_data=[
+ 'user_id'=>$user['user_id'],
+ 'other_user_id'=>$postdata['you_user_id'],
+ 'app_id'=>self::$app_id,
+ ];
+ $ChatRelation->save($save_data);
+ $relation_id = $ChatRelation['relation_id'];
+ } else {
+ $relation_id = $info['relation_id'];
+ $info->save(['update_time' => time()]);
+ }
+
+ $data=[
+ 'user_id'=>$user['user_id'],
+ 'content'=>$postdata['content'],
+ 'relation_id'=>$relation_id,
+ 'app_id'=>self::$app_id,
+ ];
+ $this->save($data);
+
+ $this->commit();
+ return true;
+ } catch (\Exception $e) {
+ log_write($e->getMessage());
+ $this->rollback();
+ return false;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/admin/app/common/model/plus/release/ChatRelation.php b/admin/app/common/model/plus/release/ChatRelation.php
new file mode 100644
index 0000000..bbaa6f8
--- /dev/null
+++ b/admin/app/common/model/plus/release/ChatRelation.php
@@ -0,0 +1,44 @@
+<?php
+
+
+namespace app\common\model\plus\release;
+
+use app\common\model\BaseModel;
+
+/**
+ * 客服消息关系模型
+ */
+class ChatRelation extends BaseModel
+{
+ protected $pk = 'relation_id';
+ protected $name = 'release_chat_relation';
+
+ /**
+ * 关联会员表
+ */
+ public function user()
+ {
+ return $this->belongsTo('app\\common\\model\\user\\User', 'user_id', 'user_id');
+ }
+
+ /**
+ * 关联会员表
+ */
+ public function otherUser()
+ {
+ return $this->belongsTo("app\\common\\model\\user\\User", 'user_id', 'other_user_id');
+ }
+
+ /**
+ * 获取关联id
+ */
+ public static function getRelationId($user_id,$other_user_id)
+ {
+ $model = new static;
+ $data = $model->where("user_id",'=',$user_id)->where("other_user_id",'=',$other_user_id)->find();
+ if(empty($data)){
+ $data = $model->where("other_user_id",'=',$user_id)->where("user_id",'=',$other_user_id)->find();
+ }
+ return empty($data) ? 0 : $data['relation_id'];
+ }
+}
\ No newline at end of file
diff --git a/admin/app/common/model/plus/release/DemandUser.php b/admin/app/common/model/plus/release/DemandUser.php
index 16e5fd0..7a3092c 100644
--- a/admin/app/common/model/plus/release/DemandUser.php
+++ b/admin/app/common/model/plus/release/DemandUser.php
@@ -22,6 +22,15 @@
return $this->belongsTo('app\\common\\model\\user\\User');
}
+ /**
+ * 关联等级
+ * @return \think\model\relation\BelongsTo
+ */
+ public function grade()
+ {
+ return $this->belongsTo('app\\common\\model\\plus\\release\\Grade','grade_id','grade_id');
+ }
+
/**
* 详情
diff --git a/admin/app/common/model/plus/release/Evaluate.php b/admin/app/common/model/plus/release/Evaluate.php
new file mode 100644
index 0000000..24aa786
--- /dev/null
+++ b/admin/app/common/model/plus/release/Evaluate.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace app\common\model\plus\release;
+
+use app\common\model\BaseModel;
+
+/**
+ * 模型
+ */
+class Evaluate extends BaseModel
+{
+ protected $name = 'release_project_evaluate';
+ protected $pk = 'id';
+
+ /**
+ * 关联会员记录表
+ * @return \think\model\relation\BelongsTo
+ */
+ public function user()
+ {
+ return $this->belongsTo('app\\common\\model\\user\\User');
+ }
+
+ /**
+ * 预售结束时间
+ */
+ public function getImageListAttr($value, $data)
+ {
+ return (isset($data['image_list']) && $data['image_list']) ? json_decode($data['image_list'],true) : '';
+ }
+
+ /**
+ * 获取详情
+ */
+ public static function detail($id)
+ {
+ return (new static())->find($id);
+ }
+
+ /**
+ * 获取列表记录
+ */
+ public static function getAll($prject_id)
+ {
+ return (new static())->with('user')->where('project_id', '=', $prject_id)
+ ->order(['create_time' => 'asc'])
+ ->select();
+ }
+
+ /**
+ * 获取好评条数
+ */
+ public static function getGoodsEvaluateNum($project_user_id)
+ {
+ return (new static())->where('project_user_id', '=', $project_user_id)
+ ->where('score', '=', 10)
+ ->count();
+ }
+}
\ No newline at end of file
diff --git a/admin/app/common/model/plus/release/Grade.php b/admin/app/common/model/plus/release/Grade.php
new file mode 100644
index 0000000..41bb032
--- /dev/null
+++ b/admin/app/common/model/plus/release/Grade.php
@@ -0,0 +1,112 @@
+<?php
+
+namespace app\common\model\plus\release;
+
+use app\common\model\BaseModel;
+use app\common\model\plus\release\DemandUser as DemandUserModel;
+use app\common\model\plus\release\SupplyUser as SupplyUserModel;
+use app\common\model\plus\release\Evaluate as EvaluateModel;
+
+/**
+ * 等级模型
+ */
+class Grade extends BaseModel
+{
+ protected $pk = 'grade_id';
+ protected $name = 'release_grade';
+
+ /**
+ * 用户等级模型初始化
+ */
+ public static function init()
+ {
+ parent::init();
+ }
+
+ /**
+ * 获取详情
+ */
+ public static function detail($grade_id)
+ {
+ return (new static())->find($grade_id);
+ }
+
+ /**
+ * 获取列表记录
+ */
+ public function getLists()
+ {
+ return $this->where('is_delete', '=', 0)
+ ->field('grade_id,name')
+ ->order(['weight' => 'asc', 'create_time' => 'asc'])
+ ->select();
+ }
+
+ /**
+ * 获取可用的等级列表
+ */
+ public static function getUsableList($appId = null)
+ {
+ $model = new static;
+ $appId = $appId ? $appId : $model::$app_id;
+ return $model->where('is_delete', '=', '0')
+ ->where('app_id', '=', $appId)
+ ->order(['weight' => 'asc', 'create_time' => 'asc'])
+ ->select();
+ }
+
+ /**
+ * 获取默认等级id
+ */
+ public static function getDefaultGradeId(){
+ $grade = (new static())->where('is_default', '=', 1)->find();
+ return $grade['grade_id'];
+ }
+
+ /**
+ * 设置用户的评论等级
+ */
+ public function setUserGrade($userId,$prodect_type=0)
+ {
+ // 用户模型
+ if($prodect_type == 0){
+ $user = DemandUserModel::detail($userId);
+ }else{
+ $user = SupplyUserModel::detail($userId);
+ }
+ if(empty($user)){
+ return true;
+ }
+ // 获取所有等级
+ $list = self::getUsableList($user['app_id']);
+ if ($list->isEmpty()) {
+ return false;
+ }
+ //获取用户的好评条数
+ $num = EvaluateModel::getGoodsEvaluateNum($userId);
+
+ // 遍历等级
+ $upgradeGrade = null;
+ foreach ($list as $grade) {
+ if($grade['upgrade_num'] > 0 && $num >=$grade['upgrade_num']){
+ $upgradeGrade = $grade;
+ //满足条件,继续判断更高等级是否满足
+ continue;
+ }else{
+ //第一个等级不满足,则更高的等级不需要再看了
+ break;
+ }
+ }
+ //获取当前的等级权重
+ $cur_grade = self::detail($user['grade_id']);
+ //两个等级权重对比
+ if(!empty($upgradeGrade) && $upgradeGrade['weight'] > $cur_grade['weight']){
+ // 修改等级
+ if($prodect_type == 0){
+ $user = (new DemandUserModel())->where('user_id','=',$user['user_id'])->update(['grade_id'=>$upgradeGrade['grade_id']]);
+ }else{
+ $user = (new SupplyUserModel())->where('user_id','=',$user['user_id'])->update(['grade_id'=>$upgradeGrade['grade_id']]);;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/admin/app/common/model/plus/release/Project.php b/admin/app/common/model/plus/release/Project.php
index 7581ba8..516f3db 100644
--- a/admin/app/common/model/plus/release/Project.php
+++ b/admin/app/common/model/plus/release/Project.php
@@ -48,13 +48,21 @@
{
return $this->hasMany('app\\common\\model\\plus\\release\\Tag', 'tag_id', 'tag_id');
}
+ /**
+ * 关联评论表
+ */
+ public function evaluate()
+ {
+ return $this->hasMany('app\\common\\model\\plus\\release\\Evaluate', 'project_id', 'project_id')->order(['id' => 'desc']);
+ }
+
/**
* 获取详情
*/
public static function detail($project_id)
{
- return (new static())->with(['image'])->find($project_id);
+ return (new static())->with(['image','evaluate','evaluate.user','category'])->find($project_id);
}
/**
diff --git a/admin/app/common/model/plus/release/SupplyUser.php b/admin/app/common/model/plus/release/SupplyUser.php
index 2c408ab..3ee0e2e 100644
--- a/admin/app/common/model/plus/release/SupplyUser.php
+++ b/admin/app/common/model/plus/release/SupplyUser.php
@@ -22,6 +22,15 @@
return $this->belongsTo('app\\common\\model\\user\\User');
}
+ /**
+ * 关联等级
+ * @return \think\model\relation\BelongsTo
+ */
+ public function grade()
+ {
+ return $this->belongsTo('app\\common\\model\\plus\\release\\Grade','grade_id','grade_id');
+ }
+
/**
* 详情
diff --git a/admin/app/common/model/plus/vip/Order.php b/admin/app/common/model/plus/vip/Order.php
index e380504..7b68882 100644
--- a/admin/app/common/model/plus/vip/Order.php
+++ b/admin/app/common/model/plus/vip/Order.php
@@ -149,16 +149,22 @@
// 获取下级用户的推荐人(即上级用户)
$superiorUser = UserModel::detail($model['vip_area_user_id']);
if ($superiorUser && $superiorUser['referee_id']) {
- $vipUser = VipUserModel::detail($superiorUser['vip_area_user_id']);
- if ($vipUser['grade']['operating_subsidy'] > 0) {
- // 获取补贴比例设置
- $subsidyRate = $vipUser['grade']['operating_subsidy'];
- // 计算下级收益补贴
- $subsidyAmount = bcmul($model['vip_area_money'], bcdiv((string)$subsidyRate, '100', 4), 2);
- User::grantMoney($superiorUser['referee_id'], $subsidyAmount, '下级收益补贴');
- // 记录分销订单
- self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy', $model['vip_area_money']);
+ if (UserModel::getOperatingSubsidy($superiorUser['referee_id'],Setting::getItem('basic', $order['app_id']))){
+ $vipUser = VipUserModel::detail($superiorUser['referee_id']);
+ if (!empty($vipUser)){
+ if ($vipUser['grade']['operating_subsidy'] > 0) {
+ // 获取补贴比例设置
+ $subsidyRate = $vipUser['grade']['operating_subsidy'];
+ // 计算下级收益补贴
+ $subsidyAmount = bcmul($model['vip_area_money'], bcdiv((string)$subsidyRate, '100', 4), 2);
+ User::grantMoney($superiorUser['referee_id'], $subsidyAmount, '下级收益补贴');
+ // 记录分销订单
+ self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy', $model['vip_area_money']);
+ }
+ }
+
}
+
}
}
@@ -302,7 +308,7 @@
$viewpoint_money = bcadd($viewpoint_money, ($product['is_viewpoint_money'] ? $product['viewpoint_money'] : $vipGrade['viewpoint_money']), 2);
}*/
if (in_array($product['product_id'], $config['become__buy_product_ids']) || $product['is_vip']) {
- // 获取商品数量
+ // 获取VIP专区商品数量
$vip_quantity = bcadd($vip_quantity, $product['total_num'], 2);
// 为每个商品生成分红订单
/*for ($i = 0; $i < $quantity; $i++) {
@@ -337,14 +343,19 @@
if ($setting['jcaward']){
$refereeJc=User::getAllJcUser($userModel['user_id']);
foreach ($refereeJc as $v){
- $list[] = array_merge($data, ['vip_area_type' => 70, 'vip_area_money' =>bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2),'vip_area_user_id'=>$v['user_id']]);
+ if ( (new User())->getViewpointMoneyQualification($v['user_id'], $setting)){
+ $list[] = array_merge($data, ['vip_area_type' => 70, 'vip_area_money' =>bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2),'vip_area_user_id'=>$v['user_id']]);
+ }
+
}
}
//复购专区平级奖
if ($setting['pjaward']){
$refereeJc=User::getAllPjUser($userModel['user_id'],$setting['pjaward_level']);
foreach ($refereeJc as $v){
- $list[] = array_merge($data, ['vip_area_type' => 80, 'vip_area_money' => bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2),'vip_area_user_id'=>$v['user_id']]);
+ if ((new User())->getViewpointMoneyQualification($v['user_id'], $setting)) {
+ $list[] = array_merge($data, ['vip_area_type' => 80, 'vip_area_money' => bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2), 'vip_area_user_id' => $v['user_id']]);
+ }
}
}
}
diff --git a/admin/app/common/model/plus/vip/Setting.php b/admin/app/common/model/plus/vip/Setting.php
index ea012ed..4dae674 100644
--- a/admin/app/common/model/plus/vip/Setting.php
+++ b/admin/app/common/model/plus/vip/Setting.php
@@ -150,7 +150,9 @@
'platform_commission_rate' => '5',
'jcaward'=>'0',
'pjaward'=>'0',
- 'pjaward_level'=>1
+ 'pjaward_level'=>1,
+ 'referee_grade_ids'=>[],
+ 'referee_grade_count'=>0
],
],
'settlement' => [
diff --git a/admin/app/common/model/plus/vip/User.php b/admin/app/common/model/plus/vip/User.php
index 6167cda..84abd66 100644
--- a/admin/app/common/model/plus/vip/User.php
+++ b/admin/app/common/model/plus/vip/User.php
@@ -166,7 +166,9 @@
]);
}
-
+ /**
+ * 获取用户是否符合复购专区佣金条件
+ */
public function getViewpointMoneyQualification($user_id,$setting)
{
$userNum=$this->where('referee_id','=',$user_id)->count();
diff --git a/admin/app/common/model/release/Capital.php b/admin/app/common/model/release/Capital.php
deleted file mode 100644
index 04c40dd..0000000
--- a/admin/app/common/model/release/Capital.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-/**
- * 资金明细模型
- */
-class Capital extends BaseModel
-{
- protected $name = 'release_capital';
- protected $pk = 'id';
-
- /**
- * 分销商资金明细
- * @param $data
- */
- public static function add($data)
- {
- $model = new static;
- $model->save(array_merge([
- 'app_id' => $model::$app_id
- ], $data));
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/Cart.php b/admin/app/common/model/release/Cart.php
deleted file mode 100644
index 807c36d..0000000
--- a/admin/app/common/model/release/Cart.php
+++ /dev/null
@@ -1,231 +0,0 @@
-<?php
-
-namespace app\api\model\plus\repair;
-
-use app\api\model\order\Order as OrderModel;
-use think\facade\Cache;
-use app\api\model\plus\repair\Project as ProjectModel;
-use app\common\model\supplier\Supplier as SupplierModel;
-use app\common\library\helper;
-use app\common\model\plus\repair\Cart as CartModel;
-
-/**
- * 购物车管理
- */
-class Cart extends CartModel
-{
- // 错误信息
- public $error = '';
-
- /**
- * 购物车列表 (含商品信息)
- */
- public function getList($user, $cart_ids = [])
- {
- // 获取购物车商品列表
- return $this->getOrderProjectList($user, $cart_ids);
- }
-
- /**
- * 获取购物车列表
- */
- public function getCartList($cartIds = null)
- {
- if (empty($cartIds)) return static::$cart;
- $cartList = [];
- $indexArr = (strpos($cartIds, ',') !== false) ? explode(',', $cartIds) : [$cartIds];
- foreach ($indexArr as $index) {
- isset(static::$cart[$index]) && $cartList[$index] = static::$cart[$index];
- }
- return $cartList;
- }
-
- /**
- * 获取购物车中的商品列表
- */
- public function getOrderProjectList($user, $cart_ids = [])
- {
- // 购物车列表
- $projectList = [];
- // 获取购物车列表
- $model = $this;
- if ($cart_ids) {
- $model = $model->where('cart_id', 'in', explode(',', $cart_ids));
- }
- $cartList = $model->where('user_id', '=', $user['user_id'])->select();
- if (empty($cartList)) {
- $this->setError('当前购物车没有项目');
- return $projectList;
- }
- // 购物车中所有商品id集
- $projectIds = array_unique(helper::getArrayColumn($cartList, 'project_id'));
- // 获取并格式化商品数据
- $sourceData = (new ProjectModel)->getListByIds($projectIds);
- $sourceData = helper::arrayColumn2Key($sourceData, 'project_id');
- // 供应商信息
- $supplierData = [];
- // 格式化购物车数据列表
- foreach ($cartList as $key => $item) {
- // 判断商品不存在则自动删除
- if (!isset($sourceData[$item['project_id']])) {
- $this->delete($key);
- continue;
- }
- // 项目信息
- $project = clone $sourceData[$item['project_id']];
- // 判断商品是否已删除
- if (empty($project)) {
- $this->delete($key);
- continue;
- }
-
- // 购买数量
- $project['total_num'] = $item['total_num'];
- // 总价
- $project['total_price'] = bcmul($project['price'], $item['total_num'], 2);
- // 总佣金
- $project['total_money'] = bcmul($project['money'], $item['total_num'], 2);
- // 供应商
- $project['shop_supplier_id'] = $item['shop_supplier_id'];
- //购物车id
- $project['cart_id'] = $item['cart_id'];
- $projectList[] = $project;
- }
-
- $supplierIds = array_unique(helper::getArrayColumn($projectList, 'shop_supplier_id'));
- foreach($supplierIds as $supplierId){
- $supplierData[] = [
- 'shop_supplier_id' => $supplierId,
- 'supplier' => SupplierModel::detail($supplierId),
- 'projectList' => $this->getProjectBySupplier($supplierId, $projectList)
- ];
- }
- return $supplierData;
- }
-
- private function getProjectBySupplier($supplierId, $projectList)
- {
- $result = [];
- foreach ($projectList as $project){
- if($project['shop_supplier_id'] == $supplierId){
- array_push($result, $project);
- }
- }
- return $result;
- }
-
- /**
- * 加入购物车
- */
- public function add($user, $projectId, $projectNum)
- {
- $model = $this;
- // 获取信息
- $project = ProjectModel::detail($projectId);
-
- // 获取商品购物车信息
- $cartDetail = $model->where('user_id', '=', $user['user_id'])
- ->where('project_id', '=', $projectId)
- ->find();
- // 验证能否加入
- if (!$project_price = $this->checkProject($project)) {
- return false;
- }
-
- // 记录到购物车列表
- if ($cartDetail) {
- return $cartDetail->save(['total_num' => $cartDetail['total_num'] + $projectNum]);
- } else {
- return $this->save([
- 'user_id' => $user['user_id'],
- 'project_id' => $projectId,
- 'total_num' => $projectNum,
- 'join_price' => $project_price,
- 'shop_supplier_id' => $project['shop_supplier_id'],
- 'app_id' => self::$app_id,
- ]);
- }
- }
-
- /**
- * 验证是否可以下单
- */
- private function checkProject($project)
- {
- // 判断项目
- if (!$project) {
- $this->setError('很抱歉,信息不存在');
- return false;
- }
-
- return $project['price'];
- }
-
- /**
- * 减少购物车中某商品数量
- */
- public function sub($user, $projectId)
- {
- $cartDetail = $this->where('user_id', '=', $user['user_id'])
- ->where('project_id', '=', $projectId)
- ->find();
- if ($cartDetail['total_num'] <= 1) {
- return $cartDetail->delete();
- } else {
- $cartDetail->save(['total_num' => $cartDetail['total_num'] - 1]);
- }
- }
-
- /**
- * 删除购物车中指定商品
- * @param string $cartIds (支持字符串ID集)
- */
- public function setDelete($user, $cart_id)
- {
- return $this->where('user_id', '=', $user['user_id'])->where('cart_id', 'in', explode(',', $cart_id))->delete();
- }
-
- /**
- * 获取当前用户购物车商品总数量(含件数)
- */
- public function getTotalNum($user)
- {
- $num = $this->where('user_id', '=', $user['user_id'])->sum('total_num');
- return $num ? $num : 0;
- }
-
- /**
- * 获取当前用户购物车商品总数量(不含件数)
- */
- public function getProductNum($user)
- {
- return $this->where('user_id', '=', $user['user_id'])->count();
- }
-
- /**
- * 清空当前用户购物车
- */
- public function clearAll($user, $cartIds)
- {
- return $this->where('user_id', '=', $user['user_id'])
- ->where('cart_id', 'in', explode(',', $cartIds))
- ->delete();
- }
-
- /**
- * 设置错误信息
- */
- private function setError($error)
- {
- empty($this->error) && $this->error = $error;
- }
-
- /**
- * 获取错误信息
- */
- public function getError()
- {
- return $this->error;
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/Cash.php b/admin/app/common/model/release/Cash.php
deleted file mode 100644
index 0e9133e..0000000
--- a/admin/app/common/model/release/Cash.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-/**
- * 分销商提现明细模型
- */
-class Cash extends BaseModel
-{
- protected $name = 'release_cash';
- protected $pk = 'id';
-
- /**
- * 打款方式
- * @var array
- */
- public $payType = [
- 10 => '微信',
- 20 => '支付宝',
- 30 => '银行卡',
- ];
-
- /**
- * 申请状态
- * @var array
- */
- public $applyStatus = [
- 10 => '待审核',
- 20 => '审核通过',
- 30 => '驳回',
- 40 => '已打款',
- ];
-
- /**
- * 关联用户表
- * @return \think\model\relation\BelongsTo
- */
- public function user()
- {
- return $this->belongsTo('SupplyUser');
- }
-
- /**
- * 提现详情
- */
- public static function detail($id)
- {
- return (new static())->find($id);
- }
-
- /**
- * 审核状态
- * @param $value
- * @return array
- */
- public function getApplyStatusAttr($value)
- {
- $method = [10 => '待审核', 20 => '审核通过', 30 => '驳回', 40 => '已打款'];
- return ['text' => $method[$value], 'value' => $value];
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/DemandApply.php b/admin/app/common/model/release/DemandApply.php
deleted file mode 100644
index d9bb4a4..0000000
--- a/admin/app/common/model/release/DemandApply.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-use app\common\model\user\User as UserModel;
-
-/**
- * 分销商申请模型
- */
-class DemandApply extends BaseModel
-{
- protected $name = 'release_demand_apply';
- protected $pk = 'apply_id';
-
- /**
- * 申请状态
- * @var array
- */
- public $applyStatus = [
- 10 => '待审核',
- 20 => '审核通过',
- 30 => '驳回',
- ];
-
- /**
- * 申请时间
- * @param $value
- * @return false|string
- */
- public function getApplyTimeAttr($value)
- {
- return date('Y-m-d H:i:s', $value);
- }
-
- /**
- * 审核时间
- * @param $value
- * @return false|int|string
- */
- public function getAuditTimeAttr($value)
- {
- return $value > 0 ? date('Y-m-d H:i:s', $value) : 0;
- }
-
- /**
- * 销商申请记录详情
- * @param $where
- * @return array|\think\Model|null
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function detail($where)
- {
- $filter = is_array($where) ? $where : ['apply_id' => $where];
- return (new static())->where($filter)->find();
- }
-
- /**
- * 审核状态
- * @param $value
- * @return array
- */
- public function getApplyStatusAttr($value)
- {
- $method = [10 => '待审核', 20 => '审核通过', '30' => '驳回'];
- return ['text' => $method[$value], 'value' => $value];
- }
-
- /**
- * 审核方式
- * @param $value
- * @return array
- */
- public function getApplyTypeAttr($value)
- {
- $method = [10 => '后台审核', 20 => '无需审核'];
- return ['text' => $method[$value], 'value' => $value];
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/DemandProject.php b/admin/app/common/model/release/DemandProject.php
deleted file mode 100644
index 8cbc59f..0000000
--- a/admin/app/common/model/release/DemandProject.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-namespace app\api\model\plus\release;
-
-use app\common\model\plus\release\Project as ProjectModel;
-use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
-
-
-/**
- * 模型
- */
-class DemandProject extends ProjectModel
-{
- /**
- * 获取提现明细
- */
- public function getList($user_id, $postdata)
- {
- $model = $this;
- if(!empty($postdata["keyword"])){
- $model = $model->where('name', 'like', '%'.$postdata["keyword"].'%');
- }
- return $model->where('is_delete', '=', 0)
- ->where('project_type', '=', 0)
- ->where('user_id', '=', $user_id)
- ->order(['create_time' => 'desc'])
- ->paginate($postdata);
- }
- /**
- * 新增记录
- */
- public function add($postdata,$demand)
- {
- $data = json_decode($postdata["formData"],true);
- if (empty($data['name'])) {
- $this->error = '请输入标题';
- return false;
- }
- if (empty($data['category_id'])) {
- $this->error = '请选择分类';
- return false;
- }
- if (empty($data['price'])) {
- $this->error = '请输入您的预算';
- return false;
- }
- if (empty($data['content'])) {
- $this->error = '请输入您的详细需求';
- return false;
- }
-
- $save_data =[
- 'user_id'=>$demand["user_id"],
- 'name'=>$data["name"],
- 'category_id'=>$data["category_id"],
- 'price'=>$data["price"],
- 'content'=>$data["content"],
- 'detail'=>$data["detail"],
- 'show_phone'=>$data["show_phone"],
- 'is_show'=>$data["is_show"],
- 'app_id'=>self::$app_id,
- ];
- if(!empty($data["finish_time"]) && $data["finish_time"] != '请选择日期'){
- $save_data["finish_time"] = strtotime($data["finish_time"]);
- }else{
- $save_data["finish_time"] = '';
- }
-
- return $this->transaction(function () use ($data, $save_data) {
- // 记录内容
- $this->save($save_data);
- // 记录图片
- $this->saveAllImages($this['project_id'],$data);
-
- return $this['project_id'];
- });
- }
-
- /**
- * 更新记录
- */
- public function edit($postdata)
- {
- $data = json_decode($postdata["formData"],true);
- if (empty($data['name'])) {
- $this->error = '请输入标题';
- return false;
- }
- if (empty($data['category_id'])) {
- $this->error = '请选择分类';
- return false;
- }
- if (empty($data['price'])) {
- $this->error = '请输入您的预算';
- return false;
- }
- if (empty($data['content'])) {
- $this->error = '请输入您的详细需求';
- return false;
- }
- $save_data =[
- 'name'=>$data["name"],
- 'category_id'=>$data["category_id"],
- 'price'=>$data["price"],
- 'content'=>$data["content"],
- 'detail'=>$data["detail"],
- 'show_phone'=>$data["show_phone"],
- 'is_show'=>$data["is_show"],
- 'status'=>0,
- ];
- if(!empty($data["finish_time"]) && $data["finish_time"] != '请选择日期'){
- $save_data["finish_time"] = strtotime($data["finish_time"]);
- }else{
- $save_data["finish_time"] = '';
- }
-
- return $this->transaction(function () use ($data, $save_data) {
- // 记录内容
- $this->where("project_id","=",$data["project_id"])->save($save_data);
- // 记录图片
- $this->saveAllImages($data["project_id"],$data);
-
- return true;
- });
- }
- /**
- * 记录图片
- */
- private function saveAllImages($id,$formData)
- {
- (new ReleaseProjectImageModel())->where("project_id","=",$id)->delete();
- // 生成图片数据
- if(!empty($formData['image_list'])){
- $imageData = [];
- foreach ($formData['image_list'] as $imageId) {
- $imageData[] = [
- 'project_id' => $id,
- 'image_id' => !empty($imageId['image_id']) ? $imageId['image_id'] : $imageId['file_id'],
- 'app_id' => self::$app_id
- ];
- }
- $model = new ReleaseProjectImageModel;
- return !empty($imageData) && $model->saveAll($imageData);
- }
- return true;
-
- }
-
- /**
- * 软删除
- */
- public function setDelete($id)
- {
- return $this->where("project_id","=",$id)->save(['is_delete' => 1]);
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/DemandUser.php b/admin/app/common/model/release/DemandUser.php
deleted file mode 100644
index 16e5fd0..0000000
--- a/admin/app/common/model/release/DemandUser.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-
-/**
- * 用户模型
- */
-class DemandUser extends BaseModel
-{
- protected $name = 'release_demand_user';
- protected $pk = 'user_id';
-
- /**
- * 关联会员记录表
- * @return \think\model\relation\BelongsTo
- */
- public function user()
- {
- return $this->belongsTo('app\\common\\model\\user\\User');
- }
-
-
- /**
- * 详情
- */
- public static function detail($user_id, $with = ['user'])
- {
- return (new static())->with($with)->find($user_id);
- }
-
- /**
- * 详情
- */
- public static function getAll()
- {
- return (new static())->where("is_delete","=",0)->select();
- }
-
- /**
- * 是否为需求方
- */
- public static function isDemandUser($user_id)
- {
- $demand = self::detail($user_id);
- return !!$demand && !$demand['is_delete'];
- }
-
- /**
- * 新增记录
- * @param $user_id
- * @param $data
- * @return bool
- */
- public static function add($user_id, $data)
- {
- $model = static::detail($user_id) ?: new static;
- $model->save(array_merge([
- 'user_id' => $user_id,
- 'is_delete' => 0,
- 'app_id' => $model::$app_id,
- ], $data));
- return true;
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/Order.php b/admin/app/common/model/release/Order.php
deleted file mode 100644
index 72a5817..0000000
--- a/admin/app/common/model/release/Order.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\enum\order\OrderPayTypeEnum;
-use app\common\model\BaseModel;
-
-
-/**
- * 订单模型
- */
-class Order extends BaseModel
-{
- protected $name = 'release_order';
- protected $pk = 'id';
-
- /**
- * 追加字段
- * @var string[]
- */
- protected $append = [
- 'state_text',
- ];
-
- /**
- * 需求用户
- * @return \think\model\relation\BelongsTo
- */
- public function demanduser()
- {
- return $this->belongsTo('app\common\model\user\User','demand_user_id','user_id');
- }
-
- /**
- * 供应用户
- * @return \think\model\relation\BelongsTo
- */
- public function supplyuser()
- {
- return $this->belongsTo('app\common\model\user\User','supply_user_id','user_id');
- }
-
- /**
- * 关联项目
- * @return \think\model\relation\hasMany
- */
- public function project()
- {
- return $this->belongsTo('app\common\model\plus\release\Project','project_id','project_id');
- }
-
-
-
- /**
- * 订单状态文字描述
- * @param $value
- * @param $data
- * @return string
- */
- public function getStateTextAttr($value, $data)
- {
- if($data['order_status'] == 20){
- return '已取消';
- }
- // 订单状态
- if ($data['pay_status'] == 10 && $data['pay_type'] == 40) {
- return '待确认支付';
- }else if ($data['pay_status'] == 10 && $data['pay_type'] != 40) {
- return '未付款';
- }else if($data['pay_status'] == 20 && $data['order_status'] == 10){
- return '进行中';
- }else if($data['pay_status'] == 20 && $data['order_status'] == 30){
- return '已完成';
- }
- return "";
- }
-
- /**
- * 付款状态
- * @param $value
- * @return array
- */
- public function getPayTypeAttr($value)
- {
- if(empty($value)){
- return ['text' => '', 'value' => 0];
- }
- return ['text' => OrderPayTypeEnum::data()[$value]['name'], 'value' => $value];
- }
-
- /**
- * 详情
- */
- public static function detail($id)
- {
- $model = new static();
- return $model->with(['demanduser','supplyuser',"project"])->find($id);
- }
-
- /**
- * 详情
- */
- public static function getDetail($order_no)
- {
- $model = new static();
- return $model->with(["project"])->where("order_no",'=',$order_no)->find();
- }
-
-}
diff --git a/admin/app/common/model/release/Project.php b/admin/app/common/model/release/Project.php
deleted file mode 100644
index 7581ba8..0000000
--- a/admin/app/common/model/release/Project.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-/**
- * 项目模型
- */
-class Project extends BaseModel
-{
- protected $name = 'release_project';
- protected $pk = 'project_id';
-
-
- /**
- * 关联上传图片表
- */
- public function image()
- {
- return $this->hasMany('app\\common\\model\\plus\\release\\ReleaseProjectImage', 'project_id', 'id')->order(['id' => 'asc']);
- }
-
- /**
- * 关联分类
- * @return \think\model\relation\BelongsTo
- */
- public function category()
- {
- return $this->belongsTo('app\\common\\model\\plus\\release\\ReleaseCategory','category_id','category_id');
- }
-
- /**
- * 关联
- * @return \think\model\relation\BelongsTo
- */
- public function user()
- {
- return $this->belongsTo('app\\common\\model\\user\\User','user_id','user_id');
- }
-
-
-
- /**
- * 关联多标签表
- */
- public function tag()
- {
- return $this->hasMany('app\\common\\model\\plus\\release\\Tag', 'tag_id', 'tag_id');
- }
-
- /**
- * 获取详情
- */
- public static function detail($project_id)
- {
- return (new static())->with(['image'])->find($project_id);
- }
-
- /**
- * 获取列表记录
- */
- public function getAll()
- {
- return $this->where('is_delete', '=', 0)
- ->field('project_id,name')
- ->order(['sort' => 'asc', 'create_time' => 'asc'])
- ->select();
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/ReleaseCategory.php b/admin/app/common/model/release/ReleaseCategory.php
deleted file mode 100644
index bce57e6..0000000
--- a/admin/app/common/model/release/ReleaseCategory.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use think\facade\Cache;
-use app\common\model\BaseModel;
-
-/**
- * 分类模型
- */
-class ReleaseCategory extends BaseModel
-{
- protected $pk = 'category_id';
- protected $name = 'release_category';
-
-
- /**
- * 详情
- */
- public static function detail($category_id)
- {
- return (new static())->find($category_id);
- }
-
- /**
- * 所有分类
- */
- public static function getALL()
- {
- $model = new static;
- $data = $model->order(['sort' => 'asc', 'create_time' => 'asc'])->select();
- return $data;
- }
-
-
- public function getListByIds($ids)
- {
- return $this->field(['category_id', 'name'])->where('category_id', 'in', $ids)->select();
- }
-
-}
diff --git a/admin/app/common/model/release/ReleaseProjectImage.php b/admin/app/common/model/release/ReleaseProjectImage.php
deleted file mode 100644
index 5c42481..0000000
--- a/admin/app/common/model/release/ReleaseProjectImage.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-use app\common\model\BaseModel;
-
-/**
- * 图片模型
- */
-class ReleaseProjectImage extends BaseModel
-{
- protected $name = 'release_project_image';
- protected $pk = 'id';
- protected $updateTime = false;
-
- /**
- * 关联文件库
- */
- public function file()
- {
- return $this->belongsTo('app\\common\\model\\file\\UploadFile', 'image_id', 'file_id')
- ->bind(['file_path', 'file_name', 'file_url']);
- }
-
-
- public static function getImage($project_id)
- {
- $model = new static;
- return $model->with(['file'])
- ->where('project_id', '=', $project_id)
- ->select();
- }
-
-}
diff --git a/admin/app/common/model/release/ReleaseProjectTag.php b/admin/app/common/model/release/ReleaseProjectTag.php
deleted file mode 100644
index 8729225..0000000
--- a/admin/app/common/model/release/ReleaseProjectTag.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-use app\common\model\BaseModel;
-
-/**
- * 图片模型
- */
-class ReleaseProjectTag extends BaseModel
-{
- protected $name = 'release_project_tag';
- protected $pk = 'id';
- protected $updateTime = false;
-
- /**
- * 关联
- */
- public function tag()
- {
- return $this->belongsTo('app\\common\\model\\plus\\release\\Tag', 'tag_id', 'tag_id')
- ->bind(['name']);
- }
-
- public static function getTagId($project_id)
- {
- $model = new static;
- return $model
- ->where('project_id', '=', $project_id)
- ->column("tag_id");
- }
- public static function getTagName($project_id)
- {
- $model = new static;
- return $model->with('tag')
- ->where('project_id', '=', $project_id)
- ->select();
- }
-
- public static function getTagList($project_id)
- {
- $model = new static;
- return $model->with(['tag'])
- ->where('project_id', '=', $project_id)
- ->select();
- }
-
-}
diff --git a/admin/app/common/model/release/Setting.php b/admin/app/common/model/release/Setting.php
deleted file mode 100644
index 7713490..0000000
--- a/admin/app/common/model/release/Setting.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-use think\facade\Cache;
-
-/**
- * 设置模型
- */
-class Setting extends BaseModel
-{
- protected $name = 'release_setting';
- protected $createTime = false;
-
- /**
- * 转义数组格式
- * @param $value
- * @return mixed
- */
- public function getValuesAttr($value)
- {
- return json_decode($value, true);
- }
-
- /**
- * 转义成json格式
- * @param $value
- * @return false|string
- */
- public function setValuesAttr($value)
- {
- return json_encode($value);
- }
-
- /**
- * 获取指定项设置
- * @param $key
- * @param null $app_id
- * @return array|mixed
- */
- public static function getItem($key, $app_id = null)
- {
- $data = static::getAll($app_id);
- return isset($data[$key]) ? $data[$key]['values'] : [];
- }
-
- /**
- * 获取分销商设置
- */
- public static function getAll($app_id = null)
- {
- $self = new static;
- is_null($app_id) && $app_id = $self::$app_id;
- if (!$data = Cache::get('release_setting_' . $app_id)) {
- $data = array_column($self->select()->toArray(), null, 'key');
- Cache::tag('cache')->set('release_setting_' . $app_id, $data);
- }
- return array_merge_multiple($self->defaultData(), $data);
- }
-
- /**
- * 获取设置项信息
- */
- public static function detail($key)
- {
- return (new static())->find(compact('key'));
- }
-
- /**
- * 是否开启功能
- */
- public static function isOpen($app_id = null)
- {
- return static::getItem('basic', $app_id)['is_open'];
- }
-
- /**
- * 页面名称
- */
- public static function getAgentTitle($app_id = null)
- {
- return static::getItem('words', $app_id)['index']['title']['value'];
- }
-
- /**
- * 默认配置
- * @return array[]
- */
- public function defaultData()
- {
- return [
- 'basic' => [
- 'key' => 'basic',
- 'describe' => '基础设置',
- 'values' => [
- // 是否开启分销功能
- 'is_open' => '0', // 参数值:1开启 0关闭
- // 分销层级
- 'level' => '3', // 参数值:1一级 2二级 3三级
- // 分销商内购
- 'self_buy' => '0', // 参数值:1开启 0关闭
- 'commission_type' => '0', // 佣金计算方式 0固定 1循环
- 'loop_num' => 3, // 循环长度
- 'buy_again' => '1' // 重复购买是否参与分销
- ],
- ],
- 'condition' => [
- 'key' => 'condition',
- 'describe' => '分销商条件',
- 'values' => [
- // 成为分销商条件
- 'become' => '10', // 参数值:10填写申请信息(需后台审核) 20填写申请信息(无需审核) 30单次消费 40累计消费 50购买指定商品
- // 购买指定商品成为分销商 0关闭 1开启
- 'become__buy_product' => '0',
- // 购买指定商品的id集
- 'become__buy_product_ids' => [],
- // 成为下线条件
- 'downline' => '10', // 参数值:10首次点击分享链接 20首次下单 30首次付款
- //单次消费金额
- 'one_money' => '0',
- //累计消费金额
- 'total_money' => '0',
- ]
- ],
- 'commission' => [
- 'key' => 'commission',
- 'describe' => '佣金设置',
- 'values' => [
- // 一级佣金
- 'first_money' => '0',
- // 一级佣金
- 'second_money' => '0',
- // 一级佣金
- 'third_money' => '0',
- 'first_loop_money' => [] //循环比例
- ]
- ],
- 'settlement' => [
- 'key' => 'settlement',
- 'describe' => '结算',
- 'values' => [
- // 提现方式
- 'pay_type' => [], // 参数值:10微信支付 20支付宝支付 30银行卡支付
- // 微信支付自动打款
- 'wechat_pay_auto' => '0', // 微信支付自动打款:1开启 0关闭
- // 最低提现额度
- 'min_money' => '10.00',
- // 佣金结算天数
- 'settle_days' => '10',
- // 微信打款方式
- 'wechat_type' => '0',
- 'fee_rate' => '0',
- 'order_rate' => '0',
- 'explain' => ''
- ]
- ],
- 'words' => [
- 'key' => 'words',
- 'describe' => '自定义文字',
- 'values' => [
- 'index' => [
- 'title' => [
- 'default' => '分销中心',
- 'value' => '分销中心'
- ],
- 'words' => [
- 'agent' => [
- 'default' => '分销商',
- 'value' => '分销商'
- ],
- 'not_agent' => [
- 'default' => '您还不是分销商',
- 'value' => '您还不是分销商'
- ],
- 'apply_now' => [
- 'default' => '立即加入',
- 'value' => '立即加入'
- ],
- 'referee' => [
- 'default' => '推荐人',
- 'value' => '推荐人'
- ],
- 'money' => [
- 'default' => '可提现佣金',
- 'value' => '可提现'
- ],
- 'freeze_money' => [
- 'default' => '待提现佣金',
- 'value' => '待提现'
- ],
- 'total_money' => [
- 'default' => '已提现金额',
- 'value' => '已提现金额'
- ],
- 'cash' => [
- 'default' => '去提现',
- 'value' => '去提现'
- ],
- 'referee_code' => [
- 'default' => '邀请码',
- 'value' => '邀请码'
- ],
- ]
- ],
- 'apply' => [
- 'title' => [
- 'default' => '申请成为分销商',
- 'value' => '申请成为分销商'
- ],
- 'words' => [
- 'title' => [
- 'default' => '请填写申请信息',
- 'value' => '请填写申请信息'
- ],
- 'license' => [
- 'default' => '分销商申请协议',
- 'value' => '分销商申请协议'
- ],
- 'submit' => [
- 'default' => '申请成为经销商',
- 'value' => '申请成为经销商'
- ],
- 'wait_audit' => [
- 'default' => '您的申请已受理,正在进行信息核验,请耐心等待。',
- 'value' => '您的申请已受理,正在进行信息核验,请耐心等待。'
- ],
- 'goto_mall' => [
- 'default' => '去商城逛逛',
- 'value' => '去商城逛逛'
- ],
- ]
- ],
- 'order' => [
- 'title' => [
- 'default' => '分销订单',
- 'value' => '分销订单'
- ],
- 'words' => [
- 'all' => [
- 'default' => '全部',
- 'value' => '全部'
- ],
- 'unsettled' => [
- 'default' => '未结算',
- 'value' => '未结算'
- ],
- 'settled' => [
- 'default' => '已结算',
- 'value' => '已结算'
- ],
- ]
- ],
- 'team' => [
- 'title' => [
- 'default' => '我的团队',
- 'value' => '我的团队'
- ],
- 'words' => [
- 'total_team' => [
- 'default' => '团队总人数',
- 'value' => '团队总人数'
- ],
- 'first' => [
- 'default' => '一级团队',
- 'value' => '一级团队'
- ],
- 'second' => [
- 'default' => '二级团队',
- 'value' => '二级团队'
- ],
- 'third' => [
- 'default' => '三级团队',
- 'value' => '三级团队'
- ],
- ]
- ],
- 'cash_list' => [
- 'title' => [
- 'default' => '提现明细',
- 'value' => '提现明细'
- ],
- 'words' => [
- 'all' => [
- 'default' => '全部',
- 'value' => '全部'
- ],
- 'apply_10' => [
- 'default' => '审核中',
- 'value' => '审核中'
- ],
- 'apply_20' => [
- 'default' => '审核通过',
- 'value' => '审核通过'
- ],
- 'apply_40' => [
- 'default' => '已打款',
- 'value' => '已打款'
- ],
- 'apply_30' => [
- 'default' => '驳回',
- 'value' => '驳回'
- ],
- ]
- ],
- 'cash_apply' => [
- 'title' => [
- 'default' => '申请提现',
- 'value' => '申请提现'
- ],
- 'words' => [
- 'capital' => [
- 'default' => '可提现佣金',
- 'value' => '可提现佣金'
- ],
- 'money' => [
- 'default' => '提现金额',
- 'value' => '提现金额'
- ],
- 'money_placeholder' => [
- 'default' => '请输入要提取的金额',
- 'value' => '请输入要提取的金额'
- ],
- 'min_money' => [
- 'default' => '最低提现佣金',
- 'value' => '最低提现佣金'
- ],
- 'submit' => [
- 'default' => '提交申请',
- 'value' => '提交申请'
- ],
- ]
- ],
- 'qrcode' => [
- 'title' => [
- 'default' => '推广二维码',
- 'value' => '推广二维码'
- ]
- ],
- ]
- ],
- 'license' => [
- 'key' => 'license',
- 'describe' => '申请协议',
- 'values' => [
- 'license' => ''
- ]
- ],
- 'background' => [
- 'key' => 'background',
- 'describe' => '页面背景图',
- 'values' => [
- // 分销中心首页
- 'index' => self::$base_url . 'image/agent/agent-bg.jpg',
- // 申请成为分销商页
- 'apply' => self::$base_url . 'image/agent/agent-bg.jpg',
- // 申请提现页
- 'cash_apply' => self::$base_url . 'image/agent/agent-bg.jpg',
- ],
- ],
- 'template_msg' => [
- 'key' => 'template_msg',
- 'describe' => '模板消息',
- 'values' => [
- 'apply_tpl' => '', // 分销商审核通知
- 'cash_tpl' => '', // 提现状态通知
- ]
- ],
- 'qrcode' => [
- 'key' => 'template_msg',
- 'describe' => '分销海报',
- 'values' => [
- 'backdrop' => [
- 'src' => self::$base_url . 'image/agent/backdrop.jpg',
- ],
- 'nickName' => [
- 'fontSize' => 14,
- 'color' => '#000000',
- 'left' => 150,
- 'top' => 99
- ],
- 'avatar' => [
- 'width' => 70,
- 'style' => 'circle',
- 'left' => 150,
- 'top' => 18
- ],
- 'qrcode' => [
- 'width' => 100,
- 'style' => 'circle',
- 'left' => 136,
- 'top' => 128
- ]
- ],
- ]
- ];
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/SupplyApply.php b/admin/app/common/model/release/SupplyApply.php
deleted file mode 100644
index ac51e21..0000000
--- a/admin/app/common/model/release/SupplyApply.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-use app\common\model\user\User as UserModel;
-
-/**
- * 申请模型
- */
-class SupplyApply extends BaseModel
-{
- protected $name = 'release_supply_apply';
- protected $pk = 'apply_id';
-
- /**
- * 申请状态
- * @var array
- */
- public $applyStatus = [
- 10 => '待审核',
- 20 => '审核通过',
- 30 => '驳回',
- ];
-
- /**
- * 申请时间
- * @param $value
- * @return false|string
- */
- public function getApplyTimeAttr($value)
- {
- return date('Y-m-d H:i:s', $value);
- }
-
- /**
- * 审核时间
- * @param $value
- * @return false|int|string
- */
- public function getAuditTimeAttr($value)
- {
- return $value > 0 ? date('Y-m-d H:i:s', $value) : 0;
- }
-
- /**
- * 销商申请记录详情
- * @param $where
- * @return array|\think\Model|null
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function detail($where)
- {
- $filter = is_array($where) ? $where : ['apply_id' => $where];
- return (new static())->where($filter)->find();
- }
-
- /**
- * 审核状态
- * @param $value
- * @return array
- */
- public function getApplyStatusAttr($value)
- {
- $method = [10 => '待审核', 20 => '审核通过', '30' => '驳回'];
- return ['text' => $method[$value], 'value' => $value];
- }
-
- /**
- * 审核方式
- * @param $value
- * @return array
- */
- public function getApplyTypeAttr($value)
- {
- $method = [10 => '后台审核', 20 => '无需审核'];
- return ['text' => $method[$value], 'value' => $value];
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/SupplyProject.php b/admin/app/common/model/release/SupplyProject.php
deleted file mode 100644
index ba90cc3..0000000
--- a/admin/app/common/model/release/SupplyProject.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-namespace app\api\model\plus\release;
-
-use app\common\model\plus\release\Project as ProjectModel;
-use app\common\model\plus\release\ReleaseProjectImage as ReleaseProjectImageModel;
-use app\common\model\plus\release\Tag as TagModel;
-use app\common\model\plus\release\ReleaseProjectTag as ReleaseProjectTagModel;
-
-
-/**
- * 模型
- */
-class SupplyProject extends ProjectModel
-{
- /**
- * 获取提现明细
- */
- public function getList($user_id, $postdata)
- {
- $model = $this;
- if(!empty($postdata["keyword"])){
- $model = $model->where('name', 'like', '%'.$postdata["keyword"].'%');
- }
- return $model->where('is_delete', '=', 0)
- ->where('project_type', '=', 1)
- ->where('user_id', '=', $user_id)
- ->order(['create_time' => 'desc'])
- ->paginate($postdata);
- }
- /**
- * 新增记录
- */
- public function add($postdata,$supply)
- {
- $data = json_decode($postdata["formData"],true);
- if (empty($data['name'])) {
- $this->error = '请输入标题';
- return false;
- }
- if (empty($data['category_id'])) {
- $this->error = '请选择分类';
- return false;
- }
- if (empty($data['price'])) {
- $this->error = '请输入您的价格';
- return false;
- }
- if (empty($data['content'])) {
- $this->error = '请输入您的详细描述';
- return false;
- }
-
- $save_data =[
- 'user_id'=>$supply["user_id"],
- 'name'=>$data["name"],
- 'category_id'=>$data["category_id"],
- 'price'=>$data["price"],
- 'content'=>$data["content"],
- 'detail'=>$data["detail"],
- 'project_type'=>1,
- 'is_show'=>$data["is_show"],
- 'app_id'=>self::$app_id,
-
- ];
- if(!empty($data["finish_time"]) && $data["finish_time"] != '请选择日期'){
- $save_data["finish_time"] = strtotime($data["finish_time"]);
- }else{
- $save_data["finish_time"] = '';
- }
-
- return $this->transaction(function () use ($data, $save_data) {
- // 记录内容
- $this->save($save_data);
- // 记录图片
- $this->saveAllImages($this['project_id'],$data);
- // 记录标签
- $this->saveTag($this['project_id'],$data);
-
- return $this['project_id'];
- });
- }
-
- /**
- * 更新记录
- */
- public function edit($postdata)
- {
- $data = json_decode($postdata["formData"],true);
- if (empty($data['name'])) {
- $this->error = '请输入标题';
- return false;
- }
- if (empty($data['category_id'])) {
- $this->error = '请选择分类';
- return false;
- }
- if (empty($data['price'])) {
- $this->error = '请输入您的价格';
- return false;
- }
- if (empty($data['content'])) {
- $this->error = '请输入您的详细描述';
- return false;
- }
- $save_data =[
- 'name'=>$data["name"],
- 'category_id'=>$data["category_id"],
- 'price'=>$data["price"],
- 'content'=>$data["content"],
- 'detail'=>$data["detail"],
- 'is_show'=>$data["is_show"],
- 'status'=>0,
- ];
- if(!empty($data["finish_time"]) && $data["finish_time"] != '请选择日期'){
- $save_data["finish_time"] = strtotime($data["finish_time"]);
- }else{
- $save_data["finish_time"] = '';
- }
-
- return $this->transaction(function () use ($data, $save_data) {
- // 记录内容
- $this->where("project_id","=",$data["project_id"])->save($save_data);
- // 记录图片
- $this->saveAllImages($data['project_id'],$data);
- // 记录标签
- $this->saveTag($data['project_id'],$data);
-
- return true;
- });
- }
- /**
- * 记录图片
- */
- private function saveAllImages($id,$formData)
- {
- (new ReleaseProjectImageModel())->where("project_id","=",$id)->delete();
- // 生成图片数据
- if(!empty($formData['image_list'])){
- $imageData = [];
- foreach ($formData['image_list'] as $imageId) {
- $imageData[] = [
- 'project_id' => $id,
- 'image_id' => !empty($imageId['image_id']) ? $imageId['image_id'] : $imageId['file_id'],
- 'app_id' => self::$app_id
- ];
- }
- $model = new ReleaseProjectImageModel;
- return !empty($imageData) && $model->saveAll($imageData);
- }
- return true;
-
- }
-
- /**
- * 记录标签
- */
- private function saveTag($id,$formData)
- {
- (new ReleaseProjectTagModel())->where("project_id","=",$id)->delete();
- // 生成数据
- if(!empty($formData['tag_list'])){
- $tagData = [];
- foreach ($formData['tag_list'] as $val) {
- $tagData[] = [
- 'project_id' => $id,
- 'tag_id' => $val,
- 'app_id' => self::$app_id
- ];
- }
- $model = new ReleaseProjectTagModel;
- return !empty($tagData) && $model->saveAll($tagData);
- }
- return true;
-
- }
-
- /**
- * 软删除
- */
- public function setDelete($id)
- {
- return $this->where("project_id","=",$id)->save(['is_delete' => 1]);
- }
-
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/SupplyUser.php b/admin/app/common/model/release/SupplyUser.php
deleted file mode 100644
index 2c408ab..0000000
--- a/admin/app/common/model/release/SupplyUser.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-
-/**
- * 用户模型
- */
-class SupplyUser extends BaseModel
-{
- protected $name = 'release_supply_user';
- protected $pk = 'user_id';
-
- /**
- * 关联会员记录表
- * @return \think\model\relation\BelongsTo
- */
- public function user()
- {
- return $this->belongsTo('app\\common\\model\\user\\User');
- }
-
-
- /**
- * 详情
- */
- public static function detail($user_id, $with = ['user'])
- {
- return (new static())->with($with)->find($user_id);
- }
-
- /**
- * 详情
- */
- public static function getAll()
- {
- return (new static())->where("is_delete","=",0)->select();
- }
-
- /**
- * 是否为供应方
- */
- public static function isSupplyUser($user_id)
- {
- $supply = self::detail($user_id);
- return !!$supply && !$supply['is_delete'];
- }
-
- /**
- * 新增记录
- * @param $user_id
- * @param $data
- * @return bool
- */
- public static function add($user_id, $data)
- {
- $model = static::detail($user_id) ?: new static;
- $model->save(array_merge([
- 'user_id' => $user_id,
- 'is_delete' => 0,
- 'app_id' => $model::$app_id,
- ], $data));
- return true;
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/release/Tag.php b/admin/app/common/model/release/Tag.php
deleted file mode 100644
index c3f5a65..0000000
--- a/admin/app/common/model/release/Tag.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace app\common\model\plus\release;
-
-use app\common\model\BaseModel;
-
-/**
- * 项目标签模型
- */
-class Tag extends BaseModel
-{
- protected $name = 'release_tag';
- protected $pk = 'tag_id';
-
-
-
- /**
- * 获取详情
- */
- public static function detail($tag_id)
- {
- return (new static())->find($tag_id);
- }
-
- /**
- * 获取列表记录
- */
- public static function getAll()
- {
- return (new static())->where('is_delete', '=', 0)
- ->field('tag_id,name')
- ->order(['sort' => 'asc', 'create_time' => 'asc'])
- ->select();
- }
-}
\ No newline at end of file
diff --git a/admin/app/common/model/user/User.php b/admin/app/common/model/user/User.php
index 3199aca..9d1b860 100644
--- a/admin/app/common/model/user/User.php
+++ b/admin/app/common/model/user/User.php
@@ -23,6 +23,15 @@
protected $pk = 'user_id';
protected $name = 'user';
+ public static function getOperatingSubsidy($referee_id, $setting)
+ {
+ $count=self::where('referee_id',$referee_id)->where('grade_id','in',$setting['referee_grade_ids'])->count();
+ if ($count>=$setting['referee_grade_count']){
+ return true;
+ }
+ return false;
+ }
+
/**
* 修改器
*/
diff --git a/admin/app/shop/controller/plus/release/DemandUser.php b/admin/app/shop/controller/plus/release/DemandUser.php
index 1593ccc..33335ae 100644
--- a/admin/app/shop/controller/plus/release/DemandUser.php
+++ b/admin/app/shop/controller/plus/release/DemandUser.php
@@ -4,6 +4,7 @@
use app\shop\controller\Controller;
use app\shop\model\plus\release\DemandUser as UserModel;
+use app\shop\model\plus\release\Grade;
/**
* 控制器
@@ -17,7 +18,9 @@
{
$model = new UserModel;
$list = $model->getList($this->postData());
- return $this->renderSuccess('', compact('list'));
+ $GradeModel = new Grade();
+ $grade = $GradeModel->getLists();
+ return $this->renderSuccess('', compact('list', 'grade'));
}
/**
diff --git a/admin/app/shop/controller/plus/release/Evaluate.php b/admin/app/shop/controller/plus/release/Evaluate.php
new file mode 100644
index 0000000..c9c058c
--- /dev/null
+++ b/admin/app/shop/controller/plus/release/Evaluate.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace app\shop\controller\plus\release;
+
+use app\shop\controller\Controller;
+use app\shop\model\plus\release\Evaluate as EvaluateModel;
+
+/**
+ * 项目
+ */
+class Evaluate extends Controller
+{
+ /**
+ * 列表
+ */
+ public function list()
+ {
+ $model = new EvaluateModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 删除
+ */
+ public function delete($id)
+ {
+ // 详情
+ $model = EvaluateModel::detail($id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+}
\ No newline at end of file
diff --git a/admin/app/shop/controller/plus/release/Grade.php b/admin/app/shop/controller/plus/release/Grade.php
new file mode 100644
index 0000000..eff8f75
--- /dev/null
+++ b/admin/app/shop/controller/plus/release/Grade.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace app\shop\controller\plus\release;
+
+use app\shop\controller\Controller;
+use app\shop\model\plus\release\Grade as GradeModel;
+
+/**
+ * 等级
+ */
+class Grade extends Controller
+{
+ /**
+ * 等级列表
+ */
+ public function index()
+ {
+ $model = new GradeModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 添加等级
+ */
+ public function add()
+ {
+ $model = new GradeModel;
+ // 新增记录
+ if ($model->add($this->postData())) {
+ return $this->renderSuccess('添加成功');
+ }
+ return $this->renderError('添加失败');
+ }
+
+ /**
+ * 编辑等级
+ */
+ public function edit($grade_id)
+ {
+ $model = GradeModel::detail($grade_id);
+ // 修改记录
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess();
+ }
+ return $this->renderError();
+ }
+
+ /**
+ * 删除等级
+ */
+ public function delete($grade_id)
+ {
+ // 等级详情
+ $model = GradeModel::detail($grade_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+}
\ No newline at end of file
diff --git a/admin/app/shop/controller/plus/release/SupplyUser.php b/admin/app/shop/controller/plus/release/SupplyUser.php
index 6758a84..5377995 100644
--- a/admin/app/shop/controller/plus/release/SupplyUser.php
+++ b/admin/app/shop/controller/plus/release/SupplyUser.php
@@ -4,6 +4,7 @@
use app\shop\controller\Controller;
use app\shop\model\plus\release\SupplyUser as UserModel;
+use app\shop\model\plus\release\Grade;
/**
* 控制器
@@ -17,7 +18,9 @@
{
$model = new UserModel;
$list = $model->getList($this->postData());
- return $this->renderSuccess('', compact('list'));
+ $GradeModel = new Grade();
+ $grade = $GradeModel->getLists();
+ return $this->renderSuccess('', compact('list', 'grade'));
}
/**
diff --git a/admin/app/shop/model/plus/release/DemandProject.php b/admin/app/shop/model/plus/release/DemandProject.php
index cb33b5d..255164b 100644
--- a/admin/app/shop/model/plus/release/DemandProject.php
+++ b/admin/app/shop/model/plus/release/DemandProject.php
@@ -20,9 +20,9 @@
if (!empty($data['name'])) {
$model = $model->where('name', 'like', '%' . $data['name'] . '%');
}
- $list = $model->with('category')->where('project_type', '=', 0)
+ $list = $model->with(['category','user'])->where('project_type', '=', 0)
->where('is_delete', '=', 0)
- ->order(['sort' => 'asc', 'create_time' => 'asc'])
+ ->order(['sort' => 'asc', 'create_time' => 'desc'])
->paginate($data);
foreach($list as &$val){
$val['finish_time'] = empty($val["finish_time"]) ? '' : date('Y-m-d',$val["finish_time"]);
diff --git a/admin/app/shop/model/plus/release/DemandUser.php b/admin/app/shop/model/plus/release/DemandUser.php
index 4b385b8..f0f0cba 100644
--- a/admin/app/shop/model/plus/release/DemandUser.php
+++ b/admin/app/shop/model/plus/release/DemandUser.php
@@ -19,7 +19,7 @@
public function getList($data)
{
// 构建查询规则
- $model = $this->alias('du')
+ $model = $this->alias('du')->with('grade')
->field('du.*, user.nickName, user.avatarUrl')
->join('user', 'user.user_id = du.user_id')
->where('du.is_delete', '=', 0)
diff --git a/admin/app/shop/model/plus/release/Evaluate.php b/admin/app/shop/model/plus/release/Evaluate.php
new file mode 100644
index 0000000..7211b0f
--- /dev/null
+++ b/admin/app/shop/model/plus/release/Evaluate.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace app\shop\model\plus\release;
+
+use app\common\model\plus\release\Evaluate as EvaluateModel;
+
+/**
+ * 模型
+ */
+class Evaluate extends EvaluateModel
+{
+ /**
+ * 获取列表记录
+ */
+ public function getList($data)
+ {
+ $model = $this;
+ // 查询条件
+ if (!empty($data['uid'])) {
+ $model = $model->where('uid', '=', $data['uid']);
+ }
+ $list = $model->with(['user'])
+ ->where('project_id','=',$data['project_id'])
+ ->order(['create_time' => 'desc'])
+ ->paginate($data);
+ foreach($list as &$val){
+ $score = "好评";
+ if($val['score']==20){
+ $score = "重评";
+ }elseif($val['score']==30){
+ $score = "差评";
+ }
+ $val['score_txt'] = $score;
+ }
+ return $list;
+ }
+
+ /**
+ * 删除
+ */
+ public function setDelete()
+ {
+ return $this->where('id','=',$this['id'])->delete();
+ }
+}
\ No newline at end of file
diff --git a/admin/app/shop/model/plus/release/Grade.php b/admin/app/shop/model/plus/release/Grade.php
new file mode 100644
index 0000000..8d4a339
--- /dev/null
+++ b/admin/app/shop/model/plus/release/Grade.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace app\shop\model\plus\release;
+
+use app\common\model\plus\release\Grade as GradeModel;
+
+/**
+ * 用户会员等级模型
+ */
+class Grade extends GradeModel
+{
+ /**
+ * 获取列表记录
+ */
+ public function getList($data)
+ {
+ return $this->where('is_delete', '=', 0)
+ ->order(['weight' => 'asc', 'create_time' => 'asc'])
+ ->paginate($data);
+ }
+
+
+
+
+ /**
+ * 新增记录
+ */
+ public function add($data)
+ {
+ $data['app_id'] = self::$app_id;
+ return $this->save($data);
+ }
+
+ /**
+ * 编辑记录
+ */
+ public function edit($data)
+ {
+ return $this->save($data);
+ }
+
+
+ /**
+ * 软删除
+ */
+ public function setDelete()
+ {
+
+ return $this->save(['is_delete' => 1]);
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/shop/model/plus/release/SupplyProject.php b/admin/app/shop/model/plus/release/SupplyProject.php
index e3916ff..2bab6d1 100644
--- a/admin/app/shop/model/plus/release/SupplyProject.php
+++ b/admin/app/shop/model/plus/release/SupplyProject.php
@@ -21,9 +21,9 @@
if (!empty($data['name'])) {
$model = $model->where('name', 'like', '%' . $data['name'] . '%');
}
- $list= $model->with('category')->where('project_type', '=', 1)
+ $list= $model->with(['category','user'])->where('project_type', '=', 1)
->where('is_delete', '=', 0)
- ->order(['sort' => 'asc', 'create_time' => 'asc'])
+ ->order(['sort' => 'asc', 'create_time' => 'desc'])
->paginate($data);
foreach($list as &$val){
diff --git a/admin/app/shop/model/plus/release/SupplyUser.php b/admin/app/shop/model/plus/release/SupplyUser.php
index 08a8f8f..43136a2 100644
--- a/admin/app/shop/model/plus/release/SupplyUser.php
+++ b/admin/app/shop/model/plus/release/SupplyUser.php
@@ -19,7 +19,7 @@
public function getList($data)
{
// 构建查询规则
- $model = $this->alias('su')
+ $model = $this->alias('su')->with('grade')
->field('su.*, user.nickName, user.avatarUrl')
->join('user', 'user.user_id = su.user_id')
->where('su.is_delete', '=', 0)
diff --git a/admin/app/supplier/controller/plus/release/Cash.php b/admin/app/supplier/controller/plus/release/Cash.php
new file mode 100644
index 0000000..21e2e78
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Cash.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Cash as CashModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 提现申请制器
+ */
+class Cash extends Controller
+{
+ /**
+ * 提现记录列表
+ */
+ public function index($user_id = null, $apply_status = -1, $pay_type = -1, $search = '')
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new CashModel;
+ $list = $model->getList($user_id, $apply_status, $pay_type, $search);
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 提现审核
+ */
+ public function submit($id)
+ {
+ $model = CashModel::detail($id);
+ if ($model->submit($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 确认打款
+ */
+ public function money($id)
+ {
+ $model = CashModel::detail($id);
+
+ if ($model->money()) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 分销商提现:微信支付企业付款
+ */
+ public function wechat_pay($id)
+ {
+ $model = CashModel::detail($id);
+ if ($model->wechatPay()) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 分销商提现:分账功能 by yj
+ */
+ public function fb_pay($id)
+ {
+ $model = CashModel::detail($id);
+ if ($model->fbPay()) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 订单导出
+ */
+ public function export($user_id = null, $apply_status = -1, $pay_type = -1, $search = '')
+ {
+ $model = new CashModel();
+ return $model->exportList($user_id, $apply_status, $pay_type, $search);
+ }
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/DemandApply.php b/admin/app/supplier/controller/plus/release/DemandApply.php
new file mode 100644
index 0000000..7f0774f
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/DemandApply.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\DemandApply as ApplyModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 控制器
+ */
+class DemandApply extends Controller
+{
+
+ /**
+ * 申请列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new ApplyModel;
+ $apply_list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('apply_list'));
+ }
+
+ /**
+ * 审核分销商
+ */
+ public function editApplyStatus($apply_id)
+ {
+ $model = ApplyModel::detail($apply_id);
+ if ($model->submit($this->postData())) {
+ return $this->renderSuccess('修改成功');
+ }
+ return $this->renderError('修改失败');
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/DemandProject.php b/admin/app/supplier/controller/plus/release/DemandProject.php
new file mode 100644
index 0000000..5697d66
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/DemandProject.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\DemandProject as ProjectModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 项目
+ */
+class DemandProject extends Controller
+{
+ /**
+ * 列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new ProjectModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 审核
+ */
+ public function submit($project_id)
+ {
+ $model = ProjectModel::detail($project_id);
+ if ($model->submit($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+
+ /**
+ * 删除
+ */
+ public function delete($project_id)
+ {
+ // 详情
+ $model = ProjectModel::detail($project_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/DemandUser.php b/admin/app/supplier/controller/plus/release/DemandUser.php
new file mode 100644
index 0000000..1f642e1
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/DemandUser.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\DemandUser as UserModel;
+use app\shop\model\plus\release\Grade;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 控制器
+ */
+class DemandUser extends Controller
+{
+ /**
+ * 列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new UserModel;
+ $list = $model->getList($this->postData());
+ $GradeModel = new Grade();
+ $grade = $GradeModel->getLists();
+ return $this->renderSuccess('', compact('list', 'grade'));
+ }
+
+ /**
+ * 编辑
+ */
+ public function edit()
+ {
+ $user_id = $this->postData('user_id');
+ $model = UserModel::detail($user_id);
+ if ($this->request->isGet()) {
+ return $this->renderSuccess('', compact('model'));
+ }
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess('更新成功');
+ }
+ return $this->renderError($model->getError() ?: '更新失败');
+ }
+
+ /**
+ * 软删除
+ */
+ public function delete($user_id)
+ {
+ $model = UserModel::detail($user_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/Evaluate.php b/admin/app/supplier/controller/plus/release/Evaluate.php
new file mode 100644
index 0000000..3c40dfe
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Evaluate.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Evaluate as EvaluateModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 项目
+ */
+class Evaluate extends Controller
+{
+ /**
+ * 列表
+ */
+ public function list()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new EvaluateModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 删除
+ */
+ public function delete($id)
+ {
+ // 详情
+ $model = EvaluateModel::detail($id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/Grade.php b/admin/app/supplier/controller/plus/release/Grade.php
new file mode 100644
index 0000000..ac3ef85
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Grade.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Grade as GradeModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 等级
+ */
+class Grade extends Controller
+{
+ /**
+ * 等级列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new GradeModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 添加等级
+ */
+ public function add()
+ {
+ $model = new GradeModel;
+ // 新增记录
+ if ($model->add($this->postData())) {
+ return $this->renderSuccess('添加成功');
+ }
+ return $this->renderError('添加失败');
+ }
+
+ /**
+ * 编辑等级
+ */
+ public function edit($grade_id)
+ {
+ $model = GradeModel::detail($grade_id);
+ // 修改记录
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess();
+ }
+ return $this->renderError();
+ }
+
+ /**
+ * 删除等级
+ */
+ public function delete($grade_id)
+ {
+ // 等级详情
+ $model = GradeModel::detail($grade_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/Order.php b/admin/app/supplier/controller/plus/release/Order.php
new file mode 100644
index 0000000..ef631f3
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Order.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Order as OrderModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+
+/**
+ * 订单
+ */
+class Order extends Controller
+{
+
+ /**
+ * 订单列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new OrderModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 编辑
+ */
+ public function edit()
+ {
+ $id = $this->postData('id');
+ $model = OrderModel::detail($id);
+ // 修改记录
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess();
+ }
+ return $this->renderError();
+ }
+
+ /**
+ * 线下支付
+ */
+ public function onCash($id)
+ {
+ // 订单信息
+ $model = OrderModel::detail($id);
+ if ($model->onCash($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 完成订单
+ */
+ public function onFinish($id)
+ {
+ // 订单信息
+ $model = OrderModel::detail($id);
+ if ($model->onFinish($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 审核:用户取消订单
+ */
+ public function onCancel($id)
+ {
+ $model = OrderModel::detail($id);
+ if ($model->confirmCancel($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError('操作失败');
+ }
+
+ /**
+ * 订单导出
+ */
+ public function export()
+ {
+ $model = new OrderModel();
+ return $model->exportList($this->postData());
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/ReleaseCategory.php b/admin/app/supplier/controller/plus/release/ReleaseCategory.php
new file mode 100644
index 0000000..769b4d5
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/ReleaseCategory.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\ReleaseCategory as ReleaseCategoryModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 商品分类
+ */
+class ReleaseCategory extends Controller
+{
+ /**
+ * 分类列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new ReleaseCategoryModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 删除商品分类
+ */
+ public function delete($category_id)
+ {
+ $model = (new ReleaseCategoryModel())->find($category_id);
+ if ($model->setDelete()) {
+ return $this->renderSuccess('删除成功');
+ }
+ return $this->renderError($model->getError() ?:'删除失败');
+ }
+
+ /**
+ * 添加商品分类
+ */
+ public function add()
+ {
+ $model = new ReleaseCategoryModel;
+ // 新增记录
+ $postData = $this->request->post();
+ if ($model->add($postData)) {
+ return $this->renderSuccess('添加成功');
+ }
+ return $this->renderError($model->getError() ?:'添加失败');
+ }
+
+ /**
+ * 编辑商品分类
+ */
+ public function edit($category_id)
+ {
+ // 模板详情
+ $model = ReleaseCategoryModel::detail($category_id);
+ // 更新记录
+ if ($model->edit($this->request->post())) {
+ return $this->renderSuccess('更新成功');
+ }
+ return $this->renderError($model->getError() ?: '更新失败');
+ }
+
+}
diff --git a/admin/app/supplier/controller/plus/release/Setting.php b/admin/app/supplier/controller/plus/release/Setting.php
new file mode 100644
index 0000000..f9a06bc
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Setting.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+
+use app\common\model\settings\Setting as SettingModel;
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Setting as ReleaseSettingModel;
+use app\shop\model\product\Product as ProductModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 设置控制器
+ */
+class Setting extends Controller
+{
+
+ public $pay_type = [
+ ['id' => '10', 'name' => '微信支付'],
+ ['id' => '20', 'name' => '支付宝'],
+ ['id' => '30', 'name' => '银行卡']
+ ];
+
+ public $pay_type1 = [
+ 10 => '微信支付',
+ 20 => '支付宝',
+ 30 => '银行卡'
+ ];
+
+ /**
+ * 设置
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $pay_type = $this->pay_type;
+ $data = ReleaseSettingModel::getAll();
+ return $this->renderSuccess('', compact('data','pay_type'));
+ }
+
+ /**
+ * 基础信息设置
+ */
+ public function basic()
+ {
+ $param = $this->postData();
+ $data['basic'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 条件设置
+ */
+ public function condition()
+ {
+ $param = $this->postData();
+ $data['condition'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 佣金设置
+ */
+ public function commission()
+ {
+ $param = $this->postData();
+ $data['commission'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 结算设置
+ */
+ public function settlement()
+ {
+ $param = $this->postData('form');
+ $data['settlement'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 自定义文字设置
+ */
+ public function words()
+ {
+ $param = $this->postData();
+ $data['words'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 申请协议设置
+ */
+ public function license()
+ {
+ $param = $this->postData();
+ $data['license'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 页面背景设置
+ */
+ public function background()
+ {
+ $param = $this->postData();
+ $data['background'] = $param;
+ return $this->edit($data);
+ }
+
+ /**
+ * 修改
+ */
+ public function edit($data)
+ {
+ $model = new ReleaseSettingModel;
+ if ($model->edit($data)) {
+ return $this->renderSuccess('更新成功');
+ }
+ return $this->renderError($model->getError() ?: '更新失败');
+ }
+
+
+ /**
+ * 分销海报
+ */
+ public function qrcode()
+ {
+ if (!$this->request->post()) {
+ $data = RepairSettingModel::getItem('qrcode');
+ return $this->renderSuccess('', ['data' => $data]);
+ }
+ $model = new RepairSettingModel;
+ if ($model->edit(['qrcode' => $this->postData('form')])) {
+ return $this->renderSuccess('更新成功');
+ }
+ return $this->renderError($model->getError() ?: '更新失败');
+ }
+
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/SupplyApply.php b/admin/app/supplier/controller/plus/release/SupplyApply.php
new file mode 100644
index 0000000..ced1067
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/SupplyApply.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\SupplyApply as ApplyModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 控制器
+ */
+class SupplyApply extends Controller
+{
+
+ /**
+ * 分销商申请列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new ApplyModel;
+ $apply_list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('apply_list'));
+ }
+
+ /**
+ * 审核分销商
+ */
+ public function editApplyStatus($apply_id)
+ {
+ $model = ApplyModel::detail($apply_id);
+ if ($model->submit($this->postData())) {
+ return $this->renderSuccess('修改成功');
+ }
+ return $this->renderError('修改失败');
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/SupplyProject.php b/admin/app/supplier/controller/plus/release/SupplyProject.php
new file mode 100644
index 0000000..b8d9316
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/SupplyProject.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\SupplyProject as ProjectModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 项目
+ */
+class SupplyProject extends Controller
+{
+ /**
+ * 列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new ProjectModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+/**
+ * 审核
+ */
+ public function submit($project_id)
+ {
+ $model = ProjectModel::detail($project_id);
+ if ($model->submit($this->postData())) {
+ return $this->renderSuccess('操作成功');
+ }
+ return $this->renderError($model->getError() ?: '操作失败');
+ }
+
+ /**
+ * 删除
+ */
+ public function delete($project_id)
+ {
+ // 详情
+ $model = ProjectModel::detail($project_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/SupplyUser.php b/admin/app/supplier/controller/plus/release/SupplyUser.php
new file mode 100644
index 0000000..9b430e5
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/SupplyUser.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\SupplyUser as UserModel;
+use app\shop\model\plus\release\Grade;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 控制器
+ */
+class SupplyUser extends Controller
+{
+ /**
+ * 列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new UserModel;
+ $list = $model->getList($this->postData());
+ $GradeModel = new Grade();
+ $grade = $GradeModel->getLists();
+ return $this->renderSuccess('', compact('list', 'grade'));
+ }
+
+ /**
+ * 编辑
+ */
+ public function edit()
+ {
+ $user_id = $this->postData('user_id');
+ $model = UserModel::detail($user_id);
+ if ($this->request->isGet()) {
+ return $this->renderSuccess('', compact('model'));
+ }
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess('更新成功');
+ }
+ return $this->renderError($model->getError() ?: '更新失败');
+ }
+
+ /**
+ * 软删除
+ */
+ public function delete($user_id)
+ {
+ $model = UserModel::detail($user_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+
+}
\ No newline at end of file
diff --git a/admin/app/supplier/controller/plus/release/Tag.php b/admin/app/supplier/controller/plus/release/Tag.php
new file mode 100644
index 0000000..9e342d4
--- /dev/null
+++ b/admin/app/supplier/controller/plus/release/Tag.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace app\supplier\controller\plus\release;
+
+use app\supplier\controller\Controller;
+use app\shop\model\plus\release\Tag as TagModel;
+use app\supplier\model\supplier\Supplier as SupplierModel;
+
+/**
+ * 标签
+ */
+class Tag extends Controller
+{
+ /**
+ * 列表
+ */
+ public function index()
+ {
+ $supplier = SupplierModel::detail($this->getSupplierId());
+ if(empty($supplier["is_release"])){
+ return $this->renderError('没有权限');
+ }
+ $model = new TagModel;
+ $list = $model->getList($this->postData());
+ return $this->renderSuccess('', compact('list'));
+ }
+
+ /**
+ * 添加
+ */
+ public function add()
+ {
+ $model = new TagModel;
+ // 新增记录
+ if ($model->add($this->postData())) {
+ return $this->renderSuccess('添加成功');
+ }
+ return $this->renderError('添加失败');
+ }
+
+ /**
+ * 编辑
+ */
+ public function edit()
+ {
+ $tag_id = $this->postData('tag_id');
+ $model = TagModel::detail($tag_id);
+ if($this->request->isGet()){
+ return $this->renderSuccess('', compact( 'model'));
+ }
+ // 修改记录
+ if ($model->edit($this->postData())) {
+ return $this->renderSuccess();
+ }
+ return $this->renderError();
+ }
+
+ /**
+ * 删除
+ */
+ public function delete($tag_id)
+ {
+ // 详情
+ $model = TagModel::detail($tag_id);
+ if (!$model->setDelete()) {
+ return $this->renderError('删除失败');
+ }
+ return $this->renderSuccess('删除成功');
+ }
+
+}
\ No newline at end of file
diff --git a/mobile/pages.json b/mobile/pages.json
index d2dcc84..a2b71e9 100644
--- a/mobile/pages.json
+++ b/mobile/pages.json
@@ -2311,6 +2311,27 @@
"navigationBarTitleText": "提现明细",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "release/chat/chat",
+ "style": {
+ "navigationBarTitleText": "聊天信息",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "release/chat/chat_list",
+ "style": {
+ "navigationBarTitleText": "聊天列表",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "release/project/look-evaluate/look-evaluate",
+ "style": {
+ "navigationBarTitleText": "评论列表",
+ "enablePullDownRefresh": false
+ }
}
]
}
diff --git a/mobile/pages/branch/admin/activity/user.vue b/mobile/pages/branch/admin/activity/user.vue
index f3e4941..212c4f5 100644
--- a/mobile/pages/branch/admin/activity/user.vue
+++ b/mobile/pages/branch/admin/activity/user.vue
@@ -34,6 +34,7 @@
<view class="d-b-c mb16 f28 gray3">姓名:{{ item.real_name }}</view>
<view class="d-b-c mb16 f28 gray3">手机号:{{ item.mobile }}</view>
<view class="d-b-c mb16 f28 gray3">邀请人:{{ item.recommend_name }}</view>
+ <view class="d-b-c mb16 f28 gray3">所属分会:{{ item.branch.name }}</view>
<view class="gray9">报名时间:{{ item.create_time }}</view>
</view>
<view class="f26">
diff --git a/mobile/pages3/release/chat/chat.vue b/mobile/pages3/release/chat/chat.vue
new file mode 100644
index 0000000..ed4aa0f
--- /dev/null
+++ b/mobile/pages3/release/chat/chat.vue
@@ -0,0 +1,585 @@
+<template>
+ <view class="im_interface">
+ <scroll-view id="scrollview" scroll-y="true" :style="'height: '+scrollviewHigh + 'px'" :scroll-with-animation="true"
+ :scroll-top="scrollTop" @scrolltoupper='newdata'>
+
+ <view class="im_interface_content" ref='container'>
+ <view :class="item.user_id == user_id?'im_text':'im_text2'" class="m-item" v-for="(item,index) in content_list" :key="index">
+ <image class="avatar" :src="item.user_id != user_id?item.user.avatarUrl:avatarUrl"
+ mode=""></image>
+ <view>
+ <view class="my_date">{{item.create_time}}</view>
+ <view :class="item.user_id == user_id?'my_content my_text_content':'you_content you_text_content'">
+ {{item.content}}
+ </view>
+ </view>
+ </view>
+ </view>
+ <view style="width: 100%;height: 130rpx;"></view>
+ </scroll-view>
+
+ <view class="buttom" :style="'bottom:' +inputBottom+'px;'">
+ <input type="text" v-model="content" @confirm="send_content()" confirm-type="send" @focus="inputFocus" @blur="inputBlur"
+ :adjust-position="false" placeholder="请输入....." />
+ <view class="upload_box">
+ <button @click="send_content()">发送</button>
+ </view>
+ </view>
+
+ <Upload v-if="isupload" :isupload="isupload" :type="type" @getImgs="getImgsFunc">上传图片</Upload>
+ </view>
+</template>
+
+<script>
+ import Upload from '@/components/upload/upload';
+ export default {
+ data() {
+ return {
+ user_id: '', //我的user_id
+ you_user_id: '', //对方的suser_id
+ myavatarUrl: '',
+ avatarUrl: '',
+ phoneHeight: 0,
+ /*可滚动视图区域高度*/
+ scrollviewHigh: 0,
+ content: '', //用户输入的内容
+ content_list: [], //聊天信息数据
+ style: {
+ pageHeight: 0,
+ contentViewHeight: 0,
+ footViewHeight: 90,
+ mitemHeight: 0
+ },
+ scrollTop: 0,
+ page: 1,
+ nomore: false,
+ scrollHeight: 0,
+ nickName: '',
+ inputBottom: 0,
+ is_Ios: true,
+ }
+ },
+ components: {},
+ created() {
+ let self = this;
+ const res = uni.getSystemInfoSync(); //获取手机可使用窗口高度 api为获取系统信息同步接口
+ this.style.pageHeight = res.windowHeight;
+ this.style.contentViewHeight = res.windowHeight - uni.getSystemInfoSync().screenWidth / 750 * (100) - 70; //像素
+ },
+ onShow() {
+ this.getAvatarUrl();
+ this.init();
+ this.isuserAgent();
+ },
+ onLoad(option) {
+ let self = this;
+ self.you_user_id = option.you_user_id;
+ self.nickName = option.nickname;
+ self.avatarUrl = option.avatarurl;
+ uni.setNavigationBarTitle({
+ title: self.nickName
+ })
+ this.get_content_list();
+ },
+ methods: {
+ /*初始化*/
+ init() {
+ let self = this;
+ uni.getSystemInfo({
+ success(res) {
+ self.phoneHeight = res.windowHeight;
+ // 计算组件的高度
+ self.scrollviewHigh = self.phoneHeight;
+ }
+ });
+ },
+ initData() {
+ this.page++;
+ this.get_content_list();
+ },
+
+
+ // 发送消息
+ send_content() {
+ if (this.content == '') {
+ uni.showToast({
+ title: '发送内容不能为空!',
+ icon: 'none'
+ })
+ return false
+ }
+ let self = this;
+ let item = {
+ content: this.content,
+ user_id: this.user_id,
+ create_time: self.formatDate(),
+ user: {
+ avatarUrl: self.myavatarUrl
+ }
+ }
+ this.content_list = [...this.content_list, item];
+ this.$nextTick(function() {
+ this.scrollToBottom()
+ })
+ uni.showLoading({
+ title: '加载中'
+ })
+ self._post('plus.release.chat/add', {
+ content: self.content,
+ you_user_id: self.you_user_id,
+ }, (res) => {
+ self.content = '';
+ uni.hideLoading()
+ })
+ },
+ getAvatarUrl() {
+ let self = this;
+ self.user_id = uni.getStorageSync('user_id')
+ self._get(
+ 'plus.release.chat/getInfo', {},
+ function(res) {
+ self.myavatarUrl = res.data.info.avatarUrl;
+ }
+ );
+ },
+
+ //获取聊天记录
+ get_content_list() {
+ let self = this;
+ uni.showLoading({
+ title: '加载中'
+ })
+ self._post('plus.release.chat/message', {
+ //被聊天人的user_id
+ page: self.page,
+ you_user_id: self.you_user_id,
+ }, (res) => {
+ console.log(self.content_list)
+ let list = res.data.list.data.reverse();
+ self.content_list = [...list, ...self.content_list];
+ console.log(self.content_list)
+ if (res.data.list.last_page <= self.page) {
+ self.nomore = true;
+ }
+ if (self.page == 1) {
+ self.$nextTick(() => {
+ self.scrollToBottom();
+ });
+ } else {
+ self.$nextTick(() => {
+ const newquery = uni.createSelectorQuery().in(self);
+ newquery.select('.im_interface_content').boundingClientRect(data => {
+ console.log(data)
+ self.scrollTop = data.height - self.scrollHeight;
+ }).exec();
+ });
+ }
+ uni.hideLoading()
+ })
+ },
+ scrollToBottom: function() {
+ let self = this;
+ let query = uni.createSelectorQuery();
+ query.selectAll('.m-item').boundingClientRect();
+ query.select('#scrollview').boundingClientRect();
+ query.exec((res) => {
+ self.style.mitemHeight = 0;
+ res[0].forEach((rect) => self.style.mitemHeight = self.style.mitemHeight + rect.height +
+ 40)
+ setTimeout(() => {
+ if (self.style.mitemHeight > (self.style.contentViewHeight - 100)) {
+ self.scrollTop = self.style.mitemHeight - self.style.contentViewHeight +
+ 150
+ }
+ }, 300)
+ })
+ },
+
+ getJSON(str) {
+ return JSON.parse(str)
+ },
+ newdata() {
+ let self = this;
+ this.page++;
+ const query = uni.createSelectorQuery().in(this);
+ query.select('.im_interface_content').boundingClientRect(data => {
+ this.scrollHeight = data.height;
+ }).exec();
+ this.get_content_list();
+ },
+ inputFocus(e) {
+ this.inputBottom = e.detail.height;
+ },
+ inputBlur() {
+ this.inputBottom = 0;
+ },
+ isuserAgent() {
+ let self = this;
+ switch (uni.getSystemInfoSync().platform) {
+ case 'android':
+ self.is_Ios = false;
+ console.log('运行Android上')
+ break;
+ case 'ios':
+ console.log('运行iOS上')
+ break;
+ default:
+ console.log('运行在开发者工具上')
+ break;
+ }
+ },
+ formatDate() {
+ let date = new Date();
+ let year = date.getFullYear(); // 年
+ let month = date.getMonth() + 1; // 月
+ let day = date.getDate(); // 日
+ let week = date.getDay(); // 星期
+ let weekArr = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
+ let hour = date.getHours(); // 时
+ hour = hour < 10 ? "0" + hour : hour; // 如果只有一位,则前面补零
+ let minute = date.getMinutes(); // 分
+ minute = minute < 10 ? "0" + minute : minute; // 如果只有一位,则前面补零
+ let second = date.getSeconds(); // 秒
+ second = second < 10 ? "0" + second : second; // 如果只有一位,则前面补零
+ return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
+ },
+ }
+ }
+</script>
+
+<style>
+ page {
+ background-color: #EDEDED;
+ }
+
+ .im_interface {
+ width: 750rpx;
+ }
+
+ .im_interface_content {
+ padding: 20rpx 50rpx;
+ }
+
+ .buttom {
+ width: 750rpx;
+ height: 130rpx;
+ background-color: #F7F7F7;
+ border-top: 1px #D2D2D2 solid;
+ display: flex;
+ justify-content: flex-start;
+ align-items: flex-start;
+ position: fixed;
+ bottom: 0;
+ padding-top: 20rpx;
+ box-sizing: border-box;
+ }
+
+ .buttom input {
+ width: 605rpx;
+ height: 75rpx;
+ line-height: 75rpx;
+ background-color: white;
+ display: block;
+ padding: 5rpx;
+ box-sizing: border-box;
+ margin-left: 30rpx;
+ border-radius: 10rpx;
+ vertical-align: middle;
+ position: relative;
+ border: 1rpx solid #CCCCCC;
+
+ }
+
+ .buttom button {
+ width: 125rpx;
+ height: 50rpx;
+ line-height: 200%;
+ display: block;
+ margin: 0 15rpx;
+ vertical-align: middle;
+ position: relative;
+ background-color: #05C160;
+ color: white;
+ }
+
+ .im_text {
+ /* width: 100%; */
+ display: flex;
+ margin-top: 75rpx;
+ flex-direction: row-reverse;
+ position: relative;
+ }
+
+ .im_text2 {
+ /* width: 100%; */
+ display: flex;
+ margin-top: 75rpx;
+ position: relative;
+ }
+
+ .im_text .avatar {
+ width: 84rpx;
+ height: 84rpx;
+ margin-left: 3%;
+ border-radius: 10rpx;
+ background-color: #000000;
+ align-items: flex-start;
+ }
+
+ .im_text2 .avatar {
+ width: 84rpx;
+ height: 84rpx;
+ margin-right: 3%;
+ border-radius: 10rpx;
+ background-color: #000000;
+ align-items: flex-start;
+ }
+
+ .im_text .my_content {
+ max-width: 550rpx;
+ align-items: flex-start;
+ border-radius: 10rpx;
+ padding: 17rpx 20rpx;
+ box-sizing: border-box;
+ word-break: break-all;
+ }
+
+ .im_text2 .my_content {
+ max-width: 450rpx;
+ align-items: flex-start;
+ border-radius: 10rpx;
+ padding: 10rpx;
+ box-sizing: border-box;
+ word-break: break-all;
+ }
+
+ .im_text .you_content {
+ max-width: 450rpx;
+ align-items: flex-start;
+ border-radius: 10rpx;
+ padding: 17rpx 20rpx;
+ box-sizing: border-box;
+ }
+
+ .im_text2 .you_content {
+ max-width: 450rpx;
+ align-items: flex-start;
+ border-radius: 10rpx;
+ padding: 10rpx;
+ box-sizing: border-box;
+ }
+
+ .my_content {
+ background-color: #9EEA6A;
+ margin-top: 25rpx;
+ }
+
+ .you_content {
+ background-color: white;
+ margin-top: 25rpx;
+ }
+
+ .im_icon {
+ position: absolute;
+ bottom: -2rpx;
+ right: 41px;
+ transform: rotate(270deg);
+
+ }
+
+ .im_icon2 {
+ position: absolute;
+ bottom: 0;
+ }
+
+ .im_icon .icon-sanjiao1 {
+ color: #9EEA6A;
+ }
+
+ .im_icon2 .icon-sanjiao1 {
+ position: absolute;
+ bottom: 0;
+ }
+
+ .upload {
+ width: 50rpx;
+ height: 50rpx;
+ background-color: #007AFF;
+ border-radius: 50%;
+ line-height: 50rpx;
+ text-align: center;
+ }
+
+ .cont_img {
+ width: 200rpx;
+ height: 200rpx;
+ border-radius: 10rpx;
+ }
+
+ .top_pro {
+ /* margin-left: 85rpx; */
+ }
+
+ .top_product {
+ width: 610rpx;
+ height: 200rpx;
+ border-radius: 10rpx;
+ margin: 0 auto;
+ display: flex;
+ align-items: flex-start;
+ justify-content: flex-start;
+ background-color: #FFFFFF;
+ padding: 10rpx 20rpx;
+ position: relative;
+ }
+
+ .top_order {
+ width: 610rpx;
+ /* height: 200rpx; */
+ border-radius: 10rpx;
+ margin: 0 auto;
+ display: flex;
+ align-items: flex-start;
+ justify-content: flex-start;
+ background-color: #FFFFFF;
+ padding: 10rpx 20rpx;
+ position: relative;
+ }
+
+ .pro_img {
+ height: 150rpx;
+ width: 150rpx;
+ border-radius: 10rpx;
+ margin-right: 20rpx;
+ background-color: #FFFFFF;
+ }
+
+ .pro_name {
+ font-size: 28rpx;
+ text-overflow: -o-ellipsis-lastline;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ line-clamp: 3;
+ -webkit-box-orient: vertical;
+ margin-bottom: 50rpx;
+ width: 400rpx;
+ }
+
+ .pro_price {
+ font-size: 24rpx;
+ color: #E2231A;
+ }
+
+ .pro_btn {
+ position: absolute;
+ bottom: 12rpx;
+ right: 15rpx;
+ width: 180rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ border-radius: 25rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #FFFFFF;
+ background-color: #FF6633;
+ }
+
+ .orderdetail_btn {
+ width: 180rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ border-radius: 25rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #FFFFFF;
+ background-color: #FF6633;
+ margin-left: 270rpx;
+ margin-top: 20rpx;
+ }
+
+ .ord_btn {
+ position: absolute;
+ bottom: 20rpx;
+ right: 15rpx;
+ width: 180rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ border-radius: 25rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #FFFFFF;
+ background-color: #FF6633;
+ }
+
+ .close_pro {
+ position: absolute;
+ top: 12rpx;
+ right: 15rpx;
+ }
+
+ .product_item {
+ width: 400rpx;
+ height: 200rpx;
+ }
+
+ .product_txtitem {
+ display: flex;
+ width: 550rpx;
+ /* height: 150rpx; */
+ }
+
+ .pro_txtname {
+ font-size: 28rpx;
+ text-overflow: -o-ellipsis-lastline;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ line-clamp: 1;
+ -webkit-box-orient: vertical;
+ margin-bottom: 50rpx;
+ }
+
+ .my_text_content {
+ /* height: 100%; */
+ max-width: 430rpx;
+ }
+
+ .you_text_content {
+ /* height: 100%; */
+ max-width: 430rpx;
+ }
+
+ .my_date {
+ color: #cccccc;
+ font-size: 24rpx;
+ position: absolute;
+ top: -10rpx;
+ }
+
+ .im_text .my_date {
+ right: 100rpx;
+ }
+
+ .sendpro_price {
+ position: absolute;
+ bottom: 25px;
+ }
+
+ .sendord_price {
+ position: absolute;
+ bottom: 40px;
+ }
+
+ .upload_box {
+ /* width: 50rpx; */
+ height: 75rpx;
+ display: flex;
+ align-items: center;
+ margin-left: 20rpx;
+ justify-content: space-around;
+ flex: 1;
+ }
+</style>
diff --git a/mobile/pages3/release/chat/chat_list.vue b/mobile/pages3/release/chat/chat_list.vue
new file mode 100644
index 0000000..1e23bb6
--- /dev/null
+++ b/mobile/pages3/release/chat/chat_list.vue
@@ -0,0 +1,155 @@
+<template>
+ <view class="im_index">
+ <view class="im_item" v-for="(item,index) in imList" :key="index"
+ @click="jumpPage(item.user)">
+ <view class="im_item_left">
+ <image :src="item.user.avatarUrl" mode=""></image>
+ </view>
+ <view class="im_item_right">
+ <view class="im_item_right_item">
+ <view class="title text-ellipsis">{{item.user.nickName}}</view>
+ <view class="time">{{item.newMessage.create_time}}</view>
+ </view>
+ <view class="im_item_right_item">
+ <view class="content">{{item.newMessage.content}}</view>
+ <view v-if="item.num>0" class="message">{{item.num}}</view>
+ </view>
+ </view>
+ </view>
+ <view class="hint" v-if="imList.length==0">
+ 您当前并没有与任何人聊天哦!
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ imList: [],
+ }
+ },
+ onShow() {
+ this.get_im_list();
+ },
+ onLoad() {
+
+ },
+ methods: {
+ //获取聊天列表
+ get_im_list() {
+ let self = this;
+ self._post('plus.release.chat/index', {
+ }, (res) => {
+ self.imList = res.data.list;
+ })
+ },
+
+ jumpPage(user) {
+ console.log(user)
+ this.gotoPage('/pages3/release/chat/chat?you_user_id=' + user.user_id + '&avatarurl=' + user.avatarUrl +
+ '&nickname=' + user.nickName);
+ },
+
+
+ }
+ }
+</script>
+
+<style>
+ .im_index {
+ width: 100%;
+ }
+
+ .im_item {
+ width: 90%;
+ height: 120rpx;
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ }
+
+ .im_item_left {
+ box-sizing: border-box;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .im_item_left image {
+ width: 80rpx;
+ height: 80rpx;
+ margin: 0 auto;
+ margin-top: 5%;
+ border-radius: 50%;
+ background-color: rgba(0, 0, 0, 0.1);
+ }
+
+ .im_item_right {
+ width: 555rpx;
+ padding: 10rpx;
+ border-bottom: 1px #dcdcdc solid;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .message {
+ width: 30rpx;
+ height: 30rpx;
+ border-radius: 50%;
+ color: white;
+ background-color: red;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 15rpx;
+ }
+
+ .im_item_right_item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 10rpx;
+ }
+
+ .title {
+ font-size: 32rpx;
+ }
+
+
+ .guangfang {
+ font-size: 16rpx;
+ color: #F36A24;
+ border: 1rpx #F36A24 solid;
+ border-radius: 10rpx;
+ padding: 5rpx 10rpx;
+ box-sizing: border-box;
+ position: relative;
+ left: -65rpx;
+ }
+
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ flex-shrink: 0;
+ }
+
+ .content {
+ font-size: 26rpx;
+ color: #999999;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ word-break: break-all;
+ }
+
+ .hint {
+ width: 750rpx;
+ text-align: center;
+ font-size: 32rpx;
+ color: #585858;
+ margin-top: 20rpx;
+ }
+</style>
diff --git a/mobile/pages3/release/demandindex/index.vue b/mobile/pages3/release/demandindex/index.vue
index 30b2b28..646986b 100644
--- a/mobile/pages3/release/demandindex/index.vue
+++ b/mobile/pages3/release/demandindex/index.vue
@@ -20,12 +20,21 @@
<view class="photo">
<image :src="user.avatarUrl" mode="aspectFill"></image>
</view>
+ <view>
<view class="user-name">
<view class="gray3 f32">{{ user.nickName }}</view>
</view>
-
+ <view class="gray3 d-s-c mt10">
+ <text class="f28 flex-1 mr20">连盟币:{{user.points}}</text>
+ <view @click="jump">
+ <text>[切换到供应方]</text>
+ <text class="iconfont icon-jiantou"></text>
+ </view>
+ </view>
+ </view>
</view>
</view>
+
<!-- <view class="d-s-c p-30-0 top_dash">
<view class="flex-1 d-c-c d-c">
<view class="redF6">
@@ -54,6 +63,14 @@
<button type="primary" class="btn-gcred theme-btn flex-1" @click="gotoPage('/pages3/release/demandproject/index')">发布需求</button>
</view>-->
</view>
+
+ <view class="bind_phone" v-if="release.is_check == 0">
+ <view class="bind_content">
+ <view class="bind_txt">您还没有查看信息权限,需{{pay_price}}连盟币开通</view>
+ <button class="bind_btn" @click="topay">去开通</button>
+ </view>
+ </view>
+
<!--图标入口-->
<view class="agent-wrap m-0-20 p30 d-s-c f-w mt20 bg-white">
<view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/project/list?product_type=1')">
@@ -68,12 +85,12 @@
</view>
<text class="pt10 f26 mt20">发布需求</text>
</view>
- <view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/demandorder/index')">
+ <view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/chat/chat_list')">
<view>
<image class="agent_index_img" src="../../../static/icon/icon-zijinmingxi.png" mode=""></image>
</view>
- <text class="pt10 f26 mt20">需求订单</text>
- </view>
+ <text class="pt10 f26 mt20">私信列表</text>
+ </view>
<!--<view class="d-c-c d-c flex-1" @click="gotoPage('/pages2/salesman/qrcode/qrcode')">
@@ -118,6 +135,8 @@
/*顶部背景*/
top_background: '',
user:[],
+ setting:[],
+ pay_price:0,
};
},
onLoad(e) {
@@ -138,10 +157,39 @@
self.top_background = data.data.background;
self.release = data.data.release;
self.user = data.data.user;
+ self.setting = data.data.setting;
+ if(self.setting.check_price && self.setting.check_price!= null){
+ self.pay_price = self.setting.check_price;
+ }
self.isData = true;
self.loadding = false;
uni.hideLoading();
});
+ },
+
+ topay() {
+ let self = this;
+ let formData=self.form;
+ uni.showLoading({
+ title: '加载中'
+ });
+ self._post(
+ 'plus.release.demandIndex/topay', {
+ pay_source: self.getPlatform(),
+ formData: JSON.stringify(formData),
+ },
+ function(res) {
+ uni.hideLoading();
+ self.showSuccess(res.msg,function(){
+ self.getData();
+ });
+ }
+ );
+ },
+
+ /*切换身份*/
+ jump() {
+ this.gotoPage('/pages3/release/supplyindex/index');
},
/*申请入驻*/
@@ -365,4 +413,36 @@
.user-info .photo {
padding-right: 20rpx;
}
+
+ .bind_phone {
+ width: 100%;
+ height: 80rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ margin-bottom: 30rpx;
+ }
+
+ .bind_content {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #ffffff;
+ /* box-shadow: 0 0 6rpx 0 rgba(0, 0, 0, 0.1); */
+ border-radius: 16rpx;
+ height: 100%;
+ padding: 0 20rpx;
+ }
+
+ .bind_txt {}
+
+ .bind_btn {
+ width: 134rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ font-size: 22rpx;
+ border-radius: 25rpx;
+ text-align: center;
+ color: #FFFFFF;
+ background-color: #e2231a;
+ }
</style>
diff --git a/mobile/pages3/release/demandproject/edit.vue b/mobile/pages3/release/demandproject/edit.vue
index eb7e99e..8471df5 100644
--- a/mobile/pages3/release/demandproject/edit.vue
+++ b/mobile/pages3/release/demandproject/edit.vue
@@ -47,6 +47,14 @@
<input class="flex-1" v-model="form.detail" type="text" placeholder-class="grary" placeholder="请输入您的期望地点" />
</view>
+ <view class="textarea-box d-s-c f28">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_content" placeholder="请输入产品介绍" />
+ </view>
+
+ <view class="textarea-box d-s-c f28 mt10">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_case" placeholder="请输入产品应用案例" />
+ </view>
+
<!-- <view class="form-item border-b">
<text class="field-name">需求所在地:</text>
<input class="flex-1" name="location_address" type="text" placeholder-class="grary9" placeholder="请选择地址" v-model="short_address"
@@ -112,6 +120,8 @@
project_id:'',
image_list:[],
content:'',
+ product_content:'',
+ product_case:'',
name:'',
category_id:'',
finish_time:'请选择日期',
diff --git a/mobile/pages3/release/demandproject/release.vue b/mobile/pages3/release/demandproject/release.vue
index 0a7d4d8..1784bf8 100644
--- a/mobile/pages3/release/demandproject/release.vue
+++ b/mobile/pages3/release/demandproject/release.vue
@@ -47,6 +47,14 @@
<input class="flex-1" v-model="form.detail" type="text" placeholder-class="grary" placeholder="请输入您的期望地点" />
</view>
+ <view class="textarea-box d-s-c f28">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_content" placeholder="请输入产品介绍" />
+ </view>
+
+ <view class="textarea-box d-s-c f28 mt10">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_case" placeholder="请输入产品应用案例" />
+ </view>
+
<!-- <view class="form-item border-b">
<text class="field-name">需求所在地:</text>
<input class="flex-1" name="location_address" type="text" placeholder-class="grary9" placeholder="请选择地址" v-model="short_address"
@@ -67,6 +75,8 @@
</radio-group>
</view>
+
+
<view class="form-item border-b">
<view class="field-name">是否展示:</view>
<radio-group class="d-s-c" @change="changeShow($event,index)">
@@ -79,6 +89,11 @@
<view class="f26 color-57">否</view>
</label>
</radio-group>
+ </view>
+
+ <view class="form-item border-b">
+ <view class="field-name">支付金额:</view>
+ <view>{{pay_price}}连盟币</view>
</view>
</view>
@@ -111,6 +126,8 @@
form: {
image_list:[],
content:'',
+ product_content:'',
+ product_case:'',
name:'',
category_id:'',
finish_time:'请选择日期',
@@ -136,6 +153,8 @@
short_address:'',
show_phone:1,
Address:[],
+ setting:[],
+ pay_price:0,
};
},
onLoad(e){
@@ -189,6 +208,10 @@
uni.hideLoading();
self.loadding=false;
self.categoryList = res.data.category_list;
+ self.setting = res.data.setting;
+ if(self.setting.demand_price && self.setting.demand_price!= null){
+ self.pay_price = self.setting.demand_price;
+ }
var list = [];
list.push("请选择分类");
self.categoryList.forEach(item => {
diff --git a/mobile/pages3/release/project/detail.vue b/mobile/pages3/release/project/detail.vue
index f30e0f3..07a4574 100644
--- a/mobile/pages3/release/project/detail.vue
+++ b/mobile/pages3/release/project/detail.vue
@@ -19,14 +19,14 @@
<!--基本信息-->
<view class="bg-white p30 mb22">
<view class="product-name text-ellipsis-2">
- 标题:{{ detail.name }}
+ <span class="category">{{ detail.category.name }}</span>{{ detail.name }}
</view>
- <view class="product-describe"><text v-if="detail.product_type == 0">预算</text><text v-else>价格</text>:¥{{ detail.price }}</view>
- <view class="product-describe"><text v-if="detail.product_type == 0">期望完成时间</text><text v-else>交付时间</text>:{{ detail.finish_time }}</view>
- <view class="product-describe"><text v-if="detail.product_type == 0">期望地点</text><text v-else>服务地区</text>:{{ detail.detail }}</view>
- <view class="product-describe" v-if="detail.product_type == 0 && detail.show_phone == 1">电话:{{ user.mobile }}</view>
+ <view class="product-describe"><text v-if="detail.product_type == 0">预算</text><text v-else>价格</text>一 ¥{{ detail.price }}</view>
+ <view class="product-describe"><text v-if="detail.product_type == 0">期望完成时间</text><text v-else>交付时间</text>一 {{ detail.finish_time }}</view>
+ <view class="product-describe"><text v-if="detail.product_type == 0">期望地点</text><text v-else>服务地区</text>一 {{ detail.detail }}</view>
+ <view class="product-describe" v-if="detail.product_type == 0 && detail.show_phone == 1"><text>电话</text>一 {{ user.mobile }}</view>
<view class="product-describe" v-if="detail.tag_list.length > 0">
- 标签:<text v-for="(item, index) in detail.tag_list" :key="index">{{ item.name}};</text>
+ <text>标签</text>一 <span class="tag" v-for="(item, index) in detail.tag_list" :key="index">{{ item.name}}</span>
</view>
</view>
@@ -38,7 +38,52 @@
</view>
<view class="content-box" v-html="detail.content"></view>
</view>
+
+ <!--产品介绍-->
+ <view class="product-content">
+ <view class="p-0-30 border-b-e">
+ <view class="group-hd d-s-c"><text class="min-name f28">产品介绍</text></view>
+ </view>
+ <view class="content-box" v-html="detail.product_content"></view>
+ </view>
+
+ <!--产品案例-->
+ <view class="product-content">
+ <view class="p-0-30 border-b-e">
+ <view class="group-hd d-s-c"><text class="min-name f28">产品应用案例</text></view>
+ </view>
+ <view class="content-box" v-html="detail.product_case"></view>
+ </view>
+
+
+ <!--评论-->
+ <view class="product-comment">
+ <view class="p-0-30 d-b-c">
+ <view class="group-hd left">
+ <text class="min-name f28">评论</text>
+ </view>
+ <view class="right" @click="lookEvaluate(detail.project_id)">
+ <text class="more">查看全部</text>
+ <text class="icon iconfont icon-jiantou" style="font-size: 22rpx;color: #9A9A9A;"></text>
+ </view>
+ </view>
+ <view class="comment-list" v-if="detail.evaluate.length > 0">
+ <view class="item" v-if="index<=2" v-for="(item, index) in detail.evaluate" :key="index">
+ <view class="cmt-user">
+ <view class="left">
+ <image class="photo" :src="item.user.avatarUrl" mode="aspectFill"></image>
+ <text class="name">{{ item.user.nickName }}</text>
+ </view>
+ <text class="datetime">{{ item.create_time }}</text>
+ </view>
+ <view class="mt20 lh150 f24">{{ item.evaluate_content }}</view>
+ </view>
+ </view>
+ </view>
+
<view class="sage-bottom"></view>
+
+
</scroll-view>
<!--底部按钮-->
@@ -49,18 +94,22 @@
<text class="f22 gray3" style="height: 50rpx;line-height: 40rpx;">首页</text>
</button>
</view>
- <!-- <view class="icon-box d-c-c">
- <button class="d-c-c d-c bg-white">
+ <view class="icon-box d-c-c">
+ <button class="d-c-c d-c bg-white" @click="jump()">
<text class="icon iconfont icon-kefu2 gray3" style="height: 50rpx;line-height: 60rpx;"></text>
- <text class="f22 gray3" style="height: 50rpx;line-height: 40rpx;">联系他</text>
+ <text class="f22 gray3" style="height: 50rpx;line-height: 40rpx;">咨询</text>
</button>
- </view> -->
+ </view>
<template>
<template>
- <button class="buy" @click="onPayOrder()">创建订单</button>
+ <button class="buy" @click="onEva()">我要评论</button>
</template>
</template>
</view>
+
+
+ <!-- 评论 -->
+ <Evaluate :isEva="isEva" :project_id="detail.project_id" @close="closeEva"></Evaluate>
<!--支付选择-->
<Popup :show="isPayPopup" msg="支付方式" @hidePopup="hidePopupFunc">
@@ -97,12 +146,14 @@
<script>
import utils from '@/common/utils.js';
import Popup from '@/components/uni-popup.vue';
+ import Evaluate from './popup/evaluate';
import {
pay
} from '@/common/pay.js';
export default {
components: {
Popup,
+ Evaluate,
},
data() {
return {
@@ -135,6 +186,7 @@
pay_type: 20,
payData:[],
topay:false,
+ isEva:false,
};
},
onLoad(e) {
@@ -227,6 +279,24 @@
uni.hideLoading();
});
},
+
+ /*评论*/
+ onEva: function(e) {
+ let self = this;
+ self.isEva = true;
+ },
+
+ /*关闭评论*/
+ closeEva: function(e) {
+ let self = this;
+ self.getData();
+ self.isEva = false;
+ },
+
+ /*查看更多评论*/
+ lookEvaluate(project_id) {
+ this.gotoPage('/pages3/release/project/look-evaluate/look-evaluate?project_id=' + project_id);
+ },
/*隐藏支付方式*/
@@ -304,6 +374,14 @@
}
+ },
+
+ jump() {
+ let self = this;
+ let you_user_id = self.user.user_id;
+ let nickname = self.user.user.nickName;
+ let avatarurl = self.user.user.avatarUrl;
+ this.gotoPage('/pages3/release/chat/chat?you_user_id='+you_user_id+'&nickname='+nickname+'&avatarurl='+avatarurl);
},
@@ -417,8 +495,8 @@
}
.product-content .content-box {
- padding:5rpx 10rpx;
- font-size: 36rpx;
+ padding:5rpx 40rpx;
+ font-size: 30rpx;
}
.sage-bottom {
@@ -1020,4 +1098,17 @@
width: 108rpx;
height: 108rpx;
}
+ .tag{
+ padding:2rpx 5rpx;
+ margin-right: 5rpx;
+ border:1px solid red;
+ color:red;
+ }
+ .category{ padding:4rpx 5rpx; margin-right: 5rpx; background: red; color: #fff;}
+ .product-describe text{
+ font-size: 25rpx;
+ display: block;
+ font-weight: bold;
+ margin-bottom: 5rpx;
+ }
</style>
diff --git a/mobile/pages3/release/project/list.vue b/mobile/pages3/release/project/list.vue
index ec8cf3a..17ae22b 100644
--- a/mobile/pages3/release/project/list.vue
+++ b/mobile/pages3/release/project/list.vue
@@ -19,18 +19,23 @@
<view class="scroll_box">
<scroll-view class="scroll" scroll-x="true" upper-threshode="50">
<view :class="category_id == 0?'scroll-view-item_H active':'scroll-view-item_H'" @click="changeCategory(0)">全部</view>
+ <view :class="category_id == '-1'?'scroll-view-item_H active':'scroll-view-item_H'" @click="changeCategory('-1')">推荐</view>
<view v-for="(item,index) in category_list" :key="index" :class="category_id==item.category_id?'scroll-view-item_H active':'scroll-view-item_H'" @click="changeCategory(item.category_id)">{{item.name}}</view>
</scroll-view>
</view>
</view>
<!--列表-->
- <view class="list d-s-c f-w">
+ <!-- <view class="list d-s-c f-w">
<view class="item d-stretch" v-for="(item, index) in listData" :key="index" >
<view class="product-info d-b-c d-c" @click="gotoDetail(item)">
<view style="border-bottom: 1px solid #ccc; width: 100%; display: flex; justify-content: flex-start; align-items: center; padding-bottom: 5rpx;">
<image style="width:100rpx;height: 100rpx; border-radius: 50%; margin-right: 10rpx;" :src="item.user.avatarUrl" mode="widthFix"></image>
- {{ item.user.nickName }}
+ <view>
+ {{ item.user.nickName }}
+ <view v-if="item.grade" style="width:50rpx;height: 50rpx;"><image style="width:50rpx;height: 50rpx;" :src="item.grade.img"></image></view>
+ </view>
+
</view>
<view class="product-title f26 gray3">
{{ item.name }}
@@ -42,6 +47,24 @@
<view class="people-num price d-b-c">
<text class="gray9 f26">{{ item.create_time }}</text>
</view>
+ </view>
+ </view>
+ </view> -->
+
+ <view class="list d-s-c f-w">
+ <view class="item d-stretch" v-for="(item, index) in listData" :key="index" >
+ <view class="product-info d-s-c">
+ <view class="img" @click="gotoDetail(item)"><image :src="item.image" mode="widthFix"></image></view>
+
+ <view class="content">
+ <view class="product-title f26 gray3">
+ <view @click="gotoDetail(item)"><text class="category">{{ item.category.name }}</text>{{ item.name }}</view>
+ <view class="chat" @click="jump(item)">咨询</view>
+ </view>
+ <view class="product_content" @click="gotoDetail(item)">
+ {{ item.product_content }}
+ </view>
+ </view>
</view>
</view>
</view>
@@ -86,6 +109,7 @@
category_id:'',
product_type:0,
category_list:[],
+ is_check:0,
};
},
computed: {
@@ -156,6 +180,14 @@
self.getlist();
},
+ jump(item) {
+ let self = this;
+ let you_user_id = item.user_id;
+ let nickname = item.user.nickName;
+ let avatarurl =item.user.avatarUrl;
+ this.gotoPage('/pages3/release/chat/chat?you_user_id='+you_user_id+'&nickname='+nickname+'&avatarurl='+avatarurl);
+ },
+
/*搜索*/
gotoSearch() {
@@ -183,6 +215,7 @@
function(res) {
self.loading = false;
self.category_list = res.data.category_list;
+ self.is_check = res.data.is_check;
self.listData = res.data.list.data;
self.last_page = res.data.list.last_page;
if (res.data.list.last_page <= 1) {
@@ -198,8 +231,15 @@
/*跳转详情*/
gotoDetail(e) {
- let url = 'pages3/release/project/detail?project_id=' + e.project_id
- this.gotoPage(url);
+ if(this.is_check == 1){
+ let url = 'pages3/release/project/detail?project_id=' + e.project_id
+ this.gotoPage(url);
+ }else{
+ uni.showToast({
+ title: '请开通查看权限'
+ });
+ }
+
},
}
};
@@ -303,7 +343,7 @@
.bargain-list .list .item {
width: 100%;
- padding: 30rpx;
+ padding: 20rpx;
margin-bottom: 20rpx;
box-sizing: border-box;
border-radius: 16rpx;
@@ -324,6 +364,7 @@
flex: 1;
//padding-left: 20rpx;
overflow: hidden;
+ align-items: normal;
}
.bargain-list .product-cover .people-num {
@@ -348,7 +389,7 @@
.bargain-list .product-title {
width: 100%;
- min-height: 40rpx;
+ height: 40rpx;
line-height: 40rpx;
font-size: 32rpx;
color: #333333;
@@ -436,4 +477,46 @@
.scroll-view-item_H.active{
color: red;
}
+ .img{
+ width:160rpx;
+ height:160rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .img img{ max-width: 100%;}
+ .product-title{
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ overflow: hidden;
+ }
+ .content{
+ width:100%;
+ padding:5px;
+ }
+ .product-title .category{
+ margin-right: 10rpx;
+ padding: 2rpx 18rpx;
+ background: red;
+ color: #fff;
+ font-size: 24rpx;
+ }
+
+ .product-title .chat{
+ width:70rpx;
+ border: 1rpx solid red;
+ color: red;
+ font-size: 24rpx;
+ margin-left: 10rpx;
+ text-align: center;
+ }
+ .product_content{
+ margin-top:10px;
+ height:80rpx;
+ line-height: 40rpx;
+ font-size: 26rpx;
+ color:#ccc;
+ overflow: hidden;
+ }
</style>
diff --git a/mobile/pages3/release/project/look-evaluate/look-evaluate.vue b/mobile/pages3/release/project/look-evaluate/look-evaluate.vue
new file mode 100644
index 0000000..7c7fa03
--- /dev/null
+++ b/mobile/pages3/release/project/look-evaluate/look-evaluate.vue
@@ -0,0 +1,295 @@
+<template>
+ <view class="look-evaluate">
+ <view class="top-tabbar">
+ <view :class="state_active == -1 ? 'tab-item active' : 'tab-item'" @click="stateFunc(0)">全部({{ Total.all }})
+ </view>
+ <view :class="state_active == 10 ? 'tab-item active' : 'tab-item'" @click="stateFunc(10)">
+ <view class="d-c-c">
+ <text class="icon iconfont icon-pingjiahaoping"></text>
+ <text class="ml10 gray9">好评({{ Total.praise }})</text>
+ </view>
+ </view>
+ <view :class="state_active == 20 ? 'tab-item active' : 'tab-item'" @click="stateFunc(20)">
+ <view class="d-c-c">
+ <text class="icon iconfont icon-pingjiazhongping"></text>
+ <text class="ml10 gray9">中评({{ Total.review }})</text>
+ </view>
+ </view>
+ <view :class="state_active == 30 ? 'tab-item active' : 'tab-item'" @click="stateFunc(30)">
+ <view class="d-c-c">
+ <text class="icon iconfont icon-pingjiachaping"></text>
+ <text class="ml10 gray9">差评({{ Total.negative }})</text>
+ </view>
+ </view>
+ </view>
+
+ <!--评论列表-->
+ <scroll-view scroll-y="true" class="scroll-Y" :style="'height:' + scrollviewHigh + 'px;'" lower-threshold="50"
+ @scrolltolower="scrolltolowerFunc">
+ <view class="comment-list">
+ <view class="item" v-for="(item, index) in tableData" :key="index">
+ <view class="cmt-user">
+ <view class="left">
+ <image class="photo" :src="item.user.avatarUrl" mode="aspectFill"></image>
+ <text class="name">{{ item.user.nickName }}</text>
+ </view>
+ </view>
+ <view class="d-b-c p20">
+ <view class="d-s-c">
+ <view v-if="item.score == 10" class="d-c-c mr20">
+ <text class="icon iconfont icon-pingjiahaoping"></text>
+ <text class="ml10 gray9">好评</text>
+ </view>
+ <view v-if="item.score == 20" class="d-c-c mr20">
+ <text class="icon iconfont icon-pingjiazhongping"></text>
+ <text class="ml10 gray9">中评</text>
+ </view>
+ <view v-if="item.score == 30" class="d-c-c mr20">
+ <text class="icon iconfont icon-pingjiachaping"></text>
+ <text class="ml10 gray9">差评</text>
+ </view>
+ </view>
+ <text class="datetime gray9">{{ item.create_time }}</text>
+ </view>
+ <view class="p-0-20 f24 gray3">{{ item.evaluate_content }}</view>
+ <view class="imgs d-s-c p-0-20">
+ <view class="box" v-for="(imgs, img_num) in item.image_list" :key="img_num">
+ <image @click="preview(item.image_list,imgs.file_path)" :src="imgs.file_path" mode="aspectFill"
+ width=""></image>
+ </view>
+ </view>
+ </view>
+ <!-- 没有记录 -->
+ <view class="d-c-c p30" v-if="tableData.length==0 && !loading">
+ <view class="none-data-box">
+ <image src="/static/none.png" mode="widthFix"></image>
+ <text>亲,暂无相关记录哦</text>
+ </view>
+ </view>
+ <uni-load-more v-else :loadingType="loadingType"></uni-load-more>
+ </view>
+ </scroll-view>
+ <view v-if="isopenimg" class="popimg" @click="isopenimg=false">
+ <image :src="popImg" mode="aspectFit"></image>
+ </view>
+ </view>
+</template>
+
+<script>
+ import uniLoadMore from "@/components/uni-load-more.vue";
+ export default {
+ components: {
+ uniLoadMore
+ },
+ data() {
+ return {
+ /*手机高度*/
+ phoneHeight: 0,
+ /*可滚动视图区域高度*/
+ scrollviewHigh: 0,
+ /*选中状态*/
+ state_active: -1,
+ /*id*/
+ project_id: 0,
+ /*列表*/
+ tableData: [],
+ /*统计*/
+ Total: {
+ /*总数*/
+ all: 0,
+ /*score = 30*/
+ negative: 0,
+ /*score = 10*/
+ praise: 0,
+ /*score = 20*/
+ negative: 0,
+ review: 0
+ },
+ /*页码*/
+ page: 1,
+ list_rows: 15,
+ no_more: false,
+ loading: true,
+ /*最后一页码数*/
+ last_page: 0,
+ popImg: '',
+ isopenimg: false
+ };
+ },
+ computed: {
+ /*加载中状态*/
+ loadingType() {
+ if (this.loading) {
+ return 1;
+ } else {
+ if (this.tableData.length != 0 && this.no_more) {
+ return 2;
+ } else {
+ return 0;
+ }
+ }
+ }
+ },
+ onLoad(e) {
+ this.project_id = e.project_id;
+ },
+ mounted() {
+ this.init();
+ /*获取数据*/
+ this.getData();
+ },
+ methods: {
+ preview(list, img) {
+ // #ifdef H5
+ if (!this.isWeixin()) {
+ this.isopenimg = true;
+ this.popImg = img;
+ }else{
+ this.openImg(list, img);
+ }
+ return
+ // #endif
+ this.openImg(list, img);
+ },
+ openImg(list, img) {
+ let arr = [];
+ list.forEach((item, index) => {
+ arr.push(item.file_path)
+ })
+ uni.previewImage({
+ urls: arr,
+ current: img,
+ fail(err) {
+ this.showError(err)
+ console.log(err)
+ }
+ });
+ },
+ /*初始化*/
+ init() {
+ let self = this;
+ uni.getSystemInfo({
+ success(res) {
+ self.phoneHeight = res.windowHeight;
+ // 计算组件的高度
+ let view = uni.createSelectorQuery().select('.top-tabbar');
+ view.boundingClientRect(data => {
+ let h = self.phoneHeight - data.height;
+ self.scrollviewHigh = h;
+ }).exec();
+ }
+ });
+ },
+
+ /*获取数据*/
+ getData() {
+ let _this = this;
+ let project_id = _this.project_id;
+ _this._get(
+ 'plus.release.evaluate/lists', {
+ project_id: project_id,
+ scoreType: _this.state_active,
+ page: _this.page,
+ list_rows: _this.list_rows
+ },
+ function(res) {
+ _this.loading = false;
+ _this.Total = res.data.total;
+ _this.tableData = _this.tableData.concat(res.data.list.data);
+ _this.last_page = res.data.list.last_page;
+ if (res.data.list.last_page <= 1) {
+ _this.no_more = true;
+ }
+ }
+ );
+ },
+
+ /*可滚动视图区域到底触发*/
+ scrolltolowerFunc() {
+ let self = this;
+ self.bottomRefresh = true;
+ self.page++;
+ self.loading = true;
+ if (self.page > self.last_page) {
+ self.loading = false;
+ self.no_more = true;
+ return;
+ }
+ self.getData();
+ },
+
+ /*类别切换*/
+ stateFunc(e) {
+ let self = this;
+ if (self.state_active != e) {
+ self.tableData = [];
+ self.no_more = false;
+ self.loading = true;
+ self.state_active = e;
+ self.page = 1;
+ self.getData();
+ }
+ }
+ }
+ };
+</script>
+
+<style>
+ .look-evaluate .comment-list {
+ background: #ffffff;
+ }
+
+ .look-evaluate .comment-list .item {
+ padding-top: 30rpx;
+ padding-bottom: 30rpx;
+ border-top: none;
+ border-bottom: 1px solid #dddddd;
+ }
+
+ .look-evaluate .iconfont {
+ border-radius: 50%;
+ font-size: 40rpx;
+ text-align: center;
+ }
+
+ .look-evaluate .icon-pingjiahaoping {
+ color: #f42222;
+ }
+
+ .look-evaluate .icon-pingjiazhongping {
+ color: #f2b509;
+ }
+
+ .look-evaluate .icon-pingjiachaping {
+ color: #999999;
+ }
+
+ .look-evaluate .imgs {
+ flex-wrap: wrap;
+ }
+
+ .look-evaluate .imgs .box {
+ margin-top: 10rpx;
+ margin-right: 10rpx;
+ }
+
+ .look-evaluate .imgs .box:nth-child(3n) {
+ margin-right: 0;
+ }
+
+ .look-evaluate .imgs .box,
+ .look-evaluate .imgs .box image {
+ width: 210rpx;
+ height: 210rpx;
+ }
+
+ .popimg {
+ position: fixed;
+ width: 750rpx;
+ height: 100vh;
+ background-color: #000000;
+ top: 0;
+ left: 0;
+ z-index: 2000;
+ }
+</style>
diff --git a/mobile/pages3/release/project/popup/evaluate.vue b/mobile/pages3/release/project/popup/evaluate.vue
new file mode 100644
index 0000000..b97378b
--- /dev/null
+++ b/mobile/pages3/release/project/popup/evaluate.vue
@@ -0,0 +1,232 @@
+<template>
+ <view style="flex: 1;">
+ <uniPopup :show="isEva" type="middle" @hidePopup="hidePopupFunc">
+ <view class="ww100">
+ <view class="t-c f36 pb20">评论</view>
+ <!-- <view class="p-30-0 border-b-d9 border-t-d9 f32">
+ <view>111</view>
+ </view> -->
+
+ <!-- <view class="d-s-c p-30-0 border-b-d9 border-t-d9 f32">
+ <view class="eval">
+ 服务星级:
+ <i v-for="(itemEv,indexEv) in service" :key="indexEv" :class="itemEv?'icon iconfont icon-start':'icon iconfont icon-start1'"
+ @click="chooseServ(indexEv,index)"></i>
+ </view>
+ </view> -->
+ <view class="d-s-c p-30-0 border-b-d9 border-t-d9 f32">
+ <view class="upload-list d-s-c">
+ <view class="item" v-for="(imgs, img_num) in image_list" :key="img_num" @click="deleteImg(img_num)">
+ <image :src="imgs.file_path" mode="aspectFit"></image>
+ </view>
+ <view class="item upload-btn d-c-c d-c" @click="openUpload()" v-if="image_list.length < 9" >
+ <text class="icon iconfont icon-xiangji"></text>
+ <text class="gray9">上传图片</text>
+ </view>
+ </view>
+ </view>
+ <view class="d-s-c p-30-0 border-b-d9 border-t-d9 f32">
+ <radio-group class="d-s-c" @change="changeRadio($event,index)">
+ <label class="d-s-c make-item mr10">
+ <view><radio style="transform:scale(0.7)" color="#EE1413" :checked="score == 10" value="10" /></view>
+ <view class="f26 color-57">好评</view>
+ </label>
+ <label class="d-s-c make-item mr10">
+ <view><radio style="transform:scale(0.7)" color="#EE1413" :checked="score == 20" value="20" /></view>
+ <view class="f26 color-57">中评</view>
+ </label>
+ <label class="d-s-c make-item mr10">
+ <view><radio style="transform:scale(0.7)" color="#EE1413" :checked="score == 30" value="30" /></view>
+ <view class="f26 color-57">差评</view>
+ </label>
+ </radio-group>
+ </view>
+ <view class="d-s-c p-30-0 border-b-d9 border-t-d9 f32">
+ <textarea class="border-box" placeholder="请输入你的评语" v-model="evaluate_content"></textarea>
+ </view>
+ <button class="revise_btn" @click="revise">确定提交</button>
+ </view>
+ </uniPopup>
+
+ <!--上传图片-->
+ <Upload v-if="isUpload" @getImgs="getImgsFunc"></Upload>
+ </view>
+</template>
+
+<script>
+ import uniPopup from '@/components/uni-popup.vue';
+ import Upload from '@/components/upload/upload.vue';
+
+ export default {
+ data() {
+ return {
+ score:10,
+ server_score:0,
+ service:[false,false,false,false,false],
+ evaluate_content:'',
+ /*是否打开上传图片*/
+ isUpload: false,
+ image_list:[],
+ };
+ },
+ components: {
+ uniPopup,
+ Upload,
+ },
+ props: ['isEva', 'project_id'],
+ watch:{
+ isEva(val){
+ }
+ },
+ methods: {
+ /* 服务评分 */
+ chooseServ(n,m){
+ let self=this;
+ self.server_score =0;
+ this.service.forEach((item,index)=>{
+ if(index<=n){
+ this.service.splice(index,1,true);
+ self.server_score++;
+ }else{
+ this.service.splice(index,1,false);
+ }
+ })
+ },
+ /* 单选框 */
+ changeRadio(e, index) {
+ this.score = e.detail.value;
+ },
+ revise(){
+ let self = this;
+ if(self.evaluate_content == ''){
+ uni.showToast({
+ title: '请输入评语',
+ });
+ return false;
+ }
+ if(self.image_list.length == 0){
+ uni.showToast({
+ title: '请上传图片',
+ });
+ return false;
+ }
+ uni.showModal({
+ title: '提示',
+ content: '您确定提交吗?',
+ success: function(o) {
+ if (o.confirm) {
+ uni.showLoading({
+ title: '加载中',
+ mask: true
+ });
+ uni.showLoading({
+ title: '正在提交',
+ mask: true
+ })
+ self._post('plus.release.Evaluate/evaluate', {
+ project_id: self.project_id,
+ server_score:self.server_score,
+ score:self.score,
+ evaluate_content:self.evaluate_content,
+ image_list:JSON.stringify(self.image_list),
+ }, function(data) {
+ uni.hideLoading();
+ uni.showToast({
+ title: '操作成功',
+ duration: 2000,
+ icon: 'success'
+ });
+ setTimeout(function(){
+ self.hidePopupFunc();
+ },2000);
+ });
+ }
+ },
+ });
+ },
+ hidePopupFunc(){
+ this.$emit('close', {
+ type: 'success',
+ })
+ },
+
+ /*打开上传图片*/
+ openUpload() {
+ this.isUpload = true;
+ },
+
+ /*获取上传的图片*/
+ getImgsFunc(e) {
+ let self = this;
+ if(e&&typeof(e)!='undefined'){
+ self.image_list = self.image_list.concat(e);
+ }
+ self.isUpload = false;
+ },
+
+ /*点击图片删除*/
+ deleteImg(i,n){
+ this.loadding=true;
+ this.image_list.splice(n,1);
+ this.loadding=false;
+ },
+ }
+ };
+</script>
+
+<style scoped lang="scss">
+ .buy-checkout.vender .item .key {
+ width: 200rpx;
+ }
+
+ .pr20 {
+ padding-right: 20rpx;
+ /* padding-bottom: 40rpx; */
+ }
+ .icon-box.linkmen_add{
+ background-color: $dominant-color;
+ width: 38rpx;
+ height: 38rpx;
+ border-radius: 8rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .icon-box.linkmen_add .icon-jia{
+ color: #FFFFFF;
+ font-size: 22rpx;
+ }
+ .revise_btn{
+ background-color: #E2231A;
+ border: none;
+ margin-top: 30rpx;
+ color: #FFFFFF;
+ }
+ .t-c{
+ text-align: center;
+ }
+ .m-30-0{
+ margin: 30rpx 0;
+ }
+ .icon.icon-jiantou{
+ color: #999999;
+ font-size: 26rpx;
+ }
+ .icon.icon-zhanghumingcheng, .icon.icon-dizhi, .icon.icon-icon_xianshi-xian, .icon.icon-bangzhu {
+ color: #333;
+ font-size: 28rpx;
+ }
+ .address-defalut-wrap {
+ padding: 0;
+ }
+
+ .icon-start{
+ color: #f5a623;
+ }
+
+ .eval{
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ }
+</style>
diff --git a/mobile/pages3/release/supplyindex/index.vue b/mobile/pages3/release/supplyindex/index.vue
index 17d43d8..cd6565b 100644
--- a/mobile/pages3/release/supplyindex/index.vue
+++ b/mobile/pages3/release/supplyindex/index.vue
@@ -20,13 +20,22 @@
<view class="photo">
<image :src="user.avatarUrl" mode="aspectFill"></image>
</view>
+ <view>
<view class="user-name">
<view class="gray3 f32">{{ user.nickName }}</view>
</view>
+ <view class="gray3 d-s-c mt10">
+ <text class="f28 flex-1 mr20">连盟币:{{user.points}}</text>
+ <view @click="jump">
+ <text>[切换到需求方]</text>
+ <text class="iconfont icon-jiantou"></text>
+ </view>
+ </view>
+ </view>
</view>
</view>
- <view class="d-s-c p-30-0 top_dash">
+ <!-- <view class="d-s-c p-30-0 top_dash">
<view class="flex-1 d-c-c d-c">
<view class="redF6">
<text class="f24">¥</text>
@@ -51,8 +60,16 @@
</view>
<view class="d-c-c pt30">
<button type="primary" class="btn-gcred theme-btn flex-1" @click="gotoCash">我要提现</button>
+ </view> -->
+ </view>
+
+ <view class="bind_phone" v-if="release.is_check == 0">
+ <view class="bind_content">
+ <view class="bind_txt">您还没有查看信息权限,需{{pay_price}}连盟币开通</view>
+ <button class="bind_btn" @click="topay">去开通</button>
</view>
</view>
+
<!--图标入口-->
<view class="agent-wrap m-0-20 p30 d-s-c f-w mt20 bg-white">
<view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/project/list?product_type=0')">
@@ -67,7 +84,13 @@
</view>
<text class="pt10 f26 mt20">发布服务</text>
</view>
- <view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/supplyorder/index')">
+ <view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/chat/chat_list')">
+ <view>
+ <image class="agent_index_img" src="../../../static/icon/icon-zijinmingxi.png" mode=""></image>
+ </view>
+ <text class="pt10 f26 mt20">私信列表</text>
+ </view>
+ <!-- <view class="d-c-c d-c flex-1" @click="gotoPage('/pages3/release/supplyorder/index')">
<view>
<image class="agent_index_img" src="../../../static/icon/icon-zijinmingxi.png" mode=""></image>
</view>
@@ -78,7 +101,7 @@
<image class="agent_index_img" src="../../../static/icon/icon-zijinmingxi.png" mode=""></image>
</view>
<text class="pt10 f26 mt20">提现明细</text>
- </view>
+ </view> -->
<!-- <view class="d-c-c d-c flex-1" @click="gotoPage('/pages2/salesman/qrcode/qrcode')">
@@ -123,6 +146,8 @@
/*顶部背景*/
top_background: '',
user:[],
+ setting:[],
+ pay_price:0,
};
},
onLoad(e) {
@@ -143,10 +168,39 @@
self.top_background = data.data.background;
self.release = data.data.release;
self.user = data.data.user;
+ self.setting = data.data.setting;
+ if(self.setting.check_price && self.setting.check_price!= null){
+ self.pay_price = self.setting.check_price;
+ }
self.isData = true;
self.loadding = false;
uni.hideLoading();
});
+ },
+
+ topay() {
+ let self = this;
+ let formData=self.form;
+ uni.showLoading({
+ title: '加载中'
+ });
+ self._post(
+ 'plus.release.demandIndex/topay', {
+ pay_source: self.getPlatform(),
+ formData: JSON.stringify(formData),
+ },
+ function(res) {
+ uni.hideLoading();
+ self.showSuccess(res.msg,function(){
+ self.getData();
+ });
+ }
+ );
+ },
+
+ /*切换身份*/
+ jump() {
+ this.gotoPage('/pages3/release/demandindex/index');
},
/*申请入驻*/
@@ -370,4 +424,35 @@
.user-info .photo {
padding-right: 20rpx;
}
+ .bind_phone {
+ width: 100%;
+ height: 80rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ margin-bottom: 30rpx;
+ }
+
+ .bind_content {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #ffffff;
+ /* box-shadow: 0 0 6rpx 0 rgba(0, 0, 0, 0.1); */
+ border-radius: 16rpx;
+ height: 100%;
+ padding: 0 20rpx;
+ }
+
+ .bind_txt {}
+
+ .bind_btn {
+ width: 134rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ font-size: 22rpx;
+ border-radius: 25rpx;
+ text-align: center;
+ color: #FFFFFF;
+ background-color: #e2231a;
+ }
</style>
diff --git a/mobile/pages3/release/supplyproject/edit.vue b/mobile/pages3/release/supplyproject/edit.vue
index a5e3d4c..34c35ab 100644
--- a/mobile/pages3/release/supplyproject/edit.vue
+++ b/mobile/pages3/release/supplyproject/edit.vue
@@ -61,6 +61,14 @@
<input class="flex-1" v-model="form.detail" type="text" placeholder-class="grary" placeholder="请输入您的期望地点" />
</view>
+ <view class="textarea-box d-s-c f28">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_content" placeholder="请输入产品介绍" />
+ </view>
+
+ <view class="textarea-box d-s-c f28 mt10">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_case" placeholder="请输入产品应用案例" />
+ </view>
+
<view class="form-item border-b">
<view class="field-name">是否展示:</view>
<radio-group class="d-s-c" @change="changeShow($event,index)">
@@ -74,6 +82,7 @@
</label>
</radio-group>
</view>
+
<!-- <view class="form-item border-b">
<text class="field-name">需求所在地:</text>
@@ -113,6 +122,8 @@
image_list:[],
tag_list:[],
content:'',
+ product_content:'',
+ product_case:'',
name:'',
category_id:'',
finish_time:'请选择日期',
diff --git a/mobile/pages3/release/supplyproject/release.vue b/mobile/pages3/release/supplyproject/release.vue
index b6de1d8..ac043dc 100644
--- a/mobile/pages3/release/supplyproject/release.vue
+++ b/mobile/pages3/release/supplyproject/release.vue
@@ -60,6 +60,14 @@
<view class="field-name">服务地区:</view>
<input class="flex-1" v-model="form.detail" type="text" placeholder-class="grary" placeholder="请输入您的服务地区" />
</view>
+
+ <view class="textarea-box d-s-c f28">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_content" placeholder="请输入产品介绍" />
+ </view>
+
+ <view class="textarea-box d-s-c f28 mt10">
+ <textarea class="p10 box-s-b border flex-1" v-model="form.product_case" placeholder="请输入产品应用案例" />
+ </view>
<view class="form-item border-b">
<view class="field-name">是否展示:</view>
<radio-group class="d-s-c" @change="changeShow($event,index)">
@@ -72,6 +80,11 @@
<view class="f26 color-57">否</view>
</label>
</radio-group>
+ </view>
+
+ <view class="form-item border-b">
+ <view class="field-name">支付金额:</view>
+ <view>{{pay_price}}连盟币</view>
</view>
<!-- <view class="form-item border-b">
@@ -112,6 +125,8 @@
image_list:[],
tag_list:[],
content:'',
+ product_content:'',
+ product_case:'',
name:'',
category_id:'',
finish_time:'请选择日期',
@@ -136,6 +151,8 @@
location_address: '',
short_address:'',
Address:[],
+ setting:[],
+ pay_price:0,
};
},
onLoad(e){
@@ -190,6 +207,10 @@
self.loadding=false;
self.tagList = res.data.tag_list;
self.categoryList = res.data.category_list;
+ self.setting = res.data.setting;
+ if(self.setting.supply_price && self.setting.supply_price!= null){
+ self.pay_price = self.setting.supply_price;
+ }
var list = [];
list.push("请选择分类");
self.categoryList.forEach(item => {
diff --git a/shop_vue/src/api/plus/release.js b/shop_vue/src/api/plus/release.js
index 7d15131..7809d89 100644
--- a/shop_vue/src/api/plus/release.js
+++ b/shop_vue/src/api/plus/release.js
@@ -148,6 +148,30 @@
settlement(data, errorback) {
return request._post('/shop/plus.release.setting/settlement', data, errorback);
},
+ /*等级列表*/
+ gradelist(data, errorback) {
+ return request._post('/shop/plus.release.grade/index', data, errorback);
+ },
+ /*添加等级*/
+ addgrade(data, errorback) {
+ return request._post('/shop/plus.release.grade/add', data, errorback);
+ },
+ /*修改等级*/
+ editGrade(data, errorback) {
+ return request._post('/shop/plus.release.grade/edit', data, errorback);
+ },
+ /*删除等级*/
+ deletegrade(data, errorback) {
+ return request._post('/shop/plus.release.grade/delete', data, errorback);
+ },
+ /*评论列表*/
+ evaluate(data, errorback) {
+ return request._post('/shop/plus.release.evaluate/list', data, errorback);
+ },
+ /*删除*/
+ evaluateDel(data, errorback) {
+ return request._post('/shop/plus.release.evaluate/delete', data, errorback);
+ },
}
diff --git a/shop_vue/src/views/plus/bonus/setting/part/Basic.vue b/shop_vue/src/views/plus/bonus/setting/part/Basic.vue
index 8edf173..4e3af3d 100644
--- a/shop_vue/src/views/plus/bonus/setting/part/Basic.vue
+++ b/shop_vue/src/views/plus/bonus/setting/part/Basic.vue
@@ -74,6 +74,21 @@
<div class="tips">如开启,用户成为分红用户后同时成为分销商,不受分销插件条件影响</div>
</div>
</el-form-item>
+ <el-form-item label="下级收益补贴条件" name="second">
+ <label>直推指定等级</label>
+ <el-select v-model="form.referee_grade_ids" multiple style="width: 160px; margin-left: 10px;">
+ <el-option
+ v-for="item in userGradeList"
+ :key="item.grade_id"
+ :label="item.name"
+ :value="item.grade_id">
+ </el-option>
+ </el-select>
+ <label>直推人数</label>
+ <el-input v-model="form.referee_grade_count" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">人</span>
+ <div class="tips">直推多少用户指定会员等级后,即可享受享受下级收益补贴</div>
+ </el-form-item>
<!--提交-->
<div class="common-button-wrapper">
<el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
@@ -87,6 +102,7 @@
<script>
import PlusApi from '@/api/plus/bonus.js';
import Product from '@/components/product/Product';
+import UserApi from '@/api/user.js';
export default {
components: {
@@ -99,12 +115,15 @@
form: {
is_open: '',
limit_buy: '',
- become_agent: ''
+ become_agent: '',
+ referee_grade_ids: [],
+ referee_grade_count: ''
},
/*是否打开产品弹出层*/
isproduct: false,
/*是否正在加载*/
- loading: false
+ loading: false,
+ userGradeList:[]
};
},
props:{
@@ -116,8 +135,22 @@
if (!this.form.product_image) {
this.form.product_image = [];
}
+ // 等级id转换成数组
+ for (let i = 0; i < this.form.referee_grade_ids.length; i++) {
+ this.form.referee_grade_ids[i] = parseInt(this.form.referee_grade_ids[i]);
+ }
+ this.getUserGradeList();
},
methods: {
+ /*获取用户管理模块的等级列表*/
+ getUserGradeList() {
+ let self = this;
+ UserApi.gradelist({}, true)
+ .then(res => {
+ self.userGradeList = res.data.list.data || res.data.list;
+ })
+ .catch(error => {});
+ },
/*提交表单*/
onSubmit() {
diff --git a/shop_vue/src/views/plus/release/demand/user/User.vue b/shop_vue/src/views/plus/release/demand/user/User.vue
index 94ca061..991bad3 100644
--- a/shop_vue/src/views/plus/release/demand/user/User.vue
+++ b/shop_vue/src/views/plus/release/demand/user/User.vue
@@ -25,11 +25,17 @@
<el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
<el-table-column prop="mobile" label="手机号"></el-table-column>
<!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="" label="会员等级">
+ <template slot-scope="scope">
+ <span v-if="scope.row.grade_id == 0">无等级</span>
+ <span v-else>{{ scope.row.grade.name }}</span>
+ </template>
+ </el-table-column>
<el-table-column prop="create_time" label="成为时间" width="140"></el-table-column>
<el-table-column fixed="right" label="操作" width="160">
<template slot-scope="scope">
<div>
- <el-button @click="saleClick(scope.row)" type="text" size="small">需求订单</el-button>
+ <!-- <el-button @click="saleClick(scope.row)" type="text" size="small">需求订单</el-button> -->
<el-button @click="EditClick(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="delClick(scope.row)" type="text" size="small">删除</el-button>
</div>
@@ -53,7 +59,7 @@
</div>
<!--编辑-->
- <Edit :open_edit="open_edit" :userModel="userModel" @close="closeEditFunc"></Edit>
+ <Edit :open_edit="open_edit" :userModel="userModel" :gradeList="gradeList" @close="closeEditFunc"></Edit>
</div>
</template>
@@ -88,6 +94,8 @@
userModel:{},
/*是否打开修改*/
open_edit:false,
+ /*等级*/
+ gradeList: [],
};
},
created() {
@@ -117,6 +125,7 @@
self.loading = false;
self.tableData = data.data.list.data;
self.totalDataNumber = data.data.list.total;
+ self.gradeList = data.data.grade;
})
.catch(error => {
self.loading = false;
diff --git a/shop_vue/src/views/plus/release/demand/user/dialog/Edit.vue b/shop_vue/src/views/plus/release/demand/user/dialog/Edit.vue
index 70a35ca..7ec11cd 100644
--- a/shop_vue/src/views/plus/release/demand/user/dialog/Edit.vue
+++ b/shop_vue/src/views/plus/release/demand/user/dialog/Edit.vue
@@ -1,7 +1,6 @@
<template>
<!--
作者:yj
- 时间:2025-11-9
-->
<el-dialog title="编辑" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="60%">
<el-form :model="formData">
@@ -16,6 +15,11 @@
</el-form-item>
<el-form-item label="手机号" :label-width="formLabelWidth">
<el-input type="text" v-model="formData.mobile" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级" :label-width="formLabelWidth">
+ <el-select v-model="formData.grade_id" placeholder="-请选择等级-">
+ <el-option v-for="(item,index) in gradeList" :key="index" :label="item.name" :value="item.grade_id"></el-option>
+ </el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -39,10 +43,7 @@
formData: {},
};
},
- props: {
- open_edit: Boolean,
- userModel: Object
- },
+ props: ['open_edit','userModel','gradeList'],
watch: {
open_edit: function(n, o) {
if (n != o) {
@@ -64,6 +65,7 @@
params.user_id= this.formData.user_id;
params.real_name=this.formData.real_name;
params.mobile=this.formData.mobile;
+ params.grade_id=this.formData.grade_id;
PlusApi.demandUserEdit(params, true)
.then(data => {
self.$message({
diff --git a/shop_vue/src/views/plus/release/demandproject/index.vue b/shop_vue/src/views/plus/release/demandproject/index.vue
index bc802d1..e2b6559 100644
--- a/shop_vue/src/views/plus/release/demandproject/index.vue
+++ b/shop_vue/src/views/plus/release/demandproject/index.vue
@@ -26,6 +26,12 @@
<div class="table-wrap">
<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
<el-table-column prop="project_id" label="ID" width="100"></el-table-column>
+ <el-table-column prop="nickName" label="发布用户"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像">
+ <template slot-scope="scope">
+ <img :src="scope.row.user.avatarUrl" width="30px" height="30px" />
+ </template>
+ </el-table-column>
<el-table-column prop="name" label="标题"></el-table-column>
<el-table-column prop="category.name" label="分类" width="200"></el-table-column>
<el-table-column prop="price" label="预算" width="200"></el-table-column>
@@ -36,10 +42,11 @@
<span v-if="scope.row.status == 2" class="green">已驳回</span>
</template>
</el-table-column>
- <el-table-column fixed="right" label="操作" width="150">
+ <el-table-column fixed="right" label="操作" width="200">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" @click="shClick(scope.row)" type="text" size="small">审核</el-button>
<el-button @click="editClick(scope.row)" type="text" size="small" >详情</el-button>
+ <el-button @click="evaluateClick(scope.row)" type="text" size="small" >评论列表</el-button>
<el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
@@ -140,6 +147,17 @@
this.getTableList();
},
+ evaluateClick(item) {
+ let self = this;
+ let params = item.project_id;
+ this.$router.push({
+ path: '/plus/release/evaluate/list',
+ query: {
+ project_id: params
+ }
+ });
+ },
+
/*打开编辑*/
editClick(item) {
this.userModel = deepClone(item);
diff --git a/shop_vue/src/views/plus/release/evaluate/list.vue b/shop_vue/src/views/plus/release/evaluate/list.vue
new file mode 100644
index 0000000..740a441
--- /dev/null
+++ b/shop_vue/src/views/plus/release/evaluate/list.vue
@@ -0,0 +1,174 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <!--搜索表单-->
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline">
+ <!-- <el-form-item label="类目">
+ <el-select size="small" v-model="searchForm.category_id" placeholder="所有分类">
+ <el-option label="全部" value="0"></el-option>
+ <el-option v-for="(item, index) in categoryList" :key="index" :label="item.name" :value="item.category_id">
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+ <el-form-item label="用户id">
+ <el-input size="small" v-model="searchForm.user_id" placeholder="请输入用户id"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
+ <el-button size="small" type="info" @click="cancelFunc">返回上一页</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="id" label="ID" width="100"></el-table-column>
+ <el-table-column prop="user.nickName" label="评论用户" width="200"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="100">
+ <template slot-scope="scope">
+ <img :src="scope.row.user.avatarUrl" width="30px" height="30px" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="score_txt" label="评分" width="100"></el-table-column>
+ <el-table-column prop="status" label="图片" width="200">
+ <template slot-scope="scope">
+ <a style="margin-right:5px;" v-for="(item, index) in scope.row.image_list" target="_blank" :href="item.file_path"><img :src="item.file_path" width="30px" height="30px" /></a>
+ </template>
+ </el-table-column>
+ <el-table-column prop="evaluate_content" label="评语"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="200">
+ <template slot-scope="scope">
+ <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
+ :current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"></el-pagination>
+ </div>
+
+ </div>
+
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*一页多少条*/
+ pageSize: 10,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*列表数据*/
+ tableData: [],
+ /*横向表单数据模型*/
+ /*搜索参数*/
+ searchForm: {
+ user_id: '',
+ category_id: ''
+ },
+ project_id:''
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.loading = true;
+ self.curPage = val;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = self.searchForm;
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ Params.project_id = self.$route.query.project_id;;
+ PlusApi.evaluate(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+
+ });
+ },
+ /*搜索查询*/
+ onSubmit() {
+ this.curPage = 1;
+ this.getTableList();
+ },
+
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+ /*删除*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.evaluateDel({
+ id: row.id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/shop_vue/src/views/plus/release/grade/index.vue b/shop_vue/src/views/plus/release/grade/index.vue
new file mode 100644
index 0000000..6ba8213
--- /dev/null
+++ b/shop_vue/src/views/plus/release/grade/index.vue
@@ -0,0 +1,32 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <div class="common-seach-wrap">
+ <el-tabs v-model="activeName">
+ <el-tab-pane label="等级列表" name="list"></el-tab-pane>
+ </el-tabs>
+
+ <!--设置-->
+ <List v-if="activeName == 'list'"></List>
+
+ </div>
+</template>
+<script>
+import List from './part/list';
+export default {
+ components: {
+ List,
+ },
+ data() {
+ return {
+ activeName: 'list'
+ };
+ },
+ methods: {}
+};
+</script>
+
+<style>
+
+</style>
diff --git a/shop_vue/src/views/plus/release/grade/part/Add.vue b/shop_vue/src/views/plus/release/grade/part/Add.vue
new file mode 100644
index 0000000..637ba6c
--- /dev/null
+++ b/shop_vue/src/views/plus/release/grade/part/Add.vue
@@ -0,0 +1,136 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <el-dialog title="添加等级" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="等级名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: '请输入等级名称'}]">
+ <el-input v-model="form.name" placeholder="请输入等级名称"></el-input>
+ </el-form-item>
+ <el-form-item label="等级图标" :label-width="formLabelWidth" prop="img" :rules="[{required: true,message: ' '}]">
+ <el-row>
+ <el-button icon="el-icon-picture-outline" @click="openUpload('img')">选择图片</el-button>
+ <div v-if="form.img!=''" class="img">
+ <img :src="form.img" width="100" height="100" />
+ </div>
+ </el-row>
+ </el-form-item>
+ <el-form-item label="等级权重" :label-width="formLabelWidth" prop="weight" :rules="[{required: true,message: '请输入等级权重'}]">
+ <el-input v-model="form.weight" type="number" placeholder="请输入等级权重"></el-input>
+ <div class="gray9">权重越大,等级越高</div>
+ </el-form-item>
+ <el-form-item label="升级条件" :label-width="formLabelWidth">
+ <div class="gray9">0或不填均无法升级到该等级</div>
+ <div class="d-s-c mt16">
+ <span>累计好评达</span>
+ <el-input v-model="form.upgrade_num" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">条</span>
+ </div>
+ </el-form-item>
+ </el-form>
+
+ <!--上传图片组件-->
+ <Upload v-if="isupload" :isupload="isupload" :type="type" @returnImgs="returnImgsFunc">上传图片</Upload>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="addGrade()" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Upload from '@/components/file/Upload';
+ export default {
+ components: {
+ /*上传组件*/
+ Upload,
+ },
+ data() {
+ return {
+ form: {
+ /*昵称*/
+ name: '',
+ /*累计满*/
+ upgrade_num:0,
+ /*等级权重*/
+ weight: 100,
+ img:'',
+ },
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ /*是否上传图片*/
+ isupload: false,
+ };
+ },
+ props: ['open_add'],
+ created() {
+ this.dialogVisible = this.open_add;
+ },
+ methods: {
+
+ /*添加等级*/
+ addGrade() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.addgrade(params, true).then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+ }
+ });
+ },
+ /*上传*/
+ openUpload(e) {
+ this.type = e;
+ this.isupload = true;
+ },
+ /*获取图片*/
+ returnImgsFunc(e) {
+ if (e != null && e.length > 0) {
+ if (this.type == 'img') {
+ this.form.img = e[0].file_path;
+ }
+ }
+ this.isupload = false;
+ },
+ /*取消*/
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/shop_vue/src/views/plus/release/grade/part/Edit.vue b/shop_vue/src/views/plus/release/grade/part/Edit.vue
new file mode 100644
index 0000000..3dc7179
--- /dev/null
+++ b/shop_vue/src/views/plus/release/grade/part/Edit.vue
@@ -0,0 +1,131 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <el-dialog title="编辑等级" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="等级名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级图标" :label-width="formLabelWidth" prop="img" :rules="[{required: true,message: ' '}]">
+ <el-row>
+ <el-button icon="el-icon-picture-outline" @click="openUpload('img')">选择图片</el-button>
+ <div v-if="form.img!='' && form.img!=null" class="img">
+ <img :src="form.img" width="100" height="100" />
+ </div>
+ </el-row>
+ </el-form-item>
+ <el-form-item label="等级权重" :label-width="formLabelWidth" prop="weight" :rules="[{required: true,message: '请输入等级权重'}]">
+ <el-input v-model="form.weight" type="number" placeholder="请输入等级权重"></el-input>
+ <div class="gray9">权重越大,等级越高</div>
+ </el-form-item>
+ <el-form-item label="升级条件" :label-width="formLabelWidth">
+ <div class="gray9">0或不填均无法升级到该等级</div>
+ <div class="d-s-c mt16">
+ <span>累计好评达</span>
+ <el-input v-model="form.upgrade_num" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">条</span>
+ </div>
+ </el-form-item>
+ </el-form>
+
+ <!--上传图片组件-->
+ <Upload v-if="isupload" :isupload="isupload" :type="type" @returnImgs="returnImgsFunc">上传图片</Upload>
+
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editGrade" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Upload from '@/components/file/Upload';
+ export default {
+ components: {
+ /*上传组件*/
+ Upload,
+ },
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ /*是否上传图片*/
+ isupload: false,
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ },
+ methods: {
+ /*修改用户*/
+ editGrade() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.editGrade(params, true)
+ .then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: '恭喜你,等级修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+
+ }
+ });
+ },
+ /*上传*/
+ openUpload(e) {
+ this.type = e;
+ this.isupload = true;
+ },
+ /*获取图片*/
+ returnImgsFunc(e) {
+ if (e != null && e.length > 0) {
+ if (this.type == 'img') {
+ this.form.img = e[0].file_path;
+ }
+ }
+ this.isupload = false;
+ },
+ /*取消*/
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/shop_vue/src/views/plus/release/grade/part/list.vue b/shop_vue/src/views/plus/release/grade/part/list.vue
new file mode 100644
index 0000000..83b4880
--- /dev/null
+++ b/shop_vue/src/views/plus/release/grade/part/list.vue
@@ -0,0 +1,189 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <div class="user">
+ <!--添加等级-->
+ <div class="common-level-rail">
+ <el-button size="small" type="primary" @click="addClick" icon="el-icon-plus" v-auth="'/plus/release/grade/add'">添加等级</el-button>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="name" label="等级名称" width="300"></el-table-column>
+ <el-table-column prop="weight" label="权重"></el-table-column>
+ <el-table-column prop="upgrade_num" label="好评数量"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="90">
+ <template slot-scope="scope">
+ <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/grade/edit'" >编辑</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small" v-auth="'/plus/release/grade/delete'">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background :current-page="curPage"
+ :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber">
+ </el-pagination>
+ </div>
+ </div>
+
+ <!--添加-->
+ <Add v-if="open_add" :open_add="open_add" @closeDialog="closeDialogFunc($event, 'add')"></Add>
+
+ <!--编辑-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './Edit.vue';
+ import Add from './Add.vue';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ Add
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 15,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*横向表单数据模型*/
+ formInline: {
+ user: '',
+ },
+ /*是否打开添加弹窗*/
+ open_add: false,
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ created() {
+
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+
+ /*换行*/
+ keepTextStyle(val){
+ let str=val.replace(/(\\r\\n)/g,'<br/>');
+ return str;
+ },
+
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ PlusApi.gradelist(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total
+ })
+ .catch(error => {
+
+ });
+ },
+
+ /*打开添加*/
+ addClick() {
+ this.open_add = true;
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.userModel = deepClone(item);
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ },
+
+ /*删除用户*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.deletegrade({
+ grade_id: row.grade_id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/shop_vue/src/views/plus/release/index.vue b/shop_vue/src/views/plus/release/index.vue
index 851590c..942e551 100644
--- a/shop_vue/src/views/plus/release/index.vue
+++ b/shop_vue/src/views/plus/release/index.vue
@@ -14,6 +14,7 @@
<Tag v-if="activeName == 'tag'"></Tag>
<Cash v-if="activeName == 'cash'"></Cash>
<Setting v-if="activeName == 'setting'"></Setting>
+ <Grade v-if="activeName == 'grade'"></Grade>
</div>
</template>
<script>
@@ -30,6 +31,7 @@
import Tag from './tag/index';
import Cash from './cash/Cash';
import Setting from './setting/Setting';
+import Grade from './grade/index';
export default {
@@ -45,6 +47,7 @@
Tag,
Cash,
Setting,
+ Grade,
},
data() {
return {
@@ -86,10 +89,15 @@
value: '供应发布',
path:'/plus/release/supplyproject/index'
},
+ // {
+ // key: 'order',
+ // value: '用户订单',
+ // path:'/plus/release/order/Order'
+ // },
{
- key: 'order',
- value: '用户订单',
- path:'/plus/release/order/Order'
+ key: 'grade',
+ value: '信誉等级',
+ path:'/plus/release/grade/index'
},
{
key: 'category',
@@ -101,11 +109,11 @@
value: '标签列表',
path:'/plus/release/tag/index'
},
- {
- key: 'cash',
- value: '提现列表',
- path:'/plus/release/cash/Cash'
- },
+ // {
+ // key: 'cash',
+ // value: '提现列表',
+ // path:'/plus/release/cash/Cash'
+ // },
{
key: 'setting',
value: '发布设置',
diff --git a/shop_vue/src/views/plus/release/setting/Setting.vue b/shop_vue/src/views/plus/release/setting/Setting.vue
index 5d85a75..4c861b6 100644
--- a/shop_vue/src/views/plus/release/setting/Setting.vue
+++ b/shop_vue/src/views/plus/release/setting/Setting.vue
@@ -1,7 +1,7 @@
<template>
<div v-loading="loading">
<el-tabs size="small" v-model="activeName" type="card" @tab-click="handleClick">
- <el-tab-pane label="结算" name="settlement"></el-tab-pane>
+ <el-tab-pane label="设置" name="settlement"></el-tab-pane>
</el-tabs>
<!--结算-->
diff --git a/shop_vue/src/views/plus/release/setting/part/Settlement.vue b/shop_vue/src/views/plus/release/setting/part/Settlement.vue
index 71d38fe..55a873f 100644
--- a/shop_vue/src/views/plus/release/setting/part/Settlement.vue
+++ b/shop_vue/src/views/plus/release/setting/part/Settlement.vue
@@ -7,27 +7,25 @@
<!--form表单-->
<el-form size="small" ref="form" :model="form" label-width="200px">
- <el-form-item label="提现方式">
- <el-checkbox-group v-model="form.pay_type">
- <el-checkbox v-for="(item,index) in list" :label="item.id" :key="index">{{item.name}}</el-checkbox>
- </el-checkbox-group>
- <div class="tips">注:如使用微信支付,则需申请微信支付企业付款到零钱功能</div>
- </el-form-item>
- <el-form-item label="订单抽成" prop="order_rate" :rules="[{required: true,message: ' '}]">
- <el-input v-model="form.order_rate" type="number" class="max-w460">
- <template slot="append">%</template>
+ <el-form-item label="供应方发布消耗" prop="supply_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.supply_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
</el-input>
</el-form-item>
- <el-form-item label="佣金提现手续费" prop="fee_rate" :rules="[{required: true,message: ' '}]">
- <el-input v-model="form.fee_rate" type="number" class="max-w460">
- <template slot="append">%</template>
+ <el-form-item label="需求方发布消耗" prop="demand_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.demand_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
</el-input>
</el-form-item>
- <el-form-item label="最低提现额度" prop="min_money" :rules="[{required: true,message: ' '}]">
- <el-input v-model="form.min_money" type="number" class="max-w460"></el-input>
+ <el-form-item label="开通查看信息权限" prop="check_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.check_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
</el-form-item>
- <el-form-item label="提现说明">
- <el-input v-model="form.explain" type="textarea" rows="5" class="max-w460"></el-input>
+ <el-form-item label="评论奖励" prop="eve_money" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.eve_money" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
</el-form-item>
diff --git "a/shop_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue" "b/shop_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue"
new file mode 100644
index 0000000..71d38fe
--- /dev/null
+++ "b/shop_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue"
@@ -0,0 +1,104 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="mt30">
+
+ <!--form表单-->
+ <el-form size="small" ref="form" :model="form" label-width="200px">
+
+ <el-form-item label="提现方式">
+ <el-checkbox-group v-model="form.pay_type">
+ <el-checkbox v-for="(item,index) in list" :label="item.id" :key="index">{{item.name}}</el-checkbox>
+ </el-checkbox-group>
+ <div class="tips">注:如使用微信支付,则需申请微信支付企业付款到零钱功能</div>
+ </el-form-item>
+ <el-form-item label="订单抽成" prop="order_rate" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.order_rate" type="number" class="max-w460">
+ <template slot="append">%</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="佣金提现手续费" prop="fee_rate" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.fee_rate" type="number" class="max-w460">
+ <template slot="append">%</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="最低提现额度" prop="min_money" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.min_money" type="number" class="max-w460"></el-input>
+ </el-form-item>
+ <el-form-item label="提现说明">
+ <el-input v-model="form.explain" type="textarea" rows="5" class="max-w460"></el-input>
+ </el-form-item>
+
+
+ <!--提交-->
+ <div class="common-button-wrapper">
+ <el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
+ </div>
+ </el-form>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+
+ export default {
+ data() {
+ return {
+ /*form表单数据*/
+ form: {
+ pay_type: [
+ 10
+ ],
+ explain:'',
+ },
+ list: [],
+ selectlist: [
+ 10
+ ],
+ loading: false,
+ };
+ },
+ props: {
+ settingData: Object
+ },
+ created() {
+ this.form=this.settingData.data.settlement.values;
+ this.list = this.settingData.pay_type;
+ },
+
+ methods: {
+
+ /*提交表单*/
+ onSubmit() {
+ let self = this;
+ let params = self.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.loading = true;
+ PlusApi.settlement({
+ form: params
+ }, true)
+ .then(data => {
+ self.loading = false;
+ self.$message({
+ message: '恭喜你,设置成功',
+ type: 'success'
+ });
+
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ }
+ });
+ },
+
+ }
+
+ };
+</script>
+
+<style>
+
+</style>
diff --git a/shop_vue/src/views/plus/release/supply/user/User.vue b/shop_vue/src/views/plus/release/supply/user/User.vue
index b542076..f426960 100644
--- a/shop_vue/src/views/plus/release/supply/user/User.vue
+++ b/shop_vue/src/views/plus/release/supply/user/User.vue
@@ -25,11 +25,17 @@
<el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
<el-table-column prop="mobile" label="手机号"></el-table-column>
<!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="" label="会员等级">
+ <template slot-scope="scope">
+ <span v-if="scope.row.grade_id == 0">无等级</span>
+ <span v-else>{{ scope.row.grade.name }}</span>
+ </template>
+ </el-table-column>
<el-table-column prop="create_time" label="成为时间" width="140"></el-table-column>
<el-table-column fixed="right" label="操作" width="160">
<template slot-scope="scope">
<div>
- <el-button @click="saleClick(scope.row)" type="text" size="small">供应订单</el-button>
+ <!-- <el-button @click="saleClick(scope.row)" type="text" size="small">供应订单</el-button> -->
<el-button @click="EditClick(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="delClick(scope.row)" type="text" size="small">删除</el-button>
</div>
@@ -53,7 +59,7 @@
</div>
<!--编辑-->
- <Edit :open_edit="open_edit" :userModel="userModel" @close="closeEditFunc"></Edit>
+ <Edit :open_edit="open_edit" :userModel="userModel" :gradeList="gradeList" @close="closeEditFunc"></Edit>
</div>
</template>
@@ -88,6 +94,8 @@
userModel:{},
/*是否打开修改*/
open_edit:false,
+ /*等级*/
+ gradeList: [],
};
},
created() {
@@ -117,6 +125,7 @@
self.loading = false;
self.tableData = data.data.list.data;
self.totalDataNumber = data.data.list.total;
+ self.gradeList = data.data.grade;
})
.catch(error => {
self.loading = false;
diff --git a/shop_vue/src/views/plus/release/supply/user/dialog/Edit.vue b/shop_vue/src/views/plus/release/supply/user/dialog/Edit.vue
index d99c6f7..7541eb9 100644
--- a/shop_vue/src/views/plus/release/supply/user/dialog/Edit.vue
+++ b/shop_vue/src/views/plus/release/supply/user/dialog/Edit.vue
@@ -1,8 +1,6 @@
<template>
<!--
作者:yj
- 时间:2023-04-11
- 描述:售后维修-维修师傅-编辑
-->
<el-dialog title="编辑" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="60%">
<el-form :model="formData">
@@ -17,6 +15,11 @@
</el-form-item>
<el-form-item label="手机号" :label-width="formLabelWidth">
<el-input type="text" v-model="formData.mobile" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级" :label-width="formLabelWidth">
+ <el-select v-model="formData.grade_id" placeholder="-请选择等级-">
+ <el-option v-for="(item,index) in gradeList" :key="index" :label="item.name" :value="item.grade_id"></el-option>
+ </el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -40,10 +43,7 @@
formData: {},
};
},
- props: {
- open_edit: Boolean,
- userModel: Object
- },
+ props: ['open_edit','userModel','gradeList'],
watch: {
open_edit: function(n, o) {
if (n != o) {
@@ -65,6 +65,7 @@
params.user_id= this.formData.user_id;
params.real_name=this.formData.real_name;
params.mobile=this.formData.mobile;
+ params.grade_id=this.formData.grade_id;
PlusApi.supplyUserEdit(params, true)
.then(data => {
self.$message({
diff --git a/shop_vue/src/views/plus/release/supplyproject/index.vue b/shop_vue/src/views/plus/release/supplyproject/index.vue
index e269472..859c674 100644
--- a/shop_vue/src/views/plus/release/supplyproject/index.vue
+++ b/shop_vue/src/views/plus/release/supplyproject/index.vue
@@ -36,10 +36,11 @@
<span v-if="scope.row.status == 2" class="green">已驳回</span>
</template>
</el-table-column>
- <el-table-column fixed="right" label="操作" width="150">
+ <el-table-column fixed="right" label="操作" width="200">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" @click="shClick(scope.row)" type="text" size="small">审核</el-button>
<el-button @click="editClick(scope.row)" type="text" size="small" >详情</el-button>
+ <el-button @click="evaluateClick(scope.row)" type="text" size="small" >评论列表</el-button>
<el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
@@ -118,6 +119,17 @@
this.getTableList();
},
+ evaluateClick(item) {
+ let self = this;
+ let params = item.project_id;
+ this.$router.push({
+ path: '/plus/release/evaluate/list',
+ query: {
+ project_id: params
+ }
+ });
+ },
+
/*获取列表*/
getTableList() {
diff --git a/shop_vue/src/views/plus/vip/setting/part/Basic.vue b/shop_vue/src/views/plus/vip/setting/part/Basic.vue
index 6e2857c..4e40090 100644
--- a/shop_vue/src/views/plus/vip/setting/part/Basic.vue
+++ b/shop_vue/src/views/plus/vip/setting/part/Basic.vue
@@ -53,7 +53,7 @@
<div class="tips">用户直推指定数量的用户后,即可享受平台佣金</div>
</el-form-item>
- <el-form-item label="见点奖条件" name="second">
+ <el-form-item label="复购专区奖条件" name="second">
<label>推荐VIP会员人数</label>
<el-input v-model="form.viewpoint_buy_count" type="number" class="max-w460">
<template slot="append">人</template>
@@ -62,7 +62,22 @@
<el-input v-model="form.repurchase_consumption" type="number" class="max-w460">
<template slot="append">元</template>
</el-input>
- <div class="tips">用户满足条件后,即可享受见点奖</div>
+ <div class="tips">用户满足条件后,即可享复购专区奖</div>
+ </el-form-item>
+ <el-form-item label="下级收益补贴条件" name="second">
+ <label>直推指定等级</label>
+ <el-select v-model="form.referee_grade_ids" multiple style="width: 160px; margin-left: 10px;">
+ <el-option
+ v-for="item in userGradeList"
+ :key="item.grade_id"
+ :label="item.name"
+ :value="item.grade_id">
+ </el-option>
+ </el-select>
+ <label>直推人数</label>
+ <el-input v-model="form.referee_grade_count" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">人</span>
+ <div class="tips">直推多少用户指定会员等级后,即可享受享受下级收益补贴</div>
</el-form-item>
<!--提交-->
<div class="common-button-wrapper">
@@ -77,6 +92,7 @@
<script>
import PlusApi from '@/api/plus/vip.js';
import Product from '@/components/product/Product';
+import UserApi from '@/api/user.js';
export default {
components: {
@@ -95,6 +111,7 @@
pjaward: '0',
pjaward_level: '1'
},
+ userGradeList:[],
/*是否打开产品弹出层*/
isproduct: false,
/*是否正在加载*/
@@ -106,9 +123,23 @@
},
created() {
this.form = this.settingData.data.basic.values;
- console.log(this.form)
+ console.log(this.form.referee_grade_ids);
+ // 等级id转换成数组
+ for (let i = 0; i < this.form.referee_grade_ids.length; i++) {
+ this.form.referee_grade_ids[i] = parseInt(this.form.referee_grade_ids[i]);
+ }
+ this.getUserGradeList();
},
methods: {
+ /*获取用户管理模块的等级列表*/
+ getUserGradeList() {
+ let self = this;
+ UserApi.gradelist({}, true)
+ .then(res => {
+ self.userGradeList = res.data.list.data || res.data.list;
+ })
+ .catch(error => {});
+ },
/*提交表单*/
onSubmit() {
let self = this;
diff --git a/shop_vue/src/views/plus/vip/user/User.vue b/shop_vue/src/views/plus/vip/user/User.vue
index 336588e..6ea1935 100644
--- a/shop_vue/src/views/plus/vip/user/User.vue
+++ b/shop_vue/src/views/plus/vip/user/User.vue
@@ -50,6 +50,7 @@
<el-table-column prop="create_time" label="成为时间" width="140"> </el-table-column>
<el-table-column fixed="right" label="操作" width="120">
<template slot-scope="scope">
+ <el-button @click="openSubUser(scope.row)" type="text" size="small" >下级用户</el-button>
<el-button @click="detailedClick(scope.row)" type="text" size="small">提现明细</el-button>
<el-button @click="editClick(scope.row)" type="text" size="small">修改</el-button>
</template>
@@ -72,12 +73,15 @@
<!--编辑用户-->
<Edit :open_edit="open_edit" :userModel="userModel" @close="closeEditFunc"></Edit>
+ <!--查看下级用户-->
+ <SubUser :open_dialog="open_dialog" :userModel="userModel" @close="closeFunc"></SubUser>
</div>
</template>
<script>
import vipApi from '@/api/plus/vip.js';
import Edit from './dialog/Edit';
+import SubUser from './dialog/SubUser.vue';
export default {
data() {
@@ -92,11 +96,13 @@
pageSize: 10,
/*是否打开编辑*/
open_edit: false,
+ open_dialog: false,
/*当前编辑的用户模型*/
userModel: {}
};
},
components: {
+ SubUser,
Edit
},
created() {
@@ -143,6 +149,16 @@
}
});
},
+ /*打开下级用户弹窗*/
+ openSubUser(e){
+ this.userModel=e;
+ this.open_dialog=true;
+ },
+
+ /*关闭下级用户弹窗*/
+ closeFunc(){
+ this.open_dialog=false;
+ },
/*修改点击*/
editClick(item) {
diff --git a/shop_vue/src/views/plus/vip/user/dialog/SubUser.vue b/shop_vue/src/views/plus/vip/user/dialog/SubUser.vue
new file mode 100644
index 0000000..72834e5
--- /dev/null
+++ b/shop_vue/src/views/plus/vip/user/dialog/SubUser.vue
@@ -0,0 +1,136 @@
+<template>
+ <!--
+ 作者:luoyiming
+ 时间:2020-06-01
+ 描述:插件中心-分销-分销商用户-查看下级用户
+ -->
+ <div>
+ <el-dialog title="下级用户" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="true" :close-on-press-escape="false">
+ <el-radio-group v-model="level" size="small" @change="changFunc">
+ <el-radio-button label="1">一级</el-radio-button>
+ <el-radio-button label="2">二级</el-radio-button>
+ <el-radio-button label="3">三级</el-radio-button>
+ </el-radio-group>
+
+ <!--table-->
+ <div class="mt16">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.user.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="user.nickName" label=" 微信昵称"></el-table-column>
+ <el-table-column prop="user.grade.name" label=" 用户等级"></el-table-column>
+ <el-table-column prop="user.mobile" label="手机号"></el-table-column>
+ <el-table-column prop="create_time" label="加入时间"></el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus.js';
+export default {
+ data() {
+ return {
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在加载*/
+ loading:true,
+ /*当前第几级*/
+ level: '1',
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1
+ };
+ },
+ props: {
+ open_dialog: Boolean,
+ userModel:Object
+ },
+ watch: {
+ open_dialog: function(n, o) {
+ if (n != o) {
+ this.dialogVisible = this.open_dialog;
+ if(n){
+ this.getData();
+ }
+ }
+ }
+ },
+ created() {
+
+ },
+ methods: {
+
+ /*切换等级*/
+ changFunc(e){
+ this.getData();
+ },
+
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ Params.user_id=self.userModel.user_id;
+ Params.level=self.level;
+ PlusApi.agentUserFans(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ })
+ .catch(error => {});
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getData();
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ this.$emit('close', {});
+ }
+ }
+};
+</script>
+
+<style scoped>
+.el-dialog__body {
+ padding: 10px 20px;
+}
+</style>
diff --git a/shop_vue/src/views/supplier/supplier/add.vue b/shop_vue/src/views/supplier/supplier/add.vue
index 9be50da..eb65dd5 100644
--- a/shop_vue/src/views/supplier/supplier/add.vue
+++ b/shop_vue/src/views/supplier/supplier/add.vue
@@ -67,6 +67,12 @@
</div>
<div class="tips">如设置了是,则该商户的订单按该商户后台设置的支付信息来收款</div>
</el-form-item>
+ <el-form-item label="供需权限">
+ <el-radio-group v-model="form.supplier.is_release">
+ <el-radio :label="0">否</el-radio>
+ <el-radio :label="1">是</el-radio>
+ </el-radio-group>
+ </el-form-item>
<el-form-item label="是否是新人专区" :label-width="formLabelWidth">
<el-radio-group v-model="form.supplier.is_newcomer">
<el-radio :label="1">是</el-radio>
@@ -193,8 +199,9 @@
commission_rate:0,
area_id:'',
is_independent:0,
- is_newcomer:0
- ,is_repurchase:0
+ is_release:0,
+ is_newcomer:0,
+ is_repurchase:0
},
},
logo_file_path: '',
diff --git a/shop_vue/src/views/supplier/supplier/edit.vue b/shop_vue/src/views/supplier/supplier/edit.vue
index 70eea3c..9a7176b 100644
--- a/shop_vue/src/views/supplier/supplier/edit.vue
+++ b/shop_vue/src/views/supplier/supplier/edit.vue
@@ -73,6 +73,12 @@
</div>
<div class="tips">如设置了是,则该商户的订单按该商户后台设置的支付信息来收款</div>
</el-form-item>
+ <el-form-item label="供需权限">
+ <el-radio-group v-model="form.supplier.is_release">
+ <el-radio :label="0">否</el-radio>
+ <el-radio :label="1">是</el-radio>
+ </el-radio-group>
+ </el-form-item>
<el-form-item label="是否是新人专区" :label-width="formLabelWidth">
<el-radio-group v-model="form.supplier.is_newcomer">
<el-radio :label="1">是</el-radio>
@@ -173,7 +179,8 @@
area_id:'',
is_independent:0,
is_newcomer:0,
- is_repurchase:0
+ is_repurchase:0,
+ is_release:0
},
},
logo_file_path: '',
diff --git a/supplier_vue/src/api/plus/release.js b/supplier_vue/src/api/plus/release.js
new file mode 100644
index 0000000..afb1174
--- /dev/null
+++ b/supplier_vue/src/api/plus/release.js
@@ -0,0 +1,178 @@
+import request from '@/utils/request'
+
+let PlusApi = {
+
+ /*需求方申请列表*/
+ demandApplyList(data, errorback) {
+ return request._post('/supplier/plus.release.demandApply/index', data, errorback);
+ },
+ /*审核*/
+ editDemandApplyStatus(data, errorback) {
+ return request._post('/supplier/plus.release.demandApply/editApplyStatus', data, errorback);
+ },
+ /*列表*/
+ demandUserList(data, errorback) {
+ return request._post('/supplier/plus.release.demandUser/index', data, errorback);
+ },
+ /*修改*/
+ demandUserEdit(data, errorback) {
+ return request._post('/supplier/plus.release.demandUser/edit', data, errorback);
+ },
+ /*删除*/
+ deleteDemandUser(data, errorback) {
+ return request._post('/supplier/plus.release.demandUser/delete', data, errorback);
+ },
+
+ /*供应方申请列表*/
+ supplyApplyList(data, errorback) {
+ return request._post('/supplier/plus.release.supplyApply/index', data, errorback);
+ },
+ /*审核*/
+ editSupplyApplyStatus(data, errorback) {
+ return request._post('/supplier/plus.release.supplyApply/editApplyStatus', data, errorback);
+ },
+ /*列表*/
+ supplyUserList(data, errorback) {
+ return request._post('/supplier/plus.release.supplyUser/index', data, errorback);
+ },
+ /*修改*/
+ supplyUserEdit(data, errorback) {
+ return request._post('/supplier/plus.release.supplyUser/edit', data, errorback);
+ },
+ /*删除*/
+ deleteSupplyUser(data, errorback) {
+ return request._post('/supplier/plus.release.supplyUser/delete', data, errorback);
+ },
+ /*分类管理*/
+ catList(data, errorback) {
+ return request._post('/supplier/plus.release.ReleaseCategory/index', data, errorback);
+ },
+ /*分类添加*/
+ catAdd(data, errorback) {
+ return request._post('/supplier/plus.release.ReleaseCategory/add', data, errorback);
+ },
+ /*分类删除*/
+ catDel(data, errorback) {
+ return request._post('/supplier/plus.release.ReleaseCategory/delete', data, errorback);
+ },
+ /*分类修改*/
+ catEdit(data, errorback) {
+ return request._post('/supplier/plus.release.ReleaseCategory/edit', data, errorback);
+ },
+ /*获取标签*/
+ Tag(data, errorback) {
+ return request._post('/supplier/plus.release.Tag/index', data, errorback);
+ },
+ /*添加标签*/
+ addTag(data, errorback) {
+ return request._post('/supplier/plus.release.Tag/add', data, errorback);
+ },
+ /*编辑标签*/
+ editTag(data, errorback) {
+ return request._post('/supplier/plus.release.Tag/edit', data, errorback);
+ },
+ /*删除标签*/
+ deleteTag(data, errorback) {
+ return request._post('/supplier/plus.release.Tag/delete', data, errorback);
+ },
+ /*需求发布列表*/
+ demandProject(data, errorback) {
+ return request._post('/supplier/plus.release.DemandProject/index', data, errorback);
+ },
+ demandProjectSubmit(data, errorback) {
+ return request._post('/supplier/plus.release.demandProject/submit', data, errorback);
+ },
+ /*删除*/
+ demandDel(data, errorback) {
+ return request._post('/supplier/plus.release.DemandProject/delete', data, errorback);
+ },
+ /*详情*/
+ demandEdit(data, errorback) {
+ return request._post('/supplier/plus.release.DemandProject/edit', data, errorback);
+ },
+ /*供应发布列表*/
+ supplyProject(data, errorback) {
+ return request._post('/supplier/plus.release.supplyProject/index', data, errorback);
+ },
+ /*审核*/
+ supplyProjectSubmit(data, errorback) {
+ return request._post('/supplier/plus.release.supplyProject/submit', data, errorback);
+ },
+ /*删除*/
+ supplyDel(data, errorback) {
+ return request._post('/supplier/plus.release.supplyProject/delete', data, errorback);
+ },
+ /*详情*/
+ supplyEdit(data, errorback) {
+ return request._post('/supplier/plus.release.supplyProject/edit', data, errorback);
+ },
+ /*订单列表*/
+ releaseOrder(data, errorback) {
+ return request._post('/supplier/plus.release.order/index', data, errorback);
+ },
+ onCash(data, errorback) {
+ return request._post('/supplier/plus.release.order/onCash', data, errorback);
+ },
+ onFinish(data, errorback) {
+ return request._post('/supplier/plus.release.order/onFinish', data, errorback);
+ },
+ onCancel(data, errorback) {
+ return request._post('/supplier/plus.release.order/onCancel', data, errorback);
+ },
+ /*提现申请*/
+ cash(data, errorback) {
+ return request._post('/supplier/plus.release.cash/index', data, errorback);
+ },
+ /*提现审核*/
+ cashSubmit(data, errorback) {
+ return request._post('/supplier/plus.release.cash/submit', data, errorback);
+ },
+ /*微信打款*/
+ WxPay(data, errorback) {
+ return request._post('/supplier/plus.release.cash/wechat_pay', data, errorback);
+ },
+ /*付呗分账打款*/
+ FbPay(data, errorback) {
+ return request._post('/supplier/plus.release.cash/fb_pay', data, errorback);
+ },
+ /*确认打款*/
+ money(data, errorback) {
+ return request._post('/supplier/plus.release.cash/money', data, errorback);
+ },
+
+ /*设置*/
+ releaseSet(data, errorback) {
+ return request._post('/supplier/plus.release.setting/index', data, errorback);
+ },
+ /*佣金设置*/
+ settlement(data, errorback) {
+ return request._post('/supplier/plus.release.setting/settlement', data, errorback);
+ },
+ /*等级列表*/
+ gradelist(data, errorback) {
+ return request._post('/supplier/plus.release.grade/index', data, errorback);
+ },
+ /*添加等级*/
+ addgrade(data, errorback) {
+ return request._post('/supplier/plus.release.grade/add', data, errorback);
+ },
+ /*修改等级*/
+ editGrade(data, errorback) {
+ return request._post('/supplier/plus.release.grade/edit', data, errorback);
+ },
+ /*删除等级*/
+ deletegrade(data, errorback) {
+ return request._post('/supplier/plus.release.grade/delete', data, errorback);
+ },
+ /*评论列表*/
+ evaluate(data, errorback) {
+ return request._post('/supplier/plus.release.evaluate/list', data, errorback);
+ },
+ /*删除*/
+ evaluateDel(data, errorback) {
+ return request._post('/supplier/plus.release.evaluate/delete', data, errorback);
+ },
+
+}
+
+export default PlusApi;
diff --git a/supplier_vue/src/views/plus/bonus/index.vue b/supplier_vue/src/views/plus/bonus/index.vue
index ebdc3e8..8d392ff 100644
--- a/supplier_vue/src/views/plus/bonus/index.vue
+++ b/supplier_vue/src/views/plus/bonus/index.vue
@@ -95,9 +95,8 @@
}
},
created() {
- setTimeout(()=>{
- this.init();
- },100)
+
+ this.init();
},
beforeDestroy() {
diff --git a/supplier_vue/src/views/plus/bonus/setting/part/Basic.vue b/supplier_vue/src/views/plus/bonus/setting/part/Basic.vue
index 8edf173..4e3af3d 100644
--- a/supplier_vue/src/views/plus/bonus/setting/part/Basic.vue
+++ b/supplier_vue/src/views/plus/bonus/setting/part/Basic.vue
@@ -74,6 +74,21 @@
<div class="tips">如开启,用户成为分红用户后同时成为分销商,不受分销插件条件影响</div>
</div>
</el-form-item>
+ <el-form-item label="下级收益补贴条件" name="second">
+ <label>直推指定等级</label>
+ <el-select v-model="form.referee_grade_ids" multiple style="width: 160px; margin-left: 10px;">
+ <el-option
+ v-for="item in userGradeList"
+ :key="item.grade_id"
+ :label="item.name"
+ :value="item.grade_id">
+ </el-option>
+ </el-select>
+ <label>直推人数</label>
+ <el-input v-model="form.referee_grade_count" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">人</span>
+ <div class="tips">直推多少用户指定会员等级后,即可享受享受下级收益补贴</div>
+ </el-form-item>
<!--提交-->
<div class="common-button-wrapper">
<el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
@@ -87,6 +102,7 @@
<script>
import PlusApi from '@/api/plus/bonus.js';
import Product from '@/components/product/Product';
+import UserApi from '@/api/user.js';
export default {
components: {
@@ -99,12 +115,15 @@
form: {
is_open: '',
limit_buy: '',
- become_agent: ''
+ become_agent: '',
+ referee_grade_ids: [],
+ referee_grade_count: ''
},
/*是否打开产品弹出层*/
isproduct: false,
/*是否正在加载*/
- loading: false
+ loading: false,
+ userGradeList:[]
};
},
props:{
@@ -116,8 +135,22 @@
if (!this.form.product_image) {
this.form.product_image = [];
}
+ // 等级id转换成数组
+ for (let i = 0; i < this.form.referee_grade_ids.length; i++) {
+ this.form.referee_grade_ids[i] = parseInt(this.form.referee_grade_ids[i]);
+ }
+ this.getUserGradeList();
},
methods: {
+ /*获取用户管理模块的等级列表*/
+ getUserGradeList() {
+ let self = this;
+ UserApi.gradelist({}, true)
+ .then(res => {
+ self.userGradeList = res.data.list.data || res.data.list;
+ })
+ .catch(error => {});
+ },
/*提交表单*/
onSubmit() {
diff --git a/supplier_vue/src/views/plus/release/cash/Cash.vue b/supplier_vue/src/views/plus/release/cash/Cash.vue
new file mode 100644
index 0000000..5bcc049
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/cash/Cash.vue
@@ -0,0 +1,333 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label="审核状态">
+ <el-select v-model="formInline.apply_status" placeholder="请选择状态">
+ <el-option label="全部" value="-1"></el-option>
+ <el-option label="待审核" value="10"></el-option>
+ <el-option label="审核通过" value="20"></el-option>
+ <el-option label="已打款" value="40"></el-option>
+ <el-option label="驳回" value="30"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="提现方式">
+ <el-select v-model="formInline.pay_type" placeholder="请选择提现方式">
+ <el-option label="全部" value="-1"></el-option>
+ <el-option label="微信" value="10"></el-option>
+ <el-option label="支付宝" value="20"></el-option>
+ <el-option label="银行卡" value="30"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="用户id">
+ <el-input v-model="formInline.user_id" placeholder="请输入用户ID"></el-input>
+ </el-form-item>
+ <el-form-item label="">
+ <el-input v-model="formInline.search" placeholder="请输入昵称/姓名/手机号"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="onSubmit">查询</el-button>
+ </el-form-item>
+ <!-- <el-form-item>
+ <el-button size="small" type="success" @click="onExport" v-auth="'/plus/agent/cash/export'">导出</el-button>
+ </el-form-item> -->
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID" width="60"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="70">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label="微信昵称" width="100"></el-table-column>
+ <el-table-column prop="real_name" label="姓名"></el-table-column>
+ <el-table-column prop="mobile" label="手机号">
+ <template slot-scope="scope">
+ <p class="text-ellipsis" :title="scope.row.mobile">{{ scope.row.mobile }}</p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="money" label="提现金额">
+ <template slot-scope="scope">
+ <span class="orange">{{ scope.row.money }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="fee_money" label="手续费">
+ <template slot-scope="scope">
+ <span class="black">{{ scope.row.fee_money || 0 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="real_money" label="实际到账">
+ <template slot-scope="scope">
+ <span class="green">{{ scope.row.real_money || scope.row.money }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="pay_type.text" label="提现方式"></el-table-column>
+ <el-table-column prop="pay_type" label="提现信息 ">
+ <template slot-scope="scope">
+ <div v-if="scope.row.pay_type.value == 20">
+ <p>
+ <span>{{ scope.row.alipay_name }}</span>
+ </p>
+ <p>
+ <span>{{ scope.row.alipay_account }}</span>
+ </p>
+ </div>
+ <div v-else-if="scope.row.pay_type.value == 30">
+ <p>
+ <span>{{ scope.row.bank_name }}</span>
+ </p>
+ <p>
+ <span>{{ scope.row.bank_account }}</span>
+ </p>
+ <p>
+ <span>{{ scope.row.bank_card }}</span>
+ </p>
+ </div>
+ <div v-else>
+ <p><span>--</span></p>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="apply_status.text" label="审核状态"></el-table-column>
+ <el-table-column prop="create_time" label="申请时间" width="135"></el-table-column>
+ <el-table-column prop="audit_time" label="审核时间" width="135"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="180">
+ <template slot-scope="scope">
+ <div v-if="scope.row.apply_status.value == 10 || scope.row.apply_status.value == 20">
+ <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/cash/submit'">审核</el-button>
+ <template v-if="scope.row.apply_status.value == 20">
+ <el-button @click="makeMoney(scope.row)" type="text" size="small" v-auth="'/plus/release/cash/money'">确认打款</el-button>
+ </template>
+ <template v-if="scope.row.apply_status.value == 20 && scope.row.pay_type.value == 10">
+ <el-button @click="WxPay(scope.row.id)" type="text" size="small" v-auth="'/plus/release/cash/money'">微信付款</el-button>
+ </template>
+ </div>
+ <div v-if="scope.row.apply_status.value == 30">
+ <el-button @click="editClick(scope.row)" type="text" size="small">查看详情</el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
+ :current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"></el-pagination>
+ </div>
+ </div>
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')">
+ </Edit>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './dialog/Edit.vue';
+ import qs from 'qs';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ formInline: {
+ apply_status: '-1',
+ pay_type: '-1',
+ search: '',
+ /*用户ID*/
+ user_id: ''
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ props: {},
+ watch: {
+
+ $route(to, from) {
+ if (to.query.user_id != null) {
+ this.formInline.user_id = to.query.user_id;
+ }else{
+ this.formInline.user_id ='';
+ }
+ this.curPage = 1;
+ this.getData();
+ }
+
+ },
+ created() {
+ if (this.$route.query.user_id != null) {
+ this.formInline.user_id = this.$route.query.user_id;
+ }
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = self.formInline;
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ PlusApi.cash(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {});
+ },
+
+ /*搜索*/
+ onSubmit() {
+ let self = this;
+ self.loading = true;
+ let Params = self.formInline;
+ PlusApi.cash(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ },
+ onExport: function() {
+ let baseUrl = window.location.protocol + '//' + window.location.host;
+ window.location.href = baseUrl + '/index.php/shop/plus.release.cash/export?' + qs.stringify(this.formInline);
+ },
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getData();
+ },
+
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.getData();
+ },
+
+ /*打开弹出层编辑*/
+ editClick(item) {
+ this.userModel = item;
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ },
+
+ /*确认打款*/
+ makeMoney(e) {
+ let self = this;
+ self
+ .$confirm('确认要打款吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(() => {
+ self.loading = true;
+ PlusApi.money({
+ id: e.id
+ },
+ true
+ )
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: '恭喜你,操作成功',
+ type: 'success'
+ });
+ this.getData();
+ } else {
+ self.loading = false;
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ })
+ .catch(() => {});
+ },
+
+ /*微信打款*/
+ WxPay(e) {
+ let self = this;
+ self
+ .$confirm('该操作 将使用分账功能,确定打款吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(() => {
+ self.loading = true;
+ PlusApi.FbPay({
+ id: e
+ },
+ true
+ )
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: '恭喜你,操作成功',
+ type: 'success'
+ });
+ this.getData();
+ } else {
+ self.loading = false;
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ })
+ .catch(() => {});
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/cash/dialog/Edit.vue b/supplier_vue/src/views/plus/release/cash/dialog/Edit.vue
new file mode 100644
index 0000000..c2a84cb
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/cash/dialog/Edit.vue
@@ -0,0 +1,94 @@
+<template>
+ <!--
+ 作者:luoyiming
+ 时间:2020-06-01
+ 描述:插件中心-分销-提现申请-弹窗
+ -->
+ <div v-if="status != 30">
+ <el-dialog title="提现审核" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <el-form :model="form">
+ <el-form-item label="审核状态" :label-width="formLabelWidth">
+ <div>
+ <el-radio v-model="form.apply_status" label="20">审核通过</el-radio>
+ <el-radio v-model="form.apply_status" label="30">驳回</el-radio>
+ </div>
+ </el-form-item>
+ <div v-if="form.apply_status == 30">
+ <el-form-item label="驳回原因" :label-width="formLabelWidth"><el-input v-model="form.reject_reason" autocomplete="off"></el-input></el-form-item>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editApplyStatus">确 定</el-button>
+ </div>
+ </el-dialog>
+ </div>
+
+ <div v-else>
+ <el-dialog title="驳回原因" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <p>{{ reject_reason }}</p>
+ <!-- <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="dialogFormVisible">确 定</el-button>
+ </div> -->
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+export default {
+ data() {
+ return {
+ status: '',
+ reject_reason: '',
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.status = this.form.apply_status.value;
+ if (this.status == 30) {
+ this.reject_reason = this.form.reject_reason;
+ }
+ },
+ methods: {
+
+ /*修改*/
+ editApplyStatus() {
+ let self = this;
+ let params = this.form;
+ PlusApi.cashSubmit(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {});
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ });
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ });
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demand/apply/Apply.vue b/supplier_vue/src/views/plus/release/demand/apply/Apply.vue
new file mode 100644
index 0000000..721c5d7
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demand/apply/Apply.vue
@@ -0,0 +1,169 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ 描述:申请
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label=""><el-input v-model="formInline.nick_name" placeholder="请输入昵称/姓名/手机号"></el-input></el-form-item>
+ <el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item>
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table :data="tableData" size="small" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID" width="60"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="70">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label=" 微信昵称" width="250"></el-table-column>
+ <el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
+ <el-table-column prop="mobile" label="手机号">
+ <template slot-scope="scope">
+ <p class="text-ellipsis">{{ scope.row.mobile }}</p>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="apply_status" label="审核状态" width="100">
+ <template slot-scope="scope">
+ <span :class="{
+ red: scope.row.apply_status.value == 10,
+ green: scope.row.apply_status.value == 20,
+ gray: scope.row.apply_status.value == 30 }">
+ {{ scope.row.apply_status.text }}
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="apply_time" label="申请时间" width="135"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="50">
+ <template slot-scope="scope">
+ <div>
+ <el-button v-if="scope.row.apply_status.value == 10" @click="editClick(scope.row)" type="text" size="small">
+ 审核
+ </el-button>
+ <el-button v-if="scope.row.apply_status.value == 30" @click="editClick(scope.row)" type="text" size="small">查看</el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+ </div>
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import Edit from './dialog/Edit.vue';
+export default {
+ components: {
+ /*编辑组件*/
+ Edit
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ formInline: {
+ nick_name: ''
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ Params.nick_name = this.formInline.nick_name;
+ PlusApi.demandApplyList(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.apply_list.data;
+ self.totalDataNumber = data.data.apply_list.total;
+ })
+ .catch(error => {});
+ },
+
+ //搜索
+ onSubmit() {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*打开弹出层编辑*/
+ editClick(item) {
+ this.userModel = item;
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demand/apply/dialog/Edit.vue b/supplier_vue/src/views/plus/release/demand/apply/dialog/Edit.vue
new file mode 100644
index 0000000..6fce7f5
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demand/apply/dialog/Edit.vue
@@ -0,0 +1,88 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ -->
+ <div v-if="status != 30">
+ <el-dialog title="申请审核" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <el-form :model="form">
+ <el-form-item label="审核状态" :label-width="formLabelWidth">
+ <div>
+ <el-radio v-model="form.apply_status" label="20">审核通过</el-radio>
+ <el-radio v-model="form.apply_status" label="30">驳回</el-radio>
+ </div>
+ </el-form-item>
+ <div v-if="form.apply_status == 30">
+ <el-form-item label="驳回原因" :label-width="formLabelWidth"><el-input v-model="form.reject_reason" autocomplete="off"></el-input></el-form-item>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editApplyStatus">确 定</el-button>
+ </div>
+ </el-dialog>
+ </div>
+
+ <div v-else>
+ <el-dialog title="驳回原因" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <p>{{ reject_reason }}</p>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+export default {
+ data() {
+ return {
+ status: '',
+ reject_reason: '',
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.status = this.form.apply_status.value;
+ if (this.status == 30) {
+ this.reject_reason = this.form.reject_reason;
+ }
+ },
+ methods: {
+ /*修改用户*/
+ editApplyStatus() {
+ let self = this;
+ let params = this.form;
+ PlusApi.editDemandApplyStatus(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {});
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ });
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ });
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demand/user/User.vue b/supplier_vue/src/views/plus/release/demand/user/User.vue
new file mode 100644
index 0000000..991bad3
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demand/user/User.vue
@@ -0,0 +1,214 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label=""><el-input v-model="formInline.nick_name" placeholder="请输入昵称/姓名/手机号"></el-input></el-form-item>
+ <el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item>
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID" width="70"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="70">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label="微信昵称" width="250"></el-table-column>
+ <el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
+ <el-table-column prop="mobile" label="手机号"></el-table-column>
+ <!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="" label="会员等级">
+ <template slot-scope="scope">
+ <span v-if="scope.row.grade_id == 0">无等级</span>
+ <span v-else>{{ scope.row.grade.name }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="create_time" label="成为时间" width="140"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="160">
+ <template slot-scope="scope">
+ <div>
+ <!-- <el-button @click="saleClick(scope.row)" type="text" size="small">需求订单</el-button> -->
+ <el-button @click="EditClick(scope.row)" type="text" size="small">修改</el-button>
+ <el-button @click="delClick(scope.row)" type="text" size="small">删除</el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+ </div>
+
+ <!--编辑-->
+ <Edit :open_edit="open_edit" :userModel="userModel" :gradeList="gradeList" @close="closeEditFunc"></Edit>
+
+ </div>
+</template>
+
+<script>
+import { deepClone } from '@/utils/base.js'
+import PlusApi from '@/api/plus/release.js';
+import Edit from './dialog/Edit.vue';
+export default {
+ components: {
+ Edit,
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*搜索对象*/
+ formInline: {
+ nick_name: ''
+ },
+ /*是否打开弹窗*/
+ open_dialog: false,
+ /*选中的用户*/
+ userModel:{},
+ /*是否打开修改*/
+ open_edit:false,
+ /*等级*/
+ gradeList: [],
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ if(self.formInline.nick_name!=''){
+ Params.nick_name=self.formInline.nick_name;
+ }
+ PlusApi.demandUserList(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ self.gradeList = data.data.grade;
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ },
+
+ //搜索
+ onSubmit() {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getData();
+ },
+
+ /*订单*/
+ saleClick(item) {
+ this.$router.push({
+ path:'/plus/release/index',
+ query:{
+ type:'demandorder',
+ repair_user_id:item.user_id
+ }
+ })
+ },
+
+
+ /*删除*/
+ delClick(row) {
+ let self = this;
+ self
+ .$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(() => {
+ self.loading = true;
+ PlusApi.deleteDemandUser(
+ {
+ user_id: row.user_id
+ },
+ true
+ )
+ .then(data => {
+ self.loading = false;
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getData();
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ })
+ .catch(() => {
+ self.loading = false;
+ });
+ },
+
+ /*打开编辑用户弹窗*/
+ EditClick(e){
+ this.userModel=deepClone(e);
+ this.open_edit=true;
+ },
+
+ /*关闭编辑用户弹窗*/
+ closeEditFunc(e){
+ this.open_edit=false;
+ if(e.type=='success'){
+ this.getData();
+ }
+ }
+
+ }
+};
+</script>
+
+<style scoped="scoped">
+ .el-button{margin-left: 0; margin-right: 10px;}
+</style>
diff --git a/supplier_vue/src/views/plus/release/demand/user/dialog/Edit.vue b/supplier_vue/src/views/plus/release/demand/user/dialog/Edit.vue
new file mode 100644
index 0000000..7ec11cd
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demand/user/dialog/Edit.vue
@@ -0,0 +1,93 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="编辑" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="60%">
+ <el-form :model="formData">
+ <el-form-item label="微信昵称" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.nickName" autocomplete="off" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="微信头像" :label-width="formLabelWidth">
+ <img v-img-url="formData.avatarUrl" width="50" height="50" />
+ </el-form-item>
+ <el-form-item label="姓名" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.real_name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="手机号" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.mobile" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级" :label-width="formLabelWidth">
+ <el-select v-model="formData.grade_id" placeholder="-请选择等级-">
+ <el-option v-for="(item,index) in gradeList" :key="index" :label="item.name" :value="item.grade_id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="cancelFunc">取 消</el-button>
+ <el-button type="primary" @click="confirmFunc">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import UserApi from '@/api/user.js';
+export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '100px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*表单数据模型*/
+ formData: {},
+ };
+ },
+ props: ['open_edit','userModel','gradeList'],
+ watch: {
+ open_edit: function(n, o) {
+ if (n != o) {
+ this.dialogVisible = this.open_edit;
+ if (n) {
+ this.formData = this.userModel;
+ }
+ }
+ }
+ },
+ created() {
+
+ },
+ methods: {
+ /*修改用户*/
+ confirmFunc() {
+ let self = this;
+ let params ={};
+ params.user_id= this.formData.user_id;
+ params.real_name=this.formData.real_name;
+ params.mobile=this.formData.mobile;
+ params.grade_id=this.formData.grade_id;
+ PlusApi.demandUserEdit(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.cancelFunc(true);
+ })
+ .catch(error => {});
+ },
+ /*关闭弹窗*/
+ cancelFunc(e) {
+ let type='cancel';
+ if(e){
+ type='success';
+ }
+ this.$emit('close', {
+ type:type
+ });
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demandproject/Edit.vue b/supplier_vue/src/views/plus/release/demandproject/Edit.vue
new file mode 100644
index 0000000..6cd3634
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demandproject/Edit.vue
@@ -0,0 +1,78 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="详情" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="标题:" :label-width="formLabelWidth">
+ {{form.name}}
+ </el-form-item>
+ <el-form-item label="分类:" :label-width="formLabelWidth">
+ {{form.category.name}}
+ </el-form-item>
+ <el-form-item label="预算:" :label-width="formLabelWidth">
+ ¥{{form.price}}
+ </el-form-item>
+ <el-form-item label="详细需求:" :label-width="formLabelWidth" >
+ {{form.content}}
+ </el-form-item>
+ <el-form-item label="图片:" :label-width="formLabelWidth">
+ <div v-if="form.image_list" v-for="(item,index) in form.image_list">
+ <a target="_blank" :href="item.file_path"><img style="max-width: 50px; height: 50px;" v-img-url="item.file_path" />
+ </a>
+ </div>
+ </el-form-item>
+ <el-form-item label="期望完成时间:" :label-width="formLabelWidth" >
+ {{form.finish_time}}
+ </el-form-item>
+ <el-form-item label="期望地点:" :label-width="formLabelWidth">
+ {{form.detail}}
+ </el-form-item>
+ <el-form-item label="联系方式:" :label-width="formLabelWidth">
+ <span v-if="form.show_phone == 0">不公开</span>
+ <span v-if="form.show_phone == 1">公开</span>
+ </el-form-item>
+
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">返回</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ },
+ methods: {
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demandproject/dialog/Edit.vue b/supplier_vue/src/views/plus/release/demandproject/dialog/Edit.vue
new file mode 100644
index 0000000..39dda8c
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demandproject/dialog/Edit.vue
@@ -0,0 +1,92 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div v-if="status != 2">
+ <el-dialog title="审核" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <el-form :model="form">
+ <el-form-item label="审核状态" :label-width="formLabelWidth">
+ <div>
+ <el-radio v-model="form.status" label="1">审核通过</el-radio>
+ <el-radio v-model="form.status" label="2">驳回</el-radio>
+ </div>
+ </el-form-item>
+ <div v-if="form.status == 2">
+ <el-form-item label="驳回原因" :label-width="formLabelWidth"><el-input v-model="form.reject_reason" autocomplete="off"></el-input></el-form-item>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editApplyStatus">确 定</el-button>
+ </div>
+ </el-dialog>
+ </div>
+
+ <div v-else>
+ <el-dialog title="驳回原因" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <p>{{ reject_reason }}</p>
+ <!-- <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="dialogFormVisible">确 定</el-button>
+ </div> -->
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+export default {
+ data() {
+ return {
+ status: '',
+ reject_reason: '',
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.status = this.form.status.value;
+ if (this.status == 30) {
+ this.reject_reason = this.form.reject_reason;
+ }
+ },
+ methods: {
+
+ /*修改*/
+ editApplyStatus() {
+ let self = this;
+ let params = this.form;
+ PlusApi.demandProjectSubmit(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {});
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ });
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ });
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/demandproject/index.vue b/supplier_vue/src/views/plus/release/demandproject/index.vue
new file mode 100644
index 0000000..e2b6559
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/demandproject/index.vue
@@ -0,0 +1,232 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <!--搜索表单-->
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline">
+ <!-- <el-form-item label="类目">
+ <el-select size="small" v-model="searchForm.category_id" placeholder="所有分类">
+ <el-option label="全部" value="0"></el-option>
+ <el-option v-for="(item, index) in categoryList" :key="index" :label="item.name" :value="item.category_id">
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+ <el-form-item label="标题">
+ <el-input size="small" v-model="searchForm.name" placeholder="请输入标题"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="project_id" label="ID" width="100"></el-table-column>
+ <el-table-column prop="nickName" label="发布用户"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像">
+ <template slot-scope="scope">
+ <img :src="scope.row.user.avatarUrl" width="30px" height="30px" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="标题"></el-table-column>
+ <el-table-column prop="category.name" label="分类" width="200"></el-table-column>
+ <el-table-column prop="price" label="预算" width="200"></el-table-column>
+ <el-table-column prop="status" label="状态" width="200">
+ <template slot-scope="scope">
+ <span v-if="scope.row.status == 0">未审核</span>
+ <span v-if="scope.row.status == 1" class="green">已通过</span>
+ <span v-if="scope.row.status == 2" class="green">已驳回</span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="操作" width="200">
+ <template slot-scope="scope">
+ <el-button v-if="scope.row.status == 0" @click="shClick(scope.row)" type="text" size="small">审核</el-button>
+ <el-button @click="editClick(scope.row)" type="text" size="small" >详情</el-button>
+ <el-button @click="evaluateClick(scope.row)" type="text" size="small" >评论列表</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
+ :current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"></el-pagination>
+ </div>
+
+ </div>
+ <!--编辑-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+
+ <Editsh v-if="open_sh" :open_edit="open_sh" :form="userModel" @closeDialog="closeDialogFunc($event, 'editsh')"></Editsh>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './Edit.vue';
+ import Editsh from './dialog/Edit.vue';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ Editsh,
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*一页多少条*/
+ pageSize: 10,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*列表数据*/
+ tableData: [],
+ /*横向表单数据模型*/
+ /*搜索参数*/
+ searchForm: {
+ name: '',
+ category_id: ''
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {},
+ open_sh:false,
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.loading = true;
+ self.curPage = val;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = self.searchForm;
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ PlusApi.demandProject(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+
+ });
+ },
+ /*搜索查询*/
+ onSubmit() {
+ this.curPage = 1;
+ this.getTableList();
+ },
+
+ evaluateClick(item) {
+ let self = this;
+ let params = item.project_id;
+ this.$router.push({
+ path: '/plus/release/evaluate/list',
+ query: {
+ project_id: params
+ }
+ });
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.userModel = deepClone(item);
+ this.open_edit = true;
+ },
+
+ /*打开弹出层审核*/
+ shClick(item) {
+ this.userModel = item;
+ this.open_sh = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'editsh') {
+ this.open_sh = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ },
+
+ /*删除*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.demandDel({
+ project_id: row.project_id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/evaluate/list.vue b/supplier_vue/src/views/plus/release/evaluate/list.vue
new file mode 100644
index 0000000..740a441
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/evaluate/list.vue
@@ -0,0 +1,174 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <!--搜索表单-->
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline">
+ <!-- <el-form-item label="类目">
+ <el-select size="small" v-model="searchForm.category_id" placeholder="所有分类">
+ <el-option label="全部" value="0"></el-option>
+ <el-option v-for="(item, index) in categoryList" :key="index" :label="item.name" :value="item.category_id">
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+ <el-form-item label="用户id">
+ <el-input size="small" v-model="searchForm.user_id" placeholder="请输入用户id"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
+ <el-button size="small" type="info" @click="cancelFunc">返回上一页</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="id" label="ID" width="100"></el-table-column>
+ <el-table-column prop="user.nickName" label="评论用户" width="200"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="100">
+ <template slot-scope="scope">
+ <img :src="scope.row.user.avatarUrl" width="30px" height="30px" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="score_txt" label="评分" width="100"></el-table-column>
+ <el-table-column prop="status" label="图片" width="200">
+ <template slot-scope="scope">
+ <a style="margin-right:5px;" v-for="(item, index) in scope.row.image_list" target="_blank" :href="item.file_path"><img :src="item.file_path" width="30px" height="30px" /></a>
+ </template>
+ </el-table-column>
+ <el-table-column prop="evaluate_content" label="评语"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="200">
+ <template slot-scope="scope">
+ <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
+ :current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"></el-pagination>
+ </div>
+
+ </div>
+
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*一页多少条*/
+ pageSize: 10,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*列表数据*/
+ tableData: [],
+ /*横向表单数据模型*/
+ /*搜索参数*/
+ searchForm: {
+ user_id: '',
+ category_id: ''
+ },
+ project_id:''
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.loading = true;
+ self.curPage = val;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = self.searchForm;
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ Params.project_id = self.$route.query.project_id;;
+ PlusApi.evaluate(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+
+ });
+ },
+ /*搜索查询*/
+ onSubmit() {
+ this.curPage = 1;
+ this.getTableList();
+ },
+
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+ /*删除*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.evaluateDel({
+ id: row.id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/grade/index.vue b/supplier_vue/src/views/plus/release/grade/index.vue
new file mode 100644
index 0000000..6ba8213
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/grade/index.vue
@@ -0,0 +1,32 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <div class="common-seach-wrap">
+ <el-tabs v-model="activeName">
+ <el-tab-pane label="等级列表" name="list"></el-tab-pane>
+ </el-tabs>
+
+ <!--设置-->
+ <List v-if="activeName == 'list'"></List>
+
+ </div>
+</template>
+<script>
+import List from './part/list';
+export default {
+ components: {
+ List,
+ },
+ data() {
+ return {
+ activeName: 'list'
+ };
+ },
+ methods: {}
+};
+</script>
+
+<style>
+
+</style>
diff --git a/supplier_vue/src/views/plus/release/grade/part/Add.vue b/supplier_vue/src/views/plus/release/grade/part/Add.vue
new file mode 100644
index 0000000..637ba6c
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/grade/part/Add.vue
@@ -0,0 +1,136 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <el-dialog title="添加等级" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="等级名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: '请输入等级名称'}]">
+ <el-input v-model="form.name" placeholder="请输入等级名称"></el-input>
+ </el-form-item>
+ <el-form-item label="等级图标" :label-width="formLabelWidth" prop="img" :rules="[{required: true,message: ' '}]">
+ <el-row>
+ <el-button icon="el-icon-picture-outline" @click="openUpload('img')">选择图片</el-button>
+ <div v-if="form.img!=''" class="img">
+ <img :src="form.img" width="100" height="100" />
+ </div>
+ </el-row>
+ </el-form-item>
+ <el-form-item label="等级权重" :label-width="formLabelWidth" prop="weight" :rules="[{required: true,message: '请输入等级权重'}]">
+ <el-input v-model="form.weight" type="number" placeholder="请输入等级权重"></el-input>
+ <div class="gray9">权重越大,等级越高</div>
+ </el-form-item>
+ <el-form-item label="升级条件" :label-width="formLabelWidth">
+ <div class="gray9">0或不填均无法升级到该等级</div>
+ <div class="d-s-c mt16">
+ <span>累计好评达</span>
+ <el-input v-model="form.upgrade_num" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">条</span>
+ </div>
+ </el-form-item>
+ </el-form>
+
+ <!--上传图片组件-->
+ <Upload v-if="isupload" :isupload="isupload" :type="type" @returnImgs="returnImgsFunc">上传图片</Upload>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="addGrade()" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Upload from '@/components/file/Upload';
+ export default {
+ components: {
+ /*上传组件*/
+ Upload,
+ },
+ data() {
+ return {
+ form: {
+ /*昵称*/
+ name: '',
+ /*累计满*/
+ upgrade_num:0,
+ /*等级权重*/
+ weight: 100,
+ img:'',
+ },
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ /*是否上传图片*/
+ isupload: false,
+ };
+ },
+ props: ['open_add'],
+ created() {
+ this.dialogVisible = this.open_add;
+ },
+ methods: {
+
+ /*添加等级*/
+ addGrade() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.addgrade(params, true).then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+ }
+ });
+ },
+ /*上传*/
+ openUpload(e) {
+ this.type = e;
+ this.isupload = true;
+ },
+ /*获取图片*/
+ returnImgsFunc(e) {
+ if (e != null && e.length > 0) {
+ if (this.type == 'img') {
+ this.form.img = e[0].file_path;
+ }
+ }
+ this.isupload = false;
+ },
+ /*取消*/
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/grade/part/Edit.vue b/supplier_vue/src/views/plus/release/grade/part/Edit.vue
new file mode 100644
index 0000000..3dc7179
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/grade/part/Edit.vue
@@ -0,0 +1,131 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <el-dialog title="编辑等级" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="等级名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级图标" :label-width="formLabelWidth" prop="img" :rules="[{required: true,message: ' '}]">
+ <el-row>
+ <el-button icon="el-icon-picture-outline" @click="openUpload('img')">选择图片</el-button>
+ <div v-if="form.img!='' && form.img!=null" class="img">
+ <img :src="form.img" width="100" height="100" />
+ </div>
+ </el-row>
+ </el-form-item>
+ <el-form-item label="等级权重" :label-width="formLabelWidth" prop="weight" :rules="[{required: true,message: '请输入等级权重'}]">
+ <el-input v-model="form.weight" type="number" placeholder="请输入等级权重"></el-input>
+ <div class="gray9">权重越大,等级越高</div>
+ </el-form-item>
+ <el-form-item label="升级条件" :label-width="formLabelWidth">
+ <div class="gray9">0或不填均无法升级到该等级</div>
+ <div class="d-s-c mt16">
+ <span>累计好评达</span>
+ <el-input v-model="form.upgrade_num" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">条</span>
+ </div>
+ </el-form-item>
+ </el-form>
+
+ <!--上传图片组件-->
+ <Upload v-if="isupload" :isupload="isupload" :type="type" @returnImgs="returnImgsFunc">上传图片</Upload>
+
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editGrade" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Upload from '@/components/file/Upload';
+ export default {
+ components: {
+ /*上传组件*/
+ Upload,
+ },
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ /*是否上传图片*/
+ isupload: false,
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ },
+ methods: {
+ /*修改用户*/
+ editGrade() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.editGrade(params, true)
+ .then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: '恭喜你,等级修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+
+ }
+ });
+ },
+ /*上传*/
+ openUpload(e) {
+ this.type = e;
+ this.isupload = true;
+ },
+ /*获取图片*/
+ returnImgsFunc(e) {
+ if (e != null && e.length > 0) {
+ if (this.type == 'img') {
+ this.form.img = e[0].file_path;
+ }
+ }
+ this.isupload = false;
+ },
+ /*取消*/
+ cancelFunc() {
+ this.$router.back(-1);
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/grade/part/list.vue b/supplier_vue/src/views/plus/release/grade/part/list.vue
new file mode 100644
index 0000000..83b4880
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/grade/part/list.vue
@@ -0,0 +1,189 @@
+<template>
+ <!--
+ 作者 yj
+ -->
+ <div class="user">
+ <!--添加等级-->
+ <div class="common-level-rail">
+ <el-button size="small" type="primary" @click="addClick" icon="el-icon-plus" v-auth="'/plus/release/grade/add'">添加等级</el-button>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="name" label="等级名称" width="300"></el-table-column>
+ <el-table-column prop="weight" label="权重"></el-table-column>
+ <el-table-column prop="upgrade_num" label="好评数量"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="90">
+ <template slot-scope="scope">
+ <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/grade/edit'" >编辑</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small" v-auth="'/plus/release/grade/delete'">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background :current-page="curPage"
+ :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber">
+ </el-pagination>
+ </div>
+ </div>
+
+ <!--添加-->
+ <Add v-if="open_add" :open_add="open_add" @closeDialog="closeDialogFunc($event, 'add')"></Add>
+
+ <!--编辑-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './Edit.vue';
+ import Add from './Add.vue';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ Add
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 15,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*横向表单数据模型*/
+ formInline: {
+ user: '',
+ },
+ /*是否打开添加弹窗*/
+ open_add: false,
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ created() {
+
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+
+ /*换行*/
+ keepTextStyle(val){
+ let str=val.replace(/(\\r\\n)/g,'<br/>');
+ return str;
+ },
+
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ PlusApi.gradelist(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total
+ })
+ .catch(error => {
+
+ });
+ },
+
+ /*打开添加*/
+ addClick() {
+ this.open_add = true;
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.userModel = deepClone(item);
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ },
+
+ /*删除用户*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.deletegrade({
+ grade_id: row.grade_id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/index.vue b/supplier_vue/src/views/plus/release/index.vue
new file mode 100644
index 0000000..6acbbd4
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/index.vue
@@ -0,0 +1,192 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div>
+ <DemandApply v-if="activeName == 'demandapply'"></DemandApply>
+ <DemandUser v-if="activeName == 'demanduser'"></DemandUser>
+ <SupplyApply v-if="activeName == 'supplyapply'"></SupplyApply>
+ <SupplyUser v-if="activeName == 'supplyuser'"></SupplyUser>
+ <DemandProject v-if="activeName == 'demandproject'"></DemandProject>
+ <SupplyProject v-if="activeName == 'supplyproject'"></SupplyProject>
+ <Order v-if="activeName == 'order'"></Order>
+ <Category v-if="activeName == 'category'"></Category>
+ <Tag v-if="activeName == 'tag'"></Tag>
+ <Cash v-if="activeName == 'cash'"></Cash>
+ <Setting v-if="activeName == 'setting'"></Setting>
+ <Grade v-if="activeName == 'grade'"></Grade>
+ </div>
+</template>
+<script>
+import bus from '@/utils/eventBus.js';
+import DemandApply from './demand/apply/Apply';
+import DemandUser from './demand/user/User';
+import SupplyApply from './supply/apply/Apply';
+import SupplyUser from './supply/user/User';
+import DemandProject from './demandproject/index';
+import SupplyProject from './supplyproject/index';
+import Order from './order/Order';
+import Category from './releasecategory/index';
+import Tag from './tag/index';
+import Cash from './cash/Cash';
+import Setting from './setting/Setting';
+import Grade from './grade/index';
+
+
+export default {
+ components: {
+ DemandApply,
+ DemandUser,
+ SupplyApply,
+ SupplyUser,
+ DemandProject,
+ SupplyProject,
+ Order,
+ Category,
+ Tag,
+ Cash,
+ Setting,
+ Grade,
+ },
+ data() {
+ return {
+ formInline: {
+ nick_name: ''
+ },
+ /*参数*/
+ param: {},
+ /*当前选中*/
+ activeName: 'demandapply',
+ /*切换数组*/
+ sourceList: [
+ {
+ key: 'demandapply',
+ value: '需求方申请',
+ path:'/plus/release/demand/apply/index'
+ },
+ {
+ key: 'demanduser',
+ value: '需求方用户',
+ path:'/plus/release/demand/user/index'
+ },{
+ key: 'supplyapply',
+ value: '供应方申请',
+ path:'/plus/release/supply/apply/index'
+ },
+ {
+ key: 'supplyuser',
+ value: '供应方用户',
+ path:'/plus/release/supply/user/index'
+ },
+ {
+ key: 'demandproject',
+ value: '需求发布',
+ path:'/plus/release/demandproject/index'
+ },
+ {
+ key: 'supplyproject',
+ value: '供应发布',
+ path:'/plus/release/supplyproject/index'
+ },
+ // {
+ // key: 'order',
+ // value: '用户订单',
+ // path:'/plus/release/order/Order'
+ // },
+ {
+ key: 'grade',
+ value: '信誉等级',
+ path:'/plus/release/grade/index'
+ },
+ {
+ key: 'category',
+ value: '分类列表',
+ path:'/plus/release/releasecategory/index'
+ },
+ {
+ key: 'tag',
+ value: '标签列表',
+ path:'/plus/release/tag/index'
+ },
+ // {
+ // key: 'cash',
+ // value: '提现列表',
+ // path:'/plus/release/cash/Cash'
+ // },
+ {
+ key: 'setting',
+ value: '发布设置',
+ path:'/plus/release/setting/Setting'
+ }
+
+ ],
+ /*权限筛选后的数据*/
+ tabList:[],
+ /*判断third是否有参数*/
+ is_third_param: false
+ };
+ },
+ watch:{
+
+ //监听路由
+ $route(to, from) {
+ this.init();
+ }
+ },
+ created() {
+
+ this.init();
+
+ },
+ beforeDestroy() {
+ //发送类别切换
+ bus.$emit('tabData', { active: null, tab_type:'release',list: [] });
+ bus.$off('activeValue');
+ },
+ methods: {
+
+ /*初始化方法*/
+ init(){
+ this.tabList=this.authFilter();
+
+ if(this.tabList.length>0){
+ this.activeName=this.tabList[0].key;
+ }
+
+ if (this.$route.query.type != null) {
+ this.activeName = this.$route.query.type;
+ }
+
+ /*监听传插件的值*/
+ bus.$on('activeValue', res => {
+ if (this.is_third_param) {
+ this.param.user_id = '';
+ this.is_third_param = false;
+ }
+ this.activeName = res;
+ });
+
+ //发送类别切换
+ let params = {
+ active: this.activeName,
+ list: this.tabList,
+ tab_type:'release'
+ };
+ bus.$emit('tabData', params);
+ },
+
+ /*权限过滤*/
+ authFilter(){
+ let list=[];
+ for(let i=0;i<this.sourceList.length;i++){
+ let item=this.sourceList[i];
+ if(this.$filter.isAuth(item.path)){
+ list.push(item);
+ }
+ }
+ return list;
+ }
+
+ }
+};
+</script>
diff --git a/supplier_vue/src/views/plus/release/order/Order.vue b/supplier_vue/src/views/plus/release/order/Order.vue
new file mode 100644
index 0000000..2de5058
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/order/Order.vue
@@ -0,0 +1,281 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label="创建时间">
+ <div class="block">
+ <span class="demonstration"></span>
+ <el-date-picker size="small" v-model="formInline.create_time" type="daterange" value-format="yyyy-MM-dd"
+ range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+ </div>
+ </el-form-item>
+ <el-form-item label="支付方式">
+ <el-select v-model="formInline.pay_type" placeholder="选择支付方式">
+ <el-option label="全部" value="0"></el-option>
+ <el-option label="余额支付" value="10"></el-option>
+ <el-option label="微信支付" value="20"></el-option>
+ <el-option label="线下支付" value="40"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="支付状态">
+ <el-select v-model="formInline.pay_status" placeholder="选择支付状态">
+ <el-option label="全部" value="-1"></el-option>
+ <el-option label="已支付" value="20"></el-option>
+ <el-option label="未支付" value="10"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="订单状态">
+ <el-select v-model="formInline.order_status" placeholder="选择订单状态">
+ <el-option label="全部" value="-1"></el-option>
+ <el-option label="进行中" value="10"></el-option>
+ <el-option label="已完成" value="30"></el-option>
+ <el-option label="已取消" value="20"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="需求用户id"><el-input v-model="formInline.demand_user_id" placeholder="请输入需求用户ID"></el-input></el-form-item>
+ <el-form-item label="供应用户id"><el-input v-model="formInline.supply_user_id" placeholder="请输入供应用户ID"></el-input></el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="onSubmit">查询</el-button>
+ </el-form-item>
+ <!-- <el-form-item>
+ <el-button size="small" type="success" @click="onExport">导出</el-button>
+ </el-form-item> -->
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <!-- <el-tabs v-model="activeName" @tab-click="handleClick">
+ <el-tab-pane label="全部订单" name="status0"></el-tab-pane>
+ <el-tab-pane :label="'待确认支付'" name="status1">
+ <span slot="label">待确认支付 <el-tag size="mini">{{order_count.status1}}</el-tag></span>
+ </el-tab-pane>
+ <el-tab-pane label="服务中" name="status6">
+ <span slot="label">服务中 <el-tag size="mini">{{order_count.status6}}</el-tag></span>
+ </el-tab-pane>
+ <el-tab-pane label="待评价" name="status8">
+ <span slot="label">待评价 <el-tag size="mini">{{order_count.status8}}</el-tag></span>
+ </el-tab-pane>
+ <el-tab-pane label="已完成" name="status9">
+ <span slot="label">已完成 <el-tag size="mini">{{order_count.status9}}</el-tag></span>
+ </el-tab-pane>
+ <el-tab-pane label="已取消" name="status10">
+ <span slot="label">已取消 <el-tag size="mini">{{order_count.status10}}</el-tag></span>
+ </el-tab-pane>
+ </el-tabs> -->
+ <el-table :data="tableData" size="small" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="nickName" label="供应会员" width="200">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.supplyuser.avatarUrl" width="30" height="30" />
+ <div>ID:{{scope.row.supplyuser.user_id}}</div>
+ <div>{{scope.row.supplyuser.nickName}}</div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label="需求会员" width="200">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.demanduser.avatarUrl" width="30" height="30" />
+ <div>ID:{{scope.row.demanduser.user_id}}</div>
+ <div>{{scope.row.demanduser.nickName}}</div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="project_name" label="标题"></el-table-column>
+ <el-table-column prop="pay_price" label="支付金额" width="100"></el-table-column>
+ <el-table-column prop="money" label="项目佣金" width="80"></el-table-column>
+ <el-table-column prop="pay_type.text" label="支付方式" width="80">
+ <template slot-scope="scope">
+ <span class="gray9" v-if="scope.row.pay_status == 20">已支付<br />{{ scope.row.pay_type.text }}</span>
+ <span v-else>未支付</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="create_time" label="下单时间" width="140">
+ <template slot-scope="scope">
+ <div>{{ scope.row.create_time }}</div>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column prop="evaluate_content" label="需求方评价">
+ <template slot-scope="scope" v-if="scope.row.is_settled == 2">
+ <div v-if="scope.row.server_score > 0">{{scope.row.server_score}}星</div>
+ <div>
+ <span v-if="scope.row.score == 10">好评</span>
+ <span v-else-if="scope.row.score == 20">中评</span>
+ <span v-else-if="scope.row.score == 30">差评</span>
+ <span v-else>好评</span>
+ </div>
+ <div>{{ scope.row.evaluate_content }}</div>
+ </template>
+ </el-table-column> -->
+ <el-table-column prop="is_settled" label="订单状态" width="120">
+ <template slot-scope="scope">
+ <div class="red" v-if="scope.row.order_status == 20">{{scope.row.state_text}}</div>
+ <div class="green" v-else>{{scope.row.state_text}}</div>
+ </template>
+ </el-table-column>
+
+ <el-table-column fixed="right" label="操作" width="100">
+ <template slot-scope="scope">
+ <div>
+ <el-button v-if="scope.row.order_status ==10 && scope.row.pay_status == 20" @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/order/edit'">查看详情</el-button>
+ <el-button v-if="scope.row.order_status ==10 && scope.row.pay_status == 10" @click="editClick(scope.row)" type="text" size="small"
+ >确认支付</el-button>
+ <!-- <el-button v-if="scope.row.order_status ==21 && scope.row.pay_status == 20" @click="editClick(scope.row)" type="text" size="small"
+ >审核取消订单</el-button> -->
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+ </div>
+
+ <!--编辑-->
+ <Edit :open_edit="open_edit" :userModel="userModel" @close="closeEditFunc"></Edit>
+
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import Edit from './dialog/Edit.vue';
+import qs from 'qs';
+export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ formInline: {
+ /*ID*/
+ demand_user_id: 0,
+ supply_user_id: 0,
+ pay_type:'0',
+ pay_status:'-1',
+ order_status:'-1',
+ create_time: '',
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {},
+ };
+ },
+ props: {},
+ watch: {
+ $route(to, from) {
+ if (to.query.supply_user_id != null) {
+ this.formInline.supply_user_id = to.query.supply_user_id;
+ }
+ this.curPage = 1;
+ this.getData();
+ }
+ },
+ created() {
+ if (this.$route.query.supply_user_id != null) {
+ this.formInline.supply_user_id = this.$route.query.supply_user_id;
+ }
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {
+ demand_user_id: self.formInline.demand_user_id,
+ supply_user_id: self.formInline.supply_user_id,
+ pay_status:self.formInline.pay_status,
+ pay_type:self.formInline.pay_type,
+ order_status:self.formInline.order_status,
+ create_time:self.formInline.create_time,
+ page: self.curPage,
+ list_rows: self.pageSize,
+ };
+
+ PlusApi.releaseOrder(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ },
+
+ //搜索
+ onSubmit() {
+ let self = this;
+ self.loading = true;
+ self.curPage = 1;
+ self.getData();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getData();
+ },
+
+ onExport: function() {
+ let baseUrl = window.location.protocol + '//' + window.location.host;
+ this.formInline.dataType = self.dataType;
+ window.location.href = baseUrl + '/index.php/shop/plus.release.Order/export?' + qs.stringify(this.formInline);
+ },
+
+ /*打开弹出层编辑*/
+ editClick(item) {
+ this.userModel = item;
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeEditFunc(e){
+ this.open_edit=false;
+ if(e.type=='success'){
+ this.getData();
+ }
+ }
+ }
+};
+</script>
+
+<style scoped="">
+ .referee-name {
+ width: 33.333333%;
+ }
+</style>
diff --git a/supplier_vue/src/views/plus/release/order/dialog/Edit.vue b/supplier_vue/src/views/plus/release/order/dialog/Edit.vue
new file mode 100644
index 0000000..14ce6e9
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/order/dialog/Edit.vue
@@ -0,0 +1,182 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="详情" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="60%">
+ <el-form class="repair-form" :model="formData">
+ <el-form-item label="供应用户:" :label-width="formLabelWidth">
+ <div class="d-s-c" style="margin-bottom: 10px;">
+ <span><img v-img-url="formData.supplyuser.avatarUrl" width="40" height="40" /></span>
+ <span>{{formData.supplyuser.nickName}}</span>
+ </div>
+ </el-form-item>
+ <el-form-item label="需求用户:" :label-width="formLabelWidth">
+ <div class="d-s-c">
+ <span><img v-img-url="formData.demanduser.avatarUrl" width="40" height="40" /></span>
+ <span>{{formData.demanduser.nickName}}</span>
+ </div>
+ </el-form-item>
+ <el-form-item label="标题:" :label-width="formLabelWidth">
+ <span class="mr10">{{formData.project_name}}</span> <span class="ml20">支付金额:¥{{formData.pay_price}}</span> <span class="ml20">佣金:¥{{formData.money}}</span>
+ </el-form-item>
+
+ <!-- <el-form-item label="图片" :label-width="formLabelWidth">
+ <div>
+ <div v-for="(item, index) in formData.image" :key="index"><a target="_blank" :href="item.file_path"><img style="max-width: 50px; height: 50px;" v-img-url="item.file_path" /></a></div>
+ </div>
+ </el-form-item>
+ <el-form-item label="备注" :label-width="formLabelWidth" prop="message">
+ <el-input v-model="formData.message" autocomplete="off"></el-input>
+ </el-form-item>-->
+
+ <el-form-item label="服务星级" :label-width="formLabelWidth" v-if="formData.server_score">
+ {{formData.server_score}}星
+ </el-form-item>
+ <el-form-item label="评分" :label-width="formLabelWidth" v-if="formData.score">
+ <div v-if="formData.score == 10">好评</div>
+ <div v-if="formData.score == 20">中评</div>
+ <div v-if="formData.score == 30">差评</div>
+ </el-form-item>
+ <el-form-item label="评语" :label-width="formLabelWidth" v-if="formData.evaluate_content">
+ {{formData.evaluate_content}}
+ </el-form-item>
+
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="warning" @click="onCancel(20)" v-if="formData.pay_status == 10 && formData.order_status == 10">取消订单</el-button>
+ <el-button @click="cancelFunc">返 回</el-button>
+ <el-button type="primary" @click="onCash" v-if="formData.order_status == 10 && formData.pay_status == 10">确定已付款</el-button>
+ <el-button type="primary" @click="onFinish" v-if="formData.order_status == 10 && formData.pay_status == 20">确定已完成</el-button>
+ <!-- <el-button type="warning" @click="onCancel(20)" v-if="formData.order_status == 21">确定取消订单</el-button>
+ <el-button type="danger" @click="onCancel(10)" v-if="formData.order_status == 21">撤销申请</el-button> -->
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import UserApi from '@/api/user.js';
+export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '100px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*表单数据模型*/
+ formData: {},
+ };
+ },
+ props: {
+ open_edit: Boolean,
+ userModel: Object,
+ },
+ watch: {
+ open_edit: function(n, o) {
+ if (n != o) {
+ this.dialogVisible = this.open_edit;
+ if (n) {
+ this.formData = this.userModel;
+ }
+ }
+ }
+ },
+ created() {
+ /*获取列表*/
+ // this.getData();
+ },
+ methods: {
+ /*获取数据*/
+ // getData() {
+ // let self = this;
+ // PlusApi.toOrderEdit()
+ // .then(data => {
+ // self.loading = false;
+ // self.user = data.data.user;
+ // })
+ // .catch(error => {
+ // self.loading = false;
+ // });
+ // },
+
+ /*关闭弹窗*/
+ cancelFunc(e) {
+ let type='cancel';
+ if(e){
+ type='success';
+ }
+ this.$emit('close', {
+ type:type
+ });
+ },
+ /*线下支付*/
+ onCash(row) {
+ let self = this;
+ let id = this.formData.id;
+ self
+ .$confirm('确认后不可恢复,确认已收到款了吗?', '提示', {
+ type: 'warning'
+ })
+ .then(() => {
+ PlusApi.onCash({
+ id: id
+ }).then(data => {
+ self.$message({
+ message: '操作成功',
+ type: 'success'
+ });
+ self.cancelFunc(true);
+ });
+ });
+ },
+ onFinish(row) {
+ let self = this;
+ let id = this.formData.id;
+ self
+ .$confirm('确认后马上发放佣金,确认已完成了吗?', '提示', {
+ type: 'warning'
+ })
+ .then(() => {
+ PlusApi.onFinish({
+ id: id
+ }).then(data => {
+ self.$message({
+ message: '操作成功',
+ type: 'success'
+ });
+ self.cancelFunc(true);
+ });
+ });
+ },
+ onCancel(order_status) {
+ let self = this;
+ let id = this.formData.id;
+ self
+ .$confirm('此操作不可恢复,确定吗?', '提示', {
+ type: 'warning'
+ })
+ .then(() => {
+ PlusApi.onCancel({
+ id: id,
+ order_status: order_status
+ }).then(data => {
+ self.$message({
+ message: '操作成功',
+ type: 'success'
+ });
+ self.cancelFunc(true);
+ });
+ });
+ },
+ }
+};
+</script>
+
+<style scoped>
+ .repair-img image{
+ height: 100px;
+ }
+ .repair-form .el-form-item {
+ margin-bottom: 0px;
+ }
+</style>
diff --git a/supplier_vue/src/views/plus/release/releasecategory/Add.vue b/supplier_vue/src/views/plus/release/releasecategory/Add.vue
new file mode 100644
index 0000000..8ee6ca8
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/releasecategory/Add.vue
@@ -0,0 +1,103 @@
+<template>
+ <!--
+ 作者:wangxw
+ -->
+ <el-dialog title="添加分类" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false"
+ :close-on-press-escape="false">
+ <el-form size="small" :model="form" :rules="formRules" ref="form">
+ <el-form-item label="分类名称" prop="name" :label-width="formLabelWidth">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="分类排序" prop="sort" :label-width="formLabelWidth">
+ <el-input v-model.number="form.sort" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="addUser" :loading="loading">确 定</el-button>
+ </div>
+ </el-dialog>
+
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ form: {
+ name: '',
+ sort: 100,
+ },
+ formRules: {
+ name: [{
+ required: true,
+ message: '请输入分类名称',
+ trigger: 'blur'
+ }],
+ sort: [{
+ required: true,
+ message: '分类排序不能为空'
+ }, {
+ type: 'number',
+ message: '分类排序必须为数字'
+ }]
+ },
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ loading: false,
+ };
+ },
+ props: ['open_add', 'addform'],
+ created() {
+ this.dialogVisible = this.open_add;
+ },
+ methods: {
+ /*添加*/
+ addUser() {
+ let self = this;
+ let params = self.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.loading = true;
+ PlusApi.catAdd(params).then(data => {
+ self.loading = false;
+ self.$message({
+ message: '添加成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ }).catch(error => {
+ self.loading = false;
+ });
+ }
+ });
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ },
+ }
+ };
+</script>
+
+<style>
+ .img {
+ margin-top: 10px;
+ }
+</style>
diff --git a/supplier_vue/src/views/plus/release/releasecategory/Edit.vue b/supplier_vue/src/views/plus/release/releasecategory/Edit.vue
new file mode 100644
index 0000000..5ccf526
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/releasecategory/Edit.vue
@@ -0,0 +1,106 @@
+<template>
+ <!--
+ 作者:wangxw
+ -->
+ <el-dialog title="修改分类" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false"
+ :close-on-press-escape="false">
+ <el-form size="small" :model="form" :rules="formRules" ref="form">
+ <el-form-item label="分类名称" prop="name" :label-width="formLabelWidth">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="分类排序" prop="sort" :label-width="formLabelWidth">
+ <el-input v-model.number="form.sort" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="addUser" :loading="loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ form: {
+ category_id: 0,
+ name: '',
+ sort: '',
+ },
+ formRules: {
+ name: [{
+ required: true,
+ message: '请输入分类名称',
+ trigger: 'blur'
+ }],
+ sort: [{
+ required: true,
+ message: '分类排序不能为空'
+ }, {
+ type: 'number',
+ message: '分类排序必须为数字'
+ }]
+ },
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ loading: false,
+ };
+ },
+ props: ['open_edit', 'editform'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.form.category_id = this.editform.model.category_id;
+ this.form.name = this.editform.model.name;
+ this.form.sort = this.editform.model.sort;
+ },
+ methods: {
+ /*修改用户*/
+ addUser() {
+ let self = this;
+ let params = self.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.loading = true;
+ PlusApi.catEdit(params, true).then(data => {
+ self.loading = false;
+ self.$message({
+ message: '修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ }).catch(error => {
+ self.loading = false;
+ });
+ }
+ });
+ },
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ },
+
+ }
+ };
+</script>
+
+<style>
+ .img {
+ margin-top: 10px;
+ }
+</style>
diff --git a/supplier_vue/src/views/plus/release/releasecategory/index.vue b/supplier_vue/src/views/plus/release/releasecategory/index.vue
new file mode 100644
index 0000000..2756d4f
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/releasecategory/index.vue
@@ -0,0 +1,130 @@
+<template>
+ <!--
+ 作者:wangxw
+ 时间:2019-10-26
+ 描述:产品分类管理
+ -->
+ <div class="product">
+
+ <!--添加产品分类-->
+ <div class="common-level-rail">
+ <el-button size="small" type="primary" @click="addClick" icon="el-icon-plus" v-auth="'/plus/release/releasecategory/add'">添加分类</el-button>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="name" label="分类名称" width="180"></el-table-column>
+ <el-table-column prop="sort" label="分类排序"></el-table-column>
+ <el-table-column prop="create_time" label="添加时间"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="100">
+ <template slot-scope="scope">
+ <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/releasecategory/edit'">编辑</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small" v-auth="'/plus/release/releasecategory/delete'">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+
+ <!--添加-->
+ <Add v-if="open_add" :open_add="open_add" :addform="categoryModel" @closeDialog="closeDialogFunc($event, 'add')"></Add>
+ <!--修改-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :editform="categoryModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Add from './Add.vue';
+ import Edit from './Edit.vue';
+ export default {
+ components: {
+ Add,
+ Edit
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*是否打开添加弹窗*/
+ open_add: false,
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ categoryModel: {
+ catList: [],
+ model: {}
+ }
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*获取列表*/
+ getData() {
+ let self = this;
+ PlusApi.catList({}, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list;
+ self.categoryModel.catList = self.tableData;
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ },
+ /*打开添加*/
+ addClick() {
+ this.open_add = true;
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.categoryModel.model = item;
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ },
+ /*删除分类*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('删除后不可恢复,确认删除该记录吗?', '提示', {
+ type: 'warning'
+ }).then(() => {
+ PlusApi.catDel({
+ category_id: row.category_id
+ }).then(data => {
+ self.$message({
+ message: '删除成功',
+ type: 'success'
+ });
+ self.getData();
+ });
+ });
+ },
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/setting/Setting.vue b/supplier_vue/src/views/plus/release/setting/Setting.vue
new file mode 100644
index 0000000..4c861b6
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/setting/Setting.vue
@@ -0,0 +1,58 @@
+<template>
+ <div v-loading="loading">
+ <el-tabs size="small" v-model="activeName" type="card" @tab-click="handleClick">
+ <el-tab-pane label="设置" name="settlement"></el-tab-pane>
+ </el-tabs>
+
+ <!--结算-->
+ <Settlement v-if="activeName == 'settlement'" :settingData="settingData"></Settlement>
+
+ </div>
+</template>
+<script>
+import PlusApi from '@/api/plus/release.js';
+import Settlement from './part/Settlement';
+export default {
+ components: {
+ /*编辑组件*/
+ Settlement,
+ },
+ data() {
+ return {
+ /*是否正在加载*/
+ loading:true,
+ /*当前选中*/
+ activeName: '',
+ /*数据对象*/
+ settingData:{}
+ };
+ },
+ created() {
+
+ if (this.$route.query.type != null) {
+ this.activeName = this.$route.query.type;
+ }
+
+ this.getData();
+
+ },
+ methods: {
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ PlusApi.releaseSet({}, true)
+ .then(res => {
+ self.settingData = res.data;
+ self.loading=false;
+ self.activeName='settlement';
+ })
+ .catch(error => {});
+ },
+
+ handleClick(e) {
+ this.activeName = e.name;
+ }
+ }
+};
+</script>
diff --git a/supplier_vue/src/views/plus/release/setting/part/Settlement.vue b/supplier_vue/src/views/plus/release/setting/part/Settlement.vue
new file mode 100644
index 0000000..55a873f
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/setting/part/Settlement.vue
@@ -0,0 +1,102 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="mt30">
+
+ <!--form表单-->
+ <el-form size="small" ref="form" :model="form" label-width="200px">
+
+ <el-form-item label="供应方发布消耗" prop="supply_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.supply_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="需求方发布消耗" prop="demand_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.demand_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="开通查看信息权限" prop="check_price" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.check_price" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="评论奖励" prop="eve_money" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.eve_money" type="number" class="max-w460">
+ <template slot="append">连盟币</template>
+ </el-input>
+ </el-form-item>
+
+
+ <!--提交-->
+ <div class="common-button-wrapper">
+ <el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
+ </div>
+ </el-form>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+
+ export default {
+ data() {
+ return {
+ /*form表单数据*/
+ form: {
+ pay_type: [
+ 10
+ ],
+ explain:'',
+ },
+ list: [],
+ selectlist: [
+ 10
+ ],
+ loading: false,
+ };
+ },
+ props: {
+ settingData: Object
+ },
+ created() {
+ this.form=this.settingData.data.settlement.values;
+ this.list = this.settingData.pay_type;
+ },
+
+ methods: {
+
+ /*提交表单*/
+ onSubmit() {
+ let self = this;
+ let params = self.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.loading = true;
+ PlusApi.settlement({
+ form: params
+ }, true)
+ .then(data => {
+ self.loading = false;
+ self.$message({
+ message: '恭喜你,设置成功',
+ type: 'success'
+ });
+
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ }
+ });
+ },
+
+ }
+
+ };
+</script>
+
+<style>
+
+</style>
diff --git "a/supplier_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue" "b/supplier_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue"
new file mode 100644
index 0000000..71d38fe
--- /dev/null
+++ "b/supplier_vue/src/views/plus/release/setting/part/Settlement\345\244\207\344\273\275\345\217\257\345\210\240.vue"
@@ -0,0 +1,104 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="mt30">
+
+ <!--form表单-->
+ <el-form size="small" ref="form" :model="form" label-width="200px">
+
+ <el-form-item label="提现方式">
+ <el-checkbox-group v-model="form.pay_type">
+ <el-checkbox v-for="(item,index) in list" :label="item.id" :key="index">{{item.name}}</el-checkbox>
+ </el-checkbox-group>
+ <div class="tips">注:如使用微信支付,则需申请微信支付企业付款到零钱功能</div>
+ </el-form-item>
+ <el-form-item label="订单抽成" prop="order_rate" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.order_rate" type="number" class="max-w460">
+ <template slot="append">%</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="佣金提现手续费" prop="fee_rate" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.fee_rate" type="number" class="max-w460">
+ <template slot="append">%</template>
+ </el-input>
+ </el-form-item>
+ <el-form-item label="最低提现额度" prop="min_money" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.min_money" type="number" class="max-w460"></el-input>
+ </el-form-item>
+ <el-form-item label="提现说明">
+ <el-input v-model="form.explain" type="textarea" rows="5" class="max-w460"></el-input>
+ </el-form-item>
+
+
+ <!--提交-->
+ <div class="common-button-wrapper">
+ <el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
+ </div>
+ </el-form>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+
+ export default {
+ data() {
+ return {
+ /*form表单数据*/
+ form: {
+ pay_type: [
+ 10
+ ],
+ explain:'',
+ },
+ list: [],
+ selectlist: [
+ 10
+ ],
+ loading: false,
+ };
+ },
+ props: {
+ settingData: Object
+ },
+ created() {
+ this.form=this.settingData.data.settlement.values;
+ this.list = this.settingData.pay_type;
+ },
+
+ methods: {
+
+ /*提交表单*/
+ onSubmit() {
+ let self = this;
+ let params = self.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.loading = true;
+ PlusApi.settlement({
+ form: params
+ }, true)
+ .then(data => {
+ self.loading = false;
+ self.$message({
+ message: '恭喜你,设置成功',
+ type: 'success'
+ });
+
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ }
+ });
+ },
+
+ }
+
+ };
+</script>
+
+<style>
+
+</style>
diff --git a/supplier_vue/src/views/plus/release/supply/apply/Apply.vue b/supplier_vue/src/views/plus/release/supply/apply/Apply.vue
new file mode 100644
index 0000000..9479e13
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supply/apply/Apply.vue
@@ -0,0 +1,168 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label=""><el-input v-model="formInline.nick_name" placeholder="请输入昵称/姓名/手机号"></el-input></el-form-item>
+ <el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item>
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table :data="tableData" size="small" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID" width="60"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="70">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label=" 微信昵称" width="250"></el-table-column>
+ <el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
+ <el-table-column prop="mobile" label="手机号">
+ <template slot-scope="scope">
+ <p class="text-ellipsis">{{ scope.row.mobile }}</p>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="apply_status" label="审核状态" width="100">
+ <template slot-scope="scope">
+ <span :class="{
+ red: scope.row.apply_status.value == 10,
+ green: scope.row.apply_status.value == 20,
+ gray: scope.row.apply_status.value == 30 }">
+ {{ scope.row.apply_status.text }}
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="apply_time" label="申请时间" width="135"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="50">
+ <template slot-scope="scope">
+ <div>
+ <el-button v-if="scope.row.apply_status.value == 10" @click="editClick(scope.row)" type="text" size="small">
+ 审核
+ </el-button>
+ <el-button v-if="scope.row.apply_status.value == 30" @click="editClick(scope.row)" type="text" size="small">查看</el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+ </div>
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import Edit from './dialog/Edit.vue';
+export default {
+ components: {
+ /*编辑组件*/
+ Edit
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ formInline: {
+ nick_name: ''
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ Params.nick_name = this.formInline.nick_name;
+ PlusApi.supplyApplyList(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.apply_list.data;
+ self.totalDataNumber = data.data.apply_list.total;
+ })
+ .catch(error => {});
+ },
+
+ //搜索
+ onSubmit() {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*打开弹出层编辑*/
+ editClick(item) {
+ this.userModel = item;
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getData();
+ }
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/supply/apply/dialog/Edit.vue b/supplier_vue/src/views/plus/release/supply/apply/dialog/Edit.vue
new file mode 100644
index 0000000..0f9f98a
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supply/apply/dialog/Edit.vue
@@ -0,0 +1,88 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ -->
+ <div v-if="status != 30">
+ <el-dialog title="入驻审核" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <el-form :model="form">
+ <el-form-item label="审核状态" :label-width="formLabelWidth">
+ <div>
+ <el-radio v-model="form.apply_status" label="20">审核通过</el-radio>
+ <el-radio v-model="form.apply_status" label="30">驳回</el-radio>
+ </div>
+ </el-form-item>
+ <div v-if="form.apply_status == 30">
+ <el-form-item label="驳回原因" :label-width="formLabelWidth"><el-input v-model="form.reject_reason" autocomplete="off"></el-input></el-form-item>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editApplyStatus">确 定</el-button>
+ </div>
+ </el-dialog>
+ </div>
+
+ <div v-else>
+ <el-dialog title="驳回原因" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <p>{{ reject_reason }}</p>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+export default {
+ data() {
+ return {
+ status: '',
+ reject_reason: '',
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.status = this.form.apply_status.value;
+ if (this.status == 30) {
+ this.reject_reason = this.form.reject_reason;
+ }
+ },
+ methods: {
+ /*修改用户*/
+ editApplyStatus() {
+ let self = this;
+ let params = this.form;
+ PlusApi.editSupplyApplyStatus(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {});
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ });
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ });
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/supply/user/User.vue b/supplier_vue/src/views/plus/release/supply/user/User.vue
new file mode 100644
index 0000000..f426960
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supply/user/User.vue
@@ -0,0 +1,214 @@
+<template>
+ <!--
+ 作者:yj
+ 时间:2025-11-9
+ -->
+ <div class="user">
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="formInline" class="demo-form-inline">
+ <el-form-item label=""><el-input v-model="formInline.nick_name" placeholder="请输入昵称/姓名/手机号"></el-input></el-form-item>
+ <el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item>
+ </el-form>
+ </div>
+
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="user_id" label="用户ID" width="70"></el-table-column>
+ <el-table-column prop="nickName" label="微信头像" width="70">
+ <template slot-scope="scope">
+ <img class="radius" v-img-url="scope.row.avatarUrl" width="30" height="30" />
+ </template>
+ </el-table-column>
+ <el-table-column prop="nickName" label="微信昵称" width="250"></el-table-column>
+ <el-table-column prop="real_name" label="姓名" width="100"></el-table-column>
+ <el-table-column prop="mobile" label="手机号"></el-table-column>
+ <!-- <el-table-column prop="detail" label="地址"></el-table-column> -->
+ <el-table-column prop="" label="会员等级">
+ <template slot-scope="scope">
+ <span v-if="scope.row.grade_id == 0">无等级</span>
+ <span v-else>{{ scope.row.grade.name }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="create_time" label="成为时间" width="140"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="160">
+ <template slot-scope="scope">
+ <div>
+ <!-- <el-button @click="saleClick(scope.row)" type="text" size="small">供应订单</el-button> -->
+ <el-button @click="EditClick(scope.row)" type="text" size="small">修改</el-button>
+ <el-button @click="delClick(scope.row)" type="text" size="small">删除</el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ background
+ :current-page="curPage"
+ :page-size="pageSize"
+ layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"
+ ></el-pagination>
+ </div>
+ </div>
+
+ <!--编辑-->
+ <Edit :open_edit="open_edit" :userModel="userModel" :gradeList="gradeList" @close="closeEditFunc"></Edit>
+
+ </div>
+</template>
+
+<script>
+import { deepClone } from '@/utils/base.js'
+import PlusApi from '@/api/plus/release.js';
+import Edit from './dialog/Edit.vue';
+export default {
+ components: {
+ Edit,
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*一页多少条*/
+ pageSize: 20,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*搜索对象*/
+ formInline: {
+ nick_name: ''
+ },
+ /*是否打开弹窗*/
+ open_dialog: false,
+ /*选中的用户*/
+ userModel:{},
+ /*是否打开修改*/
+ open_edit:false,
+ /*等级*/
+ gradeList: [],
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getData();
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.curPage = val;
+ self.loading = true;
+ self.getData();
+ },
+
+ /*获取数据*/
+ getData() {
+ let self = this;
+ let Params = {};
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ if(self.formInline.nick_name!=''){
+ Params.nick_name=self.formInline.nick_name;
+ }
+ PlusApi.supplyUserList(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ self.gradeList = data.data.grade;
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ },
+
+ //搜索
+ onSubmit() {
+ this.curPage = 1;
+ this.getData();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.curPage = 1;
+ this.pageSize = val;
+ this.getData();
+ },
+
+ /*维修订单*/
+ saleClick(item) {
+ this.$router.push({
+ path:'/plus/release/index',
+ query:{
+ type:'supplyorder',
+ repair_user_id:item.user_id
+ }
+ })
+ },
+
+
+ /*删除*/
+ delClick(row) {
+ let self = this;
+ self
+ .$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(() => {
+ self.loading = true;
+ PlusApi.deleteSupplyUser(
+ {
+ user_id: row.user_id
+ },
+ true
+ )
+ .then(data => {
+ self.loading = false;
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getData();
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+ })
+ .catch(() => {
+ self.loading = false;
+ });
+ },
+
+ /*打开编辑用户弹窗*/
+ EditClick(e){
+ this.userModel=deepClone(e);
+ this.open_edit=true;
+ },
+
+ /*关闭编辑用户弹窗*/
+ closeEditFunc(e){
+ this.open_edit=false;
+ if(e.type=='success'){
+ this.getData();
+ }
+ }
+
+ }
+};
+</script>
+
+<style scoped="scoped">
+ .el-button{margin-left: 0; margin-right: 10px;}
+</style>
diff --git a/supplier_vue/src/views/plus/release/supply/user/dialog/Edit.vue b/supplier_vue/src/views/plus/release/supply/user/dialog/Edit.vue
new file mode 100644
index 0000000..7541eb9
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supply/user/dialog/Edit.vue
@@ -0,0 +1,93 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="编辑" :visible.sync="dialogVisible" @close="cancelFunc" :close-on-click-modal="false" :close-on-press-escape="false" width="60%">
+ <el-form :model="formData">
+ <el-form-item label="微信昵称" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.nickName" autocomplete="off" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="微信头像" :label-width="formLabelWidth">
+ <img v-img-url="formData.avatarUrl" width="50" height="50" />
+ </el-form-item>
+ <el-form-item label="姓名" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.real_name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="手机号" :label-width="formLabelWidth">
+ <el-input type="text" v-model="formData.mobile" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="等级" :label-width="formLabelWidth">
+ <el-select v-model="formData.grade_id" placeholder="-请选择等级-">
+ <el-option v-for="(item,index) in gradeList" :key="index" :label="item.name" :value="item.grade_id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="cancelFunc">取 消</el-button>
+ <el-button type="primary" @click="confirmFunc">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+import UserApi from '@/api/user.js';
+export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '100px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*表单数据模型*/
+ formData: {},
+ };
+ },
+ props: ['open_edit','userModel','gradeList'],
+ watch: {
+ open_edit: function(n, o) {
+ if (n != o) {
+ this.dialogVisible = this.open_edit;
+ if (n) {
+ this.formData = this.userModel;
+ }
+ }
+ }
+ },
+ created() {
+
+ },
+ methods: {
+ /*修改用户*/
+ confirmFunc() {
+ let self = this;
+ let params ={};
+ params.user_id= this.formData.user_id;
+ params.real_name=this.formData.real_name;
+ params.mobile=this.formData.mobile;
+ params.grade_id=this.formData.grade_id;
+ PlusApi.supplyUserEdit(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.cancelFunc(true);
+ })
+ .catch(error => {});
+ },
+ /*关闭弹窗*/
+ cancelFunc(e) {
+ let type='cancel';
+ if(e){
+ type='success';
+ }
+ this.$emit('close', {
+ type:type
+ });
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/supplyproject/Edit.vue b/supplier_vue/src/views/plus/release/supplyproject/Edit.vue
new file mode 100644
index 0000000..801189c
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supplyproject/Edit.vue
@@ -0,0 +1,77 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="详情" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="标题:" :label-width="formLabelWidth">
+ {{form.name}}
+ </el-form-item>
+ <el-form-item label="分类:" :label-width="formLabelWidth">
+ {{form.category.name}}
+ </el-form-item>
+ <el-form-item label="价格:" :label-width="formLabelWidth">
+ ¥{{form.price}}
+ </el-form-item>
+ <el-form-item label="详细描述:" :label-width="formLabelWidth" >
+ {{form.content}}
+ </el-form-item>
+ <el-form-item label="图片:" :label-width="formLabelWidth">
+ <div v-if="form.image_list" v-for="(item,index) in form.image_list">
+ <a target="_blank" :href="item.file_path"><img style="max-width: 50px; height: 50px;" v-img-url="item.file_path" />
+ </a>
+ </div>
+ </el-form-item>
+ <el-form-item label="交付时间:" :label-width="formLabelWidth" >
+ {{form.finish_time}}
+ </el-form-item>
+ <el-form-item label="服务地点:" :label-width="formLabelWidth">
+ {{form.detail}}
+ </el-form-item>
+ <el-form-item label="标签:" :label-width="formLabelWidth">
+ <span v-if="form.tag_list" v-for="(item,index) in form.tag_list">{{item.name}};</span>
+ </el-form-item>
+
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">返回</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ },
+ methods: {
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/supplyproject/dialog/Edit.vue b/supplier_vue/src/views/plus/release/supplyproject/dialog/Edit.vue
new file mode 100644
index 0000000..250b71f
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supplyproject/dialog/Edit.vue
@@ -0,0 +1,92 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div v-if="status != 2">
+ <el-dialog title="审核" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <el-form :model="form">
+ <el-form-item label="审核状态" :label-width="formLabelWidth">
+ <div>
+ <el-radio v-model="form.status" label="1">审核通过</el-radio>
+ <el-radio v-model="form.status" label="2">驳回</el-radio>
+ </div>
+ </el-form-item>
+ <div v-if="form.apply_status == 2">
+ <el-form-item label="驳回原因" :label-width="formLabelWidth"><el-input v-model="form.reject_reason" autocomplete="off"></el-input></el-form-item>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="editApplyStatus">确 定</el-button>
+ </div>
+ </el-dialog>
+ </div>
+
+ <div v-else>
+ <el-dialog title="驳回原因" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
+ <p>{{ reject_reason }}</p>
+ <!-- <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="dialogFormVisible">确 定</el-button>
+ </div> -->
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import PlusApi from '@/api/plus/release.js';
+export default {
+ data() {
+ return {
+ status: '',
+ reject_reason: '',
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ this.status = this.form.status.value;
+ if (this.status == 30) {
+ this.reject_reason = this.form.reject_reason;
+ }
+ },
+ methods: {
+
+ /*修改*/
+ editApplyStatus() {
+ let self = this;
+ let params = this.form;
+ PlusApi.supplyProjectSubmit(params, true)
+ .then(data => {
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {});
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ });
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ });
+ }
+ }
+ }
+};
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/supplyproject/index.vue b/supplier_vue/src/views/plus/release/supplyproject/index.vue
new file mode 100644
index 0000000..859c674
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/supplyproject/index.vue
@@ -0,0 +1,227 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <!--搜索表单-->
+ <div class="common-seach-wrap">
+ <el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline">
+ <!-- <el-form-item label="类目">
+ <el-select size="small" v-model="searchForm.category_id" placeholder="所有分类">
+ <el-option label="全部" value="0"></el-option>
+ <el-option v-for="(item, index) in categoryList" :key="index" :label="item.name" :value="item.category_id">
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+ <el-form-item label="标题">
+ <el-input size="small" v-model="searchForm.name" placeholder="请输入标题"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="project_id" label="ID" width="100"></el-table-column>
+ <el-table-column prop="name" label="标题"></el-table-column>
+ <el-table-column prop="category.name" label="分类" width="200"></el-table-column>
+ <el-table-column prop="price" label="价格" width="200"></el-table-column>
+ <el-table-column prop="status" label="状态" width="200">
+ <template slot-scope="scope">
+ <span v-if="scope.row.status == 0">未审核</span>
+ <span v-if="scope.row.status == 1" class="green">已通过</span>
+ <span v-if="scope.row.status == 2" class="green">已驳回</span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="操作" width="200">
+ <template slot-scope="scope">
+ <el-button v-if="scope.row.status == 0" @click="shClick(scope.row)" type="text" size="small">审核</el-button>
+ <el-button @click="editClick(scope.row)" type="text" size="small" >详情</el-button>
+ <el-button @click="evaluateClick(scope.row)" type="text" size="small" >评论列表</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+
+ <!--分页-->
+ <div class="pagination">
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background
+ :current-page="curPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+ :total="totalDataNumber"></el-pagination>
+ </div>
+
+ </div>
+ <!--编辑-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+
+ <Editsh v-if="open_sh" :open_edit="open_sh" :form="userModel" @closeDialog="closeDialogFunc($event, 'editsh')"></Editsh>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './Edit.vue';
+ import Editsh from './dialog/Edit.vue';
+
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ Editsh,
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*一页多少条*/
+ pageSize: 10,
+ /*一共多少条数据*/
+ totalDataNumber: 0,
+ /*当前是第几页*/
+ curPage: 1,
+ /*列表数据*/
+ tableData: [],
+ /*横向表单数据模型*/
+ /*搜索参数*/
+ searchForm: {
+ name: '',
+ category_id: ''
+ },
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {},
+ open_sh:false,
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+ /*选择第几页*/
+ handleCurrentChange(val) {
+ let self = this;
+ self.loading = true;
+ self.curPage = val;
+ self.getTableList();
+ },
+
+ /*每页多少条*/
+ handleSizeChange(val) {
+ this.pageSize = val;
+ this.getTableList();
+ },
+
+ evaluateClick(item) {
+ let self = this;
+ let params = item.project_id;
+ this.$router.push({
+ path: '/plus/release/evaluate/list',
+ query: {
+ project_id: params
+ }
+ });
+ },
+
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = self.searchForm;
+ Params.page = self.curPage;
+ Params.list_rows = self.pageSize;
+ PlusApi.supplyProject(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list.data;
+ self.totalDataNumber = data.data.list.total;
+ })
+ .catch(error => {
+
+ });
+ },
+ /*搜索查询*/
+ onSubmit() {
+ this.curPage = 1;
+ this.getTableList();
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.userModel = deepClone(item);
+ this.open_edit = true;
+ },
+
+ /*打开弹出层审核*/
+ shClick(item) {
+ this.userModel = item;
+ this.open_sh = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'editsh') {
+ this.open_sh = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ },
+
+ /*删除*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.supplyDel({
+ project_id: row.project_id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/tag/Add.vue b/supplier_vue/src/views/plus/release/tag/Add.vue
new file mode 100644
index 0000000..969f3c9
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/tag/Add.vue
@@ -0,0 +1,86 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="添加" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: '请输入名称'}]">
+ <el-input v-model="form.name" placeholder="请输入名称"></el-input>
+ </el-form-item>
+ <el-form-item label="排序" :label-width="formLabelWidth" prop="sort" :rules="[{required: true,message: '请输入排序'}]">
+ <el-input v-model="form.sort" type="number" placeholder="请输入排序"></el-input>
+ <div class="gray9">数字越大,越排前</div>
+ </el-form-item>
+ </el-form>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="add()" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ export default {
+ data() {
+ return {
+ form: {
+ name: '',
+ sort: 100,
+ },
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ };
+ },
+ props: ['open_add'],
+ created() {
+ this.dialogVisible = this.open_add;
+ },
+ methods: {
+ /*添加*/
+ add() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.addTag(params, true).then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+ }
+ });
+ },
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/tag/Edit.vue b/supplier_vue/src/views/plus/release/tag/Edit.vue
new file mode 100644
index 0000000..67ae166
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/tag/Edit.vue
@@ -0,0 +1,85 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <el-dialog title="编辑" :visible.sync="dialogVisible" @close='dialogFormVisible' :close-on-click-modal="false"
+ :close-on-press-escape="false" width="600px">
+ <el-form size="small" :model="form" ref="form">
+ <el-form-item label="名称" :label-width="formLabelWidth" prop="name" :rules="[{required: true,message: ' '}]">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="排序" :label-width="formLabelWidth" prop="sort" :rules="[{required: true,message: '请输入排序'}]">
+ <el-input v-model="form.sort" type="number" placeholder="请输入排序"></el-input>
+ <div class="gray9">数字越大,越排前</div>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible">取 消</el-button>
+ <el-button type="primary" @click="edit" :disabled="submit_loading">确 定</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ export default {
+ data() {
+ return {
+ /*左边长度*/
+ formLabelWidth: '120px',
+ /*是否显示*/
+ dialogVisible: false,
+ /*是否正在提交*/
+ submit_loading: false,
+ };
+ },
+ props: ['open_edit', 'form'],
+ created() {
+ this.dialogVisible = this.open_edit;
+ },
+ methods: {
+ /*修改*/
+ edit() {
+ let self = this;
+ let params = this.form;
+ self.$refs.form.validate((valid) => {
+ if (valid) {
+ self.submit_loading = true;
+ PlusApi.editTag(params, true)
+ .then(data => {
+ self.submit_loading = false;
+ self.$message({
+ message: '恭喜你,修改成功',
+ type: 'success'
+ });
+ self.dialogFormVisible(true);
+
+ })
+ .catch(error => {
+ self.submit_loading = false;
+ });
+
+ }
+ });
+ },
+
+ /*关闭弹窗*/
+ dialogFormVisible(e) {
+ if (e) {
+ this.$emit('closeDialog', {
+ type: 'success',
+ openDialog: false
+ })
+ } else {
+ this.$emit('closeDialog', {
+ type: 'error',
+ openDialog: false
+ })
+ }
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/release/tag/index.vue b/supplier_vue/src/views/plus/release/tag/index.vue
new file mode 100644
index 0000000..ea9e255
--- /dev/null
+++ b/supplier_vue/src/views/plus/release/tag/index.vue
@@ -0,0 +1,147 @@
+<template>
+ <!--
+ 作者:yj
+ -->
+ <div class="user">
+ <!--添加-->
+ <div class="common-level-rail">
+ <el-button size="small" type="primary" @click="addClick" icon="el-icon-plus" v-auth="'/plus/release/tag/add'">添加标签</el-button>
+ </div>
+ <!--内容-->
+ <div class="product-content">
+ <div class="table-wrap">
+ <el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading">
+ <el-table-column prop="tag_id" label="标签ID" width="100"></el-table-column>
+ <el-table-column prop="name" label="名称"></el-table-column>
+ <el-table-column prop="sort" label="排序" width="200"></el-table-column>
+ <el-table-column fixed="right" label="操作" width="90">
+ <template slot-scope="scope">
+ <el-button @click="editClick(scope.row)" type="text" size="small" v-auth="'/plus/release/tag/edit'" >编辑</el-button>
+ <el-button @click="deleteClick(scope.row)" type="text" size="small" v-auth="'/plus/release/tag/delete'">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <!--添加-->
+ <Add v-if="open_add" :open_add="open_add" @closeDialog="closeDialogFunc($event, 'add')"></Add>
+ <!--编辑-->
+ <Edit v-if="open_edit" :open_edit="open_edit" :form="userModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+ </div>
+</template>
+
+<script>
+ import PlusApi from '@/api/plus/release.js';
+ import Edit from './Edit.vue';
+ import Add from './Add.vue';
+ import {deepClone} from '@/utils/base.js';
+ export default {
+ components: {
+ /*编辑组件*/
+ Edit,
+ Add
+ },
+ data() {
+ return {
+ /*是否加载完成*/
+ loading: true,
+ /*列表数据*/
+ tableData: [],
+ /*横向表单数据模型*/
+ form: {
+ become: '0'
+ },
+ /*是否打开添加弹窗*/
+ open_add: false,
+ /*是否打开编辑弹窗*/
+ open_edit: false,
+ /*当前编辑的对象*/
+ userModel: {}
+ };
+ },
+ created() {
+ /*获取列表*/
+ this.getTableList();
+
+ },
+ methods: {
+
+ /*获取列表*/
+ getTableList() {
+ let self = this;
+ let Params = {};
+ PlusApi.Tag(Params, true)
+ .then(data => {
+ self.loading = false;
+ self.tableData = data.data.list;
+ })
+ .catch(error => {
+
+ });
+ },
+
+ /*打开添加*/
+ addClick() {
+ this.open_add = true;
+ },
+
+ /*打开编辑*/
+ editClick(item) {
+ this.userModel = deepClone(item);
+ this.open_edit = true;
+ },
+
+ /*关闭弹窗*/
+ closeDialogFunc(e, f) {
+ if (f == 'add') {
+ this.open_add = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ if (f == 'edit') {
+ this.open_edit = e.openDialog;
+ if (e.type == 'success') {
+ this.getTableList();
+ }
+ }
+ },
+
+ /*删除*/
+ deleteClick(row) {
+ let self = this;
+ self.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ self.loading = true;
+ PlusApi.deleteTag({
+ tag_id: row.tag_id
+ }, true)
+ .then(data => {
+ self.loading = false;
+ if (data.code == 1) {
+ self.$message({
+ message: data.msg,
+ type: 'success'
+ });
+ self.getTableList();
+ } else {
+ self.$message.error('错了哦,这是一条错误消息');
+ }
+ })
+ .catch(error => {
+ self.loading = false;
+ });
+
+ }).catch(() => {
+
+ });
+ }
+
+ }
+ };
+</script>
+
+<style></style>
diff --git a/supplier_vue/src/views/plus/vip/setting/part/Basic.vue b/supplier_vue/src/views/plus/vip/setting/part/Basic.vue
index 69cc700..4e40090 100644
--- a/supplier_vue/src/views/plus/vip/setting/part/Basic.vue
+++ b/supplier_vue/src/views/plus/vip/setting/part/Basic.vue
@@ -13,6 +13,24 @@
<el-radio v-model="form.is_open" label="0">关闭</el-radio>
</div>
</el-form-item>
+ <el-form-item label="是否开启级差奖">
+ <div>
+ <el-radio v-model="form.jcaward" label="1">开启</el-radio>
+ <el-radio v-model="form.jcaward" label="0">关闭</el-radio>
+ </div>
+ </el-form-item>
+ <el-form-item label="是否开启平级奖">
+ <div>
+ <el-radio v-model="form.pjaward" label="1">开启</el-radio>
+ <el-radio v-model="form.pjaward" label="0">关闭</el-radio>
+ </div>
+ </el-form-item>
+ <el-form-item label="平级奖励层级" v-if="form.pjaward==1">
+ <div>
+ <el-input v-model="form.pjaward_level" type="number" class="max-w460"></el-input>
+ <div class="tips">默认1级,即只往上找一个平级</div>
+ </div>
+ </el-form-item>
<el-form-item label="成为VIP需要购买的商品">
<div>
<el-row>
@@ -34,6 +52,33 @@
</el-input>
<div class="tips">用户直推指定数量的用户后,即可享受平台佣金</div>
</el-form-item>
+
+ <el-form-item label="复购专区奖条件" name="second">
+ <label>推荐VIP会员人数</label>
+ <el-input v-model="form.viewpoint_buy_count" type="number" class="max-w460">
+ <template slot="append">人</template>
+ </el-input>
+ <label>每月复购专区消费</label>
+ <el-input v-model="form.repurchase_consumption" type="number" class="max-w460">
+ <template slot="append">元</template>
+ </el-input>
+ <div class="tips">用户满足条件后,即可享复购专区奖</div>
+ </el-form-item>
+ <el-form-item label="下级收益补贴条件" name="second">
+ <label>直推指定等级</label>
+ <el-select v-model="form.referee_grade_ids" multiple style="width: 160px; margin-left: 10px;">
+ <el-option
+ v-for="item in userGradeList"
+ :key="item.grade_id"
+ :label="item.name"
+ :value="item.grade_id">
+ </el-option>
+ </el-select>
+ <label>直推人数</label>
+ <el-input v-model="form.referee_grade_count" type="number" style="width: 160px; margin-left: 10px;" ></el-input>
+ <span class="ml10">人</span>
+ <div class="tips">直推多少用户指定会员等级后,即可享受享受下级收益补贴</div>
+ </el-form-item>
<!--提交-->
<div class="common-button-wrapper">
<el-button size="small" type="primary" @click="onSubmit" :loading="loading">提交</el-button>
@@ -47,6 +92,7 @@
<script>
import PlusApi from '@/api/plus/vip.js';
import Product from '@/components/product/Product';
+import UserApi from '@/api/user.js';
export default {
components: {
@@ -60,8 +106,12 @@
is_open: '0',
become__buy_product_ids: [],
referee_buy_count: '0',
- product_image: []
+ product_image: [],
+ jcaward: '0',
+ pjaward: '0',
+ pjaward_level: '1'
},
+ userGradeList:[],
/*是否打开产品弹出层*/
isproduct: false,
/*是否正在加载*/
@@ -73,9 +123,23 @@
},
created() {
this.form = this.settingData.data.basic.values;
- console.log(this.form)
+ console.log(this.form.referee_grade_ids);
+ // 等级id转换成数组
+ for (let i = 0; i < this.form.referee_grade_ids.length; i++) {
+ this.form.referee_grade_ids[i] = parseInt(this.form.referee_grade_ids[i]);
+ }
+ this.getUserGradeList();
},
methods: {
+ /*获取用户管理模块的等级列表*/
+ getUserGradeList() {
+ let self = this;
+ UserApi.gradelist({}, true)
+ .then(res => {
+ self.userGradeList = res.data.list.data || res.data.list;
+ })
+ .catch(error => {});
+ },
/*提交表单*/
onSubmit() {
let self = this;
--
Gitblit v1.9.2