测试提交

This commit is contained in:
tiezx 2025-07-17 15:07:13 +08:00
parent e5ee851cd3
commit b42c3ca7c9
13 changed files with 420 additions and 40 deletions

2
.gitignore vendored
View File

@ -21,3 +21,5 @@ selenium-debug.log
package-lock.json
yarn.lock
src/views/system/project/index.vue
src/views/business/supplier/index.vue

View File

@ -42,7 +42,8 @@
"dependencies": {
"@babel/parser": "7.7.4",
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.24.0",
"axios": "^1.10.0",
"bpmn-js-token-simulation": "0.10.0",
"clipboard": "2.0.8",
"core-js": "3.25.3",
"echarts": "5.4.0",
@ -57,22 +58,21 @@
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
"vue": "2.6.12",
"vue": "^3.5.17",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-meta": "2.4.0",
"vue-router": "3.4.9",
"vuedraggable": "2.24.3",
"vuex": "3.6.0",
"xml-js": "1.6.11",
"bpmn-js-token-simulation": "0.10.0"
"xml-js": "1.6.11"
},
"devDependencies": {
"@commitlint/cli": "^19.7.1",
"@commitlint/config-conventional": "^19.7.1",
"@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-plugin-eslint": "4.4.6",
"@vue/cli-service": "4.4.6",
"@vue/cli-plugin-babel": "^5.0.8",
"@vue/cli-plugin-eslint": "^5.0.8",
"@vue/cli-service": "^5.0.8",
"babel-eslint": "10.1.0",
"babel-plugin-dynamic-import-node": "2.3.3",
"bpmn-js": "7.5.0",

44
src/api/system/project.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询模板信息列表
export function listProject(query) {
return request({
url: '/system/project/list',
method: 'get',
params: query
})
}
// 查询模板信息详细
export function getProject(id) {
return request({
url: '/system/project/' + id,
method: 'get'
})
}
// 新增模板信息
export function addProject(data) {
return request({
url: '/system/project',
method: 'post',
data: data
})
}
// 修改模板信息
export function updateProject(data) {
return request({
url: '/system/project',
method: 'put',
data: data
})
}
// 删除模板信息
export function delProject(id) {
return request({
url: '/system/project/' + id,
method: 'delete'
})
}

View File

@ -142,3 +142,11 @@ export function deptTreeSelect() {
method: 'get'
})
}
// 查询用户列表
export function listAllUser() {
return request({
url: '/system/user/listAll',
method: 'get'
})
}

View File

