gongdanshengchan.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <div>
  3. <el-container>
  4. <!-- 左侧树形结构 -->
  5. <el-aside width="340px">
  6. <div class="JKWTree-tree">
  7. <h3> 组织列表</h3>
  8. <el-tree :data="sctreeData" :props="defaultProps" @node-click="schandleNodeClick"></el-tree>
  9. <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  10. </div>
  11. </el-aside>
  12. <el-container>
  13. <el-main>
  14. <!-- 搜索框 -->
  15. <div class="gva-search-box">
  16. <el-form ref="elSearchFormRef" :inline="true" class="demo-form-inline" >
  17. <!-- 左侧查询输入框 -->
  18. <el-form-item>
  19. <el-input placeholder="" clearable style="width: 300px;"></el-input>
  20. </el-form-item>
  21. <!-- 查询和重置按钮 -->
  22. <el-form-item>
  23. <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
  24. <el-button icon="refresh" @click="onReset">重置</el-button>
  25. </el-form-item>
  26. </el-form>
  27. </div>
  28. <div class="gva-table-box">
  29. <div class="gva-btn-list">
  30. <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
  31. </div>
  32. <!-- 表格部分 -->
  33. <el-table ref="multipleTable"
  34. style="width: 100%;height: 400px;"
  35. :data="tableData" border tooltip-effect="dark"
  36. row-key="ID"
  37. @selection-change="handleSelectionChange"
  38. :show-summary="true"
  39. >
  40. <!-- 动态绑定 el-table-column 列 -->
  41. <el-table-column
  42. v-for="column in dynamicColumns"
  43. :key="column.prop"
  44. :label="column.label"
  45. :prop="column.prop"
  46. :width="column.width"
  47. :align="column.align"
  48. >
  49. <!-- 可以根据需要添加模板内容 -->
  50. </el-table-column>
  51. <!-- 合计行 -->
  52. <el-table-column
  53. label="合计"
  54. align="center"
  55. :formatter="formatTotal"
  56. ></el-table-column>
  57. <!-- 操作列 -->
  58. <el-table-column align="left" label="操作" min-width="100" fixed="right">
  59. <template #default="scope">
  60. <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
  61. </template>
  62. </el-table-column>
  63. </el-table>
  64. </div>
  65. </el-main>
  66. </el-container>
  67. </el-container>
  68. </div>
  69. </template>
  70. <script>
  71. import {ref, computed, onMounted, reactive} from 'vue';
  72. import { workbench, getProduct, Project } from "@/api/yunyin/yunying";
  73. export default {
  74. setup() {
  75. const totalRow = reactive({
  76. '产品名称': 0,
  77. });
  78. const calculateTotal = () => {
  79. totalRow.产品名称 = 0;
  80. tableData.value.forEach((item) => {
  81. totalRow.产品名称 += item.产品名称数量 || 0;
  82. });
  83. };
  84. const formatTotal = ({ row, column, rowIndex, columnIndex }) => {
  85. if (columnIndex === dynamicColumns.value.length - 1 && column.property === '产品名称数量') {
  86. return `产品名称:${totalRow.产品名称}个`;
  87. }
  88. return '';
  89. };
  90. const sctreeData = ref([
  91. {
  92. label: '设备定额及分配参数设置',
  93. children:[
  94. { label: '1.计划中工单', number: 1 },
  95. { label: '2.排程中工单', number: 2 },
  96. { label: '3.制程中工单', number: 3 },
  97. { label: '4.已完工工单', number: 4 }
  98. ],
  99. }
  100. ]);
  101. const treeData = ref([]); // 添加 treeData 的定义
  102. const tableData = ref([]);
  103. const currentNumber = ref(0);
  104. const dynamicColumns = computed(() => {
  105. switch (currentNumber.value) {
  106. case 1:
  107. return [
  108. { label: '生产分类', prop: '生产分类', width: 120, align: 'left' },
  109. { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
  110. { label: '产品代号', prop: '产品代号', width: 120, align: 'left' },
  111. { label: '产品名称', prop: '产品名称', width: 200, align: 'left' },
  112. { label: '接单日期', prop: '接单日期', width: 160, align: 'left' },
  113. { label: '交货日期', prop: '交货日期', width: 160, align: 'left' },
  114. { label: '订单数量', prop: '订单数量', width: 120, align: 'left' },
  115. { label: '计量单位', prop: '计量单位', width: 120, align: 'left' },
  116. { label: '客户名称', prop: '客户名称', width: 200, align: 'left' },
  117. { label: '客户编号', prop: '客户编号', width: 120, align: 'left' },
  118. { label: '备注', prop: '备注', width: 120, align: 'left' },
  119. { label: '客户料号', prop: '客户料号', width: 120, align: 'left' },
  120. { label: '创建用户', prop: '创建用户', width: 160, align: 'left' },
  121. { label: '创建时间', prop: '创建时间', width: 160, align: 'left' },
  122. { label: '修改时间', prop: '修改时间', width: 160, align: 'left' },
  123. { label: 'UNIQID', prop: 'UNIQID', width: 120, align: 'left' },
  124. { label: '投料率', prop: '投料率', width: 120, align: 'left' },
  125. { label: '销售订单号', prop: '销售订单号', width: 120, align: 'left' },
  126. ];
  127. case 2:
  128. return [
  129. { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
  130. ];
  131. case 3:
  132. return [
  133. { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
  134. ];
  135. case 4:
  136. return [
  137. { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
  138. ];
  139. default:
  140. return [];
  141. }
  142. });
  143. const schandleNodeClick = async (node) => {
  144. currentNumber.value = node.number;
  145. switch (node.number) {
  146. case 1:
  147. const Projectdata = await Project();
  148. tableData.value = Projectdata.data;
  149. break;
  150. case 2:
  151. break;
  152. case 3:
  153. break;
  154. case 4:
  155. break;
  156. default:
  157. break;
  158. }
  159. };
  160. const handleSelectionChange = () => {
  161. // 处理表格选中变化的逻辑
  162. };
  163. const updateCompanyFunc = (row) => {
  164. // 处理表格行的编辑操作逻辑
  165. };
  166. const workbenchdata = async () => {
  167. try {
  168. const data = await workbench();
  169. const rawData = data.data;
  170. const dataArray = Object.keys(rawData).map((key) => ({
  171. label: key,
  172. children: Object.keys(rawData[key]).map((subKey) => ({
  173. label: subKey,
  174. children: rawData[key][subKey].map((item) => ({
  175. label: item,
  176. })),
  177. })),
  178. }));
  179. treeData.value = dataArray;
  180. } catch (error) {
  181. console.error(error);
  182. }
  183. };
  184. // 获取左侧树形结构数据
  185. onMounted(() => {
  186. workbenchdata();
  187. });
  188. // 处理左侧树形结构节点点击事件
  189. const handleNodeClick = async (node) => {
  190. const custom_code = node.label; // 假设你想使用节点的 label 作为 custom_code
  191. console.log(custom_code);
  192. };
  193. return {
  194. sctreeData,
  195. treeData,
  196. totalRow,
  197. formatTotal,
  198. tableData,
  199. dynamicColumns,
  200. schandleNodeClick,
  201. handleSelectionChange,
  202. updateCompanyFunc,
  203. handleNodeClick,
  204. };
  205. },
  206. };
  207. </script>