土利润表
This commit is contained in:
parent
0e0a756dea
commit
f4b06f460b
|
|
@ -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: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
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]); // 将选择行的id添加到id数组
|
||||
});
|
||||
|
||||
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>
|
||||
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Reference in New Issue