@ -133,7 +133,7 @@
</template>
<script>
import { listOperatorRecord, getOperatorRecord, delOperatorRecord, addOperatorRecord, updateOperatorRecord } from "@/api/system/operatorRecord";
import { listOperatorRecord, getOperatorRecord, delOperatorRecord, addOperatorRecord, updateOperatorRecord } from "@/api/business/operatorRecord";
export default {
name: "OperatorRecord",

View File

@ -138,7 +138,7 @@
</template>
<script>
import { listProject, getProject, delProject, addProject, updateProject } from "@/api/system/project";
import { listProject, getProject, delProject, addProject, updateProject } from "@/api/business/project";
export default {
name: "Project",

View File

@ -33,6 +33,17 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<div class="el-form-item" v-hasPermi="['business:supplier:usermanager']">
<el-form-item label="管理人" prop="supplierManagers">
<el-input
v-model="queryParams.supplierManagers"
placeholder="姓名间用英文逗号隔开"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</div>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -92,8 +103,8 @@
<el-table-column label="供应商地址" align="center" prop="supplierAddress" />
<el-table-column label="供应商联系人" align="center" prop="supplierContact" />
<el-table-column label="供应商联系方式" align="center" prop="supplierContactNum" />
<el-table-column label="认领人" align="center" />
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
<!--<el-table-column label="认领人" align="center" /> -->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -141,6 +152,35 @@
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<!-- 管理人员信息表格 -->
<div ref="userManagerDiv" class="manager-table" v-hasPermi="['business:supplier:usermanager']">
<h3>管理人员信息</h3>
<el-table :data="filteredDockerUsers" border style="width: 100%">
<el-table-column prop="userName" label="用户账号" width="100"></el-table-column>
<el-table-column prop="nickName" label="用户昵称" width="100"></el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="removeManager(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 用户选择器 -->
<div class="user-selector">
<h3>选择管理人员</h3>
<el-select v-model="selectedUser" placeholder="请选择用户" @change="selectUser">
<el-option
v-for="user in users"
:key="user.userId"
:label="user.nickName"
:value="user"
>
</el-option>
</el-select>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
@ -151,6 +191,11 @@
<script>
import { listSupplier, getSupplier, delSupplier, addSupplier, updateSupplier } from "@/api/business/supplier";
import { listAllUser,listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user";
import { getInfo} from "@/api/login";
export default {
name: "Supplier",
@ -184,9 +229,19 @@ export default {
supplierAddress: undefined,
supplierContact: undefined,
supplierContactNum: undefined,
supplierManagers: undefined,
},
//
form: {},
form: {
supplierId: undefined,
supplierName: undefined,
supplierAddress: undefined,
supplierContact: undefined,
supplierContactNum: undefined,
supplierManagers: undefined,
remark: undefined,
dockerUsers: []
},
//
rules: {
supplierId: [
@ -195,16 +250,48 @@ export default {
supplierName: [
{ required: true, message: "供应商名称不能为空", trigger: "blur" }
]
}
},
selectedUser: null, //
users: [], //
currentUser: null, //
permissions: '' //
};
},
created() {
this.getList();
computed: {
filteredDockerUsers() {
return this.form.dockerUsers.length ? this.form.dockerUsers.filter(dockerUser => dockerUser.del === null): [];
},
//...mapState('user', ['permissions'])
},
async created() {
try {
const response = await getInfo();
this.currentUser = response.data.user;
this.permissions = response.data.permissions;
console.log(response.data);
// getList()
this.getList();
} catch (error) {
console.error('获取用户信息失败', error);
}
},
methods: {
/** 查询供应商信息列表 */
getList() {
this.loading = true;
if (this.hasPermission("*:*:*") || this.hasPermission('business:supplier:usermanager')){
this.queryParams.supplierManagers = '';
//console.log("");
} else {
this.queryParams.supplierManagers = this.currentUser.nickName;
//console.log(this.currentUser.nickName + " 123");
}
listSupplier(this.queryParams).then(response => {
this.supplierList = response.rows;
this.total = response.total;
@ -213,8 +300,9 @@ export default {
},
//
cancel() {
this.open = false;
this.open = false;
this.reset();
},
//
reset() {
@ -224,7 +312,11 @@ export default {
supplierAddress: undefined,
supplierContact: undefined,
supplierContactNum: undefined,
remark: undefined
supplierManagers: undefined,
remark: undefined,
dockerUsers: [],
currentUser:undefined,
permissions:''
};
this.resetForm("form");
},
@ -247,27 +339,36 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.fetchUsers();
this.open = true;
this.title = "添加供应商信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
//console.log(row);
this.loading = true;
this.reset();
this.fetchUsers();
const supplierId = row.supplierId || this.ids
getSupplier(supplierId).then(response => {
this.loading = false;
this.form = response.data;
//console.log(response.data);
this.open = true;
this.title = "修改供应商信息";
});
},
/** 提交按钮 */
submitForm() {
console.log("submitForm");
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.supplierId != null) {
console.log("updateSupplier");
updateSupplier(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
@ -276,6 +377,9 @@ export default {
this.buttonLoading = false;
});
} else {
console.log("addSupplier");
this.setDefaultUserManager(); //
console.log("addSupplier1");
addSupplier(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
@ -307,7 +411,63 @@ export default {
this.download('business/supplier/export', {
...this.queryParams
}, `supplier_${new Date().getTime()}.xlsx`)
}
},
//
removeManager(index) {
//console.log(this.form.dockerUsers);
//this.form.dockerUsers.splice(index, 1);
this.form.dockerUsers[index].del = 1;
//console.log(this.form.dockerUsers);
},
//
fetchUsers() {
if (this.hasPermission("*:*:*")||(this.hasPermission("system:user:list") && this.hasPermission("business:supplier:usermanager"))){
listAllUser().then(response => {
this.users = response.data;
//console.log(response.data);
});
}
},
//
selectUser(user) {
const isInArray = this.form.dockerUsers.some(obj => obj.userId === user.userId );
if (isInArray==false) {
this.form.dockerUsers.push({
userId: user.userId,
userName: user.userName,
nickName: user.nickName,
del: null
});
}
this.selectedUser = null; //
},
hasPermission(permission) {
return this.permissions.includes(permission);
},
setDefaultUserManager(){
console.log("setDefaultUserManager");
const div = this.$refs.userManagerDiv;
console.log("setDefaultUserManager1");
if (div) { //div
console.log("has div");
if (div.style.display !== 'none'){
this.form.dockerUsers.push({
userId: this.currentUser.userId,
userName: this.currentUser.userName,
nickName: this.currentUser.nickName,
del: null
});
console.log("userManagerDiv 不可见");
}else{
console.log("userManagerDiv 可见");
}
}
}
},
};
</script>

View File

@ -1,19 +1,43 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="流程标识" prop="processKey">
<!--
<el-form-item label="流程编号" prop="processKey">
<el-input
v-model="queryParams.processKey"
placeholder="请输入流程标识"
v-model="queryParams.processKey"
placeholder="请输入流程编号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="流程名称" prop="processName">
<el-input
v-model="queryParams.processName"
placeholder="请输入流程名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="流程名称" prop="processName">
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.processName"
placeholder="请输入流程名称"
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="query-specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
@ -64,7 +88,7 @@
plain
icon="el-icon-download"
size="mini"
v-hasPermi="['workflow:process:ownExport']"
v-hasPermi="['workflow:process:allExport']"
@click="handleExport"
>导出</el-button>
</el-col>
@ -73,8 +97,10 @@
<el-table v-loading="loading" :data="ownProcessList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="流程类别" align="center" prop="category" :formatter="categoryFormat" />
<el-table-column label="流程版本" align="center" width="80px">
<template slot-scope="scope">
@ -290,9 +316,9 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('workflow/process/ownExport', {
this.download('workflow/process/allExport', {
...this.queryParams
}, `wf_own_process_${new Date().getTime()}.xlsx`)
}, `wf_all_process_${new Date().getTime()}.xlsx`)
},
categoryFormat(row, column) {
return this.categoryOptions.find(k => k.code === row.category)?.categoryName ?? '';

View File

@ -2,6 +2,8 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!--
<el-form-item label="流程名称" prop="processName">
<el-input
v-model="queryParams.processName"
@ -11,6 +13,28 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="接收时间">
<el-date-picker
v-model="dateRange"
@ -45,8 +69,10 @@
<el-table v-loading="loading" :data="claimList">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName"/>
<!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="任务节点" align="center" prop="taskName"/>
<el-table-column label="流程版本" align="center">
<template slot-scope="scope">

View File

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<!--
<el-form-item label="流程名称" prop="processName">
<el-input
v-model="queryParams.processName"
@ -9,6 +11,30 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起人" prop="originatorName">
<el-input
v-model="queryParams.originatorName"
@ -39,9 +65,14 @@
<el-table v-loading="loading" :data="copyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="抄送编号" align="center" prop="copyId" />
<!--<el-table-column label="抄送编号" align="center" prop="copyId" /> -->
<!-- <el-table-column label="流程名称" align="center" prop="processName" :show-overflow-tooltip="true" /> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true" />
<el-table-column label="流程名称" align="center" prop="processName" :show-overflow-tooltip="true" />
<el-table-column label="发起人" align="center" prop="originatorName" />
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">

View File

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!--
<el-form-item label="流程名称" prop="processName">
<el-input
v-model="queryParams.processName"
@ -10,6 +12,29 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审批时间">
<el-date-picker
v-model="dateRange"
@ -44,8 +69,13 @@
<el-table v-loading="loading" :data="finishedList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="任务节点" align="center" prop="taskName" />
<el-table-column label="流程发起人" align="center">
<template slot-scope="scope">

View File

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!--
<el-form-item label="流程标识" prop="processKey">
<el-input
v-model="queryParams.processKey"
@ -19,6 +21,28 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="流程分类" prop="category">
<el-select v-model="queryParams.category" clearable placeholder="请选择" size="small">
<el-option
@ -73,8 +97,10 @@
<el-table v-loading="loading" :data="ownProcessList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="流程编号" align="center" prop="procInsId" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="流程名称" align="center" prop="procDefName" :show-overflow-tooltip="true"/> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="流程类别" align="center" prop="category" :formatter="categoryFormat" />
<el-table-column label="流程版本" align="center" width="80px">
<template slot-scope="scope">
@ -290,7 +316,7 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('workflow/process/ownExport', {
this.download('workflow/process/allExport', {
...this.queryParams
}, `wf_own_process_${new Date().getTime()}.xlsx`)
},

View File

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!--
<el-form-item label="流程名称" prop="processName">
<el-input
v-model="queryParams.processName"
@ -10,6 +12,28 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item label="批次" prop="specBatch">
<el-input
v-model="queryParams.specBatch"
placeholder="请输入批次"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格名称" prop="specName">
<el-input
v-model="queryParams.specName"
placeholder="请输入规格名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="接收时间">
<el-date-picker
v-model="dateRange"
@ -44,8 +68,11 @@
<el-table v-loading="loading" :data="todoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName"/>
<!-- <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true"/> -->
<!-- <el-table-column label="流程名称" align="center" prop="procDefName"/> -->
<el-table-column label="规格批次" align="center" prop="specBatch" :show-overflow-tooltip="true"/>
<el-table-column label="规格名称" align="center" prop="specName" :show-overflow-tooltip="true"/>
<el-table-column label="任务节点" align="center" prop="taskName"/>
<el-table-column label="流程版本" align="center">
<template slot-scope="scope">