diff --git a/Api/Ewide.Application/Entity/BsHouseInfo.cs b/Api/Ewide.Application/Entity/BsHouseInfo.cs
index 26f7fed..838106f 100644
--- a/Api/Ewide.Application/Entity/BsHouseInfo.cs
+++ b/Api/Ewide.Application/Entity/BsHouseInfo.cs
@@ -401,9 +401,9 @@ namespace Ewide.Application
public int? HouseUsedStatus { get; set; }
///
- /// 1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 4、退回(审核被退回的数据)5、审核中6、审核通过
+ /// -1 退回(审核被退回的数据) 1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 5、审核中6、审核通过
///
- [Comment("1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 4、退回(审核被退回的数据)5、审核中6、审核通过")]
+ [Comment("-1 退回(审核被退回的数据) 1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 5、审核中6、审核通过")]
[Required]
public int State { get; set; }
diff --git a/Api/Ewide.Application/Entity/BsHouseTask.cs b/Api/Ewide.Application/Entity/BsHouseTask.cs
index 1856e29..a316fd1 100644
--- a/Api/Ewide.Application/Entity/BsHouseTask.cs
+++ b/Api/Ewide.Application/Entity/BsHouseTask.cs
@@ -144,7 +144,7 @@ namespace Ewide.Application
///
/// -1:退回0:待处理1:保存待提交2:待审核3:审核通过
///
- [Comment("-1:退回0:待处理1:保存待提交2:待审核3:审核通过")]
+ [Comment("-1:退回0:待处理1:保存待提交2:待审核6:审核通过")]
public int Status { get; set; } = 0;
///
diff --git a/Api/Ewide.Application/Entity/BsHouseTaskCheckRecord.cs b/Api/Ewide.Application/Entity/BsHouseTaskCheckRecord.cs
new file mode 100644
index 0000000..5fdf4e1
--- /dev/null
+++ b/Api/Ewide.Application/Entity/BsHouseTaskCheckRecord.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Ewide.Application
+{
+ [Table("bs_house_task_check_record")]
+ [Comment("房屋任务审核记录表")]
+ public class BsHouseTaskCheckRecord : Core.DEntityBase
+ {
+ ///
+ /// 任务Id
+ ///
+ [Comment("任务Id")]
+ [MaxLength(36)]
+ public string TaskId { get; set; }
+
+ ///
+ /// 通过1;退回-1
+ ///
+ [Comment("通过3;退回-1")]
+ public int PassOrBack { get; set; }
+
+ ///
+ /// 审核内容
+ ///
+ [Comment("审核内容")]
+ [MaxLength(500)]
+ public string Content { get; set; }
+ }
+}
diff --git a/Api/Ewide.Application/Enum/DataStatus.cs b/Api/Ewide.Application/Enum/DataStatus.cs
new file mode 100644
index 0000000..d073a7f
--- /dev/null
+++ b/Api/Ewide.Application/Enum/DataStatus.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Ewide.Application
+{
+ public enum DataStatus
+ {
+ ///
+ /// 审核退回
+ ///
+ [Description("审核退回")]
+ Back = -1,
+
+ ///
+ /// 初始未处理
+ ///
+ [Description("初始未处理")]
+ Init = 0,
+
+ ///
+ /// 暂存
+ ///
+ [Description("暂存")]
+ TempSaved = 1,
+
+ ///
+ /// 已保存,待提交
+ ///
+ [Description("已保存,待提交")]
+ Saved = 2,
+
+ ///
+ /// 已提交,待审核
+ ///
+ [Description("已提交,待审核")]
+ Submited = 3,
+
+ ///
+ /// 审核通过
+ ///
+ [Description("审核通过")]
+ Passed = 6
+ }
+}
diff --git a/Api/Ewide.Application/Ewide.Application.xml b/Api/Ewide.Application/Ewide.Application.xml
index 1aeea1e..15120ae 100644
--- a/Api/Ewide.Application/Ewide.Application.xml
+++ b/Api/Ewide.Application/Ewide.Application.xml
@@ -306,7 +306,7 @@
- 1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 4、退回(审核被退回的数据)5、审核中6、审核通过
+ -1 退回(审核被退回的数据) 1、待建档(需要建档的数据未暂存未保存的)2、暂存(点击了暂存的数据)3、待提交(点击了保存的数据) 5、审核中6、审核通过
@@ -504,6 +504,21 @@
最后提交时间
+
+
+ 任务Id
+
+
+
+
+ 通过1;退回-1
+
+
+
+
+ 审核内容
+
+
bs_house_code主键Id
@@ -539,6 +554,36 @@
是否选中
+
+
+ 审核退回
+
+
+
+
+ 初始未处理
+
+
+
+
+ 暂存
+
+
+
+
+ 已保存,待提交
+
+
+
+
+ 已提交,待审核
+
+
+
+
+ 审核通过
+
+
市住建部门
@@ -1219,6 +1264,21 @@
主管部门
+
+
+ 任务Id
+
+
+
+
+ 通过3;退回-1
+
+
+
+
+ 审核内容
+
+
沉降倾斜
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseInfo/Dto/HouseInfoInput.cs b/Api/Ewide.Application/Service/HouseSafety/HouseInfo/Dto/HouseInfoInput.cs
index cc7174e..bf4200f 100644
--- a/Api/Ewide.Application/Service/HouseSafety/HouseInfo/Dto/HouseInfoInput.cs
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseInfo/Dto/HouseInfoInput.cs
@@ -271,12 +271,21 @@ namespace Ewide.Application
public string CompetentDepartment { get; set; }
#endregion
+ public DataStatus StateDataStatus { get; set; }
+ public int State
+ {
+ get
+ {
+ return (int)StateDataStatus;
+ }
+ }
}
- public class HouseInfoInputAdd
+ public class HouseInfoInputSave
{
public HouseCodeOutput houseCode { get; set; }
public HouseInfoInput houseInfo { get; set; }
public EditHouseTaskInput PatrolInfo { get; set; }
+ public HouseTaskCheckRecordInput TaskCheckRecord { get; set; }
}
}
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseInfo/HouseInfoService.cs b/Api/Ewide.Application/Service/HouseSafety/HouseInfo/HouseInfoService.cs
index bb4125c..a61bc99 100644
--- a/Api/Ewide.Application/Service/HouseSafety/HouseInfo/HouseInfoService.cs
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseInfo/HouseInfoService.cs
@@ -44,34 +44,21 @@ namespace Ewide.Application.Service.HouseSafety.HouseInfo
[HttpPost("/houseInfo/save")]
[UnitOfWork]
[AllowAnonymous]
- public async Task Save([FromBody] HouseInfoInputAdd input)
+ public async Task Save([FromBody] HouseInfoInputSave input)
{
- var houseCode = input.houseCode.Adapt();
- await houseCode.UpdateIncludeAsync(new[] { nameof(BsHouseCode.Address), nameof(BsHouseCode.Lng), nameof(BsHouseCode.Lat) }, true);
+ //根据任务审核记录判断是否是审核操作,从而确定 DataStatus
+ //审核操作,则为 input.TaskCheckRecord.PassOrBackDataStatus
+ //非审核操作,则为 DataStatus.Saved
+ var isCheckAction = input.TaskCheckRecord != null;
+ await InputDataProcess(input, isCheckAction ? input.TaskCheckRecord.PassOrBackDataStatus : DataStatus.Saved);
+ }
- var houseEntity = await _houseInfoRep.DetachedEntities.FirstOrDefaultAsync(h => h.HouseCodeId == input.houseCode.Id);
- var houseInfo = input.houseInfo.Adapt();
- houseInfo.HouseCodeId = input.houseCode.Id;
- if(houseEntity == null)
- {
- houseInfo.Id = Guid.NewGuid().ToString();
- houseInfo.State = 3;
- await houseInfo.InsertAsync();
- }
- else
- {
- houseInfo.Id = houseEntity.Id;
- houseInfo.State = houseEntity.State;
- await houseInfo.UpdateExcludeAsync(new[] { nameof(BsHouseInfo.HouseGrade) }, true) ;
- }
-
- if(houseInfo.State != 6)
- {
- var houseTask = input.PatrolInfo.Adapt();
- houseTask.HouseCodeId = input.houseCode.Id;
- houseTask.Status = 1;
- await houseTask.UpdateExcludeAsync(new string[] { nameof(BsHouseTask.TaskType) }, ignoreNullValues: true);
- }
+ [HttpPost("/houseInfo/submitToCheck")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task SubmitToCheck([FromBody] HouseInfoInputSave input)
+ {
+ await InputDataProcess(input,DataStatus.Submited);
}
[HttpGet("/houseInfo/getByTaskId")]
@@ -121,5 +108,64 @@ WHERE HC.Id=@HouseCodeId", new { houseTask.HouseCodeId }
return houseInfoOutputForDetailPage;
}
+
+ [NonAction]
+ public async Task InputDataProcess(HouseInfoInputSave input,DataStatus dataStatus = DataStatus.Init)
+ {
+ //房屋编码地址/坐标单独更新
+ var houseCode = input.houseCode.Adapt();
+ await houseCode.UpdateIncludeAsync(new[] { nameof(BsHouseCode.Address), nameof(BsHouseCode.Lng), nameof(BsHouseCode.Lat) }, true);
+
+ //获取房屋详情实体,判断是新增还是更新
+ var houseEntity = await _houseInfoRep.DetachedEntities.FirstOrDefaultAsync(h => h.HouseCodeId == input.houseCode.Id);
+
+ //建档审核通过的房屋数据修改时,对应的建档任务Task不处理
+ if (houseEntity.State != 6)
+ {
+ var houseTask = input.PatrolInfo.Adapt();
+ houseTask.HouseCodeId = input.houseCode.Id;
+ //任务没有暂存状态,其他状态与HouseInfo的State一致
+ houseTask.Status = dataStatus == DataStatus.TempSaved ? (int)DataStatus.Saved : (int)dataStatus;
+ await houseTask.UpdateExcludeAsync(new string[] { nameof(BsHouseTask.TaskType) }, ignoreNullValues: true);
+ }
+ //判断房屋建档状态
+ //dataStatus == DataStatus.Saved 若是保存操作 则判断是新增/更新
+ //判断是新增/更新 根据传入参数dataStatus确定
+ input.houseInfo.StateDataStatus = dataStatus == DataStatus.Saved ? (houseEntity == null ? DataStatus.Saved : GetDataStatus(houseEntity.State)) : dataStatus;
+ var houseInfo = input.houseInfo.Adapt();
+ houseInfo.HouseCodeId = input.houseCode.Id;
+
+ if (houseEntity == null)
+ {
+ houseInfo.Id = Guid.NewGuid().ToString();
+ await houseInfo.InsertAsync();
+ }
+ else
+ {
+ houseInfo.Id = houseEntity.Id;
+ await houseInfo.UpdateExcludeAsync(new[] { nameof(BsHouseInfo.HouseGrade) }, true);
+ }
+
+
+ //审核操作则新增一条审核记录
+ if (dataStatus == DataStatus.Back || dataStatus == DataStatus.Passed)
+ {
+ var checkRecord = input.TaskCheckRecord.Adapt();
+ await checkRecord.InsertAsync();
+ }
+ }
+
+ private DataStatus GetDataStatus(int status)
+ {
+ return status switch
+ {
+ -1 => DataStatus.Back,
+ 1 => DataStatus.TempSaved,
+ 2 => DataStatus.Saved,
+ 3 => DataStatus.Submited,
+ 6 => DataStatus.Passed,
+ _ => DataStatus.Init,
+ };
+ }
}
}
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseTask/Dto/HouseTaskInput.cs b/Api/Ewide.Application/Service/HouseSafety/HouseTask/Dto/HouseTaskInput.cs
index 24b2789..1f02d17 100644
--- a/Api/Ewide.Application/Service/HouseSafety/HouseTask/Dto/HouseTaskInput.cs
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseTask/Dto/HouseTaskInput.cs
@@ -113,6 +113,12 @@ namespace Ewide.Application
public string Id { get; set; }
}
+ public class SubmitHouseTaskInput
+ {
+ [Required(ErrorMessage = "任务Id不能为空")]
+ public string TaskId { get; set; }
+ }
+
public class QueryHouseTaskInput : PageInputBase
{
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseTask/HouseTaskService.cs b/Api/Ewide.Application/Service/HouseSafety/HouseTask/HouseTaskService.cs
index 7140f4c..b8340ff 100644
--- a/Api/Ewide.Application/Service/HouseSafety/HouseTask/HouseTaskService.cs
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseTask/HouseTaskService.cs
@@ -47,21 +47,35 @@ LEFT JOIN bs_house_projectinfo Proj ON Proj.Id=HC.ProjectId
LEFT JOIN sys_area_code CA ON CA.Code = Proj.AreaCode
LEFT JOIN sys_area_code RA ON RA.AdCode = SUBSTR(CA.AdCode,1,9)
LEFT JOIN sys_area_code AA ON AA.AdCode = SUBSTR(CA.AdCode,1,6)
-WHERE T.UserID=@UserID";
+WHERE {0}";
var user = await _userManager.CheckUserAsync();
if (user == null) throw Oops.Oh("登录信息丢失");
+
+ var userRoles = await _userManager.GetUserRoleList();
+ var userOrg = await _userManager.GetUserOrgInfo();
var param = new DynamicParameters();
- param.Add("UserID", user.Id);
+ if (userRoles.Where(r => r.Code == Enum.GetName(HouseManagerRole.HouseSecurityManager).ToUnderScoreCase()).Count() > 0)
+ {
+ sql = String.Format(sql, " (T.Status !=3) AND T.UserID=@UserID ");
+ param.Add("UserID", user.Id);
+ }
+
+ if (userRoles.Where(r => r.Code == Enum.GetName(HouseManagerRole.ZoneManager).ToUnderScoreCase()).Count() > 0)
+ {
+ sql = String.Format(sql, " (T.Status=3 OR T.Status=6) AND HC.ZoneId = @ZoneId ");
+ param.Add("ZoneId", userOrg.Id);
+ }
+
return await _dapperRepository.QueryPageDataDynamic(sql, input, param, filterFields: new string[] { "Type", "Address", "HouseCode" });
}
[HttpPost("/houseTask/submit")]
[UnitOfWork]
[AllowAnonymous]
- public async Task Submit([Required] string taskId)
+ public async Task Submit([FromBody] SubmitHouseTaskInput input)
{
//获取任务实体
- var houseTask = await _houseTaskRep.DetachedEntities.FirstOrDefaultAsync(t => t.Id == taskId);
+ var houseTask = await _houseTaskRep.DetachedEntities.FirstOrDefaultAsync(t => t.Id == input.TaskId);
if (houseTask == null) throw Oops.Oh("任务不存在");
houseTask.Status = 2;
houseTask.LastSubmitTime = DateTime.Now;
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordInput.cs b/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordInput.cs
new file mode 100644
index 0000000..497a3a7
--- /dev/null
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordInput.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Ewide.Application
+{
+ public class HouseTaskCheckRecordInput
+ {
+ ///
+ /// 任务Id
+ ///
+ [Required(ErrorMessage = "任务参数有误")]
+ public string TaskId { get; set; }
+
+ ///
+ /// 通过3;退回-1
+ ///
+ [Required(ErrorMessage = "审核结果不能为空")]
+ public int PassOrBack { get; set; }
+
+ public DataStatus PassOrBackDataStatus
+ {
+ get
+ {
+ return PassOrBack switch
+ {
+ -1 => DataStatus.Back,
+ 1 => DataStatus.TempSaved,
+ 2 => DataStatus.Saved,
+ 3 => DataStatus.Submited,
+ 6 => DataStatus.Passed,
+ _ => DataStatus.Init,
+ };
+ }
+ }
+
+ ///
+ /// 审核内容
+ ///
+ [Required(ErrorMessage = "审核内容不能为空")]
+ public string Content { get; set; }
+ }
+}
diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordOutput.cs b/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordOutput.cs
new file mode 100644
index 0000000..bdfa2ab
--- /dev/null
+++ b/Api/Ewide.Application/Service/HouseSafety/HouseTaskCheckRecord/Dto/HouseTaskCheckRecordOutput.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Ewide.Application.Service.HouseSafety.HouseTaskCheckRecord.Dto
+{
+ public class HouseTaskCheckRecordOutput
+ {
+ }
+}
diff --git a/Web/src/common/api/requests/business/houseSafety/houseInfo.js b/Web/src/common/api/requests/business/houseSafety/houseInfo.js
index 5edfc77..89b1291 100644
--- a/Web/src/common/api/requests/business/houseSafety/houseInfo.js
+++ b/Web/src/common/api/requests/business/houseSafety/houseInfo.js
@@ -1,4 +1,5 @@
export default {
houseInfoGetByTaskId: ['/houseInfo/getByTaskId', 'get'],
- houseInfoSave:['houseInfo/save','post']
+ houseInfoSave: ['houseInfo/save', 'post'],
+ houseInfoSubmitToCheck: ['/houseInfo/submitToCheck', 'post']
}
\ No newline at end of file
diff --git a/Web/src/pages/business/house/info/form/base/attachments.vue b/Web/src/pages/business/house/info/form/base/attachments.vue
index 42fe7e2..db16ab8 100644
--- a/Web/src/pages/business/house/info/form/base/attachments.vue
+++ b/Web/src/pages/business/house/info/form/base/attachments.vue
@@ -46,12 +46,12 @@
-
+
onFileChange(data, 'completedRecord')"
+ @change="(data) => onFileChange(data, 'completionRecord')"
@download="onFileDownload"
>
上传竣工验收备案
diff --git a/Web/src/pages/business/house/info/form/index.vue b/Web/src/pages/business/house/info/form/index.vue
index 665b7c9..1e2089e 100644
--- a/Web/src/pages/business/house/info/form/index.vue
+++ b/Web/src/pages/business/house/info/form/index.vue
@@ -11,11 +11,42 @@
+
+
+
+
+
+ 通过
+ 退回
+
+
+ 保存
+ 提交审核
取消
- 保存
@@ -58,12 +89,10 @@
v-if="tab.show"
>
@@ -80,7 +109,18 @@ export default {
data() {
return {
- completedYear: '',
+ labelCol: { flex: '150px' },
+ wrapperCol: { flex: '1' },
+ form: {
+ taskCheckRecord: {
+ content: '',
+ },
+ },
+ rules: {
+ /* ... */
+ 'taskCheckRecord.content': [{ required: true, message: '审核意见不能为空' }],
+ },
+
saving: false,
loading: true,
@@ -144,7 +184,25 @@ export default {
},
methods: {
- async onSubmit() {
+ onCheck(result) {
+ this.$refs.form.validate((valid, err) => {
+ if (valid) {
+ var checkRecord = {
+ taskCheckRecord: {
+ taskId: this.param.taskId,
+ passOrBack: +result,
+ content: this.form.taskCheckRecord.content,
+ },
+ };
+ this.onSubmit('houseInfoSave', checkRecord);
+ /** 验证通过后可以对数据进行转换得到想要提交的格式 */
+ /* ... */
+ } else {
+ console.log(err);
+ }
+ });
+ },
+ async onSubmit(api, append) {
let formData = {},
flag = true;
for (let i = 0; i < this.$refs.forms.length; i++) {
@@ -169,6 +227,13 @@ export default {
return;
}
+ if (append) {
+ formData = {
+ ...formData,
+ ...append,
+ };
+ }
+
/**
* 对表单提交进行处理
*/
@@ -182,11 +247,13 @@ export default {
this.saving = true;
- this.$api.houseInfoSave(formData).finally(() => {
+ this.$api[api](formData).finally(() => {
this.saving = false;
});
},
-
+ onSubmitToCheck() {
+ this.onSubmit('houseInfoSubmitToCheck');
+ },
onTabChange(key) {
this.tabs.forEach((p, i) => {
p.active = i === key;
@@ -199,10 +266,6 @@ export default {
pane.show = show;
}
},
- completedDateChanged(value) {
- this.completedYear = value;
- console.log('top-index' + value);
- },
},
};
\ No newline at end of file
diff --git a/Web/src/pages/business/house/task/check/index.vue b/Web/src/pages/business/house/task/check/index.vue
new file mode 100644
index 0000000..128b94c
--- /dev/null
+++ b/Web/src/pages/business/house/task/check/index.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部
+ {{item.value}}
+
+
+
+
+ {{item.value}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{`${record.areaName}-${record.roadName}-${record.commName}-${record.note}-${`000${record.no}`.slice(-3)}`}}
+
+
+ {{bindCodeValue(text, 'type') + (text === 2 ? `(${bindCodeValue(record.industry, 'industry')})` : '')}}
+
+
+
+
+
+ 审核
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file