Authored by 王涛

Merge branch 'master-mj-yuanjinpengnew' into 'master-mj'

fix:山西特色功能迁移 备份模块和基础环境管理模块儿



See merge request !1109

Too many changes to show.

To preserve performance only 18 of 18+ files are displayed.

  1 +//备份失败列表
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions','soulTable'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions
  10 + var domainName = common.domainName;
  11 + var soulTable = layui.soulTable;
  12 + //对外暴露的接口
  13 + exports("backDetailList", function (d) {
  14 + var accessToken = localStorage.getItem("accessToken");
  15 +
  16 + createFailTable()
  17 + function dateForm(time) {
  18 + var unixTimestamp = new Date(time);
  19 + var commonTime = unixTimestamp.toLocaleString();
  20 + return commonTime
  21 + }
  22 + //渲染附件表格
  23 + function createFailTable() {
  24 + var failTable = table.render({
  25 + elem: '#backDetailTable',
  26 + url:common.domainName + '/api-web/collbackup/childrenList',
  27 + where: {
  28 + type:"all",
  29 + accessToken: accessToken,
  30 + startTimeDate: d.startTime,
  31 + resId: d.resId === null ? 'null' : d.resId,
  32 + resIp: d.resIp === null ? 'null' : d.resIp
  33 + },
  34 + height: 'full',
  35 + page: {
  36 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  37 + , theme: '#1E9FFF'//自定义分页主题颜色
  38 + },
  39 + end: function (e) {
  40 + form.render()
  41 + },
  42 + limit: common.limit,
  43 + limits: common.limits,
  44 + even: true,
  45 + cols: [[
  46 + {
  47 + field: 'policyName', title: '策略类型', align: 'center', sort: true, width: 250, drag: false
  48 + }, {
  49 + field: 'agentType',
  50 + title: '代理类型',
  51 + align: 'center',
  52 + sort: true,
  53 + drag: false,
  54 + width: 200,
  55 + templet: `
  56 + <div>
  57 + {{#
  58 + var agentTypeEnum = {
  59 + 'F': '文件',
  60 + 'O': 'Oracle',
  61 + 'S': 'SQLServer',
  62 + 'M': 'Mysql',
  63 + 'v': 'VMware',
  64 + 'q': 'H3C',
  65 + 'E': 'Exchange',
  66 + 'C': 'ActiveDirector',
  67 + 'U': 'AliCloud',
  68 + 'H': 'HYPER_V',
  69 + 'Q': 'QEMU',
  70 + 'X': 'XEN',
  71 + 'd': 'DaMeng'
  72 + };
  73 + var agentTypeStr = agentTypeEnum[d.agentType];
  74 + agentTypeStr = agentTypeStr ? agentTypeStr : d.agentType;
  75 + }}
  76 + {{agentTypeStr}}
  77 + </div>
  78 + `
  79 + }, {
  80 + field: 'level',
  81 + title: '级别',
  82 + align: 'center',
  83 + sort: true,
  84 + drag: false,
  85 + width: 200,
  86 + templet: `
  87 + <div>
  88 + {{#
  89 + var levelEnum = {
  90 + 'F': '全备',
  91 + 'I': '增量',
  92 + 'D': '差异',
  93 + 's': '文件和文件组(sqlserver)',
  94 + 'L': '事务日志(sqlserver)',
  95 + 'X': '全量备份(oracle级别)',
  96 + 'Y': '差异增量(oracle级别)',
  97 + 'Z': '累积增量(oracle级别)'
  98 + };
  99 + var levelStr = levelEnum[d.level];
  100 + levelStr = levelStr ? levelStr : d.level;
  101 + }}
  102 + {{levelStr}}
  103 + </div>
  104 + `
  105 + }, {
  106 + field: 'client', title: '客户端', align: 'center', drag: false, width: 200, sort: true
  107 + }, {
  108 + field: 'stroge', title: '存储池', align: 'center', drag: false, width: 200, sort: true
  109 + }, {
  110 + field: 'jobStatus',
  111 + title: '备份状态',
  112 + align: 'center',
  113 + drag: false,
  114 + width: 160,
  115 + sort: true,
  116 + templet: `
  117 + <div>
  118 + {{#
  119 + var jobStatusEnum = {
  120 + 'A': '取消',
  121 + 'T': '成功',
  122 + 'N': '禁用',
  123 + 'f': '<span style="color: red">失败</span>',
  124 + 'E': '<span style="color: red">失败</span>',
  125 + 'W': '成功有警告',
  126 + 'I': '备份中',
  127 + 'e': '成功有警告'
  128 + };
  129 + var jobStatusStr = jobStatusEnum[d.jobStatus];
  130 + jobStatusStr = jobStatusStr ? jobStatusStr : d.jobStatus;
  131 + }}
  132 + {{jobStatusStr}}
  133 + </div>
  134 + `
  135 + }, {
  136 + field: 'startTime', title: '开始时间', align: 'center', drag: false, sort: true, width: 160
  137 + }, {
  138 + field: 'endTime', title: '结束时间', align: 'center', drag: false, sort: true, width: 160
  139 + }, {
  140 + field: 'useTime', title: '运行时间', align: 'center', drag: false, sort: true, width: 130
  141 + }, {
  142 + field: 'speed', title: '速度', align: 'center', drag: false, sort: true, width: 110
  143 + }, {
  144 + field: 'jobFiles', title: '文件数', align: 'center', drag: false, sort: true, width: 110
  145 + }, {
  146 + field: 'jobBytesMb', title: '数据量', align: 'center', drag: false, sort: true, width: 170
  147 + }, {
  148 + field: 'storgeType', title: '存储类型', align: 'center', drag: false, sort: true, width: 110
  149 + }
  150 + ]],
  151 + done: function () {
  152 + soulTable.render(this);
  153 + }
  154 + })
  155 + }
  156 +
  157 + })
  158 +})
  1 +//备份失败列表
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions
  10 + var domainName = common.domainName;
  11 +
  12 + //对外暴露的接口
  13 + exports("backFailList", function (d) {
  14 + var accessToken = localStorage.getItem("accessToken");
  15 +
  16 + createFailTable()
  17 + function dateForm(time) {
  18 + var unixTimestamp = new Date(time);
  19 + var commonTime = unixTimestamp.toLocaleString();
  20 + return commonTime
  21 + }
  22 + //渲染附件表格
  23 + function createFailTable() {
  24 + var failTable = table.render({
  25 + elem: '#failTable',
  26 + url: domainName + '/api-web/backupview/findBackupViews',
  27 + where: {
  28 + accessToken: accessToken,
  29 + countTime: d.createDate,
  30 + backStatus: d.status
  31 + },
  32 + height: 'full',
  33 + page: {
  34 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  35 + , theme: '#1E9FFF'//自定义分页主题颜色
  36 + },
  37 + end: function (e) {
  38 + form.render()
  39 + },
  40 + limit: common.limit,
  41 + limits: common.limits,
  42 + even: true,
  43 + cols: [[
  44 + {type: 'numbers', title: '序号'},
  45 + {
  46 + field: 'busName', title: '系统名称', align: 'center', minWith: 240,
  47 + }, {
  48 + field: 'evaluationLevel', title: '等保等级', align: 'center', minWith: 130,
  49 + }, {
  50 + field: 'resName', title: '数据库名称', align: 'center', minWith: 240,
  51 + },
  52 + {
  53 + field: 'ip', title: 'IP地址', align: 'center', minWith: 150,
  54 + },
  55 + {
  56 + field: 'platform', title: '备份平台', align: 'center', minWith: 130,
  57 + },
  58 + {
  59 + field: 'backLevel', title: '备份级别', align: 'center', minWith: 180,
  60 + },
  61 + {
  62 + field: 'backStatus', title: '备份状态', align: 'center', minWith: 120,
  63 + templet:function (d) {
  64 + var backStatus = d.backStatus
  65 + var backStatushtml = '成功';
  66 + if(/失败/.test(backStatus)){
  67 + backStatushtml = '<span style="font-size: 14px;color: red">失败</span>'
  68 + }else{
  69 + backStatushtml = '<span style="font-size: 14px;color: green">成功</span>'
  70 + }
  71 + return backStatushtml;
  72 + }
  73 +
  74 + },
  75 + {
  76 + field: 'backBytes', title: '数据量(GB)', align: 'center', minWith: 130,
  77 + },
  78 + {
  79 + field: 'backSpeed', title: '速率(MB/s)', align: 'center', minWith: 130,
  80 + },
  81 + {
  82 + field: 'useTime', title: '运行时间(分)', align: 'center', minWith: 130,
  83 + },
  84 + {
  85 + field: 'startTime', title: '开始时间', align: 'center', minWith: 180,
  86 + templet:function (d) {
  87 + return dateForm(d.startTime);
  88 + }
  89 + },
  90 + {
  91 + field: 'endTime', title: '结束时间', align: 'center', minWith: 180,
  92 + templet:function (d) {
  93 + return dateForm(d.endTime);
  94 + }
  95 + },
  96 + ]],
  97 + done: function () {
  98 + }
  99 + })
  100 + }
  101 +
  102 + })
  103 +})
  1 +//备份统计
  2 +layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions','laydate', 'soulTable'], function (exports) {
  3 + var $ = layui.$;
  4 + var admin = layui.admin;
  5 + var table = layui.table;
  6 + var common = layui.common;
  7 + var laydate = layui.laydate;
  8 + var soulTable = layui.soulTable;
  9 + //对外暴露的接口
  10 + var accessToken;
  11 +
  12 + exports('backup', function () {
  13 + var sessions = layui.sessions;
  14 + accessToken = sessions.getToken().access_token;
  15 + //条形图周期
  16 + var period = 'today';
  17 + var sortBy = 'startTime';
  18 + var order = 'desc';
  19 +
  20 + //表格周期
  21 + initCount();
  22 + initTable();
  23 + //条形图时间周期切换事件
  24 + $("#noticeCount_time_button_id button").on("click", function () {
  25 + $("#noticeCount_time_button_id button").removeClass("active");
  26 + $(this).addClass("active");
  27 + period = $(this).data("period");
  28 + initCount();
  29 + initTable();
  30 + });
  31 + var busBackupCountChart = echarts.init(document.getElementById('backup_count_bus'));
  32 + var agentTypeBackupCountChart = echarts.init(document.getElementById('backup_count_agentType'));
  33 + //初始化柱状图页面
  34 + function initCount() {
  35 + countByBus();
  36 + countByAgentType();
  37 + countByState();
  38 + }
  39 +
  40 + //初始化表格
  41 + function initTable() {
  42 + // 加载表格
  43 + table.render({
  44 + elem: '#backup_table',
  45 + url: common.domainName + '/api-web/collbackup/list',
  46 + where: {
  47 + type:period,
  48 + accessToken: accessToken,
  49 + orderBy: sortBy ? sortBy + ' ' + order : ''
  50 + },
  51 + initSort: {
  52 + field: sortBy,
  53 + type: order
  54 + },
  55 + height: '500px',
  56 + cellMinWidth: 80,
  57 + page: {
  58 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  59 + theme: '#1E9FFF'
  60 + },
  61 + limit: common.limit,
  62 + limits:common.limits,
  63 + // initSort: {
  64 + // field: sortBy,
  65 + // type: order
  66 + // },
  67 + autoSort: false,
  68 + cols: [[{
  69 + title: '#', width: 50, childTitle: false, children: function (row) {
  70 + return [{
  71 + title: '',
  72 + url: common.domainName + '/api-web/collbackup/childrenList',
  73 + page: {layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'], theme: '#1E9FFF'},
  74 + limit: 5,
  75 + where: {
  76 + type:period,
  77 + access_token: accessToken,
  78 + startTimeDate: row.startTime,
  79 + resId: row.resId === null ? 'null' : row.resId,
  80 + resIp: row.resIp === null ? 'null' : row.resIp
  81 + },
  82 + cols: [[{
  83 + field: 'policyName', title: '策略类型', align: 'center', sort: true, width: 250, drag: false
  84 + }, {
  85 + field: 'agentType',
  86 + title: '代理类型',
  87 + align: 'center',
  88 + sort: true,
  89 + drag: false,
  90 + width: 200,
  91 + templet: `
  92 + <div>
  93 + {{#
  94 + var agentTypeEnum = {
  95 + 'F': '文件',
  96 + 'O': 'Oracle',
  97 + 'S': 'SQLServer',
  98 + 'M': 'Mysql',
  99 + 'v': 'VMware',
  100 + 'q': 'H3C',
  101 + 'E': 'Exchange',
  102 + 'C': 'ActiveDirector',
  103 + 'U': 'AliCloud',
  104 + 'H': 'HYPER_V',
  105 + 'Q': 'QEMU',
  106 + 'X': 'XEN',
  107 + 'd': 'DaMeng'
  108 + };
  109 + var agentTypeStr = agentTypeEnum[d.agentType];
  110 + agentTypeStr = agentTypeStr ? agentTypeStr : d.agentType;
  111 + }}
  112 + {{agentTypeStr}}
  113 + </div>
  114 + `
  115 + }, {
  116 + field: 'level',
  117 + title: '级别',
  118 + align: 'center',
  119 + sort: true,
  120 + drag: false,
  121 + width: 200,
  122 + templet: `
  123 + <div>
  124 + {{#
  125 + var levelEnum = {
  126 + 'F': '全备',
  127 + 'I': '增量',
  128 + 'D': '差异',
  129 + 's': '文件和文件组(sqlserver)',
  130 + 'L': '事务日志(sqlserver)',
  131 + 'X': '全量备份(oracle级别)',
  132 + 'Y': '差异增量(oracle级别)',
  133 + 'Z': '累积增量(oracle级别)'
  134 + };
  135 + var levelStr = levelEnum[d.level];
  136 + levelStr = levelStr ? levelStr : d.level;
  137 + }}
  138 + {{levelStr}}
  139 + </div>
  140 + `
  141 + }, {
  142 + field: 'client', title: '客户端', align: 'center', drag: false, width: 200, sort: true
  143 + }, {
  144 + field: 'stroge', title: '存储池', align: 'center', drag: false, width: 200, sort: true
  145 + }, {
  146 + field: 'jobStatus',
  147 + title: '备份状态',
  148 + align: 'center',
  149 + drag: false,
  150 + width: 160,
  151 + sort: true,
  152 + templet: `
  153 + <div>
  154 + {{#
  155 + var jobStatusEnum = {
  156 + 'A': '取消',
  157 + 'T': '成功',
  158 + 'N': '禁用',
  159 + 'f': '<span style="color: red">失败</span>',
  160 + 'E': '<span style="color: red">失败</span>',
  161 + 'W': '成功有警告',
  162 + 'e': '成功有警告'
  163 + };
  164 + var jobStatusStr = jobStatusEnum[d.jobStatus];
  165 + jobStatusStr = jobStatusStr ? jobStatusStr : d.jobStatus;
  166 + }}
  167 + {{jobStatusStr}}
  168 + </div>
  169 + `
  170 + }, {
  171 + field: 'startTime', title: '开始时间', align: 'center', drag: false, sort: true, width: 160
  172 + }, {
  173 + field: 'endTime', title: '结束时间', align: 'center', drag: false, sort: true, width: 160
  174 + }, {
  175 + field: 'useTime', title: '运行时间', align: 'center', drag: false, sort: true, width: 130
  176 + }, {
  177 + field: 'speed', title: '速度', align: 'center', drag: false, sort: true, width: 110
  178 + }, {
  179 + field: 'jobFiles', title: '文件数', align: 'center', drag: false, sort: true, width: 110
  180 + }, {
  181 + field: 'jobBytesMb', title: '数据量', align: 'center', drag: false, sort: true, width: 170
  182 + }, {
  183 + field: 'storgeType', title: '存储类型', align: 'center', drag: false, sort: true, width: 110
  184 + }]],
  185 + done: function () {
  186 + soulTable.render(this);
  187 + }
  188 + }]
  189 + }
  190 + }, {
  191 + field: 'policyName', title: '策略类型', align: 'center', sort: true, width: 250, drag: false
  192 + }, {
  193 + field: 'agentType', title: '代理类型', align: 'center', sort: true, drag: false, width: 200, templet: `
  194 + <div>
  195 + {{#
  196 + var agentTypeEnum = {
  197 + 'F': '文件',
  198 + 'O': 'Oracle',
  199 + 'S': 'SQLServer',
  200 + 'M': 'Mysql',
  201 + 'v': 'VMware',
  202 + 'q': 'H3C',
  203 + 'E': 'Exchange',
  204 + 'C': 'ActiveDirector',
  205 + 'U': 'AliCloud',
  206 + 'H': 'HYPER_V',
  207 + 'Q': 'QEMU',
  208 + 'X': 'XEN',
  209 + 'd': 'DaMeng'
  210 + };
  211 + var agentTypeStr = agentTypeEnum[d.agentType];
  212 + agentTypeStr = agentTypeStr ? agentTypeStr : d.agentType;
  213 + }}
  214 + {{agentTypeStr}}
  215 + </div>
  216 + `
  217 + }, {
  218 + field: 'level', title: '级别', align: 'center', sort: true, drag: false, width: 200, templet: `
  219 + <div>
  220 + {{#
  221 + var levelEnum = {
  222 + 'F': '全备',
  223 + 'I': '增量',
  224 + 'D': '差异',
  225 + 's': '文件和文件组(sqlserver)',
  226 + 'L': '事务日志(sqlserver)',
  227 + 'X': '全量备份(oracle级别)',
  228 + 'Y': '差异增量(oracle级别)',
  229 + 'Z': '累积增量(oracle级别)'
  230 + };
  231 + var levelStr = levelEnum[d.level];
  232 + levelStr = levelStr ? levelStr : d.level;
  233 + }}
  234 + {{levelStr}}
  235 + </div>
  236 + `
  237 + }, {
  238 + field: 'client', title: '客户端', align: 'center', drag: false, width: 200, sort: true
  239 + }, {
  240 + field: 'stroge', title: '存储池', align: 'center', drag: false, width: 200, sort: true
  241 + } , {
  242 + field: 'jobStatus',
  243 + title: '备份状态',
  244 + align: 'center',
  245 + drag: false,
  246 + width: 160,
  247 + sort: true,
  248 + templet: `
  249 + <div>
  250 + {{#
  251 + var jobStatusEnum = {
  252 + 'A': '取消',
  253 + 'T': '成功',
  254 + 'N': '禁用',
  255 + 'f': '<span style="color: red">失败</span>',
  256 + 'E': '<span style="color: red">失败</span>',
  257 + 'W': '成功有警告',
  258 + 'e': '成功有警告'
  259 + };
  260 + var jobStatusStr = jobStatusEnum[d.jobStatus];
  261 + jobStatusStr = jobStatusStr ? jobStatusStr : d.jobStatus;
  262 + }}
  263 + {{jobStatusStr}}
  264 + </div>
  265 + `
  266 + }, {
  267 + field: 'startTime', title: '开始时间', align: 'center', drag: false, sort: true, width: 160
  268 + }, {
  269 + field: 'endTime', title: '结束时间', align: 'center', drag: false, sort: true, width: 160
  270 + }, {
  271 + field: 'jobFiles', title: '文件数', align: 'center', drag: false, sort: true, width: 110
  272 + }, {
  273 + field: 'storgeType', title: '存储类型', align: 'center', drag: false, sort: true, width: 110
  274 + }]],
  275 + done() {
  276 + soulTable.render(this);
  277 + }
  278 + });
  279 + }
  280 +
  281 + //根据业务统计
  282 + function countByBus() {
  283 + $.ajax({
  284 + url: common.domainName + '/api-web/collbackup/countBackupByBus?access_token=' + accessToken + '&type=' + period,
  285 + method: 'GET',
  286 + success: function (res) {
  287 + if (res && res.success) {
  288 + if (res.names.length == 0){
  289 + res.names = ["综合办公信息系统","社保费税银子系统","社保费征收子系统","社保费信息共享平台","数字人事","出口退税审核系统"];
  290 + res.totals = [0,0,0,0,0,0];
  291 + res.successes = [0,0,0,0,0,0];
  292 + res.failures = [0,0,0,0,0,0];
  293 + }
  294 + //初始化业务子系统告警发送统计
  295 + loadCountOverChart(busBackupCountChart,res,'按业务统计','bar');
  296 + }
  297 + }
  298 + })
  299 + }
  300 + //根据业务统计
  301 + function countByAgentType() {
  302 + $.ajax({
  303 + url: common.domainName + '/api-web/collbackup/countBackupByAgentType?access_token=' + accessToken + '&type=' + period,
  304 + method: 'GET',
  305 + success: function (res) {
  306 + if (res && res.success) {
  307 + //初始化业务子系统告警发送统计
  308 + loadCountOverChart(agentTypeBackupCountChart,res,'按代理类型统计','bar');
  309 + }
  310 + }
  311 + })
  312 + }
  313 + //成功、失败统计
  314 + function countByState() {
  315 + $.ajax({
  316 + url: common.domainName + '/api-web/collbackup/countByState?access_token=' + accessToken + '&type=' + period,
  317 + method: 'GET',
  318 + success: function (res) {
  319 + if (res && res.success && res.map) {
  320 + let map = res.map;
  321 + $('#back_total').text(map.totalCount);
  322 + $('#back_success').text(map.successCount);
  323 + $('#back_fail').text(map.failCount);
  324 + }
  325 + }
  326 + })
  327 + }
  328 + //备份统计柱状图表
  329 + function loadCountOverChart(echartObject, chartData, title, type) {
  330 + //列名
  331 + var nameList = chartData.names;
  332 + //总数
  333 + var totalList = chartData.totals;
  334 + //成功
  335 + var successList = chartData.successes;
  336 + //失败
  337 + var failureList = chartData.failures;
  338 + var barSeries = [{
  339 + name: '成功',
  340 + data: successList,
  341 + barWidth: 40,
  342 + type: 'bar',
  343 + stack: 'total',
  344 + emphasis: {
  345 + focus: 'series'
  346 + },
  347 + itemStyle: {
  348 + color: "#0BAC33"
  349 + }
  350 + }, {
  351 + name: '失败',
  352 + data: failureList,
  353 + barWidth: 40,
  354 + type: 'bar',
  355 + stack: 'total',
  356 + emphasis: {
  357 + focus: 'series'
  358 + },
  359 + itemStyle: {
  360 + color: "#d81e06"
  361 + },
  362 + label: {
  363 + show: true,
  364 + position: 'top',
  365 + textStyle: {
  366 + color: '#555'
  367 + },
  368 + formatter: function (param) {
  369 + return totalList[param.dataIndex];
  370 + },
  371 + }
  372 + }];
  373 + var lineSeries = [{
  374 + name: '成功',
  375 + data: successList,
  376 + barWidth: 40,
  377 + type: 'line',
  378 + stack: 'total',
  379 + emphasis: {
  380 + focus: 'series'
  381 + },
  382 + itemStyle: {
  383 + color: "#0BAC33"
  384 + },
  385 + label: {
  386 + show: true,
  387 + position: 'top',
  388 + textStyle: {
  389 + color: '#555'
  390 + }
  391 + }
  392 + }, {
  393 + name: '失败',
  394 + data: failureList,
  395 + barWidth: 40,
  396 + type: 'line',
  397 + stack: 'total',
  398 + emphasis: {
  399 + focus: 'series'
  400 + },
  401 + itemStyle: {
  402 + color: "#d81e06"
  403 + },
  404 + label: {
  405 + show: true,
  406 + position: 'top',
  407 + textStyle: {
  408 + color: '#555'
  409 + }
  410 + }
  411 + }
  412 + ]
  413 + var option = {
  414 + tooltip: {
  415 + trigger: 'axis',
  416 + axisPointer: {
  417 + type: 'shadow'
  418 + },
  419 + extraCssText: 'width:120px;height:80px;'
  420 + },
  421 + toolbox: {
  422 + show: true,
  423 + feature: {
  424 + saveAsImage: {}
  425 + },
  426 + right: 10
  427 + },
  428 + legend: {
  429 + data: ['成功', '失败'],
  430 + selectedMode: false
  431 + },
  432 + grid: [{
  433 + top: 40,
  434 + bottom: 70,
  435 + left: 50,
  436 + right: 5
  437 + }],
  438 + xAxis: [{
  439 + type: 'category',
  440 + data: nameList,
  441 + axisLabel: {
  442 + color: '#333',
  443 + show: true,
  444 + interval: 0,
  445 + rotate: 25
  446 + },
  447 + axisLine: {
  448 + lineStyle: {
  449 + color: '#e7e7e7'
  450 + }
  451 + },
  452 + axisTick: {
  453 + lineStyle: {
  454 + color: '#e7e7e7'
  455 + }
  456 + },
  457 + zlevel: 1
  458 + }],
  459 + yAxis: [{
  460 + type: 'value',
  461 + gridIndex: 0,
  462 + axisLabel: {
  463 + color: '#333'
  464 + },
  465 + splitLine: {
  466 + lineStyle: {
  467 + type: 'dashed'
  468 + }
  469 + },
  470 + axisLine: {
  471 + lineStyle: {
  472 + color: '#ccc'
  473 + }
  474 + },
  475 + axisTick: {
  476 + lineStyle: {
  477 + color: '#ccc'
  478 + }
  479 + }
  480 + }],
  481 + series: type === 'bar' ? barSeries : lineSeries
  482 + }
  483 + echartObject.setOption(option)
  484 + }
  485 + });
  486 +});
  1 +//备份统计
  2 +layui.define(['common', 'admin', 'echarts', 'common', 'table', 'sessions', 'laydate', 'soulTable'], function (exports) {
  3 + var $ = layui.$;
  4 + var admin = layui.admin;
  5 + var table = layui.table;
  6 + var common = layui.common;
  7 + var laydate = layui.laydate;
  8 + var soulTable = layui.soulTable;
  9 + var domainName = common.domainName;
  10 + //对外暴露的接口
  11 + var accessToken;
  12 + exports('backupCount', function () {
  13 + var sessions = layui.sessions;
  14 + var accessToken = localStorage.getItem("accessToken");
  15 + var period = 'thisMonth';
  16 + initTable();
  17 + initStatusTable()
  18 + //条形图时间周期切换事件
  19 + $("#backupCount_time_button_id button").on("click", function () {
  20 + $("#backupCount_time_button_id button").removeClass("active");
  21 + $(this).addClass("active");
  22 + period = $(this).data("period");
  23 + initTable();
  24 + });
  25 + $("#btn-backcount-export-excel").on("click", function () {
  26 + var href = domainName + '/api-web/backupview/backCount/export?accessToken=' + accessToken + "&countTime=" + period;
  27 + window.open(href)
  28 + })
  29 +
  30 + //初始化表格
  31 + function initTable() {
  32 + // 加载表格
  33 + table.render({
  34 + elem: '#count_table',
  35 + url: domainName + '/api-web/backupview/countBackUp',
  36 + where: {
  37 + countTime: period,
  38 + accessToken: accessToken
  39 + },
  40 + height: '800px',
  41 + cellMinWidth: 80,
  42 + autoSort: false,
  43 + cols: [[{
  44 + field: 'createDate', title: '备份时间', align: 'center', sort: true, drag: false, width: 220
  45 + }, {
  46 + field: 'shouldBack', title: '应备份数量', align: 'center', drag: false, width: 220,
  47 + }, {
  48 + field: 'success', title: '备份成功数量', align: 'center', drag: false, width: 220,
  49 + templet: '<div><span data-date="{{d.createDate}}" data-status="成功" class="layui-table-link view-failCount-collectValue" style="color: green;font-size: 14px">{{d.success}}</span></div>'
  50 +
  51 + }, {
  52 + field: 'fail', title: '备份失败数量', align: 'center', drag: false, width: 220,
  53 + templet: '<div><span data-date="{{d.createDate}}" data-status="失败" class="layui-table-link view-failCount-collectValue" style="color: red;font-size: 14px">{{d.fail}}</span></div>'
  54 +
  55 + }, {
  56 + field: 'inback', title: '备份中数量', align: 'center', drag: false, width: 220,
  57 + }, {
  58 + field: 'noback', title: '未备份数量', align: 'center', drag: false, width: 220,
  59 + }, {
  60 + field: 'sucRate', title: '备份成功率', align: 'center', drag: false,
  61 + }]],
  62 + done: function (res, curr, count) {
  63 + soulTable.render(this);
  64 + $('.view-failCount-collectValue').on('click', function () {
  65 + var createDate = $(this).data("date");
  66 + var status = $(this).data("status");
  67 + var title = '备份失败列表'
  68 + common.openWin('backup/failList', title, {createDate: createDate, status: status}, ['确定', '取消'])
  69 + });
  70 + }
  71 + });
  72 + }
  73 +
  74 + function initStatusTable() {
  75 + var loading = layer.load(2)
  76 + var mycars = new Array();
  77 + var url = common.domainName + '/api-web/backupview/countLastHalfMonthBackStatus'
  78 + $.ajax({
  79 + url: url,
  80 + type: 'get',
  81 + data: {accessToken: accessToken},
  82 + success: function (res) {
  83 + layer.close(loading);
  84 + var data = res.data;
  85 + var tr = '<div style="line-height: 26px;padding: 15px;text-align:center;color: #999;">暂无数据</div>';
  86 + if(data.length==0){
  87 + $(".backupCountStatus-table").append(tr);
  88 + }else {
  89 + $("#status_table").find("thead").empty();
  90 + $("#status_table").find("tbody").empty();
  91 +
  92 + var htr = "<tr><th>序号</th><th width='200'>系统名称</th><th>等保等级</th><th width='200'>数据库名称</th><th>IP地址</th>"
  93 + $.each(data[0].backlist[0], function (j, f) {
  94 + if (j != "resId" && j != "resName" && j != "ip") {
  95 + htr += "<th>" + j + "</th>"
  96 + }
  97 + });
  98 + htr += "</tr>"
  99 + $("#status_table").find("thead").append(htr);
  100 + $.each(data, function (i, e) {
  101 + var tr = '';
  102 + var str = '';
  103 + if (e.rowspan == 0) {
  104 + str = '<td rowspan=1>' + e.businfo.busTypeName + '</td><td rowspan=1>' + e.businfo.evaluationLevel + '</td>'
  105 + tr += '<tr data-id="' + e.businfo.busId + '">' +
  106 + '<td>' + (i + 1) + '</td>' +
  107 + str +
  108 + '<td></td>' +
  109 + '<td></td>' +
  110 + '<td></td>' +
  111 + '<td></td>' +
  112 + '<td></td>' +
  113 + '<td></td>' +
  114 + '<td></td>' +
  115 + '<td></td>' +
  116 + '<td></td>' +
  117 + '<td></td>' +
  118 + '<td></td>' +
  119 + '<td></td>' +
  120 + '<td></td>' +
  121 + '<td></td>' +
  122 + '<td></td>' +
  123 + '<td></td>' +
  124 + '<td></td>' +
  125 + '<td></td>' +
  126 + '</tr>'
  127 + } else {
  128 + str = '<td rowspan="' + e.rowspan + '">' + (i + 1) + '</td><td rowspan="' + e.rowspan + '">' + e.businfo.busTypeName + '</td><td rowspan="' + e.rowspan + '">' + e.businfo.evaluationLevel + '</td>'
  129 + tr += '<tr data-id="' + e.businfo.busId + '">' + str
  130 + $.each(e.backlist, function (j, f) {
  131 + $.each(e.backlist[j], function (h, n) {
  132 + if (h != "resId") {
  133 + if (/失败/.test(n)) {
  134 + tr += '<td><i class="layui-icon layui-icon-close" style="font-size: 30px; color: #ff252c;"></i></td>'
  135 + } else if (/成功/.test(n)) {
  136 + tr += '<td><i class="layui-icon layui-icon-ok" style="font-size: 30px; color: #1dff1c;"></i></td>'
  137 + } else if (/备份中/.test(n)) {
  138 + tr += '<td><span style="color:#ffe40e">' + n + '</span></td>'
  139 + } else if (/未备份/.test(n)) {
  140 + tr += '<td><span style="color:magenta">' + n + '</span></td>'
  141 + } else {
  142 + tr += '<td>' + n + '</td>'
  143 + }
  144 +
  145 + }
  146 +
  147 + });
  148 + tr += '</tr>'
  149 + });
  150 + }
  151 + $("#status_table").find("tbody").append(tr);
  152 + })
  153 + }
  154 + }
  155 + })
  156 + }
  157 +
  158 + })
  159 +});
  1 +layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'view', 'element'], function (exports) {
  2 + var $ = layui.$;
  3 + var form = layui.form;
  4 + var table = layui.table;
  5 + var element = layui.element;
  6 + var laydate = layui.laydate;
  7 + var common = layui.common;
  8 + var view = layui.view;
  9 + var admin = layui.admin;
  10 + //对外暴露的接口
  11 + exports('backupmain', function () {
  12 + var accessToken = localStorage.getItem("accessToken");
  13 + var today = new Date()
  14 + today = today.getFullYear() + "-" + (today.getMonth() >= 9 ? (today.getMonth() + 1) : "0" + (today.getMonth() + 1)) + "-" + (today.getDate() > 9 ? (today.getDate()) : "0" + (today.getDate()));
  15 + var backTime = today;
  16 + var inspIsLoad = false;
  17 + var businessIsLoad = false;
  18 + var currSelect = 0;
  19 + var period = 'today';
  20 + var tip_index;
  21 + $("#probutton").mouseover(function () {
  22 + tips_index = layer.tips('查询昨天8时到今天8时的备份', this, {time: 0});
  23 + });
  24 + $("#probutton").mouseout(function () {
  25 + layer.close(tips_index); //关闭弹出层索引
  26 + });
  27 + form.render();
  28 + var inspectioncountListTable = '';
  29 + searchEvent();//检索条件事件
  30 + //加载文档表格数据
  31 + renderinspectioncountListTable();
  32 +
  33 + //检索事件
  34 + function searchEvent() {
  35 + //发送状态
  36 + form.on('select(inspectioncount_date)', function (data) {
  37 + renderinspectioncountListTable();
  38 + });
  39 + }
  40 +
  41 + //日期范围选择
  42 + laydate.render({
  43 + elem: '#backTime',
  44 + min: -365,
  45 + max: 0,
  46 + value: new Date(),
  47 + done: function (value) {
  48 + backTime = value
  49 + $.each($("button.date"), function (i, e) {
  50 + var $dom = $(e);
  51 + if ($dom.hasClass("active")) {
  52 + $dom.removeClass("active")
  53 + }
  54 + })
  55 + refreshPage()
  56 + }
  57 + });
  58 +
  59 + // 日期方式选择
  60 + $('#btns-insp-time button').click(function () {
  61 + $.each($("button.date"), function (i, e) {
  62 + var $dom = $(e);
  63 + if ($dom.hasClass("active")) {
  64 + $dom.removeClass("active")
  65 + }
  66 + })
  67 + $("#backTime").val('')
  68 + backTime = ''
  69 + $("#btns-insp-time button").removeClass("active");
  70 + $(this).addClass("active");
  71 + period = ($(this).data("period"))
  72 + // if (period == 'today') {
  73 + var today = new Date()
  74 + today = today.getFullYear() + "-" + (today.getMonth() >= 9 ? (today.getMonth() + 1) : "0" + (today.getMonth() + 1)) + "-" + (today.getDate() > 9 ? (today.getDate()) : "0" + (today.getDate()));
  75 + backTime = today
  76 + // } else if (period == 'yestoday') {
  77 + // var time = (new Date).getTime() - 24 * 60 * 60 * 1000;
  78 + // var yesday = new Date(time); // 获取的是前一天日期
  79 + // yesday = yesday.getFullYear() + "-" + (yesday.getMonth() > 9 ? (yesday.getMonth() + 1) : "0" + (yesday.getMonth() + 1)) + "-" + (yesday.getDate() > 9 ? (yesday.getDate()) : "0" + (yesday.getDate()));
  80 + // backTime = yesday
  81 + // }
  82 + refreshPage()
  83 + });
  84 +
  85 + //根据tab页刷新页面数据
  86 + function refreshPage() {
  87 + if (currSelect == 0) {
  88 + renderinspectioncountListTable();
  89 + } else if (currSelect == 1) {
  90 + renderinspectionBusTable();
  91 + }
  92 + }
  93 +
  94 + // tab页切换事件
  95 + element.on('tab(insp-tab)', function (data) {
  96 + if (data.index == 0) {
  97 + if (!inspIsLoad) {
  98 + renderinspectioncountListTable();
  99 + inspIsLoad = true;
  100 + }
  101 + } else if (data.index == 1) {
  102 + if (!businessIsLoad) {
  103 + renderinspectionBusTable();
  104 + businessIsLoad = true;
  105 + }
  106 + }
  107 + currSelect = data.index;
  108 + });
  109 +
  110 + $("#btn-inspStatistics-export-excel").on('click', function () {
  111 + if (currSelect == 0) {
  112 + var href = common.domainName + '/api-web/backupview/export?accessToken=' + accessToken + "&backTime=" + backTime;
  113 + } else if (currSelect == 1) {
  114 + var href = common.domainName + '/inspection-report/report/record/inspectionBusListExport?access_token=' + accessToken + "&createTime=" + createTime + '&dateLimit=' + dateLimit + '&limit=-1';
  115 + }
  116 + window.open(href)
  117 + })
  118 +
  119 + //表格数据
  120 + function renderinspectioncountListTable() {
  121 + var loading = layer.load(2)
  122 + var url = common.domainName + '/api-web/backupview/list'
  123 + $.ajax({
  124 + url: url,
  125 + type: 'get',
  126 + data: {accessToken: accessToken, backTime: backTime},
  127 + success: function (res) {
  128 + layer.close(loading);
  129 + var data = res.data;
  130 + var tr = '<div style="line-height: 26px;padding: 15px;text-align:center;color: #999;">暂无数据</div>';
  131 + if(data.length==0){
  132 + $(".layui-tab-item").append(tr);
  133 + }else {
  134 + $("#inspectioncount_table_id").find("tbody").empty();
  135 + }
  136 + $.each(data, function (i, e) {
  137 + var tr = '';
  138 + var str = '';
  139 + if (e.rowspan == 0) {
  140 + str = '<td rowspan=1>' + e.businfo.busTypeName + '</td><td rowspan=1>' + e.businfo.evaluationLevel + '</td>'
  141 + tr += '<tr data-id="' + e.businfo.busId + '">' +
  142 + '<td>' + (i + 1) + '</td>' +
  143 + str +
  144 + '<td></td>' +
  145 + '<td></td>' +
  146 + '<td></td>' +
  147 + '<td></td>' +
  148 + '<td></td>' +
  149 + '<td></td>' +
  150 + '<td></td>' +
  151 + '<td></td>' +
  152 + '<td></td>' +
  153 + '<td></td>' +
  154 + '<td></td>' +
  155 + '<td></td>' +
  156 + '<td></td>' +
  157 + '</tr>'
  158 + } else {
  159 + str = '<td rowspan="' + e.rowspan + '">' + (i + 1) + '</td><td rowspan="' + e.rowspan + '">' + e.businfo.busTypeName + '</td><td rowspan="' + e.rowspan + '">' + e.businfo.evaluationLevel + '</td>'
  160 + tr += '<tr data-id="' + e.businfo.busId + '">' + str
  161 + $.each(e.backlist, function (j, f) {
  162 + var platform = '';
  163 + if (f.platform != null) {
  164 + platform = f.platform
  165 + }
  166 + var backLevel = '';
  167 + if (f.backLevel != null) {
  168 + backLevel = f.backLevel
  169 + }
  170 + var backStatus = '';
  171 + var backStatushtml = '';
  172 + if (f.backStatus != null) {
  173 + backStatus = f.backStatus
  174 + backStatushtml = '<div><span data-date="' + f.startTime + '" data-resid="' + f.resId + '" data-ip= "' + f.ip + '" class="layui-table-link view-backstatus-collectValue" style="color: green;font-size: 14px">成功</span></div>';
  175 + if (/失败/.test(backStatus)) {
  176 + backStatushtml = '<div><span data-date="' + f.startTime + '" data-resid="' + f.resId + '" data-ip= "' + f.ip + '" class="layui-table-link view-backstatus-collectValue" style="color: red;font-size: 14px">失败</span></div>';
  177 + }else if(/备份中/.test(backStatus)){
  178 + backStatushtml = '<div><span data-date="' + f.startTime + '" data-resid="' + f.resId + '" data-ip= "' + f.ip + '" style="color: #ffe40e;font-size: 14px">备份中</span></div>';
  179 + }
  180 + }
  181 + var backBytes = '';
  182 + if (f.backBytes != null) {
  183 + backBytes = f.backBytes
  184 + }
  185 + var backSpeed = '';
  186 + if (f.backSpeed != null) {
  187 + backSpeed = f.backSpeed
  188 + }
  189 + var useTime = '';
  190 + if (f.useTime != null) {
  191 + useTime = f.useTime
  192 + }
  193 + var startTime = '';
  194 + if (f.startTime != null) {
  195 + startTime = dateForm(f.startTime)
  196 + }
  197 + var endTime = '';
  198 + if (f.endTime != null) {
  199 + endTime = dateForm(f.endTime)
  200 + }
  201 + var remark = '';
  202 + if (f.remark != null) {
  203 + remark = f.remark
  204 + }
  205 + var lastTime = '';
  206 +
  207 + if (f.lastTime != null) {
  208 + if (f.startTime == null || f.lastTime != f.startTime) {
  209 + lastTime = '<span style="font-size: 14px;color: red">' + dateForm(f.lastTime) + '</span>'
  210 + } else {
  211 + lastTime = dateForm(f.lastTime)
  212 + }
  213 + }
  214 + var id = 0
  215 + if (f.id != null) {
  216 + id = f.id
  217 + }
  218 + if (f.backLevel != null) {
  219 + tr += '<td style="display: none" class="bizid" data-bizId = "'+e.businfo.busId+'" data-bizName = "'+ e.businfo.busTypeName+'">' + id + '</td>' +
  220 + '<td style="display: none">' + f.resId + '</td>' +
  221 + '<td>' + f.resName + '</td>' +
  222 + '<td>' + f.ip + '</td>' +
  223 + '<td>' + platform + '</td>' +
  224 + '<td>' + backLevel + '</td>' +
  225 + '<td>' + backStatushtml + '</td>' +
  226 + '<td>' + backBytes + '</td>' +
  227 + '<td>' + backSpeed + '</td>' +
  228 + '<td>' + useTime + '</td>' +
  229 + '<td>' + startTime + '</td>' +
  230 + '<td>' + endTime + '</td>' +
  231 + '<td>' + remark + '</td>' +
  232 + '<td>' + lastTime + '</td>' +
  233 + '<td><input type="button" value="编辑" class="edit" style="background-color: #1E9FFF;"/></td>' +
  234 + '</tr>'
  235 + } else {
  236 + tr += '<td style="display: none" class="bizid" data-bizId = "'+e.businfo.busId+'" data-bizName = "'+ e.businfo.busTypeName+'">' + id + '</td>' +
  237 + '<td style="display: none">' + f.resId + '</td>' +
  238 + '<td>' + f.resName + '</td>' +
  239 + '<td>' + f.ip + '</td>' +
  240 + '<td>' + platform + '</td>' +
  241 + '<td>' + backLevel + '</td>' +
  242 + '<td>' + backStatushtml + '</td>' +
  243 + '<td>' + backBytes + '</td>' +
  244 + '<td>' + backSpeed + '</td>' +
  245 + '<td>' + useTime + '</td>' +
  246 + '<td>' + startTime + '</td>' +
  247 + '<td>' + endTime + '</td>' +
  248 + '<td>' + remark + '</td>' +
  249 + '<td>' + lastTime + '</td>' +
  250 + '<td style="display:grid"><input type="button" value="编辑" class="edit" style="background-color: #1E9FFF;"/><input type="button" class="import" value="引用上次" style="background-color: #c0c4cc;margin-top: 5px"/></td>' +
  251 + '</tr>'
  252 + }
  253 + });
  254 + }
  255 + $("#inspectioncount_table_id").find("tbody").append(tr);
  256 + })
  257 + $('.view-backstatus-collectValue').on('click', function () {
  258 + var startTime = dateForm($(this).data("date"));
  259 + var resId = $(this).data("resid");
  260 + var ip = $(this).data("ip");
  261 + console.log(startTime);
  262 + var title = '多通道备份列表'
  263 + common.openWin('backup/backDetailList', title, {
  264 + startTime: startTime,
  265 + resId: resId,
  266 + resIp: ip
  267 + }, ['确定', '取消'])
  268 + });
  269 + $('#inspectioncount_table_id :button.edit').click(function () {
  270 + var toEdit = this.value == '编辑';
  271 + this.value = toEdit ? '确定' : '编辑';
  272 + var tdArr = []
  273 + var busId = $(this).closest('tr').find('td.bizid').attr("data-bizId");
  274 + var busName = $(this).closest('tr').find('td.bizid').attr("data-bizName");
  275 + var list = $(this).closest('tr').find('td').not('[rowspan]').not(':last');
  276 + $(this).closest('tr').find('td').not('[rowspan]').not(':last').each(function (t, index) {
  277 + if (toEdit) {
  278 + if (t != list.length - 1) {
  279 + this.innerHTML = '<input type="text" value="' + this.innerHTML.replace(/"/g, '&quot;').replace(/<\/?.+?>/g, '').replace(/ /g, '') + '"/>';
  280 + } else {
  281 + return;
  282 + }
  283 + } else {
  284 + if (t != list.length - 1) {
  285 + if (this.firstChild != null) {
  286 + if (this.firstChild.value != undefined) {
  287 + this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  288 + } else {
  289 + this.innerHTML = this.firstChild.data.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  290 + }
  291 + } else {
  292 + this.innerHTML = this.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  293 + }
  294 + tdArr.push(this.innerHTML)
  295 + }
  296 + }
  297 + });
  298 + if (!toEdit) {
  299 + var param = {
  300 + 'busId': busId,
  301 + 'busName': busName,
  302 + 'id': tdArr[0],
  303 + 'resId': tdArr[1],
  304 + 'resName': tdArr[2],
  305 + 'ip': tdArr[3],
  306 + 'platform': tdArr[4],
  307 + 'backLevel': tdArr[5],
  308 + 'backStatus': tdArr[6],
  309 + 'backBytes': tdArr[7],
  310 + 'backSpeed': tdArr[8],
  311 + 'useTime': tdArr[9],
  312 + 'startTime': tdArr[10],
  313 + 'endTime': tdArr[11],
  314 + 'remark': tdArr[12]
  315 + };
  316 + if (param.resName == '') {
  317 + layer.msg('数据库名称不能为空!', {icon: 1});
  318 + return;
  319 + }
  320 + else if (param.startTime == '') {
  321 + layer.msg('开始时间不能为空!', {icon: 1});
  322 + return;
  323 + }
  324 + else if (param.endTime == '') {
  325 + layer.msg('结束时间不能为空!', {icon: 1});
  326 + return;
  327 + } else {
  328 + param.startTime = new Date(param.startTime);
  329 + param.endTime = new Date(param.endTime);
  330 + var url = common.domainName + '/api-web/backupview/save?accessToken=' + accessToken
  331 + layer.load(2);
  332 + admin.req({
  333 + url: url,
  334 + type: 'POST',
  335 + contentType: 'application/json',
  336 + data: JSON.stringify(param),
  337 + success: function (response) {
  338 + layer.closeAll('loading');
  339 + if (response.success) {
  340 + layer.msg('保存成功!', {icon: 1});
  341 + renderinspectioncountListTable()
  342 + return true;
  343 + } else {
  344 + layer.msg('保存失败!', {icon: 2});
  345 + }
  346 + },
  347 + error: function () {
  348 + layer.closeAll('loading');
  349 + }
  350 + });
  351 + }
  352 +
  353 + }
  354 + });
  355 + $('#inspectioncount_table_id :button.import').click(function () {
  356 + var toEdit = this.value == '引用上次';
  357 + this.value = toEdit ? '保存' : '引用上次';
  358 + var tdArr = []
  359 + var resId = $(this).closest('tr').find('td').not('[rowspan]')[1].innerHTML;
  360 + var tdlist = $(this).closest('tr').find('td').not('[rowspan]').not(':last');
  361 + var url = common.domainName + '/api-web/backupview/findLastBackup';
  362 + $.ajax({
  363 + url: url,
  364 + type: 'get',
  365 + data: {accessToken: accessToken, resId: resId},
  366 + success: function (res) {
  367 + var obj = res.object;
  368 + if (obj) {
  369 + if (toEdit) {
  370 + tdlist[0].innerHTML = '0';
  371 + tdlist[1].innerHTML = resId
  372 + tdlist[2].innerHTML = '<input class="text" type="text" value="' + obj.resName + '"/>';
  373 + tdlist[3].innerHTML = '<input class="text" type="text" value="' + obj.ip + '"/>';
  374 + tdlist[4].innerHTML = '<input class="text" type="text" value="' + obj.platform + '"/>';
  375 + tdlist[5].innerHTML = '<input class="text" type="text" value="' + obj.backLevel + '"/>';
  376 + tdlist[6].innerHTML = '<input class="text" type="text" value="' + obj.backStatus + '"/>';
  377 + tdlist[7].innerHTML = '<input class="text" type="text" value="' + obj.backBytes + '"/>';
  378 + tdlist[8].innerHTML = '<input class="text" type="text" value="' + obj.backSpeed + '"/>';
  379 + tdlist[9].innerHTML = '<input class="text" type="text" value="' + obj.useTime + '"/>';
  380 + tdlist[10].innerHTML = '<input class="text" type="text" value="' + dateForm(obj.startTime) + '"/>';
  381 + tdlist[11].innerHTML = '<input class="text" type="text" value="' + dateForm(obj.endTime) + '"/>';
  382 + tdlist[12].innerHTML = '<input class="text" type="text" value="' + obj.remark + '"/>';
  383 + // tdlist[13].innerHTML = '<input class="text" type="text" value="' + dateForm(obj.lastTime) + '"/>';
  384 + } else {
  385 + $.each(tdlist, function (i, e) {
  386 +
  387 + if (i > 1 && i < 13) {
  388 + if (this.firstChild) {
  389 + if (this.firstChild.value != undefined) {
  390 + this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  391 + } else {
  392 + this.innerHTML = this.firstChild.data.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  393 + }
  394 + } else {
  395 + this.innerHTML = this.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  396 + }
  397 + } else {
  398 + this.innerHTML = this.innerHTML;
  399 + }
  400 + tdArr.push(this.innerHTML)
  401 + })
  402 + var param = {
  403 + 'id': tdArr[0],
  404 + 'resId': tdArr[1],
  405 + 'resName': tdArr[2],
  406 + 'ip': tdArr[3],
  407 + 'platform': tdArr[4],
  408 + 'backLevel': tdArr[5],
  409 + 'backStatus': tdArr[6],
  410 + 'backBytes': tdArr[7],
  411 + 'backSpeed': tdArr[8],
  412 + 'useTime': tdArr[9],
  413 + 'startTime': tdArr[10],
  414 + 'endTime': tdArr[11],
  415 + 'remark': tdArr[12]
  416 + };
  417 + if (param.resName == '') {
  418 + layer.msg('数据库名称不能为空!', {icon: 2});
  419 + return;
  420 + }
  421 + else if (param.startTime == '') {
  422 + layer.msg('开始时间不能为空!', {icon: 2});
  423 + return;
  424 + }
  425 + else if (param.endTime == '') {
  426 + layer.msg('结束时间不能为空!', {icon: 2});
  427 + return;
  428 +
  429 + } else if (dateForm(obj.startTime) == param.startTime || dateForm(obj.endTime) == param.endTime) {
  430 + layer.msg('开始时间和结束时间不能跟上次相同!', {icon: 2});
  431 + return;
  432 + } else {
  433 + param.startTime = new Date(param.startTime);
  434 + param.endTime = new Date(param.endTime);
  435 + console.log(param)
  436 + var url = common.domainName + '/api-web/backupview/save?accessToken=' + accessToken
  437 + layer.load(2);
  438 + admin.req({
  439 + url: url,
  440 + type: 'POST',
  441 + contentType: 'application/json',
  442 + data: JSON.stringify(param),
  443 + success: function (response) {
  444 + layer.closeAll('loading');
  445 + if (response.success) {
  446 + layer.msg('保存成功!', {icon: 1});
  447 + renderinspectioncountListTable()
  448 + return true;
  449 + } else {
  450 + layer.msg('保存失败!', {icon: 2});
  451 + }
  452 + },
  453 + error: function () {
  454 + layer.closeAll('loading');
  455 + }
  456 + });
  457 + }
  458 + }
  459 +
  460 + } else {
  461 + layer.msg('没有查到备份记录!', {icon: 2});
  462 + }
  463 + },
  464 + error: function () {
  465 + layer.msg('导入失败!', {icon: 2});
  466 + }
  467 + });
  468 +
  469 + });
  470 +
  471 + }
  472 + })
  473 + }
  474 +
  475 + function dateForm(time) {
  476 + var unixTimestamp = new Date(time);
  477 + var commonTime = unixTimestamp.toLocaleString();
  478 + return commonTime
  479 + }
  480 +
  481 + Date.prototype.toLocaleString = function () {
  482 + return this.getFullYear() + "-" + (this.getMonth() >= 9 ? (this.getMonth() + 1) : "0" + (this.getMonth() + 1)) + "-" + (this.getDate() > 9 ? (this.getDate()) : "0" + (this.getDate())) + " " + (this.getHours() > 9 ? this.getHours() : "0" + this.getHours()) + ":" + (this.getMinutes() > 9 ? this.getMinutes() : "0" + this.getMinutes()) + ":" + (this.getSeconds() > 9 ? this.getSeconds() : "0" + this.getSeconds());
  483 + };
  484 +
  485 + //业务报表统计数据列表
  486 + function renderinspectionBusTable() {
  487 +
  488 + }
  489 +
  490 + });
  491 +
  492 +});
  1 +/** 资产维修记录查看 */
  2 +layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydate', 'element'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var table = layui.table;
  6 + var admin = layui.admin;
  7 + var common = layui.common;
  8 + var laydate = layui.laydate;
  9 + var element = layui.element;
  10 +
  11 + exports('bizupgrade', function () {
  12 + var accessToken = localStorage.getItem("accessToken");
  13 + var domainName = common.domainName;
  14 + var timeChart = echarts.init(document.getElementById('bizupgrade-chart-time-record'));
  15 + var inspIsLoad = false;
  16 + var businessIsLoad = false;
  17 + var currSelect = 0;
  18 + var dateLimit = ""
  19 + var createTime = "month"
  20 +
  21 +
  22 + //日期范围选择
  23 + laydate.render({
  24 + elem: '#bizupgradedateLimit'
  25 + ,range: '~',
  26 + trigger: 'click',
  27 + ready: function(date){
  28 + $("#bizupgradedateLimit").removeAttr("lay-key");
  29 + $(this).attr("lay-key","1");
  30 + },
  31 + done: function (value) {
  32 + dateLimit = value
  33 + if (dateLimit == '') {
  34 + $('[data-period="month"]').click()
  35 + } else {
  36 + $.each($("button.date"), function (i, e) {
  37 + var $dom = $(e);
  38 + if ($dom.hasClass("active")) {
  39 + $dom.removeClass("active")
  40 + }
  41 + })
  42 + reloadAllChange()
  43 + }
  44 + }
  45 + });
  46 +
  47 + form.render();
  48 + renderFileupgradeListTable();
  49 + renderPatchupgradeListTable()
  50 + loadBizUpgradeChart();
  51 + loadConditionSelect();
  52 +
  53 +
  54 + //监听Esc事件
  55 + $(document).keyup(function (event) {
  56 + if (event.keyCode === 27) {
  57 + layer.closeAll();
  58 + }
  59 + });
  60 +
  61 +
  62 + // 日期方式选择
  63 + $('#btns-bizupgrade-time button').click(function () {
  64 + $.each($("button.date"), function (i, e) {
  65 + var $dom = $(e);
  66 + if ($dom.hasClass("active")) {
  67 + $dom.removeClass("active")
  68 + }
  69 + })
  70 + $("#dateLimit").val('')
  71 + dateLimit = ''
  72 + $("#btns-bizupgrade-time button").removeClass("active");
  73 + $(this).addClass("active");
  74 + createTime = ($(this).data("period"))
  75 + reloadAllChange();
  76 + });
  77 +
  78 + // 回车搜索
  79 + $('[lay-filter="form-bizupgrade-condition"] input').keydown(function (e) {
  80 + if (e.keyCode === 13) {
  81 + reloadAllChange();
  82 + }
  83 + });
  84 +
  85 + // 下拉框改变搜索
  86 + form.on('select(slt-bizupgrade-group)', reloadAllChange);
  87 + // 下拉框改变搜索
  88 + form.on('select(slt-bizupgrade-biz)', reloadAllChange);
  89 +
  90 + // tab页切换事件
  91 + element.on('tab(bizupgrade-tab)', function (data) {
  92 + if (data.index == 0) {
  93 + if (!inspIsLoad) {
  94 + renderFileupgradeListTable();
  95 + inspIsLoad = true;
  96 + }
  97 + } else if (data.index == 1) {
  98 + if (!businessIsLoad) {
  99 + renderPatchupgradeListTable();
  100 + businessIsLoad = true;
  101 + }
  102 + }
  103 + currSelect = data.index;
  104 + });
  105 + // 加载配件更换表格
  106 + function renderFileupgradeListTable() {
  107 + var conditions = form.val('form-bizupgrade-condition');
  108 +
  109 + Object.assign(conditions, {
  110 + accessToken: accessToken,
  111 + createtime: createTime,
  112 + viewMode: 'true',
  113 + dateLimit: dateLimit
  114 + });
  115 + table.render({
  116 + elem: '#fileupgrade_table_id',
  117 + url: domainName + '/api-web/machineRoom/findBizupgradeRecords?level=1',
  118 + where: conditions,
  119 + height: 'full-360',
  120 + page: {
  121 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  122 + theme: '#1E9FFF'
  123 + },
  124 + end: function (e) {
  125 + form.render()
  126 + },
  127 + limit: common.limit,
  128 + limits: common.limits,
  129 + even: true,
  130 + cols: [[ {
  131 + type: 'numbers', title: '序号'
  132 + }, {
  133 + field: 'title', title: '升级编号', align: 'center',
  134 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-upgrade-title" >{{d.title}}</span></div>'
  135 + },{
  136 + field: 'busName', title: '业务名称', align: 'center',
  137 + },{
  138 + field: 'upgradeFiles', title: '升级文件', align: 'center',
  139 + },{
  140 + field: 'principal', title: '系统责任人', align: 'center',
  141 + }, {
  142 + field: 'phone', title: '联系方式', align: 'center',
  143 + }, {
  144 + field: 'upgradePerson', title: '升级人', align: 'center',
  145 + },{
  146 + field: 'manufacturerName', title: '升级人单位', align: 'center',templet: function (d) {
  147 + if(d.manufacturerId == '0'){
  148 + return '其他';
  149 + }else {
  150 + return d.manufacturerName;
  151 + }
  152 + }
  153 + },{
  154 + field: 'upgradePhone', title: '升级人电话', align: 'center',
  155 + },{
  156 + field: 'attachmentList', title: '附件', align: 'center',
  157 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-attachment">{{d.attachmentList.length}}</span></div>'
  158 + }, {
  159 + field: 'upgradeperiod', title: '升级时间段', align: 'center'
  160 + }, {
  161 + field: 'applyTime', title: '申请时间', align: 'center'
  162 + }
  163 + ]],
  164 + done: function () {
  165 + //获取线路列表
  166 + $('.view-upgrade-title').on('click', function () {
  167 + openBizupgradeForm($(this).data('id'))
  168 + })
  169 + //获取线路列表
  170 + $('.view-attachment').on('click', function () {
  171 + openBizupgradeList("attachment",$(this).data('id'))
  172 + })
  173 +
  174 + }
  175 + });
  176 + }
  177 + // 加载设备出入表格
  178 + function renderPatchupgradeListTable() {
  179 + var conditions = form.val('form-bizupgrade-condition');
  180 +
  181 + Object.assign(conditions, {
  182 + accessToken: accessToken,
  183 + createtime: createTime,
  184 + viewMode: 'true',
  185 + dateLimit: dateLimit
  186 + });
  187 + table.render({
  188 + elem: '#patchupgrade-table',
  189 + url: domainName + '/api-web/machineRoom/findBizupgradeRecords?level=2',
  190 + where: conditions,
  191 + height: 'full-360',
  192 + page: {
  193 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  194 + theme: '#1E9FFF'
  195 + },
  196 + end: function (e) {
  197 + form.render()
  198 + },
  199 + limit: common.limit,
  200 + limits: common.limits,
  201 + even: true,
  202 + cols: [[ {
  203 + type: 'numbers', title: '序号'
  204 + }, {
  205 + field: 'title', title: '升级编号', align: 'center',
  206 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-patchupgrade-title" >{{d.title}}</span></div>'
  207 + },{
  208 + field: 'busName', title: '业务名称', align: 'center',
  209 + },{
  210 + field: 'upgradeFiles', title: '补丁版本', align: 'center',
  211 + },{
  212 + field: 'principal', title: '系统责任人', align: 'center',
  213 + }, {
  214 + field: 'phone', title: '联系方式', align: 'center',
  215 + }, {
  216 + field: 'upgradePerson', title: '升级人', align: 'center',
  217 + },{
  218 + field: 'manufacturerName', title: '升级人单位', align: 'center',templet: function (d) {
  219 + if(d.manufacturerId == '0'){
  220 + return '其他';
  221 + }else {
  222 + return d.manufacturerName;
  223 + }
  224 + }
  225 + },{
  226 + field: 'upgradePhone', title: '升级人电话', align: 'center',
  227 + },{
  228 + field: 'attachmentList', title: '附件', align: 'center',
  229 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-patchattachment">{{d.attachmentList.length}}</span></div>'
  230 + }, {
  231 + field: 'upgradeperiod', title: '升级时间段', align: 'center'
  232 + }, {
  233 + field: 'applyTime', title: '申请时间', align: 'center'
  234 + }
  235 + ]],
  236 + done: function () {
  237 + //获取线路列表
  238 + $('.view-patchupgrade-title').on('click', function () {
  239 + openBizupgradeForm($(this).data('id'))
  240 + })
  241 + //获取线路列表
  242 + $('.view-patchattachment').on('click', function () {
  243 + openBizupgradeList("attachment",$(this).data('id'))
  244 + })
  245 +
  246 + }
  247 + });
  248 + }
  249 + //新增日报
  250 + $('#bizupgrade_create').on('click', function () {
  251 + openBizupgradeForm()
  252 + })
  253 + //新增/编辑表单
  254 + function openBizupgradeForm(id) {
  255 + var title = id ? '编辑' : '新增'
  256 + common.openWin('machineroom/bizupgradeAdd', title, {id: id}, ['保存', '取消'], function f() {
  257 + $("#bizupgrade-form-save-id").trigger("click");
  258 + reloadAllChange();
  259 + })
  260 + }
  261 +
  262 + //查看附件/调整信息列表
  263 + function openBizupgradeList(type,id) {
  264 + var title = "附件";
  265 + common.openWin('machineroom/bizupgradeList', title, {id: id,type:type}, ['确定', '取消'])
  266 + }
  267 +
  268 + // 加载查询条件下拉框
  269 + function loadConditionSelect() {
  270 + //绑定业务下拉选择数据
  271 + common.bizTypeSelect("slt-bizupgrade-biz", function () {
  272 + form.render("select");
  273 + });
  274 + admin.req({
  275 + url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
  276 + }).done(function (response) {
  277 + var options = "<option value=''>=升级单位=</option>";
  278 + $.each(response.data, function (i, v) {
  279 + options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
  280 + });
  281 + options += "<option value='0'>其他</option>";
  282 + $('#slt-bizupgrade-group').html(options);
  283 + form.render();
  284 + });
  285 + }
  286 + $("#bizupgrade-export-excel").on('click', function () {
  287 + if (currSelect == 0) {
  288 + var href = common.domainName + '/api-web/machineRoom/exportBizupgradeRecords?level=1&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  289 + } else if (currSelect == 1) {
  290 + var href = common.domainName + '/api-web/machineRoom/exportBizupgradeRecords?level=2&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  291 + }
  292 + window.open(href)
  293 + })
  294 +
  295 +
  296 + // 各单位维修情况
  297 + function loadBizUpgradeChart() {
  298 + var conditions = {};
  299 + Object.assign(conditions, {accessToken: accessToken, createtime: createTime, viewMode: ''});
  300 + admin.req({
  301 + url: domainName + '/api-web/machineRoom/findBizupgradeRecordsForGroup',
  302 + data: conditions
  303 + }).done(function (response) {
  304 + var chartData = response.map;
  305 + var groupList = chartData.groupList;
  306 + var fileList = chartData.fileList;
  307 + var patchList = chartData.patchList;
  308 + var totalList = chartData.totalList;
  309 + var xData = [];
  310 + var groupData = [];
  311 + $.each(groupList, function (i, v) {
  312 + xData.push(v);
  313 + groupData.push({
  314 + name: v,
  315 + value: 1
  316 + });
  317 + });
  318 + var series = [{
  319 +
  320 + name: '系统升级',
  321 + data: fileList,
  322 + barWidth: 20,
  323 + type: 'bar',
  324 + stack: 'alarm',
  325 + emphasis: {
  326 + focus: 'series'
  327 + },
  328 + itemStyle: {
  329 + color: "#1e9fff"
  330 + }
  331 + },{
  332 + name: '补丁升级',
  333 + data: patchList,
  334 + barWidth: 20,
  335 + type: 'bar',
  336 + stack: 'alarm',
  337 + emphasis: {
  338 + focus: 'series'
  339 + },
  340 + itemStyle: {
  341 + color: "#FF7E00"
  342 + },
  343 + label: {
  344 + show: true,
  345 + position: 'top',
  346 + textStyle: {
  347 + color: '#555'
  348 + },
  349 + formatter: function (data) {
  350 + return totalList[data.dataIndex]
  351 + }
  352 + }
  353 +
  354 + }];
  355 + /**
  356 + 双X轴标签对应,伪实现思路:
  357 + 底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
  358 + */
  359 + var option = {
  360 + title: {
  361 + text: '系统升级和补丁升级图示',
  362 + textStyle: {
  363 + color: '#00D81E06',
  364 + fontSize: 5
  365 + }
  366 + },
  367 + tooltip: {
  368 + trigger: 'axis',
  369 + axisPointer: {
  370 + type: 'shadow'
  371 + }
  372 + },
  373 + toolbox: {
  374 + show: true,
  375 + feature: {
  376 + saveAsImage: {}
  377 + },
  378 + right: 10
  379 + },
  380 + legend: {
  381 + data: ['系统升级', '补丁升级'],
  382 + selectedMode: false
  383 + },
  384 + grid: [{
  385 + top: 40,
  386 + bottom: 70,
  387 + left: 50,
  388 + right: 5
  389 + }],
  390 + xAxis: [{
  391 + type: 'category',
  392 + data: xData,
  393 + axisLabel: {
  394 + color: '#333',
  395 + show: true,
  396 + interval:0,
  397 + rotate:15
  398 + },
  399 + axisLine: {
  400 + lineStyle: {
  401 + color: '#e7e7e7'
  402 + }
  403 + },
  404 + axisTick: {
  405 + lineStyle: {
  406 + color: '#e7e7e7'
  407 + }
  408 + },
  409 + zlevel: 1
  410 + }],
  411 + yAxis: [{
  412 + type: 'value',
  413 + gridIndex: 0,
  414 + axisLabel: {
  415 + color: '#333'
  416 + },
  417 + splitLine: {
  418 + lineStyle: {
  419 + type: 'dashed'
  420 + }
  421 + },
  422 + axisLine: {
  423 + lineStyle: {
  424 + color: '#ccc'
  425 + }
  426 + },
  427 + axisTick: {
  428 + lineStyle: {
  429 + color: '#ccc'
  430 + }
  431 + }
  432 + }],
  433 + series: series
  434 + };
  435 + timeChart.setOption(option)
  436 + });
  437 + }
  438 +
  439 +
  440 + // 图表,表格重新加载
  441 + function reloadAllChange() {
  442 + renderFileupgradeListTable();
  443 + renderPatchupgradeListTable()
  444 + loadBizUpgradeChart();
  445 + loadConditionSelect()
  446 + }
  447 + });
  448 +});
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions;
  10 + var laydate = layui.laydate;
  11 + var upload = layui.upload;
  12 + var domainName = common.domainName;
  13 + var xmSelect = layui.xmSelect;
  14 +
  15 + //对外暴露的接口
  16 + exports('bizupgradeAdd', function (data) {
  17 + var accessToken = localStorage.getItem("accessToken");
  18 + var userSelect = "";
  19 + var currentDate = {}
  20 + var hitDate = {}
  21 + var uploadInst = {}
  22 + var defaultUser = []
  23 + var attachmentIds = []
  24 + var id = data.id
  25 + var cols = []
  26 + var where = {}
  27 + var currentResourceType = ''
  28 + var resTypeSele
  29 +
  30 +
  31 + var viewType = data && data.viewType ? data.viewType : '';
  32 +
  33 + //渲染表单
  34 + form.render(null, 'add-bizupgrade-form')
  35 + init()
  36 +
  37 + //保存
  38 + form.on('submit(bizupgrade-form-save-id)', function (res) {
  39 + var value = $('#attachmentInput').val()
  40 + if (value != '') {
  41 + $('#upload_btn').click()
  42 + } else {
  43 + saveForm()
  44 + }
  45 + })
  46 +
  47 + //保存
  48 + function saveForm() {
  49 + layer.load(2)
  50 + var data = form.val('add-bizupgrade-form')
  51 + var params = {}
  52 + params.attachmentIds = attachmentIds.toString()
  53 + delete data['file']
  54 + delete data['select']
  55 + params.bizupgrade = JSON.stringify(data)
  56 + admin.req({
  57 + url: domainName + '/api-web/machineRoom/bizupgrade/save?accessToken=' + accessToken,
  58 + data: JSON.stringify(params),
  59 + type: 'post',
  60 + contentType: "application/json; charset=utf-8",
  61 + done: function (res) {
  62 + if (res.success) {
  63 + layer.msg(res.msg, {
  64 + offset: '15px',
  65 + icon: 1,
  66 + time: 1000,
  67 + }, function () {
  68 + $("#attachment").removeAttr("disabled");
  69 + layer.closeAll()
  70 + table.reload('fileupgrade_table_id', {
  71 + where: {
  72 + accessToken: accessToken,
  73 + createtime: "month",
  74 + viewMode: 'true',
  75 + dateLimit: ""
  76 + },
  77 + });
  78 + table.reload('patchupgrade-table', {
  79 + where: {
  80 + accessToken: accessToken,
  81 + createtime: "month",
  82 + viewMode: 'true',
  83 + dateLimit: ""
  84 + },
  85 + });
  86 + })
  87 + } else {
  88 + layer.msg(res.msg, {
  89 + offset: '15px',
  90 + icon: 7,
  91 + time: 1000,
  92 + })
  93 + }
  94 + }
  95 + })
  96 + return false
  97 + }
  98 +
  99 + //页面初始化
  100 + function init() {
  101 + loadSelect()
  102 + initDatePlus()
  103 + initUploadPlus()
  104 +
  105 +
  106 + if (viewType == 'view') {
  107 + initViewMode();
  108 + }
  109 + }
  110 +
  111 + // 初始化下拉框
  112 + function loadSelect() {
  113 + //绑定业务下拉选择数据
  114 + common.bizTypeSelect("slt-biz-add", function () {
  115 + form.render("select");
  116 +
  117 + });
  118 + admin.req({
  119 + url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
  120 + }).done(function (response) {
  121 + var options = "<option value=''>=工作单位=</option>";
  122 + $.each(response.data, function (i, v) {
  123 + options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
  124 + });
  125 + options += "<option value='0'>其他</option>";
  126 + $('#slt-upgradeadd-group').html(options);
  127 + form.render();
  128 + fromAssignment();
  129 + });
  130 +
  131 + }
  132 +
  133 +
  134 + //初始化日期插件
  135 + function initDatePlus() {
  136 + currentDate = laydate.render({
  137 + elem: '#applyTime', //指定元素
  138 + value: new Date(),
  139 + type: 'datetime',
  140 + isInitValue: true,
  141 + });
  142 + laydate.render({
  143 + elem: '#upgradeperiod'
  144 + , range: '~',
  145 + type: 'datetime',
  146 + trigger: 'click',
  147 + ready: function (date) {
  148 + $("#upgradeperiod").removeAttr("lay-key");
  149 + $(this).attr("lay-key", "1");
  150 + },
  151 + done: function (value) {
  152 + $("#upgradeperiod").val(value);
  153 + }
  154 + });
  155 + }
  156 +
  157 + //初始化上传插件
  158 + function initUploadPlus() {
  159 + var param = {"accessToken": accessToken}
  160 + var fileName = []
  161 + uploadInst = upload.render({
  162 + elem: '#attachment', //绑定元素
  163 + url: common.domainName + '/api-web/machineRoom/bizupgrade/upload?accessToken='+accessToken,
  164 + data: param,
  165 + multiple: true,
  166 + auto: false, //选择文件后不自动上传
  167 + bindAction: '#upload_btn',//指定按钮触发上传
  168 + accept: 'file',
  169 + exts: 'xls|doc|pdf|docx|xlsx|jpg|png',
  170 + choose: function (obj) {
  171 + //选择文件后回调
  172 + var files = this.files = obj.pushFile();
  173 + if(typeof(files)!=undefined){
  174 + if(Object.getOwnPropertyNames(files).length>2){
  175 + $("#attachment").attr("disabled","disabled");
  176 + layer.msg('目前最多支持上传三个文件!', {
  177 + icon: 7, time: 3000
  178 + });
  179 + }
  180 + }
  181 + obj.preview(function (index, file, result) {
  182 + fileName.push(file.name)
  183 + $('#attachmentInput').val(fileName.toString())
  184 + })
  185 + },
  186 + done: function (res) {
  187 + //单次上传成功
  188 + attachmentIds.push(res.str)
  189 + },
  190 + allDone: function (obj) {
  191 + //全部上传成功后
  192 + saveForm()
  193 + },
  194 + error: function (index, upload) {
  195 + // 上传失败
  196 + layer.msg('文件上传时发生故障,请稍后再试!', {
  197 + icon: 7, time: 3000
  198 + });
  199 + }
  200 + });
  201 + }
  202 +
  203 +
  204 + // 初始化查看模式
  205 + function initViewMode() {
  206 + $('form[lay-filter="add-bizupgrade-form"]').find('input, textarea').attr('readonly', true);
  207 + $('form[lay-filter="add-bizupgrade-form"]').find('select').attr('disabled', true);
  208 + $.each(xmSelect.get(), function (i, v) {
  209 + v.update({disabled: true});
  210 + });
  211 + $('#attachmentInput').parent().parent().parent().addClass('hide');
  212 + $('#table-bizupgrade-add-attachment').removeClass('hide');
  213 + //渲染附件表格
  214 + var attachmentTable = table.render({
  215 + elem: '#table-bizupgrade-add-attachment',
  216 + url: domainName + '/api-web/machineRoom/bizupgrade/getAttaById',
  217 + where: {
  218 + accessToken: accessToken,
  219 + id: data.id
  220 + },
  221 + height: 'full',
  222 + page: {
  223 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  224 + , theme: '#1E9FFF'//自定义分页主题颜色
  225 + },
  226 + end: function (e) {
  227 + form.render()
  228 + },
  229 + limit: common.limit,
  230 + limits: common.limits,
  231 + even: true,
  232 + cols: [[
  233 + {type: 'numbers', title: '序号'},
  234 + {
  235 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  236 + },
  237 + {
  238 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  239 + },
  240 + {
  241 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  242 + templet: function (d) {
  243 + var str = (d.size / 1000).toFixed(2)
  244 + return `<div><span>${str}KB</span></div>`
  245 + }
  246 + },
  247 + {
  248 + title: '操作', align: "center", width: 120,
  249 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path = "{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span></div>'
  250 + }
  251 + ]],
  252 + done: function () {
  253 + $('.preview-attachment-btn').on('click', function () {
  254 + var id = $(this).data('id')
  255 + var suffix = $(this).data('suffix')
  256 + var filepath = $(this).data('path')
  257 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  258 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  259 + layer.open({
  260 + type: 1,
  261 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  262 + title: '图片预览',
  263 + area: ['60%', '90%']
  264 + })
  265 + } else {
  266 + //附件为文档类型
  267 + common.fileviewer(filepath)
  268 + }
  269 + })
  270 + }
  271 + })
  272 + form.render();
  273 + }
  274 +
  275 + //表单赋值
  276 + function fromAssignment() {
  277 +
  278 + if (data && data.id) {
  279 + var loading =layer.load(2)
  280 + $('#add-bizupgrade-form-atta').show()
  281 +
  282 + $("#level").attr("readOnly","readOnly");
  283 +
  284 + //编辑表单时禁用日志类型修改和时间选择
  285 + // $('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
  286 + // $('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
  287 + //编辑表单时取消显示默认值
  288 + //currentDate.config.isInitValue = false
  289 + initDatePlus()
  290 + admin.req({
  291 + url: domainName + `/api-web/machineRoom/findBizupgradeByRecordId`,
  292 + data: {recordId: data.id},
  293 + async: false,
  294 + }).done(function (res) {
  295 + layer.close(loading)
  296 + form.val('add-bizupgrade-form', res.object)
  297 + if (res.object.attachmentList) {
  298 + $.each(res.object.attachmentList, function (i, v) {
  299 + writeTagsInfo(v.id, v.originalName)
  300 + })
  301 + }
  302 + })
  303 + }else{
  304 + $("#level").removeAttr("readOnly");
  305 + }
  306 + }
  307 +
  308 + //写入标签内容
  309 + function writeTagsInfo(id, name) {
  310 + var tags = '<span id="tags_span_' + id + '" data-id="' + id + '"><em>' + name + '</em>' +
  311 + '<button type="button" value="' + id + '" class="tagsclose">×</button></span>';
  312 + if ($("#tags_span_" + id).length == 0) {
  313 + //拼接标签
  314 + $("#selecte_content_id").append(tags);
  315 + //绑定标签的删除事件
  316 + bindTagesDelEvent();
  317 + }
  318 + }
  319 +
  320 + //删除标签事件
  321 + function bindTagesDelEvent() {
  322 + //删除已选主体的页签
  323 + $("button.tagsclose").on("click", function () {
  324 + var attachId = $(this).attr("value");
  325 + //确认提示框
  326 + layer.confirm('附件删除后将无法恢复,您确定要删除吗?', {
  327 + btn: ['确定', '取消'] //按钮
  328 + }, function () {
  329 + $.ajax({
  330 + url: domainName + `/api-web/workreport/deleteAttachment/${id}/${attachId}?accessToken=` + accessToken,
  331 + type: "get",
  332 + }).done(function (res) {
  333 + layer.msg('删除成功', {
  334 + offset: '15px'
  335 + , icon: 1
  336 + , time: 1000
  337 + }, function () {
  338 + $("#tags_span_" + attachId).remove();
  339 + });
  340 + }).error(function (error) {
  341 + console.log(error);
  342 + });
  343 + });
  344 + });
  345 + }
  346 + })
  347 +})
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions
  10 + var domainName = common.domainName;
  11 +
  12 + //对外暴露的接口
  13 + exports("bizupgradeList", function (d) {
  14 + var accessToken = localStorage.getItem("accessToken");
  15 + if (d.type == 'attachment') {
  16 + $('#attachmentTable').show()
  17 + createAttachmentTable()
  18 + }
  19 +
  20 +
  21 + //渲染附件表格
  22 + function createAttachmentTable() {
  23 + var attachmentTable = table.render({
  24 + elem: '#attachmentTable',
  25 + url: domainName + '/api-web/machineRoom/bizupgrade/getAttaById',
  26 + where: {
  27 + accessToken: accessToken,
  28 + id: d.id
  29 + },
  30 + height: 'full',
  31 + page: {
  32 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  33 + , theme: '#1E9FFF'//自定义分页主题颜色
  34 + },
  35 + end: function (e) {
  36 + form.render()
  37 + },
  38 + limit: common.limit,
  39 + limits: common.limits,
  40 + even: true,
  41 + cols: [[
  42 + {type: 'numbers', title: '序号'},
  43 + {
  44 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  45 + }, {
  46 + field: 'originalName', title: '原始名称', align: 'center', minWith: 200,
  47 + }, {
  48 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  49 + },
  50 + {
  51 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  52 + templet: function (d) {
  53 + var str = (d.size / 1000).toFixed(2)
  54 + return `<div><span>${str}KB</span></div>`
  55 + }
  56 + },
  57 + {
  58 + title: '操作', align: "center", width: 120,
  59 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path="{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span>' +
  60 + '<span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link attachment-download-btn" style="margin-left: 10px">下载</span></div>'
  61 + }
  62 + ]],
  63 + done: function () {
  64 + $('.preview-attachment-btn').on('click', function () {
  65 + var id = $(this).data('id')
  66 + var suffix = $(this).data('suffix')
  67 + var filepath = $(this).data('path')
  68 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  69 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  70 + layer.open({
  71 + type: 1,
  72 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  73 + title: '图片预览',
  74 + area: ['60%', '90%']
  75 + })
  76 + } else {
  77 + //附件为文档类型
  78 + common.fileviewer(filepath)
  79 + }
  80 + })
  81 +
  82 + $('.attachment-download-btn').on('click',function () {
  83 + var id = $(this).data('id')
  84 + var suffix = $(this).data('suffix')
  85 + var url = domainName + `/api-web/openoffice/download/${id}?accessToken=` + accessToken
  86 + window.open(url)
  87 + })
  88 + }
  89 + })
  90 + }
  91 +
  92 + })
  93 +})
