nrwms_web/src/views/business-data/pick/index.vue

267 lines
9.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-input
style="width: 140px"
v-model="query.relatedBill1"
clearable
placeholder="系统单号"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-input
style="width: 140px"
v-model="query.relatedBill2"
clearable
placeholder="登记单号"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-select
style="width: 110px"
v-model="query.status"
clearable
size="small"
placeholder="订单状态"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.pick_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<rrOperation :crud="crud"/>
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
<crudOperation :permission="permission" :table-key="this.$options.name">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
:disabled="crud.selections.length !== 1 || this.crud.selections[0].status !=='OPEN'"
@click="allocate(crud.selections)"
>
分配
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
:loading="crud.delAllLoading"
:disabled="crud.selections.length !== 1 || this.crud.selections[0].status !=='ALLOCATE'"
@click="cancelAllocate(crud.selections)"
>
取消分配
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="580px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="120px">
<el-form-item label="系统单号" prop="relatedBill1">
<el-input v-model="form.relatedBill1" style="width: 135px;" />
</el-form-item>
<el-form-item label="登记单号">
<el-input v-model="form.relatedBill2" style="width: 135px;" />
</el-form-item>
<el-form-item label="单据类型" prop="billType">
<el-select v-model="form.billType" value-key="id" filterable placeholder="请选择单据类型"
style="width: 135px;">
<el-option
v-for="item in billTypeList"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="订单状态" prop="status">
<el-select v-model="form.status" filterable placeholder="请选择" style="width: 135px;">
<el-option
v-for="item in dict.pick_status"
:key="item.id"
:label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="form.orderOrigin" style="width: 135px;" />
</el-form-item>
<el-form-item label="优先级">
<el-input v-model="form.priority" style="width: 135px;" />
</el-form-item>
<el-form-item label="货主">
<el-input v-model="form.owner" style="width: 135px;" />
</el-form-item>
<el-form-item label="来源名称">
<el-input v-model="form.sourceName" style="width: 135px;" />
</el-form-item>
<el-form-item label="发货时间">
<el-date-picker v-model="form.dispatchDate" type="datetime" style="width: 135px;" />
</el-form-item>
<el-form-item label="操作时间">
<el-date-picker v-model="form.erTime" type="datetime" style="width: 135px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="relatedBill1" label="系统单号" />
<el-table-column prop="relatedBill2" label="登记单号" />
<el-table-column prop="billType.name" label="单据类型" />
<el-table-column prop="status" label="订单状态">
<template slot-scope="scope">
{{ dict.label.pick_status[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="priority" label="优先级" />
<el-table-column prop="owner" label="货主" />
<el-table-column prop="address" label="整合地址" />
<el-table-column prop="dispatchDate" label="发货时间" />
<el-table-column prop="erTime" label="操作时间" />
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" fixed="right" label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="jumpPickDetail(scope.row)"
>明细
</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudPick from '@/api/pick'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import {getBillType} from "@/api/billType";
const defaultForm = { id: null, deptId: null, billType: null, orderOrigin: null, priority: null, owner: null, relatedBill1: null, relatedBill2: null, sourceName: null, status: null, address: null, dispatchDate: null, erTime: null, createBy: null, updateBy: null, createTime: null, updateTime: null, orderDate: null }
export default {
name: 'Pick',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['pick_status', 'asn_status'],
cruds() {
return CRUD({ title: '出库单', url: 'api/pick', idField: 'id', sort: 'id,desc', crudMethod: { ...crudPick }})
},
data() {
return {
billTypeList: [],
permission: {
add: ['admin', 'pick:add'],
edit: ['admin', 'pick:edit'],
del: ['admin', 'pick:del'],
download: ['admin', 'pick:download'],
allocate: ['admin', 'pick:allocate'],
cancelAllocate: ['admin', 'pick:cancelAllocate']
},
tableKey: 'api/pick',
rules: {
relatedBill1: [
{ required: true, message: '必填', trigger: 'blur' }
],
billType: [
{ required: true, message: '必填', trigger: 'blur' }
],
status: [
{ required: true, message: '必填', trigger: 'blur' }
]
},
queryTypeOptions: [
]
}
},
mounted() {
this.getBillType()
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
getBillType() {
getBillType({}).then(res => {
this.billTypeList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
allocate(datas) {
this.$confirm(`选中的${datas.length}条数据分配确认?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
crudPick.allocate(ids).then(res => {
this.crud.notify(res.data, res.status)
this.crud.toQuery()
}).catch(() => {
this.crud.toQuery()
})
}).catch(() => {
this.$refs.table.clearSelection()
this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
jumpPickDetail(pick) {
// 路径/home对应我在router目录下index.js中定义的path属性值
this.$router.push({ path: '/business-data/pickDetail/pickDetail', query: { pick: pick }})
},
cancelAllocate(datas) {
this.$confirm(`选中的${datas.length}条数据取消分配确认?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
crudPick.cancelAllocate(ids).then(res => {
this.crud.notify(res.data, res.status)
this.crud.toQuery()
}).catch(() => {
})
}).catch(() => {
this.$refs.table.clearSelection()
this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
}
}
}
</script>
<style scoped>
</style>