Commit fb8deaf4 authored by clone's avatar clone

Merge branch 'chat_0705' into test

# Conflicts: # application/api_broker/controller/CollectHouse.php # public/app/dist/index.html # public/app/dist/static/css/app.35732bba1c0e8d8ebb91e736773eb2ba.css # public/app/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
parents cb988fca 2767cdbf
......@@ -13,6 +13,7 @@ use app\api\untils\GenerateCodeUntils;
use app\api\untils\JwtUntils;
use app\api\untils\MessageUntils;
use app\api_broker\extend\Basic;
use app\api_broker\service\BrokerService;
use app\api_broker\service\OrderLogService;
use app\model\AAgents;
use app\model\ABindingDevice;
......@@ -28,12 +29,14 @@ class Broker extends Basic
{
protected $a_agents;
protected $aBD;
protected $brokerService;
public function __construct(Request $request = null)
{
parent::__construct($request);
$this->a_agents = new AAgents();
$this->aBD = new ABindingDevice();
$this->a_agents = new AAgents();
$this->aBD = new ABindingDevice();
$this->brokerService = new BrokerService();
}
/**
......@@ -138,7 +141,7 @@ class Broker extends Basic
return $this->response(101, '密码错误');
}
//判断设备id是否存在
$is_login = $this->judgeBand($params["device_id"], $agents_data['id'], $params["model"], 0, $params["push_id"]);
$is_login = $this->brokerService->judgeBand($params["device_id"], $agents_data['id'], $params["model"], 0, $params["push_id"], 0);
if (!$is_login) {
return $this->response("102", "该账号没有绑定该手机,请致电人事进行绑定。");
}
......@@ -181,7 +184,7 @@ class Broker extends Basic
return $this->response("101", $checkResult);
}
$is_visit = $this->judgeBand($params["device_id"], $params["agent_id"], "", 1, "");
$is_visit = $this->brokerService->judgeBand($params["device_id"], $params["agent_id"], "", 1, "", 0);
if ($is_visit) {
return $this->response("200", "success", []);
} else {
......@@ -189,57 +192,6 @@ class Broker extends Basic
}
}
/**
* 判断设备绑定关系
* @param string $device_id
* @param int $agent_id
* @param string $model
* @param int $type 0提交记录到后台, 1仅仅判断
* @param string $push_id
* @return bool
*/
private function judgeBand(string $device_id, int $agent_id, string $model, int $type, string $push_id): bool
{
$params["agent_id"] = $agent_id;
$result = $this->aBD->getDeviceByAgentId($params);
if (count($result) <= 0) {
//新增设备绑定关系 默认直接登陆
if ($type == 0)
$this->aBD->addDevice([ "device_id" => $device_id,
"agent_id" => $agent_id,
"model" => $model,
"push_id" => $push_id,
"is_forbidden" => 0 ]);
return true;
}
$is_exits = false;
foreach ($result as $item) {
if ($device_id == $item["device_id"]) {
//当个推返回的id改变时则更新记录
if (!empty($push_id) && $push_id != $item["push_id"]){
$this->aBD->updateDevice([ "id" => $item["id"], "push_id" => $push_id ]);
}
if ($item["is_forbidden"] == 0) {
return true;
} elseif ($item["is_forbidden"] == 1) { //已存在申请关系
$is_exits = true;
}
}
}
if (!$is_exits && $type == 0)
//新增申请绑定关系,需要后台同意登陆
$this->aBD->addDevice([ "device_id" => $device_id,
"agent_id" => $agent_id,
"model" => $model,
"push_id" => $push_id,
"is_forbidden" => 1 ]);
return false;
}
/**
* 绑定或者解绑
* @return \think\Response
......@@ -417,7 +369,6 @@ class Broker extends Basic
}
/**
* 客户动态展示加搜索加客户详情
*
......@@ -465,7 +416,7 @@ class Broker extends Basic
}*/
$user = new Users();
$user_res = $user->useraction_search_user_res($user_id);
$user_res = $user->useraction_search_user_res($user_id, 1);
$user_res['user_pic'] = HEADERIMGURL . $user_res['user_pic'];
......@@ -483,12 +434,12 @@ class Broker extends Basic
//是否被收藏
$data["is_collect"] = 2;
//先判断是否已经存在数据
$field = 'id,status';
$get_params['agents_id'] = $params["agent_id"];
$get_params['user_id'] = $params["user_id"];
$collect_house = new ACollectUser();
$res = $collect_house->getCollectUser($field,$get_params);
if($res && ($res[0]['status'] == 1)){//如果存在
$field = 'id,status';
$get_params['agents_id'] = $params["agent_id"];
$get_params['user_id'] = $params["user_id"];
$collect_house = new ACollectUser();
$res = $collect_house->getCollectUser($field, $get_params);
if ($res && ($res[0]['status'] == 1)) {//如果存在
$data["is_collect"] = 1;
}
return $this->response("200", "success!", $data);
......
......@@ -51,8 +51,10 @@ class Client extends Basic
$this->params['user_name'] = $this->params['user_nick'];
}
$data = [];
if (!empty($this->params['user_name']) || !empty($this->params['id'])) {
$data = [];
if ($this->request->isPost()) {
if (!empty($this->params['id'])) {
......@@ -67,10 +69,8 @@ class Client extends Basic
$remark = '修改为'.$agent_data['name'].'-'.$agent_data['phone'];
$push = new PushMessageService();
//A修改了刘小姐(Id:0822)的客方
$ccr_agent_data = $agent->getAgentInfo('name,phone', $this->params['ccr_id']);
$content = "【{$ccr_agent_data['name']}-{$ccr_agent_data['phone']}修改了{$user_agent_id['user_name']}(id:{$user_agent_id['id']})客方】";
// $content = "【你的客户客方被修改为{$agent_data['name']}-{$agent_data['phone']}】";
$push->pushMessageById($user_agent_id['agent_id'], '客方修改', $content, 'user_info', $user_agent_id['id']);
$this->operating_records($this->params['ccr_id'], $type=3, $remark,0,$this->params['id']);
}
......@@ -85,11 +85,21 @@ class Client extends Basic
$agent_data = $table->getAgentInfo('name,phone',$this->params['agents_id']);
$remark = '新增为'. $agent_data['name'].'-'.$agent_data['phone'];
$this->operating_records($this->params['ccr_id'], $type=3, $remark,0,$data['id']);
} else {
$this->code = 101;
$this->msg = '该用户已存在';
}
}
switch ($data['start']) {
case -1 :
$this->code = 101;
$this->msg = '该用户已存在';break;
case -2 :
$this->code = 101;
$this->msg = '此号码为虚拟号码';break;
case -3 :
$this->code = 101;
$this->msg = '没有新增VIP权限';break;
}
} else {
$data['start'] = $this->user->getClient($this->params['id']);
}
......@@ -97,7 +107,7 @@ class Client extends Basic
$this->code = 101;
$this->msg = 'user_name or id is null';
}
return $this->response($this->code, $this->msg,$data);
return $this->response($this->code, $this->msg, $data);
}
......
......@@ -132,8 +132,10 @@ class CollectHouse extends Basic
$res = $this->aCollectHouse->getCollectList($pageNo,$pageSize,$field,$get_params);
$look_shop_service = new LookShopService();
foreach ($res as $key => $val) {
$isLook = $look_shop_service->isLooked($params["agents_id"], $val["id"]);
$res[$key]["is_look"] = $isLook;
$isLook = $look_shop_service->isLooked($params["agents_id"], $val["id"]);
$res[$key]["is_look"] = $isLook;
$res[$key]["rent_price"] = $val["rent_price"] * 0.01;
$res[$key]["rent_price"] = $val["rent_price"] * 0.01;
}
......
......@@ -136,13 +136,14 @@ class Feed extends Basic
$where['status'] = 0;
$data = $push->getFeedInfo($field, $where);
if (isset($this->params['type']) && $this->params['type'] == 0) {
if ($data['type'] == 0) {
$data['type_string'] = '成功下定';
}
if ($data['type'] == 1) {
$data['type_string'] = '公告';
}
return $this->response(200, "", $data);
}
}
\ No newline at end of file
......@@ -129,7 +129,7 @@ class News extends Basic
public function getNewsLabel()
{
$label = new SLabel();
$data = $label->getList(1, 200, '', 'id,label_name', [ 'status' => 0 ]);
$data = $label->getList(1, 200, '', 'id,label_name,icon', [ 'status' => 0 ]);
return $this->response(200, '', $data);
}
......
......@@ -373,7 +373,11 @@ class OrderLog extends Basic
/**
* 报备时间轴
*
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectReportAll()
{
......@@ -390,7 +394,11 @@ class OrderLog extends Basic
/**
* 报备时间轴
*
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectReportAllV2()
{
......@@ -405,6 +413,27 @@ class OrderLog extends Basic
return $this->response("200", "request success", $data);
}
/**
* 报备时间轴
*
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectReportAllV3()
{
$params = $this->params;
/* $params = array(
"order_id" => 38002,
);*/
if (!isset($params["order_id"])) {
return $this->response("101", "请求参数错误");
}
$data = $this->service_->selectListByOrderNoV3($params["order_id"]);
return $this->response("200", "request success", $data);
}
/**
* 修改成单状态
* @return \think\Response
......@@ -503,7 +532,7 @@ class OrderLog extends Basic
header('Access-Control-Allow-Origin:*');
$params = $this->params;
/* $params = array(
"bargain_id" => 469,
"bargain_id" => 705,
);*/
if (!isset($params["bargain_id"])) {
return $this->response("101", "请求参数错误");
......
......@@ -37,7 +37,7 @@ class Performance extends Basic
{
header('Access-Control-Allow-Origin:*');
$params = $this->params;
/* $params = array(
/*$params = array(
"agent_id" => 80,
"type" => 3, //1表示个人业绩排行 2门店 3区域
"end_day" => "",
......@@ -46,9 +46,12 @@ class Performance extends Basic
if (!isset($params["agent_id"]) || !isset($params["type"])) {
return $this->response("101", "请求参数错误");
}
//默认排序一周
//默认排序一周 2018-07-18改为本月
$end_day = !empty($params["end_day"]) ? $params["end_day"] : date("Y-m-d", strtotime("-1 day"));
$start_day = !empty($params["start_day"]) ? $params["start_day"] : date("Y-m-d", strtotime("-7 day"));
//$start_day = !empty($params["start_day"]) ? $params["start_day"] : date("Y-m-d", strtotime("-7 day"));
$start_day = !empty($params["start_day"]) ? $params["start_day"] : date("Y-m-01", time());
$list = $this->service_->totalAgent($params["agent_id"], $params["type"], $end_day, $start_day);
//dump($list);
if (count($list) > 0) {
......
......@@ -123,22 +123,27 @@ class Report extends Basic
*/
public function reportListForPc()
{
/* $params = array(
"agent_id" =>10013,
"type" => 1,//1表示全部 2表示进场 3 表示收款 4成交报告
"page_no"=>1,
"page_size"=>15
);*/
$params = $this->params;
$params = $this->params;
/*$params = array(
"AuthToken" =>'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7ImlkIjoxLCJuYW1lIjoiXHU3YmExXHU3NDA2XHU1NDU4MTEiLCJwaG9uZSI6InJvb3QiLCJsZXZlbCI6MTB9LCJ0aW1lU3RhbXBfIjoxNTMxODA3NTAxfQ.zQp_zyCknWsdJbmNvsFOzuuq-C_zeUijYUWomBHeIFU',
"agent_id" =>1,
"type" => 1,//1表示全部 2表示进场 3 表示收款 4成交报告
"page_no"=>0,
"page_size"=>15,
"create_time_start"=>'2018-07-13',
"create_time_end"=>'2018-07-13',
"district_id"=>5,
);*/
if (!isset($params["agent_id"]) || !isset($params["type"])) {
return $this->response("101", "请求参数错误");
}
$pageNo = empty($params['page_no']) ? 1 : $params['page_no'];
$pageSize = empty($params['page_size']) ? 15 : $params['page_size'];
$field = "a.id,a.user_id,a.user_phone,a.user_name,a.predict_see_time,a.create_time,b.id as order_id,b.order_no,b.house_id,b.house_title";
$field = "a.id,a.user_id,a.report_agent_name,a.report_agent_phone,a.user_phone,a.user_name,a.predict_see_time,a.create_time,b.id as order_id,b.order_no,b.house_id,b.house_title";
$params["report_agent_id"] = $params["agent_id"];
......
......@@ -48,6 +48,7 @@ class Shop extends Basic
public function getShopList()
{
header('Access-Control-Allow-Origin:*');
$params = $this->params;
/*$params = array(
"site_area" => 4, //来源 1c首页 2c搜索 3b首页 4b搜索 5b报备
......@@ -174,7 +175,7 @@ class Shop extends Basic
}
}
}
$order_ = "id desc";
$order_ = "status asc,id desc";
break;
default:
return $this->response("101", "请求数据异常");
......@@ -193,6 +194,7 @@ class Shop extends Basic
$conditions['status'] = !empty($params['status']) ? $params['status'] : array( 'in', "1,2" ); //只显示上架或下架的
}
$result = $this->gHousesModel->getHousesList($pageNo, $pageSize, $order_, $field, $conditions, $spTagArr);
//获取图片信息
foreach ($result as $key => $val) {
$result[$key]["api_path"] = CK_IMG_URL . 'images/';
......
......@@ -35,19 +35,23 @@ class Statement extends Basic
{
header('Access-Control-Allow-Origin:*');
$params = $this->params;
/*$params = array(
"agent_id" => 10015,
/*$params = array(
"agent_id" => 5739,//5739 总监 5740店长
"time_start" => date("Y-m-d", time()),
"time_end" => date("Y-m-d", time()) . " 23:59:59",
"time_end" => date("Y-m-d", time()),
);*/
if (!isset($params["agent_id"]) || !isset($params["time_start"]) || !isset($params["time_end"])) {
return $this->response("101", "请求参数错误");
}
$day_or_week = $params["time_start"] == $params["time_end"] ? 'day' : 'week';
$time_end = $params["time_end"] . " 23:59:59";
try {
$result = $this->service_->selectStatementByAgentId($params["agent_id"], $params["time_start"], $time_end);
$result = $this->service_->selectStatementByAgentId($params["agent_id"], $params["time_start"], $time_end,$day_or_week);
if (count($result) > 0) {
return $this->response("200", "request success", $result);
} else {
......
<?php
namespace app\api_broker\service;
use app\model\ABindingDevice;
/**
* Created by PhpStorm.
* User : zw
* Date : 2018/7/18
* Time : 18:37
* Intro:
*/
class BrokerService
{
protected $aBD;
public function __construct()
{
$this->aBD = new ABindingDevice();
}
/**
* 判断设备绑定关系
* @param string $device_id
* @param int $agent_id
* @param string $model
* @param int $type 0提交记录到后台, 1仅仅判断
* @param string $push_id
* @param int $is_pc 0 app 1pc端
* @return bool
*/
public function judgeBand(string $device_id, int $agent_id, string $model, int $type, string $push_id, int $is_pc): bool
{
$params["agent_id"] = $agent_id;
$params["is_pc"] = $is_pc;
$result = $this->aBD->getDeviceByAgentId($params);
if (count($result) <= 0) {
//新增设备绑定关系 默认直接登陆
if ($type == 0)
$this->aBD->addDevice([ "device_id" => $device_id,
"agent_id" => $agent_id,
"model" => $model,
"push_id" => $push_id,
"is_forbidden" => 0,
"is_pc" => $is_pc ]);
return true;
}
$is_exits = false;
foreach ($result as $item) {
if ($device_id == $item["device_id"]) {
//当个推返回的id改变时则更新记录
if (!empty($push_id) && $push_id != $item["push_id"]) {
$this->aBD->updateDevice([ "id" => $item["id"], "push_id" => $push_id ]);
}
if ($item["is_forbidden"] == 0) {
return true;
} elseif ($item["is_forbidden"] == 1) { //已存在申请关系
$is_exits = true;
}
}
}
if (!$is_exits && $type == 0)
//新增申请绑定关系,需要后台同意登陆
$this->aBD->addDevice([ "device_id" => $device_id,
"agent_id" => $agent_id,
"model" => $model,
"push_id" => $push_id,
"is_forbidden" => 1,
"is_pc" => $is_pc ]);
return false;
}
}
\ No newline at end of file
......@@ -366,7 +366,13 @@ class OrderLogService
return $this->sortByTime($result);
}
/**
* @param $order_id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectListByOrderNoV2($order_id)
{
$result = [];
......@@ -464,6 +470,111 @@ class OrderLogService
return $this->sortByTime($result);
}
/**
* @param $order_id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectListByOrderNoV3($order_id)
{
$result = [];
$sort = 0;
//todo 1.验证订单是否存在
$orderModel = new OrderModel();
$oReportModel = new OReportModel();
$oMarchInModel = new OMarchInModel();
$followUpLogModel = new FollowUpLogModel();
$oPayLogModel = new OPayLogModel();
$oRefundModel = new ORefundModel();
$oBargainModel = new OBargainModel();
$orderData = $orderModel->selectOrderByOrderId("f_id,house_title", [ "order_id" => $order_id ]);
//dump($orderData);
if (count($orderData) <= 0) {
return [ "101", "找不到此订单编号" ];
}
$report_id = $orderData[0]["f_id"];
$field_report = "a.id,a.report_agent_id,a.report_agent_phone,a.report_agent_name,a.report_store_id,
a.user_id,a.user_phone,a.user_name,a.vehicle,a.intro,a.predict_see_time,a.create_time,b.store_name,c.district_name";
$reportData = $oReportModel->selectReportInfoById($field_report, [ "id" => $report_id ]);
if (count($reportData) == 0) {
return [ "101", "报备记录未找到" ];
}
//报备
$reportData[0]["step_name"] = "report";
$reportData[0]["house_title"] = $orderData[0]["house_title"];
$result[$sort++] = $reportData[0];
//进场 march in
$field_march_in = "id,reception_id,reception_name,report_id,order_no,march_in_remark,march_in_img,march_in_area,create_time";
$marchInData = $oMarchInModel->selectMarchInByOrderNo($field_march_in, [ "order_id" => $order_id ]);
if (count($marchInData) > 0) {
foreach ($marchInData as $k => $v) {
$v["step_name"] = "march_in";
$v["img_path"] = CHAT_IMG_URL;
$result[$sort++] = $v;
}
}
//跟进
$field_follow_up = "id,agent_id,agent_name,user_type,decision_maker,industry_type,area_requirement,price_requirement,province,city,
district,business_area,explain,explain_img,create_time";
$followUpLogData = $followUpLogModel->selectFollowUpListByReportId($field_follow_up, [ "report_id" => $report_id ]);
if (count($followUpLogData) > 0) {
foreach ($followUpLogData as $k => $v) {
$v["step_name"] = "follow_up_log";
$v = $this->convertFollowUp($v);
$v["img_path"] = CHAT_IMG_URL;
$result[$sort++] = $v;
}
}
//收款
$field_pay_log = "id,order_no,father_id,order_id,agent_id,agent_name,type,pay_type,money,house_number,industry_type,
remark,transfer_img,real_money,source,create_time";
$payLogData = $oPayLogModel->selectPayLogByOrderNo($field_pay_log, [ "order_id" => $order_id ]);
if (count($payLogData) > 0) {
$sortPayLogData = $this->arr2tree($payLogData);
foreach ($sortPayLogData as $k => $v) {
$v["step_name"] = "pay_log";
$v["img_path"] = CHAT_IMG_URL;
$result[$sort++] = $v;
}
}
//退款
$field_refund = "id,report_id,agent_id,agent_name,order_no,order_id,refund_money,status,name,bank,card_no,
remark,remark_img,create_time";
$refundData = $oRefundModel->selectRefundByOrderNo($field_refund, [ "order_id" => $order_id ]);
if (count($refundData) > 0) {
foreach ($refundData as $k => $v) {
$v["step_name"] = "refund";
$v["img_path"] = CHAT_IMG_URL;
$result[$sort++] = $v;
}
}
//成交报告
$field_bargain = "a.id,a.father_id,a.house_number,a.is_open,a.report_id,a.order_id,a.trade_type,a.submit_agent_id,a.industry_type,
a.estimated_receipt_date,a.submit_agent_name, a.price,a.commission,a.role,a.agent_id,a.scale,a.scale_fee,a.create_time,b.name,b.phone,a.is_commission";
$bargainData = $oBargainModel->selectBargainListByOrderNo($field_bargain, [ "order_id" => $order_id ]);
if (count($bargainData) > 0) {
$bargain_data_arr = $this->arr2TreeBargain($bargainData);
foreach ($bargain_data_arr as $k2 => $v2) {
$v2["step_name"] = "bargain";
$result[$sort++] = $v2;
}
}
return $this->sortByTime($result);
}
public function arr2tree($list)
{
$tree = $trees = [];
......@@ -493,11 +604,45 @@ class OrderLogService
return $trees;
}
/**
* @param $list
* @return array
*/
public function arr2TreeBargain($list) {
$tree = $trees = [];
foreach ($list as $key => $item) {
if ($item["father_id"] == 0) {
$list[$key]["father_id"] = $item["id"];
}
}
foreach ($list as $k => $v) {
$tree[$v["father_id"]]['create_time'] = $v['create_time'];
if ($v['father_id'] == $v['id']) {
$tree[$v["father_id"]]['trade_type'] = $v['trade_type'];
$tree[$v["father_id"]]['house_number'] = $v['house_number'];
$tree[$v["father_id"]]['industry_type'] = $v['industry_type'];
$tree[$v["father_id"]]['price'] = $v['price'];
$tree[$v["father_id"]]['commission'] = $v['commission'];
$tree[$v["father_id"]]['is_open'] = $v['is_open'];
}
$tree[$v["father_id"]]['list_array'][] = $v;
}
return $tree;
}
/**
* 查询流程 客户动态
*
* @param $user_id
* @param $search | null
* @return array
* @param string $search
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function selectListByUserId($user_id, $search = "")
{
......@@ -974,13 +1119,25 @@ class OrderLogService
$params["ids"] = $ids;
$bargainModel = new OBargainModel();
$filed = "a.id,a.house_number,a.commission,a.agent_id,a.create_time,b.user_phone,b.user_name,b.user_id,c.id as order_id,
$filed = "a.id,a.father_id,a.house_number,a.commission,a.agent_id,a.create_time,b.user_phone,b.user_name,b.user_id,c.id as order_id,
d.id as house_id,d.internal_title,d.internal_address";
$result = $bargainModel->selectBargainList($filed, $params, $pageNo, $pageSize);
$list = [];
foreach ($result as $k => $v) {
$result[$k]["create_time"] = date("Y-m-d", strtotime($v["create_time"]));
$father_id = $v["father_id"];
if($father_id > 0 && in_array($father_id, $list)){
unset($result[$k]);
}else{
$result[$k]["create_time"] = date("Y-m-d", strtotime($v["create_time"]));
$result[$k]["id"] = $v["father_id"];
array_push($list,$father_id);
}
}
return $result;
$sortResult = [];
foreach ($result as $k => $v) {
$sortResult[] = $v;
}
return $sortResult;
}
......@@ -1043,7 +1200,7 @@ class OrderLogService
$bargainModel = new OBargainModel();
$bargain_info_filed = "a.id,a.house_number,a.account_time,a.account_statement,a.father_id,a.is_open,a.trade_type,
a.price,a.industry_type,a.estimated_receipt_date,a.commission,c.id,c.internal_title,c.internal_address,d.user_id,d.user_phone,d.user_name";
a.price,a.industry_type,a.estimated_receipt_date,a.commission,c.id as house_id,c.internal_title,c.internal_address,d.user_id,d.user_phone,d.user_name";
$result = [];
$bargainInfo = $bargainModel->selectBargainDetail($bargain_info_filed, $params);
......@@ -1066,6 +1223,7 @@ class OrderLogService
b.cash,b.practical_fee,b.service_charge";
$cent_commission_arr = $bargainModel->selectBargainCommission($field_commission, [ "bargain_id" => $bargain_id ]);
//dump($cent_commission_arr);
$cent_commissions = [];
$result["cent_commission"] = $this->recursion($cent_commission_arr, $cent_commissions, 0);
......
......@@ -99,12 +99,17 @@ class PushMessageService
* 成交报告推送(feed流喜报)
*
* @param int $report_id
* @return bool|void
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function pushBargainMessage($report_id = 0)
{
if (!$this->pushAllow()) {
return false;
}
$report = new OReportModel();
$feed = new PushFeed();
$agent = new AAgents();
......@@ -153,9 +158,14 @@ class PushMessageService
* @param string $title
* @param string $content
* @param string $url
* @return bool|void
*/
public function pushAll(string $title = '', string $content = '', string $url = '')
{
if (!$this->pushAllow()) {
return false;
}
$url = $this->push->http_host() . '/' . $url;
$this->push->push_message_for_all($title, $content, $url);
return;
......@@ -238,4 +248,15 @@ class PushMessageService
return true;
}
/**
* @return bool
*/
public function pushAllow() {
$url = $this->push->http_host();
if ($url == 'http://api.tonglianjituan.com' || $url == 'https://api.tonglianjituan.com') {
return true;
}
return false;
}
}
\ No newline at end of file
......@@ -213,7 +213,7 @@ class ReportService
}
$data["result"] = $result;
$data["total"] = $count[0]["total"];
$data["total"] = $count[0]["total"] ? $count[0]["total"] : 0;
return $data;
}
return null;
......
......@@ -28,7 +28,7 @@ class VerifyService
*/
public function getAgentsByAgentId($agent_id)
{
$params["id"] = $agent_id;
$params["id"] = $agent_id;
$result = $this->agentModel->searchAgentsByKeyword("id,store_id,district_id,level", $params);
if (count($result) > 0) {
$arr_list = [];
......
<?php
namespace app\api_broker\service;
use app\model\AAgents;
use app\model\AuthGroup;
use app\model\AuthRule;
/**
* Created by PhpStorm.
* User: zhuwei
* User: zhu wei
* Date: 2018-07-10
* Time: 17:09:38
*/
class VipService
{
/**
* 是否具有查看vip客户权限
*
* @param $id 经纪人ID
* @param string $name
* @return int 是否可以查看vip客户 0:可查看 1:不可查看
*/
public function vip($id)
public function vip($id, $name = 'auth_vip')
{
//$id= 5743;
$agent = new AAgents();
$fields='auth_group_id';
$agent = new AAgents();
$fields = 'auth_group_id';
$auth_group_id = $agent->getAgentsById($id, $fields);
$auth_group = New AuthGroup();
$id= $auth_group_id;
$fields='rules';
$rules = $auth_group->getAuthGroupById($id, $fields);
$auth_group = New AuthRule();
$name= 'auth_vip';
$fields='id';
$sauth_ruel_id = $auth_group->getAuthRuleByName($name, $fields);
$id = $auth_group_id;
$fields = 'rules';
$rules = $auth_group->getAuthGroupById($id, $fields);
$auth_group = New AuthRule();
$fields = 'id';
$auth_rule_id = $auth_group->getAuthRuleByName($name, $fields);
$rules_arr = explode(',', $rules);
$rules_arr = explode(',',$rules);
//dump($rules_arr);
if (in_array($sauth_ruel_id, $rules_arr)) {
if (in_array($auth_rule_id, $rules_arr)) {
return 0;
} else {
return 1;
}
}
}
\ No newline at end of file
......@@ -78,9 +78,13 @@
<p>客源编号:<span id="customer_code"></span></p>
<!--<p>客户姓名:<span class="edit-btn"><span id="customer_name"></span><img class="edit-icon" src="/app/images/ic_bianji.png" /></span></p>
<p>性别:<span class="edit-btn"><span id="customer_sex"></span><img src="/app/images/boy_ic@2x.png" class="sex-icon" /><img class="edit-icon" src="/app/images/ic_bianji.png" /></span></p>-->
<p>客方:<span><span id="kefang"></span></span>
</p>
<p>新增时间:<span id="add_time"></span></p>
<p>客方:<span><span id="kefang"></span></span></p>
<p>邀请人:<span id="yaoqingren"></span></p>
<p>VIP客户(客方和有权限的人才能看到):<span id="isvip"></span></p>
<p>产生类型:<span id="create_type"></span></p>
<p>创建时间:<span id="add_time"></span></p>
<p>注册时间:<span id="register_time"></span></p>
<p>下载登录时间:<span id="login_time"></span></p>
</div>
<div class="record-main">
<p>修改客方日志</p>
......
......@@ -36,9 +36,9 @@
<tr class="table-tr-riwancheng">
<td>日完成</td>
<td>{{fangyuan}}</td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" v-model.number="keyuan" readonly /></td>
<td>{{daikan}}</td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" v-model.number="yeji_day" /></td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" /></td>
</tr>
......@@ -57,7 +57,27 @@
<td>差额</td>
<td>人均</td>
</tr>
<tr is="my-tr1" v-for="(item, index) in trArr" v-bind:data="item" :peoplenum="peopleNum" :daynum="nowDayNum" :key="item.titlename"></tr>
<tr>
<td>业绩(元)</td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_wancheng" /></td>
<td>{{chae(yeji_yue_mubiao, yeji_yue_wancheng)}}</td>
<td>{{renjun(yeji_yue_wancheng)}}</td>
</tr>
<tr>
<td>实收(元)</td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_wancheng" /></td>
<td>{{chae(shishou_yue_mubiao, shishou_yue_wancheng)}}</td>
<td>{{renjun(shishou_yue_wancheng)}}</td>
</tr>
<tr>
<td>成交单数</td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_wancheng" readonly="" /></td>
<td>{{chae(chengjiao_yue_mubiao, chengjiao_yue_wancheng)}}</td>
<td>{{renjun(chengjiao_yue_wancheng)}}</td>
</tr>
</tbody>
</table>
......@@ -110,11 +130,11 @@
<td>开单</td>
</tr>
<tr>
<td><input type="number" placeholder="填写" v-model.number="daikan_self" readonly="" /></td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="text" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" v-model.number="kaidan_self" readonly="" /></td>
</tr>
</tbody>
</table>
......@@ -252,7 +272,7 @@
<tr>
<td>{{data.titlename}}</td>
<td><input type="number" placeholder="填写" v-model.number="mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="wancheng" /></td>
<td><input type="number" class="table-yue-td" placeholder="填写" v-model.number="wancheng" /></td>
<td>{{mubiao-wancheng}}</td>
<td>{{renjun}}</td>
</tr>
......
......@@ -32,7 +32,27 @@
<td>差额</td>
<td>人均</td>
</tr>
<tr is="my-tr1" v-for="(item, index) in trArr" v-bind:data="item" :peoplenum="peopleNum" :daynum="nowDayNum" :key="item.titlename"></tr>
<tr>
<td>业绩(元)</td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_wancheng" /></td>
<td>{{chae(yeji_yue_mubiao, yeji_yue_wancheng)}}</td>
<td>{{renjun(yeji_yue_wancheng)}}</td>
</tr>
<tr>
<td>实收(元)</td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_wancheng" /></td>
<td>{{chae(shishou_yue_mubiao, shishou_yue_wancheng)}}</td>
<td>{{renjun(shishou_yue_wancheng)}}</td>
</tr>
<tr>
<td>成交单数</td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_wancheng" readonly="" /></td>
<td>{{chae(chengjiao_yue_mubiao, chengjiao_yue_wancheng)}}</td>
<td>{{renjun(chengjiao_yue_wancheng)}}</td>
</tr>
<tr class="table-tr-textarea tr-padding20">
<td>业绩方面<br />的当前工<br />作重点</td>
<td colspan="4">
......@@ -143,15 +163,6 @@
</div>
<script src="/app/js/libs/require.min.js" data-js="/app/js/daily_achieve_mdzj.js" data-main="/app/js/main" data-norem="yes" defer async="true"></script>
<script type="text/x-template" id="tr1">
<tr>
<td>{{data.titlename}}</td>
<td><input type="number" placeholder="填写" v-model.number="mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="wancheng" /></td>
<td>{{mubiao-wancheng}}</td>
<td>{{renjun}}</td>
</tr>
</script>
</body>
</html>
\ No newline at end of file
......@@ -37,9 +37,9 @@
<tr class="table-tr-riwancheng">
<td>日完成</td>
<td>{{fangyuan}}</td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" v-model.number="keyuan_day" readonly="" /></td>
<td>{{daikan}}</td>
<td><input type="number" placeholder="填写" /></td>
<td><input type="number" placeholder="填写" v-model.number="yeji_day" /></td>
<td><input type="number" placeholder="填写" /></td>
</tr>
</tbody>
......@@ -56,12 +56,23 @@
<td>月完成</td>
<td>差额</td>
</tr>
<tr is="my-tr1" v-for="(item, index) in trArr" v-bind:data="item" :key="item.titlename"></tr>
<tr class="table-tr-textarea tr-padding60">
<td>数据情况总结</td>
<td colspan="3">
<div class="div-textarea" contenteditable="true">点击填写</div>
</td>
<tr>
<td>业绩(元)</td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="yeji_yue_wancheng" /></td>
<td>{{chae(yeji_yue_mubiao, yeji_yue_wancheng)}}</td>
</tr>
<tr>
<td>实收(元)</td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="shishou_yue_wancheng" /></td>
<td>{{chae(shishou_yue_mubiao, shishou_yue_wancheng)}}</td>
</tr>
<tr>
<td>成交单数</td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_mubiao" /></td>
<td><input type="number" placeholder="填写" v-model.number="chengjiao_yue_wancheng" readonly="" /></td>
<td>{{chae(chengjiao_yue_mubiao, chengjiao_yue_wancheng)}}</td>
</tr>
</tbody>
</table>
......
......@@ -90,7 +90,7 @@
<div class="fl">房东:</div>
<div class="fl">
<ul class="oh phone-list">
<li class="fl oh" v-for="(item, index) in d.landlord_phone" :key="index">{{item.name+'-'+hidePhone(item.phone)}}</li>
<li class="fl oh" v-for="(item, index) in d.landlord_phone" :key="index"><span>{{item.name+'-'+hidePhone(item.phone)}}</span><a href="javascript:;" class="call-tel-btn" @click="callHide(item.phone)">拨打</a></li>
</ul>
</div>
</td>
......@@ -130,6 +130,17 @@
<section v-show="dataCode==102">查看数量已达上限</section>
<section v-show="dataCode!=200"></section>
</main>
<div class="modal-area" v-show="maskShowFlag">
<div class="call-hide-area" v-show="callShowFlag">
<p>请使用{{user_info_obj.phone}}的手机拨打该虚拟号:</p>
<p>(使用其他手机号拨打是打不通的)</p>
<p>{{telHide}}</p>
<p>
<a href="javascript:;" @click="releaseTel">没打通</a>
<a href="javascript:;" @click="maskShowFlag=false">已拨打</a>
</p>
</div>
</div>
</div>
<script src="/app/js/libs/require.min.js" data-js="/app/js/shop_detail_pc.js" data-main="/app/js/main" data-norem="yes" defer async="true"></script>
</body>
......
......@@ -39,7 +39,7 @@
<p>入账金额:<span class="span-active">{{item2.money}}元</span></p>
</div>
</div>
<p v-if="item.step_name==='pay_log'">商铺号:<span class="span-active">{{item.list[0].house_number}}</span></p>
<p v-if="item.step_name==='pay_log'">商铺号:<span>{{item.list[0].house_number}}</span></p>
<p v-if="item.step_name==='pay_log'">业态/品牌:<span>{{item.list[0].industry_type}}</span></p>
<ol v-if="item.step_name==='pay_log'" class="li-img-list">
<li v-for="(item2, idnex2) in item.img">
......@@ -52,12 +52,19 @@
<p v-if="item.step_name==='refund'">银行及支行:<span>{{item.bank}}</span></p>
<p v-if="item.step_name==='refund'">卡号:<span>{{item.card_no}}</span></p>
<p v-if="item.step_name==='bargain'">成交类型:<span>{{switchTradeType(item.trade_type)}}</span></p>
<p v-if="item.step_name==='bargain'">商铺号:<span>{{item.house_number}}</span></p>
<p v-if="item.step_name==='bargain'">业态/品牌:<span>{{item.industry_type}}</span></p>
<p v-if="item.step_name==='bargain'">成交价:<span class="span-active">{{item.price}}元</span></p>
<p v-if="item.step_name==='bargain'">应收佣金:<span class="span-active">{{item.commission}}元</span></p>
<p v-if="item.step_name==='bargain'">分佣方:<span>{{switchRoleType(item.role)}}</span></p>
<p v-if="item.step_name==='bargain'">业务员:<span>{{item.name+item.phone}}</span></p>
<p v-if="item.step_name==='bargain'">分佣比例:<span>{{item.scale}}%</span></p>
<p v-if="item.step_name==='bargain'">应分佣金:<span class="span-active">{{item.scale_fee}}元</span></p>
<div v-if="item.step_name==='bargain'">
<div class="sp-pay-log-div" v-for="(item2, idnex2) in item.list_array">
<p>分佣方:<span>{{switchRoleType(item2.role)}}</span></p>
<p>业务员:<span>{{item2.name+item2.phone}}</span></p>
<p>分佣比例:<span>{{item2.scale}}%</span></p>
<p>应分佣金:<span class="span-active">{{item2.scale_fee}}元</span></p>
<p class="li-caozuoren">操作人:<span>{{item2.submit_agent_name}}</span></p>
</div>
</div>
<p v-if="item.step_name==='march_in'">补充说明:<span class="buchongshuoming">{{item.march_in_remark}}</span></p>
<p v-if="item.step_name==='follow_up_log'">补充说明:<span class="buchongshuoming">{{item.explain}}</span></p>
<p v-if="item.step_name==='march_in'">地址:{{item.march_in_area}}</p>
......@@ -75,7 +82,7 @@
<p v-if="item.step_name==='follow_up_log'" class="li-caozuoren">操作人:<span>{{item.agent_name}}</span></p>
<p v-if="item.step_name==='pay_log'" class="li-caozuoren">操作人:<span>{{item.list[0].agent_name}}</span></p>
<p v-if="item.step_name==='refund'" class="li-caozuoren">操作人:<span>{{item.agent_name}}</span></p>
<p v-if="item.step_name==='bargain'" class="li-caozuoren">操作人:<span>{{item.submit_agent_name}}</span></p>
<!--<p v-if="item.step_name==='bargain'" class="li-caozuoren">操作人:<span>{{item.submit_agent_name}}</span></p>-->
</div>
</div>
</div>
......
......@@ -20,22 +20,29 @@
<div id="screen_shot_area">
<div id="titile_temp"></div>
<div id="titile_before">2017年10月10日至2017年10月16日</div>
<!--<div id="titile_after">
<h3>明诚二手车市场</h3>
<p><span id="span_date">2017-10-1至2017-10-10</span><span id="span_reporter">汇报人:XXX</span></p>
</div>-->
<div id="tab_table_area">
<section>
<table border="0" cellspacing="0" cellpadding="0" class="table-type8">
<tbody>
<tr class="table-tr-single"><td colspan="4">月数据</td></tr>
<tr is="my-tr1" v-for="(item, index) in trArr" v-bind:data="item" :peoplenum="peopleNum" :key="item.titlename"></tr>
<tr>
<td>本月业绩(元)</td>
<td><input type="number" placeholder="填写" v-model.number="benyueYeji" /></td>
<td>人均业绩(元)</td>
<td>{{renjunYeji}}</td>
</tr>
<tr>
<td>本月实收(元)</td>
<td><input type="number" placeholder="填写" v-model.number="benyueShishou" /></td>
<td>人均实收(元)</td>
<td>{{renjunShishou}}</td>
</tr>
<tr>
<td>本月目标单数</td>
<td><input type="number" placeholder="填写" v-model.number="dsmb" /></td>
<td>本月完成单数</td>
<td><input type="number" placeholder="填写" v-model.number="dswc" /></td>
<td><input type="number" placeholder="填写" v-model.number="dswc" readonly /></td>
</tr>
<tr>
<td>单数差额</td>
......@@ -43,24 +50,12 @@
<td>人均单数</td>
<td>{{danshuRenjun}}</td>
</tr>
<!--<tr class="">
<td>本月业绩(元)</td>
<td><input type="number" placeholder="填写" /></td>
<td>人均业绩(元)</td>
<td></td>
</tr>
<tr class="">
<td>本月实收(元)</td>
<td><input type="number" placeholder="填写" /></td>
<td>人均实收(元)</td>
<td></td>
</tr>-->
<tr class="table-tr-single"><td colspan="4">周数据</td></tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" class="table-type1">
<tbody>
<tr class="table-tr-single"><td colspan="6">周数据</td></tr>
<tr class="table-tr-header">
<td></td>
<td>房源</td>
......
......@@ -19,29 +19,8 @@
</header>
<div class="header_seat"></div>
<div id="screen_shot_area">
<!--<div id="titile_temp"></div>-->
<!--<div id="titile_before">2017年10月10日至2017年10月16日</div>-->
<!--<div id="titile_after">
<h3>明诚二手车市场</h3>
<p><span id="span_date">2017-10-1至2017-10-10</span><span id="span_reporter">汇报人:XXX</span></p>
</div>-->
<div id="tab_table_area">
<section>
<!--<div class="mdzj_div_header">
<h2>承诺书(2017-12-02至2017-12-08)</h2>
<p class="mb30 p-bold">本人在此郑重承诺,在本周工作中数据承诺如下:</p>
<p class="mb20 p-bold">上周目标:区域团队总业绩<input type="number" placeholder="点击填写"/>元</p>
<p class="mb20 p-bold">下周目标:区域团队总业绩<input type="number" placeholder="点击填写"/>元</p>
<p class="p-bold">以上目标若完成将奖励:</p>
<div class="div-textarea div-textarea-mdzj-header" contenteditable="true">点击填写</div>
<p class="p-bold">以上目标未完成将处罚:</p>
<div class="div-textarea mb10 div-textarea-mdzj-header" contenteditable="true">点击填写</div>
<p class="mb20">监督人:区域所有店长</p>
<p>承诺人:<span id="mdzj_div_header_username"></span></p>
</div>-->
<table border="0" cellspacing="0" cellpadding="0" class="table-type2">
<tbody>
<tr class="table-tr-single table2-sp4">
......@@ -109,7 +88,7 @@
<td>本月目标单数</td>
<td><input type="number" placeholder="填写" class="danshu_mubiao" /></td>
<td>本月完成单数</td>
<td><input type="number" placeholder="填写" class="danshu_wancheng" /></td>
<td><input type="number" placeholder="填写" class="danshu_wancheng" readonly /></td>
</tr>
<tr>
<td>单数差额</td>
......@@ -144,62 +123,6 @@
</tbody>
</table>
<!--<table data-id="{3}" border="0" cellspacing="0" cellpadding="0" class="table-type8">
<tbody>
<tr class="table-tr-single">
<td colspan="4">{0}</td>
</tr>
<tr>
<td>上周业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_shangzhou" /></td>
<td>本月业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_benyue" /></td>
</tr>
<tr>
<td>本周业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_benzhou" /></td>
<td>人均业绩(元)</td>
<td class="yeji_renjun"></td>
</tr>
<tr>
<td>上升下滑(元)</td>
<td class="shangsheng_xiahua"></td>
<td>目前实收(元)</td>
<td><input type="number" placeholder="填写" class="shishou_muqian" /></td>
</tr>
<tr>
<td>盈亏(元)</td>
<td class="yingkui"></td>
<td>人均实收(元)</td>
<td class="shishou_renjun"></td>
</tr>
<tr>
<td>本月目标单数</td>
<td><input type="number" placeholder="填写" class="danshu_mubiao" /></td>
<td>本月完成单数</td>
<td><input type="number" placeholder="填写" class="danshu_wancheng" /></td>
</tr>
<tr>
<td>单数差额</td>
<td class="danshu_chae"></td>
<td>人均单数</td>
<td class="danshu_renjun" contenteditable="true"></td>
</tr>
<tr class="table-tr-textarea tr-padding20">
<td>点评</td>
<td colspan="3">
<div class="dianping div-textarea" contenteditable="true">点击填写</div>
</td>
</tr>
<tr class="canshu_data">
<td>上周人数</td>
<td class="renshu_shangzhou">{1}</td>
<td>本周人数</td>
<td class="renshu_benzhou">{2}</td>
</tr>
</tbody>
</table>-->
<table border="0" cellspacing="0" cellpadding="0" class="table-type2">
<tbody>
<tr class="table-tr-single">
......@@ -249,11 +172,67 @@
<img src="/app/images/jz2.gif" />
<p>正在加载...</p>
</div>
<script type="text/template" id="templet_table1">
<table data-id="{3}" border="0" cellspacing="0" cellpadding="0" class="table-type8">
<tbody>
<tr class="table-tr-single">
<td colspan="4">{0}</td>
</tr>
<tr>
<td>上周业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_shangzhou" value="{yeji_shangzhou}"></td>
<td>本月业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_benyue" value="{yeji_benyue}"></td>
</tr>
<tr>
<td>本周业绩(元)</td>
<td><input type="number" placeholder="填写" class="yeji_benzhou" value="{yeji_benzhou}"></td>
<td>人均业绩(元)</td>
<td class="yeji_renjun"></td>
</tr>
<tr>
<td>上升下滑(元)</td>
<td class="shangsheng_xiahua"></td>
<td>目前实收(元)</td>
<td><input type="number" placeholder="填写" class="shishou_muqian"></td>
</tr>
<tr>
<td>盈亏(元)</td>
<td class="yingkui"></td>
<td>人均实收(元)</td>
<td class="shishou_renjun"></td>
</tr>
<tr>
<td>本月目标单数</td>
<td><input type="number" placeholder="填写" class="danshu_mubiao"></td>
<td>本月完成单数</td>
<td><input type="number" placeholder="填写" class="danshu_wancheng" value="{danshu_benyue}" readonly="" /></td>
</tr>
<tr>
<td>单数差额</td>
<td class="danshu_chae"></td>
<td>人均单数</td>
<td class="danshu_renjun"></td>
</tr>
<tr class="table-tr-textarea tr-padding20">
<td>点评</td>
<td colspan="3">
<div class="dianping div-textarea" contenteditable="true">点击填写</div>
</td>
</tr>
<tr class="canshu_data">
<td>上周人数</td>
<td class="renshu_shangzhou">{1}</td>
<td>本周人数</td>
<td class="renshu_benzhou">{2}</td>
</tr>
</tbody>
</table>
</script>
<script type="text/javascript" src="/app/js/jquery.min.js"></script>
<script type="text/javascript" src="/app/js/layer.js"></script>
<script type="text/javascript" src="/app/js/html2canvas.min.js"></script>
<!--<script src="js/commonsrc.js?rev=9b53924ba8c611229acb21bed2e6eb52" charset="utf-8"></script>-->
<script src="/app/js/common.js?rev=3de1803db9bae97b86043d9c32b1fd0e" charset="utf-8"></script>
<script src="/app/js/weekly_achieve_mdzj.js?rev=5e477609b4c6b0ba7c630a19f144f0ca" charset="utf-8"></script>
<!--<script src="js/vconsole.min.js"></script>
......
......@@ -23,6 +23,7 @@ use app\model\HouseImgs;
use app\model\HouseinfoExts;
use app\model\HouseInfos;
use think\Cache;
use think\Exception;
use Think\Log;
class AppChat extends Basic
......@@ -71,32 +72,37 @@ class AppChat extends Basic
/**
* 验证用户角色,生成唯一id
* @return \think\Response
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function userChat()
{
/* $params = array(
"user_id" => 118,
"mobile" => "15821506182",
"source" => 1 //1经纪人 2用户
);*/
$params = $this->params;
if (!isset($params['user_id']) || !isset($params['mobile']) || !isset($params['source'])) {
/* $params = array(
"user_id" => 80,
"mobile" => "15821506182",
"is_self" => 1,//1是 2否
"source" => 1, //1经纪人 2用户
"device_id" => "ssss1231231123123",
"push_id" => "ssss1231231123123"
);*/
if (!isset($params['is_self']) || !isset($params['source']) || !isset($params['user_id']) || !isset($params['mobile'])) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误");
}
$user_id = $params['user_id'];
$mobile = $params['mobile'];
$source = $params['source'];
if (!$user_id || !$mobile || !$source) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误");
if ($params['is_self'] == 1 && (!isset($params['device_id']) || !isset($params['push_id']))) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误1");
}
$user_id = $params['user_id'];
$mobile = $params['mobile'];
$source = $params['source'];
$device_id = !isset($params['device_id']) ? null : $params['device_id'];
$push_id = !isset($params['push_id']) ? null : $params['push_id'];
$only_arr = $this->_chat->register($user_id, $mobile, $source);
$only_arr = $this->_chat->register($user_id, $mobile, $source, $device_id, $push_id);
if ($only_arr["code"] == 200) {
return $this->response("200", "success", [ "only_id" => $only_arr["only_id"] ]);
......@@ -132,30 +138,33 @@ class AppChat extends Basic
return $this->response("101", "request error ,not fund list", []);
}
/**
* 发送消息接口
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function pushMsg()
{
$params = $this->params;
/* $params = array(
'user_name' => 'cesh',
'msg_content' => 'ceshi666',
'target_type' => 'users',
'source' => '1',
'from' => 'user_1',
'type' => '1',
'is_user' => '0',
'target' => 'agent_5739',
);*/
if (!isset($params['target_type']) || !isset($params['target']) || !isset($params['type'])
|| !isset($params['msg_content']) || !isset($params['source']) || !isset($params['is_user']) || !isset($params['from'])) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误");
$checkResult = $this->validate($params, "ChatVerifyValidate.pushMsg");
if (true !== $checkResult) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, $checkResult);
}
/* $params = array(
'user_name' => 'cesh',
'msg_content' => 'ceshi666',
'target_type' => 'users',
'source' => '1',
'from' => 'admin',
'type' => '1',
'is_user' => '0',
'target' => '18112347151',
);*/
$user_name = isset($params['user_name']) ? $params['user_name'] : $params['from'];//用户昵称
$target_type = $params['target_type']; // 消息类型 users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
$target = $params['target']; //接受人 if target_type 群 者表示群id
......@@ -168,11 +177,11 @@ class AppChat extends Basic
return $this->response(ErrorCodeConst::ERROR_CODE_TARGET_TYPE_ERROR, "错误的消息类型");
}
$result = $this->_chat->sendMsg($user_name, $target_type, $target, $source, $is_user, $type, $msg_content, $from, $this->accessToken);
$result = $this->_chat->sendMsg($user_name, $target_type, $target, $source, $is_user, $type, $msg_content, $from);
if ($result) {
return $this->response("200", "", [ "msg" => "消息发送成功" ]);
} else {
return $this->response("101", "", [ "msg" => "消息内容错误" ]);
return $this->response("101", "", [ "msg" => "消息发送失败" ]);
}
}
......@@ -184,16 +193,18 @@ class AppChat extends Basic
public function getChatHistory()
{
$params = $this->params;
if (!isset($params['target_type']) || !isset($params['from']) || !isset($params['target'])) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误");
}
/* $params = array(
/* $params = array(
'target_type' => 'users', // 消息类型 users 用户消息。chatgroups: 群消息,chatrooms: 聊天室消息
'from' => 'app_64', //发送人
'target' => '18112347151', //接受人
'from' => 'agent_5740', //发送人
'last_msg_id' => 123, //最后一条消息id 默认0 表示不处理
'target' => 'agent_5741', //接受人
'page_no' => '1', //第几页
'page_size' => '15' //每页多少条
);*/
if (!isset($params['target_type']) || !isset($params['from']) || !isset($params['target']) || !isset($params['last_msg_id'])) {
return $this->response(ErrorCodeConst::ERROR_CODE_PARAM_NOT_EXIST, "请求参数错误");
}
$page_no = empty($params['page_no']) ? 1 : $params['page_no'];
$page_size = empty($params['page_size']) ? 15 : $params['page_size'];
......@@ -241,6 +252,9 @@ class AppChat extends Basic
/**
* 获取聊天商铺信息
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getHouseInfoByFrom()
{
......@@ -269,7 +283,7 @@ class AppChat extends Basic
$param["img_type"] = 1;
$images = $gHousesImgModel->getHouseImages($param, 1);
$data['$images'] = IMG_PATH . '/img/houseinfobackgroundimg_new.png';
$data['images'] = IMG_PATH . '/img/houseinfobackgroundimg_new.png';
if (count($images) > 0) {
$result["imagename"] = CK_IMG_URL . 'images/' . $images[0]["img_name"];
}
......@@ -301,5 +315,45 @@ class AppChat extends Basic
}
/**
* 获取聊天关系
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getChatRelation()
{
$params = $this->params;
/* $params = array(
"target" => "user_2", //当前用户
"is_user" => 0,//0用户1经纪人
"relation_list" => '[{"r_id":"2","msg_id":3536},{"r_id":"8","msg_id":3524}]',
);*/
if (!isset($params['target']) || !isset($params["is_user"])) {
return $this->response("300", "参数不全");
}
$target = $params["target"];
$is_user = $params["is_user"];
$relation_list = null;
if (!empty($params["relation_list"])) {
try {
$relation_ = json_decode($params["relation_list"], true);
foreach ($relation_ as $item) {
$relation_list[$item["r_id"]][] = $item;
}
} catch (Exception $exception) {
return $this->response("101", "解析关系异常:" . $exception);
}
}
$relationList = $this->_chat->getRelationList($target, $is_user, $relation_list);
return $this->response("200", "success", $relationList);
}
}
This diff is collapsed.
<?php
namespace app\chat\utils;
use DictionaryAlertMsg;
use IGtAPNPayload;
use IGtTransmissionTemplate;
/**
* Created by PhpStorm.
* User: hujun
* Date: 2017/12/24
* Time: 21:09
*/
class GeTuiUtils
{
const IGT_HOST = 'http://sdk.open.api.igexin.com/apiex.htm';
private $igt_app_id = '';
private $igt_app_secret = '';
private $igt_app_key = '';
private $igt_app_master_secret = '';
/**
* 引入类文件
*
* GeTuiUtils constructor.
*/
public function __construct()
{
include_once(EXTEND_PATH . 'GETUI_PHP_SDK/IGt.Push.php');
}
/**
* 1 经纪人端
* 0 客户端
*
* @param $is
*/
public function setting($is)
{
if ($is == 1) {
$this->igt_app_id = 'A8raBWQxuX9bcVmk3rkWa5';
$this->igt_app_secret = 'TLNDlz8YsW6J4gexzb4AX3';
$this->igt_app_key = 'dEC3iu81ZC9XbsVLwoiHA6';
$this->igt_app_master_secret = '3NNdfsgjCJ6Rmfr9l0EeI1';
} else {
$this->igt_app_id = '1GnogURb3Y8cjQjmRtxXcA';
$this->igt_app_secret = 'qgCUSOcEQi52vRKQe6MYp8';
$this->igt_app_key = 'oQuYepflY8A7r0yGK9f9D4';
$this->igt_app_master_secret = 'numYAK4xpq8TEZHvaqeAT6';
}
}
/**
* 推送消息
*
* @param $push_id
* @param $title
* @param $payload
* @param $user_type
* @return array
*/
public function pushMessageToIgt($push_id, $title, $payload, $user_type)
{
$this->setting($user_type);
$igt = new \IGeTui(self::IGT_HOST, $this->igt_app_key, $this->igt_app_master_secret);
try {
//模板
$template = $this->onlineAllTemplate($payload, $title, "");
} catch (\Exception $e) {
$result['code'] = 'failed';
$result['msg'] = '字数超过限制';
return $result;
}
//个推信息体
$message = new \IGtSingleMessage();
$message->set_isOffline(true); //是否离线
$message->set_offlineExpireTime(3600 * 12 * 1000); //离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message->set_data($template); //设置推送消息类型
$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
//接收方
$target = new \IGtTarget();
$target->set_appId($this->igt_app_id);
$result = [];
foreach ($push_id as $k => $v) {
//echo $v;
$target->set_clientId($v);
// dump($target);
$res = $igt->pushMessageToSingle($message, $target);
if ($res['result'] == 'ok') {
$result['code'] = 'success';
$result['msg'] = $res['result'];
} else {
$result['code'] = 'failed';
$result['msg'] = $this->getReturnCode($res['result']);
}
}
return $result;
}
/**
* 推送模板
*
* @param $payload
* @param $black_title
* @param $content
* @return \IGtTransmissionTemplate
* @throws \Exception
*/
function onlineAllTemplate($payload, $black_title, $content)
{
$template = new IGtTransmissionTemplate();
$template->set_appId($this->igt_app_id);//应用appid
$template->set_appkey($this->igt_app_key);//应用appkey
$template->set_transmissionType(1);//透传消息类型
$template->set_transmissionContent($payload);//透传内容
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
// APN高级推送
$apn = new IGtAPNPayload();
$alertmsg=new DictionaryAlertMsg();
$alertmsg->body=$content;
$alertmsg->actionLocKey="ActionLockey";
$alertmsg->locKey=$black_title;
$alertmsg->locArgs=array("locargs");
$alertmsg->launchImage="launchimage";
// iOS8.2 支持
$alertmsg->title=$black_title;
$alertmsg->titleLocKey="TitleLocKey";
$alertmsg->titleLocArgs=array("TitleLocArg");
$apn->alertMsg=$alertmsg;
$apn->badge=1;
$apn->sound="";
$apn->add_customMsg("payload",$payload);
// $apn->contentAvailable=1;
$apn->category="ACTIONABLE";
$template->set_apnInfo($apn);
return $template;
}
/**
* 返回code码对应信息
*
* @param $code
* @return string
*/
public function getReturnCode($code)
{
$result = '';
switch ($code) {
case 'Error' :
$result = '请求信息填写有误';
break;
case 'action_error' :
$result = '未找到对应的action动作';
break;
case 'appkey_error' :
$result = 'Appkey填写错误';
break;
case 'domain_error' :
$result = '填写的域名错误或者无法解析';
break;
case 'sign_error' :
$result = 'Appkey与ClientId不匹配,鉴权失败';
break;
case 'AppidNoMatchAppKey' :
$result = 'appid和鉴权的appkey不匹配';
break;
case 'PushMsgToListOrAppTimesOverLimit' :
$result = ' 群推次数超过最大值';
break;
case 'AppIdNoUsers' :
$result = '该AppId下的用户总数为0';
break;
case 'SendError' :
$result = '消息推送发送错误';
break;
case 'SynSendError' :
$result = '报文发送错误';
break;
case 'flow_exceeded' :
$result = '接口消息推送流量已超限';
break;
case 'TargetListIsNullOrSizeIs0' :
$result = '推送target列表为空';
break;
case 'PushTotalNumOverLimit' :
$result = '推送消息个数总数超限';
break;
case 'TokenMD5NoUsers' :
$result = 'target列表没有有效的clientID';
break;
case 'NullMsgCommon' :
$result = '未找到contentId对应的任务';
break;
case 'TaskIdHasBeanCanceled' :
$result = '任务已经被取消';
break;
case 'AppidError' :
$result = 'clientid绑定的appid与推送的appid不符';
break;
case 'successed_ignore' :
$result = '无效用户,消息丢弃';
break;
case 'TokenMD5Error' :
$result = 'clientID填写有误';
break;
case 'AppidNoAppSecret' :
$result = 'appid未找到对应的appSecret';
break;
case 'OtherError' :
$result = '未知错误,无法判定错误类型';
break;
}
return $result;
}
}
\ No newline at end of file
......@@ -16,76 +16,89 @@ use think\Cache;
*/
class RPush
{
/**
* 发送消息
*
* @param $user_name
* @param $target_type
* @param $target
* @param $msg_content
* @param $from
* @param $is_user
* @param $type
* @param $access_token
* @param $callback
* @param $push_id
* @param $msg_id
* @param $user_info
*/
public function send($user_name,$target_type, $target, $msg_content, $from, $type, $access_token, $callback)
public function send($user_name, $target_type, $target, $msg_content, $from, $user_type, $type, $callback, $push_id, $msg_id, $user_info)
{
//todo
if(Cache::get('save_message_num')){
$save_message_num=Cache::get('save_message_num');
if($save_message_num>10){
if (Cache::get('save_message_num')) {
$save_message_num = Cache::get('save_message_num');
if ($save_message_num > 10) {
sleep(1);
Cache::set('save_message_num', 0);
}else{
$save_message_num=$save_message_num+1;
} else {
$save_message_num = $save_message_num + 1;
Cache::set('save_message_num', $save_message_num);
}
}else{
} else {
Cache::set('save_message_num', 0);
}
$response = $this->sendRequestByCurl($user_name,$target_type, $target, $msg_content, $from, $type, $access_token);
$response = $this->sendRequestByCurl($user_name, $target_type, $target, $msg_content, $from, $user_type, $type, $push_id, $msg_id, $user_info);
call_user_func_array([ $callback[0], $callback[1] ], [ $response, $target, $from, $msg_content ]);
}
/** curl参数拼凑
/**
* @param $user_name
* @param $target_type users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
* @param $target 注意这里需要用数组,数组长度建议不大于20,即使只有一个用户,也要用数组 ['u1'],给用户发送时数组元素是用户名,
* 给群组发送时数组元素是groupid
* @param $type //目前只有文本的消息
* @param $msg_content
* @param $target_type //users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
* @param $target //注意这里需要用数组,数组长度建议不大于20,即使只有一个用户,也要用数组 ['u1'],给用户发送时数组元素是用户名,
* 给群组发送时数组元素是groupid
* @param $msg_content //目前只有文本的消息
* @param $from
* @param $user_type
* @param $type
* @param $access_token
* @return \app\chat\utils\CurlResponse|bool
* @param $push_id
* @param $message_id
* @param $user_info
* @return array
*/
public function sendRequestByCurl($user_name,$target_type, $target, $msg_content, $from, $type, $access_token)
public function sendRequestByCurl($user_name, $target_type, $target, $msg_content, $from, $user_type, $type, $push_id, $message_id, $user_info)
{
$arr = array(
'target_type' => $target_type,
'target' => $target,
'msg' => [ "type" => "txt", "msg" => $msg_content ],
'from' => $from,
'ext' => [ "msg_type" => $type ,"user_name"=>$user_name]
$title = "收到一条消息";
$msg_bin = array(
'title' => $title,
'content' => "",
'type' => 'chat',
'url' => '',
'name' => '',
'imageUrl' => '',
'id' => 0,
'ext' => [
'msg_type' => $type, // 1文本 2图片3楼盘
'target' => $target,
'from' => $from,
"user_name" => $user_name,
'body' => $msg_content,
'to_id' => $target,
'from_id' => $from,
'created_at' => date('Y-m-d H:i:s'),
'message_id' => $message_id,
'user_id' => $user_info['id'],
'phone' => $user_info['phone']
]
);
$data = json_encode($arr);
$curl = new \app\chat\utils\CurlUtil();
$curl->headers = [
"Accept" => "application/json",
"Content-Type" => "application/json;charset=utf-8",
'Authorization' => "Bearer " . $access_token,
];
$curl->options = [
"CURLOPT_SSL_VERIFYPEER" => 0,
"CURLOPT_SSL_VERIFYHOST" => 2,
];
$url = $this->buildSendUrl();
$response = $curl->post($url, $data);
Log::record('info -------------' . json_encode($response), "info");
return $response;
$payload = json_encode($msg_bin);
$pushMessageToIgt = new GeTuiUtils();
$result = $pushMessageToIgt->pushMessageToIgt($push_id, $title, $payload, $user_type);
return $result;
}
/**
......
<?php
namespace app\chat\validate;
use think\Validate;
/**
* Created by PhpStorm.
* User : zw
* Date : 2018/6/19
* Time : 18:41
* Intro:
*/
class ChatVerifyValidate extends Validate
{
/**
* $target_type = $params['target_type']; // 消息类型 users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
* $target = $params['target']; //接受人 if target_type 群 者表示群id
* $source = $params['source']; //消息来源 1c端app 2b端app 3其他
* $is_user = $params['is_user']; //发送人是否是会员 0是1经济人
* $type = $params['type']; //消息类型 1文字 2图片 3楼盘
* $msg_content = $params['msg_content'];
* $from = $params['from']; //消息发送人
* @var array
*/
protected $rule = [
'target_type' => 'require',
'target' => 'require',
'source' => 'require|in:1,2,3',
'is_user' => 'require|in:0,1',
'type' => 'require|in:1,2,3',
'msg_content' => 'require',
'from' => 'require',
];
protected $message = [
'target_type.require' => '消息类型为必填字段',
'target.require' => '接收人为必填字段',
'source.require' => '消息来源为必填字段',
'source.in' => '消息来源值错误',
'is_user.require' => '发送人身份为必填字段',
'is_user.in' => '发送人身份值错误',
'type.require' => '消息类型为必填字段',
'type.in' => '消息类型值错误',
'msg_content.number' => '消息内容为必填字段',
'from.require' => '接收人为必填字段',
];
protected $scene = [
'pushMsg' => [ 'target_type', 'target', 'source', 'is_user', 'type', 'msg_content', 'from' ],
];
}
\ No newline at end of file
......@@ -80,7 +80,7 @@ class Agent extends Basic
$pageNo = empty($params['pageNo']) ? 1 : $params['pageNo'];
$pageSize = empty($params['pageSize']) ? 15 : $params['pageSize'];
//条件
$where['a.status'] = ['IN',['0,1']];
// $where['a.status'] = ['IN',['0,1']];
$where['a.id'] = ['<>', 1];
if (!empty($params['search'])) {
......@@ -130,7 +130,7 @@ class Agent extends Basic
$aBD = new ABindingDevice();
$params["agent_id"] = $agent_id;
$field = "id,agent_id,device_id,model,is_forbidden,create_time,update_time";
$field = "id,agent_id,device_id,model,is_forbidden,is_pc,create_time,update_time";
$result = $aBD->getDeviceByAgentId($params,$field);
if(count($result) > 0){
......
......@@ -136,7 +136,7 @@ class CellPhone extends Basic
*/
public function bindAXB()
{
if (empty($this->params['user_id'])) {
if (empty($this->params['user_id']) && empty($this->params['phone_b'])) {
return $this->response(101, '客户id为空');
}
......@@ -179,7 +179,7 @@ class CellPhone extends Basic
*/
public function agentsUnBind()
{
if (empty($this->params['user_id'])) {
if (empty($this->params['user_id']) && empty($this->params['phone_b'])) {
return $this->response(101, '客户id为空');
}
......
......@@ -441,7 +441,7 @@ class Finance extends Basic
}
$service_ = new OrderLogService();
$data = $service_->selectListByOrderNoV2($params["order_id"]);
$data = $service_->selectListByOrderNoV3($params["order_id"]);
return $this->response("200", "request success", $data);
}
......
......@@ -111,59 +111,75 @@ class Houses extends Basic
$pageNo = empty($this->params['pageNo']) ? 1 : $this->params['pageNo'];
$pageSize = empty($this->params['pageSize']) ? 15 : $this->params['pageSize'];
$where['a.status'] = [ '<>', 3 ];
/*精选商铺--0是1否*/
if ($this->params['is_carefully_chosen'] != -1) {
$where['is_carefully_chosen'] = $this->params['is_carefully_chosen'];
if ($this->params['is_carefully_chosen'] == 1) {
$where['a.is_carefully_chosen'] = 1;
$where['a.status'] = 1;
} else {
$where['a.is_carefully_chosen'] = 0;
}
}
/*0是1否显示在c端用户*/
if ($this->params['is_show'] != -1) {
$where['is_show'] = $this->params['is_show'];
if ($this->params['is_show'] == 1) {
$where['a.is_show'] = 1;
} else {
$where['a.is_show'] = 0;
}
}
/*商铺类型(0商场,1街铺)*/
if ($this->params['shop_type'] != -1) {
$where['shop_type'] = $this->params['shop_type'];
$where['a.shop_type'] = $this->params['shop_type'];
}
/*所在城市*/
if (!empty($this->params['city'])) {
$where['city'] = $this->params['city'];
$where['a.city'] = $this->params['city'];
}
/*所在区*/
if (!empty($this->params['disc'])) {
$where['disc'] = $this->params['disc'];
$where['a.disc'] = $this->params['disc'];
}
/*状态 0待审批 1上架 2下架 3回收*/
if (!empty($this->params['status'])) {
$where['status'] = $this->params['status'];
$where['a.status'] = $this->params['status'];
}
/*价格 -1表示营业额扣点 存分*/
if ($this->params['rent_price'] != NULL && $this->params['rent_price'] != -1) {
$where['rent_type'] = 1;
$where['a.rent_type'] = 1;
switch ($this->params['rent_price']) {
case 1:
$where['rent_price'] = [ '<=', 1000000 ];
$where['a.rent_price'] = [ '<=', 1000000 ];
break;
case 2:
$where['rent_price'] = [ 'between', '1000000,3000000' ];
$where['a.rent_price'] = [ 'between', '1000000,3000000' ];
break;
default :
$where['rent_price'] = [ '>', '3000000' ];
$where['a.rent_price'] = [ '>', '3000000' ];
}
}
/*对内楼盘名*/
if ($this->params['internal_title'] != NULL) {
$where['internal_title'] = [ 'LIKE', '%' . $this->params['internal_title'] . '%' ];
$where['a.internal_title'] = [ 'LIKE', '%' . $this->params['internal_title'] . '%' ];
}
/*楼盘地址搜索*/
if ($this->params['internal_address'] != NULL) {
$where['a.internal_address'] = [ 'LIKE', '%' . $this->params['internal_address'] . '%' ];
}
/*是否独家0否1是*/
if ($this->params['is_exclusive_type'] != -1) {
$where['is_exclusive_type'] = $this->params['is_exclusive_type'];
$where['a.is_exclusive_type'] = $this->params['is_exclusive_type'];
}
/*开始时间*/
......@@ -184,41 +200,45 @@ class Houses extends Basic
/*根据库存判断是否已租*/
if ($this->params['leased'] != -1) {
if ($this->params['leased'] == 0) {
$where['residue_num'] = 0;
$where['a.residue_num'] = 0;
} else {
$where['residue_num'] = [ '<>', 0 ];
$where['a.residue_num'] = [ '<>', 0 ];
}
}
/*业态*/
if ($this->params['industry_type'] != NULL) {
$where['industry_type'] = [ 'LIKE', '%' . $this->params['industry_type'] . '%' ];
$where['a.industry_type'] = [ 'LIKE', '%' . $this->params['industry_type'] . '%' ];
}
$fields = 'a.id,a.shop_type,a.internal_title,a.rent_price,a.is_show,a.create_time,a.residue_num,a.rent_type';
//案场权限人搜索
if (empty($this->params['dish'])) {
/*楼盘编号*/
if (!empty($this->params['id'])) {
$where['id'] = $this->params['id'];
}
$where['status'] = [ '<>', 3 ];
$data['data']['list'] = $this->house->getHouseList($pageNo, $pageSize, 'id DESC', $fields, $where, $this->userId);
$data['data']['total'] = $this->house->getHouseListTotal($where);
} else {
//盘方人搜索
/*楼盘编号*/
if ($this->params['id'] != NULL) {
$where['a.id'] = $this->params['id'];
}
$where['a.status'] = [ '<>', 3 ];
$where['c.name'] = [ 'LIKE', '%' . $this->params['dish'] . '%' ];
$where['b.type'] = [ '=', 2 ];
$fields = 'a.id,a.shop_type,a.internal_title,a.rent_price,a.is_show,a.create_time,a.residue_num,a.rent_type,
a.shop_area_start,a.shop_area_end,a.industry_type,d.landlord_phone';
/*楼盘编号*/
if ($this->params['id'] != NULL) {
$where['a.id'] = $this->params['id'];
}
if ($this->params['dish_name'] != NULL) {
$where['c.name'] = [ 'LIKE', '%' . $this->params['dish_name'] . '%' ];
$where['b.type'] = 2;
$where['b.is_del'] = 0;
$data['data']['list'] = $this->house->getHouseListDish($pageNo, $pageSize, 'a.id DESC', $fields, $where, $this->userId);
$data['data']['total'] = $this->house->getHouseListDishTotal($where);
}
if ($this->params['dish_phone'] != NULL) {
$where['c.phone'] = [ 'LIKE', '%' . $this->params['dish_phone'] . '%' ];
$where['b.type'] = 2;
$where['b.is_del'] = 0;
}
/*房东手机号搜索*/
if ($this->params['landlord_phone'] != NULL) {
$where['d.landlord_phone'] = [ 'LIKE', '%' . $this->params['landlord_phone'] . '%' ];
}
$data['data']['list'] = $this->house->getHouseListDish($pageNo, $pageSize, 'a.id DESC', $fields, $where, $this->userId);
$data['data']['total'] = $this->house->getHouseListDishTotal($where);
$look_shop = new LookShopService();
foreach ($data['data']['list'] as $k=>$v) {
......
......@@ -3,8 +3,11 @@
namespace app\index\controller;
use app\api\untils\JwtUntils;
use app\api_broker\service\BrokerService;
use app\index\extend\Basic;
use app\model\AAgents;
use app\model\AStore;
use app\model\AuthGroup;
use app\model\AuthRule;
use think\Session;
......@@ -18,13 +21,20 @@ use think\Session;
class Login extends Basic
{
protected $loginAgent;
protected $authRule;
protected $m_agent;
protected $m_authRule;
protected $brokerService;
protected $m_store;
protected $m_auth_group;
public function __construct($request = null)
{
parent::__construct($request);
$this->loginAgent = new AAgents();
$this->authRule = new AuthRule();
$this->m_agent = new AAgents();
$this->m_authRule = new AuthRule();
$this->brokerService = new BrokerService();
$this->m_auth_group = new AuthGroup();
$this->m_store = new AStore();
}
public function login()
......@@ -33,61 +43,62 @@ class Login extends Basic
}
/**
* 登录接口
* 登录
*
* @return \think\Response|void
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @return \think\Response
*/
public function loginVerify()
{
$name = $this->request->param("username");
$password = $this->request->param("passwd");
$name = $this->params["username"];
$password = $this->params["password"];
$model = $this->params["model"];
if (!isset($name) || !isset($password)) {
return $this->response('100','用户名或密码不能为空');
if (empty($name) || empty($password)) {
return $this->response(101, '用户名或密码不能为空');
}
$filed = " a.id,a.store_id,a.auth_group_id,a.district_id,a.level,a.name,a.phone,a.sex,a.img,a.status,a.admin_off,
ifNull(s.store_name,'')store_name,ifNull(d.district_name,'')district_name,g.rules,g.status as g_status";
$fields = 'a.id,a.store_id,a.auth_group_id,a.district_id,a.level,a.name,a.phone,a.sex,a.img,a.status,a.admin_off
,b.store_name,c.district_name';
$join = [
['a_store s', ' a.store_id=a.id','left'],
['a_district d','a.district_id=d.id','left'],
['auth_group g','a.auth_group_id=g.id','left']
];
try {
$where['password'] = md5($password);
$where['phone'] = trim($name);
$user_data = $this->m_agent->getStoreDistrict($fields, $where);
$params["name"] = $name;
$password = md5($password);
$where = "( phone='{$name}') and password='$password' ";
$list = $this->loginAgent->verifyUser($filed,$join,$where);
if (empty($user_data)) {
return $this->response(101, '用户名或密码错误');
}
if(!$list) {
return $this->response('101','用户名或密码错误');
}
$auth_group_id = '';
if (!empty($user_data['auth_group_id'])) {
$auth_group_id = $this->m_auth_group->getAuthGroupById($user_data['auth_group_id'], 'rules');
}
if($list['g_status']=='1') {
return $this->response('102','用户所在角色组已冻结');
}
if ($user_data['status'] != 0 || $user_data['admin_off'] != '0' || empty($auth_group_id)) {
return $this->response('101', '无后台访问权限');
}
$last_login_ip = ip2long($this->request->ip());
if ($user_data['id'] != 1) {
//判断设备id是否存在
$is_login = $this->brokerService->judgeBand($last_login_ip, $user_data['id'], $model, 0, $user_data['phone'], 1);
if (!$is_login) {
return $this->response("102", "该账号没有绑定该设备,请致电人事进行绑定。");
}
}
if($list['admin_off']!= '0'|| empty($list['rules']) || $list['status'] != '0') {
return $this->response('103','无后台访问权限');
}else{
$where_rule['status'] = 0;
if ($list['id'] == 1) {
if ($user_data['id'] == 1) {
//超级管理员
$nav = $this->authRule->getRule('',$where_rule);
$nav = $this->m_authRule->getRule('', $where_rule);
} else {
$where_rule['id'] = ['in', $list['rules']];
$where_rule['id'] = [ 'in', $auth_group_id ];
//查询后台菜单
$nav = $this->authRule->getRule('', $where_rule);
$nav = $this->m_authRule->getRule('', $where_rule);
}
$menu_data = [];
$auth_data = [];
foreach ($nav as $k=>$v) {
$menu_data = $auth_data = [];
foreach ($nav as $k => $v) {
if ($v['is_menu'] == 1) {
$menu_data[$k]['id'] = $v['id'];
$menu_data[$k]['name'] = $v['name'];
......@@ -101,30 +112,31 @@ class Login extends Basic
}
}
$list['menu'] = list_to_tree($menu_data);
$list['auth'] = $auth_data;
$list = $list->toArray();//转化arr
$user_data['menu'] = list_to_tree($menu_data);
$user_data['auth'] = $auth_data;
$user_data = $user_data->toArray();//转化arr
$update_data['last_login_time'] = date('Y-m-d H:i:s');
$update_data['last_login_ip'] = $last_login_ip;
$this->m_agent->updateData($user_data['id'], $update_data);
} catch (\Exception $e) {
return $this->response(101, '内部错误,请联系运营!' . $e->getMessage());
}
$jwt = new JwtUntils();
$jwt_data['id'] = $list['id'];
$jwt_data['name'] = $list['name'];
$jwt_data['phone'] = $list['phone'];
$jwt_data['level'] = $list['level'];
$list['AuthToken'] = $jwt->createToken($jwt_data);
Session::set("userName",$list["name"]);
Session::set("userId",$list["id"]);
Session::set("lastLoginTime",time());
Session::set("user_info",$list);
$this->operating_records($list["id"],1,'后台登陆'); //记录操作日志
if($this->request->isAjax()) {
return $this->response('200', '登录成功', $list);
}else {
$this->redirect('/admin.php');
}
return ;
$jwt_data['id'] = $user_data['id'];
$jwt_data['name'] = $user_data['name'];
$jwt_data['phone'] = $user_data['phone'];
$jwt_data['level'] = $user_data['level'];
$user_data['AuthToken'] = $jwt->createToken($jwt_data);
Session::set("userName", $user_data["name"]);
Session::set("userId", $user_data["id"]);
Session::set("lastLoginTime", time());
Session::set("user_info", $user_data);
$this->operating_records($user_data["id"], 1, '后台登陆'); //记录操作日志
return $this->response('200', '登录成功', $user_data);
}
/**
......
......@@ -89,7 +89,7 @@ class MarchIn extends Basic
}
//搜索条件 end
$fields_evaluate = 'a.report_id,d.user_name,d.user_phone,a.create_time,d.report_agent_name,d.report_agent_phone,e.store_name,c.house_title';
$fields_evaluate = 'a.report_id,a.order_id,d.user_name,d.user_phone,a.create_time,d.report_agent_name,d.report_agent_phone,e.store_name,c.house_title';
$data['list'] = $this->oMarchInModel->findmarchInList($pageNo, $pageSize, 'a.id desc', $fields_evaluate, $where);
$data['total'] = $this->oMarchInModel->findmarchInListCount($fields_evaluate, $where);
......
......@@ -66,7 +66,7 @@ class Member extends Basic{
if (!empty($params['user_nick'])) {
//$where[0] = ['EXP','a.user_phone LIKE "%'.$this->params['phone'].'%" or a.user_nick LIKE "%'.$this->params['phone'].'%"'];
$where['a.user_nick'] = ['LIKE','%'.$params['user_nick'].'%'];
$where['a.user_name'] = ['LIKE','%'.$params['user_nick'].'%'];
}
//是否公客
......@@ -128,9 +128,9 @@ class Member extends Basic{
//是否登录过
if (!empty($params['login_status']) && $params['login_status'] != -1) {
if ($params['login_status'] == 1) {
$where['a.last_login_ip'] = ['NOT NULL'];
$where['a.first_login_time'] = ['NOT NULL'];
} else {
$where['a.last_login_ip'] = ['NULL'];
$where['a.first_login_time'] = ['NULL'];
}
}
......@@ -249,7 +249,16 @@ class Member extends Basic{
$where['a.first_login_time'] = ['between time', [$params['first_login_start'] . ' 00:00:00', $where['a.first_login_time'] = $params['first_login_end'] . ' 23:59:59']];
}
$fields = 'a.id,a.user_nick,a.user_name,a.user_phone,a.user_pic,a.create_time,a.user_pswd,a.referrer_id,a.registration_time,a.user_name,a.last_login_ip,a.status,a.first_login_time,a.last_login_time,a.agent_id,a.vip';
if (isset($params['vip']) && $params['vip'] != -1) {
if ($params['vip'] == 1) {
$where['a.vip'] = 1;
} else {
$where['a.vip'] = 0;
}
}
$fields = 'a.id,a.user_nick,a.user_name,a.user_phone,a.user_pic,a.create_time,a.user_pswd,a.referrer_id,
a.user_name,a.status,a.first_login_time,a.last_login_time,a.agent_id,a.vip,a.price_demand,a.industry_type,a.area_demand,a.user_status,a.source';
try {
$data['list'] = $this->user->getUserAgent($pageNo, $pageSize, 'a.id DESC', $fields, $where, $type);
......@@ -323,12 +332,6 @@ class Member extends Basic{
$agent_data = $agent->getAgentInfo('name,phone', $this->params['agents_id']);
$remark = '新增为' . $agent_data['name'] . '-' . $agent_data['phone'];
$result = $this->user->edit($this->params, $this->params['id']); //新增或编辑
if ($result == -1) {
return $this->response(101, '该用户已经存在!');
}
$this->params['id'] = $result;
} else {
$user_data = $this->user->getUserById('id,agent_id', $this->params['id']);
if (empty($user_data)) {
......@@ -342,10 +345,22 @@ class Member extends Basic{
} else {
$remark = '用户编辑';
}
$data['start'] = $this->user->edit($this->params, $this->params['id']); //新增或编辑
$result = $this->user->edit($this->params, $this->params['id']); //新增或编辑
}
}
switch ($result) {
case -1 :
$this->code = 101;
$this->msg = '该用户已存在';break;
case -2 :
$this->code = 101;
$this->msg = '此号码为虚拟号码';break;
case -3 :
$this->code = 101;
$this->msg = '没有新增VIP权限';break;
}
$this->operating_records($this->userId, $type=3, $remark, $this->params['id']);
} else {
......@@ -355,7 +370,7 @@ class Member extends Basic{
}
$data['list'] = $this->user->getClient($this->params['id']);
}
return $this->response($this->code, $this->msg,$data);
return $this->response($this->code, $this->msg, $data);
}
......
......@@ -133,4 +133,8 @@ class Notice extends Basic
return $this->response(101, "删除失败!");
}
}
public function addNoticeView() {
return view('add_notice_view');
}
}
\ No newline at end of file
......@@ -34,7 +34,7 @@
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<td colspan="11">
<td colspan="14">
<form id="form_search">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="industry_type" placeholder="角色" type="text" value="" name="groupname">
<!--<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish" placeholder="门店"
......@@ -46,44 +46,27 @@
<select class="form-control btn2 input ld-Marheight" name="" id="guest_stores">
</select>
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="id" placeholder="姓名/手机号" name="search" type="text" value="">
<span class="btn btn-default btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-default btn3 ld-Marheight" id="reset">重置</span>
<span class="btn btn-info btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-info btn3 ld-Marheight" id="reset">重置</span>
</form>
</td>
</tr>
<tr>
<th>注册时间</th>
<th>用户ID</th>
<th>用户头像</th>
<th>姓名</th>
<th>手机号</th>
<th>角色</th>
<tr class="text-center">
<th class="text-center">注册时间</th>
<th class="text-center">用户ID</th>
<th class="text-center">用户头像</th>
<th class="text-center">账号类型</th>
<th class="text-center">部门</th>
<th class="text-center">门店</th>
<th class="text-center">姓名</th>
<th class="text-center">手机号</th>
<th class="text-center">角色</th>
<!--2.2版本 -->
<th>评价次数</th>
<th>分数</th>
<th>操作</th>
<th class="text-center">评价次数</th>
<th class="text-center">分数</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody id="agentlist">
</form>
</td>
</tr>
<tr>
<th>注册时间</th>
<th>用户ID</th>
<th>用户头像</th>
<th>姓名</th>
<th>手机号</th>
<th>角色</th>
<!--2.2版本 -->
<!--<th>评价次数</th>-->
<!--<th>分数</th>-->
<th>操作</th>
</tr>
</thead>
<tbody id="agentlist">
</tbody>
......@@ -114,31 +97,31 @@
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-3 control-label">用户名:</label>
<label class="col-sm-4 control-label">用户名:</label>
<input class="form-control btn6" data-rule-buga="false" data-rule-required="true" name="name" placeholder="登录账户所用名称" type="text" value="" id="title">
</div>
<div class="form-group">
<label class="col-sm-3 control-label">电话(登录账号):</label>
<label class="col-sm-4 control-label">电话(登录账号):</label>
<input type="number" class="form-control btn6" name="phone" value="" placeholder="填写手机号">
</div>
<div class="form-group hide">
<label class="col-sm-3 control-label">密码:</label>
<label class="col-sm-4 control-label">密码:</label>
<input type="text" class="form-control btn6" name="password" id="password" value="44444" placeholder="填写密码">
</div>
<div class="form-group">
<label class="col-sm-3 control-label">所属部门:</label>
<label class="col-sm-4 control-label">所属部门:</label>
<select name="district_id" class="form-control btn6">
<option value="">选择所属部门</option>
</select>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">所属门店:</label>
<label class="col-sm-4 control-label">所属门店:</label>
<select name="store_id" class="form-control btn6">
</select>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">性别:</label>
<label class="col-sm-4 control-label">性别:</label>
<div class="radio radio-primary btn4 mr-10">
<label for="sex0" class="radio-label1">
<div class="iradio_minimal-blue" aria-checked="false" aria-disabled="false" style="">
......@@ -164,14 +147,14 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">是否允许访问后台:</label>
<label class="col-sm-4 control-label">是否允许访问后台:</label>
<select name="admin_off" id="admin_off" class="form-control btn6">
<option value="0">允许</option>
<option value="1">不允许</option>
</select>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">个人说明:</label>
<label class="col-sm-4 control-label">个人说明:</label>
<textarea name="remarks" id="remarks" class="form-control btn6" length="120" rows="5" placeholder="请填写个人说明"></textarea>
</div>
</form>
......@@ -231,7 +214,7 @@
×
</button>
<h4 class="modal-title">
绑定手机
绑定手机/电脑
</h4>
</div>
<div class="modal-body">
......@@ -240,9 +223,10 @@
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<th>绑定手机</th>
<th>请求时间</th>
<th>手机绑定状态</th>
<th class="text-center">设备类型</th>
<th class="text-center">设备型号</th>
<th class="text-center">请求时间</th>
<th class="text-center">绑定状态</th>
</tr>
</thead>
<tbody id='agent_phone_binding'>
......@@ -255,11 +239,45 @@
</form>
</div>
<div class="modal-footer">
<!--<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
<!--绑定电脑-->
<div class="modal fade" id="modal-pcbundling" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<button type="button" class="btn btn-primary submit_user" data-dismiss="modal">
提交
</button>-->
<h4 class="modal-title">
绑定电脑
</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<th>绑定电脑</th>
<th>请求时间</th>
<th>电脑绑定状态</th>
</tr>
</thead>
<tbody id='agent_pc_binding'>
</tbody>
</table>
</div>
</form>
</div>
<div class="modal-footer">
</div>
</div>
<!-- /.modal-content -->
......
......@@ -32,8 +32,8 @@
<td colspan="8">
<form action="" method="get" id="form_search">
<input class="form-control btn2" data-rule-phoneus="false" data-rule-required="false" id="name" name="name" placeholder="商圈名" type="text" value="">
<span class="btn btn-default btn3" id="search">搜索</span>
<span class="btn btn-default btn3" id="reset">重置</span>
<span class="btn btn-info btn3" id="search">搜索</span>
<span class="btn btn-info btn3" id="reset">重置</span>
</form>
</td>
</tr>
......
{layout name="global/frame_tpl" /}
<input type="hidden" class="page-load" id="callPhoneIndex" />
<style>
.clear{
clear:both ;
}
</style>
<div id="page-content-wrapper">
<div class="container">
<div class="row">
......@@ -26,14 +31,14 @@
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish" placeholder="拨打人手机号" type="phone" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="id" placeholder="被拨打人姓名" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish-phone" placeholder="拨打人手机号" type="phone" value="">
<div class="clear"></div>
<span class="fore-span ld-Marheight">拨打时间:</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="start_date" name="start_date" type="date">
<span class="fore-span ld-Marheight">-</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="end_date" name="end_date" type="date">
<span class="btn btn-default btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-default btn3 ld-Marheight" id="reset">重置</span>
<span class="btn btn-info btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-info btn3 ld-Marheight" id="reset">重置</span>
</form>
</td>
</tr>
......
......@@ -208,7 +208,7 @@
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<td colspan="10">
<td colspan="11">
<form id="form_search">
<span class="fore-span ld-Marheight">收款时间:</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="start_date" name="start_date1" type="date">
......
......@@ -32,6 +32,9 @@
font-weight: bold;
font-size: 16px;
}
.clear{
clear: both;
}
</style>
<div id="page-content-wrapper">
<div class="container">
......@@ -60,6 +63,7 @@
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="create_time_end" name="end_date2" type="date">
<!--<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="district_id" placeholder="部门名称" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="store_id" placeholder="门店名称" type="text" value="">-->
<div class="clear"></div>
<select class="form-control btn4 ld-Marheight input" name="" id="district_id" >
<option value="">部门名称</option>
......
......@@ -157,7 +157,9 @@
<div class="detail-modal-maid-top-btn-area oh">
<a class="btn btn-success" href="#modal_new_maid" data-toggle="modal">新增</a>
<a id="maid_new_btn" class="btn btn-primary" data-toggle="modal">增加实收</a>
<a id="maid_count_btn" class="btn btn-primary" title="可自动计算实收佣金和合计">计算</a>
</div>
<p class="text-right" id="maid_count_tips_p"><span>提示:</span>点击<span>计算</span>按钮可自动计算<span>实收佣金</span><span>合计</span>的内容</p>
<table class="table table-striped table-bordered table-hover table-condensed" id="maid_table_main">
<thead>
<tr>
......@@ -211,9 +213,26 @@
</td>
</tr>-->
</tbody>
<tfoot>
<tr>
<td class="text-center">合计</td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center" id="maid_count_total_rate"></td>
<td class="text-center" id="maid_count_total_yingfen"></td>
<td class="text-center" id="maid_count_total_yufen"></td>
<td class="text-center" id="maid_count_total_shouxu"></td>
<td class="text-center" id="maid_count_total_cishan"></td>
<td class="text-center" id="maid_count_total_xianjin"></td>
<td class="text-center" id="maid_count_total_shishou"></td>
<td class="text-center"></td>
<td class="text-center"></td>
</tr>
</tfoot>
</table>
<div class="detail-modal-maid-bottom-btn-area text-right">
<a id="maid_ok_btn" class="btn btn-primary" data-toggle="modal">确认分佣</a>
<a id="maid_save_btn" class="btn btn-primary" data-toggle="modal">保存</a>
</div>
......
......@@ -39,6 +39,9 @@
width: 32%!important;
}
.clear{
clear: both;
}
</style>
<div id="page-content-wrapper">
<div class="container">
......@@ -73,7 +76,7 @@
<!--<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="user_name" placeholder="跟进人姓名" type="text" value="">-->
<input class="form-control btn4 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="user_phone" placeholder="跟进人姓名或电话" type="text" value="">
<div class="clear"></div>
<span class="btn btn-info btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-info btn3 ld-Marheight" id="reset">重置</span>
</form>
......
......@@ -35,6 +35,22 @@
.modal-dialog-one{
width: 668px;
}
.main_table_th_tr>th:nth-of-type(2){
width: 50px;
}
.main_table_th_tr>th:nth-of-type(4){
width: 86px;
}
.main_table_th_tr>th:nth-of-type(5){
width: 86px;
}
.main_table_th_tr>th:nth-of-type(7){
width: 100px;
}
.main_table_th_tr>th:nth-of-type(8){
width: 50px;
}
</style>
<div id="page-content-wrapper">
<div class="container">
......@@ -61,13 +77,13 @@
<tr>
<td colspan="9">
<form id="form_search">
<select class="form-control btn2" id="is_carefully_chosen">
<select class="form-control btn11" id="is_carefully_chosen">
<option value="-1"">是否显示在首页</option>
<option value="0"></option>
<option value="1"></option>
<option value="0"></option>
</select>
<select class="form-control btn2" id="is_show">
<option value="-1">C端是否显示</option>
<select class="form-control btn11" id="is_show">
<option value="-1">是否给商户看</option>
<option value="0"></option>
<option value="1"></option>
</select>
......@@ -92,34 +108,40 @@
<option value="1"></option>
<option value="0"></option>
</select>
<input class="form-control btn2" data-rule-phoneus="false" data-rule-required="false" id="internal_title" placeholder="商铺名称" type="text" value="">
<br style="clear: both;" />
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="id" placeholder="商铺编号" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="shop_address" placeholder="商铺地址" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="internal_title" placeholder="商铺名称" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="industry_type" placeholder="业态" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish_name" placeholder="盘方姓名" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish_phone" placeholder="盘方手机号" type="tel" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="landlord_phone" placeholder="房东手机号" type="tel" value="">
<div class="row">
</div>
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="industry_type" placeholder="业态" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="dish" placeholder="盘方" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="id" placeholder="店铺编号" type="text" value="">
<span class="fore-span ld-Marheight">上传时间:</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="start_date" name="start_date" type="date">
<span class="fore-span ld-Marheight">-</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="end_date" name="end_date" type="date">
<span class="btn btn-default btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-default btn3 ld-Marheight" id="reset">重置</span>
<span class="btn btn-info btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-info btn3 ld-Marheight" id="reset">重置</span>
<!-- 批量修改客方 -->
<a href="#modal_modify_user" data-toggle="modal" class="btn btn-info btn3 margin-top-ld"><i class="icon-plus"></i>
批量修改盘方</a>
</form>
</td>
</tr>
<tr>
<tr class="main_table_th_tr">
<th class="text-center">编号</th>
<th class="text-center">类型</th>
<th class="text-center">名称</th>
<th class="text-center">月租金</th>
<th class="text-center">C端是否显示</th>
<th class="text-center">上传时间</th>
<th class="text-center">对内名称</th>
<th class="text-center">租金均价</th>
<th class="text-center">面积</th>
<th class="text-center">业态</th>
<th class="text-center">最后跟进时间</th>
<th class="text-center">状态</th>
<!--<th class="text-center">盘方</th>-->
<th class="text-center">操作</th>
......@@ -356,7 +378,7 @@
<div class="modal-body modal-body-one">
<div class="followup-modal-list-area">
<table class="table table-striped table-bordered table-hover table-condensed">
<tbody class="text-center" id="modal_followup_table_list">
<tbody class="" id="modal_followup_table_list">
<tr>
<td>电话跟进:测试测试测试测试测试测试测试测试测试测试测试测试</td>
<td>刘丹丹</td>
......
......@@ -35,6 +35,9 @@
#district_id {
width: 16%!important;
}
.clear{
clear: both;
}
</style>
<div id="page-content-wrapper">
<div class="container">
......@@ -51,36 +54,37 @@
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<!--同步app-->
<!--<tr>
<tr>
<td colspan="10">
<form id="form_search">
<span class="fore-span ld-Marheight">约带看时间:</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="create_time_start" name="start_date1" type="date">
<span class="fore-span ld-Marheight">-</span>
<input class="form-control btn4 ld-Marheight" value="" data-rule-phoneus="false" data-rule-required="false" id="create_time_end" name="end_date1" type="date">
<select class="form-control btn4 ld-Marheight input" name="" id="district_id">
<!--<select class="form-control btn4 ld-Marheight input" name="" id="district_id">
<option value="">约带看人所在部门</option>
</select>
<select class="form-control btn4 ld-Marheight input" name="" id="guest_stores" value="">
</select>
</select>-->
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="user_name" placeholder="约带看人姓名" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="user_phone" placeholder="约带看人手机号" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="house_title" placeholder="商铺名称" type="text" value="">
<input class="form-control btn2 ld-Marheight" data-rule-phoneus="false" data-rule-required="false" id="report_agent_phone" placeholder="客户手机号" type="text" value="">
<div class="clear"></div>
<span class="btn btn-info btn3 ld-Marheight" id="search">搜索</span>
<span class="btn btn-info btn3 ld-Marheight" id="reset">重置</span>
</form>
</td>
</tr>-->
</tr>
<tr>
<th class="text-center">订单ID</th>
<th class="text-center">客户姓名</th>
<th class="text-center">客户电话</th>
<th class="text-center">约带看提交时间</th>
<!--<th class="text-center">约带看人</th>-->
<th class="text-center">约带看人</th>
<th class="text-center">商铺</th>
<th class="text-center">预计到场时间</th>
<th class="text-center">操作</th>
......
......@@ -61,11 +61,11 @@
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-3 control-label">新增标签:</label>
<label class="col-sm-4 control-label">新增标签:</label>
<input class="form-control btn6" data-rule-buga="false" data-rule-required="true" name="title" placeholder="不能多于5个字" type="text" value="" id="title">
</div>
<div class="form-group">
<label class="col-sm-3 control-label">是否立刻释放号码:</label>
<label class="col-sm-4 control-label">是否立刻释放号码:</label>
<select name="" id="free" class="form-control btn6">
<option value="-1">请选择</option>
<option value="0"></option>
......
......@@ -252,93 +252,73 @@
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
</thead>
<tbody id="" class="text-center">
<div class="" id="modal_add_user">
<div class="">
<div class="" id="">
<div class="">
</button>
<tbody id="" class="text-center">
<tr>
<td>
<form class="form-horizontal" action="/agents/add_user" id="">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">标题:</label>
<div class="col-sm-9">
<input type="text" class="form-control btn6" name="user_name" id="announcement_title" placeholder="请输入标题">
<span class="use-span text-danger">(20字以内,显示在首页列表)</span>
</div>
</div>
<div class="">
<form class="form-horizontal" action="/agents/add_user" id="">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">标题:</label>
<div class="col-sm-9">
<input type="text" class="form-control btn6" name="user_name" id="announcement_title" placeholder="请输入标题">
<span class="use-span text-danger">(20字以内,显示在首页列表)</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">标签:</label>
<div class="col-sm-9">
<select class="form-control btn5 input" name="" id="district_id2" title=" ">
<option value="">请选择标签</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">封面图:</label>
<div class="col-sm-9">
<!--选择图片-->
<ul class="list-group">
<li class="list-group-item">
<!--封面图 一张-->
<div class="form-group full-width-100 full-pic-area">
<!--<label for="">列表页封面图(1张)</label>-->
<input readonly="readonly" type="text" name="liebiao_pic_input" class="form-control" style="width: 150px !important;display:none" id="liebiao_pic_input" placeholder="请选择图片">
<button class="btn btn-default upload-image-btn" id="liebiao_pic_btn" type="button" data-limittop="1">选择图片</button>
<span class="tip"></span>
</div>
<ul class="img-pre-ul" id="liebiao_pic_ul"></ul>
</li>
</ul>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">内容</label>
<div class="col-sm-9">
<div class="form-group" style="width: 100%;">
<!--<label for="" style="width: 100%;">内容</label>-->
<div class="input-group" style="width: 100%;" id="dajiangtang">
<?php
<div class="form-group">
<label class="col-sm-2 control-label">标签:</label>
<div class="col-sm-9">
<select class="form-control btn5 input" name="" id="district_id2" title=" ">
<option value="">请选择标签</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">封面图:</label>
<div class="col-sm-9">
<!--选择图片-->
<ul class="list-group">
<li class="list-group-item">
<!--封面图 一张-->
<div class="form-group full-width-100 full-pic-area">
<!--<label for="">列表页封面图(1张)</label>-->
<input readonly="readonly" type="text" name="liebiao_pic_input" class="form-control" style="width: 150px !important;display:none" id="liebiao_pic_input" placeholder="请选择图片">
<button class="btn btn-default upload-image-btn" id="liebiao_pic_btn" type="button" data-limittop="1">选择图片</button>
<span class="tip"></span>
</div>
<ul class="img-pre-ul" id="liebiao_pic_ul"></ul>
</li>
</ul>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">内容:</label>
<div class="col-sm-9">
<div class="form-group" style="width: 100%;">
<!--<label for="" style="width: 100%;">内容</label>-->
<div class="input-group" style="width: 100%;" id="dajiangtang">
<?php
create_editor('goods_sup_id','');
?>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="">
</form>
<button type="button" class="btn btn-primary" id="add_news">
<button type="button" class="btn btn-primary" id="add_news">
保存
</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
......
{layout name="global/frame_tpl" /}
<input type="hidden" class="page-load" id="addNoticeView" />
<style>
.modal-body1 {
height: 600px;
overflow-y: auto;
padding-bottom: 60px;
}
.modal-body2 {
padding: 35px;
/*height: 380px;*/
}
.user-ul {
width: 100%;
height: auto;
padding-bottom: 15px;
float: left;
position: relative;
left: -40px;
}
.user-ul li {
list-style: none;
line-height: 30px;
}
.user-ul2 {
width: 100%;
height: auto;
padding-bottom: 15px;
float: left;
position: relative;
left: -40px;
}
.user-ul2 li {
list-style: none;
line-height: 30px;
}
.input {
width: 16%!important;
}
.text-left {
float: left;
display: inline-block;
height: 26px;
line-height: 26px;
font-size: 14px;
}
.text-right {
float: right;
display: inline-block;
}
#batch {
float: left;
height: 34px;
line-height: 34px;
}
.ld-Marheight {
margin-top: 15px;
}
.phone_list {
margin-top: 32px;
width: 182px;
margin-left: -182px;
}
.phone_jia {
width: 182px;
}
.phone_list li {
height: 22px;
line-height: 22px;
}
.phone_list li:nth-of-type(even) {
display: none;
}
.modal-dialog-one {
width: 668px;
}
.clear {
clear: both;
}
.left {
float: left;
font-size: 12px;
}
.bottom {
margin-top: 30px;
}
.btn6_1 {
width: 80% !important;
float: left;
}
.notice-title {
font-size: 20px;
}
.notice-time {
font-size: 13px;
margin-top: 20px;
}
.notice-text {
font-size: 16px;
margin-top: 30px;
text-indent: 2em;
}
.col-sm-9 .btn5 {
width: 30%!important;
}
.img-pre-ul {
padding-left: 0;
overflow: hidden;
/*width: 100%;*/
}
/*图片上传相关样式*/
.img-pre-ul>li {
list-style: no;
float: left;
width: 210px;
height: 170px;
overflow: hidden;
margin-right: 10px;
margin-top: 10px;
}
.img-pre-ul>li.pdf-pre-li {
height: 70px;
}
.img-pre-ul>li>img {
float: left;
width: 210px;
height: 140px;
object-fit: contain;
cursor: pointer;
}
.img-pre-ul>li>a {
float: left;
width: 210px;
text-align: center;
line-height: 30px;
}
.img-pre-ul>li>a.pdf-pre-a {
line-height: 20px;
word-break: break-all;
}
/*图片点击放大预览区域的样式*/
#img_mask_area {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: 1999;
background-color: rgba(0, 0, 0, .3);
display: none;
}
#img_mask_area>img {
width: 900px;
height: 700px;
object-fit: contain;
position: absolute;
left: 50%;
top: 50%;
margin-left: -450px;
margin-top: -350px;
}
/*上传图片列表 样式*/
.form-group {
margin: 10px;
}
.input-100-width {
width: 100px!important;
}
.input-360-width {
width: 360px!important;
}
.textarea-500-width {
width: 500px!important;
}
.list-group-item>.full-width-100+.full-width-100 {
padding-top: 10px;
}
.list-group-item>.full-width-100>label {
width: 60px;
}
.list-group-item>.full-pic-area>label {
width: 120px;
}
.delet-pic-btn {
color: red;
}
#modal_content_add {
width: 900px;
}
</style>
<!--导航star-->
<!-- Page Content -->
<div id="page-content-wrapper">
<div class="container">
<div class="row">
<div class="col-lg-10 col-lg-offset-0">
<div class="panel panel-default">
<div class="panel-heading breadcrumb">
<li>
<a href="#">公告</a>
</li>
<li class="active">新增公告</li>
<div class="pull-right">
<ul class="bread_btn">
<li>
</li>
</ul>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover table-condensed">
<tbody id="" class="text-center">
<tr>
<td>
<form class="form-horizontal">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">标题:</label>
<div class="col-sm-9">
<input type="text" class="form-control btn6" name="user_name" id="announcement_title" placeholder="请输入标题">
<span class="use-span text-danger">(50字以内,显示在首页列表)</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">内容:</label>
<div class="col-sm-9">
<div class="form-group" style="width: 100%;">
<!--<label for="" style="width: 100%;">内容</label>-->
<div class="input-group" style="width: 100%;" id="dajiangtang">
<?php
create_editor('goods_sup_id','');
?>
</div>
</div>
</div>
</div>
</form>
<button type="button" class="btn btn-primary" id="add_announcement">
保存
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /#wrapper -->
<!-- /#删除模态框 -->
<div class="modal fade" id="modal-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
&times;
</button>
<h4 class="modal-title">
删除
</h4>
</div>
<div class="modal-body">
<div class="modal-body">
<input type="hidden" value="" id="delete_id" /> 确认删除吗?
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</button>
<button type="button" class="btn btn-primary" id="confirm_delete">
删除
</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
<div id="img_mask_area" title="点击任意位置可关闭">
<img />
</div>
\ No newline at end of file
......@@ -2,13 +2,13 @@
<input type="hidden" class="page-load" id="notice" />
<style>
.modal-body1 {
height: 600px;
height: 660px;
overflow-y: auto;
padding-bottom: 60px;
}
.modal-body2{
padding: 35px;
height: 380px;
/*height: 380px;*/
}
.user-ul {
......@@ -113,7 +113,13 @@
.notice-text{
font-size: 16px;
margin-top: 30px;
text-indent: 2em;
/*text-indent: 2em;*/
}
/*限制图片的最大宽度*/
.notice-text img{
/*width: 100%!important;*/
/*后端给的样式 没有 max-width */
max-width: 550px;
}
</style>
<!--导航star-->
......@@ -135,7 +141,9 @@
<div class="pull-right">
<ul class="bread_btn">
<li>
<a href="#modal_add_user" data-toggle="modal" class="btn btn-default add_alert"><i class="icon-plus"></i> 新增公告
<!--<a href="#modal_add_user" data-toggle="modal" class="btn btn-default add_alert"><i class="icon-plus"></i> 新增公告
</a>-->
<a href="addNoticeView.html" class="btn btn-default add_alert" target="_self"><i class="icon-plus"></i> 新增公告
</a>
</li>
</ul>
......@@ -248,11 +256,11 @@
公告详情
</h4>
</div>
<div class="modal-body modal-body2">
<div class="modal-body modal-body1">
<div class="notice-title text-center">清明节放假通知</div>
<div class="notice-time text-right">2018-12-12 12:00:00</div>
<div class="clear"></div>
<div class="notice-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc eget.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc eget</div>
<div class="notice-text"></div>
</div>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment