215 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <form class="layui-form page-content p-4">
 | |
| 	<h3 class="ms_title">新建任务</h3>
 | |
| 	<table class="layui-table layui-table-form">
 | |
| 		<tr>
 | |
| 			<!-- 任务主题 -->
 | |
| 			<td class="layui-td-gray">任务主题<font> *</font>
 | |
| 			</td>
 | |
| 			<td>
 | |
| 				<input type="text" name="title" lay-verify="required" lay-reqText="请输入任务主题" placeholder="请输入任务主题"
 | |
| 					class="layui-input" value="">
 | |
| 			</td>
 | |
| 
 | |
| 			<!-- 任务优先级 -->
 | |
| 			<td class="layui-td-gray">优先级<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<select name="priority" lay-verify="required" lay-reqText="请选择优先级">
 | |
| 					<option value="1" selected>低</option>
 | |
| 					<option value="2">中</option>
 | |
| 					<option value="3">高</option>
 | |
| 					<option value="4">紧急</option>
 | |
| 				</select>
 | |
| 			</td>
 | |
| 		</tr>
 | |
| 		<tr>
 | |
| 			<!-- 任务性质 -->
 | |
| 			<td class="layui-td-gray">任务性质<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<select name="is_bug" lay-verify="required" lay-reqText="请选择任务性质">
 | |
| 					<option value="2">优化建议(OPTIMIZATION)</option>
 | |
| 					<option value="1">问题缺陷(BUG)</option>
 | |
| 					<option value="0">普通任务(TASK)</option>
 | |
| 				</select>
 | |
| 			</td>
 | |
| 			<!-- 任务类型 -->
 | |
| 			<td class="layui-td-gray">任务类型<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<select name="type" lay-verify="required" lay-reqText="请选择任务类型">
 | |
| 					{volist name="type" id="vo"}
 | |
| 					<option value="{$vo.id}">{$vo.title}</option>
 | |
| 					{/volist}
 | |
| 				</select>
 | |
| 			</td>
 | |
| 		</tr>
 | |
| 		<tr>
 | |
| 			<!-- 工作类型 -->
 | |
| 			<td class="layui-td-gray">工作类型<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<select name="cate" lay-verify="required" lay-reqText="请选择工作类型">
 | |
| 					{volist name="cate" id="vo"}
 | |
| 					<option value="{$vo.id}">{$vo.title}</option>
 | |
| 					{/volist}
 | |
| 				</select>
 | |
| 			</td>
 | |
| 			<!-- 关联项目 -->
 | |
| 			<td class="layui-td-gray">关联项目</td>
 | |
| 			<td>
 | |
| 				<select id="projectId" name="project_id" lay-filter="project_id">
 | |
| 					{volist name=":get_project()" id="v"}
 | |
| 					<option value="{$v.id}">{$v.name}</option>
 | |
| 					{/volist}
 | |
| 				</select>
 | |
| 			</td>
 | |
| 		</tr>
 | |
| 		<tr>
 | |
| 			<!-- 结束日期 -->
 | |
| 			<td class="layui-td-gray-2">预计结束日期<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<input type="text" id="end_time" name="end_time" readonly lay-verify="required" lay-reqText="请选择结束时间"
 | |
| 					placeholder="请选择时间" class="layui-input" value="">
 | |
| 			</td>
 | |
| 			<!-- 工时预估 -->
 | |
| 			<td class="layui-td-gray">工时预估</td>
 | |
| 			<td>
 | |
| 				<input type="text" name="plan_hours" lay-reqText="请填写预估工时" placeholder="请填写预估工时" class="layui-input"
 | |
| 					value="">
 | |
| 			</td>
 | |
| 		</tr>
 | |
| 		<tr>
 | |
| 			<!-- 任务指派给谁 -->
 | |
| 			<td class="layui-td-gray">指派给<span style="color: red"> *</span></td>
 | |
| 			<td>
 | |
| 				<input type="hidden" name="director_uid" readonly value="">
 | |
| 				<input type="text" name="director_name" placeholder="请选择" readonly class="layui-input" value="">
 | |
| 			</td>
 | |
| 			{empty name="$project_id"}
 | |
| 			<td class="layui-td-gray">协作人</td>
 | |
| 			<td>
 | |
| 				<input type="hidden" name="assist_admin_ids" readonly value="">
 | |
| 				<input type="text" name="assist_admin_names" placeholder="请选择" readonly class="layui-input" value="">
 | |
| 			</td>
 | |
| 
 | |
| 			{else/}
 | |
| 			<td class="layui-td-gray">协作人</td>
 | |
| 			<td>
 | |
| 				<input type="hidden" name="project_id" readonly value="{$project_id}">
 | |
| 				<input type="hidden" name="assist_admin_ids" readonly value="">
 | |
| 				<input type="text" name="assist_admin_names" placeholder="请选择" readonly class="layui-input" value="">
 | |
| 			</td>
 | |
| 			{/empty}
 | |
| 		</tr>
 | |
| 	</table>
 | |
| 	<div>
 | |
| 		<div class="ms_title">详细描述<span style="color: red"> *</span></div>
 | |
| 		<div>
 | |
| 			<textarea id="mdContent" style="display:none;"></textarea>
 | |
