1. 发布供需消耗连盟币,连盟币数量在后台独立设置
2. 小程序供需个人中心可自由切换身份
3. 增加私信系统
4. 增加评论系统,用户可在发布者详情页进行评论操作,评论获得的连盟币可在后台设置
5. 增加发布者的等级,以好评个数为条件进行升级,小程序端会显示该等级的图标,如没有等级则不会显示图标
6. 增加设置消耗连盟币可以解锁、查看发布的信息,费用可在后台设置
7. 小程序供需大厅界面优化,以及增加了推荐栏目,该栏目按发布的分类相似进行匹配,比如A用户发布了 互联网 分类的需求,则会优先推荐匹配互联网分类的供应需求给他。
16 files deleted
71 files added
57 files modified
| New file |
| | |
| | | <?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')); |
| | | } |
| | | |
| | | } |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 首页 |
| | |
| | | public function index() |
| | | { |
| | | $is_release = $this->isReleaseUser(); |
| | | //获取开通权限连盟币 |
| | | $setting = Setting::getAll(); |
| | | $setting = $setting['settlement']['values']; |
| | | |
| | | return $this->renderSuccess('', [ |
| | | 'is_release' => $is_release, |
| | |
| | | 'user' => $this->user, |
| | | // 信息 |
| | | 'release' => $this->release, |
| | | 'setting' => $setting, |
| | | // 背景图 |
| | | 'background' => '', |
| | | ]); |
| | |
| | | } |
| | | 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() ?: '提交失败'); |
| | | } |
| | | } |
| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | public function defaultData() |
| | | { |
| | | return $this->renderSuccess('', [ |
| | | //获取支付连盟币 |
| | | $setting = Setting::getAll(); |
| | | $setting = $setting['settlement']['values']; |
| | | return $this->renderSuccess('', [ |
| | | 'category_list' => ReleaseCategoryModel::getALL(), |
| | | 'setting' => $setting, |
| | | ]); |
| | | } |
| | | |
| | |
| | | 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() ?: '提交失败'); |
| New file |
| | |
| | | <?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('评论成功'); |
| | | } |
| | | |
| | | } |
| | |
| | | $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, |
| | | ]); |
| | | } |
| | | |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 首页 |
| | |
| | | { |
| | | $is_release = $this->isReleaseUser(); |
| | | |
| | | //获取开通权限连盟币 |
| | | $setting = Setting::getAll(); |
| | | $setting = $setting['settlement']['values']; |
| | | |
| | | return $this->renderSuccess('', [ |
| | | // 当前是否 |
| | | 'is_release' => $is_release, |
| | |
| | | 'user' => $this->user, |
| | | // 信息 |
| | | 'release' => $this->release, |
| | | 'setting' => $setting, |
| | | // 背景图 |
| | | 'background' => '', |
| | | ]); |
| | |
| | | } |
| | | 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() ?: '提交失败'); |
| | | } |
| | | } |
| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | public function defaultData() |
| | | { |
| | | //获取支付连盟币 |
| | | $setting = Setting::getAll(); |
| | | $setting = $setting['settlement']['values']; |
| | | return $this->renderSuccess('', [ |
| | | 'category_list' => ReleaseCategoryModel::getALL(), |
| | | 'tag_list' => TagModel::getALL(), |
| | | 'setting' => $setting, |
| | | ]); |
| | | } |
| | | |
| | |
| | | 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() ?: '提交失败'); |
| | |
| | | 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']]]) |
| | |
| | | { |
| | | // 构建查询规则 |
| | | $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) |
| New file |
| | |
| | | <?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(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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' |
| | | ]; |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | 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; |
| | | |
| | | /** |
| | | * 模型 |
| | |
| | | /** |
| | | * 新增记录 |
| | | */ |
| | | public function add($postdata,$demand) |
| | | public function add($postdata,$demand,$pay_price) |
| | | { |
| | | $data = json_decode($postdata["formData"],true); |
| | | if (empty($data['name'])) { |
| | |
| | | '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"], |
| | |
| | | $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']; |
| | | }); |
| | |
| | | '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"], |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 用户模型 |
| | |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * 开通权限 |
| | | */ |
| | | 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; |
| | | }); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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; |
| | | }); |
| | | } |
| | | } |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 模型 |
| | |
| | | $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; |
| | | } |
| | | |
| | | } |
| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 新增记录 |
| | | */ |
| | | public function add($postdata,$supply) |
| | | public function add($postdata,$supply,$pay_price) |
| | | { |
| | | $data = json_decode($postdata["formData"],true); |
| | | if (empty($data['name'])) { |
| | |
| | | '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"], |
| | |
| | | $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']; |
| | | }); |
| | |
| | | '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, |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 用户模型 |
| | |
| | | ]); |
| | | } |
| | | |
| | | /** |
| | | * 开通权限 |
| | | */ |
| | | 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; |
| | | }); |
| | | } |
| | | |
| | | } |
| | |
| | | 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')); |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | 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'); |
| | | } |
| | | |
| | | /** |
| | | * 支付状态 |
| | |
| | | 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') |
| | |
| | | |
| | | 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; |
| | | /** |
| | | * 队长订单模型 |
| | | */ |
| | |
| | | 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; |
| | |
| | | /** |
| | | * 获取当前买家的所有上级分销商用户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, //补贴用户 |
| | | ]; |
| | |
| | | 'keep_assets' => '0', // 更换排位用户是否保留资产 1保留 0不保留 |
| | | // 收益补贴 |
| | | 'operating_subsidy' => '0', |
| | | 'referee_grade_ids'=>[], |
| | | 'referee_grade_count'=>0, |
| | | ], |
| | | ], |
| | | 'condition' => [ |
| New file |
| | |
| | | <?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; |
| | | } |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?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']; |
| | | } |
| | | } |
| | |
| | | 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'); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 详情 |
| New file |
| | |
| | | <?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(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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']]);; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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'); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 详情 |
| | |
| | | // 获取下级用户的推荐人(即上级用户) |
| | | $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']); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | $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++) { |
| | |
| | | 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']]); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 'platform_commission_rate' => '5', |
| | | 'jcaward'=>'0', |
| | | 'pjaward'=>'0', |
| | | 'pjaward_level'=>1 |
| | | 'pjaward_level'=>1, |
| | | 'referee_grade_ids'=>[], |
| | | 'referee_grade_count'=>0 |
| | | ], |
| | | ], |
| | | 'settlement' => [ |
| | |
| | | ]); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取用户是否符合复购专区佣金条件 |
| | | */ |
| | | public function getViewpointMoneyQualification($user_id,$setting) |
| | | { |
| | | $userNum=$this->where('referee_id','=',$user_id)->count(); |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 修改器 |
| | | */ |
| | |
| | | |
| | | use app\shop\controller\Controller; |
| | | use app\shop\model\plus\release\DemandUser as UserModel; |
| | | use app\shop\model\plus\release\Grade; |
| | | |
| | | /** |
| | | * 控制器 |
| | |
| | | { |
| | | $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')); |
| | | } |
| | | |
| | | /** |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | } |
| | |
| | | |
| | | use app\shop\controller\Controller; |
| | | use app\shop\model\plus\release\SupplyUser as UserModel; |
| | | use app\shop\model\plus\release\Grade; |
| | | |
| | | /** |
| | | * 控制器 |
| | |
| | | { |
| | | $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')); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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"]); |
| | |
| | | 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) |
| New file |
| | |
| | | <?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(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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]); |
| | | } |
| | | |
| | | } |
| | |
| | | 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){ |
| | |
| | | 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) |
| New file |
| | |
| | | <?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); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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('修改失败'); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | } |
| New file |
| | |
| | | <?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()); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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() ?: '更新失败'); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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() ?: '更新失败'); |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?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('修改失败'); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?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('删除成功'); |
| | | } |
| | | |
| | | } |
| | |
| | | "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 |
| | | } |
| | | } |
| | | ] |
| | | } |
| | |
| | | <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"> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <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')"> |
| | |
| | | </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')"> |
| | |
| | | /*顶部背景*/ |
| | | top_background: '', |
| | | user:[], |
| | | setting:[], |
| | | pay_price:0, |
| | | }; |
| | | }, |
| | | onLoad(e) { |
| | |
| | | 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'); |
| | | }, |
| | | |
| | | /*申请入驻*/ |
| | |
| | | .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> |
| | |
| | | <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" |
| | |
| | | project_id:'', |
| | | image_list:[], |
| | | content:'', |
| | | product_content:'', |
| | | product_case:'', |
| | | name:'', |
| | | category_id:'', |
| | | finish_time:'请选择日期', |
| | |
| | | <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" |
| | |
| | | </radio-group> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <view class="form-item border-b"> |
| | | <view class="field-name">是否展示:</view> |
| | | <radio-group class="d-s-c" @change="changeShow($event,index)"> |
| | |
| | | <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> |
| | |
| | | form: { |
| | | image_list:[], |
| | | content:'', |
| | | product_content:'', |
| | | product_case:'', |
| | | name:'', |
| | | category_id:'', |
| | | finish_time:'请选择日期', |
| | |
| | | short_address:'', |
| | | show_phone:1, |
| | | Address:[], |
| | | setting:[], |
| | | pay_price:0, |
| | | }; |
| | | }, |
| | | onLoad(e){ |
| | |
| | | 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 => { |
| | |
| | | <!--基本信息--> |
| | | <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> |
| | | |
| | |
| | | </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> |
| | | |
| | | <!--底部按钮--> |
| | |
| | | <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"> |
| | |
| | | <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 { |
| | |
| | | pay_type: 20, |
| | | payData:[], |
| | | topay:false, |
| | | isEva:false, |
| | | }; |
| | | }, |
| | | onLoad(e) { |
| | |
| | | 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); |
| | | }, |
| | | |
| | | |
| | | /*隐藏支付方式*/ |
| | |
| | | |
| | | } |
| | | |
| | | }, |
| | | |
| | | 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); |
| | | }, |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | .product-content .content-box { |
| | | padding:5rpx 10rpx; |
| | | font-size: 36rpx; |
| | | padding:5rpx 40rpx; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .sage-bottom { |
| | |
| | | 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> |
| | |
| | | <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 }} |
| | |
| | | <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> |
| | |
| | | category_id:'', |
| | | product_type:0, |
| | | category_list:[], |
| | | is_check:0, |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | 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() { |
| | |
| | | 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) { |
| | |
| | | |
| | | /*跳转详情*/ |
| | | 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: '请开通查看权限' |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | } |
| | | }; |
| | |
| | | |
| | | .bargain-list .list .item { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | padding: 20rpx; |
| | | margin-bottom: 20rpx; |
| | | box-sizing: border-box; |
| | | border-radius: 16rpx; |
| | |
| | | flex: 1; |
| | | //padding-left: 20rpx; |
| | | overflow: hidden; |
| | | align-items: normal; |
| | | } |
| | | |
| | | .bargain-list .product-cover .people-num { |
| | |
| | | |
| | | .bargain-list .product-title { |
| | | width: 100%; |
| | | min-height: 40rpx; |
| | | height: 40rpx; |
| | | line-height: 40rpx; |
| | | font-size: 32rpx; |
| | | color: #333333; |
| | |
| | | .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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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')"> |
| | |
| | | </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> |
| | |
| | | <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')"> |
| | |
| | | /*顶部背景*/ |
| | | top_background: '', |
| | | user:[], |
| | | setting:[], |
| | | pay_price:0, |
| | | }; |
| | | }, |
| | | onLoad(e) { |
| | |
| | | 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'); |
| | | }, |
| | | |
| | | /*申请入驻*/ |
| | |
| | | .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> |
| | |
| | | <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)"> |
| | |
| | | </label> |
| | | </radio-group> |
| | | </view> |
| | | |
| | | |
| | | <!-- <view class="form-item border-b"> |
| | | <text class="field-name">需求所在地:</text> |
| | |
| | | image_list:[], |
| | | tag_list:[], |
| | | content:'', |
| | | product_content:'', |
| | | product_case:'', |
| | | name:'', |
| | | category_id:'', |
| | | finish_time:'请选择日期', |
| | |
| | | <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)"> |
| | |
| | | <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"> |
| | |
| | | image_list:[], |
| | | tag_list:[], |
| | | content:'', |
| | | product_content:'', |
| | | product_case:'', |
| | | name:'', |
| | | category_id:'', |
| | | finish_time:'请选择日期', |
| | |
| | | location_address: '', |
| | | short_address:'', |
| | | Address:[], |
| | | setting:[], |
| | | pay_price:0, |
| | | }; |
| | | }, |
| | | onLoad(e){ |
| | |
| | | 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 => { |
| | |
| | | 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); |
| | | }, |
| | | |
| | | } |
| | | |
| | |
| | | <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> |
| | |
| | | <script> |
| | | import PlusApi from '@/api/plus/bonus.js'; |
| | | import Product from '@/components/product/Product'; |
| | | import UserApi from '@/api/user.js'; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | form: { |
| | | is_open: '', |
| | | limit_buy: '', |
| | | become_agent: '' |
| | | become_agent: '', |
| | | referee_grade_ids: [], |
| | | referee_grade_count: '' |
| | | }, |
| | | /*是否打开产品弹出层*/ |
| | | isproduct: false, |
| | | /*是否正在加载*/ |
| | | loading: false |
| | | loading: false, |
| | | userGradeList:[] |
| | | }; |
| | | }, |
| | | props:{ |
| | |
| | | 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() { |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | userModel:{}, |
| | | /*是否打开修改*/ |
| | | open_edit:false, |
| | | /*等级*/ |
| | | gradeList: [], |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | 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; |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | formData: {}, |
| | | }; |
| | | }, |
| | | props: { |
| | | open_edit: Boolean, |
| | | userModel: Object |
| | | }, |
| | | props: ['open_edit','userModel','gradeList'], |
| | | watch: { |
| | | open_edit: function(n, o) { |
| | | if (n != o) { |
| | |
| | | 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({ |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | 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); |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | <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 Tag from './tag/index'; |
| | | import Cash from './cash/Cash'; |
| | | import Setting from './setting/Setting'; |
| | | import Grade from './grade/index'; |
| | | |
| | | |
| | | export default { |
| | |
| | | Tag, |
| | | Cash, |
| | | Setting, |
| | | Grade, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | 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', |
| | |
| | | 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: '发布设置', |
| | |
| | | <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> |
| | | |
| | | <!--结算--> |
| | |
| | | <!--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> |
| | | |
| | | |
| New file |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | userModel:{}, |
| | | /*是否打开修改*/ |
| | | open_edit:false, |
| | | /*等级*/ |
| | | gradeList: [], |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | 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; |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | formData: {}, |
| | | }; |
| | | }, |
| | | props: { |
| | | open_edit: Boolean, |
| | | userModel: Object |
| | | }, |
| | | props: ['open_edit','userModel','gradeList'], |
| | | watch: { |
| | | open_edit: function(n, o) { |
| | | if (n != o) { |
| | |
| | | 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({ |
| | |
| | | <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> |
| | |
| | | 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() { |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <script> |
| | | import PlusApi from '@/api/plus/vip.js'; |
| | | import Product from '@/components/product/Product'; |
| | | import UserApi from '@/api/user.js'; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | pjaward: '0', |
| | | pjaward_level: '1' |
| | | }, |
| | | userGradeList:[], |
| | | /*是否打开产品弹出层*/ |
| | | isproduct: false, |
| | | /*是否正在加载*/ |
| | |
| | | }, |
| | | 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; |
| | |
| | | <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> |
| | |
| | | |
| | | <!--编辑用户--> |
| | | <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() { |
| | |
| | | pageSize: 10, |
| | | /*是否打开编辑*/ |
| | | open_edit: false, |
| | | open_dialog: false, |
| | | /*当前编辑的用户模型*/ |
| | | userModel: {} |
| | | }; |
| | | }, |
| | | components: { |
| | | SubUser, |
| | | Edit |
| | | }, |
| | | created() { |
| | |
| | | } |
| | | }); |
| | | }, |
| | | /*打开下级用户弹窗*/ |
| | | openSubUser(e){ |
| | | this.userModel=e; |
| | | this.open_dialog=true; |
| | | }, |
| | | |
| | | /*关闭下级用户弹窗*/ |
| | | closeFunc(){ |
| | | this.open_dialog=false; |
| | | }, |
| | | |
| | | /*修改点击*/ |
| | | editClick(item) { |
| New file |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | 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: '', |
| | |
| | | </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> |
| | |
| | | area_id:'', |
| | | is_independent:0, |
| | | is_newcomer:0, |
| | | is_repurchase:0 |
| | | is_repurchase:0, |
| | | is_release:0 |
| | | }, |
| | | }, |
| | | logo_file_path: '', |
| New file |
| | |
| | | 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; |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | setTimeout(()=>{ |
| | | this.init(); |
| | | },100) |
| | | |
| | | this.init(); |
| | | |
| | | }, |
| | | beforeDestroy() { |
| | |
| | | <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> |
| | |
| | | <script> |
| | | import PlusApi from '@/api/plus/bonus.js'; |
| | | import Product from '@/components/product/Product'; |
| | | import UserApi from '@/api/user.js'; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | form: { |
| | | is_open: '', |
| | | limit_buy: '', |
| | | become_agent: '' |
| | | become_agent: '', |
| | | referee_grade_ids: [], |
| | | referee_grade_count: '' |
| | | }, |
| | | /*是否打开产品弹出层*/ |
| | | isproduct: false, |
| | | /*是否正在加载*/ |
| | | loading: false |
| | | loading: false, |
| | | userGradeList:[] |
| | | }; |
| | | }, |
| | | props:{ |
| | |
| | | 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() { |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <script> |
| | | import PlusApi from '@/api/plus/vip.js'; |
| | | import Product from '@/components/product/Product'; |
| | | import UserApi from '@/api/user.js'; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | 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, |
| | | /*是否正在加载*/ |
| | |
| | | }, |
| | | 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; |