2025-03-31 17:36:49 +08:00

516 lines
23 KiB
Cheetah

{{template "header"}}
<div class="edit-box">
<form class="layui-form">
{{.CsrfTokenField}}
<input type="hidden" id="ID" name="ID" value="{{.Item.ID}}" />
<div class="layui-tab-content" style="padding-top: 0;">
<div class="layui-tab-item layui-show">
<!-- <div class="layui-card">
<div class="layui-card-header">客户信息</div>
<div class="layui-card-body">
<div class="layui-form-item">
<div class="layui-form-label">选择客户</div>
<div class="layui-input-inline" id="CustomerID" style="width: 240px;"></div>
</div>
</div>
</div> -->
<div class="layui-card">
<div class="layui-card-header layui-card-header-slipt">客户信息</div>
<div class="layui-card-body">
<div class="layui-form-item">
<div class="layui-form-label">选择客户</div>
<div class="layui-input-inline">
<button type="button" id="selectCustomer"
class="layui-btn layui-btn-primary layui-border">
<i class="layui-icon layui-icon-search"></i>
选择数据
</button>
</div>
<div class="layui-form-label">客户编号</div>
<div class="layui-input-inline">
<input type="text" id="CustomerID" name="CustomerID" value="{{.Item.CustomerID}}"
lay-verify="required" readonly autocomplete="off" placeholder="请输入客户编号"
class="layui-input" />
</div>
<div class="layui-form-label">客户名称</div>
<div class="layui-input-inline">
<input type="text" id="CustomerName" name="CustomerName" value="{{.Item.CustomerName}}"
readonly autocomplete="off" placeholder="请输入客户名称" class="layui-input" />
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">项目信息</div>
<div class="layui-card-body">
{{if .Item.ID}}
<div class="layui-form-item">
<div class="layui-form-label">编号</div>
<div class="layui-form-label" style="width:400px;text-align:left;">
{{.Item.ID}}
</div>
</div>
{{end}}
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline">
<input type="text" id="Name" name="Name" value="{{.Item.Name}}" lay-verify="required"
autocomplete="off" placeholder="请输入名称" class="layui-input" style="width:700px;" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline" style="width:600px;">
{{range .Statuses}}
{{if.Selected}}
<input type="radio" name="Status" value="{{.Value}}" title="{{.Name}}" checked>
{{else}}
<input type="radio" name="Status" value="{{.Value}}" title="{{.Name}}">
{{end}}
{{end}}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-inline">
<input type="text" id="StartAt" name="StartAt" value="{{.Item.StartAt}}"
lay-verify="required" autocomplete="off" placeholder="请输入名称" class="layui-input" />
</div>
<label class="layui-form-label">结束时间</label>
<div class="layui-input-inline">
<input type="text" id="EndAt" name="EndAt" value="{{.Item.EndAt}}" lay-verify="required"
autocomplete="off" placeholder="请输入名称" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">总金额</label>
<div class="layui-input-inline">
<input type="text" id="TotalMoney" name="TotalMoney" value="{{.Item.TotalMoney}}"
lay-verify="required" autocomplete="off" placeholder="请输入总金额" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-inline">
<textarea id="Description" name="Description" class="layui-textarea"
style="width: 600px; height: 60px;">{{.Item.Description}}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料</label>
<div class="layui-input-inline" style="width: auto;">
{{template "upload_mutil" .Item.ProjectFiles}}
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">项目团队</div>
<div class="layui-card-body">
<div class="layui-form-item">
<div class="layui-form-label">项目经理</div>
<div class="layui-input-inline" id="ManagerID" style="width: 400px;"></div>
<div class="layui-form-label">项目成员</div>
<div class="layui-input-inline" id="Members" style="width: 400px;"></div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">申请信息</div>
<div class="layui-card-body">
<div class="layui-form-item">
<div class="layui-form-label">申请人</div>
<div class="layui-input-inline" id="ApplyUserID" style="width: 400px;"></div>
<label class="layui-form-label">申请时间</label>
<div class="layui-input-inline">
<input type="text" id="ApplyAt" name="ApplyAt" value="{{.Item.ApplyAt}}"
lay-verify="required" autocomplete="off" class="layui-input" />
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">其他</div>
<div class="layui-card-body">
{{if .Item.ID}}
<div class="layui-form-item">
<div class="layui-form-label">创建</div>
<div class="layui-form-label" style="width:400px;text-align:left;">
{{.Item.CreatedName}}
({{dateFormat .Item.CreatedAt}})
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">更新</div>
<div class="layui-form-label" style="width:400px;text-align:left;">
{{.Item.UpdatedName}}
({{dateFormat .Item.UpdatedAt}})
</div>
</div>
{{end}}
</div>
</div>
</div>
</div>
<div class="layui-form-item layui-fixbar btn-fixbar-box">
<div class="layui-input-block">
{{ submitBtn .AuthorizeMenus "save"}}
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm" lay-on="close">
<i class="layui-icon layui-icon-close"></i>关闭
</button>
</div>
</div>
</form>
</div>
{{define "css"}}
<style>
.layui-body {
padding: 15px;
left: 0;
}
.loader::after {
content: '';
}
</style>
{{end}}
{{define "js"}}
<script>
layui.use(['table', 'form', 'jquery', 'iconPicker', 'laydate', 'dtree', 'xmSelect', "util"], function () {
let $ = layui.jquery;
let table = layui.table;
let form = layui.form;
let iconPicker = layui.iconPicker;
let dtree = layui.dtree;
let xmSelect = layui.xmSelect;
let util = layui.util;
let laydate = layui.laydate;
/**开始时间 */
laydate.render({
elem: '#StartAt',
type: 'date',
value: '{{today}}',
});
/**截止时间 */
laydate.render({
elem: '#EndAt',
type: 'date',
value: '{{threeMonth}}',
});
laydate.render({
elem: '#ApplyAt',
type: 'date',
value: '{{today}}',
});
// 表单提交
form.on('submit(save)', function (data) {
$.ajax({
url: '/project/save',
type: 'post',
dataType: 'json',
data: data.field,
success: function (result) {
if (result.success) {
layer.msg(result.msg, { icon: 1, time: 1000 }, function () {
parent.layer.close(parent.layer.getFrameIndex(window.name)); // 关闭当前页
parent.layui.table.reload("tablelist", {
page: { curr: 1 },
});
});
} else {
parent.layer.msg(result.msg, { icon: 2 })
}
}
});
return false;
});
// 事件绑定
util.on("lay-on", {
"close": function () {
window.parent.layer.close(parent.layer.getFrameIndex(window.name));
}
});
//getCustomer();
getUser();
// function getCustomer() {
// $.ajax({
// url: '/customer/xmselect',
// type: 'post',
// dataType: 'json',
// headers: { 'X-CSRF-Token': $('#csrf_token').val() },
// success: function (res) {
// xmSelect.render({
// el: '#CustomerID',
// // 工具栏
// radio: true,
// toolbar: {
// show: true
// },
// tips: '请选择客户',
// filterable: true,
// data: res,
// name: 'CustomerID',
// initValue: ['{{.Item.CustomerID}}'],
// on: function (data) { },
// });
// },
// error: function (err) {
// // 处理请求错误
// console.log('请求出错:', err);
// }
// });
// }
function getUser() {
let array = '{{.Item.Members}}';
$.ajax({
url: '/system/user/data?type=xmselect',
type: 'post',
dataType: 'json',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
success: function (res) {
xmSelect.render({
el: '#ApplyUserID',
// 工具栏
radio: true,
toolbar: {
show: true
},
tips: '请选择申请人',
filterable: true,
data: res,
name: 'ApplyUserID',
initValue: ['{{.Item.ApplyUserID}}'],
on: function (data) { },
});
xmSelect.render({
el: '#ManagerID',
// 工具栏
radio: true,
toolbar: {
show: true
},
tips: '请选择项目经理',
filterable: true,
data: res,
name: 'ManagerID',
initValue: ['{{.Item.ManagerID}}'],
on: function (data) { },
});
xmSelect.render({
el: '#Members',
// 工具栏
toolbar: {
show: true
},
tips: '请选择项目成员',
filterable: true,
data: res,
name: 'Members',
initValue: array.split(','),
on: function (data) { },
});
},
error: function (err) {
// 处理请求错误
console.log('请求出错:', err);
}
});
}
let customerLayer;
$('#selectCustomer').on('click', function () {
customerLayer = layer.open({
type: 1, // page 层类型
area: ['70%', '90%'],
title: '选择数据',
scrollbar: false,
shade: 0.2, // 遮罩透明度
shadeClose: false, // 点击遮罩区域,关闭弹层
maxmin: false, // 允许全屏最小化
anim: 0, // 0-6 的动画形式,-1 不开启
content: '<table id="customer_list" lay-filter="customer_list"></table>',
success: function (layero, index, that) {
// layero 弹层的最外层元素的 jQuery 对象
// index 弹层的索引值
// that 弹层内部原型链中的 this --- 2.8+
loadCustomerList();
}
});
});
function loadCustomerList() {
table.render({
elem: '#customer_list',
url: "/customer/list",
method: "POST",
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
//height: 'full',
height: function () {
return $(window).height() - 135;
},
page: true,
cols: [[
{ field: 'name', title: '名称', align: 'left', fixed: 'left', width: 200 },
{ field: 'sid', title: '编号', align: 'left', width: 180 },
{ field: 'category_name', title: '类别', align: 'left', width: 100 },
{ field: 'source_name', title: '来源', align: 'left', width: 100 },
{
field: 'status', title: '状态', align: 'center', width: 90, templet: function (row) {
switch (row.status) {
case 0: return '<span style="color:green;">正常</span>';
case -1: return '<span style="color:red;">删除</span>';
default: return '其它';
}
return '';
}
},
{ field: 'contact_name', title: '联系人姓名', align: 'left', width: 120 },
{ field: 'contact_phone', title: '联系人手机', align: 'left', width: 120 },
{ field: 'address', title: '地址', align: 'left', width: 200 },
{ field: 'sort', title: '排序', align: 'center', width: 80 },
]],
skin: 'line',
defaultToolbar: []
});
}
// 行单击事件( 双击事件为: rowDouble )
table.on('row(customer_list)', function (obj) {
var data = obj.data; // 获取当前行数据
$('#CustomerID').val(data.sid);
$('#CustomerName').val(data.name);
layer.close(customerLayer);
});
// let sysUserLayer;
// let projectUserList = "project_user_list"
// $('#selectProjectUser').on('click', function () {
// sysUserLayer = layer.open({
// type: 1, // page 层类型
// area: ['70%', '90%'],
// title: '选择数据',
// scrollbar: false,
// shade: 0.2, // 遮罩透明度
// shadeClose: false, // 点击遮罩区域,关闭弹层
// maxmin: false, // 允许全屏最小化
// anim: 0, // 0-6 的动画形式,-1 不开启
// content: '<table id="' + projectUserList + '" lay-filter="' + projectUserList + '"></table>',
// success: function (layero, index, that) {
// // layero 弹层的最外层元素的 jQuery 对象
// // index 弹层的索引值
// // that 弹层内部原型链中的 this --- 2.8+
// loadUserList(projectUserList);
// }
// });
// });
// table.on('row(' + projectUserList + ')', function (obj) {
// var data = obj.data; // 获取当前行数据
// console.log(data);
// $('#ManagerID').val(data.id);
// $('#ManagerName').val(data.username);
// layer.close(sysUserLayer);
// });
// let applyUserList = "apply_user_list"
// $('#selectApplyUser').on('click', function () {
// sysUserLayer = layer.open({
// type: 1, // page 层类型
// area: ['70%', '90%'],
// title: '选择数据',
// scrollbar: false,
// shade: 0.2, // 遮罩透明度
// shadeClose: false, // 点击遮罩区域,关闭弹层
// maxmin: false, // 允许全屏最小化
// anim: 0, // 0-6 的动画形式,-1 不开启
// content: '<table id="' + applyUserList + '" lay-filter="' + applyUserList + '"></table>',
// success: function (layero, index, that) {
// // layero 弹层的最外层元素的 jQuery 对象
// // index 弹层的索引值
// // that 弹层内部原型链中的 this --- 2.8+
// loadUserList(applyUserList);
// }
// });
// });
// table.on('row(' + applyUserList + ')', function (obj) {
// var data = obj.data; // 获取当前行数据
// $('#ApplyUserID').val(data.id);
// $('#ApplyUserName').val(data.username);
// layer.close(sysUserLayer);
// });
// function loadUserList(elem) {
// table.render({
// elem: '#' + elem,
// url: "/system/user/list",
// method: "POST",
// headers: { 'X-CSRF-Token': $('#csrf_token').val() },
// height: 'full',
// page: true,
// cols: [[
// { field: 'email', title: '邮箱', align: 'left', width: 180 },
// { field: 'username', title: '用户名', align: 'left', width: 100 },
// {
// field: 'avatar', title: '头像', align: 'center', width: 90, templet: function (d) {
// if (d.avatar === 0 || d.avatar === undefined || d.avatar === '') { return ''; }
// if (d.avatar === '/statics/admin/images/avatar.jpg') {
// return '<img src="/statics/admin/images/avatar.jpg" width=30 height=30 />';
// }
// return '<img src="' + d.avatar + '" width=30 height=30 />';
// }
// },
// { field: 'department_name', title: '部门', align: 'left', width: 100 },
// { field: 'role_name', title: '角色', align: 'left', width: 100 },
// {
// field: 'gender', title: '性别', align: 'center', width: 50, templet: function (d) {
// if (d.gender == 0) {
// return '未知';
// } else if (d.gender == 1) {
// return '男';
// } else if (d.gender == 2) {
// return '女';
// }
// }
// },
// {
// field: 'status', title: '状态', align: 'center', width: 90, templet: function (row) {
// switch (row.status) {
// case 0: return '正常';
// case -1: return '删除';
// default: return '其它';
// }
// return '';
// }
// },
// ]],
// skin: 'line',
// defaultToolbar: []
// });
// }
});
</script>
{{end}}
{{template "footer" .}}