sub_project_list.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. const files = new Set()
  2. function addSubProject() {
  3. const modal = document.querySelector('#modal-sub_project')
  4. const inputs = modal.querySelectorAll('.form-control')
  5. inputs.forEach((input) => {
  6. input.value = ''
  7. })
  8. modal.querySelector('#delete_old_data').checked = false
  9. modal.querySelector('#delete_old_data').parentNode.style.display = 'none'
  10. modal.querySelector('#sub_project_file').value = ''
  11. modal.querySelector('.file-list').innerHTML = ''
  12. files.clear()
  13. show_add_moadl(modal)
  14. }
  15. function updateSubProject(row, id) {
  16. const modal = document.querySelector('#modal-sub_project')
  17. modal.querySelector('#sub_id').value = id
  18. modal.querySelector('#sub_project_name').value = row.querySelector('.sub_project_name .form-control').value
  19. modal.querySelector('#work_catalog').value = row.querySelector('.work_catalog .form-control').value
  20. // modal.querySelector('#work_content').value = row.querySelector('.work_content .form-control').value
  21. modal.querySelector('#delete_old_data').checked = false
  22. modal.querySelector('#delete_old_data').parentNode.style.display = 'block'
  23. modal.querySelector('#sub_project_file').value = ''
  24. modal.querySelector('.file-list').innerHTML = ''
  25. files.clear()
  26. show_edit_moadl(modal)
  27. }
  28. function saveSubProject() {
  29. const id = document.getElementById('sub_id').value
  30. const project_id = document.getElementById('project_id').value
  31. const name = document.getElementById('sub_project_name').value
  32. const catalog = document.getElementById('work_catalog').value
  33. // const content = document.getElementById('work_content').value
  34. // const version = document.getElementById('new_standard_version').value
  35. const content = ''
  36. const version = '2'
  37. if (name === '') {
  38. alert('工程名称不能为空')
  39. return
  40. }
  41. if (files.length === 0 && !id) {
  42. alert('请选择工程数据文件')
  43. return
  44. }
  45. // if (catalog === '') {
  46. // alert('工作目录不能为空')
  47. // return
  48. // }
  49. // if (content === '') {
  50. // alert('工作内容不能为空')
  51. // return
  52. // }
  53. const formData = new FormData()
  54. formData.append('id', id)
  55. formData.append('project_id', project_id)
  56. formData.append('sub_project_name', name)
  57. files.forEach((file) => {
  58. formData.append('project_files', file)
  59. })
  60. formData.append('work_catalog', catalog)
  61. formData.append('work_content', content)
  62. formData.append('standard_version', version)
  63. if (document.getElementById('delete_old_data')) {
  64. formData.append('delete_old_data', document.getElementById('delete_old_data').checked)
  65. }
  66. fetch('/save_sub_project', {
  67. method: 'POST',
  68. body: formData,
  69. })
  70. .then((response) => response.json())
  71. .then((data) => {
  72. if (data.success) {
  73. alert('保存成功')
  74. window.location.reload()
  75. } else {
  76. alert('保存失败:' + data.error)
  77. }
  78. })
  79. .catch((error) => {
  80. console.error('保存失败:', error)
  81. alert('保存失败')
  82. })
  83. }
  84. function startSubProjectTask(id) {
  85. _confirm('确定要开始任务吗?', `/start_sub_project_task/${id}`)
  86. }
  87. function reStartSubProjectTask(id) {
  88. _confirm('确定要重新采集Excel的数据吗?', `/start_sub_project_task/${id}`)
  89. }
  90. function reStartProcessSubProjectTask(id) {
  91. _confirm('确定要重新处理数据吗?', `/start_process_sub_project/${id}`)
  92. }
  93. function reStartSendSubProjectTask(id) {
  94. _confirm('确定要开始上传数据吗?', `/start_send_sub_project/${id}`)
  95. }
  96. function deleteSubProject(id) {
  97. if (confirm('确定要删除该工程吗?')) {
  98. fetch(`/delete_sub_project/${id}`, {
  99. method: 'POST',
  100. headers: {
  101. 'Content-Type': 'application/json',
  102. },
  103. })
  104. .then((response) => response.json())
  105. .then((data) => {
  106. if (data.success) {
  107. alert('删除成功')
  108. window.location.reload()
  109. } else {
  110. alert('删除失败:' + data.error)
  111. }
  112. })
  113. .catch((error) => {
  114. console.error('删除失败:', error)
  115. alert('删除失败')
  116. })
  117. }
  118. }
  119. function handleDragOver(e) {
  120. e.preventDefault()
  121. e.stopPropagation()
  122. const modal = document.querySelector('#modal-sub_project')
  123. modal.querySelector('.drag-drop-box').classList.add('dragover')
  124. }
  125. function handleDragLeave(e) {
  126. e.preventDefault()
  127. e.stopPropagation()
  128. const modal = document.querySelector('#modal-sub_project')
  129. modal.querySelector('.drag-drop-box').classList.remove('dragover')
  130. }
  131. function handleDrop(e) {
  132. e.preventDefault()
  133. e.stopPropagation()
  134. const modal = document.querySelector('#modal-sub_project')
  135. modal.querySelector('.drag-drop-box').classList.remove('dragover')
  136. const files = e.dataTransfer.files
  137. handleFiles(files)
  138. }
  139. function handleFileSelect(e) {
  140. const files = e.target.files
  141. handleFiles(files)
  142. }
  143. function handleFiles(newFiles) {
  144. const fileList = document.getElementById('fileList')
  145. const existingFiles = new Set()
  146. fileList.querySelectorAll('.file-item span:first-child').forEach((item) => {
  147. existingFiles.add(item.textContent)
  148. })
  149. Array.from(newFiles).forEach((file) => {
  150. if (existingFiles.has(file.name)) {
  151. alert('文件' + file.name + '已存在,请勿重复添加!')
  152. return
  153. }
  154. existingFiles.add(file.name)
  155. fileList.appendChild(createFileItem(file))
  156. files.add(file)
  157. })
  158. document.getElementById('sub_project_file').value = ''
  159. }
  160. function createFileItem(file) {
  161. const item = document.createElement('div')
  162. item.className = 'file-item'
  163. item.innerHTML = `
  164. <span>${file.name}</span>
  165. <span class="del" onclick="removeFileItem(this)">×</span>
  166. `
  167. return item
  168. }
  169. function removeFileItem(element) {
  170. const fileItem = element.closest('.file-item')
  171. fileItem.remove()
  172. // 清除文件输入框的值
  173. document.getElementById('sub_project_file').value = ''
  174. }
  175. document.addEventListener('DOMContentLoaded', function () {
  176. document.getElementById('dragDropArea').addEventListener('click', function () {
  177. document.getElementById('sub_project_file').click()
  178. })
  179. })