|
@@ -1,197 +1,235 @@
|
|
|
-'use strict';
|
|
|
-
|
|
|
-/**
|
|
|
- * 变更令详细页js
|
|
|
- *
|
|
|
- * @author EllisRan.
|
|
|
- * @date 2018/11/22
|
|
|
- * @version
|
|
|
- */
|
|
|
-
|
|
|
-$.event.special.valuechange = {
|
|
|
- teardown: function (namespaces) {
|
|
|
- $(this).unbind('.valuechange');
|
|
|
- },
|
|
|
-
|
|
|
- handler: function (e) {
|
|
|
- $.event.special.valuechange.triggerChanged($(this));
|
|
|
- },
|
|
|
-
|
|
|
- add: function (obj) {
|
|
|
- $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler)
|
|
|
- },
|
|
|
-
|
|
|
- triggerChanged: function (element) {
|
|
|
- var current = element[0].contentEditable === 'true' ? element.html() : element.val()
|
|
|
- , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous');
|
|
|
- if (current !== previous) {
|
|
|
- element.trigger('valuechange', [element.data('previous')]);
|
|
|
- element.data('previous', current);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-$(document).ready(() => {
|
|
|
- // tab切换
|
|
|
- $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
|
|
- const tab = $(this).attr('aria-controls');
|
|
|
- $('.show_title').hide();
|
|
|
- $('#'+ tab +'_title').show();
|
|
|
- if (tab === 'bills' && $('#bills').hasClass('first-bill-pane')) {
|
|
|
- if (table) {
|
|
|
- table.destroy();
|
|
|
- }
|
|
|
- table = $('.table-list').removeAttr('width').DataTable(billsTable);
|
|
|
- if (!$('.change-detail-checkbox').is(':checked')) {
|
|
|
- const column = table.column(3);
|
|
|
- column.visible(!column.visible());
|
|
|
- }
|
|
|
- $('#bills').removeClass('first-bill-pane');
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 上传附件
|
|
|
- $('#upload-file-btn').click(function () {
|
|
|
- const files = $('#upload-file')[0].files;
|
|
|
- const formData = new FormData();
|
|
|
- formData.append('cid', $('#changeId').val());
|
|
|
- formData.append('tid', $('#tenderId').val());
|
|
|
- for (const file of files) {
|
|
|
- if (file === undefined) {
|
|
|
- toastr.error('未选择上传文件!');
|
|
|
- return false;
|
|
|
- }
|
|
|
- const filesize = file.size;
|
|
|
- if (filesize > 30 * 1024 * 1024) {
|
|
|
- toastr.error('文件大小过大!');
|
|
|
- return false;
|
|
|
- }
|
|
|
- const fileext = '.' + file.name.toLowerCase().split('.').splice(-1)[0];
|
|
|
- if (whiteList.indexOf(fileext) === -1) {
|
|
|
- toastr.error('只能上传指定格式的附件!');
|
|
|
- return false;
|
|
|
- }
|
|
|
- formData.append('size', filesize);
|
|
|
- formData.append('file[]', file);
|
|
|
- }
|
|
|
- postDataWithFile('/change/upload/file', formData, function (data) {
|
|
|
- $('#addfujian').modal('hide');
|
|
|
- let html = '';
|
|
|
- let index = $('#attList tr').length + 1;
|
|
|
- for (const fileInfo of data) {
|
|
|
- html += '<tr> ' +
|
|
|
- '<td>' + index + '</td> ' +
|
|
|
- `<td><a href="javascript: void(0);" class="file-atn" f-id="${fileInfo.id}">${fileInfo.filename}${fileInfo.fileext}</a></td>`+
|
|
|
- '<td>' + fileInfo.filesize + '</td> ' +
|
|
|
- '<td>' + fileInfo.in_time + '</td> ' +
|
|
|
- '<td> <a class="btn btn-light btn-sm delete-file" data-attid="' + fileInfo.id + '" title="删除附件"><span class="fa fa-trash text-danger"></span></a> </td> ' +
|
|
|
- '</tr>';
|
|
|
- ++index;
|
|
|
- }
|
|
|
- $('#attList').append(html);
|
|
|
- }, function () {
|
|
|
-
|
|
|
- });
|
|
|
- $('#upload-file').val('');
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
- // 删除附件
|
|
|
- $('body').on('click', '.delete-file', function () {
|
|
|
- let attid = $(this).data('attid');
|
|
|
- console.log(attid);
|
|
|
- let self = $(this);
|
|
|
- const data = {id: attid};
|
|
|
- postData('/change/delete/file', data, function (result) {
|
|
|
- self.parents('tr').remove();
|
|
|
- // 重新排序
|
|
|
- let newsort = 1;
|
|
|
- $('#attList tr').each(function(){
|
|
|
- $(this).children('td').eq(0).text(newsort);
|
|
|
- newsort++;
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
- // /change/download/file/
|
|
|
- $('#attList').on('click', '.file-atn', function() {
|
|
|
- const id = $(this).attr('f-id')
|
|
|
- postData(`/change/download/file/${id}`, {}, (data) => {
|
|
|
- const { filepath } = data
|
|
|
- $('#file-upload').attr('href', filepath)
|
|
|
- $('#file-upload')[0].click()
|
|
|
- })
|
|
|
- })
|
|
|
- //
|
|
|
- const cca = getLocalCache('change-checkbox-account-' + accountId);
|
|
|
- if (cca !== null && cca !== undefined) {
|
|
|
- $('#customCheck1').prop('checked', cca !== 'false');
|
|
|
- }
|
|
|
- // 变更详情展示和隐藏
|
|
|
- $('.change-detail-checkbox').on('click', function (e) {
|
|
|
- if($(e.target).is('label')){
|
|
|
- return;
|
|
|
- }
|
|
|
- let column = table.column(3);
|
|
|
- // 设置用户项目本地记录展示和隐藏情况
|
|
|
- setLocalCache('change-checkbox-account-'+ accountId, $(this).is(':checked'));
|
|
|
- column.visible(!column.visible());
|
|
|
- })
|
|
|
-
|
|
|
- // 重新审批获取手机验证码
|
|
|
- // 获取验证码
|
|
|
- let isPosting = false;
|
|
|
- $("#get-code").click(function() {
|
|
|
- if (isPosting) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- const btn = $(this);
|
|
|
-
|
|
|
- $.ajax({
|
|
|
- url: '/profile/code?_csrf=' + csrf,
|
|
|
- type: 'post',
|
|
|
- data: { mobile: authMobile, type: 'shenpi' },
|
|
|
- dataTye: 'json',
|
|
|
- error: function() {
|
|
|
- isPosting = false;
|
|
|
- },
|
|
|
- beforeSend: function() {
|
|
|
- isPosting = true;
|
|
|
- },
|
|
|
- success: function(response) {
|
|
|
- isPosting = false;
|
|
|
- if (response.err === 0) {
|
|
|
- codeSuccess(btn);
|
|
|
- $("input[name='code']").removeAttr('readonly');
|
|
|
- $("#re-shenpi-btn").removeAttr('disabled');
|
|
|
- } else {
|
|
|
- toast(response.msg, 'error');
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
-});
|
|
|
-/**
|
|
|
- * 获取成功后的操作
|
|
|
- *
|
|
|
- * @param {Object} btn - 点击的按钮
|
|
|
- * @return {void}
|
|
|
- */
|
|
|
-function codeSuccess(btn) {
|
|
|
- let counter = 60;
|
|
|
- btn.addClass('disabled').text('重新获取 ' + counter + 'S');
|
|
|
- btn.parent().siblings('input').removeAttr('readonly').attr('placeholder', '输入短信中的6位验证码');
|
|
|
- const bindBtn = $("#bind-btn");
|
|
|
- bindBtn.removeClass('btn-secondary disabled').addClass('btn-primary');
|
|
|
-
|
|
|
- const countDown = setInterval(function() {
|
|
|
- const countString = counter - 1 <= 0 ? '' : ' ' + (counter - 1) + 'S';
|
|
|
- // 倒数结束后
|
|
|
- if (countString === '') {
|
|
|
- clearInterval(countDown);
|
|
|
- btn.removeClass('disabled');
|
|
|
- }
|
|
|
- const text = '重新获取' + countString;
|
|
|
- btn.text(text);
|
|
|
- counter -= 1;
|
|
|
- }, 1000);
|
|
|
-}
|
|
|
+'use strict';
|
|
|
+
|
|
|
+/**
|
|
|
+ * 变更令详细页js
|
|
|
+ *
|
|
|
+ * @author EllisRan.
|
|
|
+ * @date 2018/11/22
|
|
|
+ * @version
|
|
|
+ */
|
|
|
+
|
|
|
+$.event.special.valuechange = {
|
|
|
+ teardown: function (namespaces) {
|
|
|
+ $(this).unbind('.valuechange');
|
|
|
+ },
|
|
|
+
|
|
|
+ handler: function (e) {
|
|
|
+ $.event.special.valuechange.triggerChanged($(this));
|
|
|
+ },
|
|
|
+
|
|
|
+ add: function (obj) {
|
|
|
+ $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler)
|
|
|
+ },
|
|
|
+
|
|
|
+ triggerChanged: function (element) {
|
|
|
+ var current = element[0].contentEditable === 'true' ? element.html() : element.val()
|
|
|
+ , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous');
|
|
|
+ if (current !== previous) {
|
|
|
+ element.trigger('valuechange', [element.data('previous')]);
|
|
|
+ element.data('previous', current);
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+$(document).ready(() => {
|
|
|
+ // tab切换
|
|
|
+ $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
|
|
+ const tab = $(this).attr('aria-controls');
|
|
|
+ $('.show_title').hide();
|
|
|
+ $('#'+ tab +'_title').show();
|
|
|
+ if (tab === 'bills' && $('#bills').hasClass('first-bill-pane')) {
|
|
|
+ if (table) {
|
|
|
+ table.destroy();
|
|
|
+ }
|
|
|
+ table = $('.table-list').removeAttr('width').DataTable(billsTable);
|
|
|
+ if (!$('.change-detail-checkbox').is(':checked')) {
|
|
|
+ const column = table.column(3);
|
|
|
+ column.visible(!column.visible());
|
|
|
+ }
|
|
|
+ $('#bills').removeClass('first-bill-pane');
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 上传附件
|
|
|
+ $('#upload-file-btn').click(function () {
|
|
|
+ const files = $('#upload-file')[0].files;
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append('cid', $('#changeId').val());
|
|
|
+ formData.append('tid', $('#tenderId').val());
|
|
|
+ for (const file of files) {
|
|
|
+ if (file === undefined) {
|
|
|
+ toastr.error('未选择上传文件!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ const filesize = file.size;
|
|
|
+ if (filesize > 30 * 1024 * 1024) {
|
|
|
+ toastr.error('文件大小过大!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ const fileext = '.' + file.name.toLowerCase().split('.').splice(-1)[0];
|
|
|
+ if (whiteList.indexOf(fileext) === -1) {
|
|
|
+ toastr.error('只能上传指定格式的附件!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ formData.append('size', filesize);
|
|
|
+ formData.append('file[]', file);
|
|
|
+ }
|
|
|
+ postDataWithFile('/change/upload/file', formData, function (data) {
|
|
|
+ $('#addfujian').modal('hide');
|
|
|
+ let html = '';
|
|
|
+ let index = $('#attList tr').length + 1;
|
|
|
+ for (const fileInfo of data) {
|
|
|
+ html += '<tr> ' +
|
|
|
+ `<td width="25"><input type="checkbox" class="check-file" file-id=${fileInfo.id}></td>` +
|
|
|
+ '<td>' + index + '</td> ' +
|
|
|
+ `<td><a href="javascript: void(0);" class="file-atn" f-id="${fileInfo.id}">${fileInfo.filename}${fileInfo.fileext}</a></td>`+
|
|
|
+ '<td>' + fileInfo.filesize + '</td> ' +
|
|
|
+ '<td>' + fileInfo.in_time + '</td> ' +
|
|
|
+ `<td>
|
|
|
+ <a href="/change/download/file/${fileInfo.id}" class="btn btn-light btn-sm" title="下载"><span class="fa fa-download text-primary"></span></a>
|
|
|
+ <a class="btn btn-light btn-sm delete-file" data-attid="${fileInfo.id}" title="删除附件"><span class="fa fa-trash text-danger"></span></a>
|
|
|
+ </td>`+
|
|
|
+ // '<td> <a class="btn btn-light btn-sm delete-file" data-attid="' + fileInfo.id + '" title="删除附件"><span class="fa fa-trash text-danger"></span></a> </td> ' +
|
|
|
+ '</tr>';
|
|
|
+ ++index;
|
|
|
+ }
|
|
|
+ $('#attList').append(html);
|
|
|
+ }, function () {
|
|
|
+
|
|
|
+ });
|
|
|
+ $('#upload-file').val('');
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // 删除附件
|
|
|
+ $('body').on('click', '.delete-file', function () {
|
|
|
+ let attid = $(this).data('attid');
|
|
|
+ let self = $(this);
|
|
|
+ const data = {id: attid};
|
|
|
+ postData('/change/delete/file', data, function (result) {
|
|
|
+ self.parents('tr').remove();
|
|
|
+ // 重新排序
|
|
|
+ let newsort = 1;
|
|
|
+ $('#attList tr').each(function(){
|
|
|
+ $(this).children('td').eq(1).text(newsort);
|
|
|
+ newsort++;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // /change/download/file/
|
|
|
+ $('#attList').on('click', '.file-atn', function() {
|
|
|
+ const id = $(this).attr('f-id')
|
|
|
+ postData(`/change/download/file/${id}`, {}, (data) => {
|
|
|
+ const { filepath } = data
|
|
|
+ $('#file-upload').attr('href', filepath)
|
|
|
+ $('#file-upload')[0].click()
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ $('#attList').on('click', '.check-file', function() {
|
|
|
+
|
|
|
+ const checkedList = $('#attList').find('input:checked')
|
|
|
+ const childs = $('#attList').children().length
|
|
|
+ const checkBox = $('#check-all-file')
|
|
|
+ if (checkedList.length === childs) {
|
|
|
+ checkBox.prop("checked", true)
|
|
|
+ } else {
|
|
|
+ checkBox.prop("checked", false)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ $('#check-all-file').click(function() {
|
|
|
+ const isCheck = $(this).is(':checked')
|
|
|
+ $('#attList').children().each(function() {
|
|
|
+ $(this).find('input:checkbox').prop("checked", isCheck)
|
|
|
+ })
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#bach-download').click(function() {
|
|
|
+ const fileIds = []
|
|
|
+ $( '#attList .check-file:checked').each(function() {
|
|
|
+ const fileId = $(this).attr('file-id')
|
|
|
+ fileId && fileIds.push(fileId)
|
|
|
+ })
|
|
|
+
|
|
|
+ if (fileIds.length) {
|
|
|
+ const tid = $('#tenderId').val()
|
|
|
+ const cid = $('#changeId').val()
|
|
|
+ $('#downloadZip').attr('href', `/tender/${tid}/change/${cid}/download/compresse-file?fileIds=${JSON.stringify(fileIds)}`);
|
|
|
+ $('#downloadZip')[0].click();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ //
|
|
|
+ const cca = getLocalCache('change-checkbox-account-' + accountId);
|
|
|
+ if (cca !== null && cca !== undefined) {
|
|
|
+ $('#customCheck1').prop('checked', cca !== 'false');
|
|
|
+ }
|
|
|
+ // 变更详情展示和隐藏
|
|
|
+ $('.change-detail-checkbox').on('click', function (e) {
|
|
|
+ if($(e.target).is('label')){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let column = table.column(3);
|
|
|
+ // 设置用户项目本地记录展示和隐藏情况
|
|
|
+ setLocalCache('change-checkbox-account-'+ accountId, $(this).is(':checked'));
|
|
|
+ column.visible(!column.visible());
|
|
|
+ })
|
|
|
+
|
|
|
+ // 重新审批获取手机验证码
|
|
|
+ // 获取验证码
|
|
|
+ let isPosting = false;
|
|
|
+ $("#get-code").click(function() {
|
|
|
+ if (isPosting) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ const btn = $(this);
|
|
|
+
|
|
|
+ $.ajax({
|
|
|
+ url: '/profile/code?_csrf=' + csrf,
|
|
|
+ type: 'post',
|
|
|
+ data: { mobile: authMobile, type: 'shenpi' },
|
|
|
+ dataTye: 'json',
|
|
|
+ error: function() {
|
|
|
+ isPosting = false;
|
|
|
+ },
|
|
|
+ beforeSend: function() {
|
|
|
+ isPosting = true;
|
|
|
+ },
|
|
|
+ success: function(response) {
|
|
|
+ isPosting = false;
|
|
|
+ if (response.err === 0) {
|
|
|
+ codeSuccess(btn);
|
|
|
+ $("input[name='code']").removeAttr('readonly');
|
|
|
+ $("#re-shenpi-btn").removeAttr('disabled');
|
|
|
+ } else {
|
|
|
+ toast(response.msg, 'error');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|
|
|
+/**
|
|
|
+ * 获取成功后的操作
|
|
|
+ *
|
|
|
+ * @param {Object} btn - 点击的按钮
|
|
|
+ * @return {void}
|
|
|
+ */
|
|
|
+function codeSuccess(btn) {
|
|
|
+ let counter = 60;
|
|
|
+ btn.addClass('disabled').text('重新获取 ' + counter + 'S');
|
|
|
+ btn.parent().siblings('input').removeAttr('readonly').attr('placeholder', '输入短信中的6位验证码');
|
|
|
+ const bindBtn = $("#bind-btn");
|
|
|
+ bindBtn.removeClass('btn-secondary disabled').addClass('btn-primary');
|
|
|
+
|
|
|
+ const countDown = setInterval(function() {
|
|
|
+ const countString = counter - 1 <= 0 ? '' : ' ' + (counter - 1) + 'S';
|
|
|
+ // 倒数结束后
|
|
|
+ if (countString === '') {
|
|
|
+ clearInterval(countDown);
|
|
|
+ btn.removeClass('disabled');
|
|
|
+ }
|
|
|
+ const text = '重新获取' + countString;
|
|
|
+ btn.text(text);
|
|
|
+ counter -= 1;
|
|
|
+ }, 1000);
|
|
|
+}
|