Supplier.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\contract\controller;
  15. use app\base\BaseController;
  16. use app\contract\model\Supplier as SupplierModel;
  17. use app\contract\model\SupplierContact;
  18. use app\contract\validate\SupplierValidate;
  19. use app\contract\validate\SupplierContactValidate;
  20. use think\exception\ValidateException;
  21. use think\facade\Db;
  22. use think\facade\View;
  23. class Supplier extends BaseController
  24. {
  25. /**
  26. * 构造函数
  27. */
  28. protected $model;
  29. public function __construct()
  30. {
  31. parent::__construct(); // 调用父类构造函数
  32. $this->model = new SupplierModel();
  33. }
  34. /**
  35. * 数据列表
  36. */
  37. public function datalist()
  38. {
  39. $param = get_params();
  40. if (request()->isAjax()) {
  41. $where = [];
  42. $where[]=['delete_time','=',0];
  43. if (!empty($param['keywords'])) {
  44. $where[] = ['id|title', 'like', '%' . $param['keywords'] . '%'];
  45. }
  46. $list = $this->model->datalist($param,$where);
  47. return table_assign(0, '', $list);
  48. }
  49. else{
  50. return view();
  51. }
  52. }
  53. //新建编辑
  54. public function add()
  55. {
  56. $param = get_params();
  57. if (request()->isAjax()) {
  58. if (!empty($param['id']) && $param['id'] > 0) {
  59. try {
  60. validate(SupplierValidate::class)->scene('edit')->check($param);
  61. } catch (ValidateException $e) {
  62. // 验证失败 输出错误信息
  63. return to_assign(1, $e->getError());
  64. }
  65. $param['update_time'] = time();
  66. $res = Db::name('Supplier')->strict(false)->update($param);
  67. if ($res) {
  68. add_log('edit', $param['id'], $param);
  69. }
  70. return to_assign();
  71. } else {
  72. try {
  73. validate(SupplierValidate::class)->scene('add')->check($param);
  74. } catch (ValidateException $e) {
  75. // 验证失败 输出错误信息
  76. return to_assign(1, $e->getError());
  77. }
  78. $param['create_time'] = time();
  79. $insertId = Db::name('Supplier')->strict(false)->insertGetId($param);
  80. if ($insertId) {
  81. if(!empty($param['c_name'])){
  82. $contact = [
  83. 'name' => $param['c_name'],
  84. 'mobile' => $param['c_mobile'],
  85. 'sex' => $param['c_sex'],
  86. 'sid' => $insertId,
  87. 'is_default' => 1,
  88. 'create_time' => time(),
  89. 'admin_id' => $this->uid
  90. ];
  91. Db::name('SupplierContact')->strict(false)->field(true)->insert($contact);
  92. }
  93. add_log('add', $insertId, $param);
  94. }
  95. return to_assign();
  96. }
  97. } else {
  98. $id = isset($param['id']) ? $param['id'] : 0;
  99. if($id>0){
  100. $detail = Db::name('Supplier')->where('id',$id)->find();
  101. $detail['file_array'] = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  102. View::assign('detail', $detail);
  103. return view('edit');
  104. }
  105. return view();
  106. }
  107. }
  108. //查看
  109. public function view()
  110. {
  111. $param = get_params();
  112. $detail = Db::name('Supplier')->where('id',$param['id'])->find();
  113. $detail['file_array'] = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  114. View::assign('detail', $detail);
  115. return view();
  116. }
  117. //设置
  118. public function set()
  119. {
  120. $param = get_params();
  121. $res = Db::name('Supplier')->strict(false)->field('id,status')->update($param);
  122. if ($res) {
  123. if($param['status'] == 0){
  124. add_log('disable', $param['id'], $param);
  125. }
  126. else if($param['status'] == 1){
  127. add_log('recovery', $param['id'], $param);
  128. }
  129. return to_assign();
  130. }
  131. else{
  132. return to_assign(0, '操作失败');
  133. }
  134. }
  135. //删除
  136. public function del()
  137. {
  138. if (request()->isDelete()) {
  139. $params = get_params();
  140. $count = Db::name('Purchase')->where(['supplier_id' => $params['id'],'delete_time'=>0])->count();
  141. if($count>0){
  142. return to_assign(1, "该供应商有采购合同存在,不准删除");
  143. }
  144. $data['id'] = $params['id'];
  145. $data['delete_time'] = time();
  146. if (Db::name('Supplier')->update($data) !== false) {
  147. //删除客户联系人
  148. Db::name('SupplierContact')->where(['sid' => $params['id']])->update(['delete_time'=>time()]);
  149. return to_assign();
  150. } else {
  151. return to_assign(1, "操作失败");
  152. }
  153. } else {
  154. return to_assign(1, "错误的请求");
  155. }
  156. }
  157. //添加供应商联系人
  158. public function contact_add()
  159. {
  160. $param = get_params();
  161. if (request()->isAjax()) {
  162. if (!empty($param['id']) && $param['id'] > 0) {
  163. try {
  164. validate(SupplierContactValidate::class)->scene('edit')->check($param);
  165. } catch (ValidateException $e) {
  166. // 验证失败 输出错误信息
  167. return to_assign(1, $e->getError());
  168. }
  169. $param['update_time'] = time();
  170. $res = SupplierContact::strict(false)->field(true)->update($param);
  171. if ($res) {
  172. add_log('edit', $param['id'], $param);
  173. }
  174. return to_assign();
  175. } else {
  176. try {
  177. validate(SupplierContactValidate::class)->scene('add')->check($param);
  178. } catch (ValidateException $e) {
  179. // 验证失败 输出错误信息
  180. return to_assign(1, $e->getError());
  181. }
  182. $count= SupplierContact::where(['sid' => $param['sid'],'delete_time' => 0])->count();
  183. if($count == 0){
  184. $param['is_default'] = 1;
  185. }
  186. $param['admin_id'] = $this->uid;
  187. $param['create_time'] = time();
  188. $insertId = SupplierContact::strict(false)->field(true)->insertGetId($param);
  189. if ($insertId) {
  190. add_log('add', $insertId, $param);
  191. }
  192. return to_assign();
  193. }
  194. } else {
  195. $supplier_id = isset($param['sid']) ? $param['sid'] : 0;
  196. $id = isset($param['id']) ? $param['id'] : 0;
  197. if ($id > 0) {
  198. View::assign('detail', (new SupplierContact())->detail($id));
  199. return view('contact_edit');
  200. }
  201. $supplier_name = Db::name('Supplier')->where('id',$supplier_id)->value('title');
  202. View::assign('supplier_id', $supplier_id);
  203. View::assign('supplier_name', $supplier_name);
  204. return view();
  205. }
  206. }
  207. //删除供应商联系人
  208. public function contact_del()
  209. {
  210. if (request()->isDelete()) {
  211. $param = get_params();
  212. $contact = SupplierContact::where(['id' => $param['id']])->find();
  213. if($contact['is_default'] == 1){
  214. return to_assign(1, '供应商的首要联系人不能删除');
  215. }
  216. if($contact['admin_id'] != $this->uid){
  217. return to_assign(1, '你不是该联系人的创建人,无权限删除');
  218. }
  219. $param['delete_time'] = time();
  220. $res = SupplierContact::strict(false)->field(true)->update($param);
  221. if ($res) {
  222. add_log('edit', $param['id'], $param);
  223. return to_assign();
  224. } else {
  225. return to_assign(1, '操作失败');
  226. }
  227. } else {
  228. return to_assign(1, '参数错误');
  229. }
  230. }
  231. }