123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547 |
- 'use strict';
- /**
- *
- *
- * @author Mai
- * @date 2018/10/11
- * @version
- */
- const tenderListSpec = (function(){
- function getTenderNodeHtml(node, arr, pid) {
- const html = [];
- html.push('<tr pid="' + pid + '">');
- // 名称
- html.push('<td width="30%" style="min-width: 300px;" class="in-' + node.level + '">');
- if (node.cid) {
- html.push('<span onselectstart="return false" style="{-moz-user-select:none}" class="fold-switch mr-1" title="收起" cid="'+ node.sort_id +'"><i class="fa fa-minus-square-o"></i></span> <i class="fa fa-folder-o"></i> ');
- html.push((node.level === 1 ? '<b>' : ''), node.name, (node.level === 1 ? '</b>' : ''));
- } else {
- html.push('<span class="text-muted mr-2">');
- html.push(arr.indexOf(node) === arr.length - 1 ? '└' : '├');
- html.push('</span>');
- html.push(node.name);
- }
- html.push('</td>');
- // 计量进度
- html.push('<td style="width: 130px" class="text-center">');
- if (!node.cid && node.cur_flow) {
- if (node.progress) {
- html.push(node.progress.title + ' (' + '<span class="' + node.progress.status_class + '">' + node.progress.status + '</span>' + ')');
- } else {
- html.push(node.cur_flow.title + ' (' + '<span class="' + node.cur_flow.status_class + '">' + node.cur_flow.status + '</span>' + ')');
- }
- }
- html.push('</td>');
- // 资金来源
- html.push('<td style="width: 200px" class="text-center">');
- if (!node.cid) {
- html.push(transferInfo.uid === user_id && !transferInfo.is_lock ? '<input type="text" data-key="source" class="form-control form-control-sm" placeholder="" data-ftid="' + node.id + '" value="'+ node.source +'" />' : node.source);
- }
- html.push('</td>');
- // 合同金额
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.total_price || '');
- html.push('</td>');
- // 截止本期合同
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.end_contract_tp || '');
- html.push('</td>');
- // 截止本期变更
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.end_qc_tp || '');
- html.push('</td>');
- // 截止本期完成
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.end_gather_tp || '');
- html.push('</td>');
- // 截止本期实付
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.end_sf_tp || '');
- html.push('</td>');
- // 本次划拨
- html.push('<td style="width: 100px" class="text-right">');
- if (!node.cid) {
- html.push(transferInfo.uid === user_id && !transferInfo.is_lock ? '<input type="text" data-key="hb_tp" class="form-control form-control-sm text-right" placeholder="默认等于本期实付" data-ftid="' + node.id + '" value="' + node.hb_tp + '" />' : node.hb_tp);
- } else {
- html.push(node.hb_tp || '');
- }
- html.push('</td>');
- // 截止上次划拨
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.pre_hb_tp || '');
- html.push('</td>');
- // 截止本次划拨
- html.push('<td style="width: 100px" class="text-right">');
- html.push(node.end_hb_tp || '');
- html.push('</td>');
- // 附件
- html.push('<td style="width: 80px" class="text-center">');
- if (!node.cid) {
- html.push('<a href="javascript:void(0);" class="text-primary open-tender-files" data-ftid="' + node.id + '"><i class="fa fa-paperclip fa-rotate-90"></i></a> <span class="file-num">'+ (node.files.length > 0 ? node.files.length : '') +'</span>');
- }
- html.push('</td>');
- // 操作
- if (transferInfo.uid === user_id) {
- html.push('<td style="width: 80px" class="text-center">');
- html.push(!node.cid && !transferInfo.is_lock ? '<a class="text-danger del-tender-btn" href="javascript:void(0);" data-id="'+ node.id +'">移除</a>' : '');
- html.push('</td>');
- }
- html.push('</tr>');
- return html.join('');
- }
- function getTenderTreeHeaderHtml() {
- const html = [];
- const left = $('#sub-menu').css('display') === 'none' ? 56 : 176;
- html.push('<table class="table table-hover table-bordered" id="progress-table">')
- html.push('<thead style="position: sticky;left:'+ left +'px;top: 0;">', '<tr>');
- html.push('<th style="width: 30%;min-width: 300px" class="text-center">', '标段名称', '</th>');
- html.push('<th class="text-center" style="width: 130px">', '计量进度', '</th>');
- html.push('<th class="text-center" style="width: 200px">', '资金来源', '</th>');
- html.push('<th class="text-center" style="width: 100px">', '合同金额', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止本期合同', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止本期变更', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止本期完成', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止本期实付', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '本次划拨', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止上次划拨', '</th>');
- html.push('<th style="width: 100px" class="text-center">', '截止本次划拨', '</th>');
- html.push('<th style="width: 80px" class="text-center">', '附件', '</th>');
- if (transferInfo.uid === user_id) {
- html.push('<th style="width: 80px" class="text-center">', '操作', '</th>');
- }
- html.push('</tr>', '</thead>');
- return html.join('');
- }
- function calculateTender(tender) {
- if (tender.stage_tp) {
- tender.gather_tp = ZhCalc.sum([tender.stage_tp.contract_tp, tender.stage_tp.qc_tp, tender.stage_tp.pc_tp]);
- tender.end_contract_tp = ZhCalc.sum([tender.stage_tp.pre_contract_tp, tender.stage_tp.contract_tp, tender.stage_tp.contract_pc_tp]);
- tender.end_qc_tp = ZhCalc.sum([tender.stage_tp.pre_qc_tp, tender.stage_tp.qc_tp, tender.stage_tp.qc_pc_tp]);
- tender.end_gather_tp = ZhCalc.add(tender.end_contract_tp, tender.end_qc_tp);
- tender.pre_gather_tp = ZhCalc.add(tender.stage_tp.pre_contract_tp, tender.stage_tp.pre_qc_tp);
- tender.yf_tp = ZhCalc.add(tender.stage_tp.yf_tp);
- tender.end_yf_tp = ZhCalc.add(tender.stage_tp.pre_yf_tp, tender.yf_tp);
- tender.sf_tp = ZhCalc.add(tender.stage_tp.sf_tp);
- tender.end_sf_tp = ZhCalc.add(tender.stage_tp.pre_sf_tp, tender.sf_tp);
- tender.wf_tp = ZhCalc.sub(tender.end_yf_tp, tender.end_sf_tp);
- } else if (tender.lastStage) {
- tender.gather_tp = ZhCalc.sum([tender.lastStage.contract_tp, tender.lastStage.qc_tp, tender.lastStage.pc_tp]);
- tender.end_contract_tp = ZhCalc.sum([tender.lastStage.pre_contract_tp, tender.lastStage.contract_tp, tender.lastStage.contract_pc_tp]);
- tender.end_qc_tp = ZhCalc.sum([tender.lastStage.pre_qc_tp, tender.lastStage.qc_tp, tender.lastStage.qc_pc_tp]);
- tender.end_gather_tp = ZhCalc.add(tender.end_contract_tp, tender.end_qc_tp);
- tender.pre_gather_tp = ZhCalc.add(tender.lastStage.pre_contract_tp, tender.lastStage.pre_qc_tp);
- tender.yf_tp = ZhCalc.add(tender.lastStage.yf_tp);
- tender.end_yf_tp = ZhCalc.add(tender.lastStage.pre_yf_tp, tender.yf_tp);
- tender.sf_tp = ZhCalc.add(tender.lastStage.sf_tp);
- tender.end_sf_tp = ZhCalc.add(tender.lastStage.pre_sf_tp, tender.sf_tp);
- tender.wf_tp = ZhCalc.sub(tender.end_yf_tp, tender.end_sf_tp);
- }
- tender.end_hb_tp = ZhCalc.add(tender.pre_hb_tp, tender.hb_tp);
- }
- function calculateParent(node) {
- if (node.children && node.cid) {
- node.total_price = 0;
- node.gather_tp = 0;
- node.end_contract_tp = 0;
- node.end_qc_tp = 0;
- node.end_gather_tp = 0;
- node.pre_gather_tp = 0;
- node.yf_tp = 0;
- node.end_yf_tp = 0;
- node.advance_tp = 0;
- node.contract_price = 0;
- node.sf_tp = 0;
- node.end_sf_tp = 0;
- node.wf_tp = 0;
- node.hb_tp = 0;
- node.pre_hb_tp = 0;
- node.end_hb_tp = 0;
- for (const c of node.children) {
- calculateParent(c);
- node.total_price = ZhCalc.add(node.total_price, c.total_price);
- node.gather_tp = ZhCalc.add(node.gather_tp, c.gather_tp);
- node.end_contract_tp = ZhCalc.add(node.end_contract_tp, c.end_contract_tp);
- node.end_qc_tp = ZhCalc.add(node.end_qc_tp, c.end_qc_tp);
- node.end_gather_tp = ZhCalc.add(node.end_gather_tp, c.end_gather_tp);
- node.pre_gather_tp = ZhCalc.add(node.pre_gather_tp, c.pre_gather_tp);
- node.yf_tp = ZhCalc.add(node.yf_tp, c.yf_tp);
- node.end_yf_tp = ZhCalc.add(node.end_yf_tp, c.end_yf_tp);
- node.advance_tp = ZhCalc.add(node.advance_tp, c.advance_tp);
- node.contract_price = ZhCalc.add(node.contract_price, c.contract_price);
- node.sf_tp = ZhCalc.add(node.sf_tp, c.sf_tp);
- node.end_sf_tp = ZhCalc.add(node.end_sf_tp, c.end_sf_tp);
- node.wf_tp = ZhCalc.add(node.wf_tp, c.wf_tp);
- node.hb_tp = ZhCalc.add(node.hb_tp, c.hb_tp);
- node.pre_hb_tp = ZhCalc.add(node.pre_hb_tp, c.pre_hb_tp);
- node.end_hb_tp = ZhCalc.add(node.end_hb_tp, c.end_hb_tp);
- }
- }
- }
- return { getTenderNodeHtml, getTenderTreeHeaderHtml, calculateTender, calculateParent }
- })();
- $(function () {
- autoFlashHeight();
- $('#add-tender-btn').click(function () {
- const addTenders = [];
- $('input[name="tender_id[]"]:checked:not(:disabled)').each(function () {
- const tenderId = $(this).val();
- if (tenderId) {
- addTenders.push(parseInt(tenderId));
- }
- });
- if (addTenders.length === 0) {
- toastr.warning('请选择添加标段');
- return false;
- }
- console.log(addTenders);
- postData(window.location.pathname + '/update', {postType: 'add-tender', postData: { tenders: addTenders }}, function (result) {
- window.location.reload();
- });
- });
- $('body').on('click', '#tender-list .del-tender-btn', function () {
- const ftid = $(this).data('id');
- deleteAfterHint(function () {
- postData(window.location.pathname + '/update', {postType: 'del-tender', postData: { node: ftid }}, function (result) {
- window.location.reload();
- })
- }, '确认删除该标段并移除所有附件?');
- });
- $('#lock-transfer-btn').click(function () {
- postData(`/sp/${spid}/financial/transfer/update`, {postType: 'lock-transfer', postData: { node: trid, lock: 1 }}, function (result) {
- window.location.reload();
- });
- });
- $('#unlock-transfer-btn').click(function () {
- postData(`/sp/${spid}/financial/transfer/update`, {postType: 'lock-transfer', postData: { node: trid, lock: 0 }}, function (result) {
- window.location.reload();
- });
- });
- $('body').on('change', '#tender-list input[type="text"]', function () {
- const ftid = $(this).data('ftid');
- if (!ftid) {
- toastr.error('获取资金划拨标段信息失败');
- return;
- }
- const ftInfo = _.find(tenders, { id: parseInt(ftid) });
- if (!ftInfo) {
- toastr.error('获取资金划拨信息失败');
- return;
- }
- const key = $(this).data('key');
- if (key === 'hb_tp') {
- const value = $(this).val() || 0;
- // 判断只能输入数字,支持负数和小数
- if (!/^-?\d+(\.\d+)?$/.test(value)) {
- toastr.error('请输入正确的金额');
- $(this).val(ftInfo.hb_tp);
- return;
- }
- postData(window.location.pathname + '/update', {postType: 'update-hb_tp', postData: { node: ftid, hb_tp: parseFloat(value) }}, function (result) {
- // window.location.reload();
- ftInfo.hb_tp = parseFloat(value);
- // 更新并汇总父节点和截止本次划拨汇总
- ftInfo.end_hb_tp = ZhCalc.add(ftInfo.pre_hb_tp, ftInfo.hb_tp);
- for (const t of tenderTree) {
- tenderListSpec.calculateParent(t);
- }
- $('.c-body').html(getTenderTreeHtml());
- });
- } else {
- const value = $(this).val() || '';
- if (value.length > 255) {
- toastr.error('输入内容过长,不能超过255个字符');
- $(this).val(ftInfo[key]);
- return;
- }
- postData(window.location.pathname + '/update', {postType: 'update-tender', postData: { node: ftInfo.id, key: key, value: value }}, function (result) {
- // window.location.reload();
- ftInfo[key] = value;
- });
- }
- });
- $('body').on('click', '.open-tender-files', function () {
- const ftid = $(this).attr('data-ftid');
- if (!ftid) {
- toastr.error('获取资金划拨标段信息失败');
- return;
- }
- const ftInfo = _.find(tenders, { id: parseInt(ftid) });
- if (!ftInfo) {
- toastr.error('获取资金划拨信息失败');
- return;
- }
- if (ftInfo.uid === user_id || financialPermission.transfer_file) {
- $('#tender-file .upload-permission').show();
- } else {
- $('#tender-file .upload-permission').hide();
- }
- $('#tender-file').modal('show');
- $('#tender-file input[name="ftid"]').val(ftid);
- openFinancialTransferTenderFiles(ftInfo);
- });
- // 上传附件
- $('#tender-file input[type="file"]').change(function () {
- const files = Array.from(this.files);
- const valiData = files.map(v => {
- const ext = v.name.substring(v.name.lastIndexOf('.') + 1)
- return {
- size: v.size,
- ext
- }
- });
- const ftid = $('#tender-file input[name="ftid"]').val();
- const ftInfo = _.find(tenders, { id: parseInt(ftid) });
- if (!ftInfo) {
- toastr.warning('不存在该资金划拨标段');
- $('#tender-file input[type="file"]').val('');
- return;
- }
- if (validateFiles(valiData)) {
- if (files.length) {
- const formData = new FormData()
- files.forEach(file => {
- formData.append('name', file.name)
- formData.append('size', file.size)
- formData.append('file', file)
- })
- postDataWithFile(`/sp/${spid}/financial/transfer/${trid}/tender/${ftInfo.id}/file/upload`, formData, function (result) {
- ftInfo.files = result;
- openFinancialTransferTenderFiles(ftInfo);
- $('#tender-list tr[data-id="' + ftInfo.id + '"] .file-num').text(ftInfo.files.length ? ftInfo.files.length : '');
- });
- }
- }
- $('#tender-file input[type="file"]').val('');
- });
- $('body').on('click', '#tender-file .file-del', function () {
- const ftid = $('#tender-file input[name="ftid"]').val();
- const ftInfo = _.find(tenders, { id: parseInt(ftid) });
- if (!ftInfo) {
- toastr.warning('不存在该资金划拨标段');
- return;
- }
- const fid = $(this).data('id');
- deleteAfterHint(function () {
- postData(`/sp/${spid}/financial/transfer/${trid}/tender/${ftInfo.id}/file/delete`, { id: fid }, function (result) {
- ftInfo.files = result;
- openFinancialTransferTenderFiles(ftInfo);
- $('#tender-list tr[data-id="' + ftInfo.id + '"] .file-num').text(ftInfo.files.length ? ftInfo.files.length : '');
- });
- }, '确认删除该文件?');
- });
- function openFinancialTransferTenderFiles(ftInfo, _this = '#tender-file table tbody') {
- const files = ftInfo.files;
- let filesHtml = '';
- const newFiles = files.map(file => {
- let showDel = false;
- if (file.uid === user_id) {
- showDel = true
- }
- return {...file, showDel}
- })
- newFiles.forEach((file, idx) => {
- filesHtml += `<tr class="text-center">
- <td>${idx + 1}</td><td class="text-left"><a href="${file.filepath}" target="_blank">${file.filename}</a></td><td>${file.username}</td><td>${moment(file.upload_time).format('YYYY-MM-DD HH:mm:ss')}</td>
- <td>
- <div class="btn-group-table">
- ${file.viewpath ? `<a href="${file.viewpath}" target="_blank" class="mr-1"><i class="fa fa-eye fa-fw"></i></a>` : ''}
- <a href="/sp/${spid}/financial/transfer/${trid}/tender/${ftInfo.id}/file/${file.id}/download" class="mr-1"><i class="fa fa-download fa-fw"></i></a>
- ${file.showDel ? `<a href="javascript: void(0);" class="text-danger file-del mr-1" data-id="${file.id}"><i class="fa fa-trash-o fa-fw text-danger"></i></a>` : ''}
- </div>
- </td>
- </tr>`;
- });
- $(_this).html(filesHtml);
- }
- $.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();
- }
- });
- // 添加标段树结构加载
- const EmptyTenderListHtml = [
- '<div class="jumbotron">',
- '<h3 class="display-6">还没有标段数据</h3>',
- '</div>'
- ];
- const tenderListTree = [];
- let tenderListParentId = 0;
- function initTenderListTree () {
- const levelCategory = category.filter(function (c) {
- return c.show_level && c.show_level > 0;
- });
- function findCategoryNode(cid, value, array) {
- for (const a of array) {
- if (a.cid === cid && a.vid === value) {
- return a;
- }
- }
- }
- function getCategoryNode(category, value, parent, i = null) {
- const array = parent ? parent.children : tenderListTree;
- let cate = findCategoryNode(category.id, value, array);
- if (!cate) {
- const cateValue = findNode('id', value, category.value);
- if (!cateValue) return null;
- cate = {
- cid: category.id,
- vid: value,
- name: cateValue.value,
- children: [],
- level: i ? i : category.show_level,
- sort_id: ++tenderListParentId,
- sort: cateValue.sort,
- };
- array.push(cate);
- }
- return cate;
- }
- function loadTenderCategory (tender) {
- let tenderCategory = null;
- for (const [index, lc] of levelCategory.entries()) {
- const tenderCate = findNode('cid', lc.id, tender.category);
- if (tenderCate) {
- tenderCategory = getCategoryNode(lc, tenderCate.value, tenderCategory);
- } else {
- if (index === 0 && tender.category) {
- for (const [i,c] of tender.category.entries()) {
- const cate = findNode('id', c.cid, category);
- if (cate) {
- tenderCategory = getCategoryNode(cate, c.value, tenderCategory, i+1);
- }
- }
- }
- return tenderCategory;
- }
- }
- return tenderCategory;
- }
- tenderListTree.splice(0, tenderListTree.length);
- for (const t of tenderList) {
- t.valid = true;
- delete t.level;
- if (t.category && levelCategory.length > 0) {
- const parent = loadTenderCategory(t);
- if (parent) {
- t.level = parent.level + 1;
- parent.children.push(t);
- } else {
- tenderListTree.push(t);
- }
- } else {
- tenderListTree.push(t);
- }
- }
- sortTenderTree(tenderListTree);
- }
- function recursiveGetTenderListNodeHtml (node, arr, pid) {
- const html = [];
- html.push('<tr pid="' + pid + '">');
- html.push('<td style="width: 60px" class="text-center">');
- if (!node.cid) {
- html.push(`<input type="checkbox" class="tender-check" name="tender_id[]" value="${node.id}" ${_.findIndex(tenders, { tid: node.id }) !== -1 ? 'checked disabled' : ''} />`);
- }
- html.push('</td>');
- // 名称
- html.push('<td style="width: 65%" class="in-' + node.level + '">');
- if (node.cid) {
- html.push('<i class="fa fa-folder-o"></i> ', node.name);
- } else {
- html.push('<span class="text-muted mr-2">');
- html.push(arr.indexOf(node) === arr.length - 1 ? '└' : '├');
- html.push('</span>');
- html.push(node.name);
- }
- html.push('</td>');
- // 计量进度
- html.push('<td style="width: 25%">');
- if (!node.cid && node.cur_flow) {
- if (node.progress) {
- html.push(node.progress.title + ' (' + '<span class="' + node.progress.status_class + '">' + node.progress.status + '</span>' + ')');
- } else {
- html.push(node.cur_flow.title + ' (' + '<span class="' + node.cur_flow.status_class + '">' + node.cur_flow.status + '</span>' + ')');
- }
- }
- html.push('</td>');
- html.push('</tr>');
- if (node.children) {
- for (const c of node.children) {
- html.push(recursiveGetTenderListNodeHtml(c, node.children, node.sort_id));
- }
- }
- return html.join('');
- }
- // 根据TenderTree数据获取Html代码
- function getTenderListTreeHtml () {
- if (tenderListTree.length > 0) {
- const html = [];
- html.push('<table class="table table-hover table-bordered">');
- html.push('<thead style="position: sticky;left:56px;top: 0px;">', '<tr>');
- html.push('<th class="text-center" style="width: 60px;">', '选择', '</th>');
- html.push('<th class="text-center" style="width: 65%">', '标段名称', '</th>');
- html.push('<th class="text-center" style="width: 25%">', '计量进度', '</th>');
- html.push('</tr>', '</thead>');
- tenderListParentId = 0;
- for (const t of tenderListTree) {
- html.push(recursiveGetTenderListNodeHtml(t, tenderListTree, ''));
- }
- html.push('</table>');
- return html.join('');
- } else {
- return EmptyTenderListHtml.join('');
- }
- }
- $('#add-ftt').on('shown.bs.modal', function () {
- tenderListOrder.reOrderTenders('', '#copyModalContent', false, tenderList);
- initTenderListTree();
- $('#add-tender-list').html(getTenderListTreeHtml());
- });
- })
- /**
- * 校验文件大小、格式
- * @param {Array} files 文件数组
- */
- function validateFiles(files) {
- if (files.length > 10) {
- toastr.error('至多同时上传10个文件');
- return false
- }
- return files.every(file => {
- if (file.size > 1024 * 1024 * 50) {
- toastr.error('文件大小限制为50MB');
- return false
- }
- if (whiteList.indexOf('.' + file.ext.toLowerCase()) === -1) {
- toastr.error('请上传正确的格式文件');
- return false
- }
- return true
- })
- }
|