1111
This commit is contained in:
@@ -105,18 +105,28 @@ public class CustomerOrderEntity : IEntity<CustomerOrderEntity>, ICreationAudite
|
||||
/// <summary>
|
||||
/// 附件
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName="F_Attachment", ColumnDescription = "模板文件",ColumnDataType = "nvarchar(200)")]
|
||||
[SugarColumn(IsNullable = true, ColumnName = "F_Attachment", ColumnDescription = "模板文件",
|
||||
ColumnDataType = "nvarchar(200)")]
|
||||
public string F_Attachment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系方式
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName="F_Contact", ColumnDescription = "联系方式",ColumnDataType = "nvarchar(500)")]
|
||||
[SugarColumn(IsNullable = true, ColumnName = "F_Contact", ColumnDescription = "联系方式",
|
||||
ColumnDataType = "nvarchar(500)")]
|
||||
public string F_Contact { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 对接情况
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true, ColumnName = "F_Docking", ColumnDescription = "对接情况",ColumnDataType = "nvarchar(100)")]
|
||||
[SugarColumn(IsNullable = true, ColumnName = "F_Docking", ColumnDescription = "对接情况",
|
||||
ColumnDataType = "nvarchar(100)")]
|
||||
public string F_Docking { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true, ColumnName = "F_Remark", ColumnDescription = "备注",
|
||||
ColumnDataType = "nvarchar(500)")]
|
||||
public string F_Remark { get; set; }
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using WaterCloud.Code;
|
||||
using WaterCloud.DataBase;
|
||||
using WaterCloud.Domain.Entity.CustomerOrder;
|
||||
|
||||
namespace WaterCloud.Service.CustomerOrder;
|
||||
@@ -17,6 +21,69 @@ public class CustomerOrderService:BaseService<CustomerOrderEntity>,IDenpendency
|
||||
var query = repository.IQueryable();
|
||||
if (!string.IsNullOrWhiteSpace(keyword))
|
||||
query = query.Where(oo => oo.F_Name.Contains(keyword));
|
||||
|
||||
//普通用户仅可查看自己的数据
|
||||
if (!currentuser.IsAdmin || !currentuser.IsBoss || !currentuser.IsSuperAdmin || !currentuser.IsSenior)
|
||||
query = query.Where(oo => oo.F_CreatorUserId == currentuser.UserId);
|
||||
|
||||
return await query.OrderBy(oo => oo.F_CreatorTime).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<List<CustomerOrderEntity>> GetPageList(Pagination pagination, string keyword = "")
|
||||
{
|
||||
var query = repository.IQueryable().Where(a => a.F_DeleteMark == false);
|
||||
if (!string.IsNullOrWhiteSpace(keyword))
|
||||
query = query.Where(oo => oo.F_Name.Contains(keyword));
|
||||
|
||||
//普通用户仅可查看自己的数据
|
||||
if (!currentuser.IsAdmin || !currentuser.IsBoss || !currentuser.IsSuperAdmin || !currentuser.IsSenior)
|
||||
query = query.Where(oo => oo.F_CreatorUserId == currentuser.UserId);
|
||||
|
||||
return await query.ToPageListAsync(pagination);
|
||||
}
|
||||
|
||||
public async Task<CustomerOrderEntity> GetForm(string keyValue)
|
||||
{
|
||||
var data = await repository.FindEntity(keyValue);
|
||||
return data;
|
||||
}
|
||||
|
||||
#region 提交数据
|
||||
|
||||
public async Task SubmitForm(CustomerOrderEntity entity, string keyValue)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(keyValue))
|
||||
{
|
||||
entity.F_DeleteMark = false;
|
||||
entity.Create();
|
||||
await repository.Insert(entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((!currentuser.IsAdmin || !currentuser.IsBoss || !currentuser.IsSuperAdmin || !currentuser.IsSenior) &&
|
||||
currentuser.UserId != entity.F_CreatorUserId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
entity.Modify(keyValue);
|
||||
await repository.Update(entity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task DeleteForm(string keyValue)
|
||||
{
|
||||
var ids = keyValue.Split(',');
|
||||
var data = await repository.FindEntity(keyValue);
|
||||
if (data == null)
|
||||
return;
|
||||
if ((!currentuser.IsAdmin || !currentuser.IsBoss || !currentuser.IsSuperAdmin || !currentuser.IsSenior) &&
|
||||
currentuser.UserId != data.F_CreatorUserId)
|
||||
throw new Exception("违规删除");
|
||||
|
||||
await repository.Delete(oo=>ids.Contains(oo.F_Id));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -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 提交数据
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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"></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"></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"></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"></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"></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>
|
||||
@@ -0,0 +1,11 @@
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
|
||||
namespace WaterCloud.Web.Areas.CustomerOrder.Views.CustomerOrder;
|
||||
|
||||
public class Index : PageModel
|
||||
{
|
||||
public void OnGet()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user