Commit a3b91047 authored by twj's avatar twj

EsopPlan

parent 11dfa27c
This diff is collapsed.
......@@ -5,8 +5,10 @@ namespace app\money\admin;
use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\money\model\EsopPlan as EsopPlanModel;
use app\member\model\Member as MemberModel;
use app\stock\model\StockList as StockListModel;
use think\Db;
use think\Hook;
use think\Hook;
use think\Cache;
/**
......@@ -21,108 +23,124 @@ class Esopplan extends Admin
*/
public function index()
{
cookie('__forward__', $_SERVER['REQUEST_URI']);
cookie('__forward__', $_SERVER['REQUEST_URI']);
// 获取查询条件
$map = $this->getMap();
$order = $this->getOrder();
$order = $this->getOrder();
empty($order) && $order = 'id desc';
// 数据列表
$data_list = EsopPlanModel::getAll($map, $order);
// 分页数据
// 分页数据
$page = $data_list->render();
if(empty($_SERVER["QUERY_STRING"])){
$excel_url=substr(http().$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"],0,-
5)."_export";
}else{
$excel_url=substr(http().$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"],0,-
5)."_export?".$_SERVER["QUERY_STRING"];
if (empty($_SERVER["QUERY_STRING"])) {
$excel_url = substr(http() . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"], 0, -5) . "_export";
} else {
$excel_url = substr(http() . $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"], 0, -5) . "_export?" . $_SERVER["QUERY_STRING"];
}
$btn_excel = [
'title' => '导出EXCEL表',
'icon' => 'fa fa-fw fa-download',
'href' => url($excel_url,'','')
'href' => url($excel_url, '', '')
];
return ZBuilder::make('table')
->setSearch(['mid'=>'用户ID','member.name' => '姓名', 'member.mobile' => '手机号']) // 设置搜索框
return ZBuilder::make('table')
->setSearch(['mid' => '用户ID', 'member.name' => '姓名', 'member.mobile' => '手机号']) // 设置搜索框
->addColumns([ // 批量添加数据列
['id', 'ID'],
['mobile', '手机号'],
['name', '姓名'],
['title','股票'],
['title', '股票'],
['account', '可用期权'],
['plan_account', '期权总值'],
['remain_account', '待释放'],
['release_account', '已释放'],
['duration','总释放天数'],
['duration', '总释放天数'],
['days', '已释放天数'],
['release_time','开始释放时间'],
['release_time', '开始释放时间'],
['create_time', '创建时间'],
['status', '状态', 'switch'],
])
->hideCheckbox()
->setTableName('plan')
->addTopButton('custem',$btn_excel)
->addRightButtons(['edit']) // 批量添加右侧按钮
->setTableName('esop_plan')
->addTopButton('custem', $btn_excel)
->addTopButtons('add')
->addRightButton('edit')
->addRightButton('delete')
->addOrder('id,create_time,release_time')
->setRowList($data_list)
->setRowList($data_list)
->fetch(); // 渲染模板
}
public function index_export(){
// 获取查询条件
$map = $this->getMap();
$order = $this->getOrder();
empty($order) && $order = 'id desc';
// 数据列表
$xlsData = EsopPlanModel::getAll($map, $order);
$title="期权计划列表";
$arrHeader = array('ID','手机号','姓名','股票','可用期权','期权总值','待释放', '已释放','总释放天数', '已释放天数','开始释放时间', '创建时间', '状态');
$fields = array('id','mobile','name','title','account','plan_account','remain_account','release_account','duration','days','release_time','create_time','status');
export($arrHeader,$fields,$xlsData,$title);
}
public function quickEdit($record = [])
/**
* 新增
* @return mixed
*/
public function add()
{
$id = input('post.pk', '');
$field = input('post.name', '');
$value = input('post.value', '');
$table = input('post.table', '');
$type = input('post.type', '');
if(in_array($field, array('account', 'plan_account','remain_account','release_account')) ){
$value *= 100;
// 保存数据
if ($this->request->isPost()) {
$data = $this->request->post();
$data['create_time'] = time();
$data['plan_account'] = $data['plan_account'] * 100;
//业务逻辑处理
$result_up = Db::name("esop_plan")->insert($data);
if ($result_up === 1) {
$this->success('添加成功', 'index');
} else {
$this->error($result_up);
}
}
$mid = EsopPlanModel::where('id', $id)->value('mid');
$old_value = EsopPlanModel::where('id', $id)->value($field);
$mobile = Db('member')->where('id',$mid)->value('mobile');
$details = $mobile.' 字段(' . $field . '),原值:('.$old_value.')新值:(' . $value . ')';
// 使用ZBuilder快速创建表单
return ZBuilder::make('form')
->setPageTitle('新增') // 设置页面标题
->addFormItems([ // 批量添加表单项
['select:5', 'mid', '请选择用户', '', MemberModel::getMemberList(), '', url('get_mid'), 'mid'],
['select:5', 'stock_id', '请选择股票', '', StockListModel::getStockList(), '', url('get_stock_id'), 'stock_id'],
['number', 'plan_account', '期权总值', '期权总的价值(港元)', '0'],
['number', 'duration', '总释放天数', '总释放天数', '1000'],
['datetime', 'release_time', '开始时间', '从哪天开始释放期权', '', 'YYYY-MM-DD HH:mm:ss'],
])
->fetch();
}
switch ($type) {
// 日期时间需要转为时间戳
case 'release_time':
$value = strtotime($value);
break;
// 开关
case 'switch':
$value = $value == 'true' ? 1 : 0;
break;
// 根据所有用户ID
public function get_mid($mid)
{
$arr = [];
$where['status'] = 1;
$where['id'] = $mid;
$data_list = Db::name('member')->where($where)->find();
if (!is_null($data_list)) {
$arr['code'] = '1'; //判断状态
$arr['msg'] = '请求成功'; //回传信息
$result[$data_list['id']] = $data_list['id'];
$arr['list'] = format_linkage($result); //将一维数组转成联动需要的数据格式
} else {
$arr['code'] = '0'; //判断状态
$arr['msg'] = '数据请求失败'; //回传信息
$arr['list'] = []; //将一维数组转成联动需要的数据格式
}
$pk = Db('esop_plan')->getPk();
$result = Db('esop_plan')->where($pk, $id)->setField($field, $value);
if (false !== $result) {
Cache::clear();
// 记录行为日志
if (!empty($member_mobile)) {
call_user_func_array('action_log', ['esop_plan_edit', 'esop_plan', $id, UID, $details]);
}
$this->success('操作成功');
return json($arr);
}
// 根据所有股票ID
public function get_stock_id($stock_id)
{
$arr = [];
$where['status'] = 1;
$where['id'] = $stock_id;
$data_list = Db::name('stock_list')->where($where)->find();
if (!is_null($data_list)) {
$arr['code'] = '1'; //判断状态
$arr['msg'] = '请求成功'; //回传信息
$result[$data_list['id']] = $data_list['id'];
$arr['list'] = format_linkage($result); //将一维数组转成联动需要的数据格式
} else {
$this->error('操作失败');
$arr['code'] = '0'; //判断状态
$arr['msg'] = '数据请求失败'; //回传信息
$arr['list'] = []; //将一维数组转成联动需要的数据格式
}
return json($arr);
}
}
\ No newline at end of file
}
......@@ -16,7 +16,7 @@
{
$data_list = self::view('esop_plan p', true)
->view('member', 'mobile, name, id_card', 'member.id=p.mid', 'left')
->view('stock', 'title', 'stock.id=p.stock_id', 'left')
->view('stock_list', 'title', 'stock_list.id=p.stock_id', 'left')
->where($map)
->order($order)
->paginate()
......
......@@ -8,11 +8,35 @@
// +----------------------------------------------------------------------
// | @author menghui
namespace app\stock\model;
use think\model;
use think\Db;
class StockList extends Model{
class StockList extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = '__STOCK_LIST__';
// 自动写入时间戳
protected $autoWriteTimestamp = true;
}
\ No newline at end of file
/**
* 获取股票列表(下拉选择时使用)
* @param
* @author 路人甲乙
* @return mixed
*/
public static function getStockList()
{
$list = [];
$where['status'] = 1;
$data_list = Db::name('stock_list')->where($where)->column(true, 'id');
if (!is_null($data_list)) {
foreach ($data_list as $v) {
$list[$v['id']] = $v['title'];
}
} else {
$list = [];
}
return $list;
}
}
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