提交部署

This commit is contained in:
磷叶 2024-12-21 15:15:20 +08:00
parent 91b1c5bccb
commit a61704bc5c
15 changed files with 182 additions and 92 deletions

View File

@ -41,6 +41,14 @@ export function updateOrder(data, submit) {
}) })
} }
// 生产订单完工
export function finishOrder(id) {
return request({
url: `/bst/order/${id}/finish`,
method: 'put',
})
}
// 删除生产订单 // 删除生产订单
export function delOrder(id) { export function delOrder(id) {
return request({ return request({

View File

@ -19,14 +19,6 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderName">
<el-input
v-model="queryParams.leaderName"
placeholder="请输入负责人名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="负责工序" prop="process"> <el-form-item label="负责工序" prop="process">
<el-input <el-input
v-model="queryParams.process" v-model="queryParams.process"

View File

@ -1,9 +1,11 @@
<template> <template>
<el-link type="primary" @click="handleClick" :disabled="id == null">{{name | dv}}</el-link> <el-link type="primary" @click="handleClick" :disabled="disabled">{{name | dv}}</el-link>
</template> </template>
<script> <script>
import { checkPermi } from '@/utils/permission'
export default { export default {
name: 'OrderLink', name: 'OrderLink',
props: { props: {
@ -16,6 +18,12 @@ export default {
default: null, default: null,
}, },
}, },
computed: {
// 1.id 2.
disabled() {
return this.id == null || !checkPermi(['bst:order:query']);
}
},
methods: { methods: {
handleClick() { handleClick() {
this.$emit('click'); this.$emit('click');

View File

@ -12,6 +12,13 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-checkbox-group v-model="queryParams.orderStatusList" @change="handleQuery">
<el-checkbox-button v-for="dict in dict.type.order_status" :key="dict.value" :label="dict.value">
{{dict.label}}
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="产品名称" prop="orderProdName"> <el-form-item label="产品名称" prop="orderProdName">
<el-input <el-input
v-model="queryParams.orderProdName" v-model="queryParams.orderProdName"
@ -119,6 +126,9 @@
<template v-else-if="column.key === 'isEnd'"> <template v-else-if="column.key === 'isEnd'">
<boolean-tag :value="d.row.isEnd"/> <boolean-tag :value="d.row.isEnd"/>
</template> </template>
<template v-else-if="column.key === 'orderStatus'">
<dict-tag :value="d.row.orderStatus" :options="dict.type.order_status"/>
</template>
<template v-else> <template v-else>
{{d.row[column.key]}} {{d.row[column.key]}}
</template> </template>
@ -152,6 +162,7 @@ const defaultSort = {
export default { export default {
name: "ProcessCheck", name: "ProcessCheck",
mixins: [$showColumns], mixins: [$showColumns],
dicts: ['order_status'],
components: {BooleanTag, DeptTreeSelect}, components: {BooleanTag, DeptTreeSelect},
props: { props: {
// //
@ -198,6 +209,7 @@ export default {
pageSize: 10, pageSize: 10,
orderByColumn: defaultSort.prop, orderByColumn: defaultSort.prop,
isAsc: defaultSort.order, isAsc: defaultSort.order,
orderStatusList: [],
}, },
total: 0, total: 0,
row: null, row: null,
@ -206,6 +218,7 @@ export default {
columns: [ columns: [
{key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, {key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'orderNo', visible: true, label: '订单编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderNo', visible: true, label: '订单编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'orderStatus', visible: true, label: '订单状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'orderProdName', visible: true, label: '产品名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderProdName', visible: true, label: '产品名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptName', visible: true, label: '生产车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptName', visible: true, label: '生产车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptProcess', visible: true, label: '负责工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptProcess', visible: true, label: '负责工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},

View File

@ -3,23 +3,44 @@
<template> <template>
<div> <div>
<el-form :model="queryParams" ref="queryForm" size="small" v-show="showSearch" :inline="true" label-width="4em"> <el-form :model="queryParams" ref="queryForm" size="small" v-show="showSearch" :inline="true" label-width="5em">
<el-form-item label="归属部门" prop="deptId">
<dept-tree-select v-model="queryParams.deptId" class="small-tree-select" @change="handleQuery"/>
</el-form-item>
<el-form-item label="姓名" prop="nickName"> <el-form-item label="姓名" prop="nickName">
<el-input <el-input
v-model="queryParams.nickName" v-model="queryParams.nickName"
placeholder="请输入姓名" placeholder="请输入姓名"
clearable clearable
style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机" prop="phonenumber"> <el-form-item label="登录账号" prop="userName">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.userName"
placeholder="请输入手机号码" placeholder="请输入登录账号"
clearable clearable
style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="用户状态"
clearable
style="width: 240px"
@change="handleQuery"
>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <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> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -160,17 +181,14 @@ export default {
// //
columns: [ columns: [
{key: 'userId', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'userId', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'userNo', visible: true, label: '工号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'nickName', visible: true, label: '姓名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'nickName', visible: true, label: '姓名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptId', visible: true, label: '部门', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptId', visible: true, label: '部门', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'phonenumber', visible: false, label: '手机号码', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'userName', visible: true, label: '登录账号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'birthday', visible: true, label: '年龄', minWidth: null, sortable: false, overflow: false, align: 'center', width: "100"},
{key: 'employDate', visible: true, label: '工龄', minWidth: null, sortable: false, overflow: false, align: 'center', width: "100"},
{key: 'status', visible: true, label: '账号状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'status', visible: true, label: '账号状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'employStatus', visible: true, label: '在职情况', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'loginIp', visible: false, label: '最后登录IP', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'loginIp', visible: true, label: '最后登录IP', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'loginDate', visible: false, label: '最后登录时间', minWidth: null, sortable: false, overflow: false, align: 'center', width: "100"}, {key: 'loginDate', visible: true, label: '最后登录时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
], ],
} }
}, },

View File

@ -73,25 +73,6 @@ export const constantRoutes = [
}, },
] ]
}, },
/**
* 新增页
*/
{
path: '/add',
component: Layout,
hidden: true,
children: [
{
path: 'order',
component: () => import('@/views/bst/order/edit/edit.vue'),
name: 'OrderAdd',
meta: {
title: '新增订单',
noCache: false
}
}
]
},
/** /**
* 编辑页 * 编辑页
*/ */
@ -101,11 +82,11 @@ export const constantRoutes = [
hidden: true, hidden: true,
children: [ children: [
{ {
path: 'order/:id', path: 'order/:id?',
component: () => import('@/views/bst/order/edit/edit.vue'), component: () => import('@/views/bst/order/edit/edit.vue'),
name: 'OrderEdit', name: 'OrderEdit',
meta: { meta: {
title: '修改订单', title: '编辑订单',
noCache: false noCache: false
} }
} }

View File

@ -14,6 +14,10 @@ export const OrderStatus = {
// 允许删除 // 允许删除
canDel() { canDel() {
return [this.PROPOSED]; return [this.PROPOSED];
},
// 允许上报
canAddStore() {
return [this.RELEASED];
} }
} }

View File

@ -115,6 +115,14 @@
v-has-permi="['bst:order:edit']" v-has-permi="['bst:order:edit']"
v-show="OrderStatus.canEdit().includes(scope.row.status)" v-show="OrderStatus.canEdit().includes(scope.row.status)"
>修改</el-button> >修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-check"
@click="handleFinish(scope.row)"
v-has-permi="['bst:order:finish']"
v-show="OrderStatus.canFinished().includes(scope.row.status)"
>完工</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -139,7 +147,7 @@
</template> </template>
<script> <script>
import { delOrder, listOrder } from '@/api/bst/order' import { delOrder, finishOrder, listOrder } from '@/api/bst/order'
import FormCol from '@/components/FormCol/index.vue' import FormCol from '@/components/FormCol/index.vue'
import { $showColumns } from '@/utils/mixins' import { $showColumns } from '@/utils/mixins'
import { OrderStatus } from '@/utils/enums' import { OrderStatus } from '@/utils/enums'
@ -166,14 +174,14 @@ export default {
{key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, {key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'orderNo', visible: true, label: '订单号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderNo', visible: true, label: '订单号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'status', visible: true, label: '订单状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'status', visible: true, label: '订单状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'picture', visible: true, label: '主图', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'picture', visible: true, label: '主图', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'customer', visible: true, label: '客户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'customer', visible: true, label: '客户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deliveryDate', visible: true, label: '交货日期', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deliveryDate', visible: true, label: '交货日期', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
{key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'progress', visible: true, label: '进度', minWidth: null, sortable: true, overflow: false, align: 'center', width: "160"}, {key: 'progress', visible: true, label: '进度', minWidth: null, sortable: false, overflow: false, align: 'center', width: "160"},
{key: 'createBy', visible: true, label: '创建人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'createBy', visible: true, label: '创建人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
], ],
@ -256,12 +264,28 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.$router.push("/add/order"); this.$router.push("/edit/order");
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.$router.push(`/edit/order/${row.id}`) this.$router.push(`/edit/order/${row.id}`)
}, },
//
handleFinish(row) {
this.$confirm(`确定完成订单号为${row.orderNo}的订单吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
finishOrder(row.id).then(res => {
this.$modal.msgSuccess("操作成功")
this.getList()
}).catch( e => {
this.loading = false;
})
})
},
handleView(row) { handleView(row) {
this.$router.push(`/view/order/${row.id}`) this.$router.push(`/view/order/${row.id}`)
}, },

View File

@ -215,7 +215,7 @@ export default {
columns: [ columns: [
{key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, {key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'orderNo', visible: true, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderNo', visible: true, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'picture', visible: true, label: '主图', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'picture', visible: true, label: '主图', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'name', visible: true, label: '名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'name', visible: true, label: '名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'workType', visible: true, label: '加工商', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'workType', visible: true, label: '加工商', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'materialNo', visible: true, label: '物料编码', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'materialNo', visible: true, label: '物料编码', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
@ -223,9 +223,9 @@ export default {
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
{key: 'isEnd', visible: true, label: '是否成品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'isEnd', visible: true, label: '是否成品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'progress', visible: true, label: '进度', minWidth: null, sortable: true, overflow: false, align: 'center', width: "160"}, {key: 'progress', visible: true, label: '进度', minWidth: null, sortable: false, overflow: false, align: 'center', width: "160"},
], ],
// //
orderSorts: ['ascending', 'descending', null], orderSorts: ['ascending', 'descending', null],

View File

@ -9,6 +9,13 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-checkbox-group v-model="queryParams.orderStatusList" @change="handleQuery">
<el-checkbox-button v-for="dict in dict.type.order_status" :key="dict.value" :label="dict.value">
{{dict.label}}
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="产品名称" prop="orderProdName"> <el-form-item label="产品名称" prop="orderProdName">
<el-input <el-input
v-model="queryParams.orderProdName" v-model="queryParams.orderProdName"
@ -145,6 +152,9 @@
<template v-else-if="column.key === 'orderNo'"> <template v-else-if="column.key === 'orderNo'">
<order-link :id="d.row.orderId" :name="d.row.orderNo"/> <order-link :id="d.row.orderId" :name="d.row.orderNo"/>
</template> </template>
<template v-else-if="column.key === 'orderStatus'">
<dict-tag :value="d.row.orderStatus" :options="dict.type.order_status"/>
</template>
<template v-else-if="column.key === 'progress'"> <template v-else-if="column.key === 'progress'">
<el-progress :percentage="d.row.progress" :color="ProgressColors" :format="ProgressFormat"/> <el-progress :percentage="d.row.progress" :color="ProgressColors" :format="ProgressFormat"/>
</template> </template>
@ -154,7 +164,7 @@
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="!isCustomData">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -162,6 +172,7 @@
icon="el-icon-plus" icon="el-icon-plus"
@click="handleStore(scope.row)" @click="handleStore(scope.row)"
v-has-permi="['bst:store:add']" v-has-permi="['bst:store:add']"
v-show="OrderStatus.canAddStore().includes(scope.row.orderStatus)"
>上报入库</el-button> >上报入库</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -194,6 +205,7 @@ import StoreEditDialog from '@/views/bst/store/components/StoreEditDialog.vue'
import DeptTreeSelect from '@/components/Business/Dept/DeptTreeSelect.vue' import DeptTreeSelect from '@/components/Business/Dept/DeptTreeSelect.vue'
import { ProgressColors, ProgressFormat } from '@/utils/constants' import { ProgressColors, ProgressFormat } from '@/utils/constants'
import OrderLink from '@/components/Business/Order/OrderLink.vue' import OrderLink from '@/components/Business/Order/OrderLink.vue'
import { OrderStatus } from '@/utils/enums'
// //
const defaultSort = { const defaultSort = {
@ -203,6 +215,7 @@ const defaultSort = {
export default { export default {
name: "ProdProcess", name: "ProdProcess",
dicts: ['order_status'],
mixins: [$showColumns], mixins: [$showColumns],
components: { OrderLink, DeptTreeSelect, StoreEditDialog, BooleanTag, FormCol}, components: { OrderLink, DeptTreeSelect, StoreEditDialog, BooleanTag, FormCol},
props: { props: {
@ -223,6 +236,7 @@ export default {
}, },
data() { data() {
return { return {
OrderStatus,
ProgressColors, ProgressColors,
row: {}, row: {},
showStoreEdit: false, showStoreEdit: false,
@ -231,6 +245,7 @@ export default {
columns: [ columns: [
{key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, {key: 'id', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'orderNo', visible: true, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderNo', visible: true, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'orderStatus', visible: true, label: '订单状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'orderProdName', visible: true, label: '产品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'orderProdName', visible: true, label: '产品', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptName', visible: true, label: '车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptName', visible: true, label: '车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptProcess', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptProcess', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
@ -241,9 +256,9 @@ export default {
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'isEnd', visible: true, label: '是否最终', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'isEnd', visible: true, label: '是否最终', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'reportNum', visible: true, label: '已上报', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeNum', visible: true, label: '已清点', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'progress', visible: true, label: '进度', minWidth: null, sortable: true, overflow: false, align: 'center', width: "160"}, {key: 'progress', visible: true, label: '进度', minWidth: null, sortable: false, overflow: false, align: 'center', width: "160"},
], ],
// //
orderSorts: ['ascending', 'descending', null], orderSorts: ['ascending', 'descending', null],
@ -281,7 +296,8 @@ export default {
color: null, color: null,
coverColor: null, coverColor: null,
remark: null, remark: null,
deleted: null deleted: null,
orderStatusList: [OrderStatus.RELEASED, OrderStatus.FINISHED]
}, },
// //
form: {}, form: {},
@ -311,6 +327,10 @@ export default {
if (this.isCustomData) { if (this.isCustomData) {
this.prodProcessList = this.customData; this.prodProcessList = this.customData;
this.columns.forEach(item => {
item.sortable = false
})
} else { } else {
this.getList(); this.getList();
} }

View File

@ -3,7 +3,7 @@
<el-form :model="form" :rules="rules" ref="form" label-width="80px"> <el-form :model="form" :rules="rules" ref="form" label-width="80px">
<el-row> <el-row>
<form-col :span="span" label="工序" prop="processId"> <form-col :span="span" label="工序" prop="processId">
<process-input v-model="form.processId" :disabled="processId != null"/> <process-input v-model="form.processId" :disabled="processId != null" :query="processQuery"/>
</form-col> </form-col>
<form-col :span="span" label="上报数量" prop="num"> <form-col :span="span" label="上报数量" prop="num">
<el-input-number v-model="form.num" :min="0" controls-position="right" style="width: 100%;" placeholder="请输入上报数量"/> <el-input-number v-model="form.num" :min="0" controls-position="right" style="width: 100%;" placeholder="请输入上报数量"/>
@ -24,6 +24,7 @@
import FormCol from '@/components/FormCol/index.vue' import FormCol from '@/components/FormCol/index.vue'
import ProcessInput from '@/components/Business/Process/ProcessInput.vue' import ProcessInput from '@/components/Business/Process/ProcessInput.vue'
import { addStore, getStore, updateStore } from '@/api/bst/store' import { addStore, getStore, updateStore } from '@/api/bst/store'
import { OrderStatus } from '@/utils/enums'
export default { export default {
name: 'StoreEditDialog', name: 'StoreEditDialog',
@ -65,6 +66,11 @@ export default {
set(val) { set(val) {
this.$emit('update:show', val); this.$emit('update:show', val);
} }
},
processQuery() {
return {
orderStatusList: [OrderStatus.RELEASED]
}
} }
}, },
methods: { methods: {

View File

@ -145,6 +145,9 @@
<template v-else-if="column.key === 'orderNo'"> <template v-else-if="column.key === 'orderNo'">
<order-link :id="d.row.orderId" :name="d.row.orderNo"/> <order-link :id="d.row.orderId" :name="d.row.orderNo"/>
</template> </template>
<template v-else-if="column.key === 'processIsEnd'">
<boolean-tag :value="d.row.processIsEnd" />
</template>
<template v-else> <template v-else>
{{d.row[column.key]}} {{d.row[column.key]}}
</template> </template>
@ -160,7 +163,7 @@
@click="handleStockIn(scope.row)" @click="handleStockIn(scope.row)"
v-has-permi="['bst:store:stockIn']" v-has-permi="['bst:store:stockIn']"
v-show="StoreStatus.canStockIn().includes(scope.row.status)" v-show="StoreStatus.canStockIn().includes(scope.row.status)"
>入库</el-button> >清点</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -200,6 +203,7 @@ import { StoreStatus } from '@/utils/enums'
import DateRangePicker from '@/components/DateRangePicker/index.vue' import DateRangePicker from '@/components/DateRangePicker/index.vue'
import { DatePickerOptions } from '@/utils/constants' import { DatePickerOptions } from '@/utils/constants'
import OrderLink from '@/components/Business/Order/OrderLink.vue' import OrderLink from '@/components/Business/Order/OrderLink.vue'
import BooleanTag from '@/components/BooleanTag/index.vue'
// //
const defaultSort = { const defaultSort = {
@ -216,7 +220,7 @@ export default {
}, },
mixins: [$showColumns], mixins: [$showColumns],
dicts: ['store_status'], dicts: ['store_status'],
components: { OrderLink, DateRangePicker, StoreEditDialog, DeptTreeSelect, FormCol}, components: { BooleanTag, OrderLink, DateRangePicker, StoreEditDialog, DeptTreeSelect, FormCol},
data() { data() {
return { return {
StoreStatus, StoreStatus,
@ -229,14 +233,15 @@ export default {
{key: 'prodName', visible: true, label: '产品名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'prodName', visible: true, label: '产品名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'processDeptName', visible: true, label: '部门', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'processDeptName', visible: true, label: '部门', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'deptProcess', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'deptProcess', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'processIsEnd', visible: true, label: '最终工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'num', visible: true, label: '上报数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'num', visible: true, label: '上报数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'storeNum', visible: true, label: '入库数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeNum', visible: true, label: '清点数量', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'createBy', visible: true, label: '上报人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'createBy', visible: true, label: '上报人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'createTime', visible: true, label: '上报时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'createTime', visible: true, label: '上报时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
{key: 'storeBy', visible: true, label: '入库人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeBy', visible: true, label: '清点人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'storeTime', visible: true, label: '入库时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"}, {key: 'storeTime', visible: true, label: '清点时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
], ],
// //
orderSorts: ['ascending', 'descending', null], orderSorts: ['ascending', 'descending', null],
@ -290,19 +295,22 @@ export default {
methods: { methods: {
// //
handleStockIn(row) { handleStockIn(row) {
this.$prompt('入库数量', '提示', { this.$prompt('清点数量', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
inputPlaceholder: "请输入入库数量" inputPlaceholder: "请输入清点数量"
}).then(({ value }) => { }).then(({ value }) => {
this.$confirm(`确定入库数量${value}吗?`, '提示', { this.$confirm(`确定清点数量${value}吗?`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.loading = true;
stockInStore({id: row.id, storeNum: value}).then(res => { stockInStore({id: row.id, storeNum: value}).then(res => {
this.$modal.msgSuccess("入库成功") this.$modal.msgSuccess("清点成功")
this.getList() this.getList()
}).catch(e => {
this.loading = false;
}) })
}) })
}) })

View File

@ -19,14 +19,6 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderName">
<el-input
v-model="queryParams.leaderName"
placeholder="请输入负责人名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="负责工序" prop="process"> <el-form-item label="负责工序" prop="process">
<el-input <el-input
v-model="queryParams.process" v-model="queryParams.process"
@ -79,7 +71,15 @@
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="leaderName" label="负责人" align="center" /> <el-table-column label="负责人" align="center" >
<template slot-scope="d">
<template v-if="!isEmpty(d.row.leaderList)">
<el-tag type="primary" size="mini" v-for="item of d.row.leaderList">
{{item.nickName | dv}}
</el-tag>
</template>
</template>
</el-table-column>
<el-table-column prop="process" label="负责工序" align="center"/> <el-table-column prop="process" label="负责工序" align="center"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
@ -133,14 +133,14 @@
>{{dict.label}}</el-radio> >{{dict.label}}</el-radio>
</el-radio-group> </el-radio-group>
</form-col> </form-col>
<form-col :span="span" label="负责人" prop="leaderId"> <form-col :span="span" label="显示排序" prop="orderNum">
<user-input v-model="form.leaderId" /> <el-input-number v-model="form.orderNum" controls-position="right" :min="0" style="width: 100%" placeholder="请输入显示排序" />
</form-col> </form-col>
<form-col :span="span" label="负责工序" prop="process"> <form-col :span="span" label="负责工序" prop="process">
<el-input v-model="form.process" placeholder="请输入负责工序" /> <el-input v-model="form.process" placeholder="请输入负责工序" />
</form-col> </form-col>
<form-col :span="span" label="显示排序" prop="orderNum"> <form-col :span="span" label="负责人" prop="leaderId">
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" style="width: 100%" placeholder="请输入显示排序" /> <user-input v-model="form.leaderIds" multiple/>
</form-col> </form-col>
</el-row> </el-row>
</el-form> </el-form>
@ -158,6 +158,7 @@ import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css' import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import UserInput from '@/components/Business/User/UserInput.vue' import UserInput from '@/components/Business/User/UserInput.vue'
import FormCol from '@/components/FormCol/index.vue' import FormCol from '@/components/FormCol/index.vue'
import { isEmpty } from '@/utils'
export default { export default {
name: "Dept", name: "Dept",
@ -223,6 +224,7 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
isEmpty,
/** 查询部门列表 */ /** 查询部门列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -257,7 +259,8 @@ export default {
leader: undefined, leader: undefined,
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: "0" status: "0",
leaderIds: []
}; };
this.resetForm("form"); this.resetForm("form");
}, },

View File

@ -99,10 +99,10 @@
<el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="角色编号" prop="roleId" width="120" /> <el-table-column label="角色编号" prop="roleId" width="120" align="center" />
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" /> <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" align="center" />
<el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" /> <el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" align="center" />
<el-table-column label="显示顺序" prop="roleSort" width="100" /> <el-table-column label="显示顺序" prop="roleSort" width="100" align="center"/>
<el-table-column label="状态" align="center" width="100"> <el-table-column label="状态" align="center" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
@ -113,11 +113,8 @@
></el-switch> ></el-switch>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="备注" prop="remark" show-overflow-tooltip align="center"/>
<template slot-scope="scope"> <el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.roleId !== 1"> <template slot-scope="scope" v-if="scope.row.roleId !== 1">
<el-button <el-button
@ -263,6 +260,7 @@ import {
updateRole updateRole
} from '@/api/system/role' } from '@/api/system/role'
import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu' import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu'
import { parseTime } from '../../../utils/ruoyi'
export default { export default {
name: "Role", name: "Role",
@ -316,6 +314,10 @@ export default {
{ {
value: "5", value: "5",
label: "仅本人数据权限" label: "仅本人数据权限"
},
{
value: "6",
label: "负责部门数据权限"
} }
], ],
// //
@ -354,6 +356,7 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
parseTime,
/** 查询角色列表 */ /** 查询角色列表 */
getList() { getList() {
this.loading = true; this.loading = true;

View File

@ -39,10 +39,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="登录账号" prop="userName">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.userName"
placeholder="请输入手机号码" placeholder="请输入登录账号"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@ -54,6 +54,7 @@
placeholder="用户状态" placeholder="用户状态"
clearable clearable
style="width: 240px" style="width: 240px"
@change="handleQuery"
> >
<el-option <el-option
v-for="dict in dict.type.sys_normal_disable" v-for="dict in dict.type.sys_normal_disable"
@ -72,6 +73,7 @@
range-separator="-" range-separator="-"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
@change="handleQuery"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>