feat(订单明细): 添加删除订单明细功能
feat(辅料管理): 新增辅料变动记录功能 feat(仪表拓扑): 在仪表标签中显示上次抄表记录 fix(设备管理): 修复图片预览空值问题 refactor(员工管理): 部门树显示负责人信息 style(备件变动): 优化备件变动页面布局 docs(订单记录): 更新操作类型映射表 test(销售异议): 新增销售异议管理模块 chore: 更新.gitignore文件
This commit is contained in:
@@ -8,17 +8,20 @@
|
||||
<el-button size="small" icon="el-icon-refresh" @click="loadDeptTree">刷新</el-button>
|
||||
</div>
|
||||
<div class="tree-wrapper">
|
||||
<el-tree
|
||||
v-loading="deptLoading"
|
||||
:data="deptTree"
|
||||
:props="{ label: 'deptName', children: 'children' }"
|
||||
node-key="deptId"
|
||||
default-expand-all
|
||||
highlight-current
|
||||
:expand-on-click-node="false"
|
||||
@node-click="handleDeptNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node }" class="tree-node-label">{{ node.label }}</span>
|
||||
<el-tree v-loading="deptLoading" :data="deptTree" :props="{ label: 'deptName', children: 'children' }"
|
||||
node-key="deptId" default-expand-all highlight-current :expand-on-click-node="false"
|
||||
@node-click="handleDeptNodeClick">
|
||||
<span slot-scope="{ node }" class="tree-node-label">
|
||||
<span>
|
||||
{{ node.label }}
|
||||
</span>
|
||||
<span v-if="node.data.leader" class="leader-tag">
|
||||
({{ node.data.leader }})
|
||||
</span>
|
||||
<span v-else class="leader-tag" style="color: red;" @click="goDept">
|
||||
请配置负责人
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
</el-card>
|
||||
@@ -28,33 +31,14 @@
|
||||
<div slot="header" class="card-header">
|
||||
<span class="header-title">员工档案</span>
|
||||
<div class="header-actions">
|
||||
<el-input
|
||||
v-model="query.empName"
|
||||
placeholder="姓名/工号"
|
||||
size="small"
|
||||
clearable
|
||||
style="width: 180px;"
|
||||
@keyup.enter.native="loadEmployeeList"
|
||||
/>
|
||||
<el-select
|
||||
v-model="query.postId"
|
||||
size="small"
|
||||
placeholder="岗位"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 160px;"
|
||||
@change="loadEmployeeList"
|
||||
>
|
||||
<el-input v-model="query.empName" placeholder="姓名/工号" size="small" clearable style="width: 180px;"
|
||||
@keyup.enter.native="loadEmployeeList" />
|
||||
<el-select v-model="query.postId" size="small" placeholder="岗位" clearable filterable style="width: 160px;"
|
||||
@change="loadEmployeeList">
|
||||
<el-option v-for="post in postOptions" :key="post.postId" :label="post.postName" :value="post.postId" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="query.status"
|
||||
size="small"
|
||||
placeholder="状态"
|
||||
clearable
|
||||
style="width: 120px;"
|
||||
@change="loadEmployeeList"
|
||||
>
|
||||
<el-select v-model="query.status" size="small" placeholder="状态" clearable style="width: 120px;"
|
||||
@change="loadEmployeeList">
|
||||
<el-option label="在职" value="onboard" />
|
||||
<el-option label="离职" value="leave" />
|
||||
</el-select>
|
||||
@@ -62,7 +46,7 @@
|
||||
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleAdd">新增员工</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<el-table :data="employeeList" v-loading="empLoading" stripe height="calc(100vh - 220px)">
|
||||
<el-table-column prop="empNo" label="工号" min-width="110" />
|
||||
<el-table-column prop="empName" label="姓名" min-width="120" />
|
||||
@@ -71,7 +55,8 @@
|
||||
<el-table-column prop="mobile" label="手机号" min-width="130" />
|
||||
<el-table-column prop="status" label="状态" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.status === 'onboard' ? 'success' : 'info'" size="small">{{ scope.row.status === 'onboard' ? '在职' : '离职' }}</el-tag>
|
||||
<el-tag :type="scope.row.status === 'onboard' ? 'success' : 'info'" size="small">{{ scope.row.status ===
|
||||
'onboard' ? '在职' : '离职' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
@@ -83,15 +68,9 @@
|
||||
</el-table>
|
||||
|
||||
<div class="pagination-wrapper">
|
||||
<el-pagination
|
||||
:current-page="query.pageNum"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="query.pageSize"
|
||||
:total="total"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handlePageChange"
|
||||
/>
|
||||
<el-pagination :current-page="query.pageNum" :page-sizes="[10, 20, 50, 100]" :page-size="query.pageSize"
|
||||
:total="total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
|
||||
@current-change="handlePageChange" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
@@ -114,15 +93,9 @@
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主部门" prop="deptId">
|
||||
<el-cascader
|
||||
v-model="empForm.deptId"
|
||||
:options="deptTree"
|
||||
<el-cascader v-model="empForm.deptId" :options="deptTree"
|
||||
:props="{ label: 'deptName', value: 'deptId', children: 'children', emitPath: false, checkStrictly: true }"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="请选择主部门"
|
||||
style="width: 100%"
|
||||
/>
|
||||
clearable filterable placeholder="请选择主部门" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -165,23 +138,12 @@
|
||||
</el-row>
|
||||
<el-row :gutter="16" v-if="empForm.linkUser">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="选择用户" prop="userId" :rules="empForm.linkUser ? [{ required: true, message: '请选择系统用户', trigger: 'change' }] : []">
|
||||
<el-select
|
||||
v-model="empForm.userId"
|
||||
placeholder="请选择系统用户"
|
||||
filterable
|
||||
remote
|
||||
:remote-method="searchUsers"
|
||||
:loading="userLoading"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="user in userOptions"
|
||||
:key="user.userId"
|
||||
:label="`${user.userName} (${user.nickName || ''})`"
|
||||
:value="user.userId"
|
||||
/>
|
||||
<el-form-item label="选择用户" prop="userId"
|
||||
:rules="empForm.linkUser ? [{ required: true, message: '请选择系统用户', trigger: 'change' }] : []">
|
||||
<el-select v-model="empForm.userId" placeholder="请选择系统用户" filterable remote :remote-method="searchUsers"
|
||||
:loading="userLoading" style="width: 100%" clearable>
|
||||
<el-option v-for="user in userOptions" :key="user.userId"
|
||||
:label="`${user.userName} (${user.nickName || ''})`" :value="user.userId" />
|
||||
</el-select>
|
||||
<div class="form-hint" v-if="!userSearchHint">
|
||||
<span v-if="empForm.empName">已根据姓名"{{ empForm.empName }}"自动搜索,</span>
|
||||
@@ -256,6 +218,9 @@ export default {
|
||||
this.deptLoading = false
|
||||
})
|
||||
},
|
||||
goDept() {
|
||||
this.$router.push('/renshi/dept')
|
||||
},
|
||||
buildTree(list) {
|
||||
const map = {}
|
||||
const roots = []
|
||||
@@ -456,46 +421,57 @@ export default {
|
||||
padding: 20px;
|
||||
background-color: #f0f2f5;
|
||||
}
|
||||
|
||||
.main-layout {
|
||||
display: grid;
|
||||
grid-template-columns: 280px 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
.dept-tree-card, .employee-list-card {
|
||||
|
||||
.dept-tree-card,
|
||||
.employee-list-card {
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.header-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.header-actions {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-wrapper {
|
||||
height: calc(100vh - 160px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.tree-node-label {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pagination-wrapper {
|
||||
margin-top: 16px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.form-hint {
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user