433 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			433 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {extend name="../../base/view/common/base" /}
 | |
| <!-- 主体 -->
 | |
| {block name="style"}
 | |
| <style>
 | |
|   .layui-unselect dl {
 | |
|     max-height: 188px;
 | |
|   }
 | |
| </style>
 | |
| {/block} {block name="breadcrumb"}
 | |
| <span class="layui-breadcrumb">
 | |
|   <a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
 | |
|   <a><cite>任务中心</cite></a>
 | |
| </span>
 | |
| {/block} {block name="body"}
 | |
| <div id="taskList" class="table-content p-3">
 | |
|   <input type="hidden" id="currentUserId" value="" />
 | |
|   <div class="gougu-tab-bar border-t border-x">
 | |
|     <div class="layui-row">
 | |
|       <div class="layui-col-md6 gougu-tab">
 | |
|         <!-- <ul class="gougu-tab-title" id="taskTab">
 | |
| 					<li class="tab-this" data-type="0">全部</li>
 | |
| 				</ul> -->
 | |
|       </div>
 | |
|       <div class="py-2 px-3" style="text-align: right">
 | |
|         <div class="layui-btn-group mr-4" style="display: none">
 | |
|           <button type="button" data-event="show" class="layui-btn layui-btn-sm layui-btn-normal">
 | |
|             <i class="layui-icon"></i>列表
 | |
|           </button>
 | |
|           <button type="button" data-event="show" class="layui-btn layui-btn-sm layui-btn-primary">
 | |
|             <i class="layui-icon"></i>看板
 | |
|           </button>
 | |
|           <button type="button" data-event="show" class="layui-btn layui-btn-sm layui-btn-primary">
 | |
|             <i class="layui-icon"></i>日历
 | |
|           </button>
 | |
|         </div>
 | |
|         <button class="layui-btn layui-btn-sm add-new">+ 新建任务</button>
 | |
|       </div>
 | |
|     </div>
 | |
|   </div>
 | |
|   <div class="layui-form-bar border-t border-x">
 | |
|     <form id="taskForm" class="layui-form">
 | |
|       <div class="layui-input-inline" style="width: 120px">
 | |
|         <select name="flow_status" lay-filter="status">
 | |
|           <option value="">任务状态</option>
 | |
|           <option value="1">未开始</option>
 | |
|           <option value="2">进行中</option>
 | |
|           <option value="3">已完成</option>
 | |
|           <option value="4">已拒绝</option>
 | |
|           <option value="5">已关闭</option>
 | |
|           <option value="6">未解决</option>
 | |
|         </select>
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 100px">
 | |
|         <select name="priority" lay-filter="priority">
 | |
|           <option value="">优先级</option>
 | |
|           <option value="1">低</option>
 | |
|           <option value="2">中</option>
 | |
|           <option value="3">高</option>
 | |
|           <option value="4">紧急</option>
 | |
|         </select>
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 140px">
 | |
|         <select name="type" lay-filter="type">
 | |
|           <option value="">任务类型</option>
 | |
|           {volist name="type" id="vo"}
 | |
|           <option value="{$vo.id}">{$vo.title}</option>
 | |
|           {/volist}
 | |
|         </select>
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 200px">
 | |
|         <select name="project_id" lay-filter="project">
 | |
|           <option value="">所属项目</option>
 | |
|           {volist name="project" id="vo"}
 | |
|           <option value="{$vo.id}">{$vo.name}</option>
 | |
|           {/volist}
 | |
|         </select>
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 100px">
 | |
|         <input type="hidden" name="type" />
 | |
|         <input name="director_uid" style="display: none" value="" />
 | |
|         <input type="text" name="director" placeholder="负责人" readonly class="layui-input employeepicker"
 | |
|           autocomplete="off" />
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 200px">
 | |
|         <input type="text" name="keywords" placeholder="主题/描述内容" class="layui-input" autocomplete="off" />
 | |
|       </div>
 | |
|       <div class="layui-input-inline" style="width: 200px">
 | |
|         <select name="creater_id" lay-filter="creater">
 | |
|           <option value="">创建人</option>
 | |
|           {volist name="creater" id="vo"}
 | |
|           <option value="{$vo.id}">{$vo.name}</option>
 | |
