Kaynağa Gözat

运营管理

liuhairui 1 yıl önce
ebeveyn
işleme
93c2bdf4be

+ 558 - 0
src/view/yunyin/chanpinziliao/chanpinziliao.vue

@@ -0,0 +1,558 @@
+<template>
+  <div>
+    <el-container>
+      <el-aside width="270px">
+        <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>
+               <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-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="日期" width="180">
+                <template #default="scope">{{ formatDate(scope.row.CreatedAt) }}</template>
+              </el-table-column> -->
+              <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="120" />
+			  <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="操作" min-width="120" 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'
+
+defineOptions({
+    name: 'Company'
+})
+
+const treeData = ref([
+  {
+    label: '产品管理',
+    children: [
+      {
+        label: '1001[浙江中烟]',
+      },
+      {
+        label: '1002[河南中烟]',
+      },
+      {
+        label: '1003[湖南中烟]',
+      }
+    ],
+  },
+]);
+
+const handleNodeClick = (node,check) => {
+  //存放当前节点的nodeId
+  console.log(node,check);
+
+}
+// 自动化生成的字典(可能为空)以及字段
+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 = reactive([
+	{
+	'employeenumber':'001',
+	'employeename':'0001',
+	'gender':'产品1'
+	},
+	
+	{
+	'employeenumber':'002',
+	'employeename':'0002',
+	'gender':'产品2'
+	},
+	
+	{
+	'employeenumber':'003',
+	'employeename':'0003',
+	'gender':'产品3'
+	},
+	
+	{
+	'employeenumber':'004',
+	'employeename':'0004',
+	'gender':'产品4'
+	},
+	
+])
+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>

+ 853 - 0
src/view/yunyin/renliziyuan/renyuanjibenziliao.vue

@@ -1,4 +1,5 @@
 <template>
+<<<<<<< HEAD
   <div>
 
     <el-container>
@@ -466,3 +467,855 @@ const enterDialog = async () => {
   flex: 1;
 }
 </style>
