2023甬江杯投票
This commit is contained in:
@@ -84,94 +84,94 @@ namespace Ewide.EntityFramework.Core
|
||||
/// <param name="result"></param>
|
||||
protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
|
||||
{
|
||||
var dbContext = eventData.Context;
|
||||
//var dbContext = eventData.Context;
|
||||
|
||||
try
|
||||
{
|
||||
if (dbContext == null) return;
|
||||
// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
|
||||
var entities = dbContext?.ChangeTracker?.Entries()?
|
||||
.Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) && u.Entity.GetType() != typeof(SysLogVis) &&
|
||||
(u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))
|
||||
.ToList();
|
||||
|
||||
|
||||
if (entities == null || entities.Count < 1) return;
|
||||
|
||||
// 判断是否是演示环境
|
||||
var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
|
||||
if (demoEnvFlag)
|
||||
{
|
||||
var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
|
||||
if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 排除登录
|
||||
throw Oops.Oh(ErrorCode.D1200);
|
||||
}
|
||||
|
||||
// 当前操作用户信息
|
||||
var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
|
||||
var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
|
||||
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
|
||||
{
|
||||
var obj = entity.Entity as DEntityBase;
|
||||
if (entity.State == EntityState.Added)
|
||||
{
|
||||
obj.Id = string.IsNullOrEmpty(obj.Id) ? Guid.NewGuid().ToString() : obj.Id;
|
||||
obj.CreatedTime = DateTime.Now;
|
||||
if (!string.IsNullOrEmpty(userId))
|
||||
{
|
||||
obj.CreatedUserId = userId;
|
||||
obj.CreatedUserName = userName;
|
||||
}
|
||||
}
|
||||
else if (entity.State == EntityState.Modified)
|
||||
{
|
||||
obj.UpdatedTime = DateTime.Now;
|
||||
obj.UpdatedUserId = userId;
|
||||
obj.UpdatedUserName = userName;
|
||||
}
|
||||
}
|
||||
|
||||
//// 获取实体当前(现在)的值
|
||||
//var currentValues = entity.CurrentValues;
|
||||
//// 获取数据库中实体的值
|
||||
//var databaseValues = entity.GetDatabaseValues();
|
||||
|
||||
//// 获取所有实体有效属性,排除 [NotMapper] 属性
|
||||
//var props = entity.OriginalValues.Properties;
|
||||
//foreach (var prop in props)
|
||||
//try
|
||||
//{
|
||||
// var propName = prop.Name; // 获取属性名
|
||||
// var newValue = currentValues[propName]; // 获取现在的实体值
|
||||
// if (dbContext == null) return;
|
||||
// // 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
|
||||
// var entities = dbContext?.ChangeTracker?.Entries()?
|
||||
// .Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) && u.Entity.GetType() != typeof(SysLogVis) &&
|
||||
// (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))
|
||||
// .ToList();
|
||||
|
||||
// object oldValue = null;
|
||||
// // 如果是新增数据,则 databaseValues 为空,所以需要判断一下
|
||||
// if (databaseValues != null)
|
||||
// oldValue = databaseValues[propName];
|
||||
|
||||
// if ((newValue == oldValue) || (newValue != null && newValue.Equals(oldValue))) continue;
|
||||
// // 插入审计日志表
|
||||
// dbContext.AddAsync(new SysLogAudit
|
||||
// if (entities == null || entities.Count < 1) return;
|
||||
|
||||
// // 判断是否是演示环境
|
||||
// var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
|
||||
// if (demoEnvFlag)
|
||||
// {
|
||||
// TableName = entity.Entity.GetType().Name, // 获取实体类型(表名)
|
||||
// ColumnName = propName,
|
||||
// NewValue = newValue?.ToString(),
|
||||
// OldValue = oldValue?.ToString(),
|
||||
// CreatedTime = DateTime.Now,
|
||||
// UserId = userId,
|
||||
// UserName = userName,
|
||||
// Operate = entity.State.ToString() // 操作方式:新增、更新、删除
|
||||
// });
|
||||
//}
|
||||
}
|
||||
}
|
||||
catch (System.ObjectDisposedException ex)
|
||||
{
|
||||
// var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
|
||||
// if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 排除登录
|
||||
// throw Oops.Oh(ErrorCode.D1200);
|
||||
// }
|
||||
|
||||
throw;
|
||||
}
|
||||
// // 当前操作用户信息
|
||||
// var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
|
||||
// var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
|
||||
|
||||
// foreach (var entity in entities)
|
||||
// {
|
||||
// if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
|
||||
// {
|
||||
// var obj = entity.Entity as DEntityBase;
|
||||
// if (entity.State == EntityState.Added)
|
||||
// {
|
||||
// obj.Id = string.IsNullOrEmpty(obj.Id) ? Guid.NewGuid().ToString() : obj.Id;
|
||||
// obj.CreatedTime = DateTime.Now;
|
||||
// if (!string.IsNullOrEmpty(userId))
|
||||
// {
|
||||
// obj.CreatedUserId = userId;
|
||||
// obj.CreatedUserName = userName;
|
||||
// }
|
||||
// }
|
||||
// else if (entity.State == EntityState.Modified)
|
||||
// {
|
||||
// obj.UpdatedTime = DateTime.Now;
|
||||
// obj.UpdatedUserId = userId;
|
||||
// obj.UpdatedUserName = userName;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //// 获取实体当前(现在)的值
|
||||
// //var currentValues = entity.CurrentValues;
|
||||
// //// 获取数据库中实体的值
|
||||
// //var databaseValues = entity.GetDatabaseValues();
|
||||
|
||||
// //// 获取所有实体有效属性,排除 [NotMapper] 属性
|
||||
// //var props = entity.OriginalValues.Properties;
|
||||
// //foreach (var prop in props)
|
||||
// //{
|
||||
// // var propName = prop.Name; // 获取属性名
|
||||
// // var newValue = currentValues[propName]; // 获取现在的实体值
|
||||
|
||||
// // object oldValue = null;
|
||||
// // // 如果是新增数据,则 databaseValues 为空,所以需要判断一下
|
||||
// // if (databaseValues != null)
|
||||
// // oldValue = databaseValues[propName];
|
||||
|
||||
// // if ((newValue == oldValue) || (newValue != null && newValue.Equals(oldValue))) continue;
|
||||
// // // 插入审计日志表
|
||||
// // dbContext.AddAsync(new SysLogAudit
|
||||
// // {
|
||||
// // TableName = entity.Entity.GetType().Name, // 获取实体类型(表名)
|
||||
// // ColumnName = propName,
|
||||
// // NewValue = newValue?.ToString(),
|
||||
// // OldValue = oldValue?.ToString(),
|
||||
// // CreatedTime = DateTime.Now,
|
||||
// // UserId = userId,
|
||||
// // UserName = userName,
|
||||
// // Operate = entity.State.ToString() // 操作方式:新增、更新、删除
|
||||
// // });
|
||||
// //}
|
||||
// }
|
||||
//}
|
||||
//catch (System.ObjectDisposedException ex)
|
||||
//{
|
||||
|
||||
// throw;
|
||||
//}
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
|
||||
@@ -620,6 +620,675 @@
|
||||
<Content Update="wwwroot\ExcelTemplate\2022年度甬江杯投票.xlsx">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\2023qyrczp\index.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\Manage\Login.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\outsidewall\BuildingResult.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\outsidewall\index.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\outsidewall\outsidewall2.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\outsidewall\result.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\yjbvote\Expert.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\yjbvote\VoteResult.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\html\yjbvote\index.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\axios.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\axios.js.map">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\axios.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\axios.min.js.map">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\browser\axios.cjs.map">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\esm\axios.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\axios\node\axios.cjs.map">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus-icons-vue\global.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus-icons-vue\index.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.full.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.full.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.full.min.mjs">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.full.mjs">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\index.min.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\af.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ar.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\az.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\bg.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\bn.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ca.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ckb.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\cs.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\da.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\de.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\el.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\en.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\eo.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\es.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\et.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\eu.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\fa.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\fi.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\fr.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\he.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\hr.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\hu.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\hy-am.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\id.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\it.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ja.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\kk.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\km.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ko.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ku.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ky.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\lt.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\lv.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\mg.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\mn.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\nb-no.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\nl.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\pa.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\pl.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\pt-br.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\pt.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ro.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ru.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\sk.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\sl.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\sr.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\sv.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ta.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\th.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\tk.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\tr.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\ug-cn.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\uk.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\uz-uz.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\vi.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\zh-cn.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\locale\zh-tw.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\base.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\display.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-affix.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-alert.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-aside.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-autocomplete.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-avatar.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-backtop.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-badge.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-breadcrumb-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-breadcrumb.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-button-group.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-button.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-calendar.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-card.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-carousel-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-carousel.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-cascader-panel.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-cascader.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-check-tag.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-checkbox-button.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-checkbox-group.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-checkbox.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-col.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-collapse-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-collapse-transition.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-collapse.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-color-picker.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-config-provider.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-container.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-date-picker.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-descriptions-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-descriptions.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-dialog.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-divider.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-drawer.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-dropdown-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-dropdown-menu.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-dropdown.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-empty.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-footer.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-form-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-form.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-header.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-icon.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-image-viewer.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-image.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-infinite-scroll.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-input-number.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-input.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-link.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-loading.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-main.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-menu-item-group.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-menu-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-menu.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-message-box.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-message.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-notification.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-option-group.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-option-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-option.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-overlay.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-page-header.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-pagination.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-popconfirm.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-popover.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-popper.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-progress.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-radio-button.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-radio-group.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-radio.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-rate.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-reset.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-result.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-row.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-scrollbar.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-select-dropdown-v2.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-select-dropdown.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-select-v2.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-select.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-skeleton-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-skeleton.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-slider.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-space.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-spinner.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-statistic.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-step.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-steps.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-sub-menu.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-switch.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tab-pane.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-table-column.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-table-v2.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-table.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tabs.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tag.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-text.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-time-picker.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-time-select.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-timeline-item.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-timeline.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tooltip-v2.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tooltip.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-transfer.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tree-select.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-tree.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-upload.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-var.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\el-virtual-list.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-plus\theme-chalk\index.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-ui\theme-chalk\fonts\element-icons.ttf">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-ui\theme-chalk\fonts\element-icons.woff">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-ui\theme-chalk\index.css">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\element-ui\theme-chalk\index.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\qs\qs.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\qs\qs.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue2\vue.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.cjs.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.cjs.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.cjs.prod.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.cjs.prod.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-browser.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-browser.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-browser.prod.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-browser.prod.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-bundler.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.esm-bundler.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.global.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.global.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.global.prod.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.global.prod.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-browser.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-browser.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-browser.prod.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-browser.prod.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-bundler.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.esm-bundler.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.global.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.global.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.global.prod.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\lib\vue\vue.runtime.global.prod.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
826
20220330_Vote/Ewide.Web.Entry/wwwroot/html/2023qyrczp/index.html
Normal file
826
20220330_Vote/Ewide.Web.Entry/wwwroot/html/2023qyrczp/index.html
Normal file
@@ -0,0 +1,826 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
宁波既有建筑外墙脱落问卷调查
|
||||
</title>
|
||||
<script src="../../lib/vue/vue.global.prod.min.js"></script>
|
||||
<link href="../../lib/element-plus/index.min.css" rel="stylesheet" />
|
||||
<script src="../../lib/element-plus/index.full.min.js"></script>
|
||||
<script src="../../lib/element-plus/locale/zh-cn.min.js"></script>
|
||||
<script src="../../lib/element-plus-icons-vue/global.iife.min.js"></script>
|
||||
<script src="../../lib/xe-utils/dist/xe-utils.umd.min.js"></script>
|
||||
<script src="../../lib/axios/axios.min.js"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<el-dialog v-model="pageData.dialogLoginVisible" title="请先登录" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" append-to-body width="60%">
|
||||
<el-form :model="pageData.loginForm" ref="loginFormRef" label-position="top">
|
||||
<el-form-item label="手机号码" label-width="80px" prop="phone" :rules="[{ required: true, trigger: 'blur', min: 11, max: 11, message: '请输入正确的手机号码' }]">
|
||||
<el-input v-model="pageData.loginForm.phone" autocomplete="off" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码" label-width="80px" prop="code" :rules="[{ required: true, trigger: 'blur', min: 4, max: 4, message: '请输入验证码' }]">
|
||||
<el-input type="text" maxlength="4" placeholder="验证码" v-model="pageData.loginForm.code">
|
||||
<template slot="append" #append>
|
||||
<el-button :disabled="pageData.loginForm.disabled" @click="(v,v2)=>funHandles.getCode(v,pageData,loginFormRef)">{{ pageData.loginForm.valiBtn }}</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<!--<el-button @click="dialogFormVisible = false">Cancel</el-button>-->
|
||||
<el-button type="primary" @click="(v,v2)=>funHandles.verifyKey(pageData,loginFormRef)">登录</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<h3 style="text-align:center;">宁波既有建筑外墙脱落问卷调查</h3>
|
||||
<el-form ref="formRef" :model="pageData.form" label-position="left" require-asterisk-position="right" label-width="160px" style="margin-top:15px;">
|
||||
<el-form-item label="1.社区/小区名:" prop="communityId" :rules="[{ required: true, trigger: 'blur', message: '请选择社区/小区' }]">
|
||||
<el-select v-model="pageData.communityItem" filterable clearable remote reserve-keyword :remote-method="(v,v2)=>funHandles.getCommunitys(v,pageData)" placeholder="请输入关键字后进行选择" @change="(v,v2)=>funHandles.onChangeSelectCommunity(v,pageData)" style="width:100%" no-data-text="没有这个社区">
|
||||
<el-option v-for="item in pageData.communitys" :key="item.id" :label="item.name" :value="JSON.stringify(item)">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="2.小区交付年份:" prop="deliveryear" :rules="[{ required: false, trigger: 'blur', message: '请输入交付年份' }]">
|
||||
<el-date-picker v-model="pageData.form.deliveryear" type="date" value-format="YYYY-MM-DD" style="width:100%" />
|
||||
</el-form-item>
|
||||
<!--@*<el-form-item label="物业单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="开发商:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="施工单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设计单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>*@-->
|
||||
<el-form-item label="3.外墙结构:" prop="outsidewallstructurefiles">
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="pageData.fileList"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,pageData.fileList)"
|
||||
:on-remove="(file, fileList)=>{return funHandles.fileRemove(file, fileList)}"
|
||||
:on-success="(response, file, fileList)=>{return funHandles.fileChange(response, file, fileList)}">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传外墙照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item label="4.楼栋数:" prop="buildcount">
|
||||
<el-input-number v-model="pageData.form.buildcount"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="5.住户总数:" prop="householdcount" :rules="[{ required: false, trigger: 'blur', message: '请输入住户总数' }]">
|
||||
<el-input-number v-model="pageData.form.householdcount"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="6.总建筑面积:" prop="totalfloorage" :rules="[{ required: true, trigger: 'blur', message: '请输入总建筑面积' }]">
|
||||
<el-input-number v-model="pageData.form.totalfloorage" :precision="2" :step="1"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="7.是否存在外墙问题:" prop="isExistProblem" :rules="[{ required: true, trigger: 'blur', message: '请选择是否' }]">
|
||||
<el-radio-group v-model="pageData.form.isExistProblem">
|
||||
<el-radio-button label="1" border>是</el-radio-button>
|
||||
<el-radio-button label="0" border>否</el-radio-button>
|
||||
</el-radio-group>
|
||||
<span style="margin-left: 20px; color: #909399">例如:漏水、开裂、脱落</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.楼栋信息:" v-show="pageData?.form?.isExistProblem=='1'">
|
||||
<el-select v-model="pageData.buildingItemId" filterable clearable remote reserve-keyword :remote-method="(v,v2)=>funHandles.getBuildings(v,pageData)" no-data-text="没有这幢" placeholder="请输入关键字后进行选择" style="width:100%" @change="(v,v2)=>funHandles.onChangeSelectBuildings(v,pageData,formRef,childFormRef)">
|
||||
<el-option v-for="item in pageData.form.searchBuildings" :key="item.id" :label="item.buildingName" :value="item.id">
|
||||
<span style="float: left">{{ item.buildingName }}</span>
|
||||
<span style="float: right;color: var(--el-text-color-secondary);font-size: 11px;">{{ item.address }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div v-for="buildingItem in pageData.buildings" v-show="buildingItem?.id==pageData.buildingItemId">
|
||||
<el-space wrap alignment="start" style="margin:20px 0">
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width: 80px">地址:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.address }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">幢名称:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.buildingName }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">层数:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.levelCount }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">总户数:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.houseHolds }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">建设单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.buildingUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">设计单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.desingerUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">施工单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.constructionUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">监理单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.monitorUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">物业单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.wuYeUnit }}</div>
|
||||
</el-space>
|
||||
<el-form ref="childFormRef" :model="buildingItem" label-position="top" inline-message>
|
||||
<!--<el-form-item prop="isproblem" label="是否存在问题" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择是否存在问题' }]">
|
||||
<el-radio-group v-model="buildingItem.isproblem">
|
||||
<el-radio label="是"></el-radio>
|
||||
<el-radio label="否"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>-->
|
||||
<el-form-item prop="curwallproblems" label="8.1 墙体问题的类型是" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择墙体问题' }]">
|
||||
<el-checkbox-group v-model="buildingItem.curwallproblems">
|
||||
<el-checkbox v-for="w in staticData.wallproblems" :label="w" :key="w">{{w}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<el-input type="textarea" autosize placeholder="请输入其他问题" v-model="buildingItem.curwallproblemother" v-if="XEUtils.indexOf(buildingItem.curwallproblems, '其他问题')!=-1"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.2 哪个问题最先开始出现?" v-if="buildingItem?.curwallproblems?.length>1">
|
||||
<el-radio-group v-model="buildingItem.wallproblemsfirst">
|
||||
<el-radio v-for="w in staticData.wallproblems" :label="w">{{w}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="firstproblemdate" label="8.3 第一次出现墙体问题是建成后____年?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择第一次出现墙体问题时间' }]">
|
||||
<el-radio-group v-model="buildingItem.firstproblemdate">
|
||||
<el-radio label="建成后0-5年">建成后0-5年</el-radio>
|
||||
<el-radio label="建成后6-10年">建成后6-10年</el-radio>
|
||||
<el-radio label="建成后11-15年">建成后11-15年</el-radio>
|
||||
<el-radio label="建成后15年以上">建成后15年以上</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemfrequency" label="8.4 墙体脱落发生频率如何?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择墙体脱落发生频率' }]">
|
||||
<el-radio-group v-model="buildingItem.problemfrequency">
|
||||
<el-radio label="1年1-2次">1年1-2次</el-radio>
|
||||
<el-radio label="1年3-5次">1年3-5次</el-radio>
|
||||
<el-radio label="1年5次以上">1年5次以上</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemseason" label="8.5 问题多发生在哪个季节?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择问题发生季节' }]">
|
||||
<el-checkbox-group v-model="buildingItem.problemseason">
|
||||
<el-checkbox label="春" key="春">春</el-checkbox>
|
||||
<el-checkbox label="夏" key="夏">夏</el-checkbox>
|
||||
<el-checkbox label="秋" key="秋">秋</el-checkbox>
|
||||
<el-checkbox label="冬" key="冬">冬</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="wallproblemtoward" label="8.6 墙体问题发生的朝向是哪面?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择问题发生朝向' }]">
|
||||
<el-checkbox-group v-model="buildingItem.wallproblemtoward">
|
||||
<el-checkbox label="东" key="东">东</el-checkbox>
|
||||
<el-checkbox label="西" key="西">西</el-checkbox>
|
||||
<el-checkbox label="南" key="南">南</el-checkbox>
|
||||
<el-checkbox label="北" key="北">北</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.7 问题照片:">
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList1"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,buildingItem.childFileList1)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'东')"
|
||||
style="width:100%">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传东面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList2"
|
||||
:on-preview="(file)=> funHandles.filePreview(file,buildingItem.childFileList2)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'西')"
|
||||
style="width:100%">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传西面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList3"
|
||||
:on-preview="(file)=> funHandles.filePreview(file,buildingItem.childFileList3)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'南')"
|
||||
style="width:100%">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text"><em>上传南面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList4"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,buildingItem.childFileList4)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'北')"
|
||||
style="width:100%">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text"><em>上传北面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemfanwei" label="8.8 发生外墙问题的范围有多大?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择外墙问题的范围' }]">
|
||||
<el-radio-group v-model="buildingItem.problemfanwei">
|
||||
<el-radio label="<外墙面积的25%"></el-radio>
|
||||
<el-radio label="外墙面积的25-50%"></el-radio>
|
||||
<el-radio label="外墙面积的50-75%"></el-radio>
|
||||
<el-radio label="外墙面积的75-100%"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemheight" label="8.9 外墙问题发生在哪个高度?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择外墙问题发生的高度' }]">
|
||||
<el-checkbox-group v-model="buildingItem.problemheight">
|
||||
<el-checkbox label="底层(楼高1/3以下)"></el-checkbox>
|
||||
<el-checkbox label="中层"></el-checkbox>
|
||||
<el-checkbox label="高层(屋顶往下1/3)"></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="diaoluowu" label="8.10 掉落物是什么?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择掉落物' }]">
|
||||
<el-checkbox-group v-model="buildingItem.diaoluowu">
|
||||
<el-checkbox label="墙皮材料"></el-checkbox>
|
||||
<el-checkbox label="保温材料"></el-checkbox>
|
||||
<el-checkbox label="混凝土块"></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemismodify" label="问题发生后是否请人修复了?" v-if="pageData?.form?.isExistProblem=='1'" :rules="[{ required: true, trigger: ['blur'], message: '请选择问题发生后是否请人修复' }]">
|
||||
<el-radio-group v-model="pageData.form.problemismodify">
|
||||
<el-radio label="1">是</el-radio>
|
||||
<el-radio label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="请提供修复单位的名称:" v-if="pageData.form?.problemismodify=='1'">
|
||||
<el-input type="textarea" autosize placeholder="请提供修复单位的名称。" v-model="pageData.form.problemmodifyunitname">
|
||||
rm
|
||||
</el-form-item>
|
||||
<el-form-item label="修复后的部位是否再次发生问题?" v-if="pageData.form?.problemismodify=='1'">
|
||||
<el-radio-group v-model="pageData.form.problemmodifyisagain">
|
||||
<el-radio label="1">有再发生</el-radio>
|
||||
<el-radio label="0">没有</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
若您愿意接受我们的现场调查,请惠赐您的联系方式。谢谢!
|
||||
<el-input type="textarea" autosize placeholder="" v-model="pageData.form.contract">
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!isshowmyinfo">
|
||||
<el-button type="primary" @click.prevent="funHandles.onSubmit(formRef,childFormRef,pageData)"> 提 交 </el-button>
|
||||
<!--<el-button @click.prevent="showinfo()">我的报名</el-button>-->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-image-viewer v-if="pageData.dialogImageUrl"
|
||||
:zIndex="8000"
|
||||
@close="() => { pageData.dialogImageUrl='' }"
|
||||
:url-list="pageData.dialogImageUrls"
|
||||
:initial-index="XEUtils.indexOf(pageData.dialogImageUrls, pageData.dialogImageUrl)"></el-image-viewer>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
const { createApp, onMounted, watch, computed, ref } = Vue
|
||||
const { ElMessageBox, ElNotification, ElLoading, ElMessage } = ElementPlus;
|
||||
|
||||
const app = createApp({
|
||||
setup() {
|
||||
const formRef = ref();
|
||||
const childFormRef = ref();
|
||||
const loginFormRef = ref();
|
||||
|
||||
const pageData = ref({
|
||||
form: {},
|
||||
loginForm: {
|
||||
valiBtn: '获取验证码',
|
||||
disabled: false
|
||||
},
|
||||
//communitys: [],
|
||||
//buildings: [],
|
||||
//buildingItemId: '',
|
||||
dialogLoginVisible: false,
|
||||
uploadaction: "/gb/yjb/api/outsidewall/sysFileInfo/upload"
|
||||
});
|
||||
const checkPhone = (rule, value, callback) => {
|
||||
const regMobile = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的手机号码"))
|
||||
};
|
||||
const rulesCheckData = {
|
||||
checkPhone: (rule, value, callback) => {
|
||||
const regMobile = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的手机号码"))
|
||||
},
|
||||
checkCode: (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入验证码"))
|
||||
} else if (!/^[0-9]+$/.test(value) || !/^\d{4}$/.test(value)) {
|
||||
callback(new Error("请输入4位数字的验证码"))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
checkNumber: (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("不能为空"))
|
||||
} else if (!/^[0-9]+$/.test(value)) {
|
||||
callback(new Error("必需为数字"))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
checkCardNo: (rule, value, callback) => {
|
||||
const regMobile = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的身份证号码"))
|
||||
}
|
||||
};
|
||||
const staticData = { wallproblems: ['漏水', '开裂', '脱落', '空鼓', '其他问题'] };
|
||||
const funHandles = {
|
||||
init: async (data) => {
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/VerifyIsLogin?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
if (response.data.data != true) {
|
||||
//if (!window.sessionStorage.getItem('__VerifyLogin'))
|
||||
data.dialogLoginVisible = true
|
||||
} else {
|
||||
data.uploadaction = `/gb/yjb/api/outsidewall/sysFileInfo/upload?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`
|
||||
}
|
||||
//do {
|
||||
// data.key = await funHandles.verifyKey(data);
|
||||
//} while (data.key == false);
|
||||
|
||||
//await funHandles.getCommunitys("", data);
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
//await ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
//window.location.reload();//刷新当前页面
|
||||
data.dialogLoginVisible = true
|
||||
}
|
||||
},
|
||||
getCode(v, pageData, loginFormRef) {
|
||||
loginFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
console.log('已通过')
|
||||
console.log(pageData.loginForm.phone)
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/ningbozhichun/sendcode',
|
||||
data: pageData.loginForm,
|
||||
responseType: "json",
|
||||
}).then(async response => {
|
||||
if (response.data.data != true) {
|
||||
await ElMessageBox.alert("发送失败:" + response.data.message, '错误', { type: 'error' });
|
||||
} else {
|
||||
funHandles.tackBtn(pageData); //验证码倒数60秒
|
||||
}
|
||||
//_this.loading = false;
|
||||
}).catch(async error => {
|
||||
console.log(error)
|
||||
await ElMessageBox.alert(error.message, '错误', { type: 'error' });
|
||||
})
|
||||
} else {
|
||||
console.log('未通过')
|
||||
return;
|
||||
}
|
||||
});
|
||||
},
|
||||
tackBtn(pageData) { //验证码倒数60秒
|
||||
let time = 60;
|
||||
let timer = setInterval(() => {
|
||||
if (time == 0) {
|
||||
clearInterval(timer);
|
||||
pageData.loginForm.valiBtn = '获取验证码';
|
||||
pageData.loginForm.disabled = false;
|
||||
} else {
|
||||
pageData.loginForm.disabled = true;
|
||||
pageData.loginForm.valiBtn = time + '秒后重试';
|
||||
time--;
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
verifyKey: async (pageData) => {
|
||||
if (pageData.loginForm?.phone?.length != 11 || pageData.loginForm?.code?.length != 4) {
|
||||
//ElMessage.error('请将内容输入完整后再次点击登录!')
|
||||
ElMessage({
|
||||
message: '请将内容输入完整后再次点击登录!',
|
||||
type: 'warning',
|
||||
})
|
||||
return;
|
||||
}
|
||||
try {
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: `/gb/yjb/api/outsidewall/VerifyLogin`,
|
||||
data: pageData.loginForm,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
if (response.data.data.passed == true) {
|
||||
window.sessionStorage.setItem('__VerifyLogin', response.data.data.token);
|
||||
await funHandles.getCommunitys("", pageData);
|
||||
pageData.dialogLoginVisible = false
|
||||
pageData.uploadaction = `/gb/yjb/api/outsidewall/sysFileInfo/upload?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`
|
||||
//return response.data.data;
|
||||
}
|
||||
else {
|
||||
await ElMessageBox.alert("验证码错误或已失效,登录失败", '登录', { type: 'error' });
|
||||
}
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
await ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
//window.location.reload();//刷新当前页面
|
||||
}
|
||||
},
|
||||
getCommunitys: async (queryString, data) => {
|
||||
try {
|
||||
if (queryString == undefined || queryString == "")
|
||||
return;
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/Communitys?access_token=${window.sessionStorage.getItem('__VerifyLogin')}&searchkey=${queryString ?? ''}`,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
data.communitys = response.data.data;
|
||||
return response.data.data;
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
if (error.response.status == 401)
|
||||
ElMessageBox.alert("请先登录", '异常', { type: 'error' });
|
||||
else
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
},
|
||||
onChangeSelectCommunity: async (v, data) => {
|
||||
if (v) {
|
||||
const { name, id } = JSON.parse(v)
|
||||
try {
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
const response = (window.cacheCommunitysData && window.cacheCommunitysData[id]) ?? await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/Communitys/' + id,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
|
||||
if (!window.cacheCommunitysData) window.cacheCommunitysData = [];
|
||||
if (!window.cacheCommunitysData[id]) window.cacheCommunitysData[id] = response;
|
||||
|
||||
data.buildings = response.data.data;
|
||||
if (!data.form) data.form = {};
|
||||
data.form.communityId = id;
|
||||
data.form.communityName = name;
|
||||
//data.form.buildings = response.data.data?.map(x => (
|
||||
// {
|
||||
// id: x.id,
|
||||
// address: x.address,
|
||||
// buildingName: x.buildingName,
|
||||
// levelCount: x.levelCount,
|
||||
// houseHolds: x.houseHolds,
|
||||
// buildingUnit: x.buildingUnit,
|
||||
// desingerUnit: x.desingerUnit,
|
||||
// constructionUnit: x.constructionUnit,
|
||||
// monitorUnit: x.monitorUnit,
|
||||
// wuYeUnit: x.wuYeUnit,
|
||||
// }
|
||||
//)) ?? [];
|
||||
data.form.buildcount = data.buildings.length;//楼栋数
|
||||
data.form.householdcount = data.buildings.reduce((a, key) => { return a + key.houseHolds }, 0);//住户总数
|
||||
data.form.totalfloorage = data.buildings.reduce((a, key) => { return a + key.areaCount }, 0);//总建筑面积
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
} else {
|
||||
data.buildings = [];
|
||||
data.form = {}
|
||||
}
|
||||
},
|
||||
getBuildings: async (v, data) => {
|
||||
if (v == undefined || v == "")
|
||||
return;
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/Community/${data.form.communityId}?querystring=${v ?? ''}`,
|
||||
responseType: "json",
|
||||
});
|
||||
if (!window.cacheCommunitysData) window.cacheCommunitysData = [];
|
||||
if (!window.cacheCommunitysData[data.form.communityId]) window.cacheCommunitysData[data.form.communityId] = response;
|
||||
//data.buildings = response.data.data;
|
||||
data.form.searchBuildings = response.data.data?.map(x => (
|
||||
{
|
||||
id: x.id,
|
||||
address: x.address,
|
||||
buildingName: x.buildingName,
|
||||
levelCount: x.levelCount,
|
||||
houseHolds: x.houseHolds,
|
||||
buildingUnit: x.buildingUnit,
|
||||
desingerUnit: x.desingerUnit,
|
||||
constructionUnit: x.constructionUnit,
|
||||
monitorUnit: x.monitorUnit,
|
||||
wuYeUnit: x.wuYeUnit,
|
||||
}
|
||||
)) ?? [];
|
||||
},
|
||||
onChangeSelectBuildings: async (v, data, formEl, childFormEl) => {
|
||||
if (v) {
|
||||
try {
|
||||
let isAllChildValid = false;
|
||||
if (data?.form?.isExistProblem == '0') { isAllChildValid = true; }
|
||||
else {
|
||||
//验证
|
||||
var waitValid = data.form?.buildingsForm?.filter(a => a.building.curwallproblems.length > 0)
|
||||
if (waitValid?.length > 0) {
|
||||
for (let ii = 0; ii < waitValid.length; ii++) {
|
||||
let _fe = waitValid[ii]?.formEl;
|
||||
const isValid = await _fe?.validate(valid => {
|
||||
if (!valid) {
|
||||
data.buildingItemId = waitValid[ii].building.id;
|
||||
}
|
||||
});
|
||||
if (isValid == false) {
|
||||
ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
isAllChildValid = true;
|
||||
}
|
||||
else {
|
||||
//ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
}
|
||||
|
||||
|
||||
|
||||
const fromMerges = childFormEl.map((x, ii) => ({ formEl: x, building: data.buildings[ii] }));
|
||||
//let validateFroms = [].concat(data?.form.buildingsForm?.filter(x => x.building.curwallproblems?.length > 0));
|
||||
//if (validateFroms.length > 0) {
|
||||
// for (let ii = 0; ii < validateFroms.length; ii++) {
|
||||
// let _fe = validateFroms[ii]?.formEl;
|
||||
// const isValid = _fe ?? await _fe?.validate(valid => {
|
||||
// if (!valid) {
|
||||
// data.buildingItemId = validateFroms[ii].building.id;
|
||||
// }
|
||||
// });
|
||||
// if (isValid == false) {
|
||||
// ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// isAllChildValid = true;
|
||||
//}
|
||||
//else {
|
||||
// ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
if (!data.form.buildings) {
|
||||
data.form.buildings = []
|
||||
}
|
||||
if (!data.form.buildingsForm) {
|
||||
data.form.buildingsForm = []
|
||||
}
|
||||
|
||||
var c = window.cacheCommunitysData[data.form.communityId].data.data.filter(a => a.id == v)
|
||||
data.form.buildings.push(c[0])
|
||||
data.form.buildingsForm.push(fromMerges.filter(x => x.building.id == data.buildingItemId)[0])
|
||||
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
onSubmit: (formEl, childFormEl, data) => {
|
||||
console.log('submit!');
|
||||
formEl.validate(async (valid) => {
|
||||
if (valid) {
|
||||
let isAllChildValid = false;
|
||||
if (data?.form?.isExistProblem == '0') { isAllChildValid = true; }
|
||||
else {
|
||||
var waitValid = data.form?.buildingsForm?.filter(a => a.building.curwallproblems.length > 0)
|
||||
if (waitValid?.length > 0) {
|
||||
for (let ii = 0; ii < waitValid.length; ii++) {
|
||||
let _fe = waitValid[ii]?.formEl;
|
||||
const isValid = await _fe?.validate(valid => {
|
||||
if (!valid) {
|
||||
data.buildingItemId = waitValid[ii].building.id;
|
||||
}
|
||||
});
|
||||
if (isValid == false) {
|
||||
ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
isAllChildValid = true;
|
||||
}
|
||||
else {
|
||||
ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
}
|
||||
|
||||
//const fromMerges = childFormEl.map((x, ii) => ({ formEl: x, building: data.form.buildings[ii] }));
|
||||
|
||||
////const validateFroms = [].concat(fromMerges.filter(x => x.building.id == data.buildingItemId), fromMerges.filter(x => x.building.curwallproblems?.length > 0));
|
||||
|
||||
//let validateFroms = [].concat(data?.form.buildings.filter(x => x.id == data.buildingItemId), data?.form.buildings.filter(x => x.curwallproblems?.length > 0));
|
||||
|
||||
//if (validateFroms.length > 0) {
|
||||
// for (let ii = 0; ii < validateFroms.length; ii++) {
|
||||
// const isValid = await validateFroms[ii].formEl.validate(valid => {
|
||||
// if (!valid) {
|
||||
// data.buildingItemId = validateFroms[ii].building.id;
|
||||
// }
|
||||
// });
|
||||
// if (!isValid) {
|
||||
// ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// isAllChildValid = true;
|
||||
//}
|
||||
//else {
|
||||
// ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
//}
|
||||
}
|
||||
|
||||
if (isAllChildValid) {
|
||||
ElMessageBox.confirm('确定提交吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
debugger
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '提交中...请稍候' });
|
||||
try {
|
||||
data.form.buildings = data.form.buildings?.filter(a => a.curwallproblems?.length > 0)
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
method: 'post',
|
||||
url: `/gb/yjb/api/outsidewall/submit?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`,
|
||||
data: data.form,
|
||||
responseType: "json"
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
|
||||
//debugger;
|
||||
if (response.data?.success == true) {
|
||||
await ElMessageBox.alert('提交成功', '成功', { type: 'success' });
|
||||
window.location.reload();//刷新当前页面
|
||||
} else {
|
||||
ElMessageBox.alert(response.data.message, '异常', { type: 'error' });
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
}).catch(() => { });
|
||||
}
|
||||
}
|
||||
else {
|
||||
ElMessageBox.alert("社区信息问卷未填写完整", '提示', { type: 'warning' });
|
||||
}
|
||||
});
|
||||
},
|
||||
fileChange: (response, file, fileList) => {
|
||||
if (response.success == false) {
|
||||
ElMessageBox.alert('上传失败,请稍候重试', '异常', { type: 'error' });
|
||||
return;
|
||||
}
|
||||
if (file.response) {
|
||||
if (!pageData.value.form.fileList) pageData.value.form.fileList = [];
|
||||
pageData.value.form.fileList.push(file.response.data);
|
||||
}
|
||||
},
|
||||
fileRemove: async (file, fileList) => {
|
||||
console.log(file, fileList);
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/sysFileInfo/delete/' + file.response.data,
|
||||
responseType: "json",
|
||||
});
|
||||
|
||||
if (file.response && pageData.value.form.fileList) {
|
||||
pageData.value.form.fileList = pageData.value.form.fileList.filter((a) => { return a != file.response.data });
|
||||
}
|
||||
//}
|
||||
|
||||
window.loadingInstance?.close();
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
},
|
||||
fileChildChange: (response, file, fileList, scope, toward) => {
|
||||
if (response.success == false) {
|
||||
ElMessageBox.alert('上传失败,请稍候重试', '异常', { type: 'error' });
|
||||
return;
|
||||
}
|
||||
|
||||
if (file.response) {
|
||||
var _pf = {
|
||||
file: file.response.data,
|
||||
toward: toward
|
||||
}
|
||||
if (!scope.problemfiles) scope.problemfiles = [];
|
||||
scope.problemfiles.push(_pf)
|
||||
}
|
||||
},
|
||||
fileChildRemove: async (file, fileList, scope) => {
|
||||
console.log(file, fileList);
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/sysFileInfo/delete/' + file.response.data,
|
||||
responseType: "json",
|
||||
});
|
||||
|
||||
if (file.response && scope.problemfiles) {
|
||||
scope.problemfiles = scope.problemfiles.filter((a) => { return a.file != file.response.data });
|
||||
}
|
||||
|
||||
window.loadingInstance?.close();
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
},
|
||||
filePreview: (file, fileList) => {
|
||||
pageData.value.dialogImageUrl = window.location.protocol + "//" + window.location.host + "/gb/yjb/api/outsidewall/sysFileInfo/preview/" + file.response.data;
|
||||
pageData.value.dialogImageUrls = fileList.map(a => window.location.protocol + "//" + window.location.host + "/gb/yjb/api/outsidewall/sysFileInfo/preview/" + a.response.data);
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
await funHandles.init(pageData.value);
|
||||
});
|
||||
|
||||
return {
|
||||
XEUtils,
|
||||
formRef,
|
||||
childFormRef,
|
||||
loginFormRef,
|
||||
rulesCheckData,
|
||||
checkPhone,
|
||||
pageData,
|
||||
staticData,
|
||||
funHandles
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
app.use(ElementPlus, { locale: ElementPlusLocaleZhCn });
|
||||
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
||||
app.component(key, component)
|
||||
}
|
||||
app.mount("#app");
|
||||
</script>
|
||||
<style>
|
||||
.upload-demo .el-upload-dragger {
|
||||
height: 100%;
|
||||
border-width: 0;
|
||||
padding: 20px var(--el-upload-dragger-padding-vertical);
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
@@ -99,7 +99,8 @@
|
||||
window.sessionStorage.setItem('__TOKEN', response.data.data.token);
|
||||
//location = '/gb/yjb/manage/VoteResult'
|
||||
//location = '/gb/yjb/manage/nbczResult'
|
||||
location = '/202307/html/outsidewall/result.html'
|
||||
//location = '/202307/html/outsidewall/result.html'
|
||||
location = '../yjbvote/voteresult.html';
|
||||
}
|
||||
}
|
||||
_this.loading = false;
|
||||
|
||||
115
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/Expert.html
Normal file
115
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/Expert.html
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
<script src="http://lib.baomitu.com/qs/6.10.3/qs.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" v-loading="loading">
|
||||
<h3 style="text-align:center;">2023年度宁波市“甬江建设杯”选票结果</h3>
|
||||
<el-table :data="tableData" style="width: 20%;margin:0 auto;">
|
||||
<el-table-column prop="login_code" label="专家"> </el-table-column>
|
||||
<el-table-column prop="is_vote" label="是否投票" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_vote==true">已投</el-tag>
|
||||
<el-tag type="danger" v-else>未投</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<h3 style="text-align:center;">
|
||||
<el-button @click="load_vote">刷新数据</el-button>
|
||||
<el-button @click="show_expert_vote">查看项目投票情况</el-button>
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
<style scoped>
|
||||
.buhuanhang {
|
||||
white-space: nowrap;
|
||||
width: 21%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: function () {
|
||||
return {
|
||||
tableData: [],
|
||||
loading: false,
|
||||
token: ''
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.check_login()
|
||||
this.loading = true;
|
||||
this.load_vote();
|
||||
|
||||
},
|
||||
methods: {
|
||||
show_expert_vote() {
|
||||
location = 'voteresult.html'
|
||||
},
|
||||
check_login() {
|
||||
this.token = window.sessionStorage.getItem('__TOKEN');
|
||||
if (!this.token)
|
||||
location = '../manage/login.html'
|
||||
},
|
||||
|
||||
load_vote() {
|
||||
this.loading = true;
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/expert-vote',
|
||||
data: {},
|
||||
responseType: "json",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
_this.tableData = response.data.data
|
||||
console.log(_this.tableData)
|
||||
_this.loading = false;
|
||||
}).catch(function (error) {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
},
|
||||
loading_false() { this.loading = false },
|
||||
|
||||
dateFormat(fmt, date) {
|
||||
let ret;
|
||||
const opt = {
|
||||
"Y+": date.getFullYear().toString(), // 年
|
||||
"m+": (date.getMonth() + 1).toString(), // 月
|
||||
"d+": date.getDate().toString(), // 日
|
||||
"H+": date.getHours().toString(), // 时
|
||||
"M+": date.getMinutes().toString(), // 分
|
||||
"S+": date.getSeconds().toString() // 秒
|
||||
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
||||
};
|
||||
for (let k in opt) {
|
||||
ret = new RegExp("(" + k + ")").exec(fmt);
|
||||
if (ret) {
|
||||
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
|
||||
};
|
||||
};
|
||||
return fmt;
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,283 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/lib/element-ui/theme-chalk/index.css">
|
||||
<script src="/lib/vue2/vue.min.js"></script>
|
||||
<script src="/lib/element-ui/theme-chalk/index.js"></script>
|
||||
<script src="/lib/axios/axios.min.js"></script>
|
||||
<script src="/lib/qs/qs.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" v-loading="loading">
|
||||
<h3 style="text-align:center;">2021年度宁波市“甬江建设杯”选票结果</h3>
|
||||
<el-collapse style="width: 80%;margin:0 auto;">
|
||||
<el-collapse-item v-for="(prolist,idx) in tableData" :title="prolist.name" :name="idx" v-show="prolist.data.length>0" :key="idx">
|
||||
<el-table :data="prolist.data" style="width:95%;margin:0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
|
||||
|
||||
|
||||
<!--<el-collapse-item title="房建工程" name="1">
|
||||
<el-table :data="tableData0" style="width:95%;margin:0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="市政工程" name="2">
|
||||
<el-table :data="tableData1" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="轨道工程" name="3">
|
||||
<el-table :data="tableData2" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="电力工程" name="4">
|
||||
<el-table :data="tableData3" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="交通工程" name="5">
|
||||
<el-table :data="tableData4" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="水利工程" name="6">
|
||||
<el-table :data="tableData5" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>-->
|
||||
<!--</el-collapsestyle="width:>-->
|
||||
|
||||
|
||||
<h3 style="text-align:center;">
|
||||
<el-button @click="load_projects">刷新数据</el-button>
|
||||
<el-button type="primary" @click="export_excel">导出Excel</el-button>
|
||||
<el-button @click="show_expert_vote">查看专家投票情况</el-button>
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
<style scoped>
|
||||
.buhuanhang {
|
||||
white-space: nowrap;
|
||||
width: 21%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: function () {
|
||||
return {
|
||||
tableData: [],
|
||||
tableData0: [],
|
||||
tableData1: [],
|
||||
tableData2: [],
|
||||
tableData3: [],
|
||||
tableData4: [],
|
||||
tableData5: [],
|
||||
loading: false,
|
||||
token: ''
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.check_login()
|
||||
this.loading = true;
|
||||
this.load_projects();
|
||||
|
||||
},
|
||||
methods: {
|
||||
show_expert_vote() {
|
||||
//location = '/gb/yjb/manage/expert'
|
||||
location = 'Expert.html'
|
||||
},
|
||||
export_excel() {
|
||||
this.download('/gb/yjb/api/projects/download', this.dateFormat("YYYYmmddHHMMSS", new Date()) + "-2022年度甬江杯投票.xlsx", this.loading_false);
|
||||
},
|
||||
check_login() {
|
||||
this.token = window.sessionStorage.getItem('__TOKEN');
|
||||
if (!this.token)
|
||||
location = '../manage/login.html'
|
||||
},
|
||||
|
||||
load_projects() {
|
||||
this.loading = true;
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/list2',
|
||||
data: {},
|
||||
responseType: "json",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
_this.tableData = [];
|
||||
console.log(response)
|
||||
var _data = response.data.data.data
|
||||
var typeList = response.data.data.typeList
|
||||
for (var i = 0; i < typeList.length; i++) {
|
||||
var _p = _data.filter(a => { return a.type == i; });
|
||||
_this.tableData.push({ name: typeList[i], data: _p })
|
||||
}
|
||||
console.log(_this.tableData)
|
||||
//_this.tableData0 = response.data.data.data0
|
||||
//_this.tableData1 = response.data.data.data1
|
||||
//_this.tableData2 = response.data.data.data2
|
||||
//_this.tableData3 = response.data.data.data3
|
||||
//_this.tableData4 = response.data.data.data4
|
||||
//_this.tableData5 = response.data.data.data5
|
||||
//console.log(_this.tableData0)
|
||||
_this.loading = false;
|
||||
}).catch(function (error) {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
},
|
||||
loading_false() { this.loading = false },
|
||||
|
||||
download(url, filename, callback) {
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: url,
|
||||
data: {},
|
||||
responseType: "blob",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
console.log(response);
|
||||
//解析文件充blod中解析
|
||||
const url = window.URL.createObjectURL(
|
||||
new Blob([response.data], { type: "application/vnd.ms-excel" })
|
||||
);
|
||||
const link = document.createElement("a");
|
||||
link.style.display = "none";
|
||||
link.href = url;
|
||||
link.setAttribute("download", filename);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
callback();
|
||||
}).catch(function (error) {
|
||||
callback();
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
})
|
||||
},
|
||||
getMonthWeek(now) {
|
||||
var a = now.getYear();
|
||||
var b = now.getMonth() + 1;
|
||||
var c = now.getDate();
|
||||
/*
|
||||
a = d = 当前日期
|
||||
b = 6 - w = 当前周的还有几天过完(不算今天)
|
||||
a + b 的和在除以7 就是当天是当前月份的第几周
|
||||
*/
|
||||
var date = new Date(a, parseInt(b) - 1, c), w = date.getDay(), d = date.getDate();
|
||||
return Math.ceil(
|
||||
(d + 6 - w) / 7
|
||||
);
|
||||
},
|
||||
dateFormat(fmt, date) {
|
||||
let ret;
|
||||
const opt = {
|
||||
"Y+": date.getFullYear().toString(), // 年
|
||||
"m+": (date.getMonth() + 1).toString(), // 月
|
||||
"d+": date.getDate().toString(), // 日
|
||||
"H+": date.getHours().toString(), // 时
|
||||
"M+": date.getMinutes().toString(), // 分
|
||||
"S+": date.getSeconds().toString() // 秒
|
||||
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
||||
};
|
||||
for (let k in opt) {
|
||||
ret = new RegExp("(" + k + ")").exec(fmt);
|
||||
if (ret) {
|
||||
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
|
||||
};
|
||||
};
|
||||
return fmt;
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
</html>
|
||||
409
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/index.html
Normal file
409
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/index.html
Normal file
@@ -0,0 +1,409 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/lib/element-ui/theme-chalk/index.css">
|
||||
<script src="/lib/vue2/vue.min.js"></script>
|
||||
<script src="/lib/element-ui/theme-chalk/index.js"></script>
|
||||
<script src="/lib/axios/axios.min.js"></script>
|
||||
<script src="/lib/qs/qs.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" v-loading="loading">
|
||||
<h3 style="text-align:center;">2023年度宁波市“甬江建设杯”选票</h3>
|
||||
<el-collapse>
|
||||
<el-collapse-item v-for="(prolist,idx) in projects" :title="prolist.name" :name="idx" v-show="prolist.data.length>0" :key="idx">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in prolist.data" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
|
||||
|
||||
|
||||
<!--<el-collapse-item title="房建工程" name="1" v-show="projects0.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects0" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="市政工程" name="2" v-show="projects1.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects1" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="轨道工程" name="3" v-show="projects2.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects2" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="电力工程" name="4" v-show="projects3.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects3" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="交通工程" name="5" v-show="projects4.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects4" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="水利工程" name="6" v-show="projects5.length>0">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects5" :key="project.id">
|
||||
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请投票">
|
||||
<template>
|
||||
<el-radio-group v-model="project.vote">
|
||||
<el-radio label="true">同意</el-radio>
|
||||
<el-radio label="false">淘汰</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>-->
|
||||
</el-collapse>
|
||||
<h3 style="text-align:center;">
|
||||
<el-input v-model="logincode" placeholder="请输入提交码"></el-input>
|
||||
</h3>
|
||||
<h3 style="text-align:center;">
|
||||
<el-button @click="alltrue">重置</el-button>
|
||||
<el-button type="primary" @click="submit">提交</el-button>
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
<style scoped>
|
||||
.buhuanhang {
|
||||
white-space: nowrap;
|
||||
width: 21%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: function () {
|
||||
return {
|
||||
projects: [],
|
||||
projects0: [],
|
||||
projects1: [],
|
||||
projects2: [],
|
||||
projects3: [],
|
||||
projects4: [],
|
||||
projects5: [],
|
||||
confirm_title: '',
|
||||
loading: false,
|
||||
logincode: ''
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.loading = true;
|
||||
this.load_projects();
|
||||
|
||||
},
|
||||
methods: {
|
||||
alltrue() {
|
||||
this.projects.map(a => {
|
||||
a.data.map(b => { b.vote = "true"; return b; })
|
||||
});
|
||||
//this.projects0 = this.projects0.map(a => { a.vote = "true"; return a; });
|
||||
//this.projects1 = this.projects1.map(a => { a.vote = "true"; return a; });
|
||||
//this.projects2 = this.projects2.map(a => { a.vote = "true"; return a; });
|
||||
//this.projects3 = this.projects3.map(a => { a.vote = "true"; return a; });
|
||||
//this.projects4 = this.projects4.map(a => { a.vote = "true"; return a; });
|
||||
//this.projects5 = this.projects5.map(a => { a.vote = "true"; return a; });
|
||||
},
|
||||
async checkcode() {
|
||||
let _this = this;
|
||||
//检验码
|
||||
if (this.logincode.length < 6) {
|
||||
this.$alert(`<div>提交码输入错误</div>`, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return false;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/check-submit-code',
|
||||
data: { 'code': this.logincode },
|
||||
responseType: "json",
|
||||
}).then(async response => {
|
||||
if (response.data.data != true) {
|
||||
_this.$alert(`<div>提交码输入错误</div>`, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
reject();
|
||||
} else {
|
||||
resolve(true)
|
||||
}
|
||||
_this.loading = false;
|
||||
}).catch(async error => {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
})
|
||||
},
|
||||
async submit() {
|
||||
let _this = this;
|
||||
await this.checkcode().then(a => {
|
||||
if (a == false)
|
||||
return;
|
||||
var msg1 = "";
|
||||
var msg2 = "";
|
||||
var all_no_select_num = 0;
|
||||
var select_false_list = [];
|
||||
var all_select_false_num = 0;
|
||||
var all_select_true_num = 0;
|
||||
var allselects = [];
|
||||
for (var i = 0; i < _this.projects.length; i++) {
|
||||
var _p = _this.projects[i];
|
||||
if (_p.data.length > 0) {
|
||||
var no_select = _p.data.filter(a => { return !a.vote }).length;
|
||||
all_no_select_num += no_select;
|
||||
if (no_select > 0) {
|
||||
msg1 += `<p>目前[` + _p.name + `]未选择的有` + no_select + `个</p>`;
|
||||
}
|
||||
var select_false = _p.data.filter(a => { return a.vote == "false" }).length;
|
||||
select_false_list.push(select_false)
|
||||
if (select_false < 1) {
|
||||
msg2 += `<p>目前[` + _p.name + `]淘汰的有` + select_false + `个</p>`;
|
||||
}
|
||||
all_select_false_num += select_false;
|
||||
all_select_true_num += _p.data.filter(a => { return a.vote == "true" }).length;
|
||||
allselects = allselects.concat(_p.data)
|
||||
}
|
||||
}
|
||||
if (all_no_select_num > 0) {
|
||||
this.$alert(`<div>请全部选择完毕后再次提交!</div>` + msg1, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
debugger
|
||||
//if (select_false_list.filter(a => a < 1).length > 0) {
|
||||
// this.$alert(`<div>每个专业必须有一个淘汰!</div>` + msg2, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
//房建不少于14个
|
||||
if (select_false_list[0] < 13) {
|
||||
this.$alert(`<div>房建工程不少于13个淘汰!</div>` + msg2, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
//市政不少于1个
|
||||
if (select_false_list[1] < 1) {
|
||||
this.$alert(`<div>房建工程不少于1个淘汰!</div>` + msg2, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
//if (all_select_false_num != 8) {
|
||||
// this.$alert(`<div>淘汰总数只能等于8个!</div>` + msg2, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
this.$confirm('您此次选择了同意' + all_select_true_num + '个,淘汰' + all_select_false_num + '个,是否继续提交?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
_this.loading = true;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/submit-vote',
|
||||
data: { 'code': this.logincode, 'projects': allselects },
|
||||
responseType: "json",
|
||||
}).then(async response => {
|
||||
if (response.data.data != true) {
|
||||
_this.$alert(`<div>` + response.data.message + `</div>`, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
} else {
|
||||
_this.$alert(`<div>提交成功</div>`, '成功', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
}
|
||||
_this.loading = false;
|
||||
}).catch(async error => {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
}).catch(() => {
|
||||
|
||||
});
|
||||
//var no_select0 = this.projects0.filter(a => { return !a.vote }).length;
|
||||
//var no_select1 = this.projects1.filter(a => { return !a.vote }).length;
|
||||
//var no_select2 = this.projects2.filter(a => { return !a.vote }).length;
|
||||
//var no_select3 = this.projects3.filter(a => { return !a.vote }).length;
|
||||
//var no_select4 = this.projects4.filter(a => { return !a.vote }).length;
|
||||
//var no_select5 = this.projects5.filter(a => { return !a.vote }).length;
|
||||
//if (no_select0 > 0 || no_select1 > 0 || no_select2 > 0 || no_select3 > 0 || no_select4 > 0 || no_select5 > 0) {
|
||||
// this.$alert(`<div>请全部选择完毕后再次提交!</div><p>目前[房建工程]未选择的有` + no_select0 + `个</p><p>目前[市政工程]未选择的有` + no_select1 + `个</p><p>目前[轨道工程]未选择的有` + no_select2 + `个</p><p>目前[电力工程]未选择的有` + no_select3 + `个</p><p>目前[交通工程]未选择的有` + no_select4 + `个</p><p>目前[水利工程]未选择的有` + no_select5 + `个</p>`, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
////每个专业必须有一个淘汰
|
||||
//no_select0 = this.projects0.filter(a => { return a.vote == "false" }).length;
|
||||
//no_select1 = this.projects1.filter(a => { return a.vote == "false" }).length;
|
||||
//no_select2 = this.projects2.filter(a => { return a.vote == "false" }).length;
|
||||
//no_select3 = this.projects3.filter(a => { return a.vote == "false" }).length;
|
||||
//no_select4 = this.projects4.filter(a => { return a.vote == "false" }).length;
|
||||
//no_select5 = this.projects5.filter(a => { return a.vote == "false" }).length;
|
||||
//if (no_select0 < 1 || no_select1 < 1 || no_select2 < 1 || no_select3 < 1 || no_select4 < 1 || no_select5 < 1) {
|
||||
// this.$alert(`<div>每个专业必须有一个淘汰!</div><p>目前[房建工程]淘汰的有` + no_select0 + `个</p><p>目前[市政工程]淘汰的有` + no_select1 + `个</p><p>目前[轨道工程]淘汰的有` + no_select2 + `个</p><p>目前[电力工程]淘汰的有` + no_select3 + `个</p><p>目前[交通工程]淘汰的有` + no_select4 + `个</p><p>目前[水利工程]淘汰的有` + no_select5 + `个</p>`, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
//var allselects = this.projects0.concat(this.projects1).concat(this.projects2).concat(this.projects3).concat(this.projects4).concat(this.projects5);
|
||||
//console.log('allselects:', allselects)
|
||||
//if (allselects.filter(a => { return a.vote == "false" }).length != 8) {
|
||||
// this.$alert(`<div>淘汰总数只能等于8个!</div>`, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
//var allselects = this.projects0.concat(this.projects1).concat(this.projects2).concat(this.projects3).concat(this.projects4).concat(this.projects5);
|
||||
//this.$confirm('您此次选择了同意' + allselects.filter(a => { return a.vote == "true" }).length + '个,淘汰' + allselects.filter(a => { return a.vote == "false" }).length + '个,是否继续提交?', '提示', {
|
||||
// confirmButtonText: '确定',
|
||||
// cancelButtonText: '取消',
|
||||
// type: 'warning'
|
||||
//}).then(() => {
|
||||
// _this.loading = true;
|
||||
// axios({
|
||||
// headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
// method: 'post',
|
||||
// url: '/gb/yjb/api/projects/submit-vote',
|
||||
// data: { 'code': this.logincode, 'projects': allselects },
|
||||
// responseType: "json",
|
||||
// }).then(async response => {
|
||||
// if (response.data.data != true) {
|
||||
// _this.$alert(`<div>` + response.data.message + `</div>`, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// } else {
|
||||
// _this.$alert(`<div>提交成功</div>`, '成功', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// }
|
||||
// _this.loading = false;
|
||||
// }).catch(async error => {
|
||||
// console.log(error)
|
||||
// _this.$message({
|
||||
// type: 'error',
|
||||
// message: error.message
|
||||
// })
|
||||
// _this.loading = false;
|
||||
// })
|
||||
//}).catch(() => {
|
||||
|
||||
//});
|
||||
|
||||
|
||||
})
|
||||
},
|
||||
load_projects() {
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/list',
|
||||
data: {},
|
||||
responseType: "json",
|
||||
}).then(function (response) {
|
||||
//console.log(response)
|
||||
var _data = response.data.data.data
|
||||
var typeList = response.data.data.typeList
|
||||
_data.map(a => { a.vote = !a.vote ? '' : a.vote.toString(); return a; });
|
||||
for (var i = 0; i < typeList.length; i++) {
|
||||
var _p = _data.filter(a => { return a.type == i; });
|
||||
_this.projects.push({ name: typeList[i], data: _p })
|
||||
}
|
||||
//console.log(_this.projects)
|
||||
//_this.projects.map(a => { a.vote = !a.vote ? '' : a.vote.toString(); return a; });
|
||||
//_this.projects0 = _this.projects.filter(a => { return a.type == 0; })
|
||||
//_this.projects1 = _this.projects.filter(a => { return a.type == 1; })
|
||||
//_this.projects2 = _this.projects.filter(a => { return a.type == 2; })
|
||||
//_this.projects3 = _this.projects.filter(a => { return a.type == 3; })
|
||||
//_this.projects4 = _this.projects.filter(a => { return a.type == 4; })
|
||||
//_this.projects5 = _this.projects.filter(a => { return a.type == 5; })
|
||||
_this.alltrue();
|
||||
_this.loading = false;
|
||||
}).catch(function (error) {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
},
|
||||
loading_false() { this.loading = false },
|
||||
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/vue2/vue.min.js
vendored
Normal file
11
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/vue2/vue.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -118,7 +118,7 @@ namespace Vote.Services.Tools
|
||||
{
|
||||
try
|
||||
{
|
||||
string template_name = "2022年度甬江杯投票.xlsx";
|
||||
string template_name = "2023年度甬江杯投票.xlsx";
|
||||
string excelFilePath = $"{App.WebHostEnvironment.WebRootPath}\\ExcelTemplate\\{template_name}";
|
||||
string outputPath = string.Empty;
|
||||
if (!string.IsNullOrEmpty(excelFilePath))
|
||||
|
||||
Reference in New Issue
Block a user