add.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. {extend name="../../base/view/common/base" /}
  2. {block name="style"}
  3. <style>
  4. .layui-form-pane .layui-form-label{color:#999; width:80px; padding:8px 3px;}
  5. .layui-form-item .layui-inline{margin-right:1px; margin-bottom:10px;}
  6. .layui-form-item{margin-bottom:5px;}
  7. .layui-form-item .layui-btn-danger{display:none; margin-top:-8px}
  8. .layui-form-item:hover .layui-btn-danger{display:inline-block;}
  9. .select-1,.select-2{display:none;}
  10. .check-type-1 .flow-tr-2,.check-type-1 .flow-tr-3{display:none;}
  11. .check-type-2 .flow-tr-1,.check-type-2 .flow-tr-3{display:none;}
  12. .check-type-3 .flow-tr-1,.check-type-3 .flow-tr-2{display:none;}
  13. .role-1 .select-3,.role-1 .select-4{display:none;}
  14. .role-2 .select-3,.role-2 .select-4{display:none;}
  15. .role-3 .select-4{display:none;}
  16. .role-4 .select-3{display:none;}
  17. .role-5 .select-3{display:none;}
  18. </style>
  19. {/block}
  20. <!-- 主体 -->
  21. {block name="body"}
  22. <form class="layui-form p-page">
  23. <h3 class="pb-1">审批流程</h3>
  24. <table id="flowTable" class="layui-table check-type-{$check_type}">
  25. <tr>
  26. <td class="layui-td-gray">流程名称<font>*</font></td>
  27. <td><input type="text" name="title" value="{$detail.title|default=''}" autocomplete="off" placeholder="请输入审批流程名称" lay-verify="required" lay-reqText="请输入审批流程名称" class="layui-input"></td>
  28. <td class="layui-td-gray">审批类型<font>*</font></td>
  29. <td>
  30. {eq name="$id" value="0"}
  31. <select name="cate_id" lay-filter="cate" lay-verify="required" lay-reqText="请选择审批类型">
  32. <option value="">--请选择审批类型--</option>
  33. {volist name=":get_base_data('FlowCate')" id="vo"}
  34. <option value="{$vo.id}">{$vo.title}</option>
  35. {/volist}
  36. </select>
  37. {else/}
  38. <select name="cate_id" lay-filter="cate" lay-verify="required" lay-reqText="请选择审批类型">
  39. <option value="">--请选择审批类型--</option>
  40. {volist name=":get_base_data('FlowCate')" id="vo"}
  41. <option value="{$vo.id}" {eq name="$detail.cate_id" value="$vo.id"}selected=""{/eq}>{$vo.title}</option>
  42. {/volist}
  43. </select>
  44. {/eq}
  45. </td>
  46. </tr>
  47. <tr>
  48. <td class="layui-td-gray">应用部门</td>
  49. <td colspan="3">
  50. <div class="layui-input-inline" style="width:80%;">
  51. <select id="department_ids" name="department_ids" xm-selected="{$detail.department_ids|default=''}" xm-select="select1" xm-select-skin="default"></select>
  52. </div>
  53. <span class="red" style="font-size:12px;">(如果不选,默认是全公司)</span>
  54. </td>
  55. </tr>
  56. <tr>
  57. <td class="layui-td-gray">流程说明</td>
  58. <td colspan="3">
  59. <textarea name="remark" placeholder="请输入流程说明" class="layui-textarea">{$detail.remark|default=''}</textarea>
  60. </td>
  61. </tr>
  62. <tr>
  63. <td class="layui-td-gray-2">审批流类型<font>*</font></td>
  64. <td colspan="3">
  65. <input type="radio" name="check_type" lay-filter="checktype" value="1" title="自由审批流" {eq name="$check_type" value="1"}checked{/eq}>
  66. <input type="radio" name="check_type" lay-filter="checktype" value="2" title="固定审批流" {eq name="$check_type" value="2"}checked{/eq}>
  67. <input type="radio" name="check_type" lay-filter="checktype" value="3" title="可回退的审批流" {eq name="$check_type" value="3"}checked{/eq}>
  68. </td>
  69. </tr>
  70. <tr id="flowTr1" class="flow-tr-1">
  71. <td class="layui-td-gray">审批流程<font>*</font></td>
  72. <td colspan="3">
  73. <div style="padding:10px; font-size:12px; background-color:#fffcf0">
  74. <p><strong>温馨提示</strong></p>
  75. <p>无需配置审批人,审批时操作人员根据实际情况选择审批人即可,自由度最高。</p>
  76. </div>
  77. </td>
  78. </tr>
  79. <tr id="flowTr2" class="flow-tr-2">
  80. <td class="layui-td-gray">审批流程<font>*</font></td>
  81. <td colspan="3">
  82. <div id="flowList2">
  83. {eq name="$check_type" value="2"}
  84. {volist name="detail.flow_list" id="vo"}
  85. <div class="layui-form-item layui-form-pane role-{$vo.check_role}">
  86. <div class="layui-inline">
  87. <label class="layui-form-label">第{$key+1}级</label>
  88. <div class="layui-input-inline" style="width:150px;">
  89. <select name="check_role[]" lay-filter="role">
  90. <option value="1" {eq name="$vo.check_role" value="1"}selected=""{/eq}>当前部门负责人</option>
  91. <option value="2" {eq name="$vo.check_role" value="2"}selected=""{/eq}>上一级部门负责人</option>
  92. <option value="3" {eq name="$vo.check_role" value="3"}selected=""{/eq}>指定岗位职称人</option>
  93. <option value="4" {eq name="$vo.check_role" value="4"}selected=""{/eq}>指定成员</option>
  94. </select>
  95. </div>
  96. </div>
  97. <div class="layui-inline select-3">
  98. <label class="layui-form-label">岗位职称</label>
  99. <div class="layui-input-inline" style="width:120px;">
  100. <input type="text" name="check_position_title[]" value="{$vo.check_position_title}" autocomplete="off" readonly class="layui-input picker-oa" data-types="position">
  101. <input type="hidden" name="check_position_id[]" value="{$vo.check_position_id}">
  102. </div>
  103. </div>
  104. <div class="layui-inline select-4">
  105. <label class="layui-form-label">指定人员</label>
  106. <div class="layui-input-inline" style="width:320px;">
  107. <input type="text" name="check_unames_a[]" value="{$vo.check_unames}" autocomplete="off" readonly class="layui-input picker-admin" data-type="2">
  108. <input type="hidden" name="check_uids_a[]" value="{$vo.check_uids}">
  109. </div>
  110. </div>
  111. <div class="layui-inline">
  112. <label class="layui-form-label" style="width:100px;">同时有多人时</label>
  113. <div class="layui-input-inline" style="width:80px;">
  114. <select name="check_types[]">
  115. <option value="1" {eq name="$vo.check_types" value="1"}selected=""{/eq}>会签</option>
  116. <option value="2" {eq name="$vo.check_types" value="2"}selected=""{/eq}>或签</option>
  117. </select>
  118. </div>
  119. </div>
  120. {gt name="$key" value="0"}
  121. <span class="layui-btn layui-btn-danger layui-btn-sm">删除</span>
  122. {/gt}
  123. </div>
  124. {/volist}
  125. {else/}
  126. <div class="layui-form-item layui-form-pane role-1">
  127. <div class="layui-inline">
  128. <label class="layui-form-label">第1级</label>
  129. <div class="layui-input-inline" style="width:150px;">
  130. <select name="check_role[]" lay-filter="role">
  131. <option value="1">当前部门负责人</option>
  132. <option value="2">上一级部门负责人</option>
  133. <option value="3">指定岗位职称人</option>
  134. <option value="4">指定成员</option>
  135. </select>
  136. </div>
  137. </div>
  138. <div class="layui-inline select-3">
  139. <label class="layui-form-label">岗位职称</label>
  140. <div class="layui-input-inline" style="width:120px;">
  141. <input type="text" name="check_position_title[]" value="" autocomplete="off" readonly class="layui-input picker-oa" data-types="position">
  142. <input type="hidden" name="check_position_id[]" value="">
  143. </div>
  144. </div>
  145. <div class="layui-inline select-4">
  146. <label class="layui-form-label">指定人员</label>
  147. <div class="layui-input-inline" style="width:320px;">
  148. <input type="text" name="check_unames_a[]" value="" autocomplete="off" readonly class="layui-input picker-admin" data-type="2">
  149. <input type="hidden" name="check_uids_a[]" value="">
  150. </div>
  151. </div>
  152. <div class="layui-inline">
  153. <label class="layui-form-label" style="width:100px;">同时有多人时</label>
  154. <div class="layui-input-inline" style="width:80px;">
  155. <select name="check_types[]">
  156. <option value="1">会签</option>
  157. <option value="2" selected="">或签</option>
  158. </select>
  159. </div>
  160. </div>
  161. </div>
  162. {/eq}
  163. </div>
  164. <span id="addFlow2" class="layui-btn layui-btn-xs layui-btn-normal">+ 添加审批层级</span>
  165. <div style="padding:10px; margin-top:10px; font-size:12px; background-color:#fffcf0">
  166. <p><strong>温馨提示</strong></p>
  167. <p>1、当选择<strong> “当前部门负责人” </strong>审批时,有多个当前部门负责人时支持会签、或签模式。</p>
  168. <p>2、当选择<strong> “上一级部门负责人” </strong>审批时,有多个上一级部门负责人时支持会签、或签模式</p>
  169. <p>3、当选择<strong> “指定岗位职称” </strong>审批时,该岗位职称同时有多个人时支持会签、或签模式</p>
  170. <p>4、当选择<strong> “指定成员” </strong>时,有多个人时支持会签、或签模式。</p>
  171. <p>5、如果指定用户没有分配查看审批模块的功能权限,系统会通知其审批,但是他无法查看此审批数据信息。</p>
  172. </div>
  173. </td>
  174. </tr>
  175. <tr id="flowTr3" class="flow-tr-3">
  176. <td class="layui-td-gray">审批流程<font>*</font></td>
  177. <td colspan="3">
  178. <div id="flowList3">
  179. {eq name="$check_type" value="3"}
  180. {volist name="detail.flow_list" id="vo"}
  181. <div class="layui-form-item layui-form-pane">
  182. <div class="layui-inline">
  183. <label class="layui-form-label">第{$key+1}级</label>
  184. <div class="layui-input-inline" style="width:240px;">
  185. <input type="text" name="flow_name[]" value="{$vo.flow_name}" autocomplete="off" placeholder="请输入流程名称" class="layui-input">
  186. </div>
  187. </div>
  188. <div class="layui-inline">
  189. <label class="layui-form-label">指定人员</label>
  190. <div class="layui-input-inline" style="width:120px;">
  191. <input type="text" name="check_unames_b[]" value="{$vo.check_unames}" autocomplete="off" readonly class="layui-input picker-admin" data-type="1">
  192. <input type="hidden" name="check_uids_b[]" value="{$vo.check_uids}">
  193. </div>
  194. </div>
  195. {gt name="$key" value="0"}
  196. <span class="layui-btn layui-btn-danger layui-btn-sm">删除</span>
  197. {/gt}
  198. </div>
  199. {/volist}
  200. {else/}
  201. <div class="layui-form-item layui-form-pane">
  202. <div class="layui-inline">
  203. <label class="layui-form-label">第1级</label>
  204. <div class="layui-input-inline" style="width:240px;">
  205. <input type="text" name="flow_name[]" value="" autocomplete="off" placeholder="请输入流程名称" class="layui-input">
  206. </div>
  207. </div>
  208. <div class="layui-inline">
  209. <label class="layui-form-label">指定人员</label>
  210. <div class="layui-input-inline" style="width:120px;">
  211. <input type="text" name="check_unames_b[]" value="" readonly class="layui-input picker-admin" data-type="1">
  212. <input type="hidden" name="check_uids_b[]" value="">
  213. </div>
  214. </div>
  215. </div>
  216. {/eq}
  217. </div>
  218. <span id="addFlow3" class="layui-btn layui-btn-xs layui-btn-normal">+ 添加审批层级</span>
  219. <div style="padding:10px; margin-top:10px; font-size:12px; background-color:#fffcf0">
  220. <p><strong>温馨提示</strong></p>
  221. <p>1、<strong>指定人员</strong>单选。后期审批的时候,审批人只能该指定人员。</p>
  222. <p>2、该审批流程可<strong>回退</strong>,当拒绝审核时,会自动回退到上一位审批人节点。</p>
  223. </div>
  224. </td>
  225. </tr>
  226. <tr>
  227. <td class="layui-td-gray">默认抄送人</td>
  228. <td colspan="3">
  229. <input type="text" name="copy_unames" value="{$detail.copy_unames|default=''}" placeholder="请选择" readonly class="layui-input picker-admin" data-type="2">
  230. <input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
  231. </td>
  232. </tr>
  233. </table>
  234. <div class="pt-2">
  235. <input type="hidden" name="id" value="{$id}">
  236. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
  237. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  238. </div>
  239. </form>
  240. {/block}
  241. <!-- /主体 -->
  242. <!-- 脚本 -->
  243. {block name="script"}
  244. <script>
  245. const moduleInit = ['tool','formSelects','oaPicker'];
  246. function gouguInit() {
  247. var form = layui.form,tool=layui.tool,formSelects = layui.formSelects;
  248. //选择应用部门
  249. var selcted = $('#department_ids').attr('xm-selected');
  250. formSelects.data('select1', 'server', {
  251. url: '/api/index/get_department_select',
  252. keyword: selcted,
  253. });
  254. form.on('radio(checktype)', function(data){
  255. $('#flowTable').attr('class','layui-table check-type-'+data.value);
  256. });
  257. form.on('select(role)', function(data){
  258. $(data.elem).parents('.layui-form-item').attr('class','layui-form-item layui-form-pane role-'+data.value);
  259. });
  260. //监听提交
  261. form.on('submit(webform)', function(data){
  262. let callback = function (e) {
  263. layer.msg(e.msg);
  264. if (e.code == 0) {
  265. tool.sideClose(1000);
  266. }
  267. }
  268. tool.post("/adm/flow/add", data.field, callback);
  269. return false;
  270. });
  271. $('#addFlow2').on('click',function(){
  272. var len = $('#flowList2').find('.layui-form-item').length;
  273. var index = len+1;
  274. var timestamp=new Date().getTime();
  275. var tem='<div class="layui-form-item layui-form-pane role-1">\
  276. <div class="layui-inline">\
  277. <label class="layui-form-label label-index">第'+index+'级</label>\
  278. <div class="layui-input-inline" style="width:150px;">\
  279. <select name="check_role[]" lay-filter="role">\
  280. <option value="1">当前部门负责人</option>\
  281. <option value="2">上一级部门负责人</option>\
  282. <option value="3">指定岗位职称人</option>\
  283. <option value="4">指定成员</option>\
  284. </select>\
  285. </div>\
  286. </div>\
  287. <div class="layui-inline select-3">\
  288. <label class="layui-form-label">岗位职称</label>\
  289. <div class="layui-input-inline" style="width:120px;">\
  290. <input type="text" name="check_position_title[]" value="" autocomplete="off" readonly class="layui-input picker-oa" data-types="position">\
  291. <input type="hidden" name="check_position_id[]" value="">\
  292. </div>\
  293. </div>\
  294. <div class="layui-inline select-4">\
  295. <label class="layui-form-label">指定人员</label>\
  296. <div class="layui-input-inline" style="width:320px;">\
  297. <input type="text" name="check_unames_a[]" value="" autocomplete="off" readonly class="layui-input picker-admin" data-type="2">\
  298. <input type="hidden" name="check_uids_a[]" value="">\
  299. </div>\
  300. </div>\
  301. <div class="layui-inline">\
  302. <label class="layui-form-label" style="width:100px;">同时有多人时</label>\
  303. <div class="layui-input-inline" style="width:80px;">\
  304. <select name="check_types[]">\
  305. <option value="1">会签</option>\
  306. <option value="2" selected="">或签</option>\
  307. </select>\
  308. </div>\
  309. </div>\
  310. <span class="layui-btn layui-btn-danger layui-btn-sm">删除</span>\
  311. </div>';
  312. $('#flowList2').append(tem);
  313. form.render();
  314. });
  315. $('#flowList2').on('click','.layui-btn-danger',function(){
  316. $(this).parents('.layui-form-item').remove();
  317. var items = $('.label-index').length;
  318. if(items>0){
  319. $('.label-index').each(function(index,item){
  320. $(this).html('第'+(index+2)+'级');
  321. })
  322. }
  323. });
  324. //================================
  325. $('#addFlow3').on('click',function(){
  326. var len = $('#flowList3').find('.layui-form-item').length;
  327. var index = len+1;
  328. var timestamp=new Date().getTime();
  329. var tem='<div class="layui-form-item layui-form-pane">\
  330. <div class="layui-inline">\
  331. <label class="layui-form-label label-index">第'+index+'级</label>\
  332. <div class="layui-input-inline" style="width:240px;">\
  333. <input type="text" name="flow_name[]" value="" autocomplete="off" placeholder="请输入流程名称" class="layui-input">\
  334. </div>\
  335. </div>\
  336. <div class="layui-inline select-3">\
  337. <label class="layui-form-label">指定人员</label>\
  338. <div class="layui-input-inline" style="width:120px;">\
  339. <input type="text" name="check_unames_b[]" value="" autocomplete="off" readonly class="layui-input picker-admin" data-type="1">\
  340. <input type="hidden" name="check_uids_b[]" value="">\
  341. </div>\
  342. </div>\
  343. <span class="layui-btn layui-btn-danger layui-btn-sm">删除</span>\
  344. </div>';
  345. $('#flowList3').append(tem);
  346. form.render();
  347. });
  348. $('#flowList3').on('click','.layui-btn-danger',function(){
  349. $(this).parents('.layui-form-item').remove();
  350. var items = $('.label-index').length;
  351. if(items>0){
  352. $('.label-index').each(function(index,item){
  353. $(this).html('第'+(index+2)+'级');
  354. })
  355. }
  356. });
  357. }
  358. </script>
  359. {/block}
  360. <!-- /脚本 -->