123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- <?php
- /**
- * @copyright Copyright (c) 2022 勾股工作室
- * @license https://opensource.org/licenses/GPL-3.0
- * @link https://www.gougucms.com
- */
- declare (strict_types=1);
- namespace app\admin\controller\contract;
- use app\api\BaseController;
- use app\admin\model\ContractLog;
- use think\App;
- use think\facade\Db;
- use think\facade\View;
- class Api extends BaseController
- {
- public function __construct(App $app)
- {
- parent::__construct($app);
- $this->uid = get_login_admin("id");;
- }
- //获取合同协议
- public function get_contract()
- {
- $param = get_params();
- $where = array();
- $whereOr = array();
- if (!empty($param['keywords'])) {
- $where[] = ['id|name', 'like', '%' . $param['keywords'] . '%'];
- }
- $where[] = ['delete_time', '=', 0];
- // $where[] = ['check_status', '=', 2];
- $where[] = ["subject_id", "=", get_login_admin("unit_name")];
- $uid = $this->uid;
- // $auth = isAuth($uid,'contract_admin');
- // if($auth==0){
- // $whereOr[] =['admin_id|prepared_uid|sign_uid|keeper_uid', '=', $uid];
- // $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")];
- // $dids = get_department_role($this->uid);
- // if(!empty($dids)){
- // $whereOr[] =['sign_did', 'in', $dids];
- // }
- // }
- $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
- $list = Db::name('Contract')
- ->field('id,name,code,customer_id,sign_uid,sign_time')
- ->order('id desc')
- ->where($where)
- ->where(function ($query) use ($whereOr) {
- $query->whereOr($whereOr);
- })
- ->paginate($rows, false)->each(function ($item, $key) {
- $item['sign_name'] = Db::name('Admin')->where('id', $item['sign_uid'])->value('nickname');
- $item['sign_time'] = date('Y-m-d', $item['sign_time']);
- $item['customer'] = Db::name('Admin')->where('id', $item['customer_id'])->value('nickname');
- return $item;
- });
- table_assign(0, '', $list);
- }
- //添加附件
- public function add_file()
- {
- $param = get_params();
- $param['create_time'] = time();
- $param['admin_id'] = $this->uid;
- $fid = Db::name('ContractFile')->strict(false)->field(true)->insertGetId($param);
- if ($fid) {
- $log_data = array(
- 'field' => 'file',
- 'action' => 'upload',
- 'contract_id' => $param['contract_id'],
- 'admin_id' => $param['admin_id'],
- 'old_content' => '',
- 'new_content' => $param['file_name'],
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, '上传成功', $fid);
- }
- }
- //删除
- public function delete_file()
- {
- if (request()->isDelete()) {
- $id = get_params("id");
- $data['id'] = $id;
- $data['delete_time'] = time();
- if (Db::name('ContractFile')->update($data) !== false) {
- $detail = Db::name('ContractFile')->where('id', $id)->find();
- $file_name = Db::name('File')->where('id', $detail['file_id'])->value('name');
- $log_data = array(
- 'field' => 'file',
- 'action' => 'delete',
- 'contract_id' => $detail['contract_id'],
- 'admin_id' => $this->uid,
- 'new_content' => $file_name,
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "删除成功");
- } else {
- return to_assign(1, "删除失败");
- }
- } else {
- return to_assign(1, "错误的请求");
- }
- }
- public function check_agree()
- {
- if (request()->isPost()) {
- $param = get_params();
- $check_node = isset($param["check_node"]) ? $param["check_node"] : 0;
- if ($check_node == 1) {
- $param["check_step_sort"] = 0;
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (!empty($old["check_flow_ids"])) {
- $check_step_sort = explode(",", (string)$old["check_flow_ids"]);
- $check_step_sort[] = $old["check_step_sort"];
- $check_step_sort = implode(",", $check_step_sort);
- // halt($check_step_sort);
- } else {
- $check_step_sort = $old["check_step_sort"];
- }
- $param["check_flow_ids"] = $check_step_sort;
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['check_status'],
- 'old_content' => $old['check_status'],
- 'create_time' => time(),
- );
- Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>1]);
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- } else {
- $checkStepData = array(
- "check_admin" => $param["check_admin_name"],
- "check_id" => $param["check_admin_ids"],
- "create_time" => time()
- );
- $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData);
- $param["check_step_sort"] = $insertId;
- $param["check_user"] = $param["check_admin_name"];
- unset($param["check_status"]);
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (!empty($old["check_flow_ids"])) {
- $check_step_sort = explode(",", (string)$old["check_flow_ids"]);
- $check_step_sort[] = $old["check_step_sort"];
- $check_step_sort = implode(",", $check_step_sort);
- } else {
- $check_step_sort = $old["check_step_sort"];
- }
- $param["check_flow_ids"] = $check_step_sort;
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_step_sort',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $insertId,
- 'old_content' => $old['check_step_sort'],
- 'create_time' => time(),
- );
- Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>1]);
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- }
- }
- }
- public function check_disagree()
- {
- if (request()->isPost()) {
- $param = get_params();
- $check_node = isset($param["check_node"]) ? $param["check_node"] : 0;
- $param["check_step_sort"] = 0;
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (!empty($old["check_flow_ids"])) {
- $check_step_sort = explode(",", (string)$old["check_flow_ids"]);
- $check_step_sort[] = $old["check_step_sort"];
- $check_step_sort = implode(",", $check_step_sort);
- } else {
- $check_step_sort = $old["check_step_sort"];
- }
- $param["check_flow_ids"] = $check_step_sort;
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['check_status'],
- 'old_content' => $old['check_status'],
- 'create_time' => time(),
- );
- Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>2]);
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- }
- }
- //拒绝后修改
- public function check_edit()
- {
- if (request()->isPost()) {
- $param = get_params();
- if ($param["check_status"] != 7) {
- $param["check_status"] = 7;
- if(Db::name('Contract')->strict(false)->update($param)){
- return to_assign(0, "操作成功");
- }else{
- return to_assign(1, "操作失败");
- }
- }
- $checkStepData = array(
- "check_admin" => $param["check_admin_name"],
- "check_id" => $param["check_admin_ids"],
- "create_time" => time()
- );
- $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData);
- $param["check_step_sort"] = $insertId;
- $param["check_user"] = $param["check_admin_name"];
- unset($param["check_status"]);
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (!empty($old["check_flow_ids"])) {
- $check_step_sort = explode(",", (string)$old["check_step_sort"]);
- $check_step_sort[] = $old["check_flow_ids"];
- $check_step_sort = implode(",", $check_step_sort);
- } else {
- $check_step_sort = $old["check_step_sort"];
- }
- $param["check_flow_ids"] = $check_step_sort;
- if (Db::name('Contract')->strict(false)->update($param)) {
- $log_data = array(
- 'field' => 'check_step_sort',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $insertId,
- 'old_content' => $old['check_step_sort'],
- 'create_time' => time(),
- );
- Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>3]);
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- }
- }
- //状态改变等操作
- public function check()
- {
- if (request()->isPost()) {
- $param = get_params();
- if ($param['check_status'] == 0) {
- $param['check_step_sort'] = 0;
- }
- $checkStepData = array(
- "check_admin" => $param["check_admin_name"],
- "check_id" => $param["check_admin_ids"],
- "create_time" => time()
- );
- $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData);
- $param["check_step_sort"] = $insertId;
- $param["check_user"] = $param["check_admin_name"];
- // halt($param);
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['check_status'],
- 'old_content' => $old['check_status'],
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- } else {
- return to_assign(1, "错误的请求");
- }
- }
- //中止合同
- public function discontinue()
- {
- if (request()->isPost()) {
- $param = get_params();
- $param['stop_uid'] = $this->uid;
- $param["stop_name"] = get_login_admin("nickname");
- $param["stop_time"] = time();
- $param["stop_remark"] = !empty($param["mark"]) ? $param["mark"] : "";
- // halt($param);
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['check_status'],
- 'old_content' => $old['check_status'],
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- } else {
- return to_assign(1, "错误的请求");
- }
- }
- //作废合同
- public function obsolete()
- {
- if (request()->isPost()) {
- $param = get_params();
- $param['void_uid'] = $this->uid;
- $param["void_name"] = get_login_admin("nickname");
- $param["void_time"] = time();
- $param["void_remark"] = !empty($param["mark"]) ? $param["mark"] : "";
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'check_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['check_status'],
- 'old_content' => $old['check_status'],
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- } else {
- return to_assign(1, "错误的请求");
- }
- }
- //归档等操作
- public function archive()
- {
- if (request()->isPost()) {
- $param = get_params();
- // if($param['archive_status'] == 1){
- $param['archive_uid'] = $this->uid;
- $param["archive_name"] = get_login_admin("nickname");
- $param['archive_time'] = time();
- $param["stop_remark"] = !empty($param["mark"]) ? $param["mark"] : "";
- // }
- $old = Db::name('Contract')->where('id', $param['id'])->find();
- if (Db::name('Contract')->strict(false)->update($param) !== false) {
- $log_data = array(
- 'field' => 'archive_status',
- 'contract_id' => $param['id'],
- 'admin_id' => $this->uid,
- 'new_content' => $param['archive_status'],
- 'old_content' => $old['archive_status'],
- 'create_time' => time(),
- );
- Db::name('ContractLog')->strict(false)->field(true)->insert($log_data);
- return to_assign(0, "操作成功");
- } else {
- return to_assign(1, "操作失败");
- }
- } else {
- return to_assign(1, "错误的请求");
- }
- }
- //审核流程
- public function check_node(){
- // if (request()->isPost()) {
- $param = get_params();
- $id = isset($param["id"])?$param["id"]:0;
- $stepIds = Db::name("contract")->where("id",$id)->column("check_flow_ids,check_step_sort");
- $ids = array();
- if(!empty($stepIds)){
- foreach ($stepIds as $k => $v){
- if(!empty($v["check_flow_ids"])){
- $ids = explode(",",$v["check_flow_ids"]);
- }
- if((int)$v["check_step_sort"]){
- $ids = array_merge($ids,(array)$v["check_step_sort"]);
- }
- }
- }
- $data = Db::name("check_step")->whereIn("id",$ids)->order('create_time asc')->select();
- return to_assign(0, "操作成功",$data);
- // } else {
- // return to_assign(1, "错误的请求");
- // }
- }
- //合同操作日志列表
- public function contract_log()
- {
- $param = get_params();
- $list = new ContractLog();
- $content = $list->contract_log($param);
- return to_assign(0, '', $content);
- }
-
- public function relevancy(){
- if(request()->isAjax()){
- $param = get_params();
- $where = [
- ["uid","=",$param["uid"]],
- ["uuid","=",$param["uuid"]],
- ["delete_time","=",0]
- ];
- $num = Db::name("relation")->where($where)->count();
- if($num!==0){
- return to_assign(0,"项目已添加");
- }
- $param["create_time"] = time();
- try {
- Db::name("relation")->strict(false)->field(true)->insert($param);
- } catch (\Exception $e) {
- return to_assign(1, '操作失败,原因:' . $e->getMessage());
- }
- return to_assign(0,"操作成功");
- }
- }
- public function relevancy_del(){
- if(request()->isAjax()){
- $param = get_params();
- $param["delete_time"] = time();
- $param["maker_id"] = $this->uid;
- try {
- Db::name("relation")->strict(false)->field(true)->save($param);
- } catch (\Exception $e) {
- return to_assign(1, '操作失败,原因:' . $e->getMessage());
- }
- return to_assign(0,"操作成功");
- }
- }
- public function relevancy_p(){
- if(request()->isAjax()){
- $param = get_params();
- $id = isset($param["id"])?$param["id"]:0;
- $uuid = Db::name("relation")->alias("r")
- ->leftJoin("cost_project c","c.id=r.uuid")->where("uid",$id)->where([["r.delete_time","=",0]])->column("r.id,project_name,uid,uuid");
-
- $newArr = [];
- foreach($uuid as $item){
- $key = $item['uid'].'-'.$item['uuid'];
- if(!isset($newArr[$key])){
- $newArr[$key] = $item;
- }
- }
- $result = array_values($newArr);
- return json($result);
- }
- }
- //获取客户列表
- public function get_customer()
- {
- $param = get_params();
- $where = array();
- if (!empty($param['keywords'])) {
- $where[] = ['id|name', 'like', '%' . $param['keywords'] . '%'];
- }
- $where[] = ['delete_time', '=', 0];
- $uid = $this->uid;
- $auth = isAuth($uid, 'customer_admin');
- $dids = get_department_role($this->uid);
- if ($auth == 0) {
- $whereOr[] = ['belong_uid', '=', $uid];
- if (!empty($dids)) {
- $whereOr[] = ['belong_did', 'in', $dids];
- }
- $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")];
- }
- $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
- $contact = null;
- $list = Db::name('Customer')->field('id,name,address')->order('id asc')->where($where)->paginate($rows, false)->each(function ($item, $key) {
- $contact = Db::name('CustomerContact')->where(['cid' => $item['id'], 'is_default' => 1])->find();
- if (!empty($contact)) {
- $item['contact_name'] = $contact['name'];
- $item['contact_mobile'] = $contact['mobile'];
- } else {
- $item['contact_name'] = '';
- $item['contact_mobile'] = '';
- }
- return $item;
- });
- halt($list);
- table_assign(0, '', $list);
- }
- }
|