This commit is contained in:
zel
2025-03-09 03:46:28 +08:00
parent fb8c34f604
commit 7c4b851b43
8 changed files with 463 additions and 11 deletions

View File

@@ -0,0 +1,78 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using WaterCloud.Code;
using WaterCloud.Domain.Entity.CustomerOrder;
using WaterCloud.Service.CustomerOrder;
namespace WaterCloud.Web.Areas.CustomerOrder.Controllers;
[Area("CustomerOrder")]
public class CustomerOrderController : BaseController
{
public CustomerOrderService CustomerOrderService { get; set; }
[HttpGet]
[HandlerAjaxOnly]
public async Task<ActionResult> GetPageList(Pagination pagination, string keyword)
{
if (string.IsNullOrEmpty(pagination.field))
{
pagination.order = "desc";
pagination.field = "F_CreatorTime";
}
var data = await CustomerOrderService.GetPageList(pagination, keyword);
return Success(pagination.records, data);
}
[HttpGet]
[HandlerAjaxOnly]
public async Task<ActionResult> GetListJson(string keyword)
{
var data = await CustomerOrderService.GetList(keyword);
return Content(data.ToJson());
}
[HttpGet]
[HandlerAjaxOnly]
public async Task<ActionResult> GetFormJson(string keyValue)
{
var data = await CustomerOrderService.GetForm(keyValue);
return Content(data.ToJson());
}
#region
[HttpPost]
[HandlerAjaxOnly]
public async Task<ActionResult> SubmitForm(CustomerOrderEntity entity, string keyValue)
{
try
{
await CustomerOrderService.SubmitForm(entity, keyValue);
return await Success("操作成功。", "", keyValue);
}
catch (Exception ex)
{
return await Error(ex.Message, "", keyValue);
}
}
[HttpPost]
[HandlerAjaxOnly]
[HandlerAuthorize]
public async Task<ActionResult> DeleteForm(string keyValue)
{
try
{
await CustomerOrderService.DeleteForm(keyValue);
return await Success("操作成功。", "", keyValue, DbLogType.Delete);
}
catch (Exception ex)
{
return await Error(ex.Message, "", keyValue, DbLogType.Delete);
}
}
#endregion
}

View File

@@ -0,0 +1,80 @@
@{
ViewBag.Title = "Form";
Layout = "~/Views/Shared/_Form.cshtml";
}
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-form layuimini-form" lay-filter="adminform">
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">上级</label>
<div class="layui-input-block">
<select id="F_ParentId" name="F_ParentId" lay-filter="F_ParentId" lay-verify="required" lay-search>
<option value="0">父级</option>
</select>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">类别名称</label>
<div class="layui-input-block">
<input type="text" id="F_FullName" name="F_FullName" autocomplete="off" maxlength="50" lay-verify="required" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">排序</label>
<div class="layui-input-block">
<input type="number" pattern="[0-9]*" id="F_SortCode" name="F_SortCode" lay-verify="required|number" oninput="if(value.length>8)value=value.slice(0,8)" value="99" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input type="text" id="F_Description" name="F_Description" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">链接地址</label>
<div class="layui-input-block">
<input type="text" id="F_LinkUrl" name="F_LinkUrl" autocomplete="off" lay-verify="url" maxlength="255" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">图片地址</label>
<div class="layui-input-block">
<input type="text" id="F_ImgUrl" name="F_ImgUrl" autocomplete="off" lay-verify="url" maxlength="255" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">Seo标题</label>
<div class="layui-input-block">
<input type="text" id="F_SeoTitle" name="F_SeoTitle" autocomplete="off" maxlength="255" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">Seo关键字</label>
<div class="layui-input-block">
<input type="text" id="F_SeoKeywords" name="F_SeoKeywords" autocomplete="off" maxlength="255" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">Seo描述</label>
<div class="layui-input-block">
<input type="text" id="F_SeoDescription" name="F_SeoDescription" autocomplete="off" maxlength="255" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">选项</label>
<div class="layui-input-block">
<input id="F_IsTop" name="F_IsTop" type="checkbox" value="true" title="是否置顶">
<input id="F_IsHot" name="F_IsHot" type="checkbox" value="true" title="是否热门">
<input id="F_EnabledMark" name="F_EnabledMark" type="checkbox" value="true" checked="checked" title="是否启用">
</div>
</div>
<div class="layui-form-item layui-hide">
<button class="layui-btn site-demo-active" lay-submit id="submit" lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
</div>
</body>

View File

