work.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. {extend name="public/layout" /} {block name="title"}日报{/block} {block name="body"}
  2. <link rel="stylesheet" type="text/css" href="__STATIC__/css/csspc.css" />
  3. <link rel="stylesheet" type="text/css" href="__STATIC__/css/redesign.css" />
  4. <style>
  5. html,
  6. body {
  7. display: block;
  8. min-width: 1100px;
  9. width: 100%;
  10. height: 100%;
  11. overflow: hidden;
  12. }
  13. body {
  14. padding: 15px;
  15. box-sizing: border-box;
  16. }
  17. .layui-table thead tr,
  18. .layui-table-header {
  19. background-color: #D8E6F1 !important;
  20. }
  21. .layui-fluid {
  22. display: block;
  23. box-shadow: 0 0 4px 0 #B6CADE;
  24. border-radius: 5px;
  25. margin: 0;
  26. background-color: #ffffff;
  27. overflow: hidden;
  28. padding: 0;
  29. box-sizing: border-box;
  30. position: relative;
  31. width: 100%;
  32. }
  33. .layui-tab {
  34. padding: 28px 24px 0px 30px;
  35. width: 100%;
  36. margin: 0;
  37. height: auto;
  38. font-size: 16px;
  39. line-height: 16px;
  40. }
  41. .layui-tab-title {
  42. display: block;
  43. border-color: #eee;
  44. padding-bottom: 5px;
  45. }
  46. .layui-tab-title li {
  47. font-size: 16px;
  48. position: relative;
  49. line-height: 16px;
  50. padding: 0;
  51. margin-left: 30px;
  52. min-width: auto;
  53. }
  54. .layui-tab-title li:first-child {
  55. margin-left: 0;
  56. }
  57. .layui-tab-title .layui-this:after {
  58. border-width: 0;
  59. }
  60. .layui-tab-title li a {
  61. display: block;
  62. width: 100%;
  63. height: 100%;
  64. padding-bottom: 11px;
  65. position: relative;
  66. }
  67. .layui-tab-title .layui-this::before {
  68. content: ' ';
  69. display: block;
  70. width: 100%;
  71. height: 3px;
  72. background-color: #249efb;
  73. position: absolute;
  74. left: 0;
  75. bottom: 4px;
  76. }
  77. .flex-row {
  78. display: flex;
  79. }
  80. .selectBox {
  81. height: 40px;
  82. border: 1px solid #f5f5f5;
  83. width: 180px;
  84. font-size: 14px;
  85. color: #CCCCCC;
  86. }
  87. .selectBox>option {
  88. color: #000;
  89. }
  90. .layui-btn-xs,.layui-btn-xs:hover {
  91. color: #249efb;
  92. background-color: #fff;
  93. border: 1px solid #249efb;
  94. padding: 0px 10px;
  95. }
  96. .layui-card-body{padding:10px 30px !important;}
  97. </style>
  98. <body>
  99. <div class="layui-fluid">
  100. <!-- <div class="layui-tab">
  101. <ul class="layui-tab-title">
  102. <li class="layui-this" style="padding-bottom: 11px;">
  103. 汇报
  104. </li>
  105. <li style="padding-bottom: 0;">
  106. <a href="{:url('dailyWork/sent')}">我发送的</a>
  107. </li>
  108. <li style="padding-bottom: 0;">
  109. <a href="{:url('dailyWork/received')}">我收到的</a>
  110. </li>
  111. </ul>
  112. </div>
  113. <div>
  114. <div class="layui-work-time">
  115. <ul class="layui-work-time-ul">
  116. <li id="addDay">
  117. <div class="layui-work-time-btn">日</div>
  118. <p>写日报</p>
  119. </li>
  120. <li id="addWeek">
  121. <div class="layui-work-time-btn">周</div>
  122. <p>写周报</p>
  123. </li>
  124. <li id="addMonth">
  125. <div class="layui-work-time-btn">月</div>
  126. <p>写月报</p>
  127. </li>
  128. <li class="layui-mode">
  129. <div class="layui-work-time-btn">....</div>
  130. <p>更多</p>
  131. </li>
  132. </ul>
  133. </div>
  134. </div> -->
  135. <div class="layui-card-body">
  136. <div class="layui-form layui-card-header layuiadmin-card-header-auto" style="padding: 0;">
  137. <div class="layui-form-item">
  138. <div style="float:right;">
  139. <div class="layui-inline">
  140. <label class="layui-form-label">部门</label>
  141. <div class="layui-input-inline">
  142. <select name="org" id="org" lay-filter="org_select">
  143. <option value=""></option>
  144. </select>
  145. </div>
  146. </div>
  147. <div class="layui-inline" style="margin-right: 0px;">
  148. <label class="layui-form-label">汇报人</label>
  149. <div class="layui-input-inline">
  150. <select name="emp_id" id="employee" lay-filter="employee_select">
  151. <option value=""></option>
  152. </select>
  153. </div>
  154. </div>
  155. <div class="layui-inline" style="margin-right: 0px;">
  156. <label class="layui-form-label" style="width:100px;">汇报类型</label>
  157. <div class="layui-input-inline">
  158. <select name="type" lay-filter="type" id="type">
  159. <option value="">请选择</option>
  160. <option value="day">日报</option>
  161. <option value="week">周报</option>
  162. <option value="month">月报</option>
  163. </select>
  164. </div>
  165. </div>
  166. <div class="layui-inline" style="margin-right:0;">
  167. <button class="layui-btn layuiadmin-btn-list submitbtn" lay-submit
  168. lay-filter="LAY-app-contlist-search">
  169. <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
  170. </button>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. <div>
  176. <table id="label-table" lay-filter="labelTable"></table>
  177. </div>
  178. </div>
  179. </div>
  180. </body>
  181. {/block} {block name="js"}
  182. <script type="text/html" id="op">
  183. <a class="layui-btn layui-btn-xs" lay-event="detail">详情</a>
  184. </script>
  185. <script>
  186. var orgids_str = '{:$orgids}';
  187. var orgids = JSON.parse(orgids_str);
  188. var org = eval('{$org|raw}');
  189. layui.config({
  190. base: '__LAYUI__/',
  191. urlbase: '/sys'
  192. }).extend({
  193. index: 'lib/index' //主入口模块
  194. }).use(['index', 'table', 'upload','form'], function () {
  195. var $ = layui.$,
  196. upload = layui.upload,
  197. form = layui.form,
  198. table = layui.table;
  199. $('#org').append(setOrgOption(org, ''));
  200. form.render('select')
  201. form.on('select(org_select)', function (data) {
  202. var val = data.value;
  203. requestEmployee(val);
  204. });
  205. document.onkeydown=function(event){
  206. var e = event || window.event || arguments.callee.caller.arguments[0];
  207. if(e && e.keyCode==13){
  208. $(".submitbtn").trigger("click");
  209. }
  210. };
  211. requestEmployee('')
  212. function requestEmployee(val) {
  213. $.ajax({
  214. url: '{:url("org/employee")}'
  215. , data: { org:val,limit:10000}
  216. , type: 'get'
  217. , success: function (res) {
  218. if (res.code == 0) {
  219. $('#employee').html('<option value="">请选择</option>');
  220. res.data.forEach(element => {
  221. $('#employee').append('<option value="' + element.id + '">' + element.name + '</option>');
  222. });
  223. form.render('select')
  224. }
  225. }
  226. });
  227. }
  228. function setOrgOption(opt, sj) {
  229. var html = '';
  230. opt.forEach(element => {
  231. if (orgids.length > 0) {
  232. if (in_array(element.id, orgids)) {
  233. html += '<option value="' + element.id + '">' + sj + element.title + '</option>';
  234. }
  235. }
  236. if (element && element.children.length > 0) html += setOrgOption(element.children, sj + '-');
  237. });
  238. return html;
  239. }
  240. function in_array(search, array) {
  241. for (var i in array) {
  242. if (array[i] == search) {
  243. return true;
  244. }
  245. }
  246. return false;
  247. }
  248. table.render({
  249. elem: '#label-table',
  250. autoSort: false,
  251. url: "{:url('daily_work/list')}",
  252. height: 'full-150',
  253. cols: [
  254. [{
  255. type: 'numbers',
  256. field: 'id',
  257. width: 80,
  258. title: '序号',
  259. sort: true
  260. }, {
  261. field: 'name',
  262. title: '汇报人',
  263. align:'center'
  264. }, {
  265. field: 'type',
  266. title: '汇报类型',
  267. align:'center'
  268. },{
  269. field: 'reporting_object',
  270. title: '汇报对象',
  271. align:'center'
  272. }, {
  273. field: 'date',
  274. title: '汇报时间',
  275. align:'center'
  276. },{
  277. field: 'org_name',
  278. title: '部门',
  279. align:'center'
  280. }, {
  281. field: 'current_work',
  282. title: '(今日/本周/本月)工作'
  283. }, {
  284. field: 'next_plan',
  285. title: '(明日/下周/下月)计划'
  286. }, {
  287. templet: '#op',
  288. title: '操作',
  289. width: 100,
  290. align:'center',
  291. fixed: 'right'
  292. }]
  293. ],
  294. done: function (res, curr, count) {
  295. // 如果是异步请求数据方式,res即为你接口返回的信息。
  296. $("[data-field='type']").children().each(function () {
  297. if ($(this).text() == 'day') {
  298. $(this).text('日报');
  299. } else if ($(this).text() == 'week') {
  300. $(this).text('周报');
  301. } else if ($(this).text() == 'month') {
  302. $(this).text('月报');
  303. } else {
  304. $(this).text('汇报类型');
  305. }
  306. });
  307. $("[data-field='reporting_object']").children().each(function (v) {
  308. if (v == 0) {
  309. $(this).text('汇报对象')
  310. return;
  311. }
  312. let reporting_object = res.data[v-1].reporting_object;
  313. let html = '';
  314. if (reporting_object && !!reporting_object.length) {
  315. html = reporting_object.map(v => {
  316. return `<span>${v.name}、</span>`
  317. }).join('');
  318. $(this).html(html)
  319. } else {
  320. $(this).text('汇报对象')
  321. }
  322. // debugger
  323. });
  324. },
  325. page: true,
  326. limit: 30,
  327. text: '对不起,加载出现异常!'
  328. });
  329. //监听列表
  330. table.on('tool(labelTable)', function (obj) {
  331. var data = obj.data;
  332. if (obj.event === 'detail') {
  333. opendaily(data.id)
  334. }
  335. });
  336. function opendaily(id) {
  337. layer.open({
  338. type: 2,
  339. title: ['汇报详情', 'color:#333333;background-color:#D8E6F1;'],
  340. content: '{:url("dailyWork/details")}?category=sent&id=' + id,
  341. resize: false,
  342. area: ['80%', '80%'],
  343. });
  344. }
  345. //监听搜索
  346. form.on('submit(LAY-app-contlist-search)', function (data) {
  347. var field = data.field;
  348. //执行重载
  349. table.reload('label-table', {
  350. where: field
  351. , page: {
  352. curr: 1
  353. }
  354. });
  355. });
  356. //写日报
  357. $('#addDay').click(function () {
  358. layer.open({
  359. type: 2,
  360. title: ['日报', 'color:#333333;background-color:#D8E6F1;'],
  361. content: '{:url("dailyWork/submit_work")}?type=day',
  362. resize: false,
  363. area: ['80%', '80%'],
  364. btn: ['提交'],
  365. yes: function (index, layero) {
  366. //点击确认触发 iframe 内容中的按钮提交
  367. var submit = layero.find('iframe').contents().find("#submit");
  368. submit.click();
  369. }
  370. });
  371. })
  372. //写周报
  373. $('#addWeek').click(function () {
  374. layer.open({
  375. type: 2,
  376. title: ['周报', 'color:#333333;background-color:#D8E6F1;'],
  377. content: '{:url("dailyWork/submit_work")}?type=week',
  378. resize: false,
  379. area: ['80%', '80%'],
  380. btn: ['确定'],
  381. yes: function (index, layero) {
  382. //点击确认触发 iframe 内容中的按钮提交
  383. var submit = layero.find('iframe').contents().find("#submit");
  384. submit.click();
  385. }
  386. });
  387. })
  388. //写月报
  389. $('#addMonth').click(function () {
  390. layer.open({
  391. type: 2,
  392. title: ['月报', 'color:#333333;background-color:#D8E6F1;'],
  393. content: '{:url("dailyWork/submit_work")}?type=month',
  394. resize: false,
  395. area: ['80%', '80%'],
  396. btn: ['确定'],
  397. yes: function (index, layero) {
  398. //点击确认触发 iframe 内容中的按钮提交
  399. var submit = layero.find('iframe').contents().find("#submit");
  400. submit.click();
  401. }
  402. });
  403. })
  404. });
  405. </script>
  406. {/block}