土利润表

This commit is contained in:
ljx 2024-06-25 16:14:57 +08:00
parent 0e0a756dea
commit f4b06f460b
2 changed files with 514 additions and 0 deletions

View File

@ -0,0 +1,502 @@
<template>
<div class="page-body">
<a-row type="flex">
<a-col :flex="$mk.config.ui.searchFlex">
<!-- 搜索区 -->
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch" @reset="onReset">
<template #truck_id="{ }">
<ZkSelectSearch ref="refTruck" :ListTitle="'请选择车辆'" :IsListShowCode="true" :ListUrl="zkSelectSearch.Search"
:ListUrlData="zkSelectSearch.zkSelectData"
:ListFieldName="zkSelectSearch.zkSelectDataFieldName"
:BackFieldNames="zkSelectSearch.zkBackFieldNames" @zkSelectSearch="TruckhandleChange">
</ZkSelectSearch>
</template>
<template #driver_id="{ }">
<ZkSelectSearch ref="refDriver" :ListTitle="'请选择司机'" :IsListShowCode="true" :ListUrl="zkSelectSearch2.Search"
:ListUrlData="zkSelectSearch2.zkSelectData"
:ListFieldName="zkSelectSearch2.zkSelectDataFieldName"
:BackFieldNames="zkSelectSearch2.zkBackFieldNames" @zkSelectSearch="StaffhandleChange">
</ZkSelectSearch>
</template>
<template #date="{ }">
<a-form-item label="创建时间" :style="{ display: 'inline-block', width: 120 }">
</a-form-item>
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
<a-range-picker @change="onDateChange" />
</a-form-item>
</template>
</vxe-form>
</a-col>
<a-col :flex="$mk.config.ui.toolbarFlex">
<!-- 工具条 -->
<mk-toolbar :isShowLog="false" :isShowSetting="false" :isShowAdd="true" @toolbarClick="toolbarClick"></mk-toolbar>
</a-col>
</a-row>
<vxe-toolbar ref="xToolbar" custom export>
<template #buttons>
<a-button type="primary" icon="delete" @click="pageDelete()">批量删除</a-button>
</template>
</vxe-toolbar>
<!-- 表格区 -->
<div class="gridPanel">
<vxe-grid ref='xGrid' v-bind="gridOptions" :export-config="{}">
<!-- =============================== 表格列 自动生成 Start =============================== -->
<template #truck_name="{ row }">
{{ row.truck_detail.name }}
</template>
<template #truck_code="{ row }">
{{ row.truck_detail.code }}
</template>
<template #driver_id="{ row }">
{{ row.driver_name }}
</template>
<template #is_outsourcing="{ row }">
<a-tag color="green" v-if="row.is_outsourcing === 1">
委外出车
</a-tag>
<a-tag color="blue" v-if="row.is_need_outbound === 1">
正常出车
</a-tag>
</template>
<template #is_change_tire="{ row }">
<a-tag color="green" v-if="row.is_change_tire === 0">
</a-tag>
<a-tag color="red" v-else>
</a-tag>
</template>
<template #is_repair="{ row }">
<a-tag color="green" v-if="row.is_repair === 0">
</a-tag>
<a-tag color="red" v-else>
</a-tag>
</template>
<template #is_oil="{ row }">
<a-tag color="green" v-if="row.is_oil === 0">
</a-tag>
<a-tag color="red" v-else>
</a-tag>
</template>
<!-- =============================== 表格列 自动生成 End =============================== -->
<template #op="{ row }">
<div class="oplinks">
<a @click.stop="pageDetail(row)" title="详情">
<a-icon type="file" />
</a>
<a @click.stop="pageEdit(row)" title="编辑">
<a-icon type="edit" />
</a>
<a @click.stop="pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-grid>
</div>
</div>
</template>
<script>
import BASE_URL from '@/services/Middle/transport/TrainNumber/api.js';
import ZkSelectSearch from '@/components/zk/zkSelectSearch.vue';
export default {
name: 'TrainNumberList',
i18n: require('./i18n'), //
components: { ZkSelectSearch },
props: {
pageMode: {
type: String,
default: "edit"
}
},
data() {
const listFieldName = 'TrainNumber';
//
var pageData = { //
zkSelectSearch: {
Search: `${BASE_URL.BASE_URL}/Truck/v1/truck/search`,
zkSelectData: {
page: 1,
limit: 50,
order_bys: [
{
column: "create_time",
order: "desc"
},
],
},
zkSelectDataFieldName: 'Truck',
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
},
zkSelectSearch2: {
Search: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/list`,
zkSelectData: {
page: 1,
limit: 50,
order_bys: [
{
column: "create_time",
order: "desc"
},
],
},
zkSelectDataFieldName: 'MesStaff',
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
},
keyName: 'id', //
//
actions: { // Api
// =============================== Start ===============================
TrainNumberList: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/list`, //
TrainNumberSearch: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/search`, //
TrainNumberDetail: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/detail`, //
TrainNumberCreate: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/create`, //
TrainNumberUpdate: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/update`, //
TrainNumberDelete: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/detele`, //
TrainNumberBatchDelete: `${BASE_URL.BASE_URL}/TrainNumber/v1/train/number/batchDelete`, //
// =============================== End ===============================
},
start_time: 0, //
end_time: 0, //
//
searchFormData: {
code: '',
truck_id: '',
driver_id: '',
},
//
searchRules: [
{ key: "code", mode: "like" },
{ key: "truck_id", mode: "like" },
{ key: "driver_id", mode: "like" }
],
//
searchFormItems: [ //
{
field: 'code',
title: '车次单号',
span: 4,
itemRender: { name: '$input', props: { placeholder: '请输入车次单号' } }
},
{
field: 'truck_id',
title: '车辆',
span: 4,
slots: { default: 'truck_id' }
},
{
field: 'driver_id',
title: '司机',
span: 4,
slots: { default: 'driver_id' }
},
{ span: 8, slots: { default: 'date' } }, //
{
align: 'left', span: 4, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, //
{ props: { type: 'reset', content: '重置' } }]
}
}
],
//
gridOptions: { //
height: '100%', // 100%
stripe: true, //
id: 'datagrid_1', //
//
proxyConfig: { //
sort: true, // query
filter: true, // query
props: {
result: listFieldName, //
total: 'total' //
},
// Promise
ajax: {
// queryreload
query: (options) => { // options
const { page, sorts } = options; //
var params = {}; //
params.page = page.currentPage; //
params.limit = page.pageSize; //
params.order_bys = []; //
params.search_rules = this.getSearchParms(); //
if (sorts) { //
sorts.forEach((v) => { //
params.order_bys.push({ //
column: v.property, //
order: v.order //
})
});
}
return this.loadData({ params }); //
}
}
},
//
columns: [
{ type: 'checkbox', width: 50 }, //
{ type: 'seq', width: 40 }, //
// =============================== Start ===============================
{field: 'create_time', sortable: true, title: '创建时间',formatter: 'formatDate', width: 130}, //
{ field: 'code', align: 'center', sortable: true, title: '车次单号', width: 120 }, //
{
field: 'truck_code', align: 'center', sortable: true, title: '车牌编号', width: 150,
slots: { default: 'truck_code' }
}, //
{
field: 'truck_name', align: 'center', sortable: true, title: '车牌名称', width: 150,
slots: { default: 'truck_name' }
}, //
{
field: 'driver_id', align: 'center', sortable: true, title: '司机', width: 150,
slots: { default: 'driver_id' }
}, // id
// { field: 'supplier_name', align: 'center', sortable: true, title: '', width: 120 }, //
{ field: 'custom_name', align: 'center', sortable: true, title: '客户名称', width: 120 }, //
// {field: 'soil_quality_material_id',align: 'center', sortable: true, title: 'id', width: 250}, // id
// {field: 'outbound_soil_quality_material_id', sortable: true, title: 'id', width: 250}, // id
// {field: 'warehousing_soil_quality_material_id', sortable: true, title: 'id', width: 250}, // id
{field: 'unit_price', sortable: true, title: '单价',align: 'center', width: 100}, //
{ field: 'customer_warehousing_tonnage', align: 'center', sortable: true, title: '吨位', width: 100 }, //
{field: 'total_price', sortable: true, title: '总价',align: 'center', width: 120}, //
{ field: 'material_profit', align: 'center', sortable: true, title: '土利润', width: 200 }, //
]
}
};
pageData.actions.getList = pageData.actions.TrainNumberList;
pageData.actions.delete = pageData.actions.TrainNumberBatchDelete;
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
return pageData; //
},
//
computed: {
//
// desc() {
// return this.$t('pageDesc')
// }
},
//
created() {
this.$nextTick(() => { // DOM
//
this.$refs.xGrid.connect(this.$refs.xToolbar) //
});
},
//
activated() {
this.onSearch();
//
},
//
onLoad() {
},
//
methods: {
// =============================== status Start ===============================
// =============================== status End ===============================
//
onDateChange(date) { //
if (date && date.length) { //
this.start_time = parseInt(date[0]._d.getTime() / 1000); //
this.end_time = parseInt(date[1]._d.getTime() / 1000); //
} else { //
this.start_time = 0; //
this.end_time = 0; //
}
},
//
getSearchParms() { //
var rules = []; //
let findMode = k => { //
for (let i in this.searchRules) { //
if (this.searchRules[i].key == k) return this.searchRules[i].mode; //
}
return "equal"; //
};
for (let key in this.searchFormData) { //
let value = this.searchFormData[key]; //
if (value) { //
let mode = findMode(key); //
if (mode == "like") { //
value = "%" + value + "%"; // %
}
rules.push({ //
column: key, //
mode: mode, //
value: value //
});
}
}
return rules; //
},
//
getSelectdRow() { //
let row = this.$refs.xGrid.getCurrentRecord(); //
if (!row) { //
let rows = this.$refs.xGrid.getCheckboxRecords(); //
if (rows && rows.length) {
row = rows[0];
} //
}
return row; //
},
//
loadData({ params }) {
params.start_time = this.start_time; //
params.end_time = this.end_time; //
return this.$mk.getPagedData({ url: this.actions.getList, data: params }); //
},
// add / log / setting
toolbarClick(e) {
if (e.name == "add") { //
this.$openPage("/TrainNumber/TrainNumberCreate"); //
}
},
//
pageDetail(row) {
if (!row) { //
this.$mk.msg("请选择行"); //
return; //
}
this.$openPage("/TrainNumber/TrainNumberDetail/" + row[this.keyName]); //
},
//
pageEdit(row) {
if (!row) { //
this.$mk.msg("请选择行"); //
return; //
}
this.$openPage("/TrainNumber/TrainNumberUpdate/" + row[this.keyName]); //
},
//
pageDelete(row) {
let rows = row ? [row] : this.$refs.xGrid.getCheckboxRecords(); //
let ids = []; // id
rows.forEach((row) => { //
ids.push(row[this.keyName]); // idid
});
if (!ids.length) { //
this.$mk.error("请选择行"); //
return;
}
this.$mk.confirm('您确定要删除吗?').then(type => { //
if (type == 'confirm') { //
this.$mk.post({
url: this.actions.delete, //
loading: "删除中...", //
data: {
ids: ids // id
},
useBigInt: true
}).then(() => { //
this.$mk.success("删除成功"); //
this.onSearch(); //
}).catch((a) => { //
this.$mk.error(a.data.msg); //
});
}
});
},
//
onSearch() {
this.$refs.xGrid.commitProxy('query') //
},
onReset() {
this.searchFormData = {}; //
this.$refs['refTruck'].reset();
this.$refs['refDriver'].reset();
this.$refs.xGrid.commitProxy('query') //
},
//
StaffhandleChange(value) {
console.log(value,'++++')
this.$data.searchFormData.driver_id = value.id;
this.$refs.xGrid.commitProxy('query') //
},
//
TruckhandleChange(value) {
this.$data.searchFormData.truck_id = value.id;
this.$refs.xGrid.commitProxy('query') //
}
},
//
watch: {}
};
</script>
<style scoped lang="less">
.page-body {
padding: 30px;
background: @base-bg-color;
}
.gridPanel {
height: calc(100vh - 400px);
}
</style>
<style>
.oplinks svg {
width: 22px;
height: 22px;
margin: 0 5px 0 0;
}
</style>

View File

@ -41,6 +41,18 @@ const TrainNumberRouterMap = {
permission: ["TrainNumber", "TrainNumber-All", "Train-Number-List"],
}
},
MaterialProfit: {
name: '土利润表',
icon: 'idcard',
path: '/TrainNumber/MaterialProfit',
meta: {
invisible: false, // 不在菜单中显示
},
component: () => import('@/pages/Middle/transport/TrainNumber/TrainNumber/MaterialProfit'),
authority: {
permission: ["TrainNumber", "TrainNumber-All", "Train-Number-List"],
}
},
TrainNumberCreate: {
name: '创建车次',
icon: 'idcard',