|
@@ -291,6 +291,7 @@ $(document).ready(function () {
|
|
|
};
|
|
|
const _self = $(this);
|
|
|
postData('/tender/' + cur_tenderid + '/shenpi/save', prop, function (data) {
|
|
|
+ $('#stage_cooperation').hide();
|
|
|
if (this_status === sp_status.sqspr) {
|
|
|
_self.parents('.form-group').siblings('.lc-show').html('');
|
|
|
} else if (this_status === sp_status.gdspl) {
|
|
@@ -305,6 +306,7 @@ $(document).ready(function () {
|
|
|
}
|
|
|
addhtml += '</ul>\n';
|
|
|
_self.parents('.form-group').siblings('.lc-show').html(addhtml);
|
|
|
+ $('#stage_cooperation').show();
|
|
|
} else if (this_status === sp_status.gdzs) {
|
|
|
let addhtml = '<ul class="list-unstyled">\n' +
|
|
|
' <li class="d-flex justify-content-start mb-3">\n' +
|
|
@@ -559,4 +561,407 @@ $(document).ready(function () {
|
|
|
}, 1000)
|
|
|
})
|
|
|
});
|
|
|
+
|
|
|
+ const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
|
|
|
+ const treeSetting = {
|
|
|
+ id: 'ledger_id',
|
|
|
+ pid: 'ledger_pid',
|
|
|
+ order: 'order',
|
|
|
+ level: 'level',
|
|
|
+ rootId: -1,
|
|
|
+ fullPath: 'full_path',
|
|
|
+ };
|
|
|
+ const ledgerTree = createNewPathTree('base', treeSetting);
|
|
|
+
|
|
|
+ const ledgerSpreadSetting = {
|
|
|
+ cols: [
|
|
|
+ {title: '编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 185, formatter: '@', readOnly: true, cellType: 'tree'},
|
|
|
+ {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 205, formatter: '@', readOnly: true},
|
|
|
+ {title: '密码', colSpan: '1', rowSpan: '2', field: 'pwd', hAlign: 0, width: 120, formatter: '@', getValue:'getValue.pwd', readOnly: 'readOnly.pwd'},
|
|
|
+ ],
|
|
|
+ emptyRows: 0,
|
|
|
+ headRows: 1,
|
|
|
+ headRowHeight: [25, 25],
|
|
|
+ defaultRowHeight: 21,
|
|
|
+ headerFont: '12px 微软雅黑',
|
|
|
+ font: '12px 微软雅黑',
|
|
|
+ // readOnly: true,
|
|
|
+ localCache: {
|
|
|
+ key: 'ledger-bills',
|
|
|
+ colWidth: true,
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const ledgerCol = {
|
|
|
+ getValue: {
|
|
|
+ pwd: function (data) {
|
|
|
+ let txt = '';
|
|
|
+ if (data.is_leaf) {
|
|
|
+ if (data.pwd && data.pwd !== '' && data.pwd !== null) {
|
|
|
+ txt = data.pwd;
|
|
|
+ } else {
|
|
|
+ txt = '设置密码';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return txt;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ readOnly: {
|
|
|
+ pwd: function (data) {
|
|
|
+ return !data.is_leaf;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ const ledgerSpreadObj = {
|
|
|
+ setFontColor: function(row = null) {
|
|
|
+ if(row) {
|
|
|
+ const value = ledgerSpread.getActiveSheet().getValue(row, 2);
|
|
|
+ if (value === '设置密码') {
|
|
|
+ ledgerSpread.getActiveSheet().getCell(row, 2).foreColor('#007bff');
|
|
|
+ } else {
|
|
|
+ ledgerSpread.getActiveSheet().getCell(row, 2).foreColor('#000');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const rowCount = ledgerSpread.getActiveSheet().getRowCount();
|
|
|
+ for(let i = 0; i < rowCount; i++){
|
|
|
+ const value = ledgerSpread.getActiveSheet().getValue(i, 2);
|
|
|
+ if (value === '设置密码') {
|
|
|
+ ledgerSpread.getActiveSheet().getCell(i, 2).foreColor('#007bff');
|
|
|
+ } else {
|
|
|
+ ledgerSpread.getActiveSheet().getCell(i, 2).foreColor('#000');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setAllRightPwd: function(uid) {
|
|
|
+ const selects = [];
|
|
|
+ for (const l of ledgerTree.datas) {
|
|
|
+ const coo = _.find(ledger_cooperation_list, { 'ledger_id': l.ledger_id, 'user_id': parseInt(uid) });
|
|
|
+ if (l.pwd && !coo) {
|
|
|
+ delete l.pwd;
|
|
|
+ selects.push(l);
|
|
|
+ } else if(coo) {
|
|
|
+ l.pwd = coo.pwd;
|
|
|
+ selects.push(l);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(selects.length > 0) {
|
|
|
+ const refreshNode = ledgerTree.loadPostData({update: selects});
|
|
|
+ ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
|
|
|
+ ledgerSpreadObj.setFontColor();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ refreshTree: function (sheet, data) {
|
|
|
+ SpreadJsObj.massOperationSheet(sheet, function () {
|
|
|
+ const tree = sheet.zh_tree;
|
|
|
+ // 处理删除
|
|
|
+ if (data.delete) {
|
|
|
+ data.delete.sort(function (x, y) {
|
|
|
+ return y.deleteIndex - x.deleteIndex;
|
|
|
+ });
|
|
|
+ for (const d of data.delete) {
|
|
|
+ sheet.deleteRows(d.deleteIndex, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理新增
|
|
|
+ if (data.create) {
|
|
|
+ const newNodes = data.create;
|
|
|
+ if (newNodes) {
|
|
|
+ newNodes.sort(function (a, b) {
|
|
|
+ return a.index - b.index;
|
|
|
+ });
|
|
|
+
|
|
|
+ for (const node of newNodes) {
|
|
|
+ sheet.addRows(node.index, 1);
|
|
|
+ SpreadJsObj.reLoadRowData(sheet, tree.nodes.indexOf(node), 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理更新
|
|
|
+ if (data.update) {
|
|
|
+ const rows = [];
|
|
|
+ for (const u of data.update) {
|
|
|
+ rows.push(tree.nodes.indexOf(u));
|
|
|
+ }
|
|
|
+ SpreadJsObj.reLoadRowsData(sheet, rows);
|
|
|
+ }
|
|
|
+ // 处理展开
|
|
|
+ if (data.expand) {
|
|
|
+ const expanded = [];
|
|
|
+ for (const e of data.expand) {
|
|
|
+ if (expanded.indexOf(e) === -1) {
|
|
|
+ const posterity = tree.getPosterity(e);
|
|
|
+ for (const p of posterity) {
|
|
|
+ sheet.setRowVisible(tree.nodes.indexOf(p), p.visible);
|
|
|
+ expanded.push(p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ editStarting: function (e, info) {
|
|
|
+ if (info.sheet.zh_setting) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(info.sheet);
|
|
|
+ const col = info.sheet.zh_setting.cols[info.col];
|
|
|
+ ledgerSpread.getActiveSheet().getCell(info.row, 2).foreColor('#000');
|
|
|
+ if(col.getValue(select) === '设置密码') {
|
|
|
+ ledgerSpread.getActiveSheet().setValue(info.row, 2, '');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ editEnded: function (e, info) {
|
|
|
+ if (info.sheet.zh_setting) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(info.sheet);
|
|
|
+ const col = info.sheet.zh_setting.cols[info.col];
|
|
|
+ const validText = trimInvalidChar(info.editingText);
|
|
|
+ const user_id = parseInt($('#stage_audits').val());
|
|
|
+ const orgValue = select[col.field];
|
|
|
+ const reg = /^[0-9a-zA-Z]+$/;
|
|
|
+ if(validText !== '' && !reg.test(validText)) {
|
|
|
+ toastr.error('不能输入非数字和字母的字符');
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ ledgerSpreadObj.setFontColor(info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if((validText === '' && orgValue === undefined) || validText == orgValue) {
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ ledgerSpreadObj.setFontColor(info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ select.pwd = validText;
|
|
|
+ const data = {
|
|
|
+ type: 'pwd',
|
|
|
+ ledger_id: select.ledger_id,
|
|
|
+ user_id,
|
|
|
+ pwd: validText,
|
|
|
+ };
|
|
|
+ postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) {
|
|
|
+ const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id: select.ledger_id, user_id });
|
|
|
+ if(lcindex !== -1) {
|
|
|
+ validText === '' ? ledger_cooperation_list.splice(lcindex, 1) : ledger_cooperation_list.splice(lcindex, 1, result);
|
|
|
+ } else {
|
|
|
+ ledger_cooperation_list.push(result);
|
|
|
+ }
|
|
|
+ setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
|
|
|
+ const refreshNode = ledgerTree.loadPostData({update: select});
|
|
|
+ ledgerSpreadObj.refreshTree(info.sheet, refreshNode);
|
|
|
+ ledgerSpreadObj.setFontColor();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deletePress: function (sheet) {
|
|
|
+ return;
|
|
|
+ },
|
|
|
+ clipboardPasted(e, info) {
|
|
|
+ // 禁止复制粘贴
|
|
|
+ SpreadJsObj.reLoadSheetHeader(ledgerSpread.getActiveSheet());
|
|
|
+ SpreadJsObj.reLoadSheetData(ledgerSpread.getActiveSheet());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
|
|
|
+ if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting);
|
|
|
+ SpreadJsObj.initSpreadSettingEvents(ledgerSpreadSetting, ledgerCol);
|
|
|
+ SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
|
|
|
+ SpreadJsObj.selChangedRefreshBackColor(ledgerSpread.getActiveSheet());
|
|
|
+ ledgerSpread.bind(spreadNS.Events.EditStarting, ledgerSpreadObj.editStarting);
|
|
|
+ ledgerSpread.bind(spreadNS.Events.EditEnded, ledgerSpreadObj.editEnded);
|
|
|
+ SpreadJsObj.addDeleteBind(ledgerSpread, ledgerSpreadObj.deletePress);
|
|
|
+ ledgerSpread.bind(spreadNS.Events.ClipboardPasted, ledgerSpreadObj.clipboardPasted);
|
|
|
+ let ledger_data, ledger_cooperation_list = [];
|
|
|
+
|
|
|
+ // 多人协同
|
|
|
+ $('#cooperation').on('shown.bs.modal', function () {
|
|
|
+ // 执行一些动作...
|
|
|
+ // 更新新的多人协同表格信息
|
|
|
+ const newUidList = [];
|
|
|
+ $('.stage_div ul li').each(function (k, v) {
|
|
|
+ const uid = $(v).find('a').data('id');
|
|
|
+ if(uid) newUidList.push(uid);
|
|
|
+ });
|
|
|
+ const oldUidList = [];
|
|
|
+ $('#stage_audits option').each(function (k, v) {
|
|
|
+ const uid = parseInt($(v).val());
|
|
|
+ if(k !== 0) oldUidList.push(uid);
|
|
|
+ });
|
|
|
+ if (!_.isEqual(oldUidList, newUidList)) {
|
|
|
+ const yb = _.find(accountList, { 'id': cur_uid });
|
|
|
+ let newhtml = '<option value="' + yb.id + '">' + yb.name + '(原报)</option>';
|
|
|
+ if(newUidList.length > 0) {
|
|
|
+ for (const [i,id] of newUidList.entries()) {
|
|
|
+ const audit = _.find(accountList, { 'id': id });
|
|
|
+ newhtml += '<option value="' + audit.id + '">' + audit.name + '(' + transFormToChinese(i+1) + '审)</option>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $('#stage_audits').html(newhtml);
|
|
|
+ if(ledger_data) {
|
|
|
+ setLeftTable(ledgerTree.datas, ledger_cooperation_list, cur_uid, yb.name + '(原报)');
|
|
|
+ ledgerSpreadObj.setAllRightPwd(cur_uid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!ledger_data) {
|
|
|
+ postData('/tender/' + cur_tenderid + '/shenpi/ledger/load', {}, function (data) {
|
|
|
+ ledger_data = true;
|
|
|
+ const ledgerList = setRightData(data.ledgerList, data.ledgerCooperationList);
|
|
|
+ ledgerTree.loadDatas(ledgerList);
|
|
|
+ ledger_cooperation_list = data.ledgerCooperationList;
|
|
|
+ const yb = _.find(accountList, { 'id': cur_uid });
|
|
|
+ setLeftTable(ledgerList, ledger_cooperation_list, cur_uid, yb.name + '(原报)');
|
|
|
+ // treeCalc.calculateAll(ledgerTree);
|
|
|
+ console.log(ledgerTree);
|
|
|
+ SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree);
|
|
|
+ ledgerSpreadObj.setFontColor();
|
|
|
+ }, null, true);
|
|
|
+ }
|
|
|
+ ledgerSpread.refresh();
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#stage_audits').change(function () {
|
|
|
+ const uid = $(this).val();
|
|
|
+ const title = $("#stage_audits option:selected").text();
|
|
|
+ setLeftTable(ledgerTree.datas, ledger_cooperation_list, uid, title);
|
|
|
+ ledgerSpreadObj.setAllRightPwd(uid);
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', '.del-pwd', function () {
|
|
|
+ const ledger_id = parseInt($(this).data('lid'));
|
|
|
+ const user_id = parseInt($(this).data('uid'));
|
|
|
+ const data = {
|
|
|
+ type: 'pwd',
|
|
|
+ user_id,
|
|
|
+ ledger_id,
|
|
|
+ pwd: '',
|
|
|
+ };
|
|
|
+ postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) {
|
|
|
+ const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id, user_id });
|
|
|
+ ledger_cooperation_list.splice(lcindex, 1);
|
|
|
+ setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
|
|
|
+ const select = _.find(ledgerTree.datas, { ledger_id });
|
|
|
+ delete select.pwd;
|
|
|
+ const refreshNode = ledgerTree.loadPostData({update: select});
|
|
|
+ ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
|
|
|
+ ledgerSpreadObj.setFontColor();
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', '.edit-pwd', function () {
|
|
|
+ const pwd = $(this).data('pwd');
|
|
|
+ const html = `<div class="input-group input-group-sm">
|
|
|
+ <input type="text" class="form-control" value="${pwd}" placeholder="输入新密码" aria-describedby="button-${$(this).data('lid')}" style="width:50px">
|
|
|
+ <div class="input-group-append" id="button-${$(this).data('lid')}">
|
|
|
+ <button class="btn btn-outline-primary confirm-btn" data-pwd="${pwd}" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" type="button">确认</button>
|
|
|
+ <button class="btn btn-outline-secondary cancel-btn" data-pwd="${pwd}" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" type="button">取消</button>
|
|
|
+ </div>
|
|
|
+ </div>`;
|
|
|
+ $(this).parents('td').html(html);
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', '.cancel-btn', function () {
|
|
|
+ const html = `<p class="mb-0">${$(this).data('pwd')}</p><a href="javascript:void(0);" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" data-pwd="${$(this).data('pwd')}" class="edit-pwd">修改</a> <a href="javascript:void(0)" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" class="del-pwd text-danger">移除</a>`;
|
|
|
+ $(this).parents('td').html(html);
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').on('click', '.confirm-btn', function () {
|
|
|
+ const validText = $(this).parents('td').find('input').val();
|
|
|
+ const orgValue = $(this).data('pwd');
|
|
|
+ const ledger_id = parseInt($(this).data('lid'));
|
|
|
+ const user_id = parseInt($(this).data('uid'));
|
|
|
+ const reg = /^[0-9a-zA-Z]+$/;
|
|
|
+ if(!reg.test(validText)) {
|
|
|
+ toastr.error('不能输入非数字和字母的字符');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(validText == orgValue) {
|
|
|
+ const html = `<p class="mb-0">${$(this).data('pwd')}</p><a href="javascript:void(0);" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" data-pwd="${$(this).data('pwd')}" class="edit-pwd">修改</a> <a href="javascript:void(0)" data-lid="${$(this).data('lid')}" data-uid="${$(this).data('uid')}" class="del-pwd text-danger">移除</a>`;
|
|
|
+ $(this).parents('td').html(html);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const data = {
|
|
|
+ type: 'pwd',
|
|
|
+ ledger_id,
|
|
|
+ user_id,
|
|
|
+ pwd: validText,
|
|
|
+ };
|
|
|
+ postData('/tender/' + cur_tenderid + '/shenpi/audit/save', data, function (result) {
|
|
|
+ const lcindex = _.findIndex(ledger_cooperation_list, { ledger_id, user_id });
|
|
|
+ ledger_cooperation_list.splice(lcindex, 1, result);
|
|
|
+ setLeftTable(ledgerTree.datas, ledger_cooperation_list, user_id, $('#stage_audits option:selected').text());
|
|
|
+ const select = _.find(ledgerTree.datas, { ledger_id });
|
|
|
+ select.pwd = validText;
|
|
|
+ const refreshNode = ledgerTree.loadPostData({update: select});
|
|
|
+ ledgerSpreadObj.refreshTree(ledgerSpread.getActiveSheet(), refreshNode);
|
|
|
+ ledgerSpreadObj.setFontColor();
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ $.subMenu({
|
|
|
+ menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
|
|
|
+ toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
|
|
|
+ key: 'menu.1.0.0',
|
|
|
+ miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
|
|
|
+ callback: function (info) {
|
|
|
+ if (info.mini) {
|
|
|
+ $('.panel-title').addClass('fluid');
|
|
|
+ $('#sub-menu').removeClass('panel-sidebar');
|
|
|
+ } else {
|
|
|
+ $('.panel-title').removeClass('fluid');
|
|
|
+ $('#sub-menu').addClass('panel-sidebar');
|
|
|
+ }
|
|
|
+ autoFlashHeight();
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
+
|
|
|
+function setRightData(datas, coolist) {
|
|
|
+ const newdatas = [];
|
|
|
+ const reg = /(^GD([a-zA-Z0-9\-]+))|(\d+)/;
|
|
|
+ for (const l of datas) {
|
|
|
+ if (reg.test(l.code) && l.level <= 4) {
|
|
|
+ if(l.level === 4 && l.is_leaf === false) {
|
|
|
+ l.is_leaf = true;
|
|
|
+ }
|
|
|
+ if(l.is_leaf) {
|
|
|
+ const coo = _.find(coolist, { 'ledger_id': l.ledger_id, 'user_id': cur_uid });
|
|
|
+ if(coo) {
|
|
|
+ l.pwd = coo.pwd;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newdatas.push(l);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return newdatas;
|
|
|
+}
|
|
|
+
|
|
|
+function setLeftTable(ledgerList, coolist, uid, title) {
|
|
|
+ $('#stage_audit').text(title);
|
|
|
+ const showCooList = _.filter(coolist, { 'user_id': parseInt(uid) });
|
|
|
+ const removeList = [];
|
|
|
+ for (const sc of showCooList) {
|
|
|
+ const info = _.find(ledgerList, { 'ledger_id': sc.ledger_id });
|
|
|
+ if (info) {
|
|
|
+ sc.code = info.code;
|
|
|
+ sc.name = info.name;
|
|
|
+ } else {
|
|
|
+ removeList.push(sc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (removeList.length > 0) {
|
|
|
+ // 移除
|
|
|
+ _.pull(showCooList, ...removeList);
|
|
|
+ console.log(removeList);
|
|
|
+ }
|
|
|
+
|
|
|
+ let html = '';
|
|
|
+ for (const sc of showCooList) {
|
|
|
+ const pichtml = sc.sign_path ? `<img src="${sc.sign_path}" width="60"><a href="javascript:void(0);" class="d-inline-flex">更改</a>` : '<input type="file">';
|
|
|
+ html += `<tr>` +
|
|
|
+ `<td>${sc.code} ${sc.name}</td>` +
|
|
|
+ `<td><p class="mb-0">${sc.pwd}</p><a href="javascript:void(0);" data-lid="${sc.ledger_id}" data-uid="${sc.user_id}" data-pwd="${sc.pwd}" class="edit-pwd">修改</a> <a href="javascript:void(0)" data-lid="${sc.ledger_id}" data-uid="${sc.user_id}" class="del-pwd text-danger">移除</a></td>` +
|
|
|
+ `<td>${pichtml}</td>` +
|
|
|
+ `</tr>`;
|
|
|
+ }
|
|
|
+ $('#coo_table').html(html);
|
|
|
+}
|