195 lines
6.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<form class="layui-form page-content p-4" lay-filter="webform">
<input type="hidden" name="id" id="id" value="<?php echo isset($detail['id']) ? $detail['id'] : ''; ?>" />
<h3 class="h3-title">处理工单</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">分派处理人<font>*</font>
</td>
<td>
<select name="solve" lay-verify="required" lay-reqText="请选择处理人" class="layui-select" lay-search=""
lay-filter="solve"<?php if(isset($detail['status']) && ($detail['status']==2 || $detail['status']==3)) echo 'disabled'; ?>>
<option value="">请选择处理人</option>
</select>
</td>
<td class="layui-td-gray-2">工单状态<font>*</font>
</td>
<td colspan="3">
<select name="status" lay-verify="required" lay-reqText="请选择工单状态" class="layui-select" id="status-select"
<?php if(isset($detail['status']) && $detail['status']==3) echo 'disabled'; ?>>
<option value="">请选择工单状态</option>
<option value="1" <?php if(isset($detail['status']) && $detail['status']==1) echo 'selected' ; ?> <?php if(isset($detail['status']) && $detail['status']==2) echo 'disabled'; ?>>解决中</option>
<option value="2" <?php if(isset($detail['status']) && $detail['status']==2) echo 'selected' ; ?> <?php if(isset($detail['status']) && $detail['status']==2) echo 'disabled'; ?>>已解决</option>
<option value="3" <?php if(isset($detail['status']) && $detail['status']==3) echo 'selected' ; ?>>已关闭</option>
</select>
</td>
</tr>
</table>
<?php if (!isset($detail['status']) || $detail['status'] != 3): ?>
<div class="pt-1">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
立即提交
</button>
</div>
<?php endif; ?>
<h3 class="h3-title">问题简述</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">项目问题</td>
<td>
<div id="workorder-content">
<?= $detail['content'] ?>
</div>
</td>
<td class="layui-td-gray-2">备注</td>
<td>{$detail.remark}</td>
</tr>
</table>
</form>
<script>
//判断工单状态
// 判断工单状态,禁用表单项
document.addEventListener("DOMContentLoaded", function () {
var detail = <?php echo json_encode(isset($detail) ? $detail : (object)[]); ?>;
var status = parseInt(detail.status, 10);
// 获取所有表单元素
var formElem = document.querySelector("form.layui-form");
var allInputs = formElem ? formElem.querySelectorAll("input, select, textarea, button[lay-submit]") : [];
// 如果status为3或4禁用所有表单项
if (status === 3 || status === 4) {
allInputs.forEach(function (el) {
// 只允许工单状态选择4
if (el.name === "status") {
// 只保留4选项
Array.from(el.options).forEach(function(opt) {
if (opt.value !== "4" && opt.value !== "") {
opt.disabled = true;
opt.style.display = "none";
} else if (opt.value === "4") {
opt.selected = true;
}
});
el.disabled = false;
} else {
el.disabled = true;
}
});
}
// 如果status为4全部禁用包括工单状态
if (status === 4) {
allInputs.forEach(function (el) {
el.disabled = true;
});
}
});
// 获取URL参数id
function getQueryId() {
var match = window.location.pathname.match(/\/edit\/id\/(\d+)/);
return match ? match[1] : "";
}
var id = getQueryId();
// 赋值给input如果不是php渲染也可保留此段防止页面未渲染id时赋值
document.addEventListener("DOMContentLoaded", function () {
var idInput = document.getElementById("id");
if (idInput && !idInput.value) {
idInput.value = id;
}
});
layui.use(["form", "layer"], function () {
var form = layui.form,
layer = layui.layer;
layer.photos({
photos: '#workorder-content',
anim: 5
});
// 渲染处理人下拉框并设置默认值
// var detail = <?php echo json_encode(isset($detail) ? $detail : (object)[]); ?>;
var detail = <?php echo json_encode(isset($detail) ? $detail : (object)[]); ?>;
fetch("/api/index/getallstaff")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="solve"]');
select.innerHTML = '<option value="">请选择处理人</option>';
data.data.forEach((solve) => {
var option = document.createElement("option");
option.value = solve.id;
option.innerText = solve.name;
// 设置选中
if (detail.solve && String(detail.solve) === String(solve.id)) {
option.selected = true;
}
select.appendChild(option);
console.log('detail.solve:', detail.solve, 'solve.id:', solve.id, 'equal:', String(detail.solve) === String(solve.id));
});
form.render("select");
// 渲染默认值(工单状态)
if (detail && typeof detail.status !== "undefined") {
form.val("webform", {
status: detail.status,
});
}
})
.catch((error) => {
console.error("Error:", error);
});
// 监听提交事件
form.on("submit(webform)", function (data) {
// 发送请求并处理响应
fetch("/workorder/index/edit/" + id, {
method: "POST",
body: JSON.stringify(data.field),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload(); // 刷新父页面
}, 1000);
}
});
return false;
});
});
</script>
<style>
.page-content img {
padding: 15px;
}
.layui-layer-shade {
background-color: rgba(0, 0, 0, 0.5) !important;
}
.pt-1 {
margin-top: 15px;
margin-bottom: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #eee;
width: 100%;
}
.layui-table {
margin-bottom: 20px;
}
</style>