|           {/volist}
 | |
|         </select>
 | |
|       </div>
 | |
|       <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
 | |
|         搜索
 | |
|       </button>
 | |
|       <button type="reset" class="layui-btn layui-btn-primary layui-border-blue" lay-filter="clear">
 | |
|         重置
 | |
|       </button>
 | |
|       <button type="reset" class="layui-btn" lay-filter="onlyme">只看我</button>
 | |
|       <input id="loginusers" type="hidden" value="{$user_info.id}" />
 | |
|     </form>
 | |
|   </div>
 | |
|   <table class="layui-hide" id="test" lay-filter="test"></table>
 | |
| </div>
 | |
| {/block}
 | |
| <!-- /主体 -->
 | |
| 
 | |
| <!-- 脚本 -->
 | |
| {block name="script"}
 | |
| <script>
 | |
|   const moduleInit = [
 | |
|     "tool",
 | |
|     "gouguEdit",
 | |
|     "gouguComment",
 | |
|     "gouguSchedule",
 | |
|     "employeepicker",
 | |
|     "editormd",
 | |
|   ];
 | |
|   function gouguInit() {
 | |
|     var table = layui.table,
 | |
|       form = layui.form,
 | |
|       tool = layui.tool,
 | |
|       employeepicker = layui.employeepicker;
 | |
| 
 | |
|     layui.taskTable = table.render({
 | |
|       elem: "#test",
 | |
|       title: "任务列表",
 | |
|       cellMinWidth: 80,
 | |
|       url: "/task/index/index", //数据接口
 | |
|       page: true, //开启分页
 | |
|       limit: 20,
 | |
|       height: "full-186",
 | |
|       cols: [
 | |
|         [
 | |
|           {
 | |
|             field: "id",
 | |
|             title: "任务编号",
 | |
|             width: 80,
 | |
|             align: "center",
 | |
|             templet: function (d) {
 | |
|               return "T" + d.id;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "type_name",
 | |
|             title: "紧急程度",
 | |
|             width: 80,
 | |
|             align: "center",
 | |
|             templet: function (d) {
 | |
|               var html =
 | |
|                 '<span class="layui-badge bg-priority-' +
 | |
|                 d.priority +
 | |
|                 '">' +
 | |
|                 d.priority_name +
 | |
|                 "</span>";
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "flow_name",
 | |
|             title: "状态",
 | |
|             align: "center",
 | |
|             width: 80,
 | |
|             templet: function (d) {
 | |
|               var html =
 | |
|                 '<span class="layui-badge bg-flow-' +
 | |
|                 d.flow_status +
 | |
|                 '">' +
 | |
|                 d.flow_name +
 | |
|                 "</span>";
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "project_id",
 | |
|             title: "所属项目",
 | |
|             width: 200,
 | |
|             align: "center",
 | |
|             templet: function (d) {
 | |
|               var html =
 | |
|                 '<a class="link-a"' +
 | |
|                 ' data-href="/project/index/view/id/' +
 | |
|                 d.project_id +
 | |
|                 '">' +
 | |
|                 d.belong_project +
 | |
|                 "</a>";
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "title",
 | |
|             title: "任务主题",
 | |
|             rowspan: 2,
 | |
|             templet: function (d) {
 | |
|               var html = "";
 | |
|               if (d.is_new == 1) {
 | |
|                 html += '<span class="new-label">新回复</span>';
 | |
|               }
 | |
|               html +=
 | |
|                 '<a class="open-a" data-href="/task/index/view/id/' +
 | |
|                 d.id +
 | |
|                 '" style="padding-left:10px;">' +
 | |
|                 d.title +
 | |
|                 "</a>";
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "type_name",
 | |
|             title: "任务类型",
 | |
|             width: 100,
 | |
|             align: "center",
 | |
|             templet: function (d) {
 | |
|               var html =
 | |
|                 '<span class="color-status-' +
 | |
|                 d.type +
 | |
|                 '">' +
 | |
|                 d.type_name +
 | |
|                 "</span>";
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "type_name",
 | |
|             title: "任务性质",
 | |
|             width: 220,
 | |
|             align: "center",
 | |
|             templet: function (d) {
 | |
|               var html = '';
 | |
|               if (d.is_bug === 0) {
 | |
|                 html = '<span class="color-status-2">普通任务(TASK)</span>';
 | |
|               } else if (d.is_bug === 1) {
 | |
|                 html = '<span class="color-status-1">问题缺陷(BUG)</span>';
 | |
|               } else if (d.is_bug === 2) {
 | |
|                 html = '<span class="color-status-4">优化建议(OPTIMIZATION)</span>';
 | |
|               }
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "flow_name",
 | |
|             title: "完成进度",
 | |
|             align: "center",
 | |
|             width: 150,
 | |
|             templet: function (d) {
 | |
|               var progress =
 | |
|                 '<div class="layui-progress layui-progress-big" lay-showpercent="true">';
 | |
|               if (d.flow_status == 1) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar layui-bg-red" lay-percent="0%" style="width:0%;text-align:center;">未开始</div>';
 | |
|               } else if (d.flow_status == 2) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar layui-bg-orange" lay-percent="50%" style="width:50%;text-align:center;">进行中</div>';
 | |
|               } else if (d.flow_status == 3) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar layui-bg-green" lay-percent="100%" style="width:100%;text-align:center;">已完成</div>';
 | |
|               } else if (d.flow_status == 4) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar bg-flow-4" lay-percent="100%" style="width:100%;text-align:center;color:#fff">已拒绝</div>';
 | |
|               } else if (d.flow_status == 5) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar bg-flow-5" lay-percent="100%" style="width:100%;text-align:center;color:#fff">已关闭</div>';
 | |
|               } else if (d.flow_status == 6) {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar layui-bg-darkred" lay-percent="0%" style="width:100%;text-align:center;">未解决</div>';
 | |
|               } else {
 | |
|                 progress +=
 | |
|                   '<div class="layui-progress-bar bg-flow-5" lay-percent="0%" style="width:0%;text-align:center;">0%</div>';
 | |
|               }
 | |
|               progress += "</div>";
 | |
|               return progress;
 | |
|             },
 | |
|           },
 | |
|           {
 | |
|             field: "creater_name",
 | |
|             title: "创建人",
 | |
|             align: "center",
 | |
|             width: 80,
 | |
|           },
 | |
|           {
 | |
|             field: "director_name",
 | |
|             title: "负责人",
 | |
|             align: "center",
 | |
|             width: 80,
 | |
|           },
 | |
|           // { field: "assist_admin_names", title: "协作人", width: 200 },
 | |
|           // { field: "cate_name", title: "工作类型", width: 90, align: "center" },
 | |
|           // {
 | |
|           //   field: "plan_hours",
 | |
|           //   title: "预估工时",
 | |
|           //   align: "center",
 | |
|           //   width: 80,
 | |
|           // },
 | |
|           {
 | |
|             field: "end_time",
 | |
|             title: "预计结束日期",
 | |
|             width: 150,
 | |
|             templet: function (d) {
 | |
|               var html = d.end_time;
 | |
|               if (d.delay > 0) {
 | |
|                 html +=
 | |
|                   '<span class="color-status-0 ml-1" style="font-size:12px;text-align:center;">逾期' +
 | |
|                   d.delay +
 | |
|                   "天</span>";
 | |
|               }
 | |
|               return html;
 | |
|             },
 | |
|           },
 | |
|         ],
 | |
|       ],
 | |
|     });
 | |
| 
 | |
|     //选择人弹窗
 | |
|     $("#taskList").on("click", ".employeepicker", function () {
 | |
|       let that = $(this);
 | |
|       let ids_name = that.attr("name") + "_uid";
 | |
|       var ids = $('[name="' + ids_name + '"]').val(),
 | |
|         names = that.val(),
 | |
|         id_array = [],
 | |
|         name_array = [];
 | |
|       if (ids.length > 0) {
 | |
|         id_array = ids.split(",");
 | |
|         name_array = names.split(",");
 | |
|       }
 | |
|       employeepicker.init({
 | |
|         ids: id_array,
 | |
|         names: name_array,
 | |
|         department_url: "/api/index/get_department_tree",
 | |
|         employee_url: "/api/index/get_employee",
 | |
|         callback: function (ids, names, dids, departments) {
 | |
|           $('[name="' + ids_name + '"]').val(ids);
 | |
|           that.val(names);
 | |
|           tableReload();
 | |
|         },
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     //新增
 | |
|     $("#taskList").on("click", ".add-new", function () {
 | |
|       tool.open("/task/index/add");
 | |
|     });
 | |
| 
 | |
|     //查看模式
 | |
|     $("#taskList").on("click", '[data-event="show"]', function () {
 | |
|       layer.msg("开源版只支持列表模式");
 | |
|     });
 | |
| 
 | |
|     //任务类型
 | |
|     $("#taskTab").on("click", "li", function () {
 | |
|       $(this).addClass("tab-this").siblings().removeClass("tab-this");
 | |
|       let type = $(this).data("type");
 | |
|       $("#taskForm").find('[name="type"]').val(type);
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(creater)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(status)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(priority)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(type)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(belong_project)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
|     form.on("select(project)", function (data) {
 | |
|       tableReload();
 | |
|     });
 | |
| 
 | |
|     //监听搜索提交
 | |
|     form.on("submit(webform)", function (data) {
 | |
|       if (data.field.keywords == "") {
 | |
|         return false;
 | |
|       }
 | |
|       tableReload();
 | |
|       return false;
 | |
|     });
 | |
|     $("#taskForm").on("click", '[lay-filter="clear"]', function () {
 | |
|       setTimeout(function () {
 | |
|         tableReload();
 | |
|       }, 10);
 | |
|     });
 | |
|     //只看我按钮代码
 | |
|     $("#taskForm").on("click", '[lay-filter="onlyme"]', function () {
 | |
| 
 | |
|       let loginuser = $("#loginusers").val(); // 从隐藏的输入字段中获取loginuser的值
 | |
| 
 | |
|       $("#taskForm").find('[name="director_uid"]').val(loginuser); // 将director_uid的值设置为loginuser
 | |
| 
 | |
|       let postData = {
 | |
|         type: $("#taskForm").find('[name="type"]').val(),
 | |
|         flow_status: $("#taskForm").find('[name="flow_status"]').val(),
 | |
|         priority: $("#taskForm").find('[name="priority"]').val(),
 | |
|         cate: $("#taskForm").find('[name="cate"]').val(),
 | |
|         delay: $("#taskForm").find('[name="delay"]').val(),
 | |
|         director_uid: $("#taskForm").find('[name="director_uid"]').val(),
 | |
|         project_id: $("#taskForm").find('[name="project_id"]').val(),
 | |
|         keywords: $("#taskForm").find('[name="keywords"]').val(),
 | |
|         belong_project: $("#taskForm").find('[name="belong_project"]').val(),
 | |
|         creater_name: $("#taskForm").find('[name="creater_name"]').val(),
 | |
|         admin_id: $("#taskForm").find('[name="creater_id"]').val(),
 | |
|       };
 | |
|       layui.taskTable.reload({ where: postData });
 | |
|     });
 | |
| 
 | |
| 
 | |
| 
 | |
|     function tableReload() {
 | |
|       let postData = {
 | |
|         type: $("#taskForm").find('[name="type"]').val(),
 | |
|         flow_status: $("#taskForm").find('[name="flow_status"]').val(),
 | |
|         priority: $("#taskForm").find('[name="priority"]').val(),
 | |
|         cate: $("#taskForm").find('[name="cate"]').val(),
 | |
|         delay: $("#taskForm").find('[name="delay"]').val(),
 | |
|         director_uid: $("#taskForm").find('[name="director_uid"]').val(),
 | |
|         project_id: $("#taskForm").find('[name="project_id"]').val(),
 | |
|         keywords: $("#taskForm").find('[name="keywords"]').val(),
 | |
|         belong_project: $("#taskForm").find('[name="belong_project"]').val(),
 | |
|         creater_name: $("#taskForm").find('[name="creater_name"]').val(),
 | |
|         admin_id: $("#taskForm").find('[name="creater_id"]').val(),
 | |
|       };
 | |
|       layui.taskTable.reload({ where: postData });
 | |
|     }
 | |
|   }
 | |
| </script>
 | |
| {/block}
 | |
| <!-- /脚本 --> |