+=======
+	<div>
+		<el-container>
+			<!-- 左侧树形结构 -->
+			<el-aside width="270px">
+				<div class="JKWTree-tree">
+					<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.ke" 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>
+							<!-- 导出到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">
+								<el-checkbox label="employeenumber">员工编号</el-checkbox>
+								<el-checkbox label="employeename">员工姓名</el-checkbox>
+								<el-checkbox label="gender">性别</el-checkbox>
+								<!-- 添加更多字段选项 -->
+							</el-checkbox-group>
+							<div slot="footer" class="dialog-footer">
+								<el-button @click="exportDialogVisible = false">取 消</el-button>
+								<el-button type="primary" @click="exportSelectedFields">确 定</el-button>
+							</div>
+						</el-dialog>
+
+						<!-- 表格 -->
+						<el-table ref="multipleTable" style="width: 100%;" tooltip-effect="dark" :data="tableData"
+							row-key="ID" @row-dblclick="handleRowDoubleClick" @selection-change="handleSelectionChange">
+							<el-table-column type="selection" width="55" />
+							<el-table-column align="left" label="员工编号" prop="employeenumber" />
+							<el-table-column align="left" label="员工姓名" prop="employeename" />
+							<el-table-column align="left" label="性别" prop="gender" />
+							<el-table-column align="left" label="聘用日期" prop="EmploymentDate" width="120" />
+							<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="MES在职" prop="MESbe" width="120" />
+							<el-table-column align="left" label="U8在职" prop="Ube" width="120" />
+							<el-table-column align="left" label="U8离职日期" prop="Udata" width="120" />
+							<el-table-column align="left" label="创建用户" prop="Createuser" width="120" />
+							<el-table-column align="left" label="创建时间" prop="Createdata" width="120" />
+							<el-table-column align="left" label="修改时间" prop="editdata" width="120" />
+							<el-table-column align="left" label="U8UID" prop="UUID" width="120" />
+							<el-table-column align="left" label="UNIQID" prop="UNIQID" width="120" />
+							<el-table-column align="left" label="操作" min-width="120" 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>
+								</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-select v-model="formData.joinDate" placeholder="请选择人员类别"
+												style="width: 180px;">
+												<el-option label="生产" value="生产"></el-option>
+												<el-option label="行政" value="行政"></el-option>
+											</el-select>
+										</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-select v-model="formData.joinDate" placeholder="请选择工资表类别"
+												style="width: 180px;">
+												<el-option label="职员级计时工资表" value="职员级计时工资表"></el-option>
+												<el-option label="另发工资" value="另发工资"></el-option>
+												<el-option label="操作级计件工资表" value="操作级计件工资表"></el-option>
+												<el-option label="操作级计时工资表" value="操作级计时工资表"></el-option>
+											</el-select>
+										</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"
+											:rules="[{ required: true, message: '请输入姓名', trigger: 'blur' }]">
+											<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-select v-model="formData.joinDate" placeholder="请选择人员性质"
+												style="width: 180px;">
+												<el-option label="退休返聘" value="退休返聘"></el-option>
+												<el-option label="劳动合同工" value="劳动合同工"></el-option>
+												<el-option label="借用" value="借用"></el-option>
+												<el-option label="劳务派遣" value="劳务派遣"></el-option>
+												<el-option label="实习生" value="实习生"></el-option>
+											</el-select>
+										</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>
+							<!-- 右侧图片 -->
+							<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>
+
+						<!-- 添加 编辑页面 取消 确定 -->
+						<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: 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>
+		</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'
+
+	defineOptions({
+		name: 'Company'
+	})
+
+
+
+	const treeData = ref([{
+		label: '组织架构',
+		children: [{
+				label: '总裁办',
+			},
+			{
+				label: '管理中心<69人>',
+				children: [{
+						label: '管理中心办公室<1人>',
+					},
+					{
+						label: '战略发展部<4人>',
+					},
+					{
+						label: '人力资源部<22人>',
+					},
+					{
+						label: '财务部<9人>',
+					},
+					{
+						label: '总裁办公室<17人>',
+					},
+					{
+						label: '安环办<9人>',
+					},
+					{
+						label: '美浓创新中心项目<7人>',
+					},
+				],
+			},
+			{
+				label: '技术中心<74人>',
+				children: [{
+						label: '基础研究部<7人>',
+					},
+					{
+						label: '新品开发部<5人>',
+					},
+					{
+						label: '精品试验车间<21人>',
+					},
+					{
+						label: '技术工艺部<14人>',
+					},
+					{
+						label: '技术发展部<1人>',
+					},
+					{
+						label: '设计《杭州)<15人>',
+					},
+					{
+						label: '技术中心办公室<4人>',
+					},
+					{
+						label: '信息部<7人>',
+					},
+				],
+			},
+			{
+				label: '营销中心<23人>',
+				children: [{
+						label: '营销部<19人>',
+					},
+					{
+						label: '招投标管理办公室<<4人>',
+					},
+				],
+			},
+			{
+				label: '制造中心<586人>',
+				children: [{
+						label: '品保部<41人>',
+					},
+					{
+						label: '供应部<16人>',
+						children: [{
+								label: '供应部办公室<6人>',
+							},
+							{
+								label: '原材料仓库<10人>',
+							},
+						],
+					},
+					{
+						label: '设备管理部<24人>',
+					},
+					{
+						label: '生产部<38人>',
+					},
+					{
+						label: '胶印车间<64人>',
+					},
+					{
+						label: '凹印车间<56人>',
+					},
+					{
+						label: '丝印车间<52人>',
+					},
+					{
+						label: '模切车间<113人>',
+					},
+					{
+						label: '检验车间<174人>',
+					},
+					{
+						label: '制造中小办公室<8人>',
+					},
+				],
+			},
+			{
+				label: '离职工资结算中<29人>',
+			},
+			{
+				label: '离职清单<2107>',
+			},
+		],
+	}, ]);
+
+
+
+
+	const handleNodeClick = (node, check) => {
+		//存放当前节点的nodeId
+		console.log(node, check);
+
+	}
+	// 自动化生成的字典(可能为空)以及字段
+	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 = reactive([{
+			'employeenumber': '001',
+			'employeename': '张',
+			'gender': '男'
+		},
+
+		{
+			'employeenumber': '002',
+			'employeename': '王',
+			'gender': '男'
+		},
+
+		{
+			'employeenumber': '003',
+			'employeename': '黄',
+			'gender': '男'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+		{
+			'employeenumber': '004',
+			'employeename': '昭',
+			'gender': '女'
+		},
+
+	])
+	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()
+		// }
+		detailShow.value = true
+
+	}
+
+
+	// 关闭详情弹窗
+	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;
+	}
+
+	/* 图片上传 */
+	.upload-box {
+		width: 200px;
+		height: 200px;
+		border: 2px dashed #e2e2e2;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		position: relative;
+		cursor: pointer;
+	}
+
+	.uploaded-image {
+		width: 100%;
+		height: 100%;
+		object-fit: cover;
+	}
+
+	.upload-icon {
+		font-size: 40px;
+		color: #c0c4cc;
+	}
+
+	.file-input {
+		display: none;
+	}
+</style>
+>>>>>>> 44d5f25 (运营)