@@ -0,0 +1,203 @@
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Index.cshtml";
}
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset layui-hide" id="searchField">
<div>
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">关键字:</label>
<div class="layui-input-inline">
<input type="text" id="txt_keyword" name="txt_keyword" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
lay-filter="data-search-btn"><i class="layui-icon">&#xe615;</i> 搜 索
</button>
</div>
</div>
</form>
</div>
</fieldset>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button id="NF-add" name="NF-add" authorize class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe654;</i>新增</button>
<button id="NF-edit" name="NF-edit" authorize class="layui-btn layui-btn-sm layui-btn-warm layui-hide"
lay-event="edit"><i class="layui-icon">&#xe642;</i>修改
</button>
<button id="NF-delete" name="NF-delete" authorize
class="layui-btn layui-btn-sm layui-btn-danger layui-hide" lay-event="delete"><i
class="layui-icon">&#xe640;</i>删除
</button>
<button id="NF-details" name="NF-details" authorize
class="layui-btn layui-btn-sm layui-btn-normal layui-hide" lay-event="details"><i
class="layui-icon">&#xe60b;</i>查看
</button>
</div>
</script>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
<script type="text/html" id="currentTableBar">
<a id="NF-edit" authorize class="layui-btn layui-btn-xs layui-btn-warm" lay-event="edit">修改</a>
<a id="NF-delete" authorize class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delete">删除</a>
<a id="NF-details" authorize class="layui-btn layui-btn-xs layui-btn-normal" lay-event="details">查看</a>
</script>
</div>
</div>
<script>
layui.use(['jquery', 'form', 'common', 'table', 'commonTable', 'layer'], function () {
var $ = layui.jquery,
form = layui.form,
layer = layui.layer,
table = layui.table,
commonTable = layui.commonTable,
common = layui.common;
//行操作权限控制(js是值传递)
currentTableBar.innerHTML = common.authorizeButtonNew(currentTableBar.innerHTML);
toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML);
wcLoading.close();
var options = {
elem: '#currentTableId',
url: '/CustomerOrder/CustomerOrder/GetPageList',
treeIdName: 'F_Id', // id字段名称
cols: [[
{type: "radio", width: 50, fixed: 'left'},
{field: 'F_Name', title: '客户名称', width: 200, filter: true},
{
field: 'F_CooperationTime',
title: '开始合作时间',
minWidth: 160,
sort: true,
filter: {type: 'date[yyyy/MM/dd HH:mm:ss]'}
},
{
field: 'F_PostTime',
title: '发帖时间',
minWidth: 160,
sort: true,
filter: {type: 'date[yyyy/MM/dd HH:mm:ss]'}
},
{field: 'F_OrderState', title: '合作进展', width: 120,filter:true,
templet:function (d){
if (d.F_OrderState == 1) {
return "持续合作";
} else if (d.F_FileType == 0) {
return "断续";
}
else
return "未知进展";
}
},
{field: 'F_ContactPerson', title: '对接人', width: 120},
{field: 'F_Contact', title: '联系方式', width: 120},
{field: 'F_Docking', title: '对接情况', width: 120},
{
field: 'F_CreatorTime',
title: '创建时间',
minWidth: 160,
sort: true,
filter: {type: 'date[yyyy/MM/dd HH:mm:ss]'}
},
{field: 'F_CreatorUserId', title: '创建人', width: 120},
{field: 'F_Remark', title: '备注', width: 120},
{title: '操作', width: 160, toolbar: '#currentTableBar', align: "center", fixed: 'right'}//插件没有fixed参数
]],
};
commonTable.rendertreetable(options);
form.on('submit(data-search-btn)', function (data) {
queryJson = data.field.txt_keyword;
options.where = { keyword: queryJson };
commonTable.rendertreetable(options);
return false;
});
var oneList = ["NF-edit", "NF-details", "NF-delete"];//选择1条显示
commonTable.tableRowClick("radio", "currentTableFilter", "currentTableId", oneList);
table.on('toolbar(currentTableFilter)', function (obj) {
var data = table.checkStatus('currentTableId').data;
var id = data.length > 0 ? data[0].F_Id : null;
if (obj.event === 'add') { // 监听添加操作
common.modalOpen({
title: "新增",
url: "/CustomerOrder/CustomerOrder/Form",
width: "500px",
height: "500px",
});
}
else if (obj.event === 'delete') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
var ids = [];
for (var i = 0; i < data.length; i++) {
ids.push(data[i].F_Id);
}
common.deleteForm({
url: "/CustomerOrder/CustomerOrder/DeleteForm",
param: { keyValue: ids.join(',') },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'edit') {
var data = table.checkStatus('currentTableId').data;
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
if (data.length > 1) {
common.modalMsg("只能选择一条编辑", "warning");
return false;
}
common.modalOpen({
title: "编辑界面",
url: "/CustomerOrder/CustomerOrder/Form?keyValue=" + id,
width: "500px",
height: "500px",
dataJson: data[0],
});
}
else if (obj.event === 'details') {
var data = table.checkStatus('currentTableId').data;
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
if (data.length > 1) {
common.modalMsg("只能选择一条查看", "warning");
return false;
}
common.modalOpen({
title: "查看界面",
url: "/CustomerOrder/CustomerOrder/Details?keyValue=" + id,
width: "500px",
height: "500px",
dataJson: data[0],
btn: []
});
}
else if (obj.event === 'TABLE_SEARCH') {
var _that = $("#searchField");
if (_that.hasClass("layui-hide")) {
_that.removeClass('layui-hide');
} else {
_that.addClass('layui-hide');
}
table.resize();
}
return false;
});
});
</script>

View File

@@ -0,0 +1,11 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WaterCloud.Web.Areas.CustomerOrder.Views.CustomerOrder;
public class Index : PageModel
{
public void OnGet()
{
}
}

View File

@@ -81,6 +81,9 @@
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Areas\CustomerOrder\Views\CustomerOrder\Index.cshtml.cs" />
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties /></VisualStudio></ProjectExtensions>

View File

@@ -14,7 +14,7 @@
"DBProvider": "MySql", //SqlServer //Oracle
"DBConnectionString": "server=192.168.31.37;user id=root;password=zhuyunyu;database=water",
"DBCommandTimeout": 180, // 数据库超时时间,单位秒
"IsInitDb": false, //是否初始化数据库
"IsInitDb": true, //是否初始化数据库
"IsSeedData": false, //是否初始化数据库数据
"CacheProvider": "Redis", // 缓存使用方式 Redis/Memory
"RedisConnectionString": "192.168.31.37:6379,password=zhuyunyu", //docker部署 172.17.0.1