index.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <template>
  2. <div>
  3. <DarkLayout :query-form="queryForm">
  4. <!-- 查询表单插槽 -->
  5. <template #query-form>
  6. <el-form-item label="任务名称">
  7. <el-input
  8. v-model="queryForm.taskName"
  9. placeholder="请输入任务名称"
  10. clearable
  11. />
  12. </el-form-item>
  13. <el-form-item label="任务代号">
  14. <el-input
  15. v-model="queryForm.taskCode"
  16. placeholder="请输入任务代号"
  17. clearable
  18. />
  19. </el-form-item>
  20. </template>
  21. <!-- Header右侧操作按钮 -->
  22. <template #header-actions>
  23. <el-button type="primary" @click="handleQuery">查询</el-button>
  24. <el-button class="blue-btn" @click="resetQuery">重置</el-button>
  25. <el-button class="blue-btn" @click="handleAdd">新增</el-button>
  26. </template>
  27. <!-- 主要内容 -->
  28. <template #main>
  29. <OverallCard
  30. v-if="plans.length > 0"
  31. v-for="plan in plans"
  32. :key="plan.id"
  33. :plan="plan"
  34. @view-detail="handleViewDetail"
  35. @export-plan="handleExportPlan"
  36. />
  37. <el-empty v-else description="暂无方案数据" />
  38. </template>
  39. <!-- 底部右侧分页 -->
  40. <template #footer-actions>
  41. <el-pagination
  42. @size-change="handleSizeChange"
  43. @current-change="handleCurrentChange"
  44. :current-page="pagination.currentPage"
  45. :page-sizes="[10, 20, 50, 100]"
  46. :page-size="pagination.pageSize"
  47. layout="total, sizes, prev, pager, next, jumper"
  48. :total="pagination.total"
  49. />
  50. </template>
  51. </DarkLayout>
  52. <!-- 任务详情弹窗 -->
  53. <DarkDialog title="任务详情"
  54. :visible.sync="dialogVisible"
  55. width="50%"
  56. :before-close="handleClose">
  57. <el-descriptions :column="2" border>
  58. <el-descriptions-item label="方案名称">{{ currentPlan.planName }}</el-descriptions-item>
  59. <el-descriptions-item label="任务名称">{{ currentPlan.taskName }}</el-descriptions-item>
  60. <el-descriptions-item label="任务代号">{{ currentPlan.taskCode }}</el-descriptions-item>
  61. <el-descriptions-item label="开始时间">{{ currentPlan.startTime }}</el-descriptions-item>
  62. <el-descriptions-item label="结束时间">{{ currentPlan.endTime }}</el-descriptions-item>
  63. <el-descriptions-item label="编制状态">{{ currentPlan.compileStatus }}</el-descriptions-item>
  64. <el-descriptions-item label="状态">{{ currentPlan.status }}</el-descriptions-item>
  65. </el-descriptions>
  66. <span slot="footer" class="dialog-footer">
  67. <el-button @click="dialogVisible = false">关闭</el-button>
  68. </span>
  69. </DarkDialog>
  70. </div>
  71. </template>
  72. <script>
  73. import DarkLayout from '@/components/GlobalComponents/DarkLayout.vue'
  74. import InterferenceCard from '@/components/Components/InterferenceCard.vue'
  75. import DarkDialog from "@/components/Components/DarkDialog.vue";
  76. import {planningSchemePage} from "@/api/planningScheme";
  77. import {exportSolutionToWord} from "@/views/planningSchem/comprehensive/wordExporter";
  78. export default {
  79. components: {
  80. DarkDialog,
  81. DarkLayout,
  82. InterferenceCard
  83. },
  84. data() {
  85. return {
  86. tableData: [
  87. {
  88. date: '2023-06-01',
  89. name: '张三',
  90. address: '北京市海淀区'
  91. },
  92. {
  93. date: '2023-06-02',
  94. name: '李四',
  95. address: '上海市浦东新区'
  96. }
  97. ],
  98. dialogVisible: false,
  99. currentPlan: {}, // 当前选中的任务数据
  100. queryForm: {
  101. taskName: '',
  102. taskCode: ''
  103. },
  104. plans: [
  105. {
  106. id: '1',
  107. planName: '新型导弹打击试验',
  108. taskName: '新型导弹打击试验',
  109. taskCode: 'TASK-2023-001',
  110. startTime: '2023-01-01',
  111. endTime: '2023-12-31',
  112. status: '有效',
  113. interferenceSchemeStatus: '已编制',
  114. measurementSchemeStatus: '已编制',
  115. targetSchemeStatus: '已编制',
  116. version: 'V1.0.0'
  117. },
  118. {
  119. id: '2',
  120. planName: '电子对抗演练',
  121. taskName: '电子对抗演练',
  122. taskCode: 'TASK-2023-002',
  123. startTime: '2023-02-01',
  124. endTime: '2023-11-30',
  125. status: '待审核',
  126. interferenceSchemeStatus: '已编制',
  127. measurementSchemeStatus: '已编制',
  128. targetSchemeStatus: '编制中',
  129. version: 'V1.1.0'
  130. },
  131. {
  132. id: '3',
  133. planName: '电子对抗演练',
  134. taskName: '电子对抗演练',
  135. taskCode: 'TASK-2023-003',
  136. startTime: '2023-03-01',
  137. endTime: '2023-10-31',
  138. status: '草稿',
  139. interferenceSchemeStatus: '未编制',
  140. measurementSchemeStatus: '已编制',
  141. targetSchemeStatus: '未编制',
  142. version: 'V0.9.0'
  143. },
  144. {
  145. id: '3',
  146. planName: '新型导弹打击试验',
  147. taskName: '新型导弹打击试验',
  148. taskCode: 'TASK-2023-003',
  149. startTime: '2023-03-01',
  150. endTime: '2023-10-31',
  151. status: '草稿',
  152. interferenceSchemeStatus: '未编制',
  153. measurementSchemeStatus: '已编制',
  154. targetSchemeStatus: '未编制',
  155. version: 'V0.9.0'
  156. },
  157. {
  158. id: '1',
  159. planName: '电子对抗演练',
  160. taskName: '电子对抗演练',
  161. taskCode: 'TASK-2023-001',
  162. startTime: '2023-01-01',
  163. endTime: '2023-12-31',
  164. status: '有效',
  165. interferenceSchemeStatus: '已编制',
  166. measurementSchemeStatus: '已编制',
  167. targetSchemeStatus: '已编制',
  168. version: 'V1.0.0'
  169. },
  170. ],
  171. pagination: {
  172. currentPage: 1,
  173. pageSize: 10,
  174. total: 0
  175. },
  176. showAdvancedSearch: false
  177. }
  178. },
  179. mounted() {
  180. this.handleQuery();
  181. },
  182. methods: {
  183. handleClose(done) {
  184. // 可以在这里添加关闭前的确认逻辑
  185. done()
  186. },
  187. handleViewDetail(plan) {
  188. this.$router.push({ path: '/planningSchem/overallPlanDesign',query:{batchId:plan.batchId} })
  189. },
  190. //导出
  191. async handleExportPlan(plan) {
  192. try {
  193. await exportSolutionToWord(plan.batchId);
  194. this.$message.success('导出Word成功');
  195. } catch (error) {
  196. this.$message.error(error.message || '导出Word失败');
  197. }
  198. // this.$message.success("导出成功!")
  199. },
  200. async handleQuery() {
  201. // 查询逻辑
  202. const res = await planningSchemePage({
  203. ...this.queryForm,
  204. pageNo:this.pagination.currentPage,
  205. pageSize:this.pagination.pageSize,
  206. })
  207. this.plans = res.data.records
  208. this.pagination.total = res.data.total
  209. },
  210. resetQuery() {
  211. this.queryForm = {
  212. taskName: '',
  213. taskCode: ''
  214. }
  215. this.handleQuery()
  216. },
  217. handleAdd() {
  218. this.$router.push({ path: '/home/planCreate' })
  219. },
  220. handleSizeChange(val) {
  221. this.pagination.pageSize = val
  222. this.fetchData()
  223. },
  224. handleCurrentChange(val) {
  225. this.pagination.currentPage = val
  226. this.fetchData()
  227. },
  228. fetchData() {
  229. // 获取数据逻辑
  230. }
  231. }
  232. }
  233. </script>
  234. <style scoped>
  235. </style>