+ 560 - 0
src/view/yunyin/shengchanguanli/gongdanshengchan.vue

@@ -0,0 +1,560 @@
+<template>
+  <div>
+    <el-container>
+      <el-aside width="270px">
+        <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>
+               <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-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="日期" width="180">
+                <template #default="scope">{{ formatDate(scope.row.CreatedAt) }}</template>
+              </el-table-column> -->
+              <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="120" />
+			  <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'>
+                <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'
+
+defineOptions({
+    name: 'Company'
+})
+
+const treeData = ref([
+  {
+    label: '产品管理',
+    children: [
+      {
+        label: '1001[浙江中烟]',
+      },
+      {
+        label: '1002[河南中烟]',
+      },
+      {
+        label: '1003[湖南中烟]',
+      }
+    ],
+  },
+]);
+
+const handleNodeClick = (node,check) => {
+  //存放当前节点的nodeId
+  console.log(node,check);
+
+}
+// 自动化生成的字典(可能为空)以及字段
+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 = reactive([
+	{
+	'employeenumber':'001',
+	'employeename':'0001',
+	'gender':'产品1'
+	},
+	
+	{
+	'employeenumber':'002',
+	'employeename':'0002',
+	'gender':'产品2'
+	},
+	
+	{
+	'employeenumber':'003',
+	'employeename':'0003',
+	'gender':'产品3'
+	},
+	
+	{
+	'employeenumber':'004',
+	'employeename':'0004',
+	'gender':'产品4'
+	},
+	
+])
+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>