@@ -12,7 +12,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -12,7 +12,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
12 var domainName = common.domainName; 12 var domainName = common.domainName;
13 //对外暴露的接口 13 //对外暴露的接口
14 exports('deviceAdd', function (data) { 14 exports('deviceAdd', function (data) {
15 - var accessToken = session.getToken()['access_token'] 15 + var accessToken = localStorage.getItem("accessToken");
16 var enterTime = {}; 16 var enterTime = {};
17 var outTime = {}; 17 var outTime = {};
18 var devicesBak = []; 18 var devicesBak = [];
@@ -21,53 +21,49 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -21,53 +21,49 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
21 form.render(null, 'add-device-form') 21 form.render(null, 'add-device-form')
22 searchEvent();//检索条件事件 22 searchEvent();//检索条件事件
23 init() 23 init()
24 -  
25 //检索事件 24 //检索事件
26 function searchEvent() { 25 function searchEvent() {
27 //发送状态 26 //发送状态
28 form.on('select(slt-docType)', function (data) { 27 form.on('select(slt-docType)', function (data) {
29 - var html = "";  
30 - if (data.value == 1) {  
31 - html += "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"  
32 - $("#device_card").css("display", "block");  
33 - $("#fiting_card").css("display", "none");  
34 - devicesBak = [];  
35 - fittingsBak = [];  
36 - } else {  
37 - html += "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"  
38 - $("#device_card").css("display", "none");  
39 - $("#fiting_card").css("display", "block");  
40 - devicesBak = [];  
41 - fittingsBak = [];  
42 - }  
43 - $("#slt-actionType").html(html);  
44 - form.render(); 28 + var html ="";
  29 + if(data.value==1){
  30 + html+= "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"
  31 + $("#device_card").css("display","block");
  32 + $("#fiting_card").css("display","none");
  33 + devicesBak = [];
  34 + fittingsBak = [];
  35 + }else{
  36 + html+= "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"
  37 + $("#device_card").css("display","none");
  38 + $("#fiting_card").css("display","block");
  39 + devicesBak = [];
  40 + fittingsBak = [];
  41 + }
  42 + $("#slt-actionType").html(html);
  43 + form.render();
45 }); 44 });
46 } 45 }
47 -  
48 //发送状态 46 //发送状态
49 form.on('select(slt-docType)', function (data) { 47 form.on('select(slt-docType)', function (data) {
50 - var html = "";  
51 - if (data.value == 1) {  
52 - html += "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"  
53 - $("#device_card").css("display", "block");  
54 - $("#fiting_card").css("display", "none");  
55 - } else {  
56 - html += "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"  
57 - $("#device_card").css("display", "none");  
58 - $("#fiting_card").css("display", "block"); 48 + var html ="";
  49 + if(data.value==1){
  50 + html+= "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"
  51 + $("#device_card").css("display","block");
  52 + $("#fiting_card").css("display","none");
  53 + }else{
  54 + html+= "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"
  55 + $("#device_card").css("display","none");
  56 + $("#fiting_card").css("display","block");
59 } 57 }
60 $("#slt-actionType").html(html); 58 $("#slt-actionType").html(html);
61 form.render(); 59 form.render();
62 }); 60 });
63 61
64 form.on('select(slt-actionType)', function (data) { 62 form.on('select(slt-actionType)', function (data) {
65 - if (data.value == "3") {  
66 - //当迁移时,设置readOnly为false joke modify 20221121  
67 - // $("#lastPlace").removeAttribute("readOnly");  
68 - $("#lastPlace").attr("readOnly", false);  
69 - } else {  
70 - $("#lastPlace").attr("readOnly", "readOnly"); 63 + if(data.value=="3"){
  64 + $("#lastPlace").removeAttribute("readOnly");
  65 + }else {
  66 + $("#lastPlace").attr("readOnly","readOnly");
71 } 67 }
72 }) 68 })
73 69
@@ -93,7 +89,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -93,7 +89,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
93 params.deviceRecord = JSON.stringify(data); 89 params.deviceRecord = JSON.stringify(data);
94 console.log(params) 90 console.log(params)
95 admin.req({ 91 admin.req({
96 - url: domainName + '/api-room/machineRoom/machineRoomEnterDevice/save?access_token=' + accessToken, 92 + url: domainName + '/api-web/machineRoom/machineRoomEnterDevice/save?accessToken=' + accessToken,
97 data: JSON.stringify(params), 93 data: JSON.stringify(params),
98 type: 'post', 94 type: 'post',
99 contentType: "application/json; charset=utf-8", 95 contentType: "application/json; charset=utf-8",
@@ -105,26 +101,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -105,26 +101,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
105 time: 1000, 101 time: 1000,
106 }, function () { 102 }, function () {
107 layer.closeAll() 103 layer.closeAll()
108 - //模拟申请人回车事件,刷新父页面  
109 - var evt = $.Event('keydown', {keyCode: 13});  
110 - $('#applyUserDevice').trigger(evt);  
111 - // table.reload('enterdevice_table_id', {  
112 - // where: {  
113 - // access_token: accessToken,  
114 - // createtime: "month",  
115 - // viewMode: 'true',  
116 - // dateLimit: ""  
117 - // },  
118 - // });  
119 - // table.reload('fitting-table', {  
120 - // where: {  
121 - // access_token: accessToken,  
122 - // createtime: "month",  
123 - // viewMode: 'true',  
124 - // dateLimit: ""  
125 - // },  
126 - // });  
127 -  
128 }) 104 })
129 } else { 105 } else {
130 layer.msg(res.msg, { 106 layer.msg(res.msg, {
@@ -139,13 +115,13 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -139,13 +115,13 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
139 }; 115 };
140 var deviceSaveCount = 0; 116 var deviceSaveCount = 0;
141 $("#device_card :button#device_create").on("click", function () { 117 $("#device_card :button#device_create").on("click", function () {
142 - if (deviceSaveCount > 0) { 118 + if(deviceSaveCount>0){
143 layer.msg('请先保存一条再新增', { 119 layer.msg('请先保存一条再新增', {
144 icon: 7, time: 3000 120 icon: 7, time: 3000
145 }); 121 });
146 return 122 return
147 } 123 }
148 - deviceSaveCount += 1; 124 + deviceSaveCount+=1;
149 var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' class='layui-input' width='40px' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>" 125 var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' class='layui-input' width='40px' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>"
150 $("#device-table").append(html); 126 $("#device-table").append(html);
151 127
@@ -162,7 +138,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -162,7 +138,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
162 icon: 7, time: 3000 138 icon: 7, time: 3000
163 }); 139 });
164 tdArr = []; 140 tdArr = [];
165 - deviceSaveCount -= 1; 141 + deviceSaveCount-=1;
166 $(this).closest('tr').remove(); 142 $(this).closest('tr').remove();
167 return; 143 return;
168 } 144 }
@@ -195,21 +171,21 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -195,21 +171,21 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
195 'deviceModel': tdArr[2], 171 'deviceModel': tdArr[2],
196 'brand': tdArr[3] 172 'brand': tdArr[3]
197 } 173 }
198 - deviceSaveCount -= 1; 174 + deviceSaveCount-=1;
199 devicesBak.push(deviceObj) 175 devicesBak.push(deviceObj)
200 } 176 }
201 } 177 }
202 }); 178 });
203 }); 179 });
204 - var fittingSaveCount = 0; 180 + var fittingSaveCount =0;
205 $("#fiting_card :button#fiting_create").on("click", function () { 181 $("#fiting_card :button#fiting_create").on("click", function () {
206 - if (fittingSaveCount > 0) { 182 + if(fittingSaveCount>0){
207 layer.msg('请先保存一条再新增', { 183 layer.msg('请先保存一条再新增', {
208 icon: 7, time: 3000 184 icon: 7, time: 3000
209 }); 185 });
210 return 186 return
211 } 187 }
212 - fittingSaveCount += 1; 188 + fittingSaveCount+=1;
213 var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' class='layui-input' width='50px' lay-verify = 'required'></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>" 189 var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' class='layui-input' width='50px' lay-verify = 'required'></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>"
214 $("#fiting-table").append(html); 190 $("#fiting-table").append(html);
215 191
@@ -225,7 +201,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -225,7 +201,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
225 icon: 7, time: 3000 201 icon: 7, time: 3000
226 }); 202 });
227 tdArr = []; 203 tdArr = [];
228 - fittingSaveCount -= 1; 204 + fittingSaveCount-=1;
229 $(this).closest('tr').remove(); 205 $(this).closest('tr').remove();
230 return; 206 return;
231 } 207 }
@@ -251,7 +227,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -251,7 +227,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
251 'fittingName': tdArr[2], 227 'fittingName': tdArr[2],
252 'deviceModel': tdArr[3] 228 'deviceModel': tdArr[3]
253 } 229 }
254 - fittingSaveCount -= 1; 230 + fittingSaveCount-=1;
255 fittingsBak.push(fittingObj) 231 fittingsBak.push(fittingObj)
256 } 232 }
257 } 233 }
@@ -267,7 +243,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -267,7 +243,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
267 // 初始化下拉框 243 // 初始化下拉框
268 function loadSelect() { 244 function loadSelect() {
269 admin.req({ 245 admin.req({
270 - url: domainName + '/api-room/machineRoom/getMachineRoomInfo' 246 + url: domainName + '/api-web/machineRoom/getMachineRoomInfo'
271 }).done(function (response) { 247 }).done(function (response) {
272 var options = "<option value=''>=归属机房=</option>"; 248 var options = "<option value=''>=归属机房=</option>";
273 $.each(response.data, function (i, v) { 249 $.each(response.data, function (i, v) {
@@ -283,6 +259,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -283,6 +259,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
283 $.each(response.data, function (i, v) { 259 $.each(response.data, function (i, v) {
284 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>" 260 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
285 }); 261 });
  262 + options += "<option value='0'>其他</option>";
286 $('#slt-staffadd-group').html(options); 263 $('#slt-staffadd-group').html(options);
287 form.render(); 264 form.render();
288 }); 265 });
@@ -317,4 +294,4 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -317,4 +294,4 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
317 294
318 295
319 }) 296 })
320 -}) 297 +})
@@ -11,23 +11,20 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function @@ -11,23 +11,20 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function
11 11
12 //对外暴露的接口 12 //对外暴露的接口
13 exports("deviceList", function (d) { 13 exports("deviceList", function (d) {
14 - var accessToken = session.getToken()['access_token']  
15 - 14 + var accessToken = localStorage.getItem("accessToken");
16 createDeviceTable() 15 createDeviceTable()
17 -  
18 function dateForm(time) { 16 function dateForm(time) {
19 var unixTimestamp = new Date(time); 17 var unixTimestamp = new Date(time);
20 var commonTime = unixTimestamp.toLocaleString(); 18 var commonTime = unixTimestamp.toLocaleString();
21 return commonTime 19 return commonTime
22 } 20 }
23 -  
24 //渲染附件表格 21 //渲染附件表格
25 function createDeviceTable() { 22 function createDeviceTable() {
26 var deviceTable = table.render({ 23 var deviceTable = table.render({
27 elem: '#deviceTable', 24 elem: '#deviceTable',
28 - url: domainName + '/api-room/machineRoom/findDeviceByRecordId', 25 + url: domainName + '/api-web/machineRoom/findDeviceByRecordId',
29 where: { 26 where: {
30 - access_token: accessToken, 27 + accessToken: accessToken,
31 recordId: d.id 28 recordId: d.id
32 }, 29 },
33 height: 'full', 30 height: 'full',
@@ -53,4 +50,4 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function @@ -53,4 +50,4 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function
53 } 50 }
54 51
55 }) 52 })
56 -}) 53 +})
  1 +/** 线路调整记录查看 */
  2 +layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydate', 'element'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var table = layui.table;
  6 + var admin = layui.admin;
  7 + var common = layui.common;
  8 + var laydate = layui.laydate;
  9 + var element = layui.element;
  10 +
  11 + exports('devicehitch', function () {
  12 + var accessToken = localStorage.getItem("accessToken");
  13 + var domainName = common.domainName;
  14 + var orgChart = echarts.init(document.getElementById('chart-devicehitch-report'));
  15 + var dateLimit = "";
  16 + var createTime = "month";
  17 +
  18 + //日期范围选择
  19 + laydate.render({
  20 + elem: '#hitchdateLimit'
  21 + ,range: '~',
  22 + trigger: 'click',
  23 + ready: function(date){
  24 + $("#hitchdateLimit").removeAttr("lay-key");
  25 + $(this).attr("lay-key","1");
  26 + },
  27 + done: function (value) {
  28 + dateLimit = value
  29 + if (dateLimit == '') {
  30 + $('[data-period="month"]').click()
  31 + } else {
  32 + $.each($("button.date"), function (i, e) {
  33 + var $dom = $(e);
  34 + if ($dom.hasClass("active")) {
  35 + $dom.removeClass("active")
  36 + }
  37 + })
  38 + reloadAllChange()
  39 + }
  40 + }
  41 + });
  42 +
  43 + form.render();
  44 + loadOrgdevicehitchChart();
  45 + loaddevicehitchTable();
  46 + loadConditionSelect();
  47 +
  48 +
  49 + //监听Esc事件
  50 + $(document).keyup(function (event) {
  51 + if (event.keyCode === 27) {
  52 + layer.closeAll();
  53 + }
  54 + });
  55 +
  56 +
  57 + // 日期方式选择
  58 + $('#btns-devicehitch-time button').click(function () {
  59 + $.each($("button.date"), function (i, e) {
  60 + var $dom = $(e);
  61 + if ($dom.hasClass("active")) {
  62 + $dom.removeClass("active")
  63 + }
  64 + })
  65 + $("#mettingdateLimit").val('')
  66 + dateLimit = ''
  67 + $("#btns-devicehitch-time button").removeClass("active");
  68 + $(this).addClass("active");
  69 + createTime = ($(this).data("period"))
  70 + reloadAllChange();
  71 + });
  72 +
  73 + // 回车搜索
  74 + $('[lay-filter="form-devicehitch-condition"] input').keydown(function (e) {
  75 + if (e.keyCode === 13) {
  76 + reloadAllChange();
  77 + }
  78 + });
  79 +
  80 + // 下拉框改变搜索
  81 + form.on('select(slt-devicehitch-org)', reloadAllChange);
  82 + // 下拉框改变搜索
  83 + form.on('select(slt-devicehitch-repairStatus)', reloadAllChange);
  84 +
  85 + // 加载表格
  86 + function loaddevicehitchTable() {
  87 + var conditions = form.val('form-devicehitch-condition');
  88 +
  89 + Object.assign(conditions, {
  90 + accessToken: accessToken,
  91 + createtime: createTime,
  92 + viewMode: 'true',
  93 + dateLimit: dateLimit
  94 + });
  95 + table.render({
  96 + elem: '#table-devicehitch-view',
  97 + url: domainName + '/api-web/machineRoom/findDevicehitchRecords',
  98 + where: conditions,
  99 + height: 'full-360',
  100 + page: {
  101 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  102 + theme: '#1E9FFF'
  103 + },
  104 + end: function (e) {
  105 + form.render()
  106 + },
  107 + limit: common.limit,
  108 + limits: common.limits,
  109 + even: true,
  110 + cols: [[ {
  111 + type: 'numbers', title: '序号'
  112 + }, {
  113 + field: 'title', title: '维修单编号', align: 'center',width:100,
  114 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-devicehitch-title" >{{d.title}}</span></div>'
  115 + }, {
  116 + field: 'machineRoomName', title: '机房', align: 'center',width:100
  117 + }, {
  118 + field: 'deviceTypeName', title: '设备类型', align: 'center',width:88
  119 + }, {
  120 + field: 'deviceInfo', title: '设备名称', align: 'center',width:88
  121 + },{
  122 + field: 'hitchDiscover', title: '故障发现人', align: 'center',width:100
  123 + },{
  124 + field: 'hitchTime', title: '故障时间', align: 'center',width:88
  125 + } ,{
  126 + field: 'hitchDesc', title: '故障描述', align: 'center',width:150
  127 + },{
  128 + field: 'projectLeader', title: '设备负责人', align: 'center',width:100
  129 + }, {
  130 + field: 'phone', title: '联系方式', align: 'center',width:88
  131 + }, {
  132 + field: 'repairer', title: '维修人', align: 'center',width:80
  133 + }, {
  134 + field: 'attachmentList', title: '附件', align: 'center',width:60,
  135 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-devicehitch-attachment">{{d.attachmentList.length}}</span></div>'
  136 + },{
  137 + field: 'repairPlan', title: '计划维修时间', align: 'center'
  138 + }, {
  139 + field: 'repairStatus', title: '维修状态', align: 'center',width:88,
  140 + templet:function (d) {
  141 + if(d.repairStatus=="0"){
  142 + return "未维修"
  143 + }else {
  144 + return "已维修"
  145 + }
  146 + }
  147 + }, {
  148 + field: 'applyTime', title: '记录时间', align: 'center',width:95
  149 + }
  150 + ]],
  151 + done: function () {
  152 + //获取线路列表
  153 + $('.view-devicehitch-title').on('click', function () {
  154 + opendevicehitchForm($(this).data('id'))
  155 + })
  156 + //获取线路列表
  157 + $('.view-devicehitch-attachment').on('click', function () {
  158 + opendevicehitchList("attachment",$(this).data('id'))
  159 + })
  160 +
  161 + }
  162 + });
  163 + }
  164 + $("#devicehitch-export-excel").on('click', function () {
  165 + var href = common.domainName + '/api-web/machineRoom/exporBDevicehitchRecords?accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  166 + window.open(href)
  167 + })
  168 + //新增日报
  169 + $('#devicehitch_create').on('click', function () {
  170 + opendevicehitchForm()
  171 + })
  172 + //下载
  173 + $('#devicehitch_download').on('click', function () {
  174 + var id ='c24e6924b0dd11ec84cf005056a9e84c';
  175 + var url = domainName + `/api-web/openoffice/download/${id}?accessToken=` + accessToken;
  176 + window.open(url);
  177 + })
  178 +
  179 + //新增/编辑表单
  180 + function opendevicehitchForm(id) {
  181 + var title = id ? '编辑' : '新增'
  182 + common.openWin('machineroom/devicehitchAdd', title, {id: id}, ['保存', '取消'], function f(){
  183 + $("#devicehitch-form-save-id").trigger("click");
  184 + reloadAllChange();
  185 + })
  186 + }
  187 +
  188 + //查看附件/调整信息列表
  189 + function opendevicehitchList(type,id) {
  190 + var title = "附件";
  191 + common.openWin('machineroom/devicehitchList', title, {id: id,type:type}, ['确定', '取消'])
  192 + }
  193 +
  194 + // 加载查询条件下拉框
  195 + function loadConditionSelect() {
  196 + admin.req({
  197 + url: domainName + '/api-web/bResource/getInfoByAssetsType',
  198 + }).done(function (response) {
  199 + var options = "<option value=''>=设备类型=</option>";
  200 + $.each(response.data, function (i, v) {
  201 + options += "<option value='" + v.resTypeCode + "'>" + v.resTypeName + "</option>"
  202 + });
  203 + $('#slt-devicehitch-org').html(options);
  204 + form.render();
  205 + });
  206 + }
  207 +
  208 +
  209 + // 各单位维修情况
  210 + function loadOrgdevicehitchChart() {
  211 + var conditions = {};
  212 + Object.assign(conditions, {accessToken: accessToken, createtime: createTime, viewMode: ''});
  213 + admin.req({
  214 + url: domainName + '/api-web/machineRoom/findDevicehitchRecordsForGroup',
  215 + data: conditions
  216 + }).done(function (response) {
  217 + var chartData = response.map;
  218 + var groupList = chartData.groupList;
  219 + var norepairList = chartData.norepairList;
  220 + var repairList = chartData.repairList;
  221 + var totalList = chartData.totalList;
  222 + var xData = [];
  223 + var groupData = [];
  224 + $.each(groupList, function (i, v) {
  225 + xData.push(v);
  226 + groupData.push({
  227 + name: v,
  228 + value: 1
  229 + });
  230 + });
  231 + var series = [{
  232 +
  233 + name: '未维修',
  234 + data: norepairList,
  235 + barWidth: 20,
  236 + type: 'bar',
  237 + stack: 'alarm',
  238 + emphasis: {
  239 + focus: 'series'
  240 + },
  241 + itemStyle: {
  242 + color: "#1e9fff"
  243 + }
  244 + },{
  245 + name: '已维修',
  246 + data: repairList,
  247 + barWidth: 20,
  248 + type: 'bar',
  249 + stack: 'alarm',
  250 + emphasis: {
  251 + focus: 'series'
  252 + },
  253 + itemStyle: {
  254 + color: "#FF7E00"
  255 + },
  256 + label: {
  257 + show: true,
  258 + position: 'top',
  259 + textStyle: {
  260 + color: '#555'
  261 + },
  262 + formatter: function (data) {
  263 + return totalList[data.dataIndex]
  264 + }
  265 + }
  266 +
  267 + }];
  268 + /**
  269 + 双X轴标签对应,伪实现思路:
  270 + 底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
  271 + */
  272 + var option = {
  273 + title: {
  274 + text: '设备维修统计图示',
  275 + textStyle: {
  276 + color: '#00D81E06',
  277 + fontSize: 5
  278 + }
  279 + },
  280 + tooltip: {
  281 + trigger: 'axis',
  282 + axisPointer: {
  283 + type: 'shadow'
  284 + }
  285 + },
  286 + toolbox: {
  287 + show: true,
  288 + feature: {
  289 + saveAsImage: {}
  290 + },
  291 + right: 10
  292 + },
  293 + legend: {
  294 + data: ['未维修', '已维修'],
  295 + selectedMode: false
  296 + },
  297 + grid: [{
  298 + top: 40,
  299 + bottom: 70,
  300 + left: 50,
  301 + right: 5
  302 + }],
  303 + xAxis: [{
  304 + type: 'category',
  305 + data: xData,
  306 + axisLabel: {
  307 + color: '#333',
  308 + show: true,
  309 + interval:0,
  310 + rotate:15
  311 + },
  312 + axisLine: {
  313 + lineStyle: {
  314 + color: '#e7e7e7'
  315 + }
  316 + },
  317 + axisTick: {
  318 + lineStyle: {
  319 + color: '#e7e7e7'
  320 + }
  321 + },
  322 + zlevel: 1
  323 + }],
  324 + yAxis: [{
  325 + type: 'value',
  326 + gridIndex: 0,
  327 + axisLabel: {
  328 + color: '#333'
  329 + },
  330 + splitLine: {
  331 + lineStyle: {
  332 + type: 'dashed'
  333 + }
  334 + },
  335 + axisLine: {
  336 + lineStyle: {
  337 + color: '#ccc'
  338 + }
  339 + },
  340 + axisTick: {
  341 + lineStyle: {
  342 + color: '#ccc'
  343 + }
  344 + }
  345 + }],
  346 + series: series
  347 + };
  348 + orgChart.setOption(option)
  349 + });
  350 + }
  351 +
  352 +
  353 + // 图表,表格重新加载
  354 + function reloadAllChange() {
  355 + loaddevicehitchTable();
  356 + loadOrgdevicehitchChart();
  357 +
  358 + }
  359 + });
  360 +});
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions;
  10 + var laydate = layui.laydate;
  11 + var upload = layui.upload;
  12 + var domainName = common.domainName;
  13 + var xmSelect = layui.xmSelect;
  14 +
  15 + //对外暴露的接口
  16 + exports('devicehitchAdd', function (data) {
  17 + var accessToken = localStorage.getItem("accessToken");
  18 + var userSelect = "";
  19 + var currentDate = {}
  20 + var applyDate = {}
  21 + var aAcknowledgingDate = {}
  22 + var bAcknowledgingDate = {}
  23 + var hitDate = {}
  24 + var uploadInst = {}
  25 + var defaultUser = []
  26 + var attachmentIds = []
  27 + var id = data.id
  28 + var cols = []
  29 + var where = {}
  30 + var currentResourceType = ''
  31 + var resTypeSele
  32 +
  33 +
  34 + var viewType = data && data.viewType ? data.viewType : '';
  35 +
  36 + //渲染表单
  37 + form.render(null, 'add-devicehitch-form')
  38 + init()
  39 +
  40 + //保存
  41 + form.on('submit(devicehitch-form-save-id)', function (res) {
  42 + $("#devicehitch-form-save-id").attr("disabled","disabled");
  43 + var value = $('#attachmentInput').val()
  44 + if (value != '') {
  45 + $('#upload_btn').click()
  46 + } else {
  47 + saveForm()
  48 + }
  49 + })
  50 +
  51 + //保存
  52 + function saveForm() {
  53 +
  54 + layer.load(2)
  55 + var data = form.val('add-devicehitch-form')
  56 + var params = {}
  57 + params.attachmentIds = attachmentIds.toString()
  58 + delete data['file']
  59 + delete data['select']
  60 + params.devicehitch = JSON.stringify(data)
  61 + admin.req({
  62 + url: domainName + '/api-web/machineRoom/devicehitch/save?accessToken=' + accessToken,
  63 + data: JSON.stringify(params),
  64 + type: 'post',
  65 + contentType: "application/json; charset=utf-8",
  66 + done: function (res) {
  67 + if (res.success) {
  68 + layer.msg(res.msg, {
  69 + offset: '15px',
  70 + icon: 1,
  71 + time: 1000,
  72 + }, function () {
  73 + $("#attachment").removeAttr("disabled");
  74 + $("#devicehitch-form-save-id").removeAttr("disabled");
  75 + layer.closeAll();
  76 + table.reload('table-devicehitch-view', {
  77 + where: {
  78 + accessToken: accessToken,
  79 + createtime: "month",
  80 + viewMode: 'true',
  81 + dateLimit: ""
  82 + },
  83 + });
  84 + })
  85 + } else {
  86 + layer.msg(res.msg, {
  87 + offset: '15px',
  88 + icon: 7,
  89 + time: 1000,
  90 + })
  91 + }
  92 + }
  93 + })
  94 + return false
  95 + }
  96 +
  97 + //页面初始化
  98 + function init() {
  99 + loadSelect()
  100 + initDatePlus()
  101 + initUploadPlus()
  102 +
  103 +
  104 + if (viewType == 'view') {
  105 + initViewMode();
  106 + }
  107 + }
  108 +
  109 + // 初始化下拉框
  110 + function loadSelect() {
  111 + admin.req({
  112 + url: domainName + '/api-web/bResource/getInfoByAssetsType',
  113 + }).done(function (response) {
  114 + var options = "<option value=''>=设备类型=</option>";
  115 + $.each(response.data, function (i, v) {
  116 + options += "<option value='" + v.resTypeCode + "'>" + v.resTypeName + "</option>"
  117 + });
  118 + $('#slt-devicehitch-res').html(options);
  119 +
  120 + form.render();
  121 +
  122 + });
  123 + admin.req({
  124 + url: domainName + '/api-web/machineRoom/getMachineRoomInfo'
  125 + }).done(function (response) {
  126 + var options = "<option value=''>=归属机房=</option>";
  127 + $.each(response.data, function (i, v) {
  128 + options += "<option value='" + v.machineRoomId + "'>" + v.machineRoomName + "</option>"
  129 + });
  130 + $('#slt-devicehitch-machine').html(options);
  131 + form.render();
  132 + fromAssignment()
  133 + });
  134 + admin.req({
  135 + url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
  136 + }).done(function (response) {
  137 + var options = "<option value=''>=工作单位=</option>";
  138 + $.each(response.data, function (i, v) {
  139 + options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
  140 + });
  141 + options += "<option value='0'>其他</option>";
  142 + $('#slt-discoverMfId-group').html(options);
  143 + $('#slt-repairMfId-group').html(options);
  144 + form.render();
  145 + });
  146 +
  147 + }
  148 + form.on('select(slt-discoverMfId-group)', function (data) {
  149 + if (data.value == '0') {
  150 + $("#slt-discoverMfId-group").css("display", "none");
  151 + $("#discoverMfOther").css("display", "block");
  152 + } else {
  153 + $("#discoverMfOther").css("display", "none");
  154 + }
  155 + });
  156 + form.on('select(slt-repairMfId-group)', function (data) {
  157 + if (data.value == '0') {
  158 + $("#slt-repairMfId-group").css("display", "none");
  159 + $("#repairMfOther").css("display", "block");
  160 + } else {
  161 + $("#repairMfOther").css("display", "none");
  162 + }
  163 + });
  164 +
  165 + //初始化日期插件
  166 + function initDatePlus() {
  167 + applyDate = laydate.render({
  168 + elem: '#applyTime', //指定元素
  169 + value: new Date(),
  170 + type: 'datetime',
  171 + isInitValue: true,
  172 + });
  173 + hitDate = laydate.render({
  174 + elem: '#hitchTime', //指定元素
  175 + value: new Date(),
  176 + type: 'datetime',
  177 + isInitValue: true,
  178 + });
  179 + aAcknowledgingDate = laydate.render({
  180 + elem: '#aAcknowledgingTime', //指定元素
  181 + value: new Date(),
  182 + type: 'datetime',
  183 + isInitValue: true,
  184 + });
  185 + bAcknowledgingDate = laydate.render({
  186 + elem: '#bAcknowledgingTime', //指定元素
  187 + value: new Date(),
  188 + type: 'datetime',
  189 + isInitValue: true,
  190 + });
  191 + laydate.render({
  192 + elem: '#repairPlan'
  193 + , range: '~',
  194 + type: 'datetime',
  195 + trigger: 'click',
  196 + ready: function (date) {
  197 + $("#repairPlan").removeAttr("lay-key");
  198 + $(this).attr("lay-key", "1");
  199 + },
  200 + done: function (value) {
  201 + $("#repairPlan").val(value);
  202 + }
  203 + });
  204 + }
  205 +
  206 + //初始化上传插件
  207 + function initUploadPlus() {
  208 + var param = {"accessToken": accessToken}
  209 + var fileName = []
  210 + uploadInst = upload.render({
  211 + elem: '#attachment', //绑定元素
  212 + url: common.domainName + '/api-web/machineRoom/devicehitch/upload?accessToken='+accessToken,
  213 + data: param,
  214 + multiple: true,
  215 + auto: false, //选择文件后不自动上传
  216 + bindAction: '#upload_btn',//指定按钮触发上传
  217 + accept: 'file',
  218 + exts: 'xls|doc|pdf|docx|xlsx|jpg|png',
  219 + choose: function (obj) {
  220 + //选择文件后回调
  221 + var files = this.files = obj.pushFile();
  222 + if(typeof(files)!=undefined){
  223 + if(Object.getOwnPropertyNames(files).length>2){
  224 + $("#attachment").attr("disabled","disabled");
  225 + layer.msg('目前最多支持上传三个文件!', {
  226 + icon: 7, time: 3000
  227 + });
  228 + }
  229 + }
  230 + obj.preview(function (index, file, result) {
  231 + fileName.push(file.name)
  232 + $('#attachmentInput').val(fileName.toString())
  233 + })
  234 + },
  235 + done: function (res) {
  236 + //单次上传成功
  237 + attachmentIds.push(res.str)
  238 + },
  239 + allDone: function (obj) {
  240 + //全部上传成功后
  241 + saveForm()
  242 + },
  243 + error: function (index, upload) {
  244 + // 上传失败
  245 + layer.msg('文件上传时发生故障,请稍后再试!', {
  246 + icon: 7, time: 3000
  247 + });
  248 + }
  249 + });
  250 + }
  251 +
  252 +
  253 + // 初始化查看模式
  254 + function initViewMode() {
  255 + $('form[lay-filter="add-devicehitch-form"]').find('input, textarea').attr('readonly', true);
  256 + $('form[lay-filter="add-devicehitch-form"]').find('select').attr('disabled', true);
  257 + $.each(xmSelect.get(), function (i, v) {
  258 + v.update({disabled: true});
  259 + });
  260 + $('#attachmentInput').parent().parent().parent().addClass('hide');
  261 + $('#table-devicehitch-add-attachment').removeClass('hide');
  262 + //渲染附件表格
  263 + var attachmentTable = table.render({
  264 + elem: '#table-devicehitch-add-attachment',
  265 + url: domainName + '/api-web/machineRoom/devicehitch/getAttaById',
  266 + where: {
  267 + accessToken: accessToken,
  268 + id: data.id
  269 + },
  270 + height: 'full',
  271 + page: {
  272 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  273 + , theme: '#1E9FFF'//自定义分页主题颜色
  274 + },
  275 + end: function (e) {
  276 + form.render()
  277 + },
  278 + limit: common.limit,
  279 + limits: common.limits,
  280 + even: true,
  281 + cols: [[
  282 + {type: 'numbers', title: '序号'},
  283 + {
  284 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  285 + },
  286 + {
  287 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  288 + },
  289 + {
  290 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  291 + templet: function (d) {
  292 + var str = (d.size / 1000).toFixed(2)
  293 + return `<div><span>${str}KB</span></div>`
  294 + }
  295 + },
  296 + {
  297 + title: '操作', align: "center", width: 120,
  298 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path = "{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span></div>'
  299 + }
  300 + ]],
  301 + done: function () {
  302 + $('.preview-attachment-btn').on('click', function () {
  303 + var id = $(this).data('id')
  304 + var suffix = $(this).data('suffix')
  305 + var filepath = $(this).data('path')
  306 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  307 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  308 + layer.open({
  309 + type: 1,
  310 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  311 + title: '图片预览',
  312 + area: ['60%', '90%']
  313 + })
  314 + } else {
  315 + //附件为文档类型
  316 + common.fileviewer(filepath)
  317 + }
  318 + })
  319 + }
  320 + })
  321 + form.render();
  322 + }
  323 +
  324 + //表单赋值
  325 + function fromAssignment() {
  326 + if (data && data.id) {
  327 + $('#add-devicehitch-form-atta').show()
  328 + //编辑表单时禁用日志类型修改和时间选择
  329 + // $('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
  330 + // $('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
  331 + //编辑表单时取消显示默认值
  332 + applyDate.config.isInitValue = false
  333 + hitDate.config.isInitValue = false
  334 + aAcknowledgingDate.config.isInitValue = false
  335 + bAcknowledgingDate.config.isInitValue = false
  336 + initDatePlus()
  337 + admin.req({
  338 + url: domainName + `/api-web/machineRoom/findDevicehitchRecordById`,
  339 + data: {recordId: data.id},
  340 + async: false,
  341 + }).done(function (res) {
  342 + form.val('add-devicehitch-form', res.object)
  343 + if(res.object.repairMfId=="0"){
  344 + $("#repairMfOther").css("display", "block");
  345 + }
  346 + if(res.object.discoverMfId=="0"){
  347 + $("#discoverMfOther").css("display", "block");
  348 + }
  349 + if (res.object.attachmentList) {
  350 + $.each(res.object.attachmentList, function (i, v) {
  351 + writeTagsInfo(v.id, v.originalName)
  352 + })
  353 + }
  354 + })
  355 + }
  356 + }
  357 +
  358 + //写入标签内容
  359 + function writeTagsInfo(id, name) {
  360 + var tags = '<span id="tags_span_' + id + '" data-id="' + id + '"><em>' + name + '</em>' +
  361 + '<button type="button" value="' + id + '" class="tagsclose">×</button></span>';
  362 + if ($("#tags_span_" + id).length == 0) {
  363 + //拼接标签
  364 + $("#selecte_content_id").append(tags);
  365 + //绑定标签的删除事件
  366 + bindTagesDelEvent();
  367 + }
  368 + }
  369 +
  370 + //删除标签事件
  371 + function bindTagesDelEvent() {
  372 + //删除已选主体的页签
  373 + $("button.tagsclose").on("click", function () {
  374 + var attachId = $(this).attr("value");
  375 + //确认提示框
  376 + layer.confirm('附件删除后将无法恢复,您确定要删除吗?', {
  377 + btn: ['确定', '取消'] //按钮
  378 + }, function () {
  379 + $.ajax({
  380 + url: domainName + `/api-web/workreport/deleteAttachment/${id}/${attachId}?accessToken=` + accessToken,
  381 + type: "get",
  382 + }).done(function (res) {
  383 + layer.msg('删除成功', {
  384 + offset: '15px'
  385 + , icon: 1
  386 + , time: 1000
  387 + }, function () {
  388 + $("#tags_span_" + attachId).remove();
  389 + });
  390 + }).error(function (error) {
  391 + console.log(error);
  392 + });
  393 + });
  394 + });
  395 + }
  396 + })
  397 +})
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions
  10 + var domainName = common.domainName;
  11 +
  12 + //对外暴露的接口
  13 + exports("devicehitchList", function (d) {
  14 + var accessToken = localStorage.getItem("accessToken");
  15 + if (d.type == 'attachment') {
  16 + $('#attachmentTable').show()
  17 +
  18 + createAttachmentTable()
  19 + }
  20 +
  21 +
  22 + //渲染附件表格
  23 + function createAttachmentTable() {
  24 + var attachmentTable = table.render({
  25 + elem: '#attachmentTable',
  26 + url: domainName + '/api-web/machineRoom/devicehitch/getAttaById',
  27 + where: {
  28 + accessToken: accessToken,
  29 + id: d.id
  30 + },
  31 + height: 'full',
  32 + page: {
  33 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  34 + , theme: '#1E9FFF'//自定义分页主题颜色
  35 + },
  36 + end: function (e) {
  37 + form.render()
  38 + },
  39 + limit: common.limit,
  40 + limits: common.limits,
  41 + even: true,
  42 + cols: [[
  43 + {type: 'numbers', title: '序号'},
  44 + {
  45 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  46 + }, {
  47 + field: 'originalName', title: '原始名称', align: 'center', minWith: 200,
  48 + }, {
  49 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  50 + },
  51 + {
  52 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  53 + templet: function (d) {
  54 + var str = (d.size / 1000).toFixed(2)
  55 + return `<div><span>${str}KB</span></div>`
  56 + }
  57 + },
  58 + {
  59 + title: '操作', align: "center", width: 120,
  60 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path="{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span>' +
  61 + '<span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link attachment-download-btn" style="margin-left: 10px">下载</span></div>'
  62 + }
  63 + ]],
  64 + done: function () {
  65 + $('.preview-attachment-btn').on('click', function () {
  66 + var id = $(this).data('id')
  67 + var suffix = $(this).data('suffix')
  68 + var filepath = $(this).data('path')
  69 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  70 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  71 + layer.open({
  72 + type: 1,
  73 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  74 + title: '图片预览',
  75 + area: ['60%', '90%']
  76 + })
  77 + } else {
  78 + //附件为文档类型
  79 + common.fileviewer(filepath)
  80 + }
  81 + })
  82 +
  83 + $('.attachment-download-btn').on('click',function () {
  84 + var id = $(this).data('id')
  85 + var suffix = $(this).data('suffix')
  86 + var url = domainName + `/api-web/openoffice/download/${id}?accessToken=` + accessToken
  87 + window.open(url)
  88 + })
  89 + }
  90 + })
  91 + }
  92 +
  93 + })
  94 +})
  1 +/** 应急演练 */
  2 +layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydate', 'element'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var table = layui.table;
  6 + var admin = layui.admin;
  7 + var common = layui.common;
  8 + var laydate = layui.laydate;
  9 + var element = layui.element;
  10 +
  11 + exports('emergency', function () {
  12 + var accessToken = localStorage.getItem("accessToken");
  13 + var domainName = common.domainName;
  14 + var timeChart = echarts.init(document.getElementById('emergency-chart-time-record'));
  15 + var inspIsLoad = false;
  16 + var businessIsLoad = false;
  17 + var currSelect = 0;
  18 + var dateLimit = ""
  19 + var createTime = "month"
  20 +
  21 +
  22 + //日期范围选择
  23 + laydate.render({
  24 + elem: '#emergencydateLimit'
  25 + , range: '~',
  26 + trigger: 'click',
  27 + ready: function (date) {
  28 + $("#emergencydateLimit").removeAttr("lay-key");
  29 + $(this).attr("lay-key", "1");
  30 + },
  31 + done: function (value) {
  32 + dateLimit = value
  33 + if (dateLimit == '') {
  34 + $('[data-period="month"]').click()
  35 + } else {
  36 + $.each($("button.date"), function (i, e) {
  37 + var $dom = $(e);
  38 + if ($dom.hasClass("active")) {
  39 + $dom.removeClass("active")
  40 + }
  41 + })
  42 + reloadAllChange()
  43 + }
  44 + }
  45 + });
  46 +
  47 + form.render();
  48 + renderEmergencyPlanListTable();
  49 + renderEmergencyReportListTable()
  50 + loademergencyChart();
  51 + loadConditionSelect();
  52 +
  53 +
  54 + //监听Esc事件
  55 + $(document).keyup(function (event) {
  56 + if (event.keyCode === 27) {
  57 + layer.closeAll();
  58 + }
  59 + });
  60 +
  61 +
  62 + // 日期方式选择
  63 + $('#btns-emergency-time button').click(function () {
  64 + $.each($("button.date"), function (i, e) {
  65 + var $dom = $(e);
  66 + if ($dom.hasClass("active")) {
  67 + $dom.removeClass("active")
  68 + }
  69 + })
  70 + $("#dateLimit").val('')
  71 + dateLimit = ''
  72 + $("#btns-emergency-time button").removeClass("active");
  73 + $(this).addClass("active");
  74 + createTime = ($(this).data("period"))
  75 + reloadAllChange();
  76 + });
  77 +
  78 + // 回车搜索
  79 + $('[lay-filter="form-emergency-condition"] input').keydown(function (e) {
  80 + if (e.keyCode === 13) {
  81 + reloadAllChange();
  82 + }
  83 + });
  84 +
  85 + // 下拉框改变搜索
  86 + form.on('select(slt-emergency-group)', reloadAllChange);
  87 + // 下拉框改变搜索
  88 + form.on('select(slt-emergency-biz)', reloadAllChange);
  89 + // 下拉框改变搜索
  90 + form.on('select(slt-emergency-org)', reloadAllChange);
  91 +
  92 + form.on('select(slt-emergency-status)', reloadAllChange);
  93 +
  94 + // tab页切换事件
  95 + element.on('tab(emergency-tab)', function (data) {
  96 + if (data.index == 0) {
  97 + if (!inspIsLoad) {
  98 + renderEmergencyPlanListTable();
  99 + inspIsLoad = true;
  100 + }
  101 + } else if (data.index == 1) {
  102 + if (!businessIsLoad) {
  103 + renderEmergencyReportListTable();
  104 + businessIsLoad = true;
  105 + }
  106 + }
  107 + currSelect = data.index;
  108 + });
  109 +
  110 + // 加载配件更换表格
  111 + function renderEmergencyPlanListTable() {
  112 + var conditions = form.val('form-emergency-condition');
  113 +
  114 + Object.assign(conditions, {
  115 + accessToken: accessToken,
  116 + createtime: createTime,
  117 + viewMode: 'true',
  118 + dateLimit: dateLimit
  119 + });
  120 + table.render({
  121 + elem: '#emergencyPlan_table_id',
  122 + url: domainName + '/api-web/emergency/findBEmergencyRecords?docType=0',
  123 + where: conditions,
  124 + height: 'full-360',
  125 + page: {
  126 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  127 + theme: '#1E9FFF'
  128 + },
  129 + end: function (e) {
  130 + form.render()
  131 + },
  132 + limit: common.limit,
  133 + limits: common.limits,
  134 + even: true,
  135 + cols: [[{
  136 + type: 'numbers', title: '序号'
  137 + }, {
  138 + field: 'title', title: '预案版本', align: 'center',
  139 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-emergencyPlan-title" >{{d.title}}</span></div>'
  140 + }, {
  141 + field: 'busTypeName', title: '业务名称', align: 'center',
  142 + }, {
  143 + field: 'orgName', title: '所属处室', align: 'center'
  144 + }, {
  145 + field: 'principal', title: '系统责任人', align: 'center',
  146 + }, {
  147 + field: 'phone', title: '联系方式', align: 'center',
  148 + }, {
  149 + field: 'operationUser', title: '运维人', align: 'center',
  150 + }, {
  151 + field: 'manufacturerName', title: '所属单位', align: 'center', templet: function (d) {
  152 + if (d.manufacturerId == '0') {
  153 + return '其他';
  154 + } else {
  155 + return d.manufacturerName;
  156 + }
  157 + }
  158 + }, {
  159 + field: 'mphone', title: '运维电话', align: 'center',
  160 + }, {
  161 + field: 'attachmentList', title: '附件', align: 'center',
  162 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-emergencyPlan-attachment">{{d.attachmentList.length}}</span></div>'
  163 + }, {
  164 + field: 'applyTime', title: '创建时间', align: 'center'
  165 + }
  166 + ]],
  167 + done: function () {
  168 + //获取线路列表
  169 + $('.view-emergencyPlan-title').on('click', function () {
  170 + openemergencyForm($(this).data('id'))
  171 + })
  172 + //获取线路列表
  173 + $('.view-emergencyPlan-attachment').on('click', function () {
  174 + openemergencyList("attachment", $(this).data('id'))
  175 + })
  176 +
  177 + }
  178 + });
  179 + }
  180 +
  181 + // 加载设备出入表格
  182 + function renderEmergencyReportListTable() {
  183 + var conditions = form.val('form-emergency-condition');
  184 +
  185 + Object.assign(conditions, {
  186 + accessToken: accessToken,
  187 + createtime: createTime,
  188 + viewMode: 'true',
  189 + dateLimit: dateLimit
  190 + });
  191 + table.render({
  192 + elem: '#emergencyReport-table',
  193 + url: domainName + '/api-web/emergency/findBEmergencyRecords?docType=1',
  194 + where: conditions,
  195 + height: 'full-360',
  196 + page: {
  197 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
  198 + theme: '#1E9FFF'
  199 + },
  200 + end: function (e) {
  201 + form.render()
  202 + },
  203 + limit: common.limit,
  204 + limits: common.limits,
  205 + even: true,
  206 + cols: [[{
  207 + type: 'numbers', title: '序号'
  208 + }, {
  209 + field: 'title', title: '预案版本', align: 'center',
  210 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-emergencyReport-title" >{{d.title}}</span></div>'
  211 + }, {
  212 + field: 'busTypeName', title: '业务名称', align: 'center',
  213 + }, {
  214 + field: 'orgName', title: '所属处室', align: 'center'
  215 + }, {
  216 + field: 'principal', title: '系统责任人', align: 'center',
  217 + }, {
  218 + field: 'phone', title: '联系方式', align: 'center',
  219 + }, {
  220 + field: 'operationUser', title: '运维人', align: 'center',
  221 + }, {
  222 + field: 'manufacturerName', title: '所属单位', align: 'center', templet: function (d) {
  223 + if (d.manufacturerId == '0') {
  224 + return '其他';
  225 + } else {
  226 + return d.manufacturerName;
  227 + }
  228 + }
  229 + }, {
  230 + field: 'mphone', title: '运维电话', align: 'center',
  231 + }, {
  232 + field: 'attachmentList', title: '附件', align: 'center',
  233 + templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-emergencyReport-attachment">{{d.attachmentList.length}}</span></div>'
  234 + }, {
  235 + field: 'unitadjustperiod', title: '实施时间段', align: 'center'
  236 + }, {
  237 + field: 'applyTime', title: '创建时间', align: 'center'
  238 + }, {
  239 + field: 'status', title: '演练结果', align: 'center',
  240 + templet: '<div><span>{{d.status==0?"成功":"失败"}}</span></div>'
  241 +
  242 + }
  243 + ]],
  244 + done: function () {
  245 + //获取线路列表
  246 + $('.view-emergencyReport-title').on('click', function () {
  247 + openemergencyForm($(this).data('id'))
  248 + })
  249 + //获取线路列表
  250 + $('.view-emergencyReport-attachment').on('click', function () {
  251 + openemergencyList("attachment", $(this).data('id'))
  252 + })
  253 +
  254 + }
  255 + });
  256 + }
  257 +
  258 + //新增日报
  259 + $('#emergency_create').on('click', function () {
  260 + openemergencyForm()
  261 + })
  262 + //下载
  263 + $('#emergency_download').on('click', function (){
  264 + let id ='';
  265 + if (currSelect == 0) {
  266 + id = '62a341e759dd46d5b12b4c17ddb9db';
  267 + }else{
  268 + id = '09f4988f2fc8a785700040c49cfe5d19';
  269 + }
  270 + var url = domainName + `/api-web/openoffice/download/${id}?accessToken=` + accessToken;
  271 + window.open(url);
  272 + })
  273 + //新增/编辑表单
  274 + function openemergencyForm(id) {
  275 + var title = id ? '编辑' : '新增'
  276 + common.openWin('emergency/add', title, {id: id}, ['保存', '取消'], function f() {
  277 + $("#emergency-form-save-id").trigger("click");
  278 + reloadAllChange();
  279 + })
  280 + }
  281 +
  282 + //查看附件/调整信息列表
  283 + function openemergencyList(type, id) {
  284 + var title = "附件";
  285 + common.openWin('emergency/fileList', title, {id: id, type: type}, ['确定', '取消'])
  286 + }
  287 +
  288 + // 加载查询条件下拉框
  289 + function loadConditionSelect() {
  290 + admin.req({
  291 + url: domainName + '/mj/sysOrg/page?orgType=1'
  292 + }).done(function (response) {
  293 + var options = "<option value=''>=所属处室=</option>";
  294 + $.each(response.data.rows, function (i, v) {
  295 + options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
  296 + });
  297 + $('#slt-emergency-org').html(options);
  298 + form.render();
  299 + });
  300 + //绑定业务下拉选择数据
  301 + common.bizTypeSelect("slt-emergency-biz", function () {
  302 + form.render("select");
  303 + });
  304 + admin.req({
  305 + url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
  306 + }).done(function (response) {
  307 + var options = "<option value=''>=运维单位=</option>";
  308 + $.each(response.data, function (i, v) {
  309 + options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
  310 + });
  311 + options += "<option value='0'>其他</option>";
  312 + $('#slt-emergency-group').html(options);
  313 + form.render();
  314 + });
  315 + }
  316 +
  317 + $("#emergency-export-excel").on('click', function () {
  318 +
  319 + let href = '';
  320 +
  321 + if (currSelect == 0) {
  322 + href = common.domainName + '/api-web/emergency/export?docType=0&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  323 + } else if (currSelect == 1) {
  324 + href = common.domainName + '/api-web/emergency/export?docType=1&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  325 + }
  326 + window.open(href)
  327 + })
  328 +
  329 +
  330 + // 按系统统计演练
  331 + function loademergencyChart() {
  332 + var conditions = {};
  333 + Object.assign(conditions, {accessToken: accessToken, createtime: createTime, viewMode: ''});
  334 + admin.req({
  335 + url: domainName + '/api-web/emergency/findBEmergencyRecordsForGroup',
  336 + data: conditions
  337 + }).done(function (response) {
  338 + var chartData = response.map;
  339 + var groupList = chartData.groupList;
  340 + var planList = chartData.planList;
  341 + var reportList = chartData.reportList;
  342 + var totalList = chartData.totalList;
  343 + var xData = [];
  344 + var groupData = [];
  345 + $.each(groupList, function (i, v) {
  346 + xData.push(v);
  347 + groupData.push({
  348 + name: v,
  349 + value: 1
  350 + });
  351 + });
  352 + var series = [{
  353 +
  354 + name: '应急预案',
  355 + data: planList,
  356 + barWidth: 20,
  357 + type: 'bar',
  358 + stack: 'alarm',
  359 + emphasis: {
  360 + focus: 'series'
  361 + },
  362 + itemStyle: {
  363 + color: "#1e9fff"
  364 + }
  365 + }, {
  366 + name: '演练报告',
  367 + data: reportList,
  368 + barWidth: 20,
  369 + type: 'bar',
  370 + stack: 'alarm',
  371 + emphasis: {
  372 + focus: 'series'
  373 + },
  374 + itemStyle: {
  375 + color: "#FF7E00"
  376 + },
  377 + label: {
  378 + show: true,
  379 + position: 'top',
  380 + textStyle: {
  381 + color: '#555'
  382 + },
  383 + formatter: function (data) {
  384 + return totalList[data.dataIndex]
  385 + }
  386 + }
  387 +
  388 + }];
  389 + /**
  390 + 双X轴标签对应,伪实现思路:
  391 + 底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
  392 + */
  393 + var option = {
  394 + title: {
  395 + text: '应急预案和演练报告图示',
  396 + textStyle: {
  397 + color: '#00D81E06',
  398 + fontSize: 5
  399 + }
  400 + },
  401 + tooltip: {
  402 + trigger: 'axis',
  403 + axisPointer: {
  404 + type: 'shadow'
  405 + }
  406 + },
  407 + toolbox: {
  408 + show: true,
  409 + feature: {
  410 + saveAsImage: {}
  411 + },
  412 + right: 10
  413 + },
  414 + legend: {
  415 + data: ['应急预案', '演练报告'],
  416 + selectedMode: false
  417 + },
  418 + grid: [{
  419 + top: 40,
  420 + bottom: 70,
  421 + left: 50,
  422 + right: 5
  423 + }],
  424 + xAxis: [{
  425 + type: 'category',
  426 + data: xData,
  427 + axisLabel: {
  428 + color: '#333',
  429 + show: true,
  430 + interval: 0,
  431 + rotate: 15
  432 + },
  433 + axisLine: {
  434 + lineStyle: {
  435 + color: '#e7e7e7'
  436 + }
  437 + },
  438 + axisTick: {
  439 + lineStyle: {
  440 + color: '#e7e7e7'
  441 + }
  442 + },
  443 + zlevel: 1
  444 + }],
  445 + yAxis: [{
  446 + type: 'value',
  447 + gridIndex: 0,
  448 + axisLabel: {
  449 + color: '#333'
  450 + },
  451 + splitLine: {
  452 + lineStyle: {
  453 + type: 'dashed'
  454 + }
  455 + },
  456 + axisLine: {
  457 + lineStyle: {
  458 + color: '#ccc'
  459 + }
  460 + },
  461 + axisTick: {
  462 + lineStyle: {
  463 + color: '#ccc'
  464 + }
  465 + }
  466 + }],
  467 + series: series
  468 + };
  469 + timeChart.setOption(option)
  470 + });
  471 + }
  472 +
  473 +
  474 + // 图表,表格重新加载
  475 + function reloadAllChange() {
  476 + renderEmergencyPlanListTable();
  477 + renderEmergencyReportListTable()
  478 + loademergencyChart();
  479 + loadConditionSelect()
  480 + }
  481 + });
  482 +});
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions;
  10 + var laydate = layui.laydate;
  11 + var upload = layui.upload;
  12 + var domainName = common.domainName;
  13 + var xmSelect = layui.xmSelect;
  14 +
  15 + //对外暴露的接口
  16 + exports('emergencyAdd', function (data) {
  17 + var accessToken = localStorage.getItem("accessToken");
  18 + var userSelect = "";
  19 + var currentDate = {}
  20 + var hitDate = {}
  21 + var uploadInst = {}
  22 + var aAcknowledgingDate = {}
  23 + var bAcknowledgingDate = {}
  24 + var defaultUser = []
  25 + var attachmentIds = []
  26 + var id = data.id
  27 + var cols = []
  28 + var where = {}
  29 + var currentResourceType = ''
  30 + var resTypeSele
  31 +
  32 +
  33 + var viewType = data && data.viewType ? data.viewType : '';
  34 +
  35 + //渲染表单
  36 + form.render(null, 'add-emergency-form')
  37 + $("#period").hide();
  38 + searchEvent();
  39 + init()
  40 + function searchEvent(){
  41 + //通知类型
  42 + form.on('radio(docType)', function (data) {
  43 + if(data.value == '1'){
  44 + $("#period").show();
  45 + $("#backDiv").show();
  46 + $("#resultDiv").show();
  47 +
  48 +
  49 + }else{
  50 + $("#period").hide();
  51 + $("#backDiv").hide();
  52 + $("#resultDiv").hide();
  53 + $("#unitadjustperiod").val("");
  54 + $("#backProject").val("");
  55 + $("#resultDesc").val("");
  56 + }
  57 + });
  58 + }
  59 + //通知类型
  60 + form.on('radio(docType)', function (data) {
  61 + if(data.value == '1'){
  62 + $("#period").show();
  63 + $("#backDiv").show();
  64 + $("#resultDiv").show();
  65 +
  66 + }else{
  67 + $("#period").hide();
  68 + $("#backDiv").hide();
  69 + $("#resultDiv").hide();
  70 + $("#unitadjustperiod").val("");
  71 + $("#backProject").val("");
  72 + $("#resultDesc").val("");
  73 + }
  74 + checkDocTypeIsReport(data.value)
  75 + });
  76 + //保存
  77 + form.on('submit(emergency-form-save-id)', function (res) {
  78 + var value = $('#attachmentInput').val()
  79 + if (value != '') {
  80 + $('#upload_btn').click()
  81 + } else {
  82 + saveForm()
  83 + }
  84 + })
  85 +
  86 + //保存
  87 + function saveForm() {
  88 + layer.load(2)
  89 + var data = form.val('add-emergency-form');
  90 + var params = {}
  91 + params.attachmentIds = attachmentIds.toString()
  92 + delete data['file']
  93 + delete data['select']
  94 + params.emergency = JSON.stringify(data)
  95 + admin.req({
  96 + url: domainName + '/api-web/emergency/save?accessToken=' + accessToken,
  97 + data: JSON.stringify(params),
  98 + type: 'post',
  99 + contentType: "application/json; charset=utf-8",
  100 + done: function (res) {
  101 + if (res.success) {
  102 + layer.msg(res.msg, {
  103 + offset: '15px',
  104 + icon: 1,
  105 + time: 1000,
  106 + }, function () {
  107 + $("#attachment").removeAttr("disabled");
  108 + layer.closeAll()
  109 + table.reload('emergencyPlan_table_id', {
  110 + where: {
  111 + accessToken: accessToken,
  112 + createtime: "month",
  113 + viewMode: 'true',
  114 + dateLimit: ""
  115 + },
  116 + });
  117 + table.reload('emergencyReport-table', {
  118 + where: {
  119 + accessToken: accessToken,
  120 + createtime: "month",
  121 + viewMode: 'true',
  122 + dateLimit: ""
  123 + },
  124 + });
  125 + })
  126 + } else {
  127 + layer.msg(res.msg, {
  128 + offset: '15px',
  129 + icon: 7,
  130 + time: 1000,
  131 + })
  132 + }
  133 + }
  134 + })
  135 + return false
  136 + }
  137 + function checkDocTypeIsReport(data) {
  138 + var docType = "";
  139 + if(data) {
  140 + docType = data;
  141 + }
  142 + if(docType == '1'){
  143 + return 'required';
  144 + }else {
  145 + return '';
  146 + }
  147 + }
  148 + //页面初始化
  149 + function init() {
  150 + loadSelect()
  151 + initDatePlus()
  152 + initUploadPlus()
  153 +
  154 +
  155 + if (viewType == 'view') {
  156 + initViewMode();
  157 + }
  158 + }
  159 +
  160 + // 初始化下拉框
  161 + function loadSelect() {
  162 + admin.req({
  163 + url: domainName + '/mj/sysOrg/page?orgType=1'
  164 + }).done(function (response) {
  165 + var options = "<option value=''>=所属处室=</option>";
  166 + $.each(response.data.rows, function (i, v) {
  167 +
  168 + options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
  169 + });
  170 + $('#slt-emergencyAdd-org').html(options);
  171 + form.render();
  172 + });
  173 + //绑定业务下拉选择数据
  174 + common.bizTypeSelect("slt-biz-add", function () {
  175 + form.render("select");
  176 + fromAssignment()
  177 + });
  178 + admin.req({
  179 + url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
  180 + }).done(function (response) {
  181 + var options = "<option value=''>=运维公司=</option>";
  182 + $.each(response.data, function (i, v) {
  183 + options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
  184 + });
  185 + options += "<option value='0'>其他</option>";
  186 + $('#slt-emergencyadd-group').html(options);
  187 + form.render();
  188 + //fromAssignment();
  189 + });
  190 +
  191 + }
  192 +
  193 +
  194 + //初始化日期插件
  195 + function initDatePlus() {
  196 + currentDate = laydate.render({
  197 + elem: '#applyTime', //指定元素
  198 + value: new Date(),
  199 + type: 'datetime',
  200 + isInitValue: true,
  201 + });
  202 + aAcknowledgingDate = laydate.render({
  203 + elem: '#aAcknowledgingTime', //指定元素
  204 + value: new Date(),
  205 + type: 'datetime',
  206 + isInitValue: true,
  207 + });
  208 + bAcknowledgingDate = laydate.render({
  209 + elem: '#bAcknowledgingTime', //指定元素
  210 + value: new Date(),
  211 + type: 'datetime',
  212 + isInitValue: true,
  213 + });
  214 + laydate.render({
  215 + elem: '#unitadjustperiod'
  216 + , range: '~',
  217 + type: 'datetime',
  218 + trigger: 'click',
  219 + ready: function (date) {
  220 + $("#unitadjustperiod").removeAttr("lay-key");
  221 + $(this).attr("lay-key", "1");
  222 + },
  223 + done: function (value) {
  224 + $("#unitadjustperiod").val(value);
  225 + }
  226 + });
  227 + }
  228 +
  229 + //初始化上传插件
  230 + function initUploadPlus() {
  231 + var param = {"accessToken": accessToken}
  232 + var fileName = []
  233 + uploadInst = upload.render({
  234 + elem: '#attachment', //绑定元素
  235 + url: common.domainName + '/api-web/emergency/upload?accessToken='+accessToken,
  236 + data: param,
  237 + multiple: true,
  238 + auto: false, //选择文件后不自动上传
  239 + bindAction: '#upload_btn',//指定按钮触发上传
  240 + accept: 'file',
  241 + exts: 'xls|doc|pdf|docx|xlsx|jpg|png',
  242 + choose: function (obj) {
  243 + //选择文件后回调
  244 + var files = this.files = obj.pushFile();
  245 + if(typeof(files)!=undefined){
  246 + if(Object.getOwnPropertyNames(files).length>2){
  247 + $("#attachment").attr("disabled","disabled");
  248 + layer.msg('目前最多支持上传三个文件!', {
  249 + icon: 7, time: 3000
  250 + });
  251 + }
  252 + }
  253 + obj.preview(function (index, file, result) {
  254 + fileName.push(file.name)
  255 + $('#attachmentInput').val(fileName.toString())
  256 + })
  257 + },
  258 + done: function (res) {
  259 + //单次上传成功
  260 + attachmentIds.push(res.str)
  261 + },
  262 + allDone: function (obj) {
  263 + //全部上传成功后
  264 + saveForm()
  265 + },
  266 + error: function (index, upload) {
  267 + // 上传失败
  268 + layer.msg('文件上传时发生故障,请稍后再试!', {
  269 + icon: 7, time: 3000
  270 + });
  271 + }
  272 + });
  273 + }
  274 +
  275 +
  276 + // 初始化查看模式
  277 + function initViewMode() {
  278 + $('form[lay-filter="add-emergency-form"]').find('input, textarea').attr('readonly', true);
  279 + $('form[lay-filter="add-emergency-form"]').find('select').attr('disabled', true);
  280 + $.each(xmSelect.get(), function (i, v) {
  281 + v.update({disabled: true});
  282 + });
  283 + $('#attachmentInput').parent().parent().parent().addClass('hide');
  284 + $('#table-emergency-add-attachment').removeClass('hide');
  285 + //渲染附件表格
  286 + var attachmentTable = table.render({
  287 + elem: '#table-emergency-add-attachment',
  288 + url: domainName + '/api-web/emergency/getAttaById',
  289 + where: {
  290 + accessToken: accessToken,
  291 + id: data.id
  292 + },
  293 + height: 'full',
  294 + page: {
  295 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  296 + , theme: '#1E9FFF'//自定义分页主题颜色
  297 + },
  298 + end: function (e) {
  299 + form.render()
  300 + },
  301 + limit: common.limit,
  302 + limits: common.limits,
  303 + even: true,
  304 + cols: [[
  305 + {type: 'numbers', title: '序号'},
  306 + {
  307 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  308 + },
  309 + {
  310 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  311 + },
  312 + {
  313 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  314 + templet: function (d) {
  315 + var str = (d.size / 1000).toFixed(2)
  316 + return `<div><span>${str}KB</span></div>`
  317 + }
  318 + },
  319 + {
  320 + title: '操作', align: "center", width: 120,
  321 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path = "{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span></div>'
  322 + }
  323 + ]],
  324 + done: function () {
  325 + $('.preview-attachment-btn').on('click', function () {
  326 + var id = $(this).data('id')
  327 + var suffix = $(this).data('suffix')
  328 + var filepath = $(this).data('path')
  329 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  330 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  331 + layer.open({
  332 + type: 1,
  333 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  334 + title: '图片预览',
  335 + area: ['60%', '90%']
  336 + })
  337 + } else {
  338 + //附件为文档类型
  339 + common.fileviewer(filepath)
  340 + }
  341 + })
  342 + }
  343 + })
  344 + form.render();
  345 + }
  346 +
  347 + //表单赋值
  348 + function fromAssignment() {
  349 +
  350 + if (data && data.id) {
  351 + var loading =layer.load(2)
  352 + $('#add-emergency-form-atta').show()
  353 +
  354 +
  355 + //编辑表单时禁用日志类型修改和时间选择
  356 + // $('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
  357 + // $('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
  358 + //编辑表单时取消显示默认值
  359 + currentDate.config.isInitValue = false
  360 + initDatePlus()
  361 + admin.req({
  362 + url: domainName + `/api-web/emergency/findBEmergencyRecordByRecordId`,
  363 + data: {recordId: data.id},
  364 + async: false,
  365 + }).done(function (res) {
  366 + layer.close(loading)
  367 + form.val('add-emergency-form', res.object);
  368 + if (res.object.attachmentList) {
  369 + $.each(res.object.attachmentList, function (i, v) {
  370 + writeTagsInfo(v.id, v.originalName)
  371 + })
  372 + }
  373 + if(res.object.docType== '1'){
  374 + $("#period").show();
  375 + $("#backDiv").show();
  376 + $("#resultDiv").show();
  377 + }
  378 + $("input[type='radio'][name='docType'][value = '"+res.object.docType+"']").attr("checked",true);
  379 +
  380 + $("input[type='radio'][name='docType']").attr('disabled','disabled');
  381 +
  382 + })
  383 + }else{
  384 + $("input[type='radio'][name='docType']").removeAttr('disabled');
  385 + }
  386 + }
  387 +
  388 + //写入标签内容
  389 + function writeTagsInfo(id, name) {
  390 + var tags = '<span id="tags_span_' + id + '" data-id="' + id + '"><em>' + name + '</em>' +
  391 + '<button type="button" value="' + id + '" class="tagsclose">×</button></span>';
  392 + if ($("#tags_span_" + id).length == 0) {
  393 + //拼接标签
  394 + $("#selecte_content_id").append(tags);
  395 + //绑定标签的删除事件
  396 + bindTagesDelEvent();
  397 + }
  398 + }
  399 +
  400 + //删除标签事件
  401 + function bindTagesDelEvent() {
  402 + //删除已选主体的页签
  403 + $("button.tagsclose").on("click", function () {
  404 + var attachId = $(this).attr("value");
  405 + //确认提示框
  406 + layer.confirm('附件删除后将无法恢复,您确定要删除吗?', {
  407 + btn: ['确定', '取消'] //按钮
  408 + }, function () {
  409 + $.ajax({
  410 + url: domainName + `/api-web/workreport/deleteAttachment/${id}/${attachId}?accessToken=` + accessToken,
  411 + type: "get",
  412 + }).done(function (res) {
  413 + layer.msg('删除成功', {
  414 + offset: '15px'
  415 + , icon: 1
  416 + , time: 1000
  417 + }, function () {
  418 + $("#tags_span_" + attachId).remove();
  419 + });
  420 + }).error(function (error) {
  421 + console.log(error);
  422 + });
  423 + });
  424 + });
  425 + }
  426 + })
  427 +})
  1 +
  2 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
  3 + var $ = layui.$;
  4 + var form = layui.form;
  5 + var layer = layui.layer;
  6 + var admin = layui.admin;
  7 + var table = layui.table;
  8 + var common = layui.common;
  9 + var session = layui.sessions
  10 + var domainName = common.domainName;
  11 +
  12 + //对外暴露的接口
  13 + exports("emergencyList", function (d) {
  14 + var accessToken = localStorage.getItem("accessToken");
  15 + if (d.type == 'attachment') {
  16 + $('#attachmentTable').show()
  17 +
  18 + createAttachmentTable()
  19 + }
  20 +
  21 +
  22 + //渲染附件表格
  23 + function createAttachmentTable() {
  24 + var attachmentTable = table.render({
  25 + elem: '#attachmentTable',
  26 + url: domainName + '/api-web/emergency/getAttaById',
  27 + where: {
  28 + accessToken: accessToken,
  29 + id: d.id
  30 + },
  31 + height: 'full',
  32 + page: {
  33 + layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
  34 + , theme: '#1E9FFF'//自定义分页主题颜色
  35 + },
  36 + end: function (e) {
  37 + form.render()
  38 + },
  39 + limit: common.limit,
  40 + limits: common.limits,
  41 + even: true,
  42 + cols: [[
  43 + {type: 'numbers', title: '序号'},
  44 + {
  45 + field: 'name', title: '文件名称', align: 'center', minWith: 200,
  46 + }, {
  47 + field: 'originalName', title: '原始名称', align: 'center', minWith: 200,
  48 + }, {
  49 + field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
  50 + },
  51 + {
  52 + field: 'size', title: '文件大小', align: 'center', minWith: 150,
  53 + templet: function (d) {
  54 + var str = (d.size / 1000).toFixed(2)
  55 + return `<div><span>${str}KB</span></div>`
  56 + }
  57 + },
  58 + {
  59 + title: '操作', align: "center", width: 120,
  60 + templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" data-path="{{d.path}}" class="layui-table-link preview-attachment-btn">预览</span>' +
  61 + '<span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link attachment-download-btn" style="margin-left: 10px">下载</span></div>'
  62 + }
  63 + ]],
  64 + done: function () {
  65 + $('.preview-attachment-btn').on('click', function () {
  66 + var id = $(this).data('id')
  67 + var suffix = $(this).data('suffix')
  68 + var filepath = $(this).data('path')
  69 + if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
  70 + var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?accessToken=` + accessToken
  71 + layer.open({
  72 + type: 1,
  73 + content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
  74 + title: '图片预览',
  75 + area: ['60%', '90%']
  76 + })
  77 + } else {
  78 + //附件为文档类型
  79 + common.fileviewer(filepath)
  80 + }
  81 + })
  82 +
  83 + $('.attachment-download-btn').on('click',function () {
  84 + var id = $(this).data('id')
  85 + var suffix = $(this).data('suffix')
  86 + var url = domainName + `/api-web/openoffice/download/${id}?accessToken=` + accessToken
  87 + window.open(url)
  88 + })
  89 + }
  90 + })
  91 + }
  92 +
  93 + })
  94 +})
@@ -9,8 +9,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -9,8 +9,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
9 var element = layui.element; 9 var element = layui.element;
10 10
11 exports('enterDevice', function () { 11 exports('enterDevice', function () {
12 - var sessions = layui.sessions;  
13 - var accessToken = sessions.getToken().access_token; 12 + var accessToken = localStorage.getItem("accessToken");
14 var domainName = common.domainName; 13 var domainName = common.domainName;
15 var timeChart = echarts.init(document.getElementById('device-chart-time-record')); 14 var timeChart = echarts.init(document.getElementById('device-chart-time-record'));
16 var inspIsLoad = false; 15 var inspIsLoad = false;
@@ -23,11 +22,11 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -23,11 +22,11 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
23 //日期范围选择 22 //日期范围选择
24 laydate.render({ 23 laydate.render({
25 elem: '#devicedateLimit' 24 elem: '#devicedateLimit'
26 - , range: '~', 25 + ,range: '~',
27 trigger: 'click', 26 trigger: 'click',
28 - ready: function (date) { 27 + ready: function(date){
29 $("#devicedateLimit").removeAttr("lay-key"); 28 $("#devicedateLimit").removeAttr("lay-key");
30 - $(this).attr("lay-key", "1"); 29 + $(this).attr("lay-key","1");
31 }, 30 },
32 done: function (value) { 31 done: function (value) {
33 dateLimit = value 32 dateLimit = value
@@ -77,14 +76,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -77,14 +76,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
77 }); 76 });
78 77
79 // 回车搜索 78 // 回车搜索
80 - $('[lay-filter="form-enterDevice-condition"] input').keydown(function (e) { 79 + $('[lay-filter="form-enterStaff-condition"] input').keydown(function (e) {
81 if (e.keyCode === 13) { 80 if (e.keyCode === 13) {
82 reloadAllChange(); 81 reloadAllChange();
83 } 82 }
84 }); 83 });
85 84
86 // 下拉框改变搜索 85 // 下拉框改变搜索
87 - form.on('select(slt-device-group)', reloadAllChange); 86 + form.on('select(slt-staff-group)', reloadAllChange);
88 87
89 // tab页切换事件 88 // tab页切换事件
90 element.on('tab(enterdevice-tab)', function (data) { 89 element.on('tab(enterdevice-tab)', function (data) {
@@ -101,20 +100,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -101,20 +100,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
101 } 100 }
102 currSelect = data.index; 101 currSelect = data.index;
103 }); 102 });
104 -  
105 // 加载配件更换表格 103 // 加载配件更换表格
106 function renderEnterDeviceListTable() { 104 function renderEnterDeviceListTable() {
107 - var conditions = form.val('form-enterDevice-condition'); 105 + var conditions = form.val('form-enterStaff-condition');
108 106
109 Object.assign(conditions, { 107 Object.assign(conditions, {
110 - access_token: accessToken, 108 + accessToken: accessToken,
111 createtime: createTime, 109 createtime: createTime,
112 viewMode: 'true', 110 viewMode: 'true',
113 dateLimit: dateLimit 111 dateLimit: dateLimit
114 }); 112 });
115 table.render({ 113 table.render({
116 elem: '#enterdevice_table_id', 114 elem: '#enterdevice_table_id',
117 - url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecords?docType=1', 115 + url: domainName + '/api-web/machineRoom/findMachineRoomEnterDeviceRecords?docType=1',
118 where: conditions, 116 where: conditions,
119 height: 'full-360', 117 height: 'full-360',
120 page: { 118 page: {
@@ -127,13 +125,13 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -127,13 +125,13 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
127 limit: common.limit, 125 limit: common.limit,
128 limits: common.limits, 126 limits: common.limits,
129 even: true, 127 even: true,
130 - cols: [[{ 128 + cols: [[ {type: 'checkbox'},{
131 field: 'machineRoomName', title: '机房', align: 'center', 129 field: 'machineRoomName', title: '机房', align: 'center',
132 }, { 130 }, {
133 - field: 'manufacturerName', title: '工作单位', align: 'center', templet: function (d) {  
134 - if (d.manufacturerId == '0') { 131 + field: 'manufacturerName', title: '工作单位', align: 'center',templet: function (d) {
  132 + if(d.manufacturerId == '0'){
135 return d.manufacturerOther; 133 return d.manufacturerOther;
136 - } else { 134 + }else {
137 return d.manufacturerName; 135 return d.manufacturerName;
138 } 136 }
139 } 137 }
@@ -192,20 +190,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -192,20 +190,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
192 } 190 }
193 }); 191 });
194 } 192 }
195 -  
196 // 加载设备出入表格 193 // 加载设备出入表格
197 function renderFittingFixListTable() { 194 function renderFittingFixListTable() {
198 - var conditions = form.val('form-enterDevice-condition'); 195 + var conditions = form.val('form-enterStaff-condition');
199 196
200 Object.assign(conditions, { 197 Object.assign(conditions, {
201 - access_token: accessToken, 198 + accessToken: accessToken,
202 createtime: createTime, 199 createtime: createTime,
203 viewMode: 'true', 200 viewMode: 'true',
204 dateLimit: dateLimit 201 dateLimit: dateLimit
205 }); 202 });
206 table.render({ 203 table.render({
207 elem: '#fitting-table', 204 elem: '#fitting-table',
208 - url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecords?docType=2', 205 + url: domainName + '/api-web/machineRoom/findMachineRoomEnterDeviceRecords?docType=2',
209 where: conditions, 206 where: conditions,
210 height: 'full-360', 207 height: 'full-360',
211 page: { 208 page: {
@@ -218,13 +215,13 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -218,13 +215,13 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
218 limit: common.limit, 215 limit: common.limit,
219 limits: common.limits, 216 limits: common.limits,
220 even: true, 217 even: true,
221 - cols: [[{ 218 + cols: [[ {type: 'checkbox'},{
222 field: 'machineRoomName', title: '机房', align: 'center', 219 field: 'machineRoomName', title: '机房', align: 'center',
223 }, { 220 }, {
224 - field: 'manufacturerName', title: '工作单位', align: 'center', templet: function (d) {  
225 - if (d.manufacturerId == '0') { 221 + field: 'manufacturerName', title: '工作单位', align: 'center',templet: function (d) {
  222 + if(d.manufacturerId == '0'){
226 return d.manufacturerOther; 223 return d.manufacturerOther;
227 - } else { 224 + }else {
228 return d.manufacturerName; 225 return d.manufacturerName;
229 } 226 }
230 } 227 }
@@ -251,7 +248,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -251,7 +248,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
251 {{actionTypeStr}} 248 {{actionTypeStr}}
252 </div> 249 </div>
253 ` 250 `
254 - }, { 251 + }, {
255 field: 'deviceModel', title: '设备型号', align: 'center', 252 field: 'deviceModel', title: '设备型号', align: 'center',
256 }, { 253 }, {
257 field: 'localPlace', title: '设备物理位置', align: 'center', 254 field: 'localPlace', title: '设备物理位置', align: 'center',
@@ -283,7 +280,6 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -283,7 +280,6 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
283 } 280 }
284 }); 281 });
285 } 282 }
286 -  
287 //新增日报 283 //新增日报
288 $('#device_create').on('click', function () { 284 $('#device_create').on('click', function () {
289 openDeviceForm() 285 openDeviceForm()
@@ -294,7 +290,6 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -294,7 +290,6 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
294 var title = id ? '编辑' : '新增' 290 var title = id ? '编辑' : '新增'
295 common.openWin('machineroom/deviceAdd', title, {id: id}, ['保存', '取消'], function f() { 291 common.openWin('machineroom/deviceAdd', title, {id: id}, ['保存', '取消'], function f() {
296 $("#device-form-save-id").trigger("click"); 292 $("#device-form-save-id").trigger("click");
297 - }, null, null, function done() {  
298 reloadAllChange(); 293 reloadAllChange();
299 }) 294 })
300 } 295 }
@@ -304,15 +299,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -304,15 +299,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
304 299
305 var title = '更换配件列表' 300 var title = '更换配件列表'
306 301
307 - common.openWin('machineroom/fittingList', title, {id: id}) 302 + common.openWin('machineroom/fittingList', title, {id: id}, ['确定', '取消'])
308 } 303 }
309 -  
310 //查看进出设备列表 304 //查看进出设备列表
311 function openDeviceList(id) { 305 function openDeviceList(id) {
312 306
313 var title = '出入设备列表' 307 var title = '出入设备列表'
314 308
315 - common.openWin('machineroom/deviceList', title, {id: id}) 309 + common.openWin('machineroom/deviceList', title, {id: id}, ['确定', '取消'])
316 } 310 }
317 311
318 // 加载查询条件下拉框 312 // 加载查询条件下拉框
@@ -324,18 +318,54 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -324,18 +318,54 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
324 $.each(response.data, function (i, v) { 318 $.each(response.data, function (i, v) {
325 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>" 319 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
326 }); 320 });
327 - $('#slt-device-group').html(options); 321 + options += "<option value='0'>其他</option>";
  322 + $('#slt-staff-group').html(options);
328 form.render(); 323 form.render();
329 }); 324 });
330 } 325 }
331 326
  327 + $("#device-export-excel").on('click', function () {
  328 + if (currSelect == 0) {
  329 + var href = common.domainName + '/api-web/machineRoom/exportMachineRoomEnterDeviceRecords?docType=1&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  330 + } else if (currSelect == 1) {
  331 + var href = common.domainName + '/api-web/machineRoom/exportMachineRoomEnterDeviceRecords?docType=2&accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  332 + }
  333 + window.open(href)
  334 + })
  335 + //下载
  336 + $('#device_download').on('click', function (){
  337 + var data = [];
  338 + var attachmentId ="";
  339 + var docType = "";
  340 + if (currSelect == 0) {
  341 + data = table.checkStatus('enterdevice_table_id').data;
  342 + attachmentId = '2136d6a1709811edb49f005056aae0ca';
  343 + docType = '1';
  344 + }else if (currSelect == 1) {
  345 + data = table.checkStatus('fitting-table').data;
  346 + attachmentId = '713fc12f709811edb49f005056aae0ca';
  347 + docType = '2';
  348 + }
  349 + var ids = '';
  350 + if(data.length<=0){
  351 + layer.msg("请至少选择一条下载", { offset: '15px' , icon: 7 , time: 1500 });
  352 + }else if(data.length>=1){
  353 + var arr = [];
  354 + $.each(data,function (i,e) {
  355 + arr.push(e.id)
  356 + })
  357 + ids = arr.toString();
  358 + var url = domainName + `/api-web/machineRoom/downloadWordZipforDevice?accessToken=` + accessToken+"&ids="+ids+"&attachmentId="+ attachmentId+"&docType="+docType;
  359 + window.open(url);
  360 + }
  361 + })
332 362
333 // 各单位维修情况 363 // 各单位维修情况
334 function loadEnterDeviceChart() { 364 function loadEnterDeviceChart() {
335 var conditions = {}; 365 var conditions = {};
336 - Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: ''}); 366 + Object.assign(conditions, {accessToken: accessToken, createtime: createTime, viewMode: ''});
337 admin.req({ 367 admin.req({
338 - url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecordsForGroup', 368 + url: domainName + '/api-web/machineRoom/findMachineRoomEnterDeviceRecordsForGroup',
339 data: conditions 369 data: conditions
340 }).done(function (response) { 370 }).done(function (response) {
341 var chartData = response.map; 371 var chartData = response.map;
@@ -365,7 +395,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -365,7 +395,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
365 itemStyle: { 395 itemStyle: {
366 color: "#1e9fff" 396 color: "#1e9fff"
367 } 397 }
368 - }, { 398 + },{
369 name: '配件更换', 399 name: '配件更换',
370 data: fittingList, 400 data: fittingList,
371 barWidth: 20, 401 barWidth: 20,
@@ -430,8 +460,8 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -430,8 +460,8 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
430 axisLabel: { 460 axisLabel: {
431 color: '#333', 461 color: '#333',
432 show: true, 462 show: true,
433 - interval: 0,  
434 - rotate: 15 463 + interval:0,
  464 + rotate:15
435 }, 465 },
436 axisLine: { 466 axisLine: {
437 lineStyle: { 467 lineStyle: {
@@ -481,4 +511,4 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -481,4 +511,4 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
481 loadEnterDeviceChart(); 511 loadEnterDeviceChart();
482 } 512 }
483 }); 513 });
484 -}); 514 +});
@@ -9,8 +9,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -9,8 +9,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
9 var element = layui.element; 9 var element = layui.element;
10 10
11 exports('enterStaff', function () { 11 exports('enterStaff', function () {
12 - var sessions = layui.sessions;  
13 - var accessToken = sessions.getToken().access_token; 12 + var accessToken = localStorage.getItem("accessToken");
14 var domainName = common.domainName; 13 var domainName = common.domainName;
15 var timeChart = echarts.init(document.getElementById('chart-time-record')); 14 var timeChart = echarts.init(document.getElementById('chart-time-record'));
16 15
@@ -21,11 +20,11 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -21,11 +20,11 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
21 //日期范围选择 20 //日期范围选择
22 laydate.render({ 21 laydate.render({
23 elem: '#staffdateLimit' 22 elem: '#staffdateLimit'
24 - , range: '~', 23 + ,range: '~',
25 trigger: 'click', 24 trigger: 'click',
26 - ready: function (date) { 25 + ready: function(date){
27 $("#staffdateLimit").removeAttr("lay-key"); 26 $("#staffdateLimit").removeAttr("lay-key");
28 - $(this).attr("lay-key", "1"); 27 + $(this).attr("lay-key","1");
29 }, 28 },
30 done: function (value) { 29 done: function (value) {
31 dateLimit = value 30 dateLimit = value
@@ -82,19 +81,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -82,19 +81,19 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
82 81
83 // 下拉框改变搜索 82 // 下拉框改变搜索
84 form.on('select(slt-staff-group)', reloadAllChange); 83 form.on('select(slt-staff-group)', reloadAllChange);
85 -  
86 // 加载工作汇报表格 84 // 加载工作汇报表格
87 function loadWorkReportTable() { 85 function loadWorkReportTable() {
88 var conditions = form.val('form-enterStaff-condition'); 86 var conditions = form.val('form-enterStaff-condition');
  87 +
89 Object.assign(conditions, { 88 Object.assign(conditions, {
90 - access_token: accessToken, 89 + accessToken: accessToken,
91 createtime: createTime, 90 createtime: createTime,
92 viewMode: 'true', 91 viewMode: 'true',
93 dateLimit: dateLimit 92 dateLimit: dateLimit
94 }); 93 });
95 table.render({ 94 table.render({
96 elem: '#table-staff-view', 95 elem: '#table-staff-view',
97 - url: domainName + '/api-room/machineRoom/findMachineRoomEnterRecords', 96 + url: domainName + '/api-web/machineRoom/findMachineRoomEnterRecords',
98 where: conditions, 97 where: conditions,
99 height: 'full-360', 98 height: 'full-360',
100 page: { 99 page: {
@@ -107,13 +106,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -107,13 +106,14 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
107 limit: common.limit, 106 limit: common.limit,
108 limits: common.limits, 107 limits: common.limits,
109 even: true, 108 even: true,
110 - cols: [[{ 109 + cols: [[
  110 + {type: 'checkbox'},{
111 field: 'machineRoomName', title: '机房', align: 'center', 111 field: 'machineRoomName', title: '机房', align: 'center',
112 }, { 112 }, {
113 - field: 'manufacturerName', title: '工作单位', align: 'center', templet: function (d) {  
114 - if (d.manufacturerId == '0') { 113 + field: 'manufacturerName', title: '工作单位', align: 'center',templet: function (d) {
  114 + if(d.manufacturerId == '0'){
115 return d.manufacturerOther; 115 return d.manufacturerOther;
116 - } else { 116 + }else {
117 return d.manufacturerName; 117 return d.manufacturerName;
118 } 118 }
119 } 119 }
@@ -152,18 +152,36 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -152,18 +152,36 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
152 } 152 }
153 }); 153 });
154 } 154 }
155 - 155 + $("#staff-export-excel").on('click', function () {
  156 + var href = common.domainName + '/api-web/machineRoom/exportMachineRoomEnterRecords?accessToken=' + accessToken + "&createtime=" + createTime + '&dateLimit=' + dateLimit + '&limit=1000';
  157 + window.open(href)
  158 + })
156 //新增日报 159 //新增日报
157 $('#staff_create').on('click', function () { 160 $('#staff_create').on('click', function () {
158 openWorkReportForm() 161 openWorkReportForm()
159 }) 162 })
160 - 163 + //下载
  164 + $('#report_download').on('click', function (){
  165 + var data = table.checkStatus('table-staff-view').data;
  166 + var attachmentId = '0b92a0b2705f11edb49f005056aae0ca';
  167 + var ids = '';
  168 + if(data.length<=0){
  169 + layer.msg("请至少选择一条下载", { offset: '15px' , icon: 7 , time: 1500 });
  170 + }else if(data.length>=1){
  171 + var arr = [];
  172 + $.each(data,function (i,e) {
  173 + arr.push(e.id)
  174 + })
  175 + ids = arr.toString();
  176 + var url = domainName + `/api-web/machineRoom/downloadWordZipforStaff?accessToken=` + accessToken+"&ids="+ids+"&attachmentId="+ attachmentId;
  177 + window.open(url);
  178 + }
  179 + })
161 //新增/编辑表单 180 //新增/编辑表单
162 function openWorkReportForm(id) { 181 function openWorkReportForm(id) {
163 var title = id ? '编辑' : '新增' 182 var title = id ? '编辑' : '新增'
164 common.openWin('machineroom/staffAdd', title, {id: id}, ['保存', '取消'], function f() { 183 common.openWin('machineroom/staffAdd', title, {id: id}, ['保存', '取消'], function f() {
165 $("#staff-form-save-id").trigger("click"); 184 $("#staff-form-save-id").trigger("click");
166 - }, null, null, function done() {  
167 reloadAllChange(); 185 reloadAllChange();
168 }) 186 })
169 } 187 }
@@ -173,7 +191,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -173,7 +191,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
173 191
174 var title = '进入人员列表' 192 var title = '进入人员列表'
175 193
176 - common.openWin('machineroom/staffList', title, {id: id}) 194 + common.openWin('machineroom/staffList', title, {id: id}, ['确定', '取消'])
177 } 195 }
178 196
179 // 加载查询条件下拉框 197 // 加载查询条件下拉框
@@ -185,6 +203,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -185,6 +203,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
185 $.each(response.data, function (i, v) { 203 $.each(response.data, function (i, v) {
186 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>" 204 options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
187 }); 205 });
  206 + options += "<option value='0'>其他</option>";
188 $('#slt-staff-group').html(options); 207 $('#slt-staff-group').html(options);
189 form.render(); 208 form.render();
190 }); 209 });
@@ -194,9 +213,9 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -194,9 +213,9 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
194 // 各单位维修情况 213 // 各单位维修情况
195 function loadEnterStaffChart() { 214 function loadEnterStaffChart() {
196 var conditions = {}; 215 var conditions = {};
197 - Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: ''}); 216 + Object.assign(conditions, {accessToken: accessToken, createtime: createTime, viewMode: ''});
198 admin.req({ 217 admin.req({
199 - url: domainName + '/api-room/machineRoom/findMachineRoomEnterRecordsForGroup', 218 + url: domainName + '/api-web/machineRoom/findMachineRoomEnterRecordsForGroup',
200 data: conditions 219 data: conditions
201 }).done(function (response) { 220 }).done(function (response) {
202 var chartData = response.map; 221 var chartData = response.map;
@@ -277,8 +296,8 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -277,8 +296,8 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
277 axisLabel: { 296 axisLabel: {
278 color: '#333', 297 color: '#333',
279 show: true, 298 show: true,
280 - interval: 0,  
281 - rotate: 15 299 + interval:0,
  300 + rotate:15
282 }, 301 },
283 axisLine: { 302 axisLine: {
284 lineStyle: { 303 lineStyle: {
@@ -329,4 +348,4 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat @@ -329,4 +348,4 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts', 'laydat
329 348
330 } 349 }
331 }); 350 });
332 -}); 351 +});