|
@@ -1,65 +1,134 @@
|
|
|
const table = '#table',
|
|
|
- $modal = $('#modal')
|
|
|
-console.log(project_id)
|
|
|
+ $modal = $('#modal'),
|
|
|
+ $modalQuota = $('#modal_quota')
|
|
|
+console.log(`加载项目:${project_id}`)
|
|
|
const nav_tab_template = `
|
|
|
<li class="nav-item" data-id="{0}">
|
|
|
<button type="button" class="nav-link {2} btn-light-primary btn-active-color-primary" data-id="{0}" data-bs-toggle="tab" data-bs-target="#iwb_tab_{0}">{1}</button>
|
|
|
</li>`,
|
|
|
tab_content_template = `<div class="tab-pane h-100 fade" id="iwb_tab_{0}" role="tabpanel">{1}</div>`,
|
|
|
- table_template = `
|
|
|
-<div class="d-flex flex-row h-100 project-box">
|
|
|
- <div class="flex-row-auto h-100 left-box">
|
|
|
- <div class="tree-dom h-100 overflow-auto" id="js-tree_{0}"></div>
|
|
|
- </div>
|
|
|
- <div class="flex-row-fluid right-box">
|
|
|
- <div class="table-box table-responsive" id="table_box_{0}" style="display: none">
|
|
|
- <section class="d-none">
|
|
|
- <input type="hidden" name="budget_id" value="{0}">
|
|
|
- <input type="hidden" name="project_id" value="">
|
|
|
- <input type="hidden" name="item_id" value="">
|
|
|
- <input type="hidden" name="item_code" value="">
|
|
|
- </section>
|
|
|
- <span class="my-3 fs-3 table-title mt-5"><span class="fw-bolder me-5 title"></span><span class="badge badge-primary">定额任务列表</span></span>
|
|
|
- <div class="d-flex justify-content-between my-5">
|
|
|
- <div>
|
|
|
- <button type="button" class="btn btn-primary btn-sm" onclick="Add('{0}')">添加任务</button>
|
|
|
- </div>
|
|
|
- <form class="search-box d-flex">
|
|
|
- <div class="d-flex">
|
|
|
- <select class="form-select form-select-sm me-5" name="process_status">
|
|
|
- <option value="">全部处理状态</option>
|
|
|
- <option value="0">未处理</option>
|
|
|
- <option value="1">处理中</option>
|
|
|
- <option value="2">已处理</option>
|
|
|
- <option value="3">处理失败</option>
|
|
|
- </select>
|
|
|
- <select class="form-select form-select-sm me-5" name="send_status">
|
|
|
- <option value="">全部发送状态</option>
|
|
|
- <option value="0">未发送</option>
|
|
|
- <option value="1">发送中</option>
|
|
|
- <option value="2">已发送</option>
|
|
|
- <option value="3">发送失败</option>
|
|
|
- </select>
|
|
|
- <input type="text" class="form-control form-control-sm w-200px" placeholder="请输入关键字" name="keyword" />
|
|
|
- </div>
|
|
|
- <div class="btn-group ms-5">
|
|
|
- <button type="button" class="btn btn-primary btn-sm" onclick="IwbTableSearch(this)">查询</button>
|
|
|
- <button type="button" class="btn btn-danger btn-sm" onclick="IwbTableResetSearch(this)">重置</button>
|
|
|
- </div>
|
|
|
- </form>
|
|
|
- </div>
|
|
|
- <table class="table table-striped table-bordered table-hover table-rounded" id="table_{0}">
|
|
|
- </table>
|
|
|
- <div class="pagination-row"></div>
|
|
|
- </section>
|
|
|
- </div>
|
|
|
-</div>`
|
|
|
-
|
|
|
+ table_template = `<div class="d-flex flex-row h-100 project-box">
|
|
|
+ <div class="flex-row-auto h-100 left-box">
|
|
|
+ <div class="tree-dom h-100 overflow-auto" id="js-tree_{0}"></div>
|
|
|
+ </div>
|
|
|
+ <div class="flex-row-fluid right-box">
|
|
|
+ <div class="table-box table-responsive" id="table_box_{0}" style="display: none">
|
|
|
+ <section class="d-none">
|
|
|
+ <input type="hidden" name="budget_id" value="{0}">
|
|
|
+ <input type="hidden" name="project_id" value="">
|
|
|
+ <input type="hidden" name="item_id" value="">
|
|
|
+ <input type="hidden" name="item_code" value="">
|
|
|
+ </section>
|
|
|
+ <div class="my-2 d-flex align-items-center table-title mt-5">
|
|
|
+ <span class="fw-bolder me-5 title fs-2"></span>
|
|
|
+<!-- <span class="badge badge-primary fs-2">定额任务列表</span>-->
|
|
|
+ <div class="form-check form-check-custom form-check-primary form-check-solid">
|
|
|
+ <input class="form-check-input" name="table_radio" type="radio" value="task" id="task_radio"/>
|
|
|
+ <label class="form-check-label fw-bolder text-primary" for="task_radio">
|
|
|
+ 任务列表
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <div class="form-check form-check-custom form-check-success form-check-solid ms-5">
|
|
|
+ <input class="form-check-input" name="table_radio" type="radio" value="quota" id="quota_radio"/>
|
|
|
+ <label class="form-check-label fw-bolder text-success" for="quota_radio">
|
|
|
+ 定额输入
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="d-flex justify-content-between my-5">
|
|
|
+ <div class="">
|
|
|
+ <button type="button" id="task_add_btn" class="btn btn-primary btn-sm" onclick="Add('{0}')">添加任务</button>
|
|
|
+ <button type="button" id="quota_add_btn" class="btn btn-primary btn-sm" onclick="Add_Quota('{0}')">添加定额</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <form class="search-box d-flex">
|
|
|
+ <div class="d-flex">
|
|
|
+ <select class="form-select form-select-sm me-5" name="collect_status">
|
|
|
+ <option value="">全部采集状态</option>
|
|
|
+ <option value="0">未采集</option>
|
|
|
+ <option value="1">采集中</option>
|
|
|
+ <option value="2">已采集</option>
|
|
|
+ <option value="3">采集失败</option>
|
|
|
+ </select>
|
|
|
+ <select class="form-select form-select-sm me-5" name="process_status">
|
|
|
+ <option value="">全部处理状态</option>
|
|
|
+ <option value="0">未处理</option>
|
|
|
+ <option value="1">处理中</option>
|
|
|
+ <option value="2">已处理</option>
|
|
|
+ <option value="3">处理失败</option>
|
|
|
+ </select>
|
|
|
+ <select class="form-select form-select-sm me-5" name="send_status">
|
|
|
+ <option value="">全部发送状态</option>
|
|
|
+ <option value="0">未发送</option>
|
|
|
+ <option value="1">发送中</option>
|
|
|
+ <option value="2">已发送</option>
|
|
|
+ <option value="3">发送失败</option>
|
|
|
+ </select>
|
|
|
+ <input type="text" class="form-control form-control-sm w-200px" placeholder="请输入关键字" name="keyword" />
|
|
|
+ </div>
|
|
|
+ <div class="btn-group ms-5">
|
|
|
+ <button type="button" class="btn btn-primary btn-sm" onclick="IwbTableSearch(this)">查询</button>
|
|
|
+ <button type="button" class="btn btn-danger btn-sm" onclick="IwbTableResetSearch(this)">重置</button>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ <table class="table table-striped table-bordered table-hover table-rounded" id="table_{0}">
|
|
|
+ </table>
|
|
|
+ <div class="pagination-row"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>`
|
|
|
+let _fileUploadDropzone = null
|
|
|
$(function () {
|
|
|
GetBudgetInfo()
|
|
|
- // setTimeout(function () {GetBudgetItems(1)},1000)
|
|
|
+ InitFileUpload()
|
|
|
})
|
|
|
-
|
|
|
+function InitFileUpload(){
|
|
|
+ const id = "#modal";
|
|
|
+ const dropzone = document.querySelector(id);
|
|
|
+ // set the preview element template
|
|
|
+ const previewNode = dropzone.querySelector(".dropzone-item");
|
|
|
+ previewNode.id = "";
|
|
|
+ const previewTemplate = previewNode.parentNode.innerHTML;
|
|
|
+ previewNode.parentNode.removeChild(previewNode);
|
|
|
+ _fileUploadDropzone = new Dropzone(id, {
|
|
|
+ url:"/",
|
|
|
+ parallelUploads: 10,
|
|
|
+ previewTemplate: previewTemplate,
|
|
|
+ autoProcessQueue: false, //关闭自动上传功能
|
|
|
+ maxFiles: 5,
|
|
|
+ maxFilesize: 10, // MB
|
|
|
+ previewsContainer: id + " .dropzone-items", //
|
|
|
+ clickable: id + " .dropzone-select", //
|
|
|
+ acceptedFiles: '.csv,.xls,.xlsx',
|
|
|
+ accept: function(file, done) {
|
|
|
+ console.log('DONE', file, done)
|
|
|
+ if(file.type.includes('csv') || file.type.includes('.xls') || file.type.includes('sheet')){
|
|
|
+ done()
|
|
|
+ }else{
|
|
|
+ done('文件类型非法,只允许.csv,.xls,.xlsx文件')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ dictInvalidFileType: '文件类型非法,只允许.csv,.xls,.xlsx文件',
|
|
|
+ // dictRemoveFileConfirmation: '确定移除文件吗?',
|
|
|
+ dictFileTooBig: '文件[{{filesize}}M]过大,最大允许{{maxFilesize}}M。',
|
|
|
+ dictMaxFilesExceeded: '最多只能上传5个,每个文件不超过10M',
|
|
|
+ });
|
|
|
+ _fileUploadDropzone.on("addedfile", function (file) {
|
|
|
+ const dropzoneItems = dropzone.querySelectorAll('.dropzone-item');
|
|
|
+ dropzoneItems.forEach(dropzoneItem => {
|
|
|
+ dropzoneItem.style.display = '';
|
|
|
+ });
|
|
|
+ if(_fileUploadDropzone.getAcceptedFiles().findIndex(item=>item.name===file.name)>=0){
|
|
|
+ alert('文件已存在')
|
|
|
+ _fileUploadDropzone.removeFile(file);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // _fileUploadDropzone.on("removedfile", function (file) {
|
|
|
+ // _files = _files.filter(item=>item.name!==file.name)
|
|
|
+ // console.log('removedfile', file,_files)
|
|
|
+ // })
|
|
|
+}
|
|
|
function GetBudgetInfo() {
|
|
|
IwbAjax_1({
|
|
|
url: `/api/project/budget/${project_id}`,
|
|
@@ -81,11 +150,15 @@ function RenderTabs(data){
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
const item = data[i]
|
|
|
str1 += nav_tab_template.format(item.budget_id, item.budget_code)
|
|
|
- str2 += tab_content_template.format(item.budget_id, table_template.format(item.budget_id))
|
|
|
+ const tableStr = table_template.format(item.budget_id)
|
|
|
+ const tabContent = tab_content_template.format(item.budget_id, tableStr)
|
|
|
+ // console.log('TAB_CONTENT', tabContent)
|
|
|
+ str2 += tabContent
|
|
|
}
|
|
|
}
|
|
|
$('#nav_tab').html(str1)
|
|
|
const h= $('.app-main .app-container').height() - $('#nav_tab').height() - $('#breadcrumb_header').height()
|
|
|
+
|
|
|
$('#tab_content').html(str2).height(h)
|
|
|
const $tab = $('#nav_tab li button[data-bs-toggle="tab"]')
|
|
|
$tab.on('shown.bs.tab',(e)=>{
|
|
@@ -147,81 +220,189 @@ function GetBudgetItems(id) {
|
|
|
|
|
|
function RenderTabCondent(data) {
|
|
|
// console.log('RenderTabCondent', data)
|
|
|
- if(data.chapter){
|
|
|
- const $tableBox = $(`#table_box_${data.budget_id}`),
|
|
|
+ const $tableBox = $(`#table_box_${data.budget_id}`),
|
|
|
$table = $(`#table_${data.budget_id}`)
|
|
|
- $tableBox.find('.table-title .title').text(`${data.chapter}、${data.project_name}`)
|
|
|
- $tableBox.show()
|
|
|
- $tableBox.find('input[name="budget_id"]').val(data.budget_id);
|
|
|
- $tableBox.find('input[name="project_id"]').val(project_id);
|
|
|
- $tableBox.find('input[name="item_id"]').val(data.item_id);
|
|
|
- $tableBox.find('input[name="item_code"]').val(data.item_code);
|
|
|
-
|
|
|
+ const title = data.chapter ?`${data.chapter}、${data.project_name}`: data.section ?`${data.section}.${data.project_name}`: data.project_name
|
|
|
+ $tableBox.find('input[name="budget_id"]').val(data.budget_id);
|
|
|
+ $tableBox.find('input[name="project_id"]').val(project_id);
|
|
|
+ $tableBox.find('input[name="item_id"]').val(data.item_id);
|
|
|
+ $tableBox.find('input[name="item_code"]').val(data.item_code);
|
|
|
+ $tableBox.find('[name="table_radio"]').prop("disabled",false).off('change.iwb')
|
|
|
+ $tableBox.find('[name="table_radio"]').on('change.iwb',function(){
|
|
|
+ const val = $(this).val()
|
|
|
+ if (val === 'quota') {
|
|
|
+ _quotaTable($table,data)
|
|
|
+ } else {
|
|
|
+ _taskTable($table,data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(data.children_count>0){
|
|
|
+ $tableBox.find('.table-title .title').text(title)
|
|
|
+ // $tableBox.find('.table-title .badge').text('任务列表').removeClass('badge-success').addClass('badge-primary')
|
|
|
+ _taskTable($table,data)
|
|
|
+ } else {
|
|
|
+ $tableBox.find('.table-title .title').text(title)
|
|
|
+ // $tableBox.find('.table-title .badge').text('定额输入明细').removeClass('badge-primary').addClass('badge-success')
|
|
|
+ $tableBox.find('#task_radio').prop("disabled",true)
|
|
|
+ $tableBox.find('#quota_radio').prop("checked",true)
|
|
|
+ _quotaTable($table,data)
|
|
|
+ }
|
|
|
+ $tableBox.show()
|
|
|
+ function _taskTable($table,data){
|
|
|
+ $tableBox.find('[name="collect_status"]').show()
|
|
|
+ $tableBox.find('#quota_add_btn').hide()
|
|
|
+ $tableBox.find('#task_add_btn').show()
|
|
|
IwbTable($table, {
|
|
|
- url: `/api/task/list/${data.budget_id}/${project_id}/${data.item_id}`,
|
|
|
+ url: `/api/task/list/${data.budget_id}/${project_id}/${data.item_code}`,
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ title: '任务编号',
|
|
|
+ data: 'id',
|
|
|
+ width: '100px',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '任务名称',
|
|
|
+ data: 'task_name',
|
|
|
+ width: '240px',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '文件数据',
|
|
|
+ data: 'file_data',
|
|
|
+ width: 'auto',
|
|
|
+ render: (row) => {
|
|
|
+ let str = ``
|
|
|
+ const file_paths = row.file_path ? row.file_path.split(',') : []
|
|
|
+ if(file_paths.length){
|
|
|
+ for (let i = 0; i < file_paths.length; i++) {
|
|
|
+ const path = file_paths[i]
|
|
|
+ const names = path.split('/')
|
|
|
+ const file_name = names[names.length - 1]
|
|
|
+ str += `<a href="#" onclick="DownloadFile('/api/task/download?filename=${encodeURIComponent(path)}','${file_name}')" class="link link-info px-2">${file_name}</a>`
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ str ="-"
|
|
|
+ }
|
|
|
+ return str
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '任务状态',
|
|
|
+ data: 'task_status',
|
|
|
+ width: '220px',
|
|
|
+ render: (row) => {
|
|
|
+ let str = ``
|
|
|
+ if (row.collect_status === 0) {
|
|
|
+ str += `<span class="badge badge-light-primary">未采集</span>`
|
|
|
+ } else if (row.collect_status === 1){
|
|
|
+ str += `<span class="badge badge-light-warning">采集中</span>`
|
|
|
+ } else if (row.collect_status === 2){
|
|
|
+ str += `<span class="badge badge-light-success">采集完成</span>`
|
|
|
+ if (row.process_status === 0) {
|
|
|
+ str += `<span class="badge badge-light-primary">未处理</span>`
|
|
|
+ } else if (row.process_status === 1){
|
|
|
+ str += `<span class="badge badge-light-warning">处理中</span>`
|
|
|
+ } else if (row.process_status === 2){
|
|
|
+ str += `<span class="badge badge-light-success">已处理</span>`
|
|
|
+ if (row.send_status === 0) {
|
|
|
+ str += `<span class="badge badge-light-primary">未发送</span>`
|
|
|
+ } else if (row.send_status === 1){
|
|
|
+ str += `<span class="badge badge-light-warning">发送中</span>`
|
|
|
+ } else if (row.send_status === 2){
|
|
|
+ str += `<span class="badge badge-light-success">已发送</span>`
|
|
|
+ } else if (row.send_status === 3){
|
|
|
+ str += `<span class="badge badge-light-danger">发送失败</span>`
|
|
|
+ }
|
|
|
+ } else if (row.process_status === 3){
|
|
|
+ str += `<span class="badge badge-light-danger">处理失败</span>`
|
|
|
+ }
|
|
|
+ } else if (row.collect_status === 3){
|
|
|
+ str += `<span class="badge badge-light-danger">采集失败</span>`
|
|
|
+ }
|
|
|
+
|
|
|
+ return str
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ data: 'id',
|
|
|
+ width: '200px',
|
|
|
+ render: (row) => {
|
|
|
+ let str = ``
|
|
|
+ if (row.collect_status === 0) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="开始任务" onclick="StartCollectTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-add-notepad fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></button>`
|
|
|
+ } else if (row.collect_status === 2) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="重新采集" onclick="ReStartCollectTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-add-notepad fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></button>`
|
|
|
+ if (row.process_status === 0) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="开始处理" onclick="StartProcessTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
+ } else if (row.process_status === 2) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="重新处理" onclick="ReStartProcessTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
+ if (row.send_status === 0) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="开始发送" onclick="StartSendTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ } else if (row.send_status === 2) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="重新发送" onclick="ReStartSendTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ } else if (row.send_status === 3) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="重新发送" onclick="ReStartSendTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ }
|
|
|
+ } else if (row.process_status === 3) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="重新处理" onclick="ReStartProcessTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
+ }
|
|
|
+ } else if (row.collect_status === 3) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="重新采集" onclick="ReStartCollectTask(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-add-notepad fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></button>`
|
|
|
+ }
|
|
|
+ str+=`<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="编辑" onclick="Edit(${row.id})"><i class="ki-duotone ki-message-edit fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ str+=`<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="删除" onclick="Delete(${row.id})"><i class="ki-duotone ki-trash-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></button>`
|
|
|
+
|
|
|
+ return str
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ }, true)
|
|
|
+ }
|
|
|
+ function _quotaTable($table,data){
|
|
|
+ $tableBox.find('[name="collect_status"]').val('').hide()
|
|
|
+ $tableBox.find('#task_add_btn').hide()
|
|
|
+ $tableBox.find('#quota_add_btn').show()
|
|
|
+ IwbTable($table,{
|
|
|
+ url:`/api/quota/list/${data.budget_id}/${project_id}/${data.item_code}`,
|
|
|
columns: [
|
|
|
{
|
|
|
- title: '任务编号',
|
|
|
+ title: '序号',
|
|
|
data: 'id',
|
|
|
width: '100px',
|
|
|
},
|
|
|
{
|
|
|
- title: '任务名称',
|
|
|
- data: 'task_name',
|
|
|
- width: '240px',
|
|
|
+ title: '工程或费用项目名称',
|
|
|
+ data: 'project_name',
|
|
|
+ width: 'auto',
|
|
|
},
|
|
|
{
|
|
|
- title: '文件数据',
|
|
|
- data: 'file_data',
|
|
|
- width: 'auto',
|
|
|
- render: (row) => {
|
|
|
- let str = ``
|
|
|
- const file_paths = row.file_path ? row.file_path.split(',') : []
|
|
|
- if(file_paths.length){
|
|
|
- for (let i = 0; i < file_paths.length; i++) {
|
|
|
- const path = file_paths[i]
|
|
|
- const names = path.split('/')
|
|
|
- const file_name = names[names.length - 1]
|
|
|
- str += `<a href="#" onclick="DownloadFile('/api/task/download?filename=${encodeURIComponent(path)}','${file_name}')" class="link link-info px-2">${file_name}</a>`
|
|
|
- }
|
|
|
- }else{
|
|
|
- str ="-"
|
|
|
- }
|
|
|
- return str
|
|
|
- }
|
|
|
+ title: '单位',
|
|
|
+ data: 'unit',
|
|
|
+ width: '100px',
|
|
|
},
|
|
|
{
|
|
|
- title: '任务状态',
|
|
|
- data: 'task_status',
|
|
|
- width: '220px',
|
|
|
+ title: '状态',
|
|
|
+ data: 'task_desc',
|
|
|
+ width: '150px',
|
|
|
render: (row) => {
|
|
|
- let str = ``
|
|
|
- if (row.collect_status === 0) {
|
|
|
- str += `<span class="badge badge-light-primary">未采集</span>`
|
|
|
- } else if (row.collect_status === 1){
|
|
|
- str += `<span class="badge badge-light-warning">采集中</span>`
|
|
|
- } else if (row.collect_status === 2){
|
|
|
- str += `<span class="badge badge-light-success">采集完成</span>`
|
|
|
- if (row.process_status === 0) {
|
|
|
- str += `<span class="badge badge-light-primary">未处理</span>`
|
|
|
- } else if (row.process_status === 1){
|
|
|
- str += `<span class="badge badge-light-warning">处理中</span>`
|
|
|
- } else if (row.process_status === 2){
|
|
|
- str += `<span class="badge badge-light-success">已处理</span>`
|
|
|
- if (row.send_status === 0) {
|
|
|
- str += `<span class="badge badge-light-primary">未发送</span>`
|
|
|
- } else if (row.send_status === 1){
|
|
|
- str += `<span class="badge badge-light-warning">发送中</span>`
|
|
|
- } else if (row.send_status === 2){
|
|
|
- str += `<span class="badge badge-light-success">已发送</span>`
|
|
|
- } else if (row.send_status === 3){
|
|
|
- str += `<span class="badge badge-light-danger">发送失败</span>`
|
|
|
- }
|
|
|
- } else if (row.process_status === 3){
|
|
|
- str += `<span class="badge badge-light-danger">处理失败</span>`
|
|
|
- }
|
|
|
- } else if (row.collect_status === 3){
|
|
|
- str += `<span class="badge badge-light-danger">采集失败</span>`
|
|
|
+ let str=''
|
|
|
+ if(row.process_status === 0){
|
|
|
+ str+= `<span class="badge badge-primary">未处理</span>`
|
|
|
+ }else if (row.process_status === 1){
|
|
|
+ str+= `<span class="badge badge-warning">处理中</span>`
|
|
|
+ }else if (row.process_status === 2){
|
|
|
+ str+= `<span class="badge badge-success">已处理</span>`
|
|
|
+ }else if (row.process_status === 3){
|
|
|
+ str+= `<span class="badge badge-danger">处理失败</span>`
|
|
|
+ }
|
|
|
+ if(row.send_status === 0){
|
|
|
+ str+= `<span class="badge badge-primary ms-3">未发送</span>`
|
|
|
+ }else if (row.send_status === 1){
|
|
|
+ str+= `<span class="badge badge-warning ms-3">发送中</span>`
|
|
|
+ }else if (row.send_status === 2){
|
|
|
+ str+= `<span class="badge badge-success ms-3">已发送</span>`
|
|
|
+ }else if (row.send_status === 3){
|
|
|
+ str+= `<span class="badge badge-danger ms-3">发送失败</span>`
|
|
|
}
|
|
|
|
|
|
return str
|
|
@@ -232,93 +413,44 @@ function RenderTabCondent(data) {
|
|
|
data: 'id',
|
|
|
width: '160px',
|
|
|
render: (row) => {
|
|
|
- let str = ``
|
|
|
- str += `<button type="button" class="btn btn-primary btn-sm" data-kt-menu="true" data-kt-menu-trigger="click" data-kt-menu-placement="bottom-end" data-kt-menu-flip="top-end">
|
|
|
- 操作
|
|
|
- <span class="svg-icon fs-5 m-0">
|
|
|
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
|
|
|
- <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
|
- <polygon points="0 0 24 0 24 24 0 24"></polygon>
|
|
|
- <path d="M6.70710678,15.7071068 C6.31658249,16.0976311 5.68341751,16.0976311 5.29289322,15.7071068 C4.90236893,15.3165825 4.90236893,14.6834175 5.29289322,14.2928932 L11.2928932,8.29289322 C11.6714722,7.91431428 12.2810586,7.90106866 12.6757246,8.26284586 L18.6757246,13.7628459 C19.0828436,14.1360383 19.1103465,14.7686056 18.7371541,15.1757246 C18.3639617,15.5828436 17.7313944,15.6103465 17.3242754,15.2371541 L12.0300757,10.3841378 L6.70710678,15.7071068 Z" fill="currentColor" fill-rule="nonzero" transform="translate(12.000003, 11.999999) rotate(-180.000000) translate(-12.000003, -11.999999)"></path>
|
|
|
- </g>
|
|
|
- </svg>
|
|
|
- </span>
|
|
|
- </button>
|
|
|
- <div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-bold fs-7 w-125px px-3 py-1" data-kt-menu="true">
|
|
|
- `
|
|
|
- const template = `<div class="menu-item py-1 px-1"><button type="button" class="btn btn-sm btn-light-{0} w-100" onclick="{1}(${row.id},${data.budget_id})">{2}</button></div>`
|
|
|
- if (row.collect_status === 0) {
|
|
|
- str += template.format('primary', 'StartCollect', '开始采集')
|
|
|
- } else if (row.collect_status === 2) {
|
|
|
- str += template.format('warning', 'ReStartCollect', '重新采集')
|
|
|
- if (row.process_status === 0) {
|
|
|
- str += template.format('primary', 'StartProcess', '开始处理')
|
|
|
- } else if (row.process_status === 2) {
|
|
|
- str += template.format('warning', 'ReStartProcess', '重新处理')
|
|
|
- if (row.send_status === 0) {
|
|
|
- str += template.format('primary', 'StartSend', '开始发送')
|
|
|
- } else if (row.send_status === 2) {
|
|
|
- str += template.format('warning', 'ReStartSend', '重新发送')
|
|
|
- } else if (row.send_status === 3) {
|
|
|
- str += template.format('danger', 'ReStartSend', '重新发送')
|
|
|
- }
|
|
|
- } else if (row.process_status === 3) {
|
|
|
- str += template.format('danger', 'ReStartProcess', '重新处理')
|
|
|
+ let str=''
|
|
|
+ if (row.process_status === 0) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="开始处理" onclick="StartProcessQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
+ } else if (row.process_status === 2) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="重新处理" onclick="ReStartProcessQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
+ if (row.send_status === 0) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="开始发送" onclick="StartSendQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ } else if (row.send_status === 2) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="重新发送" onclick="ReStartSendQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ } else if (row.send_status === 3) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="重新发送" onclick="ReStartSendQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-send fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
}
|
|
|
- } else if (row.collect_status === 3) {
|
|
|
- str += template.format('danger', 'ReStartCollect', '重新采集')
|
|
|
+ } else if (row.process_status === 3) {
|
|
|
+ str += `<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="重新处理" onclick="ReStartProcessQuota(${row.id}, ${data.budget_id})"><i class="ki-duotone ki-book-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i></button>`
|
|
|
}
|
|
|
- str += template.format('primary', 'Edit', '编辑')
|
|
|
- str += template.format('danger', 'Delete', '删除')
|
|
|
- // if (row.collect_status === 0) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-primary" onclick="StartCollect(${row.id}, ${data.budget_id})">开始任务</button>`
|
|
|
- // } else if (row.collect_status === 2) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-warning" onclick="ReStartCollect(${row.id}, ${data.budget_id})">重新采集</button>`
|
|
|
- // if (row.process_status === 0) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-primary" onclick="StartProcess(${row.id}, ${data.budget_id})">开始处理</button>`
|
|
|
- // } else if (row.process_status === 2) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-warning" onclick="ReStartProcess(${row.id}, ${data.budget_id})">重新处理</button>`
|
|
|
- // if (row.send_status === 0) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-primary" onclick="StartSend(${row.id}, ${data.budget_id})">开始发送</button>`
|
|
|
- // } else if (row.send_status === 2) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-warning" onclick="ReStartSend(${row.id}, ${data.budget_id})">重新发送</button>`
|
|
|
- // } else if (row.send_status === 3) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-danger" onclick="ReStartSend(${row.id}, ${data.budget_id})">重新发送</button>`
|
|
|
- // }
|
|
|
- // } else if (row.process_status === 3) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-danger" onclick="ReStartProcess(${row.id}, ${data.budget_id})">重新处理</button>`
|
|
|
- // }
|
|
|
- // } else if (row.collect_status === 3) {
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-danger" onclick="ReStartCollect(${row.id}, ${data.budget_id})">重新采集</button>`
|
|
|
- // }
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-info" onclick="GoTo('')">详情</button>`
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-primary" onclick="Edit(${row.id}, ${data.budget_id})">编辑</button>`
|
|
|
- // str += `<button type="button" class="btn btn-sm btn-light-danger" onclick="Delete(${row.id}, ${data.budget_id})">删除</button>`
|
|
|
- str+= `</div>`
|
|
|
- str += `<button type="button" class="btn btn-sm btn-light-primary ms-5" onclick="GoTo('')">详情</button></div>`
|
|
|
-
|
|
|
+ str+=`<button type="button" class="btn btn-icon btn-sm btn-light-primary" data-bs-toggle="tooltip" data-bs-placement="top" title="编辑" onclick="Edit_Quota(${row.id})"><i class="ki-duotone ki-message-edit fs-1"><span class="path1"></span><span class="path2"></span></i></button>`
|
|
|
+ str+=`<button type="button" class="btn btn-icon btn-sm btn-light-danger" data-bs-toggle="tooltip" data-bs-placement="top" title="删除" onclick="Delete_Quota(${row.id})"><i class="ki-duotone ki-trash-square fs-1"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span></i></button>`
|
|
|
return str
|
|
|
}
|
|
|
},
|
|
|
- ],
|
|
|
- callAfterRender:()=>{
|
|
|
- KTMenu.createInstances(`#table_${data.budget_id} [data-kt-menu="true"]`)
|
|
|
- }
|
|
|
+ ]
|
|
|
}, true)
|
|
|
- } else {
|
|
|
-
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
function Add(budget_id) {
|
|
|
+ _fileUploadDropzone.removeAllFiles()
|
|
|
AddModal($modal, () => {
|
|
|
- $modal.find('#task_id').val('0');
|
|
|
- SetBudgetData(budget_id)
|
|
|
+ $modal.find('[name="task_id"]').val('0');
|
|
|
+ $modal.find('#delete_file_box').hide();
|
|
|
+
|
|
|
+ SetBudgetData($modal,budget_id)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
function Edit(id) {
|
|
|
+ _fileUploadDropzone.removeAllFiles()
|
|
|
EditModal($modal,()=>{
|
|
|
IwbAjax_1({
|
|
|
url:`/api/task/get/${id}`,
|
|
@@ -328,46 +460,59 @@ function Edit(id) {
|
|
|
return
|
|
|
}
|
|
|
const data = res.data
|
|
|
+ $modal.find('#delete_file_box').show();
|
|
|
// SetBudgetData(budget_id)
|
|
|
- $modal.find('#task_id').val(data.id);
|
|
|
- $modal.find('#budget_id').val(data.budget_id);
|
|
|
- $modal.find('#project_id').val(data.project_id);
|
|
|
- $modal.find('#item_id').val(data.item_id);
|
|
|
- $modal.find('#item_code').val(data.item_code);
|
|
|
- $modal.find('#task_name').val(data.task_name);
|
|
|
- $modal.find('#task_desc').val(data.task_desc);
|
|
|
-
|
|
|
+ $modal.find('[name="task_id"]').val(data.id);
|
|
|
+ $modal.find('[name="budget_id"]').val(data.budget_id);
|
|
|
+ $modal.find('[name="project_id"]').val(data.project_id);
|
|
|
+ $modal.find('[name="item_id"]').val(data.item_id);
|
|
|
+ $modal.find('[name="item_code"]').val(data.item_code);
|
|
|
+ $modal.find('[name="task_name"]').val(data.task_name);
|
|
|
+ $modal.find('[name="task_desc"]').val(data.task_desc);
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-function SetBudgetData(budget_id){
|
|
|
+function SetBudgetData($el,budget_id){
|
|
|
const $tableBox = $(`#table_box_${budget_id}`)
|
|
|
- $modal.find('#budget_id').val(budget_id);
|
|
|
- $modal.find('#project_id').val($tableBox.find('input[name="project_id"]').val());
|
|
|
- $modal.find('#item_id').val($tableBox.find('input[name="item_id"]').val());
|
|
|
- $modal.find('#item_code').val($tableBox.find('input[name="item_code"]').val());
|
|
|
+ $el.find('[name="budget_id"').val(budget_id);
|
|
|
+ $el.find('[name="project_id"]').val($tableBox.find('input[name="project_id"]').val());
|
|
|
+ $el.find('[name="item_id"]').val($tableBox.find('input[name="item_id"]').val());
|
|
|
+ $el.find('[name="item_code"]').val($tableBox.find('input[name="item_code"]').val());
|
|
|
}
|
|
|
function SaveProject() {
|
|
|
const
|
|
|
- budget_id = $modal.find('#budget_id').val(),
|
|
|
- item_id = $modal.find('#item_id').val(),
|
|
|
- item_code = $modal.find('#item_code').val(),
|
|
|
- project_id = $modal.find('#project_id').val(),
|
|
|
- task_id= $modal.find('#task_id').val(),
|
|
|
- task_name = $modal.find('#task_name').val(),
|
|
|
- task_desc = $modal.find('#task_desc').val()
|
|
|
+ formData = new FormData(),
|
|
|
+ budget_id = $modal.find('[name="budget_id"]').val(),
|
|
|
+ item_id = $modal.find('[name="item_id"]').val(),
|
|
|
+ item_code = $modal.find('[name="item_code"]').val(),
|
|
|
+ project_id = $modal.find('[name="project_id"]').val(),
|
|
|
+ task_id= $modal.find('[name="task_id"]').val(),
|
|
|
+ task_name = $modal.find('[name="task_name"]').val(),
|
|
|
+ task_desc = $modal.find('[name="task_desc"]').val(),
|
|
|
+ delete_file = $modal.find('[name="delete_file"]').checked ? 'true':'false',
|
|
|
+ files = _fileUploadDropzone.getAcceptedFiles();
|
|
|
+ // console.log("FILES",files)
|
|
|
+
|
|
|
+ if(files.length>0){
|
|
|
+ files.forEach((file) => {
|
|
|
+ formData.append('files', file)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ formData.append('budget_id', budget_id)
|
|
|
+ formData.append('item_id', item_id)
|
|
|
+ formData.append('item_code', item_code)
|
|
|
+ formData.append('project_id', project_id)
|
|
|
+ formData.append('task_id', task_id)
|
|
|
+ formData.append('task_name', task_name)
|
|
|
+ formData.append('task_desc', task_desc)
|
|
|
+ formData.append('delete_old', delete_file)
|
|
|
+
|
|
|
IwbAjax({
|
|
|
url:`/api/task/save/${task_id}`,
|
|
|
- data:{
|
|
|
- budget_id,
|
|
|
- project_id,
|
|
|
- item_id,
|
|
|
- item_code,
|
|
|
- task_name,
|
|
|
- task_desc,
|
|
|
- },
|
|
|
+ headers:{},
|
|
|
+ body:formData,
|
|
|
modal:"#modal",
|
|
|
table:`#table_${budget_id}`
|
|
|
})
|
|
@@ -377,24 +522,94 @@ function Delete(id,budget_id){
|
|
|
ConfirmUrl('确定删除吗?',`/api/task/delete/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
|
|
|
-function StartCollect(id,budget_id){
|
|
|
+function StartCollectTask(id,budget_id){
|
|
|
ConfirmUrl('确定开始采集吗?',`/api/task/start_collect/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
-function ReStartCollect(id,budget_id){
|
|
|
+function ReStartCollectTask(id,budget_id){
|
|
|
ConfirmUrl('确定重新开始采集吗?',`/api/task/start_collect/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
|
|
|
-function StartProcess(id,budget_id){
|
|
|
+function StartProcessTask(id,budget_id){
|
|
|
ConfirmUrl('确定开始处理吗?',`/api/task/start_process/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
|
|
|
-function ReStartProcess(id,budget_id){
|
|
|
+function ReStartProcessTask(id,budget_id){
|
|
|
ConfirmUrl('确定重新开始处理吗?',`/api/task/start_process/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
|
|
|
-function StartSend(id,budget_id){
|
|
|
+function StartSendTask(id,budget_id){
|
|
|
ConfirmUrl('确定开始发送吗?',`/api/task/start_send/${id}`,`#table_${budget_id}`)
|
|
|
}
|
|
|
-function ReStartSend(id,budget_id){
|
|
|
+function ReStartSendTask(id,budget_id){
|
|
|
ConfirmUrl('确定重新开始发送吗?',`/api/task/start_send/${id}`,`#table_${budget_id}`)
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+function Add_Quota(budget_id) {
|
|
|
+ AddModal($modalQuota, () => {
|
|
|
+ $modalQuota.find('#quota_id').val('0');
|
|
|
+ SetBudgetData($modalQuota, budget_id)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function Edit_Quota(id) {
|
|
|
+ EditModal($modalQuota,()=>{
|
|
|
+ IwbAjax_1({
|
|
|
+ url:`/api/task/get/${id}`,
|
|
|
+ success:res=>{
|
|
|
+ if(!res.success){
|
|
|
+ console.error(res.message)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const data = res.data
|
|
|
+ // SetBudgetData(budget_id)
|
|
|
+ $modalQuota.find('#quota_id').val(data.id);
|
|
|
+ $modalQuota.find('[name="budget_id"]').val(data.budget_id);
|
|
|
+ $modalQuota.find('[name="project_id"]').val(data.project_id);
|
|
|
+ $modalQuota.find('[name="item_id"]').val(data.item_id);
|
|
|
+ $modalQuota.find('[name="item_code"]').val(data.item_code);
|
|
|
+ $modalQuota.find('[name="project_name"]').val(data.project_name);
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function SaveQuota(){
|
|
|
+ const quota_id = $modalQuota.find('#quota_id').val(),
|
|
|
+ budget_id = $modalQuota.find('[name="budget_id"]').val(),
|
|
|
+ project_id = $modalQuota.find('[name="project_id"]').val(),
|
|
|
+ item_id = $modalQuota.find('[name="item_id"]').val(),
|
|
|
+ item_code = $modalQuota.find('[name="item_code"]').val(),
|
|
|
+ project_name = $modalQuota.find('[name="project_name"]').val()
|
|
|
+ IwbAjax({
|
|
|
+ url:`/api/quota/save/${quota_id}`,
|
|
|
+ body:{
|
|
|
+ budget_id,
|
|
|
+ project_id,
|
|
|
+ item_id,
|
|
|
+ item_code,
|
|
|
+ project_name
|
|
|
+ },
|
|
|
+ modal:$modalQuota,
|
|
|
+ table:`#table_${budget_id}`
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+function Delete_Quota(id,budget_id){
|
|
|
+ ConfirmUrl('确定删除吗?',`/api/quota/delete/${id}`,`#table_${budget_id}`)
|
|
|
+}
|
|
|
+
|
|
|
+function StartProcessQuota(id,budget_id){
|
|
|
+ ConfirmUrl('确定开始处理吗?',`/api/quota/start_process/${id}`,`#table_${budget_id}`)
|
|
|
+}
|
|
|
+function ReStartProcessQuota(id,budget_id){
|
|
|
+ ConfirmUrl('确定重新开始处理吗?',`/api/quota/start_process/${id}`,`#table_${budget_id}`)
|
|
|
+}
|
|
|
+function StartSendQuota(id,budget_id){
|
|
|
+ ConfirmUrl('确定开始发送吗?',`/api/quota/start_send/${id}`,`#table_${budget_id}`)
|
|
|
+}
|
|
|
+function ReStartSendQuota(id,budget_id){
|
|
|
+ ConfirmUrl('确定重新开始发送吗?',`/api/quota/start_send/${id}`,`#table_${budget_id}`)
|
|
|
+}
|