Browse Source

Merge branch 'master' of https://git.7in6.com/Minong/mes-admin-backend-ui

Lexie 1 year ago
parent
commit
9d23168b23

+ 8 - 0
src/api/yunyin/yunying.js

@@ -16,6 +16,14 @@ export const getStaffList = (params) => {
         params
     })
 }
+//3.修改员工资料
+export const ygjbzledit = (params) => {
+    return service({
+        url: '/mes_server/staff/edit',
+        method: 'post',
+        params
+    })
+}
 
 /** 产品管理 */
 //1.获取客户信息

+ 22 - 22
src/view/job/job/job.vue

@@ -40,7 +40,7 @@
             </el-form>
           </div>
           <div class="gva-table-box">
-            <div class="gva-btn-list">
+            <!-- <div class="gva-btn-list">
               <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
               <el-popover v-model:visible="deleteVisible" :disabled="!multipleSelection.length" placement="top" width="160">
                 <p>确定要删除吗?</p>
@@ -52,7 +52,7 @@
                   <el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="deleteVisible = true">删除</el-button>
                 </template>
               </el-popover>
-            </div>
+            </div> -->
             <el-table
                 ref="multipleTable"
                 style="width: 100%"
@@ -61,36 +61,36 @@
                 row-key="ID"
                 @selection-change="handleSelectionChange"
             >
-              <el-table-column type="selection" width="55" />
-              <el-table-column align="left" label="设备编号" prop="设备编号" width="120" />
+              <!-- <el-table-column type="selection" width="55" /> -->
+              <el-table-column align="left" label="设备编号" prop="设备编号" width="80" />
               <el-table-column align="left" label="设备名称" prop="设备名称" width="120" />
-              <el-table-column align="left" label="生产工序" prop="生产工序" width="120" />
-              <el-table-column align="left" label="日定额" prop="日定额" width="120" />
-              <el-table-column align="left" label="千件工价" prop="千件工价" width="120" />
-              <el-table-column align="left" label="机长" prop="机长" width="120" />
-              <el-table-column align="left" label="副机" prop="副机" width="120" />
-              <el-table-column align="left" label="调墨" prop="调墨" width="120" />
-              <el-table-column align="left" label="二手" prop="二手" width="120" />
-              <el-table-column align="left" label="飞达" prop="飞达" width="120" />
-              <el-table-column align="left" label="辅助" prop="辅助" width="120" />
-              <el-table-column align="left" label="放卷" prop="放卷" width="120" />
-              <el-table-column align="left" label="分切1" prop="分切1" width="120" />
-              <el-table-column align="left" label="分切2" prop="分切2" width="120" />
-              <el-table-column align="left" label="检验" prop="检验" width="120" />
-              <el-table-column align="left" label="使用部门" prop="使用部门" width="120" />
+              <el-table-column align="left" label="生产工序" prop="生产工序" width="80" />
+              <el-table-column align="left" label="日定额" prop="日定额" width="100" />
+              <el-table-column align="left" label="千件工价" prop="千件工价" width="80" />
+              <el-table-column align="left" label="机长" prop="机长" width="100" />
+              <el-table-column align="left" label="副机" prop="副机" width="100" />
+              <el-table-column align="left" label="调墨" prop="调墨" width="100" />
+              <el-table-column align="left" label="二手" prop="二手" width="100" />
+              <el-table-column align="left" label="飞达" prop="飞达" width="100" />
+              <el-table-column align="left" label="辅助" prop="辅助" width="100" />
+              <el-table-column align="left" label="放卷" prop="放卷" width="100" />
+              <el-table-column align="left" label="分切1" prop="分切1" width="100" />
+              <el-table-column align="left" label="分切2" prop="分切2" width="100" />
+              <el-table-column align="left" label="检验" prop="检验" width="100" />
+              <el-table-column align="left" label="使用部门" prop="使用部门" width="100" />
               <el-table-column align="left" label="设备编组" prop="sys_id" width="120" />
               <el-table-column align="left" label="创建用户" prop="sys_id" width="120" />
               <el-table-column align="left" label="创建时间" prop="mod_rq" width="120" />
               <el-table-column align="left" label="修改时间" prop="sys_rq" width="120" />
-              <el-table-column align="left" label="UNIQID" prop="UniqId" width="120" />
-              <el-table-column align="center" fixed="right" label="操作"  min-width="250">
+              <el-table-column align="left" label="UNIQID" prop="UniqId" width="75" />
+              <el-table-column align="center" fixed="right" label="操作"  min-width="100">
                 <template #default="scope">
                   <el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
                     <el-icon style="margin-right: 5px"><InfoFilled /></el-icon>
                     查看详情
                   </el-button>
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                  <el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
+                  <!-- <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
+                  <el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button> -->
                 </template>
               </el-table-column>
             </el-table>

+ 22 - 8
src/view/job/piece/piece.vue

@@ -9,7 +9,7 @@
       </el-aside>
       <el-container>
         <el-main>
-          <div class="gva-search-box">
+          <!-- <div class="gva-search-box">
             <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
               <el-form-item label="创建日期" prop="createdAt">
                 <template #label>
@@ -29,8 +29,8 @@
                 <el-button icon="refresh" @click="onReset">重置</el-button>
               </el-form-item>
             </el-form>
-          </div>
-          <div class="gva-table-box">
+          </div> -->
+          <!-- <div class="gva-table-box">
             <div class="gva-btn-list">
 			  <el-button type="primary" icon="upload" @click="">导出到excel</el-button>
 			  <el-button type="primary" icon="plus" @click="getDetails(2)">详情</el-button>
@@ -77,7 +77,7 @@
                   @size-change="handleSizeChange"
               />
             </div>
-          </div>
+          </div> -->
           <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
             <el-scrollbar height="500px">
               <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="80px">
@@ -100,7 +100,7 @@
             </template>
           </el-dialog>
 
-          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="当前编码:" destroy-on-close>
+          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" :title="`当前编码:${pieceData.sys_bh}`" destroy-on-close>
             <el-scrollbar height="550px">
               <el-descriptions column="1" border>
                 <el-descriptions-item label="编号">
@@ -206,7 +206,7 @@ const PieceWork = async() => {
 				children: sysItem.children.map(syssItem => ({
 				  label: `${syssItem.sys_mc}【${syssItem.sys_bh}】`,
 				  params: {
-				    code: sysItem.sys_bh,
+				    code: syssItem.sys_bh,
 				  },
 				}))
 	          })),
@@ -221,7 +221,7 @@ const PieceWork = async() => {
 						children: sysItem.children.map(syssItem => ({
 						  label: `${syssItem.sys_mc}【${syssItem.sys_bh}】`,
 						  params: {
-						    code: sysItem.sys_bh,
+						    code: syssItem.sys_bh,
 						  },
 						}))
 		        })),
