add.html 123 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  6. <title>编辑</title>
  7. <link rel="stylesheet" th:href="@{/lib/layui/css/layui.css}" media="all">
  8. <link rel="stylesheet" th:href="@{/css/public.css}" media="all">
  9. <link rel="stylesheet" th:href="@{/lib/font-awesome-4.7.0/css/font-awesome.min.css}" media="all">
  10. <style>
  11. body {
  12. background-color: #ffffff;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <form class="layui-form" action="" lay-filter="formDemo">
  18. <div class="layui-tab layui-tab-card">
  19. <ul class="layui-tab-title">
  20. <li class="layui-this">基本信息</li>
  21. <li>填写说明</li>
  22. <li>子课题</li>
  23. <li>内容</li>
  24. <li>项目预算</li>
  25. <li>出资方案</li>
  26. <li>说明</li>
  27. <li>联系方式</li>
  28. <li>附件</li>
  29. </ul>
  30. <div class="layui-tab-content">
  31. <!--基本信息开始-->
  32. <div class="layui-tab-item layui-show">
  33. <form class="layui-form" action="" lay-filter="formDemo">
  34. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  35. <div class="layui-form-item layui-inline" style="width: 100%">
  36. <label class="layui-form-label required" style="width: 10%">中文名称</label>
  37. <div class="layui-input-inline" style="width: 35%">
  38. <input type="hidden" id="id" name="id">
  39. <input type="text" id="zwmc" name="zwmc" lay-verify="required" lay-reqtext="中文名称不能为空"
  40. placeholder="项目名称(中文)不能超过30字(含字符)" autocomplete="off" class="layui-input">
  41. </div>
  42. <label class="layui-form-label" style="width: 15%">学科分类1</label>
  43. <div class="layui-input-inline" style="width: 25%">
  44. <select name="xkfl1" id="xkfl1" lay-filter="xkfl">
  45. <option value="">[无]</option>
  46. <option value="-1">[浏览]</option>
  47. </select>
  48. </div>
  49. </div>
  50. <div class="layui-form-item layui-inline" style="width: 100%">
  51. <label class="layui-form-label" style="width: 10%">英文名称</label>
  52. <div class="layui-input-inline" style="width: 35%">
  53. <input type="text" id="ywmc" name="ywmc" placeholder="项目名称(英文)不能超过30字(含字符)"
  54. autocomplete="off" class="layui-input">
  55. </div>
  56. <label class="layui-form-label" style="width: 15%">学科分类2</label>
  57. <div class="layui-input-inline" style="width: 25%">
  58. <select name="xkfl2" id="xkfl2" lay-filter="xkfl">
  59. <option value="">[无]</option>
  60. <option value="-1">[浏览]</option>
  61. </select>
  62. </div>
  63. </div>
  64. <div class="layui-form-item layui-inline" style="width: 100%">
  65. <label class="layui-form-label required" style="width: 10%">ERP编号</label>
  66. <div class="layui-input-inline" style="width: 35%">
  67. <input type="text" id="erpbh" name="erpbh" autocomplete="off" class="layui-input"
  68. lay-verify="required" lay-reqtext="ERP编号不能为空">
  69. </div>
  70. <label class="layui-form-label" style="width: 15%">学科分类3</label>
  71. <div class="layui-input-inline" style="width: 25%">
  72. <select name="xkfl3" id="xkfl3" lay-filter="xkfl">
  73. <option value="">[无]</option>
  74. <option value="-1">[浏览]</option>
  75. </select>
  76. </div>
  77. </div>
  78. <div class="layui-form-item layui-inline" style="width: 100%">
  79. <label class="layui-form-label required" style="width: 10%">项目类型</label>
  80. <div class="layui-input-inline" style="width: 35%">
  81. <select name="xmlx" id="xmlx" lay-filter="xmlx" lay-verify="required"
  82. lay-reqtext="项目类型不能为空">
  83. <option value="">-- 请选择 --</option>
  84. <option th:each="item:${xmlxList}" th:text="${item.name}"
  85. th:value="${item.code}"></option>
  86. </select>
  87. <tip>此项只能新建时修改</tip>
  88. </div>
  89. <label class="layui-form-label" style="width: 15%">所属国民经济行业</label>
  90. <div class="layui-input-inline" style="width: 25%">
  91. <select name="ssgmjjhy" id="ssgmjjhy" lay-filter="gmjjhy">
  92. <option value="">[无]</option>
  93. <option value="-1">[浏览]</option>
  94. </select>
  95. </div>
  96. </div>
  97. <div class="layui-form-item layui-inline" style="width: 100%">
  98. <label class="layui-form-label" style="width: 10%">可研报告</label>
  99. <div class="layui-input-inline" style="width: 35%">
  100. <input type="hidden" id="bm" name="bm" class="layui-input">
  101. <input type="hidden" id="kybgmc" name="kybgmc" class="layui-input">
  102. <select name="kybg" id="kybg" lay-filter="kybg">
  103. <option value="">[无]</option>
  104. <option value="-1">[浏览]</option>
  105. </select>
  106. </div>
  107. <label class="layui-form-label" style="width: 15%">是否国家秘密技术项目</label>
  108. <div class="layui-input-inline">
  109. <input type="checkbox" name="sfgjmmjsxm" lay-skin="primary">
  110. </div>
  111. </div>
  112. <div class="layui-form-item layui-inline" style="width: 100%">
  113. <label class="layui-form-label" style="width: 10%">费用来源</label>
  114. <div class="layui-input-inline" style="width: 35%">
  115. <input type="text" id="fyly" name="fyly" autocomplete="off" class="layui-input">
  116. </div>
  117. <label class="layui-form-label required" style="width: 15%">项目起止时间</label>
  118. <div class="layui-form-item layui-inline" style="width: auto">
  119. <div class="layui-input-inline" style="width: 100px">
  120. <input type="text" name="qs" id="qs" lay-verify="required|date" placeholder="开始日期"
  121. lay-reqtext="开始日期不能为空" autocomplete="off" class="layui-input">
  122. </div>
  123. <div class="layui-form-mid">-</div>
  124. <div class="layui-input-inline" style="width: 100px">
  125. <input type="text" name="wc" id="wc" lay-verify="required|date" placeholder="结束日期"
  126. lay-reqtext="结束日期不能为空" autocomplete="off" class="layui-input">
  127. </div>
  128. <br>
  129. <tip>日期格式:yyyy-MM-dd</tip>
  130. </div>
  131. </div>
  132. <div class="layui-form-item layui-inline" style="width: 100%">
  133. <label class="layui-form-label" style="width: 10%">项目总预算(万)</label>
  134. <div class="layui-input-inline" style="width: 35%">
  135. <input type="text" id="rwsys2" name="rwsys2"
  136. class="layui-input" th:value="${rwsys}" readonly>
  137. </div>
  138. </div>
  139. <div class="layui-form-item layui-inline" style="width: 100%">
  140. <div class="layui-input-block" style="margin-left: 8%; width: 85%;">
  141. <p style="color: red;">注:此处项目总预算由子课题中单位分工经费累加所得, 并且请先填写下方主要完成人和主要完成单位!!
  142. </p>
  143. </div>
  144. </div>
  145. <!--Tab列表-->
  146. <div class="layui-tab layui-tab-brief" style="padding-left: 30px; padding-right: 30px">
  147. <ul class="layui-tab-title">
  148. <li class="layui-this">主要完成人</li>
  149. <li>主要完成单位</li>
  150. </ul>
  151. <div class="layui-tab-content">
  152. <!--主要完成人开始-->
  153. <div class="layui-tab-item layui-show">
  154. <div class="layuimini-container">
  155. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  156. <button type="button"
  157. class="layui-btn layui-btn-primary layui-btn-sm upload"
  158. lay-filter="subImport1" lay-data="{fileType:'memberFile'}"><i
  159. class="layui-icon"></i>导入
  160. </button>
  161. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  162. lay-filter="subAdd1"><i class="layui-icon"></i>新建
  163. </button>
  164. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  165. lay-filter="subEdit1"><i class="layui-icon"></i>编辑
  166. </button>
  167. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  168. lay-filter="subView1"><i class="layui-icon">&#xe63c;</i>查看
  169. </button>
  170. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  171. lay-filter="subDelete1"><i class="layui-icon"></i>删除
  172. </button>
  173. <a class="layui-btn layui-btn-primary layui-btn-sm "
  174. th:href="${ReportRYTemplate}">
  175. <i class="layui-icon layui-icon-export" style="font-size: 10px;"></i>人员模板
  176. </a>
  177. </div>
  178. <table class="layui-hide" id="currentTableId1" name="currentTableId1"
  179. lay-filter="currentTableFilter1"
  180. style="padding-top: 0px;margin-top: 0px"></table>
  181. </div>
  182. </div>
  183. <!--主要完成人结束-->
  184. <!--主要完成单位开始-->
  185. <div class="layui-tab-item">
  186. <div class="layuimini-container">
  187. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  188. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  189. lay-filter="subAdd2"><i class="layui-icon"></i>新建
  190. </button>
  191. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  192. lay-filter="subEdit2"><i class="layui-icon"></i>编辑
  193. </button>
  194. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  195. lay-filter="subView2"><i class="layui-icon">&#xe63c;</i>查看
  196. </button>
  197. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  198. lay-filter="subDelete2"><i class="layui-icon"></i>删除
  199. </button>
  200. </div>
  201. <table class="layui-hide" id="currentTableId2" name="currentTableId2"
  202. lay-filter="currentTableFilter2"
  203. style="padding-bottom: 0px;margin-bottom: 0px"></table>
  204. </div>
  205. </div>
  206. <!--主要完成单位结束-->
  207. </div>
  208. </div>
  209. <div class="layui-form-item layui-inline" style="width: 100%">
  210. <label class="layui-form-label" style="width: 10%">总人数</label>
  211. <div class="layui-input-inline" style="width: 18%">
  212. <input type="text" id="zrs" name="zrs" class="layui-input" readonly>
  213. </div>
  214. <label class="layui-form-label" style="width: 10%">高级职称</label>
  215. <div class="layui-input-inline" style="width: 18%">
  216. <input type="text" id="gjzc" name="gjzc" class="layui-input" readonly>
  217. </div>
  218. <label class="layui-form-label" style="width: 10% ">中级职称</label>
  219. <div class="layui-input-inline" style="width: 18%">
  220. <input type="text" id="zjzc" name="zjzc" class="layui-input" readonly>
  221. </div>
  222. </div>
  223. <div class="layui-form-item layui-inline" style="width: 100%">
  224. <label class="layui-form-label" style="width: 10%">所属部门</label>
  225. <div class="layui-input-inline" style="width: 18%">
  226. <input type="hidden" id="ssbm" name="ssbm" class="layui-input"
  227. th:value="${userInfo.deptId}">
  228. <input type="text" id="ssbmmc" name="ssbmmc" class="layui-input"
  229. th:value="${userInfo.deptName}" readonly>
  230. </div>
  231. <label class="layui-form-label" style="width: 10%;">初级职称</label>
  232. <div class="layui-input-inline" style="width: 18%">
  233. <input type="text" id="cjzc" name="cjzc" class="layui-input" readonly>
  234. </div>
  235. <label class="layui-form-label" style="width: 10%">研究生</label>
  236. <div class="layui-input-inline" style="width: 18%">
  237. <input type="text" id="yjs" name="yjs" class="layui-input" readonly>
  238. </div>
  239. </div>
  240. <!-- <div class="layui-form-item">
  241. <label class="layui-form-label" style="width: 90px">所属部门</label>
  242. <div class="layui-input-inline" style="width: 600px">
  243. <input type="hidden" id="ssbm" name="ssbm" class="layui-input"
  244. th:value="${userInfo.deptId}">
  245. <input type="text" id="ssbmmc" name="ssbmmc" class="layui-input"
  246. th:value="${userInfo.deptName}" readonly>
  247. </div>
  248. </div>-->
  249. <div class="layui-form-item" style="width: 100%">
  250. <label class="layui-form-label" style="width: 10%">电科院负责人</label>
  251. <div class="layui-input-inline" style="width: 18%">
  252. <input type="hidden" id="dkyfzr" name="dkyfzr" class="layui-input">
  253. <input type="text" id="dkyfzrxm" name="dkyfzrxm" placeholder="可多选" autocomplete="off"
  254. class="layui-input" lay-verify="required" lay-reqtext="电科院负责人不能为空" readonly>
  255. </div>
  256. </div>
  257. <!-- 右侧悬浮按钮 -->
  258. <div class="right-bottom-btn">
  259. <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn1">
  260. <i class="layui-icon layui-icon-ok"></i>保存
  261. </button>
  262. <button class="layui-btn" lay-filter="cancleBtn">
  263. <i class="layui-icon layui-icon-close"></i>取消
  264. </button>
  265. </div>
  266. </div>
  267. </form>
  268. </div>
  269. <!--基本信息结束-->
  270. <!--填写说明开始-->
  271. <div class="layui-tab-item" style="min-height: 540px">
  272. <form class="layui-form" action="" lay-filter="formDemo">
  273. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  274. <div class="layui-form-item layui-inline" style="width: 100%">
  275. <label class="layui-form-label" style="width: 10%">填写说明</label>
  276. <div class="layui-input-inline" style="width: 70%">
  277. <textarea id="txsm" name="txsm" class="layui-textarea"
  278. style="width: 100%;height: 510px"></textarea>
  279. </div>
  280. </div>
  281. <!-- 右侧悬浮按钮 -->
  282. <div class="right-bottom-btn">
  283. <button type="button" class="layui-btn" lay-filter="saveBtn2">
  284. <i class="layui-icon layui-icon-ok"></i>保存
  285. </button>
  286. <button class="layui-btn" lay-filter="cancleBtn">
  287. <i class="layui-icon layui-icon-close"></i>取消
  288. </button>
  289. </div>
  290. </div>
  291. </form>
  292. </div>
  293. <!--填写说明结束-->
  294. <!--子课题开始-->
  295. <div class="layui-tab-item" style="min-height: 565px; padding-left: 30px; padding-right: 30px">
  296. <form class="layui-form" action="" lay-filter="formDemo">
  297. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  298. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  299. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  300. lay-filter="btnAdd3"><i class="layui-icon"></i>新建
  301. </button>
  302. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  303. lay-filter="btnEdit3"><i class="layui-icon"></i>编辑
  304. </button>
  305. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  306. lay-filter="btnView3"><i class="layui-icon">&#xe63c;</i>查看
  307. </button>
  308. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  309. lay-filter="btnDelete3"><i class="layui-icon"></i>删除
  310. </button>
  311. </div>
  312. <table class="layui-hide" id="currentTableId3" lay-filter="currentTableFilter3"></table>
  313. <script type="text/html" id="currentTableBar3">
  314. <a class="layui-btn layui-btn-xs layui-btn-warm data-count-view" lay-event="view">
  315. <i class="layui-icon layui-icon-set" style="font-size: 10px;"></i>查看
  316. </a>
  317. <a class="layui-btn layui-btn-xs data-count-update" lay-event="update">
  318. <i class="layui-icon layui-icon-edit" style="font-size: 10px;"></i>编辑
  319. </a>
  320. <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delFlag">
  321. <i class="layui-icon layui-icon-delete" style="font-size: 10px;"></i>删除
  322. </a>
  323. </script>
  324. <!-- 右侧悬浮按钮 -->
  325. <div class="right-bottom-btn">
  326. <button class="layui-btn" lay-filter="cancleBtn">
  327. <i class="layui-icon layui-icon-close"></i>关闭
  328. </button>
  329. </div>
  330. </div>
  331. </form>
  332. </div>
  333. <!--子课题结束-->
  334. <!--内容开始-->
  335. <div class="layui-tab-item" style="min-height: 540px">
  336. <form class="layui-form" action="" lay-filter="formDemo">
  337. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  338. <div class="layui-form-item layui-inline" style="width: 100%">
  339. <label class="layui-form-label" style="width:10%">研究内容及<br>考核指标</label>
  340. <div class="layui-input-inline" style="width: 70%">
  341. <textarea id="yjnrjkhzb" name="yjnrjkhzb" class="layui-textarea"
  342. style="width: 100%;height: 510px"></textarea>
  343. </div>
  344. </div>
  345. <!-- 右侧悬浮按钮 -->
  346. <div class="right-bottom-btn">
  347. <button type="button" class="layui-btn" lay-filter="saveBtn4">
  348. <i class="layui-icon layui-icon-ok"></i>保存
  349. </button>
  350. <button class="layui-btn" lay-filter="cancleBtn">
  351. <i class="layui-icon layui-icon-close"></i>取消
  352. </button>
  353. </div>
  354. </div>
  355. </form>
  356. </div>
  357. <!--内容结束-->
  358. <!--项目预算开始-->
  359. <div class="layui-tab-item" style="min-height: 555px; padding-left: 30px; padding-right: 30px">
  360. <form class="layui-form" action="" lay-filter="formDemo">
  361. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  362. <div class="layui-form-item" style="margin-bottom: -10px">
  363. <div class="layui-inline">
  364. <label class="layui-form-label"
  365. style="width: fit-content; margin-bottom: -10px">单位:万元</label>
  366. <label class="layui-form-label" style="width: 170px"></label>
  367. </div>
  368. <div class="layui-inline">
  369. <label class="layui-form-label" style="width: 70px; margin-left: -10px">项目总预算</label>
  370. <div class="layui-input-inline" style="width: 100px">
  371. <input type="text" id="rwsys" name="rwsys" class="layui-input" th:value="${rwsys}"
  372. readonly>
  373. </div>
  374. </div>
  375. </div>
  376. <table class="layui-hide" id="currentTableId5" lay-filter="currentTableFilter5"></table>
  377. <!-- 右侧悬浮按钮 -->
  378. <div class="right-bottom-btn">
  379. <button type="button" class="layui-btn" lay-filter="saveBtn5">
  380. <input type="hidden" id="ysje_cz" name="ysje_cz" class="layui-input">
  381. <i class="layui-icon layui-icon-ok"></i>保存
  382. </button>
  383. <button class="layui-btn" lay-filter="cancleBtn">
  384. <i class="layui-icon layui-icon-close"></i>取消
  385. </button>
  386. </div>
  387. </div>
  388. </form>
  389. </div>
  390. <!--项目预算结束-->
  391. <!--出资方案开始-->
  392. <div class="layui-tab-item" style="min-height: 565px; padding-left: 30px; padding-right: 30px">
  393. <form class="layui-form" action="" lay-filter="formDemo">
  394. <div class="layuimini-form" style="padding-bottom: 100px">
  395. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  396. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  397. lay-filter="btnAdd6"><i class="layui-icon"></i>新建
  398. </button>
  399. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  400. lay-filter="btnEdit6"><i class="layui-icon"></i>编辑
  401. </button>
  402. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  403. lay-filter="btnView6"><i class="layui-icon">&#xe63c;</i>查看
  404. </button>
  405. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  406. lay-filter="btnDelete6"><i class="layui-icon"></i>删除
  407. </button>
  408. </div>
  409. <table class="layui-hide" id="currentTableId6" lay-filter="currentTableFilter6"></table>
  410. <script type="text/html" id="currentTableBar6">
  411. <a class="layui-btn layui-btn-xs layui-btn-warm data-count-view" lay-event="view">
  412. <i class="layui-icon layui-icon-set" style="font-size: 10px;"></i>查看
  413. </a>
  414. <a class="layui-btn layui-btn-xs data-count-update" lay-event="update">
  415. <i class="layui-icon layui-icon-edit" style="font-size: 10px;"></i>编辑
  416. </a>
  417. <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delFlag">
  418. <i class="layui-icon layui-icon-delete" style="font-size: 10px;"></i>删除
  419. </a>
  420. </script>
  421. <!-- 右侧悬浮按钮 -->
  422. <div class="right-bottom-btn">
  423. <button class="layui-btn" lay-filter="cancleBtn">
  424. <i class="layui-icon layui-icon-close"></i>关闭
  425. </button>
  426. </div>
  427. </div>
  428. </form>
  429. </div>
  430. <!--出资方案结束-->
  431. <!--说明开始-->
  432. <div class="layui-tab-item" style="min-height: 540px">
  433. <form class="layui-form" action="" lay-filter="formDemo">
  434. <div class="layui-form layuimini-form" style="padding-bottom: 100px">
  435. <div class="layui-form-item layui-inline" style="width: 100%">
  436. <label class="layui-form-label" style="width: 10%">有关问题说明</label>
  437. <div class="layui-input-inline" style="width: 70%">
  438. <textarea id="ygwtsm" name="ygwtsm" class="layui-textarea"
  439. style="width: 100%;height: 510px"></textarea>
  440. </div>
  441. </div>
  442. <!-- 右侧悬浮按钮 -->
  443. <div class="right-bottom-btn">
  444. <button type="button" class="layui-btn" lay-filter="saveBtn7">
  445. <i class="layui-icon layui-icon-ok"></i>保存
  446. </button>
  447. <button class="layui-btn" lay-filter="cancleBtn">
  448. <i class="layui-icon layui-icon-close"></i>取消
  449. </button>
  450. </div>
  451. </div>
  452. </form>
  453. </div>
  454. <!--说明结束-->
  455. <!--联系方式开始-->
  456. <div class="layui-tab-item" style="min-height: 565px; padding-left: 30px; padding-right: 30px">
  457. <form class="layui-form" action="" lay-filter="formDemo">
  458. <div class="layuimini-form" style="padding-bottom: 100px">
  459. <div class="layui-btn-group" style="margin-bottom:0.5%">
  460. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  461. lay-filter="btnAdd8"><i class="layui-icon"></i>新建
  462. </button>
  463. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  464. lay-filter="btnEdit8"><i class="layui-icon"></i>编辑
  465. </button>
  466. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  467. lay-filter="btnView8"><i class="layui-icon">&#xe63c;</i>查看
  468. </button>
  469. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  470. lay-filter="btnDelete8"><i class="layui-icon"></i>删除
  471. </button>
  472. </div>
  473. <table class="layui-hide" id="currentTableId8" lay-filter="currentTableFilter8"></table>
  474. <!-- 右侧悬浮按钮 -->
  475. <div class="right-bottom-btn">
  476. <button class="layui-btn" lay-filter="cancleBtn">
  477. <i class="layui-icon layui-icon-close"></i>关闭
  478. </button>
  479. </div>
  480. </div>
  481. </form>
  482. </div>
  483. <!--联系方式结束-->
  484. <!--附件开始-->
  485. <div class="layui-tab-item" style="min-height: 555px; padding-left: 30px; padding-right: 30px">
  486. <form class="layui-form" action="" lay-filter="formDemo">
  487. <div class="layuimini-form" style="padding-bottom: 100px">
  488. <input type="hidden" id="fj" name="fj" class="layui-input">
  489. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  490. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm upload"
  491. lay-filter="upLoad" lay-data="{fileType:'project'}"><i class="layui-icon"></i>上传
  492. </button>
  493. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  494. lay-filter="deleteFile"><i class="layui-icon"></i>删除
  495. </button>
  496. <a class="layui-btn layui-btn-primary layui-btn-sm " href="/fileDownload/download">
  497. <i class="layui-icon layui-icon-export" style="font-size: 10px;"></i>模板下载
  498. </a>
  499. </div>
  500. <table class="layui-hide" id="currentTableId9" name="currentTableId9"
  501. lay-filter="currentTableFilter9" style="padding-top: 0px;margin-top: 0px"></table>
  502. <!-- 右侧悬浮按钮 -->
  503. <div class="right-bottom-btn">
  504. <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn9">
  505. <i class="layui-icon layui-icon-ok"></i>保存
  506. </button>
  507. <button class="layui-btn" lay-filter="cancleBtn">
  508. <i class="layui-icon layui-icon-close"></i>取消
  509. </button>
  510. </div>
  511. </div>
  512. </form>
  513. </div>
  514. <!--附件结束-->
  515. </div>
  516. </div>
  517. </form>
  518. <script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
  519. <script th:src="@{/lib/layui-v2.6.3/layui.js}" charset="utf-8"></script>
  520. <script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
  521. <script th:src="@{/lib/xm-select-v1.2.2/xm-select.js}" charset="utf-8"></script>
  522. <script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
  523. <script type="text/javascript" th:inline="javascript">
  524. AjaxUtil.ctx = /*[[@{/}]]*/'';
  525. var ObjId = '0';
  526. var ObjName = '';
  527. var updateflag = 0;
  528. var prjMember = [];
  529. var prjCompany = [];
  530. var subTopic = [];
  531. var budgetCols = [];
  532. var dataBudget = new Array();
  533. layui.use(['form', 'table', 'treeTable', 'layCascader', 'tableSelect', 'upload'], function () {
  534. var form = layui.form,
  535. table = layui.table,
  536. laydate = layui.laydate,
  537. layer = layui.layer,
  538. upload = layui.upload,
  539. treeTable = layui.treeTable,
  540. tableSelect = layui.tableSelect,
  541. layCascader = layui.layCascader;
  542. var cascader;
  543. var initFlag = 0;
  544. var xmId = -1;
  545. //日期
  546. laydate.render({
  547. elem: '#qs',
  548. value: new Date(),
  549. done:function (value,date,endDate) {
  550. setTimeout(function () {
  551. console.log('进来了');
  552. let qs= $('#qs').val();
  553. let wc= $('#wc').val();
  554. let qss = new Date(qs);
  555. let wcs = new Date(wc);
  556. let timeDiff = wcs.getTime() - qss.getTime();
  557. let threeMonthsInMillis = 3 * 30 * 24 * 60 * 60 * 1000;
  558. if (wc < qs){
  559. layer.msg('完成时间不能早于项目开始时间!',{icon:2});
  560. $('#wc').val('');
  561. return;
  562. }else if (qs == wc){
  563. layer.msg('项目周期不能是同一天!',{icon:2});
  564. $('#qs').val('');
  565. return;
  566. }else if (timeDiff< threeMonthsInMillis){
  567. layer.msg('项目周期小于三个月',{icon:2},function () {
  568. $('#wc').val('');
  569. return;
  570. });
  571. }
  572. },800);
  573. }
  574. });
  575. laydate.render({
  576. elem: '#wc',
  577. done:function (value,date,endDate) {
  578. setTimeout(function () {
  579. console.log('进来了wc')
  580. let qs= $('#qs').val();
  581. let wc= $('#wc').val();
  582. console.log('qs:'+qs);
  583. console.log('wc:'+wc);
  584. let qss = new Date(qs);
  585. let wcs = new Date(wc);
  586. let timeDiff = wcs.getTime() - qss.getTime();
  587. let threeMonthsInMillis = 3 * 30 * 24 * 60 * 60 * 1000;
  588. if (wc < qs){
  589. layer.msg('完成时间不能早于项目开始时间!',{icon:2});
  590. $('#qs').val('');
  591. return;
  592. }else if (qs == wc){
  593. layer.msg('项目周期不能是同一天!',{icon:2});
  594. $('#qs').val('');
  595. return;
  596. }else if (timeDiff< threeMonthsInMillis){
  597. layer.msg('项目周期小于三个月',{icon:2},function () {
  598. $('#wc').val('');
  599. return;
  600. });
  601. }
  602. },800);
  603. }
  604. });
  605. //监听学科分类
  606. form.on('select(xkfl)', function (data) {
  607. if (data.value == "-1") {
  608. layer.open({
  609. title: '浏览学科分类',
  610. type: 2,
  611. shade: 0.3,
  612. maxmin: true,
  613. area: [layerwidth + 'px', layerheight + 'px'],
  614. content: AjaxUtil.ctx + 'prjProject/xkfl',
  615. end: function (index) {
  616. if (ObjId != '0') {
  617. $("#" + data.elem.id).append("<option value=" + ObjId + " selected>" + ObjName + "</option>");
  618. ObjId = '0';
  619. ObjName = '';
  620. } else {
  621. $("#" + data.elem.id).val(0);
  622. }
  623. form.render('select');
  624. }
  625. });
  626. }
  627. return false;
  628. });
  629. //监听国民经济行业
  630. form.on('select(gmjjhy)', function (data) {
  631. if (data.value == "-1") {
  632. layer.open({
  633. title: '浏览国民经济行业',
  634. type: 2,
  635. shade: 0.3,
  636. maxmin: true,
  637. area: [layerwidth + 'px', layerheight + 'px'],
  638. content: AjaxUtil.ctx + 'prjProject/gmjjhy',
  639. end: function (index) {
  640. if (ObjId != '0') {
  641. $("#" + data.elem.id).append("<option value=" + ObjId + " selected>" + ObjName + "</option>");
  642. ObjId = '0';
  643. ObjName = '';
  644. } else {
  645. $("#" + data.elem.id).val("");
  646. }
  647. form.render('select');
  648. }
  649. });
  650. }
  651. return false;
  652. });
  653. //监听可研报告
  654. form.on('select(kybg)', function (data) {
  655. if ($("#xmlx").val() == undefined || $("#xmlx").val() == '') {
  656. Message.error("请先选择项目类型", 1000);
  657. return false;
  658. }
  659. var len = $("#kybg")[0].length;
  660. while (len > 2)
  661. $("#kybg")[0].options[--len].remove();
  662. if (data.value == "") {
  663. $("#kybg").val(0);
  664. $("#bm").val('');
  665. $("#kybgmc").val('');
  666. form.render();
  667. }
  668. if (data.value == "-1") {
  669. parent.layer.open({
  670. title: '浏览可研报告',
  671. type: 2,
  672. shade: 0.3,
  673. maxmin: true,
  674. area: ['1200px', '750px'],
  675. content: AjaxUtil.ctx + 'prjProject/init_kybg?xmlx=' + $("#xmlx").val(),
  676. end: function (obj) {
  677. var kybg = localStorage.getItem("kybg");
  678. var updateflag = localStorage.getItem("updateflag");
  679. if (updateflag == "1") {
  680. var kybgmc = localStorage.getItem("kybgmc");
  681. $("#kybg").append("<option value=" + kybg + " selected>" + kybgmc + "</option>");
  682. $("#bm").val(kybg);
  683. $("#kybgmc").val(kybgmc);
  684. } else {
  685. $("#kybg").val(0);
  686. $("#bm").val('');
  687. $("#kybgmc").val('');
  688. }
  689. form.render();
  690. }
  691. });
  692. }
  693. return false;
  694. });
  695. // 用于存放表格数据
  696. var dataMember = new Array();
  697. //主要完成人
  698. var currTable1 = table.render({
  699. elem: '#currentTableId1',
  700. data: dataMember,
  701. cols: [
  702. [
  703. {type: "checkbox"},
  704. {type: 'numbers', align: 'center',title: '序号',width: '10%'},
  705. {field: 'ryxm', width: '10%', title: '人员', align: 'left'},
  706. {field: 'xmjsmc', width: '15%', title: '项目角色', align: 'left'},
  707. {field: 'bxmfg', width: '20%', title: '本项目分工', align: 'left'},
  708. {field: 'trgzzys', width: '15%', title: '投入工作总月数', align: 'center'},
  709. /* {field: 'sxbh', width: '10%', title: '顺序编号', align: 'center'},*/
  710. {field: 'dwmc', title: '单位', align: 'left',width: '20%'}
  711. ]
  712. ],
  713. autoSort: true,
  714. limit: Number.MAX_VALUE,
  715. initSort: {
  716. field: 'sxbh', //排序字段
  717. type: 'asc' //排序方式:desc 降序,asc 升序
  718. }
  719. });
  720. // 监听新建按钮(主要完成人)
  721. $("button[lay-filter='subAdd1']").click(function () {
  722. layer.open({
  723. title: '新建项目人员',
  724. type: 2,
  725. maxmin: true,
  726. shade: 0.2,
  727. area: ['820px', layerheight + 'px'],
  728. content: AjaxUtil.ctx + 'prjMember/forAdd',
  729. end: function (index) {
  730. if (updateflag == 1) {
  731. updateflag = 0;
  732. var oldData = table.cache["currentTableId1"];
  733. for (let item of oldData) {
  734. if (item.ry === prjMember.ry) {
  735. Message.warning("该人员已在主要完成人列表中,如需修改,请选中后编辑!", 2000);
  736. return;
  737. }
  738. }
  739. if (prjMember.dw == undefined)
  740. prjMember.dw = "";
  741. if (prjMember.dwlx == undefined)
  742. prjMember.dwlx = "";
  743. if (prjMember.zc == undefined)
  744. prjMember.zc = "";
  745. if (prjMember.xl == undefined)
  746. prjMember.xl = "";
  747. var item = {
  748. "ry": prjMember.ry,
  749. "ryxm": prjMember.ryxm,
  750. "dw": prjMember.dw,
  751. "dwmc": prjMember.dwmc,
  752. "dwlx": prjMember.dwlx,
  753. "dwlxmc": prjMember.dwlxmc,
  754. "zc": prjMember.zc,
  755. "zcmc": prjMember.zcmc,
  756. "xl": prjMember.xl,
  757. "xlmc": prjMember.xlmc,
  758. "xmjs": prjMember.xmjs,
  759. "xmjsmc": prjMember.xmjsmc,
  760. "bxmfg": prjMember.bxmfg,
  761. "sxbh": prjMember.sxbh,
  762. "trgzzys": prjMember.trgzzys
  763. };
  764. //刷新表格
  765. oldData.push(item);
  766. table.reload('currentTableId1', {
  767. data: oldData
  768. });
  769. var gjzc = 0, zjzc = 0, cjzc = 0, yjs = 0;
  770. for (let item of oldData) {
  771. if (item.zc.substring(2, 3) == 1 || item.zc.substring(2, 3) == 2)
  772. gjzc++;
  773. else if (item.zc.substring(2, 3) == 2)
  774. zjzc++;
  775. else if (item.zc.substring(2, 3) == 3)
  776. cjzc++;
  777. if (item.xlmc.indexOf("研究生") > -1)
  778. yjs++;
  779. }
  780. //更新统计信息
  781. $("#zrs").val(oldData.length);
  782. $("#gjzc").val(gjzc);
  783. $("#zjzc").val(zjzc);
  784. $("#cjzc").val(cjzc);
  785. $("#yjs").val(yjs);
  786. }
  787. }
  788. });
  789. });
  790. // 监听编辑按钮(主要完成人)
  791. $("button[lay-filter='subEdit1']").click(function () {
  792. var members = table.cache["currentTableId1"];
  793. if (members.length == 0)
  794. return;
  795. var checkStatus = table.checkStatus('currentTableId1')
  796. , data = checkStatus.data;
  797. if (data == null || data.length === 0) {
  798. Message.warning("请选择要编辑的项目人员!", 1500);
  799. } else if (data.length > 1) {
  800. Message.warning("请选择一条记录进行编辑操作!", 1500);
  801. } else {
  802. prjMember = {
  803. "ry": data[0].ry,
  804. "ryxm": data[0].ryxm,
  805. "dw": data[0].dw,
  806. "dwmc": data[0].dwmc,
  807. "dwlx": data[0].dwlx,
  808. "dwlxmc": data[0].dwlxmc,
  809. "zc": data[0].zc,
  810. "zcmc": data[0].zcmc,
  811. "xl": data[0].xl,
  812. "xlmc": data[0].xlmc,
  813. "xmjs": data[0].xmjs,
  814. "xmjsmc": data[0].xmjsmc,
  815. "bxmfg": data[0].bxmfg,
  816. "sxbh": data[0].sxbh,
  817. "trgzzys": data[0].trgzzys
  818. };
  819. layer.open({
  820. title: '编辑项目人员',
  821. type: 2,
  822. maxmin: true,
  823. shade: 0.2,
  824. area: ['820px', layerheight + 'px'],
  825. content: AjaxUtil.ctx + 'prjMember/forUpdate',
  826. end: function (index) {
  827. if (updateflag == 1) {
  828. updateflag = 0;
  829. var currMember = {
  830. "ry": prjMember.ry,
  831. "ryxm": prjMember.ryxm,
  832. "dw": prjMember.dw,
  833. "dwmc": prjMember.dwmc,
  834. "dwlx": prjMember.dwlx,
  835. "dwlxmc": prjMember.dwlxmc,
  836. "zc": prjMember.zc,
  837. "zcmc": prjMember.zcmc,
  838. "xl": prjMember.xl,
  839. "xlmc": prjMember.xlmc,
  840. "xmjs": prjMember.xmjs,
  841. "xmjsmc": prjMember.xmjsmc,
  842. "bxmfg": prjMember.bxmfg,
  843. "sxbh": prjMember.sxbh,
  844. "trgzzys": prjMember.trgzzys
  845. };
  846. var oldData = table.cache["currentTableId1"];
  847. for (var i = 0; i < oldData.length; i++) {
  848. var item = oldData[i];
  849. if (item.LAY_CHECKED) {//条件:选中
  850. // oldData.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  851. oldData[i] = currMember;
  852. break;
  853. }
  854. }
  855. var currData = oldData;
  856. // currData.push(currMember);
  857. table.reload('currentTableId1', {
  858. data: currData
  859. });
  860. }
  861. }
  862. });
  863. }
  864. });
  865. // 监听查看按钮(主要完成人)
  866. $("button[lay-filter='subView1']").click(function () {
  867. var members = table.cache["currentTableId1"];
  868. if (members.length == 0)
  869. return;
  870. var checkStatus = table.checkStatus('currentTableId1')
  871. , data = checkStatus.data;
  872. if (data == null || data.length === 0) {
  873. Message.warning("请选择要浏览的项目人员!", 1500);
  874. } else if (data.length > 1) {
  875. Message.warning("请选择一条记录进行浏览!", 1500);
  876. } else {
  877. layer.open({
  878. title: '浏览项目人员',
  879. type: 2,
  880. maxmin: true,
  881. shade: 0.2,
  882. area: ['820px', layerheight + 'px'],
  883. content: AjaxUtil.ctx + 'prjMember/forView',
  884. end: function (index) {
  885. }
  886. });
  887. }
  888. });
  889. // 监听删除按钮(主要完成人)
  890. $("button[lay-filter='subDelete1']").click(function () {
  891. var members = table.cache["currentTableId1"];
  892. if (members.length == 0)
  893. return;
  894. var checkStatus = table.checkStatus('currentTableId1')
  895. , data = checkStatus.data;
  896. if (data == null || data.length == 0) {
  897. Message.warning("请选择要删除的项目人员!", 1000);
  898. return;
  899. }
  900. var gjzc = 0, zjzc = 0, cjzc = 0, yjs = 0;
  901. var oldData = table.cache["currentTableId1"];
  902. for (var i = 0; i < oldData.length; i++) {
  903. var item = oldData[i];
  904. if (item.LAY_CHECKED) {//条件:选中
  905. oldData.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  906. i--;
  907. }
  908. }
  909. var currData = oldData;
  910. table.reload('currentTableId1', {
  911. data: currData
  912. });
  913. for (let item of currData) {
  914. if (item.zc.substring(2, 3) == 1 || item.zc.substring(2, 3) == 2)
  915. gjzc++;
  916. else if (item.zc.substring(2, 3) == 2)
  917. zjzc++;
  918. else if (item.zc.substring(2, 3) == 3)
  919. cjzc++;
  920. if (item.xlmc.indexOf("研究生") > -1)
  921. yjs++;
  922. }
  923. //更新统计信息
  924. $("#zrs").val(currData.length);
  925. $("#gjzc").val(gjzc);
  926. $("#zjzc").val(zjzc);
  927. $("#cjzc").val(cjzc);
  928. $("#yjs").val(yjs);
  929. });
  930. var dataCompany = new Array();
  931. //主要完成单位
  932. var currTable2 = table.render({
  933. elem: '#currentTableId2',
  934. data: dataCompany,
  935. cols: [
  936. [
  937. {type: "checkbox"},
  938. {type: 'numbers', align: 'center',title: '序号',width: '10%'},
  939. {field: 'dwmc', width: '30%', title: '单位', align: 'left'},
  940. {field: 'dwqc', width: '30%', title: '单位全称', align: 'left'},
  941. /*{field: 'sxbh', width: '10%', title: '顺序编号', align: 'center'},*/
  942. {field: 'lxrxm', width: '15%', title: '联系人', align: 'left'},
  943. {field: 'sfzyzfmc', width: '15%', title: '是否转移支付', align: 'center'}
  944. ]
  945. ]
  946. });
  947. // 监听新建按钮(主要完成单位)
  948. $("button[lay-filter='subAdd2']").click(function () {
  949. layer.open({
  950. title: '新建项目单位',
  951. type: 2,
  952. maxmin: true,
  953. shade: 0.2,
  954. area: ['820px', layerheight + 'px'],
  955. content: AjaxUtil.ctx + 'prjCompletecompany/forAdd',
  956. end: function (index) {
  957. if (updateflag == 1) {
  958. updateflag = 0;
  959. var oldData = table.cache["currentTableId2"];
  960. for (let item of oldData) {
  961. if (item.dw === prjCompany.dw) {
  962. Message.warning("该单位已在主要完成单位列表中,如需修改,请选中后编辑!", 2000);
  963. return;
  964. }
  965. }
  966. if (prjCompany.sfzyzf == undefined)
  967. prjCompany.sfzyzf = 0;
  968. else
  969. prjCompany.sfzyzf = 1;
  970. var sfzyzfmc = "否";
  971. if (prjCompany.sfzyzf == 1)
  972. sfzyzfmc = "是";
  973. var item = {
  974. "dw": prjCompany.dw,
  975. "dwmc": prjCompany.dwmc,
  976. "dwqc": prjCompany.dwqc,
  977. "sxbh": prjCompany.sxbh,
  978. "lxr": prjCompany.lxr,
  979. "lxrxm": prjCompany.lxrxm,
  980. "sfzyzf": prjCompany.sfzyzf,
  981. "sfzyzfmc": sfzyzfmc
  982. };
  983. //刷新表格
  984. oldData.push(item);
  985. table.reload('currentTableId2', {
  986. data: oldData
  987. });
  988. }
  989. }
  990. });
  991. });
  992. // 监听编辑按钮(主要完成单位)
  993. $("button[lay-filter='subEdit2']").click(function () {
  994. var companys = table.cache["currentTableId2"];
  995. if (companys.length == 0)
  996. return;
  997. var checkStatus = table.checkStatus('currentTableId2')
  998. , data = checkStatus.data;
  999. if (data == null || data.length === 0) {
  1000. Message.warning("请选择要编辑的单位!", 1500);
  1001. } else if (data.length > 1) {
  1002. Message.warning("请选择一条记录进行编辑操作!", 1500);
  1003. } else {
  1004. prjCompany = {
  1005. "dw": data[0].dw,
  1006. "dwmc": data[0].dwmc,
  1007. "dwqc": data[0].dwqc,
  1008. "sxbh": data[0].sxbh,
  1009. "lxr": data[0].lxr,
  1010. "lxrxm": data[0].lxrxm,
  1011. "sfzyzf": data[0].sfzyzf
  1012. };
  1013. layer.open({
  1014. title: '编辑项目单位',
  1015. type: 2,
  1016. maxmin: true,
  1017. shade: 0.2,
  1018. area: ['820px', layerheight + 'px'],
  1019. content: AjaxUtil.ctx + 'prjCompletecompany/forUpdate',
  1020. end: function (index) {
  1021. if (updateflag == 1) {
  1022. updateflag = 0;
  1023. if (prjCompany.sfzyzf == undefined)
  1024. prjCompany.sfzyzf = 0;
  1025. else
  1026. prjCompany.sfzyzf = 1;
  1027. var sfzyzfmc = "否";
  1028. if (prjCompany.sfzyzf == 1)
  1029. sfzyzfmc = "是";
  1030. var currCompany = {
  1031. "dw": prjCompany.dw,
  1032. "dwmc": prjCompany.dwmc,
  1033. "dwqc": prjCompany.dwqc,
  1034. "sxbh": prjCompany.sxbh,
  1035. "lxr": prjCompany.lxr,
  1036. "lxrxm": prjCompany.lxrxm,
  1037. "sfzyzf": prjCompany.sfzyzf,
  1038. "sfzyzfmc": sfzyzfmc
  1039. };
  1040. var oldData = table.cache["currentTableId2"];
  1041. for (var i = 0; i < oldData.length; i++) {
  1042. var item = oldData[i];
  1043. if (item.LAY_CHECKED) {//条件:选中
  1044. // oldData.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  1045. oldData[i] = currCompany;
  1046. break;
  1047. }
  1048. }
  1049. //刷新表格
  1050. var currData = oldData;
  1051. // currData.push(currCompany);
  1052. table.reload('currentTableId2', {
  1053. data: currData
  1054. });
  1055. }
  1056. }
  1057. });
  1058. }
  1059. });
  1060. // 监听查看按钮(主要完成单位)
  1061. $("button[lay-filter='subView2']").click(function () {
  1062. var companys = table.cache["currentTableId2"];
  1063. if (companys.length == 0)
  1064. return;
  1065. var checkStatus = table.checkStatus('currentTableId2')
  1066. , data = checkStatus.data;
  1067. if (data == null || data.length === 0) {
  1068. Message.warning("请选择要浏览的单位!", 1500);
  1069. } else if (data.length > 1) {
  1070. Message.warning("请选择一条记录进行浏览!", 1500);
  1071. } else {
  1072. prjCompany = {
  1073. "dw": data[0].dw,
  1074. "dwmc": data[0].dwmc,
  1075. "dwqc": data[0].dwqc,
  1076. "sxbh": data[0].sxbh,
  1077. "lxr": data[0].lxr,
  1078. "lxrxm": data[0].lxrxm,
  1079. "sfzyzf": data[0].sfzyzf
  1080. };
  1081. layer.open({
  1082. title: '浏览完成单位',
  1083. type: 2,
  1084. maxmin: true,
  1085. shade: 0.2,
  1086. area: ['820px', layerheight + 'px'],
  1087. content: AjaxUtil.ctx + 'prjCompletecompany/forView'
  1088. });
  1089. }
  1090. });
  1091. // 监听删除按钮(主要完成单位)
  1092. $("button[lay-filter='subDelete2']").click(function () {
  1093. var companys = table.cache["currentTableId2"];
  1094. if (companys.length == 0)
  1095. return;
  1096. var checkStatus = table.checkStatus('currentTableId2')
  1097. , data = checkStatus.data;
  1098. if (data == null || data.length === 0) {
  1099. Message.warning("请选择要删除的完成单位!", 1000);
  1100. return;
  1101. }
  1102. var oldData = table.cache["currentTableId2"];
  1103. for (var i = 0; i < oldData.length; i++) {
  1104. var item = oldData[i];
  1105. if (item.LAY_CHECKED) {//条件:选中
  1106. if (i != oldData.length - 1) {
  1107. Message.warning("完成单位和项目预算关联,只能从最后一项删除!", 2000);
  1108. return;
  1109. }
  1110. oldData.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  1111. i--;
  1112. }
  1113. }
  1114. var currData = oldData;
  1115. table.reload('currentTableId2', {
  1116. data: currData
  1117. });
  1118. });
  1119. // //所属部门
  1120. // var index = layer.load(0, {shade: 0.1});
  1121. // AjaxUtil.get({
  1122. // url: AjaxUtil.ctx + 'deptinfo/list',
  1123. // success: function (res) {
  1124. // var datalist = [];
  1125. // for (let item of res.data) {
  1126. // item.value = item.deptId;
  1127. // item.label = item.deptName;
  1128. // datalist.push(item);
  1129. // }
  1130. // // 扁平数据转树
  1131. // var options = arrayToTree(datalist, "0");
  1132. //
  1133. // // 初始化cascader实例
  1134. // cascader = layCascader({
  1135. // elem: '#ssbmmc',
  1136. // clearable: true,
  1137. // showAllLevels: false, // 配置仅显示最后一级
  1138. // props: {
  1139. // checkStrictly: true // 配置选择任意一级选项
  1140. // },
  1141. // options: options
  1142. // });
  1143. //
  1144. // // 监听cascader变化
  1145. // cascader.changeEvent(function (value, node) {
  1146. // // 主动关闭面板
  1147. // cascader.close();
  1148. // $("#ssbm").val(value);
  1149. // $("#ssbmmc").val(node.data.label);
  1150. // });
  1151. // layer.close(index);
  1152. // },
  1153. // error: function (error) {
  1154. // Message.error('获取部门信息失败!', 1000);
  1155. // layer.close(index);
  1156. // }
  1157. // });
  1158. //电科院负责人
  1159. tableSelect.render({
  1160. elem: '#dkyfzrxm',
  1161. checkedKey: 'id',
  1162. searchKey: 'xm',
  1163. searchPlaceholder: '搜索姓名',
  1164. table: {
  1165. url: AjaxUtil.ctx + 'basePerson/rylist',
  1166. cols: [
  1167. [
  1168. {type: "checkbox", fixed: 'left',title: '😊'},
  1169. {type: 'numbers', align: 'center',title: '序号',width: '15%'},
  1170. {field: 'xm', width: '15%', title: '姓名', align: 'left'},
  1171. {field: 'dwmc', title: '公司/单位', align: 'left',width: '60%'}
  1172. ]
  1173. ]
  1174. },
  1175. done: function (elem, data) {
  1176. var NEWJSON = [];
  1177. var NEWJSON1 = [];
  1178. layui.each(data.data, function (index, item) {
  1179. NEWJSON.push(item.xm);
  1180. NEWJSON1.push(item.id);
  1181. });
  1182. elem.val(NEWJSON.join(","));
  1183. $("#dkyfzr").val(NEWJSON1.join(","));
  1184. }
  1185. });
  1186. // 监听确认按钮(基本信息)
  1187. form.on('submit(saveBtn1)', function (data) {
  1188. var qsrq = document.getElementById('qs').value;
  1189. var jsrq = document.getElementById('wc').value;
  1190. var sd = new Date(qsrq);
  1191. var ed = new Date(jsrq);
  1192. if (sd > ed) {
  1193. Message.warning("起始日期必须小于结束日期", 1500);
  1194. return;
  1195. }
  1196. var url = AjaxUtil.ctx + "prjProject/doUpdateNormal";
  1197. if (xmId == -1)
  1198. url = AjaxUtil.ctx + "prjProject/doAddNormal";
  1199. //基本信息
  1200. AjaxUtil.post({
  1201. url: url,
  1202. data: data.field,
  1203. success: function (res) {
  1204. if (res.code === 0) {
  1205. Message.success(1000, res.message, function () {
  1206. parent.setUpdateFlag();
  1207. //任务书Id
  1208. if (xmId == -1) {
  1209. xmId = res.data.id;
  1210. $("#id").val(xmId);
  1211. }
  1212. //主要完成人
  1213. var members = [];
  1214. var oldMembers = table.cache["currentTableId1"];
  1215. for (const item of oldMembers) {
  1216. var member = {
  1217. "xm": xmId,
  1218. "ry": item.ry,
  1219. "dw": item.dw,
  1220. "ryxm": item.ryxm,
  1221. "dwmc": item.dwmc,
  1222. "dwlx": item.dwlx,
  1223. "xmjs": item.xmjs,
  1224. "sxbh": item.sxbh,
  1225. "zc": item.zc,
  1226. "xl": item.xl,
  1227. "trgzzys": item.trgzzys,
  1228. "bxmfg": item.bxmfg
  1229. };
  1230. members.push(member);
  1231. }
  1232. AjaxUtil.post({
  1233. url: AjaxUtil.ctx + "prjMember/batchInsert/" + xmId,
  1234. contentType: "application/json",
  1235. data: JSON.stringify(members),
  1236. success: function (res) {
  1237. if (res.code === 0) {
  1238. // Message.success(1000, res.message, function () {
  1239. //
  1240. // });
  1241. } else {
  1242. // Message.error(res.message, 1000);
  1243. }
  1244. },
  1245. error: function (error) {
  1246. }
  1247. });
  1248. //主要完成单位
  1249. var companys = [];
  1250. var oldCompanys = table.cache["currentTableId2"];
  1251. for (let item of oldCompanys) {
  1252. var company = {
  1253. "xm": xmId,
  1254. "dw": item.dw,
  1255. "dwmc": item.dwmc,
  1256. "dwqc": item.dwqc,
  1257. "lxr": item.lxr,
  1258. "lxrxm": item.lxrxm,
  1259. "sfzyzf": item.sfzyzf
  1260. };
  1261. companys.push(company);
  1262. }
  1263. AjaxUtil.post({
  1264. url: AjaxUtil.ctx + "prjCompletecompany/batchInsert/" + xmId,
  1265. contentType: "application/json",
  1266. data: JSON.stringify(companys),
  1267. success: function (res) {
  1268. dataCompany = companys;
  1269. $.ajax({
  1270. url: AjaxUtil.ctx + 'prjBudget/list/' + xmId,
  1271. type: "post",
  1272. async: false,
  1273. dataType: "json",
  1274. success: function (result) {
  1275. dataBudget = result;
  1276. }
  1277. });
  1278. setPrjBudge();
  1279. if (res.code === 0) {
  1280. // Message.success(1000, res.message, function () {
  1281. //
  1282. // });
  1283. } else {
  1284. // Message.error(res.message, 1000);
  1285. }
  1286. },
  1287. error: function (error) {
  1288. }
  1289. });
  1290. });
  1291. } else {
  1292. Message.error(res.message, 1000);
  1293. }
  1294. },
  1295. fail: function (res) {
  1296. layer.close(index);
  1297. Message.error(res.message, 1500);
  1298. },
  1299. error: function (error) {
  1300. }
  1301. });
  1302. return false;
  1303. });
  1304. // 监听确认按钮(填写说明)
  1305. $("button[lay-filter='saveBtn2']").click(function () {
  1306. if (xmId == -1) {
  1307. Message.error("请先创建项目任务书,然后再保存填写说明", 2000);
  1308. } else {
  1309. var project = {
  1310. "id": xmId,
  1311. "txsm": $("#txsm").val()
  1312. }
  1313. var index = layer.load(0, {shade: 0.1});
  1314. AjaxUtil.post({
  1315. url: AjaxUtil.ctx + "prjProject/doUpdateTxsm",
  1316. contentType: "application/json",
  1317. data: JSON.stringify(project),
  1318. success: function (res) {
  1319. if (res.code === 0) {
  1320. Message.success(1000, res.message, function () {
  1321. parent.setUpdateFlag();
  1322. });
  1323. } else {
  1324. Message.error(res.message, 1000);
  1325. }
  1326. layer.close(index);
  1327. },
  1328. error: function (error) {
  1329. layer.close(index);
  1330. }
  1331. });
  1332. }
  1333. });
  1334. //子课题
  1335. var dataSubtopic = new Array();
  1336. //子课题单位分工费用统计
  1337. var prjCompletecompanyListFy = new Array();
  1338. function freshSubtopic() {
  1339. $.ajax({
  1340. url: AjaxUtil.ctx + 'prjSubtopic/list/' + xmId,
  1341. type: "post",
  1342. async: false,
  1343. dataType: "json",
  1344. success: function (result) {
  1345. dataSubtopic = result.data.rows;
  1346. prjCompletecompanyListFy = result.data.prjCompletecompanyListFy;
  1347. //年度预算总和
  1348. document.getElementById('rwsys').value = result.data.sum;
  1349. document.getElementById('rwsys2').value = result.data.sum;
  1350. }
  1351. });
  1352. table.reload('currentTableId3', {
  1353. data: dataSubtopic
  1354. });
  1355. }
  1356. var currTable3 = table.render({
  1357. elem: '#currentTableId3',
  1358. data: dataSubtopic,
  1359. cols: [
  1360. [
  1361. {type: "checkbox"},
  1362. // {type: 'numbers', align: 'center'},
  1363. {type: 'numbers', title: '序号', width: '10%', align: 'center'},
  1364. {field: 'ktmc', title: '课题名称', width: '30%'},
  1365. {field: 'fzrxm', title: '负责人', width: '10%'},
  1366. {field: 'fzrszdwmc', title: '负责人所在单位', width: '25%'},
  1367. {field: 'qssj', title: '起始时间', width: '12%', align: 'center'},
  1368. {field: 'jssj', title: '结束时间', width: '12%', align: 'center'}
  1369. // {title: '操作', toolbar: '#currentTableBar3', align: 'center', fixed: 'right'}
  1370. ]
  1371. ],
  1372. autoSort: false,
  1373. limits: [10, 15, 20, 25, 50, 100],
  1374. limit: 10,
  1375. page: true,
  1376. skin: 'grid',
  1377. parseData: function (res) { //res 即为原始返回的数据
  1378. //年度预算总和
  1379. document.getElementById('rwsys').value = res.data.sum;
  1380. return {
  1381. "code": res.code, //解析接口状态
  1382. "msg": res.message, //解析提示文本
  1383. "count": res.data.total, //解析数据长度
  1384. "data": res.data.rows //解析数据列表
  1385. };
  1386. }
  1387. });
  1388. // 监听新建按钮(子课题)
  1389. $("button[lay-filter='btnAdd3']").click(function () {
  1390. if (xmId == -1) {
  1391. Message.error("请先创建项目任务书,然后再添加子课题", 2000);
  1392. } else {
  1393. layer.open({
  1394. title: '新建子课题',
  1395. type: 2,
  1396. maxmin: true,
  1397. shade: 0.2,
  1398. area: ['1020px', layerheight + 'px'],
  1399. content: AjaxUtil.ctx + 'prjSubtopic/forAdd/' + xmId,
  1400. end: function (index) {
  1401. // 重载表格
  1402. if (updateflag == 1)
  1403. freshSubtopic();
  1404. updateflag = 0;
  1405. layer.close(index);
  1406. }
  1407. });
  1408. }
  1409. });
  1410. // 监听编辑按钮(子课题)
  1411. $("button[lay-filter='btnEdit3']").click(function () {
  1412. var subTopics = table.cache["currentTableId3"];
  1413. if (subTopics.length == 0)
  1414. return;
  1415. var checkStatus = table.checkStatus('currentTableId3')
  1416. , data = checkStatus.data;
  1417. if (data == null || data.length === 0) {
  1418. Message.warning("请选择要编辑的子课题!", 1500);
  1419. } else if (data.length > 1) {
  1420. Message.warning("请选择一条记录进行编辑!", 1500);
  1421. } else {
  1422. layer.open({
  1423. title: '编辑子课题',
  1424. type: 2,
  1425. maxmin: true,
  1426. shade: 0.2,
  1427. area: ['1030px', layerheight + 'px'],
  1428. content: AjaxUtil.ctx + 'prjSubtopic/forUpdate/' + data[0].id,
  1429. end: function (index) {
  1430. // 重载表格
  1431. if (updateflag == 1)
  1432. freshSubtopic();
  1433. updateflag = 0;
  1434. layer.close(index);
  1435. }
  1436. });
  1437. }
  1438. });
  1439. // 监听查看按钮(子课题)
  1440. $("button[lay-filter='btnView3']").click(function () {
  1441. var subTopics = table.cache["currentTableId3"];
  1442. if (subTopics.length == 0)
  1443. return;
  1444. var checkStatus = table.checkStatus('currentTableId3')
  1445. , data = checkStatus.data;
  1446. if (data == null || data.length === 0) {
  1447. Message.warning("请选择要浏览的子课题!", 1500);
  1448. } else if (data.length > 1) {
  1449. Message.warning("请选择一条记录进行浏览!", 1500);
  1450. } else {
  1451. layer.open({
  1452. title: '浏览子课题',
  1453. type: 2,
  1454. maxmin: true,
  1455. shade: 0.2,
  1456. area: ['1030px', layerheight + 'px'],
  1457. content: AjaxUtil.ctx + 'prjSubtopic/forView/' + data[0].id,
  1458. end: function () {
  1459. layer.close(index);
  1460. }
  1461. });
  1462. }
  1463. });
  1464. // 监听删除按钮(子课题)
  1465. $("button[lay-filter='btnDelete3']").click(function () {
  1466. var subTopics = table.cache["currentTableId3"];
  1467. if (subTopics.length == 0)
  1468. return;
  1469. var checkStatus = table.checkStatus('currentTableId3')
  1470. , data = checkStatus.data;
  1471. if (data == null || data.length === 0) {
  1472. Message.warning("请选择要删除的子课题!", 1500);
  1473. } else {
  1474. layer.confirm('确定批量删除子课题吗?', function (index) {
  1475. layer.close(index);
  1476. AjaxUtil.post({
  1477. url: AjaxUtil.ctx + "prjSubtopic/batchDelete",
  1478. contentType: "application/json",
  1479. data: JSON.stringify(data),
  1480. success: function (res) {
  1481. if (res.code === 0) {
  1482. Message.success(1000, res.message, function () {
  1483. // 重载表格
  1484. freshSubtopic();
  1485. });
  1486. } else {
  1487. Message.error(res.message, 1000);
  1488. }
  1489. },
  1490. error: function (error) {
  1491. }
  1492. });
  1493. });
  1494. }
  1495. });
  1496. // 监听行工具事件(子课题)
  1497. table.on('tool(currentTableFilter3)', function (obj) {
  1498. var data = obj.data;
  1499. if (obj.event === 'view') {
  1500. layer.open({
  1501. title: '浏览子课题',
  1502. type: 2,
  1503. maxmin: true,
  1504. shade: 0.2,
  1505. area: ['1030px', layerheight + 'px'],
  1506. content: AjaxUtil.ctx + 'prjSubtopic/forView/' + data.id,
  1507. end: function () {
  1508. layer.close(index);
  1509. }
  1510. });
  1511. } else if (obj.event === 'update') {
  1512. layer.open({
  1513. title: '编辑子课题',
  1514. type: 2,
  1515. maxmin: true,
  1516. shade: 0.2,
  1517. area: ['1030px', layerheight + 'px'],
  1518. content: AjaxUtil.ctx + 'prjSubtopic/forUpdate/' + data.id,
  1519. end: function (index) {
  1520. // 重载表格
  1521. if (updateflag == 1)
  1522. freshSubtopic();
  1523. updateflag = 0;
  1524. }
  1525. });
  1526. } else if (obj.event === 'delFlag') {
  1527. layer.confirm('确定删除该课题吗?', function (index) {
  1528. AjaxUtil.get({
  1529. url: AjaxUtil.ctx + "prjSubtopic/delete/" + data.id,
  1530. success: function (res) {
  1531. if (res.code === 0) {
  1532. Message.success(1000, res.message, function () {
  1533. // 重载表格
  1534. freshSubtopic();
  1535. });
  1536. } else {
  1537. Message.error(res.message, 1000);
  1538. }
  1539. },
  1540. error: function (error) {
  1541. }
  1542. });
  1543. });
  1544. }
  1545. return false;
  1546. });
  1547. //双击(子课题)
  1548. table.on('rowDouble(currentTableFilter3)', function (obj) {
  1549. var data = obj.data;
  1550. layer.open({
  1551. title: '浏览子课题',
  1552. type: 2,
  1553. maxmin: true,
  1554. shade: 0.2,
  1555. area: ['1030px', layerheight + 'px'],
  1556. content: AjaxUtil.ctx + 'prjSubtopic/forView/' + data.id,
  1557. end: function () {
  1558. layer.close(index);
  1559. }
  1560. });
  1561. });
  1562. // 监听确认按钮(内容)
  1563. $("button[lay-filter='saveBtn4']").click(function () {
  1564. if (xmId == -1) {
  1565. Message.error("请先创建项目任务书,然后再保存研究内容及考核指标", 2000);
  1566. } else {
  1567. var project = {
  1568. "id": xmId,
  1569. "yjnrjkhzb": $("#yjnrjkhzb").val()
  1570. }
  1571. var index = layer.load(0, {shade: 0.1});
  1572. AjaxUtil.post({
  1573. url: AjaxUtil.ctx + "prjProject/updateContent",
  1574. contentType: "application/json",
  1575. data: JSON.stringify(project),
  1576. success: function (res) {
  1577. if (res.code === 0) {
  1578. Message.success(1000, res.message, function () {
  1579. parent.setUpdateFlag();
  1580. });
  1581. } else {
  1582. Message.error(res.message, 1000);
  1583. }
  1584. layer.close(index);
  1585. },
  1586. error: function (error) {
  1587. layer.close(index);
  1588. }
  1589. });
  1590. }
  1591. });
  1592. //项目预算列标题
  1593. function getBudgetCols() {
  1594. budgetCols = [];
  1595. budgetCols.push({type: 'numbers', width: '3%'});
  1596. budgetCols.push({field: 'mc', width: '22%', title: '名称'});
  1597. budgetCols.push({field: 'ysje', width: '10%', title: '预算金额(万元)'});
  1598. for (var i = 0; i < dataCompany.length; i++) {
  1599. budgetCols.push({
  1600. field: "dw" + (i + 1),
  1601. width: '10%',
  1602. title: dataCompany[i].dwmc + '(万元)',
  1603. edit: 'number'
  1604. })
  1605. if (i >= 9)
  1606. break;
  1607. }
  1608. ;
  1609. }
  1610. //项目预算
  1611. var insTb5;
  1612. function loadTreetable() {
  1613. insTb5 = treeTable.render({
  1614. elem: '#currentTableId5',
  1615. data: dataBudget,
  1616. skin: 'grid',
  1617. tree: {
  1618. treeColIndex: 1,
  1619. treeSpid: "", //最上级的父级id
  1620. iconIndex: 1, // 折叠图标显示在第几列
  1621. isPidData: true,// 是否是id、pid形式数据
  1622. idName: 'bm', // id字段名称
  1623. pidName: 'fj', // pid字段名称
  1624. arrowType: 'arrow2',
  1625. getIcon: 'ew-tree-icon-style2',
  1626. openName: 'bm'
  1627. },
  1628. treeDefaultClose: false,
  1629. page: false,
  1630. // toolbar: '#toolbarDemo',
  1631. cols: [budgetCols]
  1632. });
  1633. }
  1634. function setPrjBudge() {
  1635. getBudgetCols();
  1636. loadTreetable();
  1637. }
  1638. //加载预算项
  1639. setPrjBudge();
  1640. // 监听单元格编辑
  1641. treeTable.on('edit(currentTableId5)', function (obj) {
  1642. var value = obj.value,
  1643. item = obj.data,
  1644. dw = obj.field;
  1645. if (item.children == undefined) {
  1646. //当前行预算
  1647. setCurBudget(item.bm, dw, value);
  1648. //父级预算
  1649. setFjBudget(item.fj);
  1650. }
  1651. loadTreetable();
  1652. });
  1653. //当前行预算
  1654. function setCurBudget(bm, dw, value) {
  1655. for (var i = 0; i < dataBudget.length; i++) {
  1656. if (bm == dataBudget[i].bm) {
  1657. value = parseFloat(value);
  1658. if (value<0){
  1659. alert("金额不能为负数或无效的数字,请重新输入!");
  1660. value = null;
  1661. }
  1662. if (isNaN(value))
  1663. value = null;
  1664. var rwsys = $("#rwsys").val();
  1665. // if (value !== null && value > rwsys * 0.2) {
  1666. // alert("不能超过任务书预算的20%!");
  1667. // return; // 返回,不进行后续处理
  1668. // }
  1669. //当前单元格
  1670. if (dw == "dw1") {
  1671. dataBudget[i].dw1 = value;
  1672. } else if (dw == "dw2") {
  1673. dataBudget[i].dw2 = value;
  1674. } else if (dw == "dw3") {
  1675. dataBudget[i].dw3 = value;
  1676. } else if (dw == "dw4") {
  1677. dataBudget[i].dw4 = value;
  1678. } else if (dw == "dw5") {
  1679. dataBudget[i].dw5 = value;
  1680. } else if (dw == "dw6") {
  1681. dataBudget[i].dw6 = value;
  1682. } else if (dw == "dw7") {
  1683. dataBudget[i].dw7 = value;
  1684. } else if (dw == "dw8") {
  1685. dataBudget[i].dw8 = value;
  1686. } else if (dw == "dw9") {
  1687. dataBudget[i].dw9 = value;
  1688. } else if (dw == "dw10") {
  1689. dataBudget[i].dw10 = value;
  1690. }
  1691. //正在编辑的预算
  1692. var dw1 = 0, dw2 = 0, dw3 = 0, dw4 = 0, dw5 = 0,
  1693. dw6 = 0, dw7 = 0, dw8 = 0, dw9 = 0, dw10 = 0;
  1694. if (dataBudget[i].dw1 != null) {
  1695. dw1 = parseFloat(dataBudget[i].dw1);
  1696. if (isNaN(dw1))
  1697. dw1 = 0;
  1698. }
  1699. if (dataBudget[i].dw2 != null) {
  1700. dw2 = parseFloat(dataBudget[i].dw2);
  1701. if (isNaN(dw2))
  1702. dw2 = 0;
  1703. }
  1704. if (dataBudget[i].dw3 != null) {
  1705. dw3 = parseFloat(dataBudget[i].dw3);
  1706. if (isNaN(dw3))
  1707. dw3 = 0;
  1708. }
  1709. if (dataBudget[i].dw4 != null) {
  1710. dw4 = parseFloat(dataBudget[i].dw4);
  1711. if (isNaN(dw4))
  1712. dw4 = 0;
  1713. }
  1714. if (dataBudget[i].dw5 != null) {
  1715. dw5 = parseFloat(dataBudget[i].dw5);
  1716. if (isNaN(dw5))
  1717. dw5 = 0;
  1718. }
  1719. if (dataBudget[i].dw6 != null) {
  1720. dw6 = parseFloat(dataBudget[i].dw6);
  1721. if (isNaN(dw6))
  1722. dw6 = 0;
  1723. }
  1724. if (dataBudget[i].dw7 != null) {
  1725. dw7 = parseFloat(dataBudget[i].dw7);
  1726. if (isNaN(dw7))
  1727. dw7 = 0;
  1728. }
  1729. if (dataBudget[i].dw8 != null) {
  1730. dw8 = parseFloat(dataBudget[i].dw8);
  1731. if (isNaN(dw8))
  1732. dw8 = 0;
  1733. }
  1734. if (dataBudget[i].dw9 != null) {
  1735. dw9 = parseFloat(dataBudget[i].dw9);
  1736. if (isNaN(dw9))
  1737. dw9 = 0;
  1738. }
  1739. if (dataBudget[i].dw10 != null) {
  1740. dw10 = parseFloat(dataBudget[i].dw10);
  1741. if (isNaN(dw10))
  1742. dw10 = 0;
  1743. }
  1744. var ysje = (dw1 + dw2 + dw3 + dw4 + dw5 + dw6 + dw7 + dw8 + dw9 + dw10).toFixed(2);
  1745. // alert(ysje);
  1746. if (ysje == 0)
  1747. dataBudget[i].ysje = "";
  1748. else
  1749. dataBudget[i].ysje = ysje;
  1750. break;
  1751. }
  1752. }
  1753. }
  1754. //父级预算
  1755. function setFjBudget(fj) {
  1756. if (fj != null && fj != '') {
  1757. var dw1 = 0, dw2 = 0, dw3 = 0, dw4 = 0, dw5 = 0,
  1758. dw6 = 0, dw7 = 0, dw8 = 0, dw9 = 0, dw10 = 0;
  1759. //子节点的值相加
  1760. for (var j = 0; j < dataBudget.length; j++) {
  1761. if (fj == dataBudget[j].fj) {
  1762. var t1 = parseFloat(dataBudget[j].dw1);
  1763. if (!isNaN(t1))
  1764. dw1 += t1;
  1765. var t2 = parseFloat(dataBudget[j].dw2);
  1766. if (!isNaN(t2))
  1767. dw2 += t2;
  1768. var t3 = parseFloat(dataBudget[j].dw3);
  1769. if (!isNaN(t3))
  1770. dw3 += t3;
  1771. var t4 = parseFloat(dataBudget[j].dw4);
  1772. if (!isNaN(t4))
  1773. dw4 += t4;
  1774. var t5 = parseFloat(dataBudget[j].dw5);
  1775. if (!isNaN(t5))
  1776. dw5 += t5;
  1777. var t6 = parseFloat(dataBudget[j].dw6);
  1778. if (!isNaN(t6))
  1779. dw6 += t6;
  1780. var t7 = parseFloat(dataBudget[j].dw7);
  1781. if (!isNaN(t7))
  1782. dw7 += t7;
  1783. var t8 = parseFloat(dataBudget[j].dw8);
  1784. if (!isNaN(t8))
  1785. dw8 += t8;
  1786. var t9 = parseFloat(dataBudget[j].dw9);
  1787. if (!isNaN(t9))
  1788. dw9 += t9;
  1789. var t10 = parseFloat(dataBudget[j].dw10);
  1790. if (!isNaN(t10))
  1791. dw10 += t10;
  1792. }
  1793. }
  1794. //更新父节点的值
  1795. for (var j = 0; j < dataBudget.length; j++) {
  1796. if (fj == dataBudget[j].bm) {
  1797. if (dw1 == 0)
  1798. dataBudget[j].dw1 = '';
  1799. else
  1800. dataBudget[j].dw1 = dw1.toFixed(2);
  1801. if (dw2 == 0)
  1802. dataBudget[j].dw2 = '';
  1803. else
  1804. dataBudget[j].dw2 = dw2.toFixed(2);
  1805. if (dw3 == 0)
  1806. dataBudget[j].dw3 = '';
  1807. else
  1808. dataBudget[j].dw3 = dw3.toFixed(2);
  1809. if (dw4 == 0)
  1810. dataBudget[j].dw4 = '';
  1811. else
  1812. dataBudget[j].dw4 = dw4.toFixed(2);
  1813. if (dw5 == 0)
  1814. dataBudget[j].dw5 = '';
  1815. else
  1816. dataBudget[j].dw5 = dw5.toFixed(2);
  1817. if (dw6 == 0)
  1818. dataBudget[j].dw6 = '';
  1819. else
  1820. dataBudget[j].dw6 = dw6.toFixed(2);
  1821. if (dw7 == 0)
  1822. dataBudget[j].dw7 = '';
  1823. else
  1824. dataBudget[j].dw7 = dw7.toFixed(2);
  1825. if (dw8 == 0)
  1826. dataBudget[j].dw8 = '';
  1827. else
  1828. dataBudget[j].dw8 = dw8.toFixed(2);
  1829. if (dw9 == 0)
  1830. dataBudget[j].dw9 = '';
  1831. else
  1832. dataBudget[j].dw9 = dw9.toFixed(2);
  1833. if (dw10 == 0)
  1834. dataBudget[j].dw10 = '';
  1835. else
  1836. dataBudget[j].dw10 = dw10.toFixed(2);
  1837. var ysje = dw1 + dw2 + dw3 + dw4 + dw5 + dw6 + dw7 + dw8 + dw9 + dw10;
  1838. if (ysje == 0) {
  1839. dataBudget[j].ysje = "";
  1840. } else
  1841. dataBudget[j].ysje = ysje.toFixed(2);
  1842. setFjBudget(dataBudget[j].fj);
  1843. break;
  1844. }
  1845. }
  1846. }
  1847. }
  1848. //组织要保存的数据
  1849. function getBudget(budgets, data) {
  1850. var budget = {
  1851. "id": data.id,
  1852. "fj": data.fj,
  1853. "ysje": data.ysje,
  1854. "dw1": data.dw1,
  1855. "dw2": data.dw2,
  1856. "dw3": data.dw3,
  1857. "dw4": data.dw4,
  1858. "dw5": data.dw5,
  1859. "dw6": data.dw6,
  1860. "dw7": data.dw7,
  1861. "dw8": data.dw8,
  1862. "dw9": data.dw9,
  1863. "dw10": data.dw10
  1864. };
  1865. budgets.push(budget);
  1866. if (data.children != undefined) {
  1867. getChildNode(budgets, data);
  1868. }
  1869. }
  1870. function getChildNode(budgets, data) {
  1871. for (let item of data.children) {
  1872. getBudget(budgets, item);
  1873. }
  1874. }
  1875. // 监听确认按钮(项目预算)
  1876. $("button[lay-filter='saveBtn5']").click(function () {
  1877. if (xmId == -1) {
  1878. Message.error("请先创建项目任务书,然后再填写项目预算", 2000);
  1879. } else {
  1880. var data = insTb5.options.data;
  1881. var budgets = new Array();
  1882. for (var i = 0; i < data.length; i++) {
  1883. getBudget(budgets, data[i]);
  1884. }
  1885. for (let i = 0; i < prjCompletecompanyListFy.length; i++) {
  1886. if (prjCompletecompanyListFy[i].sumjf == null){
  1887. prjCompletecompanyListFy[i].sumjf =0;
  1888. }
  1889. if ( budgets[0]['dw' + (i + 1)] == null || budgets[0]['dw' + (i + 1)] ==''){
  1890. budgets[0]['dw' + (i + 1)] ==0;
  1891. }
  1892. if (budgets[0]['dw' + (i + 1)] != prjCompletecompanyListFy[i].sumjf ){
  1893. alert("保存失败,"+prjCompletecompanyListFy[i].dwmc+'在子课题单位分工中所有经费总和为:'
  1894. +prjCompletecompanyListFy[i].sumjf+'万元,请确保所填数据一致!!!')
  1895. return false
  1896. }
  1897. }
  1898. var index = layer.load(0, {shade: 0.1});
  1899. AjaxUtil.post({
  1900. url: AjaxUtil.ctx + "prjProject/doUpdateXmys",
  1901. contentType: "application/json",
  1902. data: JSON.stringify(budgets),
  1903. success: function (res) {
  1904. if (res.code === 0) {
  1905. Message.success(1000, res.message, function () {
  1906. loadTreetable();
  1907. parent.setUpdateFlag();
  1908. });
  1909. } else {
  1910. Message.error(res.message, 1000);
  1911. }
  1912. layer.close(index);
  1913. },
  1914. error: function (error) {
  1915. layer.close(index);
  1916. }
  1917. });
  1918. }
  1919. alert(ysje)
  1920. });
  1921. //出资方案
  1922. var dataFeescheme = new Array();
  1923. function freshFeescheme() {
  1924. $.ajax({
  1925. url: AjaxUtil.ctx + 'prjFeescheme/list/' + xmId,
  1926. type: "post",
  1927. async: false,
  1928. dataType: "json",
  1929. success: function (result) {
  1930. dataFeescheme = result.data.rows;
  1931. }
  1932. });
  1933. table.reload('currentTableId6', {
  1934. data: dataFeescheme
  1935. });
  1936. }
  1937. var currTable6 = table.render({
  1938. elem: '#currentTableId6',
  1939. data: dataFeescheme,
  1940. cols: [
  1941. [
  1942. {type: "checkbox"},
  1943. // {type: 'numbers', align: 'center'},
  1944. {type: 'numbers', title: '序号', align: 'center'},
  1945. {field: 'nf', title: '年份', width: '12%', align: 'center'},
  1946. {field: 'dwmc', title: '出资单位', width: '45%'},
  1947. {field: 'czje', title: '出资金额(万元)', width: '15%', align: 'center'}
  1948. // {title: '操作', toolbar: '#currentTableBar6', align: 'center', fixed: 'right'}
  1949. ]
  1950. ],
  1951. autoSort: false,
  1952. limits: [10, 15, 20, 25, 50, 100],
  1953. limit: 10,
  1954. page: true,
  1955. skin: 'grid',
  1956. parseData: function (res) { //res 即为原始返回的数据
  1957. return {
  1958. "code": res.code, //解析接口状态
  1959. "msg": res.message, //解析提示文本
  1960. "count": res.data.total, //解析数据长度
  1961. "data": res.data.rows //解析数据列表
  1962. };
  1963. }
  1964. });
  1965. // 监听新建按钮(出资方案)
  1966. $("button[lay-filter='btnAdd6']").click(function () {
  1967. if (xmId == -1) {
  1968. Message.error("请先创建项目任务书,然后再添加出资方案", 2000);
  1969. } else {
  1970. layer.open({
  1971. title: '新建出资方案',
  1972. type: 2,
  1973. maxmin: true,
  1974. shade: 0.2,
  1975. area: ['1010px', layerheight + 'px'],
  1976. content: AjaxUtil.ctx + 'prjFeescheme/forAdd/' + xmId + '?qs=' + $("#qs").val() + '&wc=' + $("#wc").val() + '&ysjecz=' + $("#rwsys").val(),
  1977. end: function (index) {
  1978. // 重载表格
  1979. if (updateflag == 1)
  1980. freshFeescheme();
  1981. updateflag = 0;
  1982. layer.close(index);
  1983. }
  1984. });
  1985. }
  1986. });
  1987. // 监听编辑按钮(出资方案)
  1988. $("button[lay-filter='btnEdit6']").click(function () {
  1989. var czfas = table.cache["currentTableId6"];
  1990. if (czfas.length == 0)
  1991. return;
  1992. var checkStatus = table.checkStatus('currentTableId6')
  1993. , data = checkStatus.data;
  1994. if (data == null || data.length === 0) {
  1995. Message.warning("请选择要编辑的出资方案!", 1500);
  1996. } else if (data.length > 1) {
  1997. Message.warning("请选择一条记录进行编辑!", 1500);
  1998. } else {
  1999. layer.open({
  2000. title: '编辑出资方案',
  2001. type: 2,
  2002. maxmin: true,
  2003. shade: 0.2,
  2004. area: ['1010px', layerheight + 'px'],
  2005. content: AjaxUtil.ctx + 'prjFeescheme/forUpdate/' + data[0].id + '?qs=' + $("#qs").val() + '&wc=' + $("#wc").val() + '&ysjecz=' + $("#rwsys").val(),
  2006. end: function (index) {
  2007. // 重载表格
  2008. if (updateflag == 1)
  2009. freshFeescheme();
  2010. updateflag = 0;
  2011. layer.close(index);
  2012. }
  2013. });
  2014. }
  2015. });
  2016. // 监听查看按钮(出资方案)
  2017. $("button[lay-filter='btnView6']").click(function () {
  2018. var czfas = table.cache["currentTableId6"];
  2019. if (czfas.length == 0)
  2020. return;
  2021. var checkStatus = table.checkStatus('currentTableId6')
  2022. , data = checkStatus.data;
  2023. if (data == null || data.length === 0) {
  2024. Message.warning("请选择要浏览的出资方案!", 1500);
  2025. } else if (data.length > 1) {
  2026. Message.warning("请选择一条记录进行浏览!", 1500);
  2027. } else {
  2028. layer.open({
  2029. title: '浏览出资方案',
  2030. type: 2,
  2031. maxmin: true,
  2032. shade: 0.2,
  2033. area: ['1010px', layerheight + 'px'],
  2034. content: AjaxUtil.ctx + 'prjFeescheme/forView/' + data[0].id,
  2035. });
  2036. }
  2037. });
  2038. // 监听删除按钮(出资方案)
  2039. $("button[lay-filter='btnDelete6']").click(function () {
  2040. var czfas = table.cache["currentTableId6"];
  2041. if (czfas.length == 0)
  2042. return;
  2043. var checkStatus = table.checkStatus('currentTableId6')
  2044. , data = checkStatus.data;
  2045. if (data == null || data.length === 0) {
  2046. Message.warning("请选择要删除的出资方案!", 1500);
  2047. } else {
  2048. layer.confirm('确定批量删除出资方案吗?', function (index) {
  2049. layer.close(index);
  2050. AjaxUtil.post({
  2051. url: AjaxUtil.ctx + "prjFeescheme/batchDelete",
  2052. contentType: "application/json",
  2053. data: JSON.stringify(data),
  2054. success: function (res) {
  2055. if (res.code === 0) {
  2056. Message.success(1000, res.message, function () {
  2057. // 重载表格
  2058. alert('已删除所选数据');
  2059. freshFeescheme();
  2060. });
  2061. } else {
  2062. Message.error(res.message, 1000);
  2063. }
  2064. },
  2065. error: function (error) {
  2066. }
  2067. });
  2068. });
  2069. }
  2070. });
  2071. // 监听行工具事件(出资方案)
  2072. table.on('tool(currentTableFilter6)', function (obj) {
  2073. var data = obj.data;
  2074. if (obj.event === 'view') {
  2075. layer.open({
  2076. title: '浏览出资方案',
  2077. type: 2,
  2078. maxmin: true,
  2079. shade: 0.2,
  2080. area: ['1010px', layerheight + 'px'],
  2081. content: AjaxUtil.ctx + 'prjFeescheme/forView/' + data.id,
  2082. });
  2083. } else if (obj.event === 'update') {
  2084. layer.open({
  2085. title: '编辑出资方案',
  2086. type: 2,
  2087. maxmin: true,
  2088. shade: 0.2,
  2089. area: ['1010px', layerheight + 'px'],
  2090. content: AjaxUtil.ctx + 'prjFeescheme/forUpdate/' + data.id,
  2091. end: function (index) {
  2092. // 重载表格
  2093. if (updateflag == 1)
  2094. freshFeescheme();
  2095. updateflag = 0;
  2096. layer.close(index);
  2097. }
  2098. });
  2099. } else if (obj.event === 'delFlag') {
  2100. layer.confirm('确定删除该出资方案吗?', function (index) {
  2101. layer.close(index);
  2102. AjaxUtil.get({
  2103. url: AjaxUtil.ctx + "prjFeescheme/delete/" + data.id,
  2104. success: function (res) {
  2105. if (res.code === 0) {
  2106. Message.success(1000, res.message, function () {
  2107. // 重载表格
  2108. freshFeescheme();
  2109. });
  2110. } else {
  2111. Message.error(res.message, 1000);
  2112. }
  2113. },
  2114. error: function (error) {
  2115. }
  2116. });
  2117. });
  2118. }
  2119. return false;
  2120. });
  2121. //双击(出资方案)
  2122. table.on('rowDouble(currentTableFilter6)', function (obj) {
  2123. var data = obj.data;
  2124. layer.open({
  2125. title: '浏览出资方案',
  2126. type: 2,
  2127. maxmin: true,
  2128. shade: 0.2,
  2129. area: ['1010px', layerheight + 'px'],
  2130. content: AjaxUtil.ctx + 'prjFeescheme/forView/' + data.id,
  2131. });
  2132. });
  2133. // 监听确认按钮(说明)
  2134. $("button[lay-filter='saveBtn7']").click(function () {
  2135. if (xmId == -1) {
  2136. Message.error("请先创建项目任务书,然后再保存有关问题说明", 2000);
  2137. } else {
  2138. var project = {
  2139. "id": xmId,
  2140. "ygwtsm": $("#ygwtsm").val()
  2141. }
  2142. var index = layer.load(0, {shade: 0.1});
  2143. AjaxUtil.post({
  2144. url: AjaxUtil.ctx + "prjProject/doUpdateYgwtsm",
  2145. contentType: "application/json",
  2146. data: JSON.stringify(project),
  2147. success: function (res) {
  2148. if (res.code === 0) {
  2149. Message.success(1000, res.message, function () {
  2150. parent.setUpdateFlag();
  2151. });
  2152. } else {
  2153. Message.error(res.message, 1000);
  2154. }
  2155. layer.close(index);
  2156. },
  2157. error: function (error) {
  2158. layer.close(index);
  2159. }
  2160. });
  2161. }
  2162. });
  2163. //联系方式
  2164. var dataContacts = new Array();
  2165. function freshContacts() {
  2166. $.ajax({
  2167. url: AjaxUtil.ctx + 'prjContacts/list/' + xmId,
  2168. type: "post",
  2169. async: false,
  2170. dataType: "json",
  2171. success: function (result) {
  2172. dataContacts = result.data.rows;
  2173. }
  2174. });
  2175. table.reload('currentTableId8', {
  2176. data: dataContacts
  2177. });
  2178. }
  2179. var currTable8 = table.render({
  2180. elem: '#currentTableId8',
  2181. data: dataContacts,
  2182. cols: [
  2183. [
  2184. {type: "checkbox"},
  2185. {type: 'numbers', align: 'center'},
  2186. {field: 'dwmc', title: '单位', width: '30%'},
  2187. {field: 'lxrxm', title: '联系人', width: '10%'},
  2188. {field: 'gddh', title: '固定电话', width: '12%'},
  2189. {field: 'dzyj', title: '电子邮件', width: '18%'},
  2190. {field: 'lxmc', title: '类型', width: '10%'}
  2191. ]
  2192. ],
  2193. autoSort: false,
  2194. limits: [10, 15, 20, 25, 50, 100],
  2195. limit: 10,
  2196. page: true,
  2197. skin: 'grid',
  2198. parseData: function (res) { //res 即为原始返回的数据
  2199. return {
  2200. "code": res.code, //解析接口状态
  2201. "msg": res.message, //解析提示文本
  2202. "count": res.data.total, //解析数据长度
  2203. "data": res.data.rows //解析数据列表
  2204. };
  2205. }
  2206. });
  2207. // 监听新建按钮(联系方式)
  2208. $("button[lay-filter='btnAdd8']").click(function () {
  2209. if (xmId == -1) {
  2210. Message.error("请先创建项目模板并保存,然后再添加联系方式", 2000);
  2211. } else {
  2212. layer.open({
  2213. title: '新建联系方式',
  2214. type: 2,
  2215. maxmin: true,
  2216. shade: 0.2,
  2217. area: ['900px', layerheight + 'px'],
  2218. content: AjaxUtil.ctx + 'prjContacts/forAdd/' + xmId,
  2219. end: function (index) {
  2220. console.log(updateflag);
  2221. // 重载表格
  2222. if (updateflag == 1)
  2223. freshContacts();
  2224. updateflag = 0;
  2225. layer.close(index);
  2226. }
  2227. });
  2228. }
  2229. });
  2230. // 监听编辑按钮(联系方式)
  2231. $("button[lay-filter='btnEdit8']").click(function () {
  2232. var contacts = table.cache["currentTableId8"];
  2233. if (contacts.length == 0)
  2234. return;
  2235. var checkStatus = table.checkStatus('currentTableId8')
  2236. , data = checkStatus.data;
  2237. if (data == null || data.length === 0) {
  2238. Message.warning("请选择要编辑的联系方式!", 1500);
  2239. } else if (data.length > 1) {
  2240. Message.warning("请选择一条记录进行编辑!", 1500);
  2241. } else {
  2242. layer.open({
  2243. title: '编辑联系方式',
  2244. type: 2,
  2245. maxmin: true,
  2246. shade: 0.2,
  2247. area: ['900px', layerheight + 'px'],
  2248. content: AjaxUtil.ctx + 'prjContacts/forUpdate/' + data[0].id,
  2249. end: function (index) {
  2250. // 重载表格
  2251. if (updateflag == 1)
  2252. freshContacts();
  2253. updateflag = 0;
  2254. layer.close(index);
  2255. }
  2256. });
  2257. }
  2258. });
  2259. // 监听查看按钮(联系方式)
  2260. $("button[lay-filter='btnView8']").click(function () {
  2261. var contacts = table.cache["currentTableId8"];
  2262. if (contacts.length == 0)
  2263. return;
  2264. var checkStatus = table.checkStatus('currentTableId8')
  2265. , data = checkStatus.data;
  2266. if (data == null || data.length === 0) {
  2267. Message.warning("请选择要浏览的联系方式!", 1500);
  2268. } else if (data.length > 1) {
  2269. Message.warning("请选择一条记录进行浏览!", 1500);
  2270. } else {
  2271. layer.open({
  2272. title: '浏览联系方式',
  2273. type: 2,
  2274. maxmin: true,
  2275. shade: 0.2,
  2276. area: ['900px', layerheight + 'px'],
  2277. content: AjaxUtil.ctx + 'prjContacts/forView/' + data[0].id,
  2278. end: function () {
  2279. layer.close(index);
  2280. }
  2281. });
  2282. }
  2283. });
  2284. // 监听删除按钮(联系方式)
  2285. $("button[lay-filter='btnDelete8']").click(function () {
  2286. var contacts = table.cache["currentTableId8"];
  2287. if (contacts.length == 0)
  2288. return;
  2289. var checkStatus = table.checkStatus('currentTableId8')
  2290. , data = checkStatus.data;
  2291. if (data == null || data.length === 0) {
  2292. Message.warning("请选择要删除的联系方式!", 1500);
  2293. } else {
  2294. layer.confirm('确定批量删除联系方式吗?', function (index) {
  2295. layer.close(index);
  2296. AjaxUtil.post({
  2297. url: AjaxUtil.ctx + "prjContacts/batchDelete",
  2298. contentType: "application/json",
  2299. data: JSON.stringify(data),
  2300. success: function (res) {
  2301. if (res.code === 0) {
  2302. Message.success(1000, res.message, function () {
  2303. // 重载表格
  2304. freshContacts();
  2305. });
  2306. } else {
  2307. Message.error(res.message, 1000);
  2308. }
  2309. },
  2310. error: function (error) {
  2311. }
  2312. });
  2313. });
  2314. }
  2315. });
  2316. // 监听行工具事件(联系方式)
  2317. table.on('tool(currentTableFilter8)', function (obj) {
  2318. var data = obj.data;
  2319. if (obj.event === 'view') {
  2320. layer.open({
  2321. title: '浏览联系方式',
  2322. type: 2,
  2323. maxmin: true,
  2324. shade: 0.2,
  2325. area: ['900px', layerheight + 'px'],
  2326. content: AjaxUtil.ctx + 'prjContacts/forView/' + data.id,
  2327. end: function () {
  2328. layer.close(index);
  2329. }
  2330. });
  2331. } else if (obj.event === 'update') {
  2332. layer.open({
  2333. title: '编辑联系方式',
  2334. type: 2,
  2335. maxmin: true,
  2336. shade: 0.2,
  2337. area: ['900px', layerheight + 'px'],
  2338. content: AjaxUtil.ctx + 'prjContacts/forUpdate/' + data.id,
  2339. end: function (index) {
  2340. // 重载表格
  2341. if (updateflag == 1)
  2342. freshContacts();
  2343. updateflag = 0;
  2344. layer.close(index);
  2345. }
  2346. });
  2347. } else if (obj.event === 'delFlag') {
  2348. layer.confirm('确定删除该联系方式吗?', function (index) {
  2349. layer.close(index);
  2350. AjaxUtil.get({
  2351. url: AjaxUtil.ctx + "prjContacts/delete/" + data.id,
  2352. success: function (res) {
  2353. if (res.code === 0) {
  2354. Message.success(1000, res.message, function () {
  2355. // 重载表格
  2356. freshContacts();
  2357. });
  2358. } else {
  2359. Message.error(res.message, 1000);
  2360. }
  2361. },
  2362. error: function (error) {
  2363. }
  2364. });
  2365. });
  2366. }
  2367. return false;
  2368. });
  2369. //双击(联系方式)
  2370. table.on('rowDouble(currentTableFilter8)', function (obj) {
  2371. var data = obj.data;
  2372. layer.open({
  2373. title: '浏览联系方式',
  2374. type: 2,
  2375. maxmin: true,
  2376. shade: 0.2,
  2377. area: ['900px', layerheight + 'px'],
  2378. content: AjaxUtil.ctx + 'prjContacts/forView/' + data.id,
  2379. end: function () {
  2380. layer.close(index);
  2381. }
  2382. });
  2383. });
  2384. // 用于存放表格数据
  2385. var dataFj = new Array();
  2386. //附件
  2387. var currTable9 = table.render({
  2388. elem: '#currentTableId9',
  2389. data: dataFj,
  2390. cols: [
  2391. [
  2392. {type: "checkbox", align: 'center'},
  2393. {type: 'numbers', align: 'center'},
  2394. {field: 'wjm', title: '文件名', width: '30%'},
  2395. {field: 'scrq', title: '上传日期', width: '20%'},
  2396. {field: 'sm', title: '说明', edit: 'text'}
  2397. ]
  2398. ],
  2399. autoSort: false,
  2400. limits: [10, 15, 20, 25, 50, 100],
  2401. limit: 10,
  2402. page: false,
  2403. skin: 'grid',
  2404. done: function (res, curr, count) { // done为数据渲染完的回调
  2405. }
  2406. });
  2407. //文件上传
  2408. upload.render({
  2409. elem: '.upload' //绑定元素
  2410. , url: AjaxUtil.ctx + 'fileupload/upload'
  2411. , methd: 'post'
  2412. , accept: 'file'
  2413. , data: {}
  2414. , done: function (res) {
  2415. // debugger;
  2416. if (0 === res.code) {
  2417. if (res.data.fileType == "memberFile") {
  2418. if (0 === res.data.code) {
  2419. var currData = [];
  2420. for (var i = 0; i < res.data.list.length; i++) {
  2421. var currMember = {
  2422. "ry": res.data.list[i].ry,
  2423. "ryxm": res.data.list[i].ryxm,
  2424. "dw": res.data.list[i].dw,
  2425. "dwmc": res.data.list[i].dwmc,
  2426. "dwlx": res.data.list[i].dwlx,
  2427. "dwlxmc": res.data.list[i].dwlxmc,
  2428. "zc": res.data.list[i].zc,
  2429. "zcmc": res.data.list[i].zcmc,
  2430. "xl": res.data.list[i].xl,
  2431. "xlmc": res.data.list[i].xlmc,
  2432. "xmjs": res.data.list[i].xmjs,
  2433. "xmjsmc": res.data.list[i].xmjsmc,
  2434. "bxmfg": res.data.list[i].bxmfg,
  2435. "sxbh": res.data.list[i].sxbh,
  2436. "trgzzys": res.data.list[i].trgzzys
  2437. };
  2438. currData.push(currMember);
  2439. }
  2440. table.reload('currentTableId1', {
  2441. data: currData
  2442. });
  2443. var gjzc = 0, zjzc = 0, cjzc = 0, yjs = 0;
  2444. for (let item of currData) {
  2445. if (item.zc.substring(2, 3) == 1 || item.zc.substring(2, 3) == 2)
  2446. gjzc++;
  2447. else if (item.zc.substring(2, 3) == 2)
  2448. zjzc++;
  2449. else if (item.zc.substring(2, 3) == 3)
  2450. cjzc++;
  2451. if (item.xlmc.indexOf("研究生") > -1)
  2452. yjs++;
  2453. }
  2454. //更新统计信息
  2455. $("#zrs").val(currData.length);
  2456. $("#gjzc").val(gjzc);
  2457. $("#zjzc").val(zjzc);
  2458. $("#cjzc").val(cjzc);
  2459. $("#yjs").val(yjs);
  2460. form.render();
  2461. } else if (10 === res.data.code) {
  2462. layer.alert("文件中部分人员未录入到系统!" + res.data.tipList.toString());
  2463. } else if (20 === res.data.code) {
  2464. layer.alert("文件中不存在可识别的记录!");
  2465. } else {
  2466. layer.alert("上传格式错误!");
  2467. }
  2468. } else {
  2469. var curData = {
  2470. "wjm": res.data.fileName,
  2471. "scrq": res.data.fileDate,
  2472. "Url": res.data.fileUrl,
  2473. "sm": res.data.sm
  2474. };
  2475. dataFj.push(curData);
  2476. currTable9.reload();
  2477. }
  2478. } else
  2479. layer.alert("上传文件出现错误!");
  2480. }
  2481. , error: function () {
  2482. layer.alert("上传文件出现错误!");
  2483. }
  2484. , before: function (res) {
  2485. let fileType = this.fileType;
  2486. this.data.fileType = fileType;
  2487. }
  2488. });
  2489. $("button[lay-filter='deleteFile']").click(function () {
  2490. if (dataFj.length == 0)
  2491. return;
  2492. var checkStatus = table.checkStatus('currentTableId9')
  2493. , data = checkStatus.data;
  2494. if (data == null || data.length === 0) {
  2495. Message.warning("请选择要删除的附件!", 1000);
  2496. return;
  2497. }
  2498. for (var i = 0; i < dataFj.length; i++) {
  2499. var item = dataFj[i];
  2500. if (item.LAY_CHECKED) {//条件:选中
  2501. dataFj.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  2502. i--;
  2503. }
  2504. }
  2505. //刷新表格
  2506. currTable9.reload();
  2507. });
  2508. //双击(附件)
  2509. table.on('rowDouble(currentTableFilter9)', function (obj) {
  2510. window.open(obj.data.Url);
  2511. });
  2512. // 监听确认按钮(附件)
  2513. $("button[lay-filter='saveBtn9']").click(function () {
  2514. var dataWB = [];
  2515. for (const item of dataFj) {
  2516. var dfWb = {
  2517. "id": item.id,
  2518. "wjm": item.wjm,
  2519. "Url": item.Url,
  2520. "scrq": item.scrq,
  2521. "sm": item.sm
  2522. };
  2523. dataWB.push(dfWb);
  2524. }
  2525. $("#fj").val(JSON.stringify(dataWB));
  2526. var project = {
  2527. "id": xmId,
  2528. "fj": $("#fj").val()
  2529. }
  2530. var index = layer.load(0, {shade: 0.1});
  2531. AjaxUtil.post({
  2532. url: AjaxUtil.ctx + "prjProject/doUpdateFJ",
  2533. contentType: "application/json",
  2534. data: JSON.stringify(project),
  2535. success: function (res) {
  2536. if (res.code === 0) {
  2537. Message.success(1000, res.message, function () {
  2538. parent.setUpdateFlag();
  2539. });
  2540. } else {
  2541. Message.error(res.message, 1000);
  2542. }
  2543. layer.close(index);
  2544. },
  2545. error: function (error) {
  2546. layer.close(index);
  2547. }
  2548. });
  2549. return false;
  2550. });
  2551. // 监听取消按钮
  2552. $("button[lay-filter='cancleBtn']").click(function () {
  2553. if (updateflag == 1)
  2554. currTable3.reload();
  2555. updateflag = 0;
  2556. var iframeIndex = parent.layer.getFrameIndex(window.name);
  2557. parent.layer.close(iframeIndex);
  2558. });
  2559. });
  2560. /**
  2561. * 扁平数据转树结构
  2562. * @returns {[]}
  2563. * @param data
  2564. * @param firstPid
  2565. */
  2566. // function arrayToTree(data, firstPid) {
  2567. // const result = [];
  2568. // getChildren(data, result, firstPid);
  2569. // return result;
  2570. // }
  2571. //
  2572. // function getChildren(data, result, parentId) {
  2573. // for (const item of data) {
  2574. // if (item.parentId === parentId) {
  2575. // const newItem = {...item, children: []};
  2576. // result.push(newItem);
  2577. // getChildren(data, newItem.children, item.deptId);
  2578. // }
  2579. // }
  2580. // }
  2581. //设置更新标志
  2582. function setUpdateFlag() {
  2583. updateflag = 1;
  2584. }
  2585. //从子页面设置父页面的值
  2586. function setData(id, name) {
  2587. ObjId = id;
  2588. ObjName = name;
  2589. }
  2590. //设置项目完成人员信息
  2591. function setMember(member) {
  2592. prjMember = member;
  2593. }
  2594. //获取当前的项目人员
  2595. function getMember() {
  2596. return prjMember;
  2597. }
  2598. //获取当前的项目完成单位信息
  2599. function getCompany() {
  2600. return prjCompany;
  2601. }
  2602. //设置项目完成单位信息
  2603. function setCompany(company) {
  2604. prjCompany = company;
  2605. }
  2606. //获取子课题信息
  2607. function getZktInfo() {
  2608. return subTopic;
  2609. }
  2610. </script>
  2611. </body>
  2612. </html>