| 			<div id="docContent"></div>
 | |
| 		</div>
 | |
| 	</div>
 | |
| 	<div style="padding: 10px 0">
 | |
| 		<input type="hidden" name="id" value="0" />
 | |
| 		<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
 | |
| 		<button type="reset" class="layui-btn layui-btn-primary">重置</button>
 | |
| 	</div>
 | |
| </form>
 | |
| 
 | |
| <script>
 | |
| 	function openInit() {
 | |
| 		const form = layui.form, layer = layui.layer, editor = layui.editormd, tool = layui.tool, laydate = layui.laydate, dropdown = layui.dropdown, employeepicker = layui.employeepicker;
 | |
| 
 | |
| 		//select按照倒序排列数据显示
 | |
| 		// 获取<select>元素
 | |
| 		const projectIdSelect = document.getElementById("projectId");
 | |
| 		// 获取所有<option>元素
 | |
| 		const options = Array.from(projectIdSelect.options);
 | |
| 		// 按照value属性对<option>元素进行降序排序
 | |
| 		options.sort((a, b) => b.value - a.value);
 | |
| 		// 清除<select>元素的内容
 | |
| 		projectIdSelect.innerHTML = '';
 | |
| 		// 将排序后的<option>元素添加回<select>元素
 | |
| 		options.forEach(option => projectIdSelect.appendChild(option));
 | |
| 		// 设置第一个显示的<option>元素为默认选择
 | |
| 		projectIdSelect.selectedIndex = 0;
 | |
| 
 | |
| 		//渲染编辑器
 | |
| 		form.render();
 | |
| 		var edit = editor.render('docContent', {
 | |
| 			markdown: $('#mdContent').val(),
 | |
| 			imageUploadURL: "/api/index/md_upload",
 | |
| 			lineNumbers: false,
 | |
| 			toolbarIcons: function () {
 | |
| 				return [
 | |
| 					"undo", "redo", "bold", "del", "italic", "quote", "h1", "h2", "h3", "h4", "h5",
 | |
| 					"list-ul", "list-ol", "hr", "link", "reference-link", "image", "code", "code-block", "table", "watch", "fullscreen"
 | |
| 				];
 | |
| 			},
 | |
| 			// height: window.innerHeight - 500,
 | |
| 		});
 | |
| 
 | |
| 		// 预计结束日期为当前时间+2T
 | |
| 		var currentDate = new Date();
 | |
| 		currentDate.setDate(currentDate.getDate() + 2);
 | |
| 		var currentDateTime = currentDate.toISOString().slice(0, 10); 
 | |
| 		$('#end_time').val(currentDateTime);
 | |
| 
 | |
| 		//日期范围
 | |
| 		laydate.render({
 | |
| 			elem: '#end_time'
 | |
| 		});
 | |
| 
 | |
| 		//选择负责人弹窗
 | |
| 		$('.page-content').on('click', '[name="director_name"]', function () {
 | |
| 			var ids = $('[name="director_uid"]').val(), names = $('[name="director_name"]').val();
 | |
| 			employeepicker.init({
 | |
| 				ids: ids,
 | |
| 				names: names,
 | |
| 				type: 0,
 | |
| 				department_url: "/api/index/get_department_tree",
 | |
| 				employee_url: "/api/index/get_employee",
 | |
| 				callback: function (ids, names, dids, departments) {
 | |
| 					$('[name="director_uid"]').val(ids);
 | |
| 					$('[name="director_name"]').val(names);
 | |
| 				}
 | |
| 			});
 | |
| 		});
 | |
| 
 | |
| 
 | |
| 		//选择协作人人弹窗
 | |
| 		$('.page-content').on('click', '[name="assist_admin_names"]', function () {
 | |
| 			var ids = $('[name="assist_admin_ids"]').val(), names = $('[name="assist_admin_names"]').val(), assist_admin_id_array = [], assist_admin_name_array = [];
 | |
| 			if (ids.length > 0) {
 | |
| 				assist_admin_id_array = ids.split(',');
 | |
| 				assist_admin_name_array = names.split(',');
 | |
| 			}
 | |
| 			employeepicker.init({
 | |
| 				ids: assist_admin_id_array,
 | |
| 				names: assist_admin_name_array,
 | |
| 				department_url: "/api/index/get_department_tree",
 | |
| 				employee_url: "/api/index/get_employee",
 | |
| 				type: 1,
 | |
| 				callback: function (ids, names, dids, departments) {
 | |
| 					$('[name="assist_admin_ids"]').val(ids);
 | |
| 					$('[name="assist_admin_names"]').val(names);
 | |
| 				}
 | |
| 			});
 | |
| 		});
 | |
| 
 | |
| 		//监听提交
 | |
| 		form.on('submit(webform)', function (data) {
 | |
| 			let callback = function (e) {
 | |
| 				layer.msg(e.msg);
 | |
| 				if (e.code == 0) {
 | |
| 					tool.close(1000);
 | |
| 					if (layui.taskTable) {
 | |
| 						layui.taskTable.reload();
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			tool.post("/task/index/add", data.field, callback);
 | |
| 			tool.close(500);
 | |
| 			return false;
 | |
| 		});
 | |
| 
 | |
| 	}
 | |
| 
 | |
| </script> |