@@ -242,10 +242,24 @@ const PieceWork = async() => {
 PieceWork()
 const handleNodeClick = (node,check) => {
   //存放当前节点的nodeId
-  if (node.params) {
+  // if (node.paramss) {
+  // 		sys_bh.value = node.paramss.code;
+  // 		getDetails();
+		// return false;
+  // 	}
+  // if (node.params) {
+  // 		sys_bh.value = node.params.code;
+  // 		getDetails();
+  // 	}
+  if(node.children==null){
+  	sys_bh.value = node.params.code;
+  	getDetails();
+  }else{
+  	if(node.children.length==0){
   		sys_bh.value = node.params.code;
   		getDetails();
   	}
+  }
   console.log(node,check);
 }
 // 自动化生成的字典(可能为空)以及字段

+ 28 - 9
src/view/job/process/process.vue

@@ -100,7 +100,7 @@
             </template>
           </el-dialog>
 
-          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="当前编码:" destroy-on-close>
+          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" :title="`当前编码:${processData.sys_bh}`" destroy-on-close>
             <el-scrollbar height="550px">
               <el-descriptions column="1" border>
                 <el-descriptions-item label="编号">
@@ -188,7 +188,7 @@ const Process = async() => {
 	  				children: sysItem.children.map(syssItem => ({
 	  				  label: syssItem.sys_mc,
 	  				  params: {
-	  				    code: sysItem.sys_bh,
+	  				    code: syssItem.sys_bh,
 	  				  },
 					  children: syssItem.childrens.map(syssItems => ({
 					    label: syssItems.sys_mc,
@@ -206,16 +206,35 @@ const Process = async() => {
   }
 }
 Process()
-const handleNodeClick = (node,check) => {
-  //存放当前节点的nodeId
- //  if (node.child==[]) {
-	// 	sys_bh.value = node.sys_bh;
-	// 	getDetails();
-	// }
-	if (node.params) {
+const handleNodeClick = async(node,check) => {
+	if(node.children==null){
+		sys_bh.value = node.params.code;
+		getDetails();
+	}else{
+		if(node.children.length==0){
 			sys_bh.value = node.params.code;
 			getDetails();
 		}
+	}
+  //存放当前节点的nodeId
+ //  if (node.children) {
+	// 	sys_bh.value = node.params.code;
+	// 	getDetails();
+	// }
+	// if (node.paramsss) {
+	// 		sys_bh.value = node.paramsss.code;
+	// 		getDetails();
+	// 		// return false;
+	// 	}
+	// if (node.paramss) {
+	// 		sys_bh.value = node.paramss.code;
+	// 		getDetails();
+	// 		return false;
+	// 	}
+	// if (node.params) {
+	// 		sys_bh.value = node.params.code;
+	// 		getDetails();
+	// 	}
      console.log(node,check);
 }
 // 自动化生成的字典(可能为空)以及字段

+ 605 - 0
src/view/job/related/related.vue

@@ -0,0 +1,605 @@
+<template>
+  <div>
+
+    <el-container>
+      <el-aside width="200px">
+        <div class="JKWTree-tree">
+
+          <h3  > 关联工资核算</h3>
+          <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
+        </div>
+
+      </el-aside>
+      <el-container>
+<!--        <el-header>dd</el-header>-->
+        <el-main>
+
+          <div class="gva-search-box">
+            <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
+              <!-- <el-form-item label="创建日期" prop="createdAt">
+                <template #label>
+        <span>
+          创建日期
+          <el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
+            <el-icon><QuestionFilled /></el-icon>
+          </el-tooltip>
+        </span>
+                </template>
+                <el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期" :disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
+                —
+                <el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期" :disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
+              </el-form-item> -->
+			  <el-form-item>
+			    <el-input v-model="searchInfo.search" :clearable="true"  placeholder="输入工单编号或产品名称"/>
+				<div>{{searchInfo.search}}</div>
+			  </el-form-item>
+              <el-form-item>
+                <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
+                <el-button icon="refresh" @click="onReset">重置</el-button>
+              </el-form-item>
+            </el-form>
+			<div class="gva-table-box">
+			  <!-- <div class="gva-btn-list">
+			    <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
+			    <el-popover v-model:visible="deleteVisible" :disabled="!multipleSelection.length" placement="top" width="160">
+			      <p>确定要删除吗?</p>
+			      <div style="text-align: right; margin-top: 8px;">
+			        <el-button type="primary" link @click="deleteVisible = false">取消</el-button>
+			        <el-button type="primary" @click="onDelete">确定</el-button>
+			      </div>
+			      <template #reference>
+			        <el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="deleteVisible = true">删除</el-button>
+			      </template>
+			    </el-popover>
+			  </div> -->
+			  <el-table
+			      ref="multipleTable"
+			      style="width: 100%"
+			      tooltip-effect="dark"
+			      :data="tableData"
+			      row-key="ID"
+			      @selection-change="handleSelectionChange"
+			  >
+			    <!-- <el-table-column type="selection" width="55" /> -->
+			    <el-table-column align="left" label="员工编号" prop="设备编号" width="80" />
+			    <el-table-column align="left" label="员工姓名" prop="设备名称" width="120" />
+			    <el-table-column align="left" label="昵称职务" prop="生产工序" width="80" />
+			    <el-table-column align="left" label="所在部门" prop="日定额" width="100" />
+			    <el-table-column align="left" label="日期" prop="千件工价" width="80" />
+			    <el-table-column align="left" label="关联系数" prop="机长" width="100" />
+			    <el-table-column align="left" label="关联人数" prop="副机" width="100" />
+			    <el-table-column align="left" label="关联计件工资" prop="调墨" width="100" />
+			    <el-table-column align="left" label="关联加班工资" prop="二手" width="100" />
+			    <el-table-column align="left" label="关联定额补差" prop="飞达" width="100" />
+			    <el-table-column align="left" label="关联计时工资" prop="辅助" width="100" />
+			    <el-table-column align="left" label="关联工资合计" prop="放卷" width="100">
+			<!--    <el-table-column align="left" label="分切1" prop="分切1" width="100" />
+			    <el-table-column align="left" label="分切2" prop="分切2" width="100" />
+			    <el-table-column align="left" label="检验" prop="检验" width="100" />
+			    <el-table-column align="left" label="使用部门" prop="使用部门" width="100" />
+			    <el-table-column align="left" label="设备编组" prop="sys_id" width="120" />
+			    <el-table-column align="left" label="创建用户" prop="sys_id" width="120" />
+			    <el-table-column align="left" label="创建时间" prop="mod_rq" width="120" />
+			    <el-table-column align="left" label="修改时间" prop="sys_rq" width="120" />
+			    <el-table-column align="left" label="UNIQID" prop="UniqId" width="75" /> -->
+			    <!-- <el-table-column align="center" fixed="right" label="操作"  min-width="100">
+			      <template #default="scope">
+			        <el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
+			          <el-icon style="margin-right: 5px"><InfoFilled /></el-icon>
+			          查看详情
+			        </el-button>
+			        <!-- <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
+			        <el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button> -->
+			     <!-- </template> -->
+			    </el-table-column>
+			  </el-table>
+			  <div class="gva-pagination">
+			    <el-pagination
+			        layout="total, sizes, prev, pager, next, jumper"
+			        :current-page="page"
+			        :page-size="pageSize"
+			        :page-sizes="[10, 30, 50, 100]"
+			        :total="total"
+			        @current-change="handleCurrentChange"
+			        @size-change="handleSizeChange"
+			    />
+			  </div>
+			</div>
+          </div>
+          <div class="gva-table-box">
+            <!-- <div class="gva-btn-list">
+              <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
+              <el-popover v-model:visible="deleteVisible" :disabled="!multipleSelection.length" placement="top" width="160">
+                <p>确定要删除吗?</p>
+                <div style="text-align: right; margin-top: 8px;">
+                  <el-button type="primary" link @click="deleteVisible = false">取消</el-button>
+                  <el-button type="primary" @click="onDelete">确定</el-button>
+                </div>
+                <template #reference>
+                  <el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="deleteVisible = true">删除</el-button>
+                </template>
+              </el-popover>
+            </div> -->
+            <el-table
+                ref="multipleTable"
+                style="width: 100%"
+                tooltip-effect="dark"
+                :data="tableData"
+                row-key="ID"
+                @selection-change="handleSelectionChange"
+            >
+              <!-- <el-table-column type="selection" width="55" /> -->
+              <el-table-column align="left" label="日期" prop="日期" width="80" />
+              <el-table-column align="left" label="员工编号" prop="设备名称" width="120" />
+              <el-table-column align="left" label="员工姓名" prop="生产工序" width="80" />
+              <el-table-column align="left" label="职称职务" prop="日定额" width="100" />
+              <el-table-column align="left" label="所在部门" prop="千件工价" width="80" />
+              <el-table-column align="left" label="被关联员工" prop="机长" width="100" />
+              <el-table-column align="left" label="被关联姓名" prop="副机" width="100" />
+              <el-table-column align="left" label="权重" prop="调墨" width="100" />
+              <el-table-column align="left" label="计件工资" prop="二手" width="100" />
+              <el-table-column align="left" label="加班工资" prop="飞达" width="100" />
+              <el-table-column align="left" label="定额补差" prop="辅助" width="100" />
+              <el-table-column align="left" label="计时工资" prop="放卷" width="100" >
+            <!--  <el-table-column align="left" label="分切1" prop="分切1" width="100" />
+              <el-table-column align="left" label="分切2" prop="分切2" width="100" />
+              <el-table-column align="left" label="检验" prop="检验" width="100" />
+              <el-table-column align="left" label="使用部门" prop="使用部门" width="100" />
+              <el-table-column align="left" label="设备编组" prop="sys_id" width="120" />
+              <el-table-column align="left" label="创建用户" prop="sys_id" width="120" />
+              <el-table-column align="left" label="创建时间" prop="mod_rq" width="120" />
+              <el-table-column align="left" label="修改时间" prop="sys_rq" width="120" />
+              <el-table-column align="left" label="UNIQID" prop="UniqId" width="75" />
+              <el-table-column align="center" fixed="right" label="操作"  min-width="100"> -->
+                <!-- <template #default="scope">
+                  <el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
+                    <el-icon style="margin-right: 5px"><InfoFilled /></el-icon>
+                    查看详情
+                  </el-button>
+                  <!-- <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
+                  <el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button> -->
+                <!-- </template> --> -->
+              </el-table-column>
+            </el-table>
+            <div class="gva-pagination">
+              <el-pagination
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :current-page="page"
+                  :page-size="pageSize"
+                  :page-sizes="[10, 30, 50, 100]"
+                  :total="total"
+                  @current-change="handleCurrentChange"
+                  @size-change="handleSizeChange"
+              />
+            </div>
+          </div>
+          <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
+            <el-scrollbar height="340px">
+              <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+                <el-form-item label="员工编号:"  prop="address" >
+                  <el-input v-model="formData.address" :clearable="true"  placeholder="请输入员工编号" />
+                </el-form-item>
+                <el-form-item prop="image" >
+                  <el-input v-model="formData.image" :clearable="true"  placeholder="请输入员工姓名" />
+                </el-form-item>
+              </el-form>
+			  <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+			    <el-form-item label="班组:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入班组" />
+			    </el-form-item>
+			    <el-form-item label="日期:" prop="image" >
+			      <el-input v-model="formData.image" :clearable="true"  placeholder="请输入日期" />
+			    </el-form-item>
+			  </el-form>
+			  <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+			    <el-form-item label="工单编号:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入工单编号" />
+			    </el-form-item>
+			    <el-form-item prop="image" >
+			      <el-input v-model="formData.image" :clearable="true"  placeholder="请输入产品名称" />
+			    </el-form-item>
+			  </el-form>
+			  <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+			    <el-form-item label="工序名称:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入工序名称" style="width: 140px;" />
+			    </el-form-item>
+			    <el-form-item prop="image" >
+			      <el-input v-model="formData.image" :clearable="true"  placeholder="请输入工序号" style="width: 140px;" />
+			    </el-form-item>
+			  	<el-form-item label="流程单号:"  prop="address" >
+			  	  <el-input v-model="formData.address" :clearable="true"  placeholder="请输入流程单号" style="width: 140px;" />
+			  	</el-form-item>			
+			  </el-form>
+			  <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+			    <el-form-item label="抽检数量:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入抽检数量" style="width: 123px;" />
+			    </el-form-item>			
+			  </el-form>
+			  <el-form :model="formData" :inline="true" label-position="right" ref="elFormRef" :rules="rule" label-width="75px">
+			    <el-form-item label="A类废品:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入A类废品" style="width: 123px;" />
+			    </el-form-item>
+			    <el-form-item label="B类废品:"  prop="image" >
+			      <el-input v-model="formData.image" :clearable="true"  placeholder="请输入B类废品" style="width: 123px;" />
+			    </el-form-item>
+			  	<el-form-item label="C类废品:"  prop="address" >
+			  	  <el-input v-model="formData.address" :clearable="true"  placeholder="请输入C类废品" style="width: 123px;" />
+			  	</el-form-item>			
+			  </el-form>
+			  <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="80px">
+			    <el-form-item label="其他备注:"  prop="address" >
+			      <el-input v-model="formData.address" :clearable="true"  placeholder="请输入其他备注" />
+			    </el-form-item>
+			  </el-form>
+            </el-scrollbar>
+            <template #footer>
+              <div class="dialog-footer">
+                <el-button @click="closeDialog">取 消</el-button>
+                <el-button type="primary" @click="enterDialog">确 定</el-button>
+              </div>
+            </template>
+          </el-dialog>
+
+          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="查看详情" destroy-on-close>
+            <el-scrollbar height="550px">
+              <el-descriptions column="1" border>
+                <el-descriptions-item label="address字段">
+                  {{ formData.address }}
+                </el-descriptions-item>
+                <el-descriptions-item label="image字段">
+                  {{ formData.image }}
+                </el-descriptions-item>
+                <el-descriptions-item label="name字段">
+                  {{ formData.name }}
+                </el-descriptions-item>
+              </el-descriptions>
+            </el-scrollbar>
+          </el-dialog>
+
+        </el-main>
+
+      </el-container>
+    </el-container>
+
+
+
+
+
+  </div>
+</template>
+
+<script setup>
+import {
+  getDepartment,
+  getMachineInfo
+} from '@/api/mes/job'
+import {
+  createCompany,
+  deleteCompany,
+  deleteCompanyByIds,
+  updateCompany,
+  findCompany,
+  getCompanyList
+} from '@/api/company'
+// 全量引入格式化工具 请按需保留
+import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, reactive } from 'vue'
+
+defineOptions({
+    name: 'Company'
+})
+
+const treeData=ref([])
+const Department = async() => {
+  const getDepartments = await getDepartment()
+  if (getDepartments.code === 0) {
+ //    // treeData.value = getDepartments.data
+	// getDepartments.data.forEach(function(i,index){
+	// 	console.log(i,index)
+	// })
+	// console.log(getDepartments.data)
+	const arrData = getDepartments.data.map((item) => ({
+		label:item,
+		params: {
+		  department: item,
+		}
+		}))
+    treeData.value = [
+		{
+			label: '设备定额及分配参数设置',
+			children:arrData,
+		}
+	]
+  }
+}
+Department()
+const handleNodeClick = (node,check) => {
+  //存放当前节点的nodeId
+  console.log(node,check);
+  if (node.params) {
+      params.department = node.params.department;
+      // params.sys_id = node.params.sys_id;
+      // total.value = node.params.total;
+      getTableData();
+    }
+
+}
+// 自动化生成的字典(可能为空)以及字段
+const formData = ref({
+        address: '',
+        image: '',
+        name: '',
+        })
+
+
+// 验证规则
+const rule = reactive({
+})
+
+const searchRule = reactive({
+  createdAt: [
+    { validator: (rule, value, callback) => {
+      if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
+        callback(new Error('请填写结束日期'))
+      } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
+        callback(new Error('请填写开始日期'))
+      } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
+        callback(new Error('开始日期应当早于结束日期'))
+      } else {
+        callback()
+      }
+    }, trigger: 'change' }
+  ],
+})
+
+const elFormRef = ref()
+const elSearchFormRef = ref()
+
+// =========== 表格控制部分 ===========
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+const tableData = ref([])
+const searchInfo = ref({})
+const params = {
+  department: '',
+  page: page.value.toString(),
+  limit: pageSize.value.toString(),
+}
+
+// 重置
+const onReset = () => {
+  searchInfo.value = {}
+  getTableData()
+}
+
+// 搜索
+const onSubmit = () => {
+  elSearchFormRef.value?.validate(async(valid) => {
+    if (!valid) return
+    page.value = 1
+    pageSize.value = 10
+    getTableData()
+  })
+}
+
+// 分页
+const handleSizeChange = (val) => {
+  pageSize.value = val
+  params.limit = val.toString();
+  getTableData()
+}
+
+// 修改页面容量
+const handleCurrentChange = (val) => {
+  page.value = val
+  params.page = val.toString();
+  getTableData()
+}
+
+// 查询
+const getTableData = async() => {
+  const table = await getMachineInfo(params)
+  if (table.code === 0) {
+    tableData.value = table.data.data
+    total.value = table.data.total
+	console.log(tableData);
+    // page.value = table.data.page
+    // pageSize.value = table.data.pageSize
+  }
+}
+
+// getTableData()
+
+// ============== 表格控制部分结束 ===============
+
+// 获取需要的字典 可能为空 按需保留
+const setOptions = async () =>{
+}
+
+// 获取需要的字典 可能为空 按需保留
+setOptions()
+
+
+// 多选数据
+const multipleSelection = ref([])
+// 多选
+const handleSelectionChange = (val) => {
+    multipleSelection.value = val
+}
+
+// 删除行
+const deleteRow = (row) => {
+    ElMessageBox.confirm('确定要删除吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+    }).then(() => {
+            deleteCompanyFunc(row)
+        })
+    }
+
+
+// 批量删除控制标记
+const deleteVisible = ref(false)
+
+// 多选删除
+const onDelete = async() => {
+      const ids = []
+      if (multipleSelection.value.length === 0) {
+        ElMessage({
+          type: 'warning',
+          message: '请选择要删除的数据'
+        })
+        return
+      }
+      multipleSelection.value &&
+        multipleSelection.value.map(item => {
+          ids.push(item.ID)
+        })
+      const res = await deleteCompanyByIds({ ids })
+      if (res.code === 0) {
+        ElMessage({
+          type: 'success',
+          message: '删除成功'
+        })
+        if (tableData.value.length === ids.length && page.value > 1) {
+          page.value--
+        }
+        deleteVisible.value = false
+        getTableData()
+      }
+    }
+
+// 行为控制标记(弹窗内部需要增还是改)
+const type = ref('')
+
+// 更新行
+const updateCompanyFunc = async(row) => {
+    const res = await findCompany({ ID: row.ID })
+    type.value = 'update'
+    if (res.code === 0) {
+        formData.value = res.data.recompany
+        dialogFormVisible.value = true
+    }
+}
+
+
+// 删除行
+const deleteCompanyFunc = async (row) => {
+    const res = await deleteCompany({ ID: row.ID })
+    if (res.code === 0) {
+        ElMessage({
+                type: 'success',
+                message: '删除成功'
+            })
+            if (tableData.value.length === 1 && page.value > 1) {
+            page.value--
+        }
+        getTableData()
+    }
+}
+
+// 弹窗控制标记
+const dialogFormVisible = ref(false)
+
+
+// 查看详情控制标记
+const detailShow = ref(false)
+
+
+// 打开详情弹窗
+const openDetailShow = () => {
+  detailShow.value = true
+}
+
+
+// 打开详情
+const getDetails = async (row) => {
+  // 打开弹窗
+  const res = await findCompany({ ID: row.ID })
+  if (res.code === 0) {
+    formData.value = res.data.recompany
+    openDetailShow()
+  }
+}
+
+
+// 关闭详情弹窗
+const closeDetailShow = () => {
+  detailShow.value = false
+  formData.value = {
+          address: '',
+          image: '',
+          name: '',
+          }
+}
+
+
+// 打开弹窗
+const openDialog = () => {
+    type.value = 'create'
+    dialogFormVisible.value = true
+}
+
+// 关闭弹窗
+const closeDialog = () => {
+    dialogFormVisible.value = false
+    formData.value = {
+        address: '',
+        image: '',
+        name: '',
+        }
+}
+// 弹窗确定
+const enterDialog = async () => {
+     elFormRef.value?.validate( async (valid) => {
+             if (!valid) return
+              let res
+              switch (type.value) {
+                case 'create':
+                  res = await createCompany(formData.value)
+                  break
+                case 'update':
+                  res = await updateCompany(formData.value)
+                  break
+                default:
+                  res = await createCompany(formData.value)
+                  break
+              }
+              if (res.code === 0) {
+                ElMessage({
+                  type: 'success',
+                  message: '创建/更改成功'
+                })
+                closeDialog()
+                getTableData()
+              }
+      })
+}
+
+</script>
+
+<style>
+.JKWTree-container {
+  display: flex;
+}
+
+.JKWTree-tree {
+  width: 300px;
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 20px;
+}
+
+.JKWTree-tree h3 {
+  font-size: 15px;
+  font-weight: 700;
+  margin: 10px 0;
+}
+
+.JKWTree-content {
+  flex: 1;
+}
+</style>

+ 53 - 104
src/view/yunyin/chanpinziliao/chanpinziliao.vue

@@ -1,45 +1,48 @@
 <template>
   <div>
     <el-container>
+      <!--    左侧树侧形结构-->
       <el-aside width="270px">
-        <!--    左侧树侧形结构-->
-        <div class="JKWTree-tree" style="height: 400px">
-          <h3> 组织列表</h3>
+        <div class="JKWTree-tree" style="height: 600px">
+          <h3> 产品管理</h3>
           <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
         </div>
       </el-aside>
+
       <!--  右侧内容区域 -->
       <el-container>
         <el-main>
+
           <!--      搜索框 -->
           <div class="gva-search-box">
             <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
               <!--          左侧查询输入框 -->
               <el-form-item>
-                <el-input v-model="searchInfo.keyword" placeholder="查询请输入员工编号或员工姓名" clearable style="width: 300px;"></el-input>
+                <el-input v-model="searchInfo.keyword" placeholder="请输入员工编号或员工姓名" clearable style="width: 200px;"></el-input>
               </el-form-item>
               <!--        查询和重置按钮 -->
               <el-form-item>
                 <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
-                <el-button icon="refresh" @click="onReset">重置</el-button>
+<!--                <el-button icon="refresh" @click="onReset">重置</el-button>-->
+                <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
               </el-form-item>
             </el-form>
           </div>
+
           <!--      表格及操作按钮 -->
           <div class="gva-table-box">
-            <div class="gva-btn-list">
-              <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
-            </div>
-
             <!--        数据表格 -->
             <el-table ref="multipleTable"
-                      style="width: 100%;height: 400px"
+                      style="width: 100%;height: 600px;"
+                      :row-class-name="tableRowClassName"
                       border
                       tooltip-effect="dark"
                       :data="tableData"
                       row-key="ID"
                       @selection-change="handleSelectionChange"
-                      @row-click="tableRowClick">
+                      @row-dblclick="updateCompanyFunc"
+                      @row-click="tableRowClick"
+                      :show-overflow-tooltip="true">
               <el-table-column type="selection" width="55" />
               <el-table-column align="left" label="客户编号" prop="客户编号" width="100" />
               <el-table-column align="left" label="产品编号" prop="产品编号" width="115" />
@@ -55,32 +58,26 @@
               <el-table-column align="left" label="U8UID" prop="U8UID" width="100" />
               <el-table-column align="left" label="最后修改" prop="Sys_id" width="160" />
               <el-table-column align="left" label="建档日期" prop="Sys_rq" width="160" />
-              <el-table-column align="left" label="更新日期" prop="Mod_rq" width="160" />
+              <el-table-column sortable align="left" label="更新日期" prop="Mod_rq" width="160" />
               <el-table-column align="left" label="UniqID" prop="UniqID" width="100" />
               <el-table-column align="left" label="最近接单时间" prop="receiveDate" width="160" />
               <el-table-column align="left" label="工艺" prop="gyData" width="100"/>
               <el-table-column align="left" label="印件数" prop="yjData" width="100" />
-              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
-                <template #default="scope">
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                </template>
-              </el-table-column>
             </el-table>
-            <!--            <div class="gva-pagination">-->
-            <!--              <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange"/>-->
-            <!--            </div>-->
+<!--            <div class="gva-pagination">-->
+<!--              <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange"/>-->
+<!--            </div>-->
           </div>
 
           <!--      印件资料、工艺资料、印版资料、技术资料附件【按钮】-->
           <div>
-            <el-button type="primary" icon="" @click="showTable('印件资料')" @node-click="yjshowTable" style="margin-right: 2px;">印件资料</el-button>
-            <el-button type="primary" icon="" @click="showTable('工艺资料')" style="margin-right: 2px;">工艺资料</el-button>
-            <el-button type="primary" icon="" @click="showTable('印版资料')" style="margin-right: 2px;">印版资料</el-button>
+            <el-button type="primary" icon="" @click="showTable('印件资料')"  style="margin-right: 2px;">印件资料</el-button>
+            <el-button type="primary" icon="" @click="showTable('工艺资料')"  style="margin-right: 2px;">工艺资料</el-button>
+            <el-button type="primary" icon="" @click="showTable('印版资料')"  style="margin-right: 2px;">印版资料</el-button>
             <el-button type="primary" icon="" @click="showTable('技术资料附件')" style="margin-right: 2px;">技术资料附件</el-button>
           </div>
 
           <div v-if="currentTable === '印件资料'">
-            <!--      印件资料【表格】-->
             <el-table ref="multipleTable" style="width: 100%;height: 400px" border tooltip-effect="dark" :data="yjtableData" row-key="ID" @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="55" />
               <el-table-column align="left" label="印件号" prop="yj_yjno"  width="80"/>
@@ -95,16 +92,10 @@
               <el-table-column align="left" label="建档用户" prop="sys_id" width="130" />
               <el-table-column align="left" label="建档日期" prop="sys_rq" width="160" />
               <el-table-column align="left" label="更新日期" prop="mod_rq" width="160"/>
-              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
-                <template #default="scope">
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                </template>
-              </el-table-column>
             </el-table>
           </div>
 
           <div v-if="currentTable === '工艺资料'">
-            <!--      工艺资料【表格】-->
             <el-table ref="multipleTable" style="width: 100%;height: 400px" border tooltip-effect="dark" :data="gytableData" row-key="ID" @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="55" />
               <el-table-column align="left" label="方案" prop="方案"  width="70"/>
@@ -128,37 +119,25 @@
               <el-table-column align="left" label="最后修改" prop="最后修改" width="160"/>
               <el-table-column align="left" label="建档日期" prop="建档日期" width="160"/>
               <el-table-column align="left" label="更新日期" prop="更新日期" width="160"/>
-              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
-                <template #default="scope">
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                </template>
-              </el-table-column>
             </el-table>
           </div>
 
           <div v-if="currentTable === '印版资料'">
-            <!--      印版资料【表格】-->
             <el-table ref="multipleTable" style="width: 100%;height: 400px" border tooltip-effect="dark" :data="ybtableData" row-key="ID" @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="55" />
               <el-table-column align="left" label="方案" prop="YB_方案"  width="100"/>
               <el-table-column align="left" label="印件号" prop="YB_Yjno" width="100" />
-              <!--              <el-table-column align="left" label="印版类别" prop="印版类别" width="100" />-->
+              <el-table-column align="left" label="印版类别" prop="印版类别" width="100" />
               <el-table-column align="left" label="存货编码" prop="存货编码" width="100"/>
               <el-table-column align="left" label="印版名称" prop="印版名称"  width="440"/>
               <el-table-column align="left" label="考核印数" prop="考核印数" width="100"/>
               <el-table-column align="left" label="建档用户" prop="建档用户" width="120" />
-              <!--              <el-table-column align="left" label="建档日期" prop="建档日期" width="160" />-->
+              <el-table-column align="left" label="建档日期" prop="建档日期" width="160" />
               <el-table-column align="left" label="更新日期" prop="更新日期" width="160" />
-              <el-table-column align="left" label="操作"  min-width="120" fixed='right'>
-                <template #default="scope">
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                </template>
-              </el-table-column>
             </el-table>
           </div>
 
           <div v-if="currentTable === '技术资料附件'">
-            <!--      技术资料附件【表格】-->
             <el-table ref="multipleTable" style="width: 100%;height: 400px" border tooltip-effect="dark" :data="jstableData" row-key="ID" @selection-change="handleSelectionChange">
               <el-table-column type="selection" width="55" />
               <el-table-column align="left" label="序号" prop="序号"  width="100"/>
@@ -169,15 +148,9 @@
               <el-table-column align="left" label="建档用户" prop="建档用户" width="100"/>
               <el-table-column align="left" label="建档日期" prop="建档日期" width="160" />
               <el-table-column align="left" label="更新日期" prop="更新日期" width="160" />
-              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
-                <template #default="scope">
-                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                </template>
-              </el-table-column>
             </el-table>
           </div>
 
-
           <!-- 弹窗 -->
           <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加产品资料':'修改产品资料'" destroy-on-close>
             <el-row>
@@ -347,20 +320,16 @@ defineOptions({   name: 'Company'})
 
 // =========== 左侧树侧形结构 ===========
 const treeData = ref({})
-const defaultProps = {
-  children: 'children',
-  label: '客户名称'
-};
 const getCustomdata = async () => {
   try {
-    const data  = await getCustom();
-    if(data.code === 0){
-      treeData.value = data.data
-    }else {
-      console.error(data.msg);
-    }
+    const response = await getCustom(); // 调用接口获取数据
+    const formatCustomData = response.data.map(item => ({
+      children: [],
+      label: `${item.客户编号}【${item.客户名称}】`,
+    }));
+    treeData.value = formatCustomData
   } catch (error) {
-    console.error(error)
+    console.error('Error fetching custom data:', error);
   }
 }
 getCustomdata()
@@ -368,17 +337,11 @@ getCustomdata()
 //点击左侧树形获取列表
 const tableData = reactive([])
 const handleNodeClick = async (node) => {
-  //通过 custom_code 客户编号 获取列表数据
   const custom_code = node.客户编号;
-  try {
-    const WorkListdata = await getProduct({ custom_code:custom_code, limit: pageSize.value, page: page.value });
-    tableData.splice(0, tableData.length, ...WorkListdata.data.data);//表格
-    total.value = tableData.length;//共多少条
-  } catch (error) {
-    console.error(error);
-  }
+  const WorkListdata = await getProduct({ custom_code:custom_code, limit: pageSize.value, page: page.value });
+  tableData.splice(0, tableData.length, ...WorkListdata.data.data);//表格
+  total.value = tableData.length;//共多少条
 };
-
 //印件资料
 const yjtableData = reactive([])
 //工艺资料
@@ -391,14 +354,11 @@ const tableRowClick = async (row) => {
   //点击表格获取 产品编号
   const product_code = row.产品编号;
   // console.log(product_code);
-  try {
-    const res = await getProductData({ product_code:product_code, limit: pageSize.value, page: page.value });//接口
+    const res = await getProductData({product_code:product_code});//接口
+    console.log(res);
     yjtableData.splice(0, yjtableData.length, ...res.data.yjData);//印件资料表格
     gytableData.splice(0, gytableData.length, ...res.data.gyData);//工艺资料表格
     ybtableData.splice(0, ybtableData.length, ...res.data.ybData);//印版资料表格
-  } catch (error) {
-    console.error( error);
-  }
 };
 
 // 分页
@@ -538,39 +498,24 @@ const onDelete = async() => {
 //行为控制标记(弹窗内部需要增还是改)
 const type = ref('')
 
-//更新行
+//修改
 const updateCompanyFunc = async (row) => {
   const product_code = row.产品编号;
   console.log(product_code);
-  // try {
-  //   const res = await getProductData({ product_code });
-  //   // 根据需要进行操作,比如更新表单数据或显示弹窗等
-  //   // if (res.code === 0) {
-  //   //   formData.value = res.data.recompany;
-  //   //   dialogFormVisible.value = true;
-  //   // }
-  // } catch (error) {
-  //   // 处理错误
-  //   console.error('Error in updateCompanyFunc:', error);
-  // }
-  // dialogFormVisible.value = true; // 如果需要显示弹窗,取消注释此行
-};
-
-// 删除行
-const deleteCompanyFunc = async (row) => {
-  const res = await deleteCompany({ ID: row.ID })
-  if (res.code === 0) {
-    ElMessage({
-      type: 'success',
-      message: '删除成功'
-    })
-    if (tableData.value.length === 1 && page.value > 1) {
-      page.value--
-    }
-    getTableData()
+  try {
+    // const res = await getProductData({ product_code });
+    // console.log(res)
+    // 根据需要进行操作,比如更新表单数据或显示弹窗等
+    // if (res.code === 0) {
+    //   formData.value = res.data.recompany;
+    //   dialogFormVisible.value = true;
+    // }
+  } catch (error) {
+    // 处理错误
+    console.error('Error in updateCompanyFunc:', error);
   }
-}
-
+  dialogFormVisible.value = true;
+};
 // 弹窗控制标记
 const dialogFormVisible = ref(false)
 
@@ -663,4 +608,8 @@ const enterDialog = async () => {
 .JKWTree-content {
   flex: 1;
 }
+.el-table .warning-row {
+  background: oldlace;
+}
+
 </style>

+ 39 - 183
src/view/yunyin/renliziyuan/renyuanjibenziliao.vue

@@ -4,7 +4,7 @@
 			<!-- 左侧树形结构 -->
 			<el-aside width="270px">
 				<div class="JKWTree-tree" style="height: 500px">
-					<h3>组织列表</h3>
+					<h3>组织架构</h3>
 					<el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
 				</div>
 			</el-aside>
@@ -14,17 +14,17 @@
 				<el-main>
 					<!-- 搜索框 -->
 					<div class="gva-search-box">
-						<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline"
-							:rules="searchRule" @keyup.enter="onSubmit">
+						<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
 							<!-- 左侧查询输入框 -->
 							<el-form-item>
-								<el-input v-model="searchInfo.ke" placeholder="查询请输入员工编号或员工姓名" clearable
-									style="width: 300px;"></el-input>
+								<el-input v-model="searchInfo.ke" placeholder="请输入员工编号或员工姓名" clearable style="width: 200px;"></el-input>
 							</el-form-item>
 							<!-- 右侧查询和重置按钮 -->
 							<el-form-item>
 								<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
-								<el-button icon="refresh" @click="onReset">重置</el-button>
+<!--								<el-button icon="refresh" @click="onReset">重置</el-button>-->
+                <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
+                <el-button type="primary" icon="el-icon-download" @click="showExportDialog">导出到Excel</el-button>
 							</el-form-item>
 						</el-form>
 					</div>
@@ -32,14 +32,6 @@
 					<!-- 表格及操作按钮 -->
 					<div class="gva-table-box">
 
-						<!-- 操作按钮部分 -->
-						<div class="gva-btn-list">
-							<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
-							<!-- 导出到Excel功能 -->
-							<el-button type="primary" icon="el-icon-download" style="margin-left: 10px;"
-								@click="showExportDialog">导出到Excel</el-button>
-						</div>
-
 						<!-- 导出字段选择对话框 -->
 						<el-dialog title="选择导出字段" :visible.sync="exportDialogVisible" width="30%">
 							<el-checkbox-group v-model="selectedExportFields">
@@ -58,7 +50,11 @@
 						<el-table ref="multipleTable"
                       style="width: 100%;height: 500px"
                       tooltip-effect="dark" :data="tableData" border
-							row-key="ID" @row-dblclick="handleRowDoubleClick" @selection-change="handleSelectionChange">
+							        row-key="ID"
+                      :row-class-name="tableRowClassName"
+                      @row-dblclick="updateCompanyFunc"
+                      @row-click="tableRowClick"
+                      @selection-change="handleSelectionChange">
 							<el-table-column type="selection" width="55" />
 							<el-table-column align="left" label="员工编号" prop="员工编号"  width="100" />
 							<el-table-column align="left" label="员工姓名" prop="员工姓名"  width="100"/>
@@ -80,20 +76,20 @@
 							<el-table-column align="left" label="创建用户" prop="sys_id" width="160" />
 							<el-table-column align="left" label="创建时间" prop="sys_rq" width="160" />
 							<el-table-column align="left" label="修改时间" prop="mod_rq" width="160" />
-							<el-table-column align="left" label="操作" min-width="120" fixed='right'>
-								<template #default="scope">
-									<el-button type="primary" link icon="edit" class="table-button"
-										@click="updateCompanyFunc(scope.row)">编辑</el-button>
-								</template>
-							</el-table-column>
+<!--							<el-table-column align="left" label="操作" min-width="120" fixed='right'>-->
+<!--								<template #default="scope">-->
+<!--									<el-button type="primary" link icon="edit" class="table-button"-->
+<!--										@click="updateCompanyFunc(scope.row)">编辑</el-button>-->
+<!--								</template>-->
+<!--							</el-table-column>-->
 						</el-table>
 
 						<!-- 分页 -->
-						<div class="gva-pagination">
-							<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page"
-								:page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total"
-								@current-change="handleCurrentChange" @size-change="handleSizeChange" />
-						</div>
+<!--						<div class="gva-pagination">-->
+<!--							<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page"-->
+<!--								:page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total"-->
+<!--								@current-change="handleCurrentChange" @size-change="handleSizeChange" />-->
+<!--						</div>-->
 					</div>
 
 					<!-- 弹窗 -->
@@ -197,21 +193,6 @@
 							</el-col>
 
 							<!-- 右侧图片 -->
-							<div>
-								<el-col :span="8">
-                  <el-upload
-                    action="/source/upload"
-                    accept=".jpg,.jpeg,.png,.gif,.JPG,.JPEG"
-                    :show-file-list="false"
-                    :on-change="handleLicensePreview"
-                    :before-upload="beforeLicenseUpload"
-                    :auto-upload="false"
-                    >
-                      <img v-if="form.img" :src="form.img" class="preach-img">
-                      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-                  </el-upload>
-								</el-col>
-							</div>
 
 						</el-row>
 
@@ -224,65 +205,7 @@
 						</template>
 					</el-dialog>
 
-					<!-- 详情展示弹窗 -->
-					<el-dialog v-model="detailShow" style="width: 1000px" lock-scroll :before-close="closeDetailShow"
-						title="查看员工基本资料管理" destroy-on-close>
-						<el-scrollbar height="550px">
-							<el-descriptions column="2" border>
-								<!-- 左侧部分 -->
-								<el-descriptions-item label="员工编号" :min-width="labelMinWidth">
-									{{ formData.employeeId }}
-								</el-descriptions-item>
-								<el-descriptions-item label="性别" :min-width="labelMinWidth">
-									{{ formData.gender }}
-								</el-descriptions-item>
-								<el-descriptions-item label="身份证" :min-width="labelMinWidth">
-									{{ formData.idCard }}
-								</el-descriptions-item>
-								<el-descriptions-item label="部分名称" :min-width="labelMinWidth">
-									{{ formData.sectionName }}
-								</el-descriptions-item>
-								<el-descriptions-item label="入职日期" :min-width="labelMinWidth">
-									{{ formData.employeeId }}
-								</el-descriptions-item>
-								<el-descriptions-item label="人员类别" :min-width="labelMinWidth">
-									{{ formData.gender }}
-								</el-descriptions-item>
-								<el-descriptions-item label="班次类型" :min-width="labelMinWidth">
-									{{ formData.idCard }}
-								</el-descriptions-item>
-								<el-descriptions-item label="工资表类别" :min-width="labelMinWidth">
-									{{ formData.sectionName }}
-								</el-descriptions-item>
-
-								<!-- 右侧部分 -->
-								<el-descriptions-item label="姓名" :min-width="labelMinWidth">
-									{{ formData.name }}
-								</el-descriptions-item>
-								<el-descriptions-item label="出生日期" :min-width="labelMinWidth">
-									{{ formData.birthdate }}
-								</el-descriptions-item>
-								<el-descriptions-item label="职务" :min-width="labelMinWidth">
-									{{ formData.position }}
-								</el-descriptions-item>
-								<el-descriptions-item label="部门编号" :min-width="labelMinWidth">
-									{{ formData.departmentId }}
-								</el-descriptions-item>
-								<el-descriptions-item label="转正日期" :min-width="labelMinWidth">
-									{{ formData.name }}
-								</el-descriptions-item>
-								<el-descriptions-item label="扣减司龄" :min-width="labelMinWidth">
-									{{ formData.birthdate }}
-								</el-descriptions-item>
-								<el-descriptions-item label="人员性质" :min-width="labelMinWidth">
-									{{ formData.position }}
-								</el-descriptions-item>
-								<el-descriptions-item label="工资性质" :min-width="labelMinWidth">
-									{{ formData.departmentId }}
-								</el-descriptions-item>
-							</el-descriptions>
-						</el-scrollbar>
-					</el-dialog>
+
 
 				</el-main>
 			</el-container>
@@ -296,7 +219,7 @@ import {createCompany, deleteCompany, deleteCompanyByIds, updateCompany, findCom
 import {getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile} from '@/utils/format'
 import {ElMessage, ElMessageBox} from 'element-plus'
 import {ref, reactive} from 'vue'
-import {getDepartment,getStaffList} from '@/api/yunyin/yunying'
+import {getDepartment, getProductData, getStaffList, ygjbzledit} from '@/api/yunyin/yunying'
 defineOptions({name: 'Company'})
 
 // =========== 左侧树侧形结构 ===========
@@ -325,7 +248,7 @@ const handleNodeClick = async (node) => {
   //通过 department_code 编号 获取列表数据
   const department_code = node.编号;
   try {
-    const WorkListdata = await getStaffList({ department_code:department_code,limit: pageSize.value, page: page.value});//接口调用函数
+    const WorkListdata = await getStaffList({ department_code:department_code,limit: '', page: ''});//接口调用函数
     tableData.splice(0,tableData.length,...WorkListdata.data.list);//表格数据
     total.value = tableData.length;//共多少条
   } catch (error) {
@@ -401,9 +324,6 @@ const onSubmit = () => {
   })
 }
 
-
-
-
 // 查询
 const getTableData = async () => {
   const table = await getCompanyList({
@@ -421,6 +341,10 @@ const getTableData = async () => {
 getTableData()
 
 // ============== 表格控制部分结束 ===============
+const tableRowClick = async (row) => {
+  console.log(row);
+};
+
 
 // 获取需要的字典 可能为空 按需保留
 const setOptions = async () => {}
@@ -435,81 +359,17 @@ const handleSelectionChange = (val) => {
   multipleSelection.value = val
 }
 
-// 删除行
-const deleteRow = (row) => {
-  ElMessageBox.confirm('确定要删除吗?', '提示', {
-    confirmButtonText: '确定',
-    cancelButtonText: '取消',
-    type: 'warning'
-  }).then(() => {
-    deleteCompanyFunc(row)
-  })
-}
-
-// 批量删除控制标记
-const deleteVisible = ref(false)
-
-// 多选删除
-const onDelete = async () => {
-  const ids = []
-  if (multipleSelection.value.length === 0) {
-    ElMessage({
-      type: 'warning',
-      message: '请选择要删除的数据'
-    })
-    return
-  }
-  multipleSelection.value &&
-    multipleSelection.value.map(item => {
-      ids.push(item.ID)
-    })
-  const res = await deleteCompanyByIds({
-    ids
-  })
-  if (res.code === 0) {
-    ElMessage({
-      type: 'success',
-      message: '删除成功'
-    })
-    if (tableData.value.length === ids.length && page.value > 1) {
-      page.value--
-    }
-    deleteVisible.value = false
-    getTableData()
-  }
-}
-
 // 行为控制标记(弹窗内部需要增还是改)
 const type = ref('')
 
-// 更新行
+//修改
 const updateCompanyFunc = async (row) => {
-  // const res = await findCompany({ ID: row.ID })
-  // type.value = 'update'
-  // if (res.code === 0) {
-  //     formData.value = res.data.recompany
-  //     dialogFormVisible.value = true
-  // }
-  dialogFormVisible.value = true
-}
-
-// 删除行
-const deleteCompanyFunc = async (row) => {
-  const res = await deleteCompany({
-    ID: row.ID
-  })
-  if (res.code === 0) {
-    ElMessage({
-      type: 'success',
-      message: '删除成功'
-    })
-    if (tableData.value.length === 1 && page.value > 1) {
-      page.value--
-    }
-    getTableData()
-  }
-}
-
+  const product_code = row.员工编号;
+  console.log(product_code);
+  // const data = await ygjbzledit({ product_code: product_code });
+  // console.log(data);
+  dialogFormVisible.value = true;
+};
 // 弹窗控制标记
 const dialogFormVisible = ref(false)
 
@@ -523,14 +383,7 @@ const openDetailShow = () => {
 
 // 打开详情
 const getDetails = async (row) => {
-  // 打开弹窗
-  // const res = await findCompany({ ID: row.ID })
-  // if (res.code === 0) {
-  //   formData.value = res.data.recompany
-  //   openDetailShow()
-  // }
   detailShow.value = true
-
 }
 
 // 关闭详情弹窗
@@ -627,4 +480,7 @@ const enterDialog = async () => {
 	.file-input {
 		display: none;
 	}
+  .el-table .warning-row {
+    background: oldlace;
+  }
 </style>

+ 195 - 512
src/view/yunyin/shengchanguanli/gongdanshengchan.vue

@@ -1,542 +1,225 @@
 <template>
   <div>
     <el-container>
+      <!-- 左侧树形结构 -->
       <el-aside width="340px">
         <div class="JKWTree-tree">
           <h3> 组织列表</h3>
+          <el-tree :data="sctreeData" :props="defaultProps" @node-click="schandleNodeClick"></el-tree>
           <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
         </div>
       </el-aside>
       <el-container>
-<!--        <el-header>dd</el-header>-->
         <el-main>
-			
-         <!-- 搜索框 -->
-         <div class="gva-search-box">
-           <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
-         
-             <!-- 左侧查询输入框 -->
-             <el-form-item>
-               <el-input v-model="searchInfo.keyword" placeholder="" clearable style="width: 300px;"></el-input>
-             </el-form-item>
-         
-             <!-- 查询和重置按钮 -->
-             <el-form-item>
-               <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
-               <el-button icon="refresh" @click="onReset">重置</el-button>
-             </el-form-item>
-           </el-form>
-         </div>
-		 
+
+          <!-- 搜索框 -->
+          <div class="gva-search-box">
+            <el-form ref="elSearchFormRef" :inline="true" class="demo-form-inline" >
+
+              <!-- 左侧查询输入框 -->
+              <el-form-item>
+                <el-input  placeholder="" clearable style="width: 300px;"></el-input>
+              </el-form-item>
+
+              <!-- 查询和重置按钮 -->
+              <el-form-item>
+                <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
+                <el-button icon="refresh" @click="onReset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
+
           <div class="gva-table-box">
             <div class="gva-btn-list">
               <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
-<!--              <el-button type="primary" style="width: 110px;" >查找工单</el-button>-->
-<!--              <el-button type="primary" style="width: 110px;" >工单状态设置</el-button>-->
-<!--              <el-button type="primary" style="width: 110px;" >工单状态更正</el-button>-->
-<!--              <el-button type="primary" style="width: 110px;" >引用实际参数</el-button>-->
-<!--              <el-button type="primary" style="width: 110px;" >排程参数维护</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >排程参数复制</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >编辑生产计划</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >工单打印</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >工序产量核查</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >流程单查询</el-button>-->
-<!--              <el-button type="primary" icon="plus" style="width: 110px;" >工单筛选</el-button>-->
             </div>
-			
-            <el-table ref="multipleTable" style="width: 100%" border tooltip-effect="dark" :data="tableData" row-key="ID" @selection-change="handleSelectionChange">
-              <el-table-column type="selection" width="55" />
-              <el-table-column align="left" label="工单编号" prop="employeenumber" width="120" />
-              <el-table-column align="left" label="销售订单号" prop="employeename" width="120" />
-              <el-table-column align="left" label="印件名称" prop="gender" width="120" />
-              <el-table-column align="left" label="印件工序及名称" prop="EmploymentDate" width="130" />
-              <el-table-column align="left" label="工序产量" prop="Confirmation" width="120" />
-              <el-table-column align="left" label="已完成产量" prop="department" width="120" />
-              <el-table-column align="left" label="产品名称" prop="Professional" width="120" />
-              <el-table-column align="left" label="订单数量" prop="IDCard" width="120" />
-              <el-table-column align="left" label="订量单位" prop="birthday" width="120" />
-              <el-table-column align="left" label="交货日期" prop="properties" width="120" />
-              <el-table-column align="left" label="产品代号" prop="category" width="120" />
-              <el-table-column align="left" label="工序名称" prop="bctype" width="120" />
-              <el-table-column align="left" label="机组" prop="Salary" width="120" />
-              <el-table-column align="left" label="设备编号" prop="accounting" width="120" />
-              <el-table-column align="left" label="车间名称" prop="MESbe" width="120" />
-              <el-table-column align="left" label="UNIWID" prop="MESbe" width="120" />
-              <el-table-column align="left" label="印件号" prop="MESbe" width="120" />
-              <el-table-column align="left" label="工序号" prop="MESbe" width="120" />
-              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
+
+            <!-- 表格部分 -->
+            <el-table ref="multipleTable"
+                      style="width: 100%;height: 400px;"
+                      :data="tableData" border tooltip-effect="dark"
+                      row-key="ID"
+                      @selection-change="handleSelectionChange"
+                      :show-summary="true"
+            >
+              <!-- 动态绑定 el-table-column 列 -->
+              <el-table-column
+                  v-for="column in dynamicColumns"
+                  :key="column.prop"
+                  :label="column.label"
+                  :prop="column.prop"
+                  :width="column.width"
+                  :align="column.align"
+              >
+                <!-- 可以根据需要添加模板内容 -->
+              </el-table-column>
+
+              <!-- 合计行 -->
+              <el-table-column
+                  label="合计"
+                  align="center"
+                  :formatter="formatTotal"
+              ></el-table-column>
+
+              <!-- 操作列 -->
+              <el-table-column align="left" label="操作" min-width="100" fixed="right">
                 <template #default="scope">
-                 <!-- <el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
-					  <el-icon style="margin-right: 5px"><InfoFilled /></el-icon>
-					  查看详情
-				  </el-button> -->
                   <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
-                  <!-- <el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button> -->
                 </template>
               </el-table-column>
-
             </el-table>
-			
-            <div class="gva-pagination">
-              <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange"/>
-            </div>	
           </div>
-		  
-          <!-- 弹窗 -->
-          <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加产品资料':'修改产品资料'" destroy-on-close>
-          			<el-row>
-          			  <!-- 左侧表单 -->
-          			  <el-col :span="8">
-          			    <el-scrollbar height="500px">
-          			      <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="100px">
-          			        <el-form-item label="客户料号:" prop="address">
-          			          <el-input v-model="formData.address" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="产品编号:" prop="gender">
-          			          <el-input v-model="formData.gender" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="产品名称:" prop="idCard">
-          			          <el-input v-model="formData.idCard" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="版本号:" prop="department">
-          			          <el-input v-model="formData.department" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="成品规格:" prop="joinDate">
-          			          <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          					<el-form-item label="单位:" prop="joinDate">
-          					  <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
-          					</el-form-item>
-          					<el-form-item label="产品分类:" prop="joinDate">
-          					  <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
-          					</el-form-item>
-          			      </el-form>
-          			    </el-scrollbar>
-          			  </el-col>
-          			
-          			  <!-- 中间表单 -->
-          			  <el-col :span="8">
-          			    <el-scrollbar height="500px">
-          			      <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="100px">
-          			        <el-form-item label="最近接单日期:" prop="name">
-          			          <el-input v-model="formData.name" :clearable="true" placeholder=":" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="最近引用日期:" prop="birthDate">
-          			          <el-input v-model="formData.birthDate" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="印件数:" prop="position">
-          			          <el-input v-model="formData.position" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          			        <el-form-item label="工艺:" prop="departmentId">
-          			          <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
-          			        </el-form-item>
-          					<el-form-item label="当前状态:" prop="departmentId">
-          					  <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
-          					</el-form-item>
-          					<el-form-item label="最后修改:" prop="departmentId">
-          					  <el-input v-model="formData.departmentId" :clearable="true" placeholder=":" style="width: 180px;" />
-          					</el-form-item>
-          					<el-form-item label="建档时间:" prop="departmentId">
-          					  <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
-          					</el-form-item>
-          					<el-form-item label="更新时间:" prop="departmentId">
-          					  <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
-          					</el-form-item>
-          			      </el-form>
-          			    </el-scrollbar>
-          			  </el-col>
-          				
-          			  </el-row>
-          
-            <template #footer>
-              <div class="dialog-footer">
-                <el-button @click="closeDialog">取 消</el-button>
-                <el-button type="primary" @click="enterDialog">确 定</el-button>
-              </div>
-            </template>
-          </el-dialog>
-		  
-		   <!-- 详情展示弹窗 -->
-          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="员工基本资料管理" destroy-on-close>
-			<el-scrollbar height="550px">
-			  <el-descriptions column="2" border>
-			    <!-- 左侧部分 -->
-			    <el-descriptions-item label="客户料号" :min-width="labelMinWidth">
-			      {{ formData.employeeId }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="产品编号" :min-width="labelMinWidth">
-			      {{ formData.gender }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="产品名称" :min-width="labelMinWidth">
-			      {{ formData.idCard }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="版本号" :min-width="labelMinWidth">
-			      {{ formData.sectionName }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="成品规格" :min-width="labelMinWidth">
-			      {{ formData.employeeId }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="单位" :min-width="labelMinWidth">
-			      {{ formData.gender }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="产品分类" :min-width="labelMinWidth">
-			      {{ formData.idCard }}
-			    </el-descriptions-item>
-			
-			    <!-- 右侧部分 -->
-			    <el-descriptions-item label="最近接单日期" :min-width="labelMinWidth">
-			      {{ formData.name }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="最近引用日期" :min-width="labelMinWidth">
-			      {{ formData.birthdate }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="印件数" :min-width="labelMinWidth">
-			      {{ formData.position }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="工艺" :min-width="labelMinWidth">
-			      {{ formData.departmentId }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="当前状态" :min-width="labelMinWidth">
-			      {{ formData.name }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="最后修改" :min-width="labelMinWidth">
-			      {{ formData.birthdate }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="建档时间" :min-width="labelMinWidth">
-			      {{ formData.position }}
-			    </el-descriptions-item>
-			    <el-descriptions-item label="更新时间" :min-width="labelMinWidth">
-			      {{ formData.departmentId }}
-			    </el-descriptions-item>
-			  </el-descriptions>
-			</el-scrollbar>
-			
-          </el-dialog>
+
         </el-main>
       </el-container>
     </el-container>
   </div>
 </template>
 
-<script setup>
-// 全量引入格式化工具 请按需保留
-import {createCompany, deleteCompany, deleteCompanyByIds, updateCompany, findCompany, getCompanyList} from '@/api/company'
-import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { ref, reactive } from 'vue'
-import {DataList, getProduct, workbench} from "@/api/yunyin/yunying";
-defineOptions({name: 'Company'})
-
-// =========== 左侧树侧形结构 ===========
-const treeData = ref([]);
-const workbenchdata = async () => {
-  try {
-    const data = await workbench();
-    const rawData = data.data;
-    const dataArray =Object.keys(rawData).map(key => ({
-      label: key,
-      children: Object.keys(rawData[key]).map(subKey => ({
-        label: subKey,
-        children: rawData[key][subKey].map(item => ({
-          label: item
-        }))
-      }))
-    }));
-    treeData.value = dataArray;
-    // console.log(dataArray);
-  } catch (error) {
-    console.error(error);
-  }
-};
-workbenchdata();
-
-
-//点击左侧树形获取列表
-const tableData = reactive([])
-const handleNodeClick = async (node) => {
-  // //通过 custom_code 客户编号 获取列表数据
-  // const custom_code = node;
-  console.log(node)
-  // try {
-  //   const WorkListdata = await getProduct({ custom_code:custom_code, limit: pageSize.value, page: page.value });
-  //   tableData.splice(0, tableData.length, ...WorkListdata.data.data);//表格
-  //   total.value = tableData.length;//共多少条
-  // } catch (error) {
-  //   console.error(error);
-  // }
-};
-
-
-
-
-
-// 自动化生成的字典(可能为空)以及字段
-const formData = ref({
-        address: '',
-        image: '',
-        name: '',
-        })
-
-
-// 验证规则
-const rule = reactive({
-})
-
-const searchRule = reactive({
-  createdAt: [
-    { validator: (rule, value, callback) => {
-      if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
-        callback(new Error('请填写结束日期'))
-      } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
-        callback(new Error('请填写开始日期'))
-      } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
-        callback(new Error('开始日期应当早于结束日期'))
-      } else {
-        callback()
+<script>
+import {ref, computed, onMounted, reactive} from 'vue';
+import { workbench, getProduct, Project } from "@/api/yunyin/yunying";
+export default {
+  setup() {
+    const totalRow = reactive({
+      '产品名称': 0,
+    });
+
+    const calculateTotal = () => {
+      totalRow.产品名称 = 0;
+
+      tableData.value.forEach((item) => {
+        totalRow.产品名称 += item.产品名称数量 || 0;
+      });
+    };
+
+    const formatTotal = ({ row, column, rowIndex, columnIndex }) => {
+      if (columnIndex === dynamicColumns.value.length - 1 && column.property === '产品名称数量') {
+        return `产品名称:${totalRow.产品名称}个`;
       }
-    }, trigger: 'change' }
-  ],
-})
-
-const elFormRef = ref()
-const elSearchFormRef = ref()
-
-// =========== 表格控制部分 ===========
-const page = ref(1)
-const total = ref(0)
-const pageSize = ref(10)
-const searchInfo = ref({})
-
-// 重置
-const onReset = () => {
-  searchInfo.value = {}
-  getTableData()
-}
-
-// 搜索
-const onSubmit = () => {
-  elSearchFormRef.value?.validate(async(valid) => {
-    if (!valid) return
-    page.value = 1
-    pageSize.value = 10
-    getTableData()
-  })
-}
-
-// 分页
-const handleSizeChange = (val) => {
-  pageSize.value = val
-  getTableData()
-}
-
-// 修改页面容量
-const handleCurrentChange = (val) => {
-  page.value = val
-  getTableData()
-}
-
-// 查询
-const getTableData = async() => {
-  const table = await getCompanyList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
-  if (table.code === 0) {
-    tableData.value = table.data.list
-    total.value = table.data.total
-    page.value = table.data.page
-    pageSize.value = table.data.pageSize
-  }
-}
-
-getTableData()
-
-// ============== 表格控制部分结束 ===============
-
-// 获取需要的字典 可能为空 按需保留
-const setOptions = async () =>{
-}
-
-// 获取需要的字典 可能为空 按需保留
-setOptions()
-
-
-// 多选数据
-const multipleSelection = ref([])
-// 多选
-const handleSelectionChange = (val) => {
-    multipleSelection.value = val
-}
-
-// 删除行
-const deleteRow = (row) => {
-    ElMessageBox.confirm('确定要删除吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-    }).then(() => {
-            deleteCompanyFunc(row)
-        })
-    }
-
-
-// 批量删除控制标记
-const deleteVisible = ref(false)
-
-// 多选删除
-const onDelete = async() => {
-      const ids = []
-      if (multipleSelection.value.length === 0) {
-        ElMessage({
-          type: 'warning',
-          message: '请选择要删除的数据'
-        })
-        return
+      return '';
+    };
+
+    const sctreeData = ref([
+      {
+        label: '设备定额及分配参数设置',
+        children:[
+          { label: '1.计划中工单', number: 1 },
+          { label: '2.排程中工单', number: 2 },
+          { label: '3.制程中工单', number: 3 },
+          { label: '4.已完工工单', number: 4 }
+        ],
       }
-      multipleSelection.value &&
-        multipleSelection.value.map(item => {
-          ids.push(item.ID)
-        })
-      const res = await deleteCompanyByIds({ ids })
-      if (res.code === 0) {
-        ElMessage({
-          type: 'success',
-          message: '删除成功'
-        })
-        if (tableData.value.length === ids.length && page.value > 1) {
-          page.value--
-        }
-        deleteVisible.value = false
-        getTableData()
+    ]);
+    const treeData = ref([]); // 添加 treeData 的定义
+    const tableData = ref([]);
+    const currentNumber = ref(0);
+    const dynamicColumns = computed(() => {
+      switch (currentNumber.value) {
+        case 1:
+          return [
+            { label: '生产分类', prop: '生产分类', width: 120, align: 'left' },
+            { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
+            { label: '产品代号', prop: '产品代号', width: 120, align: 'left' },
+            { label: '产品名称', prop: '产品名称', width: 200, align: 'left' },
+            { label: '接单日期', prop: '接单日期', width: 160, align: 'left' },
+            { label: '交货日期', prop: '交货日期', width: 160, align: 'left' },
+            { label: '订单数量', prop: '订单数量', width: 120, align: 'left' },
+            { label: '计量单位', prop: '计量单位', width: 120, align: 'left' },
+            { label: '客户名称', prop: '客户名称', width: 200, align: 'left' },
+            { label: '客户编号', prop: '客户编号', width: 120, align: 'left' },
+            { label: '备注', prop: '备注', width: 120, align: 'left' },
+            { label: '客户料号', prop: '客户料号', width: 120, align: 'left' },
+            { label: '创建用户', prop: '创建用户', width: 160, align: 'left' },
+            { label: '创建时间', prop: '创建时间', width: 160, align: 'left' },
+            { label: '修改时间', prop: '修改时间', width: 160, align: 'left' },
+            { label: 'UNIQID', prop: 'UNIQID', width: 120, align: 'left' },
+            { label: '投料率', prop: '投料率', width: 120, align: 'left' },
+            { label: '销售订单号', prop: '销售订单号', width: 120, align: 'left' },
+          ];
+        case 2:
+          return [
+            { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
+          ];
+        case 3:
+          return [
+            { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
+          ];
+        case 4:
+          return [
+            { label: '工单编号', prop: '工单编号', width: 120, align: 'left' },
+          ];
+        default:
+          return [];
       }
-    }
-
-// 行为控制标记(弹窗内部需要增还是改)
-const type = ref('')
-
-// 更新行
-const updateCompanyFunc = async(row) => {
-    // const res = await findCompany({ ID: row.ID })
-    // type.value = 'update'
-    // if (res.code === 0) {
-    //     formData.value = res.data.recompany
-    //     dialogFormVisible.value = true
-    // }
-	dialogFormVisible.value = true
-}
-
-
-// 删除行
-const deleteCompanyFunc = async (row) => {
-    const res = await deleteCompany({ ID: row.ID })
-    if (res.code === 0) {
-        ElMessage({
-                type: 'success',
-                message: '删除成功'
-            })
-            if (tableData.value.length === 1 && page.value > 1) {
-            page.value--
-        }
-        getTableData()
-    }
-}
-
-// 弹窗控制标记
-const dialogFormVisible = ref(false)
-
-
-// 查看详情控制标记
-const detailShow = ref(false)
-
-
-// 打开详情弹窗
-const openDetailShow = () => {
-  detailShow.value = true
-}
-
-
-// 打开详情
-const getDetails = async (row) => {
-  // 打开弹窗
-  const res = await findCompany({ ID: row.ID })
-  if (res.code === 0) {
-    formData.value = res.data.recompany
-    openDetailShow()
-  }
-}
-
-
-// 关闭详情弹窗
-const closeDetailShow = () => {
-  detailShow.value = false
-  formData.value = {
-          address: '',
-          image: '',
-          name: '',
-          }
-}
-
-
-// 打开弹窗
-const openDialog = () => {
-    type.value = 'create'
-    dialogFormVisible.value = true
-}
-
-// 关闭弹窗
-const closeDialog = () => {
-    dialogFormVisible.value = false
-    formData.value = {
-        address: '',
-        image: '',
-        name: '',
-        }
-}
-// 弹窗确定
-const enterDialog = async () => {
-     elFormRef.value?.validate( async (valid) => {
-             if (!valid) return
-              let res
-              switch (type.value) {
-                case 'create':
-                  res = await createCompany(formData.value)
-                  break
-                case 'update':
-                  res = await updateCompany(formData.value)
-                  break
-                default:
-                  res = await createCompany(formData.value)
-                  break
-              }
-              if (res.code === 0) {
-                ElMessage({
-                  type: 'success',
-                  message: '创建/更改成功'
-                })
-                closeDialog()
-                getTableData()
-              }
-      })
-}
-
-</script>
-
-<style>
-.JKWTree-container {
-  display: flex;
-}
-
-.JKWTree-tree {
-  width: 300px;
-  background-color: #fff;
-  padding: 10px;
-  margin-right: 20px;
-}
-
-.JKWTree-tree h3 {
-  font-size: 15px;
-  font-weight: 700;
-  margin: 10px 0;
-}
-
-.JKWTree-content {
-  flex: 1;
-}
-</style>
+    });
+    const schandleNodeClick = async (node) => {
+      currentNumber.value = node.number;
+      switch (node.number) {
+        case 1:
+          const Projectdata = await Project();
+          tableData.value = Projectdata.data;
+          break;
+        case 2:
+          break;
+        case 3:
+          break;
+        case 4:
+          break;
+        default:
+          break;
+      }
+    };
+    const handleSelectionChange = () => {
+      // 处理表格选中变化的逻辑
+    };
+
+    const updateCompanyFunc = (row) => {
+      // 处理表格行的编辑操作逻辑
+    };
+
+    const workbenchdata = async () => {
+      try {
+        const data = await workbench();
+        const rawData = data.data;
+        const dataArray = Object.keys(rawData).map((key) => ({
+          label: key,
+          children: Object.keys(rawData[key]).map((subKey) => ({
+            label: subKey,
+            children: rawData[key][subKey].map((item) => ({
+              label: item,
+            })),
+          })),
+        }));
+        treeData.value = dataArray;
+      } catch (error) {
+        console.error(error);
+      }
+    };
+
+    // 获取左侧树形结构数据
+    onMounted(() => {
+      workbenchdata();
+    });
+
+    // 处理左侧树形结构节点点击事件
+    const handleNodeClick = async (node) => {
+      const custom_code = node.label; // 假设你想使用节点的 label 作为 custom_code
+      console.log(custom_code);
+    };
+
+    return {
+      sctreeData,
+      treeData,
+      totalRow,
+      formatTotal,
+      tableData,
+      dynamicColumns,
+      schandleNodeClick,
+      handleSelectionChange,
+      updateCompanyFunc,
+      handleNodeClick,
+    };
+  },
+};
+</script>

File diff suppressed because it is too large
+ 358 - 501
src/view/yunyin/shengchanguanli/gongdanziliao.vue


+ 589 - 0
src/view/yunyin/shengchanguanli/shebeiyunxing.vue

@@ -0,0 +1,589 @@
+<template>
+  <div>
+    <el-container>
+      <el-aside width="340px">
+        <div class="JKWTree-tree">
+          <h3> 组织列表</h3>
+          <el-tree :data="sctreeData" :props="defaultProps" @node-click="schandleNodeClick"></el-tree>
+          <el-tree
+              :data="treeData"
+              :props="defaultProps"
+              @node-click="handleNodeClick"></el-tree>
+        </div>
+      </el-aside>
+      <el-container>
+        <!--        <el-header>dd</el-header>-->
+        <el-main>
+
+          <!-- 搜索框 -->
+          <div class="gva-search-box">
+            <el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule" @keyup.enter="onSubmit">
+
+              <!-- 左侧查询输入框 -->
+              <el-form-item>
+                <el-input v-model="searchInfo.keyword" placeholder="" clearable style="width: 300px;"></el-input>
+              </el-form-item>
+
+              <!-- 查询和重置按钮 -->
+              <el-form-item>
+                <el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
+                <el-button icon="refresh" @click="onReset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
+
+          <div class="gva-table-box">
+            <div class="gva-btn-list">
+              <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
+              <!--              <el-button type="primary" style="width: 110px;" >查找工单</el-button>-->
+              <!--              <el-button type="primary" style="width: 110px;" >工单状态设置</el-button>-->
+              <!--              <el-button type="primary" style="width: 110px;" >工单状态更正</el-button>-->
+              <!--              <el-button type="primary" style="width: 110px;" >引用实际参数</el-button>-->
+              <!--              <el-button type="primary" style="width: 110px;" >排程参数维护</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >排程参数复制</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >编辑生产计划</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >工单打印</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >工序产量核查</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >流程单查询</el-button>-->
+              <!--              <el-button type="primary" icon="plus" style="width: 110px;" >工单筛选</el-button>-->
+            </div>
+
+            <el-table ref="multipleTable"
+                      style="width: 100%"
+                      border
+                      tooltip-effect="dark"
+                      :data="tableData"
+                      row-key="ID"
+                      @selection-change="handleSelectionChange">
+              <el-table-column type="selection" width="55"/>
+              <el-table-column align="left" label="生产分类" prop="生产分类" width="120" />
+              <el-table-column align="left" label="工单编号" prop="工单编号" width="120" />
+              <el-table-column align="left" label="产品代号" prop="产品代号" width="120" />
+              <el-table-column align="left" label="产品名称" prop="产品名称" width="200" />
+              <el-table-column align="left" label="接单日期" prop="接单日期" width="160" />
+              <el-table-column align="left" label="交货日期" prop="交货日期" width="160" />
+              <el-table-column align="left" label="订单数量" prop="订单数量" width="120" />
+              <el-table-column align="left" label="计量单位" prop="计量单位" width="120" />
+              <el-table-column align="left" label="客户名称" prop="客户名称" width="200" />
+              <el-table-column align="left" label="客户编号" prop="客户编号" width="120" />
+              <el-table-column align="left" label="备注" prop="备注" width="120" />
+              <el-table-column align="left" label="客户料号" prop="客户料号" width="120" />
+              <el-table-column align="left" label="创建用户" prop="创建用户" width="160" />
+              <el-table-column align="left" label="创建时间" prop="创建时间" width="160" />
+              <el-table-column align="left" label="修改时间" prop="修改时间" width="160" />
+              <el-table-column align="left" label="UNIQID" prop="UNIQID" width="120" />
+              <el-table-column align="left" label="投料率" prop="投料率" width="120" />
+              <el-table-column align="left" label="销售订单号" prop="销售订单号" width="120" />
+              <el-table-column align="left" label="操作" min-width="120" fixed='right'>
+                <template #default="scope">
+                  <el-button type="primary" link icon="edit" class="table-button" @click="updateCompanyFunc(scope.row)">变更</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <!--            <div class="gva-pagination">-->
+            <!--              <el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize" :page-sizes="[5,10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange"/>-->
+            <!--            </div>-->
+          </div>
+
+          <!-- 弹窗 -->
+          <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加产品资料':'修改产品资料'" destroy-on-close>
+            <el-row>
+              <!-- 左侧表单 -->
+              <el-col :span="8">
+                <el-scrollbar height="500px">
+                  <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="100px">
+                    <el-form-item label="客户料号:" prop="address">
+                      <el-input v-model="formData.address" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="产品编号:" prop="gender">
+                      <el-input v-model="formData.gender" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="产品名称:" prop="idCard">
+                      <el-input v-model="formData.idCard" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="版本号:" prop="department">
+                      <el-input v-model="formData.department" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="成品规格:" prop="joinDate">
+                      <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="单位:" prop="joinDate">
+                      <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="产品分类:" prop="joinDate">
+                      <el-input v-model="formData.joinDate" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                  </el-form>
+                </el-scrollbar>
+              </el-col>
+
+              <!-- 中间表单 -->
+              <el-col :span="8">
+                <el-scrollbar height="500px">
+                  <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="100px">
+                    <el-form-item label="最近接单日期:" prop="name">
+                      <el-input v-model="formData.name" :clearable="true" placeholder=":" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="最近引用日期:" prop="birthDate">
+                      <el-input v-model="formData.birthDate" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="印件数:" prop="position">
+                      <el-input v-model="formData.position" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="工艺:" prop="departmentId">
+                      <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="当前状态:" prop="departmentId">
+                      <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="最后修改:" prop="departmentId">
+                      <el-input v-model="formData.departmentId" :clearable="true" placeholder=":" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="建档时间:" prop="departmentId">
+                      <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                    <el-form-item label="更新时间:" prop="departmentId">
+                      <el-input v-model="formData.departmentId" :clearable="true" placeholder="" style="width: 180px;" />
+                    </el-form-item>
+                  </el-form>
+                </el-scrollbar>
+              </el-col>
+
+            </el-row>
+
+            <template #footer>
+              <div class="dialog-footer">
+                <el-button @click="closeDialog">取 消</el-button>
+                <el-button type="primary" @click="enterDialog">确 定</el-button>
+              </div>
+            </template>
+          </el-dialog>
+
+          <!-- 详情展示弹窗 -->
+          <el-dialog v-model="detailShow" style="width: 800px" lock-scroll :before-close="closeDetailShow" title="员工基本资料管理" destroy-on-close>
+            <el-scrollbar height="550px">
+              <el-descriptions column="2" border>
+                <!-- 左侧部分 -->
+                <el-descriptions-item label="客户料号" :min-width="labelMinWidth">
+                  {{ formData.employeeId }}
+                </el-descriptions-item>
+                <el-descriptions-item label="产品编号" :min-width="labelMinWidth">
+                  {{ formData.gender }}
+                </el-descriptions-item>
+                <el-descriptions-item label="产品名称" :min-width="labelMinWidth">
+                  {{ formData.idCard }}
+                </el-descriptions-item>
+                <el-descriptions-item label="版本号" :min-width="labelMinWidth">
+                  {{ formData.sectionName }}
+                </el-descriptions-item>
+                <el-descriptions-item label="成品规格" :min-width="labelMinWidth">
+                  {{ formData.employeeId }}
+                </el-descriptions-item>
+                <el-descriptions-item label="单位" :min-width="labelMinWidth">
+                  {{ formData.gender }}
+                </el-descriptions-item>
+                <el-descriptions-item label="产品分类" :min-width="labelMinWidth">
+                  {{ formData.idCard }}
+                </el-descriptions-item>
+
+                <!-- 右侧部分 -->
+                <el-descriptions-item label="最近接单日期" :min-width="labelMinWidth">
+                  {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="最近引用日期" :min-width="labelMinWidth">
+                  {{ formData.birthdate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="印件数" :min-width="labelMinWidth">
+                  {{ formData.position }}
+                </el-descriptions-item>
+                <el-descriptions-item label="工艺" :min-width="labelMinWidth">
+                  {{ formData.departmentId }}
+                </el-descriptions-item>
+                <el-descriptions-item label="当前状态" :min-width="labelMinWidth">
+                  {{ formData.name }}
+                </el-descriptions-item>
+                <el-descriptions-item label="最后修改" :min-width="labelMinWidth">
+                  {{ formData.birthdate }}
+                </el-descriptions-item>
+                <el-descriptions-item label="建档时间" :min-width="labelMinWidth">
+                  {{ formData.position }}
+                </el-descriptions-item>
+                <el-descriptions-item label="更新时间" :min-width="labelMinWidth">
+                  {{ formData.departmentId }}
+                </el-descriptions-item>
+              </el-descriptions>
+            </el-scrollbar>
+
+          </el-dialog>
+        </el-main>
+      </el-container>
+    </el-container>
+  </div>
+</template>
+
+<script setup>
+// 全量引入格式化工具 请按需保留
+import {createCompany, deleteCompany, deleteCompanyByIds, updateCompany, findCompany, getCompanyList} from '@/api/company'
+import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, reactive } from 'vue'
+import {DataList, getProduct, Project, workbench} from "@/api/yunyin/yunying";
+defineOptions({name: 'Company'})
+
+// =========== 左侧树侧形结构 ===========
+const sctreeData = ref([
+  {
+    label: '设备定额及分配参数设置',
+    children:[
+      {label: '1.计划中工单', number: 1 },
+      {label: '2.排程中工单', number: 2 },
+      {label: '3.制程中工单', number: 3 },
+      {label: '4.已完工工单', number: 4 }
+    ],
+  }
+]);
+
+const treeData = ref([]);
+//点击 设备定额及分配参数设置
+const schandleNodeClick = async (node) => {
+  switch (node.number) {
+    case 1:
+      const Projectdata = await Project();
+      tableData.value = Projectdata.data
+      // const productCountMap = tableData.value.reduce((countMap, item) => {
+      //   const productName = item.产品名称;
+      //   countMap[productName] = (countMap[productName] || 0) + 1;
+      //   return countMap;
+      // }, {});
+      // const productCountMapLength = Object.keys(productCountMap).length;
+      // console.log(`产品名称总数量:${productCountMapLength}`);
+      break;
+    case 2:
+      break;
+    case 3:
+      break;
+    case 4:
+      break;
+  }
+};
+const workbenchdata = async () => {
+  try {
+    const data = await workbench();
+    const rawData = data.data;
+    const dataArray =Object.keys(rawData).map(key => ({
+      label: key,
+      children: Object.keys(rawData[key]).map(subKey => ({
+        label: subKey,
+        children: rawData[key][subKey].map(item => ({
+          label: item
+        }))
+      }))
+    }));
+    treeData.value = dataArray;
+    // console.log(dataArray);
+  } catch (error) {
+    console.error(error);
+  }
+};
+workbenchdata();
+
+//点击左侧树形获取列表
+const tableData = ref([])
+const handleNodeClick = async (node) => {
+  const custom_code = node.label; // 假设你想使用节点的 label 作为 custom_code
+  console.log(custom_code);
+
+  // 通过 custom_code 客户编号获取列表数据
+  try {
+    const WorkListdata = await getProduct({ custom_code, limit: pageSize.value, page: page.value });
+    console.log(WorkListdata)
+    tableData.splice(0, tableData.length, ...WorkListdata.data.data);
+    // total.value = tableData.length;
+  } catch (error) {
+    console.error(error);
+  }
+
+  // 检查并设置子节点的 expanded 属性,以确保它们能够正确展开
+  if (node.children && node.children.length > 0) {
+    node.children.forEach((child) => {
+      this.$set(child, 'expanded', false);
+    });
+  }
+
+};
+
+
+
+
+
+
+
+// 自动化生成的字典(可能为空)以及字段
+const formData = ref({
+  address: '',
+  image: '',
+  name: '',
+})
+
+// 验证规则
+const rule = reactive({
+})
+
+const searchRule = reactive({
+  createdAt: [
+    { validator: (rule, value, callback) => {
+        if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
+          callback(new Error('请填写结束日期'))
+        } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
+          callback(new Error('请填写开始日期'))
+        } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
+          callback(new Error('开始日期应当早于结束日期'))
+        } else {
+          callback()
+        }
+      }, trigger: 'change' }
+  ],
+})
+
+const elFormRef = ref()
+const elSearchFormRef = ref()
+
+// =========== 表格控制部分 ===========
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+const searchInfo = ref({})
+
+// 重置
+const onReset = () => {
+  searchInfo.value = {}
+  getTableData()
+}
+
+// 搜索
+const onSubmit = () => {
+  elSearchFormRef.value?.validate(async(valid) => {
+    if (!valid) return
+    page.value = 1
+    pageSize.value = 10
+    getTableData()
+  })
+}
+
+// 分页
+const handleSizeChange = (val) => {
+  pageSize.value = val
+  getTableData()
+}
+
+// 修改页面容量
+const handleCurrentChange = (val) => {
+  page.value = val
+  getTableData()
+}
+
+// 查询
+const getTableData = async() => {
+  const table = await getCompanyList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
+  if (table.code === 0) {
+    tableData.value = table.data.list
+    total.value = table.data.total
+    page.value = table.data.page
+    pageSize.value = table.data.pageSize
+  }
+}
+
+getTableData()
+
+// ============== 表格控制部分结束 ===============
+
+// 获取需要的字典 可能为空 按需保留
+const setOptions = async () =>{
+}
+
+// 获取需要的字典 可能为空 按需保留
+setOptions()
+
+
+// 多选数据
+const multipleSelection = ref([])
+// 多选
+const handleSelectionChange = (val) => {
+  multipleSelection.value = val
+}
+
+// 删除行
+const deleteRow = (row) => {
+  ElMessageBox.confirm('确定要删除吗?', '提示', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+    type: 'warning'
+  }).then(() => {
+    deleteCompanyFunc(row)
+  })
+}
+
+
+// 批量删除控制标记
+const deleteVisible = ref(false)
+
+// 多选删除
+const onDelete = async() => {
+  const ids = []
+  if (multipleSelection.value.length === 0) {
+    ElMessage({
+      type: 'warning',
+      message: '请选择要删除的数据'
+    })
+    return
+  }
+  multipleSelection.value &&
+  multipleSelection.value.map(item => {
+    ids.push(item.ID)
+  })
+  const res = await deleteCompanyByIds({ ids })
+  if (res.code === 0) {
+    ElMessage({
+      type: 'success',
+      message: '删除成功'
+    })
+    if (tableData.value.length === ids.length && page.value > 1) {
+      page.value--
+    }
+    deleteVisible.value = false
+    getTableData()
+  }
+}
+
+// 行为控制标记(弹窗内部需要增还是改)
+const type = ref('')
+
+// 更新行
+const updateCompanyFunc = async(row) => {
+  // const res = await findCompany({ ID: row.ID })
+  // type.value = 'update'
+  // if (res.code === 0) {
+  //     formData.value = res.data.recompany
+  //     dialogFormVisible.value = true
+  // }
+  dialogFormVisible.value = true
+}
+
+
+// 删除行
+const deleteCompanyFunc = async (row) => {
+  const res = await deleteCompany({ ID: row.ID })
+  if (res.code === 0) {
+    ElMessage({
+      type: 'success',
+      message: '删除成功'
+    })
+    if (tableData.value.length === 1 && page.value > 1) {
+      page.value--
+    }
+    getTableData()
+  }
+}
+
+// 弹窗控制标记
+const dialogFormVisible = ref(false)
+
+
+// 查看详情控制标记
+const detailShow = ref(false)
+
+
+// 打开详情弹窗
+const openDetailShow = () => {
+  detailShow.value = true
+}
+
+
+// 打开详情
+const getDetails = async (row) => {
+  // 打开弹窗
+  const res = await findCompany({ ID: row.ID })
+  if (res.code === 0) {
+    formData.value = res.data.recompany
+    openDetailShow()
+  }
+}
+
+
+// 关闭详情弹窗
+const closeDetailShow = () => {
+  detailShow.value = false
+  formData.value = {
+    address: '',
+    image: '',
+    name: '',
+  }
+}
+
+
+// 打开弹窗
+const openDialog = () => {
+  type.value = 'create'
+  dialogFormVisible.value = true
+}
+
+// 关闭弹窗
+const closeDialog = () => {
+  dialogFormVisible.value = false
+  formData.value = {
+    address: '',
+    image: '',
+    name: '',
+  }
+}
+// 弹窗确定
+const enterDialog = async () => {
+  elFormRef.value?.validate( async (valid) => {
+    if (!valid) return
+    let res
+    switch (type.value) {
+      case 'create':
+        res = await createCompany(formData.value)
+        break
+      case 'update':
+        res = await updateCompany(formData.value)
+        break
+      default:
+        res = await createCompany(formData.value)
+        break
+    }
+    if (res.code === 0) {
+      ElMessage({
+        type: 'success',
+        message: '创建/更改成功'
+      })
+      closeDialog()
+      getTableData()
+    }
+  })
+}
+
+</script>
+
+<style>
+.JKWTree-container {
+  display: flex;
+}
+
+.JKWTree-tree {
+  width: 300px;
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 20px;
+}
+
+.JKWTree-tree h3 {
+  font-size: 15px;
+  font-weight: 700;
+  margin: 10px 0;
+}
+
+.JKWTree-content {
+  flex: 1;
+}
+</style>

Some files were not shown because too many files changed in this diff