硕顺crm后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

213 lines
6.6 KiB

<?php
namespace app\admin\controller\qingdong\work;
use addons\qingdong\model\Customer;
use addons\qingdong\model\Staff;
use app\admin\model\AuthGroup;
use app\common\controller\Backend;
use addons\qingdong\model\Form;
use addons\qingdong\model\Flow as FlowModel;
use fast\Tree;
/**
* 审批流程
*/
class Flow extends Backend {
protected $relationSearch = true;
protected $searchFields = 'id,name';
/**
* @var \addons\qingdong\model\Flow
*/
protected $model = null;
public function _initialize() {
parent::_initialize();
$this->model = new FlowModel();
$this->childrenGroupIds = $this->auth->getChildrenGroupIds($this->auth->isSuperAdmin());
//角色组
$groupList = collection(AuthGroup::where('id', 'in', $this->childrenGroupIds)->select())->toArray();
Tree::instance()->init($groupList);
$groupdata = [];
if ($this->auth->isSuperAdmin()) {
$result = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0));
foreach ($result as $k => $v) {
$groupdata[$v['id']] = $v['name'];
}
} else {
$result = [];
$groups = $this->auth->getGroups();
foreach ($groups as $m => $n) {
$childlist = Tree::instance()->getTreeList(Tree::instance()->getTreeArray($n['id']));
$temp = [];
foreach ($childlist as $k => $v) {
$temp[$v['id']] = $v['name'];
}
$result[__($n['name'])] = $temp;
}
$groupdata = $result;
}
$this->view->assign('groupdata', $groupdata);
}
/**
* 查看
*/
public function index()
{
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()) {
$forms = $this->model->where([])->select();
$forms = collection($forms)->toArray();
$result = array("total" => count($forms), "rows" => $forms);
return json($result);
}
return $this->view->fetch();
}
/**
* 新增
* @return string
*/
public function add()
{
if ($this->request->isAjax()) {
$row = $this->request->post('row/a');
$findType = $this->model->where(array('relation_type'=>$row['relation_type']))->find();
if($findType){
$this->error('关联对象已存在,请在列表中进行修改');
}
if($row['status'] == 1){
$examine_ids = json_decode($row['examine_ids'],true);
if(!$examine_ids){
$this->error('请选择审批人');
}
foreach($examine_ids as $k=>$v){
if(!$v['staff_id'] && $v['stafftype'] !=3){
$this->error('请选择审批人');
}
}
}
$data = [
'name' => $row['name'],
'relation_type' => $row['relation_type'],
'status' => $row['status'],
'examine_ids' => $row['examine_ids'],
'remark' => $row['remark'],
'group_ids' => implode(',',$row['group_ids']??[]),
'last_modified'=>time(),
'last_admin_id'=>$this->auth->id
];
$result = $this->model->allowField(true)->save($data);
if (!$result) {
$this->error('提交失败');
}
$this->success('提交成功');
}
return $this->view->fetch();
}
/**
* 修改
* @return string
*/
public function edit($ids = null) {
$row = $this->model->get($ids);
if (!$row) {
$this->error(__('No Results were found'));
}
$adminIds = $this->getDataLimitAdminIds();
if (is_array($adminIds)) {
if (!in_array($row[$this->dataLimitField], $adminIds)) {
$this->error(__('You have no permission'));
}
}
if ($this->request->isAjax()) {
$row = $this->request->post('row/a');
if($row['status'] == 1){
$examine_ids = json_decode($row['examine_ids'],true);
if(!$examine_ids){
$this->error('请选择审批人');
}
foreach($examine_ids as $k=>$v){
if(!$v['staff_id'] && $v['stafftype'] !=3){
$this->error('请选择审批人');
}
}
}
$result = $this->model::destroy(['id'=>$ids]);
if (!$result) {
$this->error('删除失败');
}
$data = [
'name' => $row['name'],
'relation_type' => $row['relation_type'],
'status' => $row['status'],
'examine_ids' => $row['examine_ids'],
'remark' => $row['remark'],
'group_ids' => implode(',',$row['group_ids']),
'last_modified'=>time(),
'last_admin_id'=>$this->auth->id
];
$result = $this->model->allowField(true)->save($data);
if (!$result) {
$this->error(__('No rows were updated'));
}
$this->success();
}
$this->view->assign("row", $row);
return $this->view->fetch();
}
/**
* 删除
* @param null $ids
* @return string|void
*/
public function del($ids = null) {
if ($this->request->isAjax()) {
$map['id'] = $ids;
$row=$this->model->get($ids);
if(!$row){
$this->error('数据不存在');
}
$result = $this->model->destroy($map);
if (!$result) {
$this->error('删除失败');
}
$this->success('删除成功');
}
return $this->view->fetch();
}
/**
* 员工列表
*/
public function getstaff()
{
$pageSize = input('pageSize');
$pageNumber = input('pageNumber');
$where = [];
if ($keyValue = $this->request->request("keyValue")) {
$where['id'] = ['in',explode(',',$keyValue)];
}
$name = input('name');
if (!empty($name)) {
$where['name'] = ['like', '%' . $name . '%'];
}
$customer = Staff::where($where)->where('cid','=',CID)->field('id,name')->order('id desc')->paginate($pageSize, false, ['page' => $pageNumber]);
return json(['list' => $customer->items(), 'total' => $customer->total()]);
}
}