add.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. {extend name="../../base/view/common/base" /}
  2. <!-- 主体 -->
  3. {block name="body"}
  4. <form class="layui-form p-4">
  5. <h3 class="pb-3">新增合同</h3>
  6. <table class="layui-table layui-table-form">
  7. {gt name="$pid" value="0"}
  8. <tr>
  9. <td class="layui-td-gray">母合同名称</td>
  10. <td colspan="5">{$p_contract.name}<input type="hidden" name="pid" value="{$pid}"></td>
  11. </tr>
  12. {/gt}
  13. <tr>
  14. <td class="layui-td-gray">合同名称<font>*</font>
  15. </td>
  16. <td colspan="3"><input type="text" name="name" lay-verify="required" lay-reqText="请输入合同名称"
  17. autocomplete="off" placeholder="请输入合同名称" class="layui-input"></td>
  18. <td class="layui-td-gray">合同性质</td>
  19. <td>
  20. <input type="hidden" name="type" value="{$type}">
  21. {eq name="$type" value="1" }普通合同{/eq}
  22. {eq name="$type" value="2" }框架合同{/eq}
  23. {eq name="$type" value="3" }补充协议{/eq}
  24. {eq name="$type" value="4" }其他合同{/eq}
  25. </td>
  26. </tr>
  27. <tr>
  28. <td class="layui-td-gray">签约主体<span style="font-size:12px;">(乙方)</span>
  29. <font>*</font>
  30. </td>
  31. <td>
  32. <input type="text" name="subject_id" lay-verify="required" lay-reqText="请输入签约主体" placeholder="请输入签约主体"
  33. class="layui-input">
  34. </td>
  35. <td class="layui-td-gray">合同编号<font>*</font>
  36. </td>
  37. <td>
  38. <input type="text" name="code" value="{$codeno}" autocomplete="off" {notempty name="$codeno"
  39. }readonly{/notempty} lay-verify="required" lay-reqText="请输入合同编号" placeholder="请输入合同编号"
  40. class="layui-input">
  41. </td>
  42. <td class="layui-td-gray">合同类别<font>*</font>
  43. </td>
  44. <td>
  45. <select name="cate_id" lay-verify="required" lay-reqText="请选择合同类别">
  46. <option value="">请选择合同类别</option>
  47. <option value="1">采购合同</option>
  48. </select>
  49. </td>
  50. </tr>
  51. <tr>
  52. <td class="layui-td-gray">客户名称<span style="font-size:12px;">(甲方)</span>
  53. <font>*</font>
  54. </td>
  55. <td>
  56. <input type="text" name="customer" lay-verify="required" lay-reqText="请输入客户名称" placeholder="请输入客户名称"
  57. class="layui-input">
  58. </td>
  59. <td class="layui-td-gray">签约客户代表<font>*</font>
  60. </td>
  61. <td>
  62. <input type="text" name="customer_name" autocomplete="off" lay-verify="required" lay-reqText="请输入客户代表姓名"
  63. placeholder="请输入客户代表姓名" class="layui-input">
  64. </td>
  65. <td class="layui-td-gray">客户联系电话<font>*</font>
  66. </td>
  67. <td>
  68. <input type="text" name="customer_mobile" autocomplete="off" lay-verify="required"
  69. lay-reqText="请输入客户联系电话" placeholder="请输入客户联系电话" class="layui-input">
  70. </td>
  71. </tr>
  72. <tr>
  73. <td class="layui-td-gray-2">客户联系地址</td>
  74. <td colspan="3">
  75. <input type="text" name="customer_address" autocomplete="off" placeholder="请输入客户联系地址"
  76. class="layui-input">
  77. </td>
  78. <td class="layui-td-gray-2">合同始止日期<font>*</font>
  79. </td>
  80. <td>
  81. <div id="barDate" class="layui-input-inline">
  82. <div class="layui-input-inline" style="width:110px; margin-bottom:0">
  83. <input type="text" class="layui-input" id="start_time" placeholder="选择时间区间" readonly
  84. name="start_time" lay-verify="required" lay-reqText="请选择合同开始时间">
  85. </div>
  86. ~
  87. <div class="layui-input-inline" style="width:110px;margin-bottom:0">
  88. <input type="text" class="layui-input" id="end_time" placeholder="选择时间区间" readonly
  89. name="end_time" lay-verify="required" lay-reqText="请选择合同结束时间">
  90. </div>
  91. </div>
  92. </td>
  93. </tr>
  94. {neq name="$type" value="2"}
  95. <tr>
  96. <td class="layui-td-gray">合同金额{eq name="$type" value="1"}<font>*</font>{/eq}</td>
  97. <td>
  98. <input type="text" name="cost" value="" {eq name="$type" value="1" } lay-verify="required|number" {/eq}
  99. lay-reqText="请输入合同金额,数字" placeholder="请输入合同金额,数字" autocomplete="off" class="layui-input">
  100. </td>
  101. <td class="layui-td-gray">是否含税</td>
  102. <td>
  103. <input type="radio" name="is_tax" value="1" title="是" checked lay-filter="tax">
  104. <input type="radio" name="is_tax" value="0" title="否" lay-filter="tax">
  105. </td>
  106. <td class="layui-td-gray">税点(百分比)</td>
  107. <td>
  108. <input type="text" name="tax" value="" lay-verify="number" placeholder="请输入税点,数字" autocomplete="off"
  109. class="layui-input">
  110. </td>
  111. </tr>
  112. {/neq}
  113. <!-- <tr>
  114. <td colspan="6"><strong>签订信息</strong></td>
  115. </tr>
  116. <tr>
  117. <td class="layui-td-gray-2">合同签订人<font>*</font>
  118. </td>
  119. <td>
  120. <div class="layui-input-inline" style="width:50%;">
  121. <input type="text" name="sign_name" autocomplete="off" readonly lay-verify="required"
  122. lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input">
  123. </div>
  124. </div>
  125. </td>
  126. </tr>
  127. {neq name="$type" value="2"}
  128. <tr>
  129. <td class="layui-td-gray">合同金额{eq name="$type" value="1"}<font>*</font>{/eq}</td>
  130. <td>
  131. <input type="text" name="cost" value="" {eq name="$type" value="1"} lay-verify="required|number"{/eq} lay-reqText="请输入合同金额,数字" placeholder="请输入合同金额,数字" autocomplete="off" class="layui-input">
  132. </td>
  133. <td class="layui-td-gray">是否含税</td>
  134. <td>
  135. <input type="radio" name="is_tax" value="1" title="是" checked lay-filter="tax">
  136. <input type="radio" name="is_tax" value="0" title="否" lay-filter="tax">
  137. </td>
  138. <td class="layui-td-gray">税点(百分比)</td>
  139. <td>
  140. <input type="text" name="tax" value="" lay-verify="number" placeholder="请输入税点,数字" autocomplete="off" class="layui-input">
  141. </td>
  142. </tr> -->
  143. {/neq}
  144. <tr>
  145. <td colspan="6"><strong>签订信息</strong></td>
  146. </tr>
  147. <tr>
  148. <td class="layui-td-gray-2">合同签订人<font>*</font></td>
  149. <td>
  150. <div class="layui-input-inline" style="width:50%;">
  151. <input type="text" name="sign_name" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input">
  152. </div>
  153. <div class="layui-input-inline gray" style="width:42%;" id="sign_department"></div>
  154. <input type="hidden" name="sign_uid">
  155. <input type="hidden" name="sign_did">
  156. </td>
  157. <td class="layui-td-gray-2">合同签订时间<font>*</font></td>
  158. <td>
  159. <input type="text" name="sign_time" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input tool-time">
  160. </td>
  161. <td class="layui-td-gray-2">合同制定人<font>*</font></td>
  162. <td>
  163. <input type="text" name="prepared_name" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-one">
  164. <input type="hidden" name="prepared_uid" lay-verify="required" lay-reqText="请选择合同制定人">
  165. </td>
  166. </tr>
  167. <tr>
  168. <td class="layui-td-gray-2">合同保管人<font>*</font></td>
  169. <td>
  170. <input type="text" name="keeper_name" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-one">
  171. <input type="hidden" name="keeper_uid" lay-verify="required" lay-reqText="请选择合同保管人">
  172. </td>
  173. <td class="layui-td-gray">合同共享人员</td>
  174. <td colspan="3">
  175. <input type="text" name="share_names" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-more">
  176. <input type="hidden" name="share_ids">
  177. </td>
  178. </tr>
  179. <tr>
  180. <td colspan="6"><strong>相关附件</strong></td>
  181. </tr>
  182. <tr>
  183. <td class="layui-td-gray">
  184. <button type="button" class="layui-btn layui-btn-sm" id="uploadBtn"><i class="layui-icon"></i>附件上传</button>
  185. </td>
  186. <td colspan="5" style="line-height:inherit">
  187. <div class="layui-row" id="fileBox">
  188. <input type="hidden" id="fileBoxInput" data-type="file" name="file_ids" value="">
  189. </div>
  190. </td>
  191. </tr>
  192. <tr>
  193. <td colspan="6"><strong>备注信息</strong></td>
  194. </tr>
  195. <tr>
  196. <td colspan="6">
  197. <textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea>
  198. </td>
  199. </tr>
  200. </table>
  201. <div class="py-3">
  202. <input type="hidden" name="scene" value="add">
  203. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
  204. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  205. </div>
  206. </form>
  207. {/block}
  208. <!-- /主体 -->
  209. <!-- 脚本 -->
  210. {block name="script"}
  211. <script>
  212. const moduleInit = ['tool', 'employeepicker', 'oaTool'];
  213. function gouguInit() {
  214. var form = layui.form,
  215. tool = layui.tool,
  216. table = layui.table,
  217. laydate = layui.laydate,
  218. oaTool = layui.oaTool,
  219. employeepicker = layui.employeepicker;
  220. //日期范围
  221. laydate.render({
  222. elem: '#barDate',
  223. range: ['#start_time', '#end_time'],
  224. rangeLinked: true
  225. });
  226. //相关附件上传
  227. oaTool.addFile();
  228. //选择关联的客户
  229. $('.customer-picker').on('click', function () {
  230. let that = $(this);
  231. let callback = function (data) {
  232. $('[name="customer_id"]').val(data.id);
  233. $('[name="customer"]').val(data.name);
  234. $('[name="customer_name"]').val(data.contact_name);
  235. $('[name="customer_mobile"]').val(data.contact_mobile);
  236. $('[name="customer_address"]').val(data.address);
  237. }
  238. oaTool.customerPicker(callback);
  239. });
  240. //选择合同签订人弹窗
  241. $('body').on('click', '[name="sign_name"]', function () {
  242. var ids = $('[name="sign_uid"]').val(),
  243. names = $('[name="sign_name"]').val();
  244. employeepicker.init({
  245. ids: ids,
  246. names: names,
  247. type: 0,
  248. department_url: "/admin/contract/get_department_tree",
  249. employee_url: "/admin/contract/get_employee",
  250. callback: function (ids, names, dids, departments) {
  251. $('[name="sign_uid"]').val(ids);
  252. $('[name="sign_name"]').val(names);
  253. $('[name="sign_did"]').val(dids);
  254. $('#sign_department').html('部门:' + departments);
  255. }
  256. });
  257. });
  258. //radio选择
  259. form.on('radio(tax)', function (data) {
  260. if (data.value == 0) {
  261. $('[name="tax"]').val('0').hide();
  262. } else {
  263. $('[name="tax"]').val('').show();
  264. }
  265. });
  266. //监听提交
  267. form.on('submit(webform)', function (data) {
  268. if (data.field.type == 1 && data.field.cost == '') {
  269. layer.msg('请完善合同金额');
  270. return false;
  271. }
  272. if (data.field.is_tax == 1 && data.field.tax == '') {
  273. layer.msg('请完善税点');
  274. return false;
  275. }
  276. if (data.field.is_tax == 1 && data.field.cost == '') {
  277. layer.msg('请完善金额');
  278. return false;
  279. }
  280. let callback = function (e) {
  281. layer.msg(e.msg);
  282. if (e.code == 0) {
  283. tool.sideClose(1000);
  284. }
  285. }
  286. tool.post("/contract/index/add", data.field, callback);
  287. return false;
  288. });
  289. }
  290. </script>
  291. {/block}
  292. <!-- /脚本 -->