Commit a382d27081754fddeb47cdf38ce4e4a865572d96

Authored by “wangming”
1 parent bb87363d

新增设备查看会话记录功能,扩展相关实体和接口,更新文档以支持内容名称和设备名称的解析,优化前端页面以展示新字段。

uniapp_jiju/pages/myDevice/detail.vue
@@ -85,7 +85,9 @@ @@ -85,7 +85,9 @@
85 </template> 85 </template>
86 86
87 <script> 87 <script>
  88 +import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
88 export default { 89 export default {
  90 + mixins: [viewRecordMixin],
89 data() { 91 data() {
90 return { 92 return {
91 detail: {}, 93 detail: {},
@@ -141,6 +143,7 @@ export default { @@ -141,6 +143,7 @@ export default {
141 if (res && res.code === 200 && res.data) { 143 if (res && res.code === 200 && res.data) {
142 this.detail = res.data || {} 144 this.detail = res.data || {}
143 console.log('设备详情数据详情', this.detail) 145 console.log('设备详情数据详情', this.detail)
  146 + this.startViewTracking(deviceId, '我的设备', this.detail.sbmc, this.detail.sbmc)
144 147
145 // 设备图片:KhsbInfoOutput 中 sbtp 是 List<FileControlsModel> 148 // 设备图片:KhsbInfoOutput 中 sbtp 是 List<FileControlsModel>
146 // FileControlsModel: { name, fileId, url } 149 // FileControlsModel: { name, fileId, url }
uniapp_jiju/pages/new/bjzc/detail.vue
@@ -185,7 +185,9 @@ @@ -185,7 +185,9 @@
185 </template> 185 </template>
186 186
187 <script> 187 <script>
  188 + import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
188 export default { 189 export default {
  190 + mixins: [viewRecordMixin],
189 data() { 191 data() {
190 return { 192 return {
191 list: ['基础资料', '随机工具',"一年备件",'两年备件'], 193 list: ['基础资料', '随机工具',"一年备件",'两年备件'],
@@ -253,6 +255,7 @@ @@ -253,6 +255,7 @@
253 } 255 }
254 } 256 }
255 this.info = resData 257 this.info = resData
  258 + this.startViewTracking(this.info.id || data.id, '备件支持', this.info.mc, this.info.glcpmc)
256 }).catch(err => { 259 }).catch(err => {
257 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' }) 260 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' })
258 setTimeout(() => uni.navigateBack(), 1500) 261 setTimeout(() => uni.navigateBack(), 1500)
uniapp_jiju/pages/new/gzpc/detail.vue
@@ -145,7 +145,9 @@ @@ -145,7 +145,9 @@
145 </template> 145 </template>
146 146
147 <script> 147 <script>
  148 + import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
148 export default { 149 export default {
  150 + mixins: [viewRecordMixin],
149 data() { 151 data() {
150 return { 152 return {
151 list: ['故障信息', '故障排查'], 153 list: ['故障信息', '故障排查'],
@@ -184,6 +186,7 @@ @@ -184,6 +186,7 @@
184 } 186 }
185 } 187 }
186 this.info = res.data 188 this.info = res.data
  189 + this.startViewTracking(this.info.id || data.id, '故障排查', this.info.code, this.info.sbmc)
187 } 190 }
188 }).catch(err => { 191 }).catch(err => {
189 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' }) 192 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' })
uniapp_jiju/pages/new/pxzs/detail.vue
@@ -74,7 +74,9 @@ @@ -74,7 +74,9 @@
74 </template> 74 </template>
75 75
76 <script> 76 <script>
  77 + import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
77 export default { 78 export default {
  79 + mixins: [viewRecordMixin],
78 data() { 80 data() {
79 return { 81 return {
80 list: ['基础资料', '相关资料'], 82 list: ['基础资料', '相关资料'],
@@ -111,6 +113,7 @@ @@ -111,6 +113,7 @@
111 ) 113 )
112 } 114 }
113 this.info = res.data 115 this.info = res.data
  116 + this.startViewTracking(this.info.id || data.id, '培训展示', this.info.pxmc, this.info.sbmc)
114 } 117 }
115 }).catch(err => { 118 }).catch(err => {
116 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' }) 119 uni.showToast({ title: err.msg || err.message || '无权限查看或加载失败', icon: 'none' })
uniapp_jiju/pages/new/zlgl/detail.vue
@@ -250,7 +250,9 @@ @@ -250,7 +250,9 @@
250 </template> 250 </template>
251 251
252 <script> 252 <script>
  253 + import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
253 export default { 254 export default {
  255 + mixins: [viewRecordMixin],
254 data() { 256 data() {
255 return { 257 return {
256 list: ['基础资料','技术资料', '质量资料','其他资料'], 258 list: ['基础资料','技术资料', '质量资料','其他资料'],
@@ -272,6 +274,7 @@ @@ -272,6 +274,7 @@
272 this.info = res.data 274 this.info = res.data
273 // 处理附件字段 275 // 处理附件字段
274 this.processAttachments() 276 this.processAttachments()
  277 + this.startViewTracking(this.info.id, '资料管理', this.info.zlm, this.info.zlm)
275 } 278 }
276 }).catch(err => { 279 }).catch(err => {
277 console.error('获取资料管理详情失败:', err) 280 console.error('获取资料管理详情失败:', err)
@@ -281,6 +284,7 @@ @@ -281,6 +284,7 @@
281 } else { 284 } else {
282 // 如果没有 id,直接处理存储的数据 285 // 如果没有 id,直接处理存储的数据
283 this.processAttachments() 286 this.processAttachments()
  287 + if (this.info.id) this.startViewTracking(this.info.id, '资料管理', this.info.zlm, this.info.zlm)
284 } 288 }
285 }, 289 },
286 methods: { 290 methods: {
uniapp_jiju/pages/new/zsk/detail.vue
@@ -136,7 +136,9 @@ @@ -136,7 +136,9 @@
136 136
137 <script> 137 <script>
138 import service from '@/service/service.js' 138 import service from '@/service/service.js'
  139 +import viewRecordMixin from '@/common/mixins/viewRecordMixin.js'
139 export default { 140 export default {
  141 + mixins: [viewRecordMixin],
140 data() { 142 data() {
141 return { 143 return {
142 list: ['基础资料', '相关资料'], 144 list: ['基础资料', '相关资料'],
@@ -183,6 +185,7 @@ methods: { @@ -183,6 +185,7 @@ methods: {
183 this.API.zskxq({ id: this.id, n: Date.now() }).then(res=>{ 185 this.API.zskxq({ id: this.id, n: Date.now() }).then(res=>{
184 console.log("知识详情数据:", res); 186 console.log("知识详情数据:", res);
185 this.detail = res.data || { sbm: '', gg: '', gy: '', sbjs: '', fl: '', fj1: [], fj2: [] } 187 this.detail = res.data || { sbm: '', gg: '', gy: '', sbjs: '', fl: '', fj1: [], fj2: [] }
  188 + this.startViewTracking(this.detail.id || this.id, '知识库', this.detail.sbm)
186 189
187 // 确保附件字段是数组 190 // 确保附件字段是数组
188 if (!Array.isArray(this.detail.fj1)) { 191 if (!Array.isArray(this.detail.fj1)) {
机具(服务端)/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/SbRecordsListOutput.cs
@@ -48,7 +48,17 @@ namespace NCC.Extend.Entitys.Dto.SbRecords @@ -48,7 +48,17 @@ namespace NCC.Extend.Entitys.Dto.SbRecords
48 public string type { get; set; } 48 public string type { get; set; }
49 49
50 /// <summary> 50 /// <summary>
51 - /// 关联设备(原关联记录,展示设备名称) 51 + /// 查看内容(故障代码、知识名、资料名、备件名、培训名等)
  52 + /// </summary>
  53 + public string contentName { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 设备名称(所属设备、关联产品名;优先 F_DeviceName,无则根据 reId 查表)
  57 + /// </summary>
  58 + public string deviceName { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 关联设备(兼容旧逻辑,展示设备名称;优先使用 deviceName)
52 /// </summary> 62 /// </summary>
53 public string equipmentName { get; set; } 63 public string equipmentName { get; set; }
54 64
机具(服务端)/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/SbRecordsEntity.cs
@@ -70,6 +70,18 @@ namespace NCC.Extend.Entitys @@ -70,6 +70,18 @@ namespace NCC.Extend.Entitys
70 /// </summary> 70 /// </summary>
71 [SugarColumn(ColumnName = "F_Type")] 71 [SugarColumn(ColumnName = "F_Type")]
72 public string Type { get; set; } 72 public string Type { get; set; }
  73 +
  74 + /// <summary>
  75 + /// 查看内容(故障代码、知识名、资料名、备件名、培训名等)
  76 + /// </summary>
  77 + [SugarColumn(ColumnName = "F_ContentName")]
  78 + public string ContentName { get; set; }
  79 +
  80 + /// <summary>
  81 + /// 设备名称(所属设备、关联产品名,便于「记录类型+设备名称+查看内容」三字段定位)
  82 + /// </summary>
  83 + [SugarColumn(ColumnName = "F_DeviceName")]
  84 + public string DeviceName { get; set; }
73 85
74 } 86 }
75 } 87 }
76 \ No newline at end of file 88 \ No newline at end of file
机具(服务端)/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ISbRecordsService.cs
@@ -7,12 +7,14 @@ namespace NCC.Extend.Interfaces.SbRecords @@ -7,12 +7,14 @@ namespace NCC.Extend.Interfaces.SbRecords
7 /// <summary> 7 /// <summary>
8 /// 开始一条设备查看会话记录(进入页面时调用)。 8 /// 开始一条设备查看会话记录(进入页面时调用)。
9 /// </summary> 9 /// </summary>
10 - /// <param name="reId">关联记录 Id,一般为设备 Id。</param>  
11 - /// <param name="type">记录类型,例如“查看设备”。</param> 10 + /// <param name="reId">关联记录 Id,对应不同 type 下的业务表主键。</param>
  11 + /// <param name="type">记录类型,如:故障排查、知识库、我的设备、资料管理、备件支持、培训展示、查看设备。</param>
  12 + /// <param name="contentName">查看内容(故障代码、知识名、资料名等;可选);未传时根据 type+reId 从对应表自动查询。</param>
  13 + /// <param name="deviceName">设备名称(所属设备、关联产品名;可选);未传时根据 type+reId 从对应表自动查询。</param>
12 /// <param name="item1">备用字段1,可选。</param> 14 /// <param name="item1">备用字段1,可选。</param>
13 /// <param name="item2">备用字段2,可选。</param> 15 /// <param name="item2">备用字段2,可选。</param>
14 /// <returns>返回新建记录的 Id(后续结束会话时使用)。</returns> 16 /// <returns>返回新建记录的 Id(后续结束会话时使用)。</returns>
15 - Task<string> StartViewRecordAsync(string reId, string type, string item1 = null, string item2 = null); 17 + Task<string> StartViewRecordAsync(string reId, string type, string contentName = null, string deviceName = null, string item1 = null, string item2 = null);
16 18
17 /// <summary> 19 /// <summary>
18 /// 结束一条设备查看会话记录(离开页面时调用),并计算停留时长。 20 /// 结束一条设备查看会话记录(离开页面时调用),并计算停留时长。
机具(服务端)/netcore/src/Modularity/Extend/NCC.Extend/SbRecordsService.cs
@@ -52,15 +52,20 @@ namespace NCC.Extend.SbRecords @@ -52,15 +52,20 @@ namespace NCC.Extend.SbRecords
52 /// <summary> 52 /// <summary>
53 /// 开始一条设备查看会话记录(进入页面时调用)。 53 /// 开始一条设备查看会话记录(进入页面时调用)。
54 /// </summary> 54 /// </summary>
55 - /// <param name="reId">关联记录 Id,一般为设备 Id。</param>  
56 - /// <param name="type">记录类型,例如“查看设备”。</param> 55 + /// <param name="reId">关联记录 Id,对应不同 type 下的业务表主键。</param>
  56 + /// <param name="type">记录类型,如:故障排查、知识库、我的设备、资料管理、备件支持、培训展示、查看设备。</param>
  57 + /// <param name="contentName">查看内容(故障代码、知识名、资料名等;可选);未传时根据 type+reId 从对应表自动查询。</param>
  58 + /// <param name="deviceName">设备名称(所属设备、关联产品名;可选);未传时根据 type+reId 从对应表自动查询。</param>
57 /// <param name="item1">备用字段1,可选。</param> 59 /// <param name="item1">备用字段1,可选。</param>
58 /// <param name="item2">备用字段2,可选。</param> 60 /// <param name="item2">备用字段2,可选。</param>
59 /// <returns>返回新建记录的 Id(后续结束会话时使用)。</returns> 61 /// <returns>返回新建记录的 Id(后续结束会话时使用)。</returns>
60 [HttpPost("Actions/StartViewRecord")] 62 [HttpPost("Actions/StartViewRecord")]
61 - public async Task<string> StartViewRecordAsync(string reId, string type, string item1 = null, string item2 = null) 63 + public async Task<string> StartViewRecordAsync([FromForm] string reId, [FromForm] string type, [FromForm] string contentName = null, [FromForm] string deviceName = null, [FromForm] string item1 = null, [FromForm] string item2 = null)
62 { 64 {
63 var now = DateTime.Now; 65 var now = DateTime.Now;
  66 + var resolvedContentName = !string.IsNullOrWhiteSpace(contentName) ? contentName : await ResolveContentNameAsync(type, reId);
  67 + var resolvedDeviceName = !string.IsNullOrWhiteSpace(deviceName) ? deviceName : await ResolveDeviceNameAsync(type, reId);
  68 +
64 var entity = new SbRecordsEntity 69 var entity = new SbRecordsEntity
65 { 70 {
66 Id = YitIdHelper.NextId().ToString(), 71 Id = YitIdHelper.NextId().ToString(),
@@ -72,7 +77,9 @@ namespace NCC.Extend.SbRecords @@ -72,7 +77,9 @@ namespace NCC.Extend.SbRecords
72 Enable = true, 77 Enable = true,
73 Item1 = item1, 78 Item1 = item1,
74 Item2 = item2, 79 Item2 = item2,
75 - Type = type 80 + Type = type,
  81 + ContentName = resolvedContentName,
  82 + DeviceName = resolvedDeviceName
76 }; 83 };
77 84
78 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 85 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
@@ -82,12 +89,119 @@ namespace NCC.Extend.SbRecords @@ -82,12 +89,119 @@ namespace NCC.Extend.SbRecords
82 } 89 }
83 90
84 /// <summary> 91 /// <summary>
  92 + /// 根据 type 和 reId 从对应业务表解析内容名称。
  93 + /// </summary>
  94 + private async Task<string> ResolveContentNameAsync(string type, string reId)
  95 + {
  96 + if (string.IsNullOrWhiteSpace(reId)) return null;
  97 + var t = (type ?? "").Trim();
  98 +
  99 + if (t.Contains("故障排查") || t.Contains("故障查询"))
  100 + {
  101 + var gz = await _db.Queryable<GzcxEntity>().Where(x => x.Id == reId).Select(x => x.Code).FirstAsync();
  102 + return gz;
  103 + }
  104 + if (t.Contains("知识库"))
  105 + {
  106 + var z = await _db.Queryable<ZskEntity>().Where(x => x.Id == reId).Select(x => x.Sbm).FirstAsync();
  107 + return z;
  108 + }
  109 + if (t.Contains("我的设备"))
  110 + {
  111 + var k = await _db.Queryable<KhsbEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  112 + return k;
  113 + }
  114 + if (t.Contains("资料管理"))
  115 + {
  116 + var zl = await _db.Queryable<ZlglEntity>().Where(x => x.Id == reId).Select(x => x.Zlm).FirstAsync();
  117 + return zl;
  118 + }
  119 + if (t.Contains("备件支持"))
  120 + {
  121 + var b = await _db.Queryable<BjxxEntity>().Where(x => x.Id == reId).Select(x => x.Mc).FirstAsync();
  122 + return b;
  123 + }
  124 + if (t.Contains("培训展示"))
  125 + {
  126 + var p = await _db.Queryable<PxzsEntity>().Where(x => x.Id == reId).Select(x => x.Pxmc ?? x.Sbmc).FirstAsync();
  127 + return p;
  128 + }
  129 + if (t.Contains("查看设备"))
  130 + {
  131 + var zs = await _db.Queryable<ZsbtzEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  132 + if (!string.IsNullOrEmpty(zs)) return zs;
  133 + var kh = await _db.Queryable<KhsbEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  134 + return kh;
  135 + }
  136 + return null;
  137 + }
  138 +
  139 + /// <summary>
  140 + /// 根据 type 和 reId 从对应业务表解析设备名称(所属设备、关联产品名)。
  141 + /// </summary>
  142 + private async Task<string> ResolveDeviceNameAsync(string type, string reId)
  143 + {
  144 + if (string.IsNullOrWhiteSpace(reId)) return null;
  145 + var t = (type ?? "").Trim();
  146 +
  147 + if (t.Contains("故障排查") || t.Contains("故障查询"))
  148 + {
  149 + var gz = await _db.Queryable<GzcxEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  150 + return gz;
  151 + }
  152 + if (t.Contains("知识库"))
  153 + {
  154 + var z = await _db.Queryable<ZskEntity>().Where(x => x.Id == reId).Select(x => x.Sssb).FirstAsync();
  155 + if (string.IsNullOrEmpty(z)) return null;
  156 + var cp = await _db.Queryable<CpglEntity>().Where(c => c.Id == z || c.Cpid == z).Select(c => c.Cpmc).FirstAsync();
  157 + return cp;
  158 + }
  159 + if (t.Contains("我的设备"))
  160 + {
  161 + var k = await _db.Queryable<KhsbEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  162 + return k;
  163 + }
  164 + if (t.Contains("资料管理"))
  165 + {
  166 + var zl = await _db.Queryable<ZlglEntity>().Where(x => x.Id == reId).Select(x => x.Zlm).FirstAsync();
  167 + return zl;
  168 + }
  169 + if (t.Contains("备件支持"))
  170 + {
  171 + var b = await _db.Queryable<BjxxEntity>().Where(x => x.Id == reId).Select(x => x.Sssb).FirstAsync();
  172 + if (string.IsNullOrEmpty(b)) return null;
  173 + var cp = await _db.Queryable<CpglEntity>().Where(c => c.Id == b || c.Cpid == b).Select(c => c.Cpmc).FirstAsync();
  174 + if (!string.IsNullOrEmpty(cp)) return cp;
  175 + var zl = await _db.Queryable<ZlglEntity>().Where(z => z.Id == b).Select(z => new { z.Zlm, z.Fl }).FirstAsync();
  176 + if (zl != null && !string.IsNullOrEmpty(zl.Fl))
  177 + {
  178 + var cpmc = await _db.Queryable<CpglEntity>().Where(c => c.Id == zl.Fl).Select(c => c.Cpmc).FirstAsync();
  179 + if (!string.IsNullOrEmpty(cpmc)) return cpmc;
  180 + }
  181 + return zl?.Zlm;
  182 + }
  183 + if (t.Contains("培训展示"))
  184 + {
  185 + var p = await _db.Queryable<PxzsEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  186 + return p;
  187 + }
  188 + if (t.Contains("查看设备"))
  189 + {
  190 + var zs = await _db.Queryable<ZsbtzEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  191 + if (!string.IsNullOrEmpty(zs)) return zs;
  192 + var kh = await _db.Queryable<KhsbEntity>().Where(x => x.Id == reId).Select(x => x.Sbmc).FirstAsync();
  193 + return kh;
  194 + }
  195 + return null;
  196 + }
  197 +
  198 + /// <summary>
85 /// 结束一条设备查看会话记录(离开页面时调用),并计算停留时长。 199 /// 结束一条设备查看会话记录(离开页面时调用),并计算停留时长。
86 /// </summary> 200 /// </summary>
87 /// <param name="recordId">开始会话时返回的记录 Id。</param> 201 /// <param name="recordId">开始会话时返回的记录 Id。</param>
88 /// <returns>返回是否更新成功。</returns> 202 /// <returns>返回是否更新成功。</returns>
89 [HttpPost("Actions/EndViewRecord")] 203 [HttpPost("Actions/EndViewRecord")]
90 - public async Task<bool> EndViewRecordAsync(string recordId) 204 + public async Task<bool> EndViewRecordAsync([FromForm] string recordId)
91 { 205 {
92 var now = DateTime.Now; 206 var now = DateTime.Now;
93 207
@@ -268,8 +382,10 @@ namespace NCC.Extend.SbRecords @@ -268,8 +382,10 @@ namespace NCC.Extend.SbRecords
268 .Select(it => new SbRecordsListOutput 382 .Select(it => new SbRecordsListOutput
269 { 383 {
270 id = it.Id, 384 id = it.Id,
271 - reId = SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc),  
272 - equipmentName = SqlFunc.IsNull(SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sbmc), SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc)), 385 + reId = it.ReId,
  386 + contentName = it.ContentName,
  387 + deviceName = it.DeviceName,
  388 + equipmentName = SqlFunc.IsNull(it.DeviceName, SqlFunc.IsNull(SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sbmc), SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc))),
273 customerName = SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sskh), 389 customerName = SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sskh),
274 addTime = it.AddTime, 390 addTime = it.AddTime,
275 addUser = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == it.AddUser).Select(u => u.RealName), 391 addUser = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == it.AddUser).Select(u => u.RealName),
@@ -320,8 +436,10 @@ namespace NCC.Extend.SbRecords @@ -320,8 +436,10 @@ namespace NCC.Extend.SbRecords
320 .Select(it => new SbRecordsListOutput 436 .Select(it => new SbRecordsListOutput
321 { 437 {
322 id = it.Id, 438 id = it.Id,
323 - reId = SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc),  
324 - equipmentName = SqlFunc.IsNull(SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sbmc), SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc)), 439 + reId = it.ReId,
  440 + contentName = it.ContentName,
  441 + deviceName = it.DeviceName,
  442 + equipmentName = SqlFunc.IsNull(it.DeviceName, SqlFunc.IsNull(SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sbmc), SqlFunc.Subqueryable<ZsbtzEntity>().Where(t => t.Id == it.ReId).Select(t => t.Sbmc))),
325 customerName = SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sskh), 443 customerName = SqlFunc.Subqueryable<KhsbEntity>().Where(k => k.Id == it.ReId).Select(k => k.Sskh),
326 addTime = it.AddTime, 444 addTime = it.AddTime,
327 addUser = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == it.AddUser).Select(u => u.RealName), 445 addUser = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == it.AddUser).Select(u => u.RealName),
@@ -357,7 +475,7 @@ namespace NCC.Extend.SbRecords @@ -357,7 +475,7 @@ namespace NCC.Extend.SbRecords
357 exportData[i].index = i + 1; 475 exportData[i].index = i + 1;
358 exportData[i].countNum = i + 1; 476 exportData[i].countNum = i + 1;
359 } 477 }
360 - List<ParamsModel> paramList = "[{\"value\":\"序号\",\"field\":\"index\"},{\"value\":\"客户\",\"field\":\"customerName\"},{\"value\":\"用户\",\"field\":\"addUser\"},{\"value\":\"设备\",\"field\":\"equipmentName\"},{\"value\":\"时间\",\"field\":\"addTime\"},{\"value\":\"次数\",\"field\":\"countNum\"},{\"value\":\"记录类型\",\"field\":\"type\"},{\"value\":\"关联设备\",\"field\":\"reId\"},{\"value\":\"有效状态\",\"field\":\"enable\"}]".ToList<ParamsModel>(); 478 + List<ParamsModel> paramList = "[{\"value\":\"序号\",\"field\":\"index\"},{\"value\":\"客户\",\"field\":\"customerName\"},{\"value\":\"用户\",\"field\":\"addUser\"},{\"value\":\"记录类型\",\"field\":\"type\"},{\"value\":\"设备名称\",\"field\":\"deviceName\"},{\"value\":\"查看内容\",\"field\":\"contentName\"},{\"value\":\"设备\",\"field\":\"equipmentName\"},{\"value\":\"时间\",\"field\":\"addTime\"},{\"value\":\"次数\",\"field\":\"countNum\"},{\"value\":\"关联记录\",\"field\":\"reId\"},{\"value\":\"有效状态\",\"field\":\"enable\"}]".ToList<ParamsModel>();
361 ExcelConfig excelconfig = new ExcelConfig(); 479 ExcelConfig excelconfig = new ExcelConfig();
362 excelconfig.FileName = "查看历史记录.xls"; 480 excelconfig.FileName = "查看历史记录.xls";
363 excelconfig.HeadFont = "微软雅黑"; 481 excelconfig.HeadFont = "微软雅黑";
机具(管理端)/src/views/sbRecords/index.vue
@@ -92,13 +92,14 @@ @@ -92,13 +92,14 @@
92 </div> 92 </div>
93 <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange"> 93 <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange">
94 <el-table-column type="index" label="序号" width="60" align="center" :index="indexMethod" /> 94 <el-table-column type="index" label="序号" width="60" align="center" :index="indexMethod" />
95 - <el-table-column label="关联设备" align="left" min-width="120">  
96 - <template slot-scope="scope">{{ scope.row.equipmentName || scope.row.reId || '-' }}</template> 95 + <el-table-column prop="type" label="记录类型" align="left" width="100" />
  96 + <el-table-column label="设备名称" align="left" min-width="120" show-overflow-tooltip>
  97 + <template slot-scope="scope">{{ scope.row.deviceName || scope.row.equipmentName || scope.row.reId || '-' }}</template>
97 </el-table-column> 98 </el-table-column>
  99 + <el-table-column prop="contentName" label="查看内容" align="left" min-width="120" show-overflow-tooltip />
98 <el-table-column prop="customerName" label="查看客户" align="left" min-width="100" show-overflow-tooltip /> 100 <el-table-column prop="customerName" label="查看客户" align="left" min-width="100" show-overflow-tooltip />
99 <el-table-column prop="addUser" label="查看用户" align="left" min-width="100" /> 101 <el-table-column prop="addUser" label="查看用户" align="left" min-width="100" />
100 <el-table-column prop="addTime" label="记录时间" align="left" width="160" :formatter="ncc.tableDateFormat" /> 102 <el-table-column prop="addTime" label="记录时间" align="left" width="160" :formatter="ncc.tableDateFormat" />
101 - <el-table-column prop="type" label="记录类型" align="left" width="100" />  
102 <el-table-column label="操作" fixed="right" width="100"> 103 <el-table-column label="操作" fixed="right" width="100">
103 <template slot-scope="scope"> 104 <template slot-scope="scope">
104 <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn">删除</el-button> 105 <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn">删除</el-button>
@@ -155,10 +156,12 @@ export default { @@ -155,10 +156,12 @@ export default {
155 { prop: 'index', label: '序号' }, 156 { prop: 'index', label: '序号' },
156 { prop: 'customerName', label: '客户' }, 157 { prop: 'customerName', label: '客户' },
157 { prop: 'addUser', label: '用户' }, 158 { prop: 'addUser', label: '用户' },
  159 + { prop: 'type', label: '记录类型' },
  160 + { prop: 'deviceName', label: '设备名称' },
  161 + { prop: 'contentName', label: '查看内容' },
158 { prop: 'equipmentName', label: '设备' }, 162 { prop: 'equipmentName', label: '设备' },
159 { prop: 'addTime', label: '时间' }, 163 { prop: 'addTime', label: '时间' },
160 - { prop: 'countNum', label: '次数' },  
161 - { prop: 'type', label: '记录类型' } 164 + { prop: 'countNum', label: '次数' }
162 ], 165 ],
163 reIdOptions: [] 166 reIdOptions: []
164 } 167 }