+ 648 - 0
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -0,0 +1,648 @@
+<template>
+  <div>
+    <el-container>
+      <!-- 左侧树形结构 -->
+      <el-aside width="270px">
+        <div class="JKWTree-tree">
+          <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-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>
+				<!-- 导出到Excel功能 -->
+				<el-dropdown>
+				  <el-button type="primary" icon="el-icon-download" style="margin-left: 10px;">导出到Excel</el-button>
+				  <el-dropdown-menu slot="dropdown">
+					<el-dropdown-item @click="exportToExcel('field1')">字段1</el-dropdown-item>
+					<el-dropdown-item @click="exportToExcel('field2')">字段2</el-dropdown-item>
+					<!-- 添加更多字段选项 -->
+				  </el-dropdown-menu>
+				</el-dropdown>
+            </div>
+
+            <!-- 表格 -->
+            <el-table ref="multipleTable" style="width: 100%;" tooltip-effect="dark" :data="tableData" row-key="ID" @row-dblclick="handleRowDoubleClick" @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="120" />
+					  <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="Createuser" width="120" />
+					  <el-table-column align="left" label="产量提交时间" prop="Createdata" width="120" />
+					  <el-table-column align="left" label="建档用户" prop="editdata" width="120" />
+					  <el-table-column align="left" label="建档时间" prop="editdata" width="120" />
+					  <el-table-column align="left" label="更新时间" prop="editdata" 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="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange"/>
+            </div>
+          </div>
+		  
+		  
+
+         <!-- 弹窗 -->
+         <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" style="width: 1000px;" :title="type==='create'?'添加工单资料':'修改工单资料'" destroy-on-close>
+           <el-row>
+             <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" >
+				<!-- 第一排 -->
+                <el-row :gutter="20">
+                  <el-col :span="6">
+                    <el-form-item label="重点工单:" prop="keyOrder">
+                      <el-input v-model="formData.keyOrder" :clearable="true" placeholder=""/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="7">
+                    <el-form-item label="开单日期" prop="orderDate">
+                      <el-date-picker v-model="formData.orderDate" type="date" placeholder="选择日期" :clearable="true"  />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="5">
+                    <el-form-item label="工单编号:" prop="orderNumber">
+                      <el-input v-model="formData.orderNumber" :clearable="true" placeholder="" />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="5">
+                    <el-form-item label="生产类型:" prop="productionType">
+                      <el-input v-model="formData.productionType" :clearable="true" placeholder="" />
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+				
+				  <!-- 第二排 -->
+				  <el-row :gutter="20">
+					<el-col :span="6">
+					  <el-form-item label="客户代号:" prop="customerCode">
+						<el-input v-model="formData.customerCode" :clearable="true" placeholder=""  />
+					  </el-form-item>
+					</el-col>
+					<el-col :span="14">
+					  <el-form-item label="客户名称:" prop="customerName">
+						<el-input v-model="formData.customerName" :clearable="true" placeholder=""  />
+					  </el-form-item>
+					</el-col>
+				  </el-row>
+				  
+				  <!-- 第三排 -->
+				  <el-row :gutter="20">
+					<el-col :span="6">
+					  <el-form-item label="产品代码:" prop="productCode">
+						<el-input v-model="formData.productCode" :clearable="true" placeholder=""/>
+					  </el-form-item>
+					</el-col>
+					<el-col :span="14">
+					  <el-form-item label="产品名称:" prop="productName">
+						<el-input v-model="formData.productName" :clearable="true" placeholder="" />
+					  </el-form-item>
+					</el-col>
+				  </el-row>
+				  
+                  <!-- 第四排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="6">
+                      <el-form-item label="印件代码:" prop="customerCode">
+                        <el-input v-model="formData.customerCode" :clearable="true" placeholder="" />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="14">
+                      <el-form-item label="印件名称:" prop="customerName">
+                        <el-input v-model="formData.customerName" :clearable="true" placeholder=""  />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+				  
+                 
+                  <!-- 第五排 -->
+				  <el-row :gutter="20">
+				    <el-col :span="6">
+				      <el-form-item label="订单数量:" prop="orderQuantity">
+				        <el-input v-model="formData.orderQuantity" :clearable="true" placeholder="" style="width: 140px;" />
+				      </el-form-item>
+				    </el-col>
+				    <el-col :span="6">
+				      <el-form-item label="交货日期:" prop="deliveryDate">
+				        <el-input v-model="formData.deliveryDate" :clearable="true" placeholder="" style="width: 140px;" />
+				      </el-form-item>
+				    </el-col>
+				    <el-col :span="6">
+				      <el-form-item label="投料率:" prop="feedRate">
+				        <el-input v-model="formData.feedRate" :clearable="true" placeholder="" style="width: 140px;" />
+				      </el-form-item>
+				    </el-col>
+				    <el-col :span="6">
+				      <el-form-item label="平均合格率:" prop="passRate">
+				        <el-input v-model="formData.passRate" :clearable="true" placeholder="" style="width: 140px;" />
+				      </el-form-item>
+				    </el-col>
+				  </el-row>
+                  
+				  
+              <!-- 第六排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="6">
+                      <el-form-item label="平张投料:" prop="flatFeed">
+                        <el-input v-model="formData.flatFeed" :clearable="true" placeholder="" style="width: 140px;" />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                      <el-form-item label="万小张:" prop="perTenThousand">
+                        <el-input v-model="formData.perTenThousand" :clearable="true" placeholder="" style="width: 140px;" />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                      <el-form-item label="投料大箱:" prop="feedBox">
+                        <el-input v-model="formData.feedBox" :clearable="true" placeholder="" style="width: 140px;" />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                      <el-form-item label="库存大箱:" prop="stockBox">
+                        <el-input v-model="formData.stockBox" :clearable="true" placeholder="" style="width: 140px;" />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第七排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="20">
+                      <el-form-item label="销售订单号:" prop="salesOrder">
+                        <el-input v-model="formData.salesOrder" :clearable="true" placeholder="" />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第八排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="20">
+                      <el-form-item label="警语版面:" prop="warningLayout">
+                        <el-input v-model="formData.warningLayout" :clearable="true" placeholder=""  />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第九排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="6">
+                      <el-form-item label="版本号:" prop="versionNumber">
+                        <el-input v-model="formData.versionNumber" :clearable="true" placeholder="" />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="14">
+                      <el-form-item label="客户ERP编码:" prop="customerErpCode">
+                        <el-input v-model="formData.customerErpCode" :clearable="true" placeholder=""  />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第十排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="8">
+                      <el-form-item label="码源数量:" prop="codeSourceQuantity">
+                        <el-input v-model="formData.codeSourceQuantity" :clearable="true" placeholder="" style="width: 170px;" />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第十一排 -->
+                  <el-row :gutter="20">
+                    <el-col :span="20">
+                      <el-form-item label="进程备注:" prop="processNote">
+                        <el-input v-model="formData.processNote" :clearable="true" placeholder=""  />
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+				  
+                  <!-- 第十二排 -->
+                 <el-row :gutter="20">
+                   <el-col :span="20">
+                     <el-form-item label="备注说明:" prop="remark">
+                       <el-input type="textarea" v-model="formData.remark" :rows="4" :clearable="true" placeholder="请输入备注说明" style="width: 100%;" />
+                     </el-form-item>
+                   </el-col>
+                 </el-row>
+				 
+             </el-form>
+           </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-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'
+
+defineOptions({
+    name: 'Company'
+})
+
+
+
+const treeData = ref([
+  {
+    label: '工单管理【计划中:1生产中:346】',
+    children: [
+      {
+        label: '1001 【生产中:55【浙江中烟】',
+      },
+      {
+        label: '云南中烟',
+      },
+    ],
+  },
+]);
+
+
+
+const handleNodeClick = (node,check) => {
+  //存放当前节点的nodeId
+  console.log(node,check);
+
+}
+// 自动化生成的字典(可能为空)以及字段
+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 = reactive([
+	{
+	'employeenumber':'001',
+	'employeename':'张',
+	'gender':'男'
+	},
+	
+	{
+	'employeenumber':'002',
+	'employeename':'王',
+	'gender':'男'
+	},
+	
+	{
+	'employeenumber':'003',
+	'employeename':'黄',
+	'gender':'男'
+	},
+	
+	{
+	'employeenumber':'004',
+	'employeename':'昭',
+	'gender':'女'
+	},
+	
+])
+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()
+  // }
+   detailShow.value = true
+  
+}
+
+
+// 关闭详情弹窗
+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;
+}
+/* 图片上传 */
+.upload-box {
+	width: 200px;
+	height: 200px;
+	border: 2px dashed #e2e2e2;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	position: relative;
+	cursor: pointer;
+  }
+
+  .uploaded-image {
+	width: 100%;
+	height: 100%;
+	object-fit: cover;
+  }
+
+  .upload-icon {
+	font-size: 40px;
+	color: #c0c4cc;
+  }
+
+  .file-input {
+	display: none;
+  }
+
+</style>