This commit is contained in:
parent
7f610e1dc7
commit
a44907040e
|
|
@ -0,0 +1,100 @@
|
||||||
|
<template>
|
||||||
|
<!-- 弹窗对话框 -->
|
||||||
|
<vxe-modal class="vxe-table--ignore-clear" id="myModal" @close="modalClose" v-model="visible" :width="width" :height="height"
|
||||||
|
|
||||||
|
:show-footer="showFooter"
|
||||||
|
@confirm="confirmEvent"
|
||||||
|
min-width="600" min-height="400" show-zoom resize transfer>
|
||||||
|
<!--
|
||||||
|
show-footer 显示底部按钮
|
||||||
|
confirm 确认按钮事件
|
||||||
|
min-width 最小宽度
|
||||||
|
min-height 最小高度
|
||||||
|
show-zoom 显示缩放按钮
|
||||||
|
resize 是否可以缩放
|
||||||
|
transfer 是否使用传送门
|
||||||
|
-->
|
||||||
|
<template #title>
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<!-- <span>提示</span> -->
|
||||||
|
</template>
|
||||||
|
<template #default>
|
||||||
|
<component :is="app" ref="appPage" :dataId="dataId" :pageOptions="pageOptions" :pageMode="pageMode" @callback="handleCallback"></component>
|
||||||
|
</template>
|
||||||
|
</vxe-modal>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "myDialog",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
width:800,
|
||||||
|
height:800,
|
||||||
|
visible: false,
|
||||||
|
title: "提示",
|
||||||
|
callback: null,
|
||||||
|
showFooter:false,
|
||||||
|
dataId: "",
|
||||||
|
pageMode: "", //add edit select
|
||||||
|
pageOptions:{},
|
||||||
|
app: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
// 打开弹窗
|
||||||
|
open(options) {
|
||||||
|
// 解构赋值 page 页面组件 title 标题 callback 回调函数 pageMode 模式 add edit select dataId 数据id width 宽度 height 高度 pageOptions 页面参数
|
||||||
|
// pageOptions 用于传递给页面的参数 例如:{id:1,name:'张三'} 页面通过 this.$options.pageOptions 获取
|
||||||
|
// showFooter 是否显示底部按钮
|
||||||
|
const { page, title, callback, pageMode, dataId,width = 800,height = 600 , pageOptions = {} ,showFooter } = options || {};
|
||||||
|
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.dataId = dataId;
|
||||||
|
this.pageMode = pageMode;
|
||||||
|
this.title = title;
|
||||||
|
this.pageOptions = pageOptions;
|
||||||
|
this.app = page;
|
||||||
|
this.callback = callback;
|
||||||
|
this.showFooter = showFooter;
|
||||||
|
// 设置延迟显示,解决弹窗显示不全的问题
|
||||||
|
setTimeout(() => {
|
||||||
|
this.visible = true;
|
||||||
|
}, 10);
|
||||||
|
},
|
||||||
|
|
||||||
|
// 处理回调
|
||||||
|
handleCallback(e) {
|
||||||
|
|
||||||
|
console.log(e);
|
||||||
|
const { callback } = this;
|
||||||
|
// 判断是否有回调函数
|
||||||
|
if (callback) {
|
||||||
|
// 执行回调
|
||||||
|
callback(e);
|
||||||
|
// 关闭弹窗
|
||||||
|
this.$destroy();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 关闭弹窗
|
||||||
|
modalClose() {
|
||||||
|
this.$destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 确认事件
|
||||||
|
confirmEvent(){
|
||||||
|
const { callback } = this;
|
||||||
|
let data = this.$refs.appPage.getConfirmData();
|
||||||
|
if (callback) {
|
||||||
|
callback({data});
|
||||||
|
this.$destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import Vue from 'vue' // 加载vue模块
|
||||||
|
import promptComponent from './dialog.vue' // 加载dialog组件
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 打开对话框
|
||||||
|
open: function (args) { // 打开对话框
|
||||||
|
const promptConstructor = Vue.extend(promptComponent); // 创建一个子类
|
||||||
|
let instance = new promptConstructor().$mount(''); // 创建一个实例
|
||||||
|
document.body.appendChild(instance.$el); // 将实例挂载到body上
|
||||||
|
instance.open(args); // 打开对话框
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
import { request } from '@/utils/request' // 加载request
|
import {request} from '@/utils/request' // 加载request
|
||||||
import modal from './modal' // 加载modal
|
import modal from './modal' // 加载modal
|
||||||
|
|
||||||
import JSONbig from 'json-bigint'
|
import JSONbig from 'json-bigint'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
// 提交post请求 ,获取数据
|
// 提交post请求 ,获取数据
|
||||||
post: function ({ url, data, loading, config, useBigInt }) { // post请求
|
post: function ({url, data, loading, config, useBigInt}) { // post请求
|
||||||
|
|
||||||
if (useBigInt) {
|
if (useBigInt) {
|
||||||
config = config || {};
|
config = config || {};
|
||||||
|
|
@ -52,7 +51,7 @@ export default {
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get: function ({ url, loading, config, useBigInt }) { // post请求
|
get: function ({url, loading, config, useBigInt}) { // post请求
|
||||||
|
|
||||||
if (useBigInt) {
|
if (useBigInt) {
|
||||||
config = config || {};
|
config = config || {};
|
||||||
|
|
@ -90,7 +89,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取分页数据
|
// 获取分页数据
|
||||||
getPagedData: function ({ url, method = 'post', data, callback, config,useBigInt,rowFilters,listFieldName }) { // 获取分页数据 默认post请求
|
getPagedData: function ({url, method = 'post', data, callback, config, useBigInt, rowFilters, listFieldName}) { // 获取分页数据 默认post请求
|
||||||
|
|
||||||
if (useBigInt) {
|
if (useBigInt) {
|
||||||
config = config || {};
|
config = config || {};
|
||||||
|
|
@ -108,6 +107,10 @@ export default {
|
||||||
if (data.end_time && typeof (data.end_time) == "string") { // 如果结束时间是字符串
|
if (data.end_time && typeof (data.end_time) == "string") { // 如果结束时间是字符串
|
||||||
data.end_time = parseInt(new Date(data.end_time).getTime() / 1000); // 转换为时间戳
|
data.end_time = parseInt(new Date(data.end_time).getTime() / 1000); // 转换为时间戳
|
||||||
}
|
}
|
||||||
|
if (data.start_time === data.end_time) { // 如果开始时间和结束时间相等 说明是同一天
|
||||||
|
data.end_time = data.end_time + 24 * 60 * 60 - 1;
|
||||||
|
}
|
||||||
|
|
||||||
request(url, method, data, config).then(response => { // 发送请求
|
request(url, method, data, config).then(response => { // 发送请求
|
||||||
if (!response) { // 如果没有返回
|
if (!response) { // 如果没有返回
|
||||||
reject && reject(response); // 返回错误
|
reject && reject(response); // 返回错误
|
||||||
|
|
@ -128,25 +131,25 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(
|
if (
|
||||||
rowFilters && // 如果有行过滤器
|
rowFilters && // 如果有行过滤器
|
||||||
rowFilters.length && // 如果行过滤器有数据
|
rowFilters.length && // 如果行过滤器有数据
|
||||||
listFieldName && // 如果列表字段名有数据
|
listFieldName && // 如果列表字段名有数据
|
||||||
result.data && // 如果返回的数据有数据
|
result.data && // 如果返回的数据有数据
|
||||||
result.data[listFieldName] && // 如果返回的数据中有列表字段名
|
result.data[listFieldName] && // 如果返回的数据中有列表字段名
|
||||||
result.data[listFieldName].length // 如果返回的数据中的列表字段名有数据
|
result.data[listFieldName].length // 如果返回的数据中的列表字段名有数据
|
||||||
){
|
) {
|
||||||
console.log( JSON.stringify(result.data[listFieldName]))
|
console.log(JSON.stringify(result.data[listFieldName]))
|
||||||
result.data[listFieldName] = result.data[listFieldName].filter((row)=>{
|
result.data[listFieldName] = result.data[listFieldName].filter((row) => {
|
||||||
for(let i =0;i<rowFilters.length;i++){
|
for (let i = 0; i < rowFilters.length; i++) {
|
||||||
let f = rowFilters[i];
|
let f = rowFilters[i];
|
||||||
if(!f(row)){
|
if (!f(row)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
console.log( JSON.stringify(result.data[listFieldName]))
|
console.log(JSON.stringify(result.data[listFieldName]))
|
||||||
}
|
}
|
||||||
// console.log(result.data)
|
// console.log(result.data)
|
||||||
resolve(result.data); // 返回成功
|
resolve(result.data); // 返回成功
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import dialog from "@/application/mk/components/dialog";
|
import dialog from "@/application/zk/components/dialog";
|
||||||
import request from "@/application/zk/func/request";
|
import request from "@/application/zk/func/request";
|
||||||
import zkToolbar from "./components/zkToolbar.vue";
|
import zkToolbar from "./components/zkToolbar.vue";
|
||||||
import zkTableView from "./components/zkTableView.vue";
|
import zkTableView from "./components/zkTableView.vue";
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
DeleteUrlData: {ids: []},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
DeleteUrl: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initListData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
Delete() {
|
||||||
|
this.$zk.post({
|
||||||
|
url: this.DeleteUrl,
|
||||||
|
data: this.DeleteUrlData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
this.initListData();
|
||||||
|
console.log(a)
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
DetailUrl: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
DetailUrlData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
CreateRouter: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
UpdateRouter: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
DetailVueComponent: {
|
||||||
|
type: String,
|
||||||
|
default: "./Detail.vue"
|
||||||
|
},
|
||||||
|
IsListShowCode: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
ListTitle: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
ListUrl: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
ListUrlData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
ListFieldName: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
BackFieldNames: {
|
||||||
|
type: Array,
|
||||||
|
default: () => {
|
||||||
|
return ["id", "name", "code"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initListData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initListData() {
|
||||||
|
this.$zk.getPagedData({
|
||||||
|
url: this.ListUrl,
|
||||||
|
listFieldName: this.ListFieldName,
|
||||||
|
data: this.ListUrlData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
if (a.total === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a[this.ListFieldName].length > 0) {
|
||||||
|
this.data = a[this.ListFieldName];
|
||||||
|
// this.list中的id字段转换为字符串
|
||||||
|
this.data.forEach(item => {
|
||||||
|
item.id = item.id.toString();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((a) => {
|
||||||
|
console.log("====error", a)
|
||||||
|
if (a.code !== 200) {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
UpdateUrl: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
UpdateUrlData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
<zkSelect
|
||||||
|
:ListTitle="'请选择车辆'" // 空选择
|
||||||
|
:IsListShowCode="false" // 是否显示code字段
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch" // 请求地址
|
||||||
|
:ListUrlData="this.$data.zkSelectData" // 请求参数
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName" // 请求字段
|
||||||
|
:BackFieldNames="[ 'id', 'name', 'code','create_time']" // 返回字段
|
||||||
|
@zkSelect="zkSelecthandleChange" // 选择后的回调
|
||||||
|
></zkSelect>
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectData: {
|
||||||
|
page: 1,
|
||||||
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
|
{
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
zkSelectDataFieldName: 'Truck',
|
||||||
|
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<zkSelect
|
||||||
|
:ListTitle="'请选择车辆'"
|
||||||
|
:IsListShowCode="false"
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:BackFieldNames="[ 'id', 'name', 'code','create_time']"
|
||||||
|
@zkSelect="zkSelecthandleChange"
|
||||||
|
></zkSelect>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
import ZkSelect from '@/components/zk/zkSelect.vue';
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
// 动作
|
||||||
|
methods: {
|
||||||
|
// 选择器改变
|
||||||
|
zkSelecthandleChange(value)
|
||||||
|
{
|
||||||
|
console.log("value:", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
:default-value="ListTitle"
|
||||||
|
style="width: 200px"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
<a-select-option v-for="item in data" :key="item.id" :value="item.id">
|
||||||
|
{{ item.name }} <span v-if="IsListShowCode">- {{ item.code }}</span>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import Mixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [Mixin],
|
||||||
|
created() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleChange(value) {
|
||||||
|
console.log(`selected ${value}`);
|
||||||
|
// 向父级传递数据 backFieldNames
|
||||||
|
this.data.forEach(item => {
|
||||||
|
if (item.id === value) {
|
||||||
|
// backFieldNames
|
||||||
|
let FieldNames = {}
|
||||||
|
this.BackFieldNames.forEach(backFieldName => {
|
||||||
|
if (item[backFieldName]) {
|
||||||
|
FieldNames[backFieldName] = item[backFieldName];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$emit('zkSelect', FieldNames);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
:ListTitle="'请选择车辆'" // 空选择
|
||||||
|
:IsListShowCode="false" // 是否显示code字段
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch" // 请求地址
|
||||||
|
:ListUrlData="this.$data.zkSelectData" // 请求参数
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName" // 请求字段
|
||||||
|
:BackFieldNames="[ 'id', 'name', 'code','create_time']" // 返回字段
|
||||||
|
@zkSelectAddItem="zkSelecthandleChange" // 选择后的回调
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectData: {
|
||||||
|
page: 1,
|
||||||
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
|
{
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
zkSelectDataFieldName: 'Truck',
|
||||||
|
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<zkSelectAddItem
|
||||||
|
:ListTitle="'请选择车辆'"
|
||||||
|
:IsListShowCode="false"
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:BackFieldNames="[ 'id', 'name', 'code','create_time']"
|
||||||
|
@zkSelectAddItem="zkSelecthandleChange"
|
||||||
|
></zkSelectAddItem>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
import ZkSelectAddItem from '@/components/zk/zkSelectAddItem.vue';
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 动作
|
||||||
|
methods: {
|
||||||
|
// 选择器改变
|
||||||
|
zkSelecthandleChange(value)
|
||||||
|
{
|
||||||
|
console.log("value:", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
:default-value="ListTitle"
|
||||||
|
style="width: 120px"
|
||||||
|
@change="handleChange">
|
||||||
|
<div slot="dropdownRender" slot-scope="menu">
|
||||||
|
<v-nodes :vnodes="menu"/>
|
||||||
|
<a-divider style="margin: 4px 0;"/>
|
||||||
|
<div
|
||||||
|
style="padding: 4px 8px; cursor: pointer;"
|
||||||
|
@mousedown="e => e.preventDefault()"
|
||||||
|
@click="addItem"
|
||||||
|
>
|
||||||
|
<a-icon type="plus"/>
|
||||||
|
Add item
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-select-option v-for="item in data" :key="item.id" :value="item.id">
|
||||||
|
{{ item.name }} <span v-if="IsListShowCode">- {{ item.code }}</span>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import Mixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
// let index = 0;
|
||||||
|
export default {
|
||||||
|
mixins: [Mixin],
|
||||||
|
components: {
|
||||||
|
VNodes: {
|
||||||
|
functional: true,
|
||||||
|
render: (h, ctx) => ctx.props.vnodes,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleChange(value) {
|
||||||
|
console.log(`selected ${value}`);
|
||||||
|
// 向父级传递数据 backFieldNames
|
||||||
|
this.data.forEach(item => {
|
||||||
|
if (item.id === value) {
|
||||||
|
// backFieldNames
|
||||||
|
let FieldNames = {}
|
||||||
|
this.BackFieldNames.forEach(backFieldName => {
|
||||||
|
if (item[backFieldName]) {
|
||||||
|
FieldNames[backFieldName] = item[backFieldName];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$emit('zkSelectAddItem', FieldNames);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
addItem() {
|
||||||
|
console.log('addItem');
|
||||||
|
// this.items.push(`New item ${index++}`);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
:ListTitle="'请选择车辆'" // 空选择
|
||||||
|
:IsListShowCode="false" // 是否显示code字段
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch" // 请求地址
|
||||||
|
:ListUrlData="this.$data.zkSelectData" // 请求参数
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName" // 请求字段
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames" // 返回字段
|
||||||
|
@zkSelectSearch="zkSelecthandleChange" // 选择后的回调
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectData: {
|
||||||
|
page: 1,
|
||||||
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
|
{
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
zkSelectDataFieldName: 'Truck',
|
||||||
|
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<ZkSelectSearch
|
||||||
|
:ListTitle="'请选择车辆'"
|
||||||
|
:IsListShowCode="false"
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames"
|
||||||
|
@zkSelectSearch="zkSelecthandleChange"
|
||||||
|
></ZkSelectSearch>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
import ZkSelectSearch from '@/components/zk/zkSelectSearch.vue';
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 动作
|
||||||
|
methods: {
|
||||||
|
// 选择器改变
|
||||||
|
zkSelecthandleChange(value)
|
||||||
|
{
|
||||||
|
console.log("value:", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
show-search
|
||||||
|
:value="value"
|
||||||
|
:placeholder="ListTitle"
|
||||||
|
style="width: 200px"
|
||||||
|
:default-active-first-option="false"
|
||||||
|
:show-arrow="false"
|
||||||
|
:filter-option="false"
|
||||||
|
:not-found-content="null"
|
||||||
|
@search="handleSearch"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
<a-select-option v-for="item in data" :key="item.id">
|
||||||
|
{{ item.name }} <span v-if="IsListShowCode">- {{ item.code }}</span>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import Mixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [Mixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: undefined,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleSearch(value) {
|
||||||
|
if (!value) {
|
||||||
|
this.initListData();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let searchData = this.ListUrlData;
|
||||||
|
searchData.search_rules = [
|
||||||
|
{
|
||||||
|
column: "name",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: "code",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
},
|
||||||
|
];
|
||||||
|
this.$zk.getPagedData({
|
||||||
|
url: this.ListUrl,
|
||||||
|
listFieldName: this.ListFieldName,
|
||||||
|
data: searchData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
if (a.total === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.data = a[this.ListFieldName];
|
||||||
|
// this.list中的id字段转换为字符串
|
||||||
|
this.data.forEach(item => {
|
||||||
|
item.id = item.id.toString();
|
||||||
|
});
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleChange(value) {
|
||||||
|
console.log(`selected ${value}`);
|
||||||
|
this.value = value;
|
||||||
|
// 向父级传递数据 backFieldNames
|
||||||
|
this.data.forEach(item => {
|
||||||
|
if (item.id === value) {
|
||||||
|
// backFieldNames
|
||||||
|
let FieldNames = {}
|
||||||
|
this.BackFieldNames.forEach(backFieldName => {
|
||||||
|
if (item[backFieldName]) {
|
||||||
|
FieldNames[backFieldName] = item[backFieldName];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$emit('zkSelectSearch', FieldNames);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
:ListTitle="'请选择车辆'" // 空选择
|
||||||
|
:IsListShowCode="false" // 是否显示code字段
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch" // 请求地址
|
||||||
|
:ListUrlData="this.$data.zkSelectData" // 请求参数
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName" // 请求字段
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames" // 返回字段
|
||||||
|
@zkSelectSearch="zkSelecthandleChange" // 选择后的回调
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectData: {
|
||||||
|
page: 1,
|
||||||
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
|
{
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
zkSelectDataFieldName: 'Truck',
|
||||||
|
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<ZkSelectSearch1
|
||||||
|
:ListTitle="'请选择车辆'"
|
||||||
|
:IsListShowCode="false"
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames"
|
||||||
|
@zkSelectSearch="zkSelecthandleChange"
|
||||||
|
></ZkSelectSearch1>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
import ZkSelectSearch1 from '@/components/zk/zkSelectSearch1.vue';
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 动作
|
||||||
|
methods: {
|
||||||
|
// 选择器改变
|
||||||
|
zkSelecthandleChange(value)
|
||||||
|
{
|
||||||
|
console.log("value:", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
show-search
|
||||||
|
:placeholder="ListTitle"
|
||||||
|
option-filter-prop="children"
|
||||||
|
style="width: 200px"
|
||||||
|
:filter-option="filterOption"
|
||||||
|
@focus="handleFocus"
|
||||||
|
@blur="handleBlur"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
<a-select-option v-for="item in data" :key="item.id">
|
||||||
|
{{ item.name }} <span v-if="IsListShowCode">- {{ item.code }}</span>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import Mixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [Mixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: undefined,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleSearch(value) {
|
||||||
|
if (!value) {
|
||||||
|
this.initListData();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let searchData = this.urlData;
|
||||||
|
searchData.search_rules = [{
|
||||||
|
column: "name",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: "code",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
}];
|
||||||
|
this.$zk.getPagedData({
|
||||||
|
url: this.url,
|
||||||
|
listFieldName: this.listFieldName,
|
||||||
|
data: searchData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
if (a.total === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.data = a[this.listFieldName];
|
||||||
|
// this.list中的id字段转换为字符串
|
||||||
|
this.data.forEach(item => {
|
||||||
|
item.id = item.id.toString();
|
||||||
|
});
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleChange(value) { // 更改
|
||||||
|
console.log(`selected ${value}`);
|
||||||
|
this.value = value;
|
||||||
|
// 向父级传递数据 backFieldNames
|
||||||
|
this.data.forEach(item => {
|
||||||
|
if (item.id === value) {
|
||||||
|
// backFieldNames
|
||||||
|
let FieldNames = {}
|
||||||
|
this.BackFieldNames.forEach(backFieldName => {
|
||||||
|
if (item[backFieldName]) {
|
||||||
|
FieldNames[backFieldName] = item[backFieldName];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$emit('zkSelectSearch', FieldNames);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleBlur(value) { // 失焦
|
||||||
|
console.log(`blur ${value}`);
|
||||||
|
},
|
||||||
|
handleFocus(value) { // 聚焦
|
||||||
|
console.log(`focus ${value}`);
|
||||||
|
},
|
||||||
|
filterOption(input, option) { // 过滤
|
||||||
|
return (
|
||||||
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
<ZkSelectSearchMultiple
|
||||||
|
:ListTitle="'请选择车辆(多选)'" // 空选择
|
||||||
|
:IsListShowCode="false" // 是否显示code字段
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch" // 请求地址
|
||||||
|
:ListUrlData="this.$data.zkSelectData" // 请求参数
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName" // 请求字段
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames" // 返回字段
|
||||||
|
@zkSelectSearchMultiple="zkSelecthandleChange" // 选择后的回调
|
||||||
|
></ZkSelectSearchMultiple>
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectData: {
|
||||||
|
page: 1,
|
||||||
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
|
{
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
zkSelectDataFieldName: 'Truck',
|
||||||
|
zkBackFieldNames: ['id', 'name', 'code', 'create_time'],
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<ZkSelectSearchMultiple
|
||||||
|
:ListTitle="'请选择车辆(多选)'"
|
||||||
|
:IsListShowCode="false"
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:BackFieldNames="this.$data.zkBackFieldNames"
|
||||||
|
@zkSelectSearchMultiple="zkSelecthandleChange"
|
||||||
|
></ZkSelectSearchMultiple>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
import ZkSelectSearchMultiple from "@/components/zk/zkSelectSearchMultiple.vue";
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 动作
|
||||||
|
methods: {
|
||||||
|
// 选择器改变
|
||||||
|
zkSelecthandleChange(value)
|
||||||
|
{
|
||||||
|
console.log("value:", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
mode="multiple"
|
||||||
|
label-in-value
|
||||||
|
:value="value"
|
||||||
|
:placeholder="ListTitle"
|
||||||
|
style="width: 100%"
|
||||||
|
:filter-option="false"
|
||||||
|
:not-found-content="fetching ? undefined : null"
|
||||||
|
@search="handleSearch"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
<a-spin v-if="fetching" size="small"/>
|
||||||
|
<a-select-option v-for="d in data" :key="d.id">
|
||||||
|
{{ d.name }}<span v-if="IsListShowCode">- {{ d.code }}</span>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import Mixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [Mixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: [],
|
||||||
|
value: [],
|
||||||
|
fetching: false,
|
||||||
|
FieldNames: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleSearch(value) {
|
||||||
|
// 如果value 为空格
|
||||||
|
|
||||||
|
if (value.length === 0) {
|
||||||
|
this.initListData();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(value);
|
||||||
|
let searchData = this.ListUrlData;
|
||||||
|
searchData.search_rules = [{
|
||||||
|
column: "name",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: "code",
|
||||||
|
mode: "like",
|
||||||
|
value: value
|
||||||
|
}];
|
||||||
|
this.$zk.getPagedData({
|
||||||
|
url: this.url,
|
||||||
|
listFieldName: this.listFieldName,
|
||||||
|
data: searchData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
this.data = a[this.listFieldName];
|
||||||
|
// this.list中的id字段转换为字符串
|
||||||
|
this.data.forEach(item => {
|
||||||
|
item.id = item.id.toString();
|
||||||
|
});
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleChange(value) {
|
||||||
|
Object.assign(this, {
|
||||||
|
value,
|
||||||
|
fetching: false,
|
||||||
|
});
|
||||||
|
console.log(this.value)
|
||||||
|
// 向父级传递数据 backFieldNames
|
||||||
|
let FieldNamesD = []
|
||||||
|
this.value.forEach(v => {
|
||||||
|
this.data.forEach(item => {
|
||||||
|
if (item.id === v.key) {
|
||||||
|
|
||||||
|
let FieldNames = {}
|
||||||
|
this.BackFieldNames.forEach(backFieldName => {
|
||||||
|
if (item[backFieldName]) {
|
||||||
|
FieldNames[backFieldName] = item[backFieldName];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
FieldNamesD.push(FieldNames)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.$emit('zkSelectSearchMultiple', FieldNamesD);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
<ZkTableList
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:DetailUrl="this.$data.actions.TruckDetail"
|
||||||
|
:AddUrl="this.$data.actions.TruckCreate"
|
||||||
|
:UpdateUrl="this.$data.actions.TruckUpdate"
|
||||||
|
:DeleteUrl="this.$data.actions.TruckBatchDelete"
|
||||||
|
:FormConfig="this.$data.zkSelectFormConfig"
|
||||||
|
:Columns="this.$data.columns"
|
||||||
|
>
|
||||||
|
|
||||||
|
</ZkTableList>
|
||||||
|
|
||||||
|
### 引用
|
||||||
|
|
||||||
|
```js
|
||||||
|
|
||||||
|
import ZkTableList from "@/components/zk/zkTableList.vue";
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
zkSelectFormConfig: {
|
||||||
|
data: {
|
||||||
|
name: '',
|
||||||
|
code: '',
|
||||||
|
plate_number: '',
|
||||||
|
create_time: 0
|
||||||
|
},
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '名称',
|
||||||
|
slots: {
|
||||||
|
default: 'name_item'
|
||||||
|
} // 自定义插槽
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'code',
|
||||||
|
title: '编码',
|
||||||
|
slots: {default: 'code_item'
|
||||||
|
} // 自定义插槽
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'plate_number',
|
||||||
|
title: '车牌号',
|
||||||
|
slots: {
|
||||||
|
default: 'plate_number_item'} // 自定义插槽
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'create_time',
|
||||||
|
title: '时间',
|
||||||
|
slots: {
|
||||||
|
default: 'create_time_item'
|
||||||
|
} // 自定义插槽
|
||||||
|
},
|
||||||
|
{slots: {default: 'operate_item'}}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
// 表格列配置
|
||||||
|
columns: [
|
||||||
|
{type: 'seq', width: 60},
|
||||||
|
{type: 'checkbox', width: 42},
|
||||||
|
|
||||||
|
|
||||||
|
// =============================== 表格列 自动生成 Start ===============================
|
||||||
|
|
||||||
|
|
||||||
|
{field: 'code', sortable: true, title: '编码', width: 120
|
||||||
|
}, // 编码
|
||||||
|
{
|
||||||
|
field: 'name', sortable: true, title: '名称', width: 120
|
||||||
|
}, // 名称
|
||||||
|
{
|
||||||
|
field: 'plate_number', sortable: true, title: '车牌号', width: 120
|
||||||
|
}, // 车牌号
|
||||||
|
{
|
||||||
|
field: 'type', sortable: true, title: '车辆类型', width: 120}, // 车辆类型
|
||||||
|
{
|
||||||
|
field: 'manager_name', sortable: true, title: '负责人姓名', width: 120}, // 负责人姓名
|
||||||
|
{field: 'manager_phone', sortable: true, title: '负责人电话', width: 150
|
||||||
|
}, // 负责人电话
|
||||||
|
{
|
||||||
|
field: 'out_count', sortable: true, title: '出车次数', width: 120
|
||||||
|
}, // 出车次数
|
||||||
|
{
|
||||||
|
field: 'out_distance', sortable: true, title: '出车总公里数', width: 150
|
||||||
|
}, // 出车总公里数
|
||||||
|
{
|
||||||
|
field: 'repair_count', sortable: true, title: '维修次数', width: 100}, // 维修次数
|
||||||
|
{
|
||||||
|
field: 'change_tyre_count', sortable: true, title: '更换轮胎次数', width: 130}, // 更换轮胎次数
|
||||||
|
{field: 'add_oil_count', sortable: true, title: '加油次数', width: 100
|
||||||
|
}, // 加油次数
|
||||||
|
{
|
||||||
|
field: 'add_oil_litre', sortable: true, title: '加油总升数', width: 120
|
||||||
|
}, // 加油总升数
|
||||||
|
{
|
||||||
|
field: 'remark', sortable: true, title: '车辆备注', width: 250
|
||||||
|
}, // 车辆备注
|
||||||
|
|
||||||
|
|
||||||
|
// =============================== 表格列 自动生成 Start ===============================
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作', fixed: 'right', slots: {default: 'op'}, width: 140}
|
||||||
|
],
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
|
||||||
|
<ZkTableList
|
||||||
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
|
:DetailUrl="this.$data.actions.TruckDetail"
|
||||||
|
:AddUrl="this.$data.actions.TruckCreate"
|
||||||
|
:UpdateUrl="this.$data.actions.TruckUpdate"
|
||||||
|
:DeleteUrl="this.$data.actions.TruckBatchDelete"
|
||||||
|
:FormConfig="this.$data.zkSelectFormConfig"
|
||||||
|
:Columns="this.$data.columns"
|
||||||
|
>
|
||||||
|
|
||||||
|
</ZkTableList>
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,288 @@
|
||||||
|
<template>
|
||||||
|
<vxe-grid ref='xGrid' v-bind="gridOptions" @form-submit="initListData" @page-change="handlePageChange">
|
||||||
|
<!-- 工具栏 -->
|
||||||
|
<template #toolbar_buttons>
|
||||||
|
<a-button @click="pageDelete()">批量删除</a-button>
|
||||||
|
<a-button type="primary" @click="Add()">新增</a-button>
|
||||||
|
</template>
|
||||||
|
<!-- 名称 -->
|
||||||
|
<template #name_item="{ data }">
|
||||||
|
<a-input v-model="data.name" type="text" placeholder="请输入名称"></a-input>
|
||||||
|
</template>
|
||||||
|
<!-- 编码 -->
|
||||||
|
<template #code_item="{ data }">
|
||||||
|
<a-input v-model="data.code" type="text" placeholder="请输入编码"></a-input>
|
||||||
|
</template>
|
||||||
|
<!-- 时间选择 -->
|
||||||
|
<template #create_time_item>
|
||||||
|
<a-range-picker @change="onChangeCreatTime"/>
|
||||||
|
</template>
|
||||||
|
<!-- 表单区操作 -->
|
||||||
|
<template #operate_item>
|
||||||
|
<a-button type="primary" status="primary">查询</a-button>
|
||||||
|
<a-button
|
||||||
|
@click="() => {
|
||||||
|
gridOptions.formConfig.data.name = '';
|
||||||
|
gridOptions.formConfig.data.code = '';
|
||||||
|
gridOptions.formConfig.data.create_time = 0;
|
||||||
|
gridOptions.formConfig.data.end_time = 0;
|
||||||
|
}"
|
||||||
|
>重置
|
||||||
|
</a-button>
|
||||||
|
</template>
|
||||||
|
<!-- 列表操作 -->
|
||||||
|
<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>
|
||||||
|
<template #empty>
|
||||||
|
<a-empty/>
|
||||||
|
</template>
|
||||||
|
</vxe-grid>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import ListMixin from "@/application/zk/mixins/ListComponents.js";
|
||||||
|
import DeleteMixin from "@/application/zk/mixins/DeleteComponents.js";
|
||||||
|
import DetailMixin from "@/application/zk/mixins/DetailComponents.js";
|
||||||
|
import UpdateMixin from "@/application/zk/mixins/UpdateComponents.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [ListMixin, DeleteMixin, DetailMixin, UpdateMixin],
|
||||||
|
props: {
|
||||||
|
Columns: {
|
||||||
|
type: Array
|
||||||
|
},
|
||||||
|
FormConfig: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
name: '',
|
||||||
|
code: '',
|
||||||
|
create_time: 0
|
||||||
|
},
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '名称',
|
||||||
|
slots: {default: 'name_item'} // 自定义插槽
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'code',
|
||||||
|
title: '编码',
|
||||||
|
slots: {default: 'code_item'} // 自定义插槽
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'create_time',
|
||||||
|
title: '时间',
|
||||||
|
slots: {default: 'create_time_item'} // 自定义插槽
|
||||||
|
},
|
||||||
|
{slots: {default: 'operate_item'}}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
DeleteIds: [], // 删除的id
|
||||||
|
gridOptions: { // 表格配置
|
||||||
|
resizable: true, // 是否允许拖动列宽调整大小
|
||||||
|
border: true, // 是否带有纵向边框
|
||||||
|
showOverflow: true, // 当内容过长时显示为省略号
|
||||||
|
loading: false, // 是否显示加载中
|
||||||
|
minHeight: '600', // 最小高度
|
||||||
|
maxHeight: '1200', // 最大高度
|
||||||
|
// 间隔条纹
|
||||||
|
stripe: true,
|
||||||
|
exportConfig: { // 导出配置
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
pagerConfig: {// 分页配置
|
||||||
|
total: 0, // 总条数
|
||||||
|
currentPage: this.ListUrlData.page, // 当前页
|
||||||
|
pageSize: this.ListUrlData.limit, // 默认每页显示条数
|
||||||
|
pageSizes: [10, 20, 30, 50, 100, 500, 1000, 2000] // 每页显示条数选项
|
||||||
|
},
|
||||||
|
checkboxConfig: { // 复选框配置
|
||||||
|
// 设置复选框支持分页勾选,需要设置 rowId 行数据主键
|
||||||
|
reserve: true,
|
||||||
|
// 点击行选中复选框
|
||||||
|
trigger: 'row',
|
||||||
|
highlight: true
|
||||||
|
},
|
||||||
|
formConfig: this.FormConfig, // 表单配置
|
||||||
|
toolbarConfig: { // 工具栏配置
|
||||||
|
export: true, // 是否显示导出按钮
|
||||||
|
custom: true, // 是否显示自定义列按钮
|
||||||
|
slots: {
|
||||||
|
buttons: 'toolbar_buttons' // 自定义插槽
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columns: this.Columns, // 表格列配置
|
||||||
|
data: []
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 初始化列表数据
|
||||||
|
this.initListData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
// 初始化列表数据
|
||||||
|
initListData() {
|
||||||
|
this.ListUrlData.order_bys = []
|
||||||
|
this.ListUrlData.order_bys.push({
|
||||||
|
column: "create_time",
|
||||||
|
order: "desc"
|
||||||
|
})
|
||||||
|
this.ListUrlData.search_rules = [];
|
||||||
|
if (this.gridOptions.formConfig.data.name !== '') {
|
||||||
|
this.ListUrlData.search_rules.push(
|
||||||
|
{
|
||||||
|
column: "name",
|
||||||
|
mode: "like",
|
||||||
|
value: this.gridOptions.formConfig.data.name
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (this.gridOptions.formConfig.data.code !== '') {
|
||||||
|
this.ListUrlData.search_rules.push(
|
||||||
|
{
|
||||||
|
column: "code",
|
||||||
|
mode: "like",
|
||||||
|
value: this.gridOptions.formConfig.data.code
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
this.$zk.getPagedData({
|
||||||
|
url: this.ListUrl,
|
||||||
|
listFieldName: this.ListFieldName,
|
||||||
|
data: this.ListUrlData,
|
||||||
|
loading: "加载中...",
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
if (a.total === 0) {
|
||||||
|
this.gridOptions.pagerConfig.currentPage = this.ListUrlData.page;
|
||||||
|
this.gridOptions.pagerConfig.pageSize = this.ListUrlData.limit;
|
||||||
|
this.gridOptions.pagerConfig.total = a.total;
|
||||||
|
this.gridOptions.data = a[this.ListFieldName];
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.gridOptions.data = a[this.ListFieldName];
|
||||||
|
// this.list中的id字段转换为字符串
|
||||||
|
this.gridOptions.data.forEach(item => {
|
||||||
|
item.id = item.id.toString();
|
||||||
|
});
|
||||||
|
this.gridOptions.pagerConfig.currentPage = this.ListUrlData.page;
|
||||||
|
this.gridOptions.pagerConfig.pageSize = this.ListUrlData.limit;
|
||||||
|
this.gridOptions.pagerConfig.total = a.total;
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
pageDelete: function (row) {
|
||||||
|
let ids = [];
|
||||||
|
if (row) {
|
||||||
|
ids.push(row.id);
|
||||||
|
}
|
||||||
|
this.$refs.xGrid.getCheckboxRecords().forEach(item => {
|
||||||
|
ids.push(item.id);
|
||||||
|
});
|
||||||
|
console.log(ids);
|
||||||
|
if (!ids.length) { // 如果没有选中行
|
||||||
|
this.$mk.error("请选择行"); // 提示
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.$mk.confirm('您确定要删除吗?').then(type => { // 确认删除
|
||||||
|
if (type === 'confirm') { // 如果确认删除
|
||||||
|
this.DeleteUrlData.ids = ids;
|
||||||
|
this.Delete()
|
||||||
|
this.$message.success("删除成功")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
// 分页
|
||||||
|
handlePageChange({currentPage, pageSize}) {
|
||||||
|
this.ListUrlData.page = currentPage
|
||||||
|
this.ListUrlData.limit = pageSize
|
||||||
|
this.initListData()
|
||||||
|
},
|
||||||
|
// 时间选择
|
||||||
|
onChangeCreatTime(date, dateString) {
|
||||||
|
console.log("dateString:", dateString)
|
||||||
|
if (dateString[0] === '' && dateString[1] === '') {
|
||||||
|
this.ListUrlData.start_time = 0;
|
||||||
|
this.ListUrlData.end_time = 0;
|
||||||
|
this.initListData()
|
||||||
|
} else {
|
||||||
|
this.ListUrlData.start_time = dateString[0];
|
||||||
|
this.ListUrlData.end_time = dateString[1];
|
||||||
|
this.initListData()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 新增
|
||||||
|
Add() {
|
||||||
|
this.$openPage(this.CreateRouter);
|
||||||
|
},
|
||||||
|
// 编辑
|
||||||
|
pageEdit(row) {
|
||||||
|
console.log(row)
|
||||||
|
if (!row) { // 如果没有选中行
|
||||||
|
this.$mk.msg("请选择行"); // 提示
|
||||||
|
return; // 返回
|
||||||
|
}
|
||||||
|
this.$openPage(this.UpdateRouter + "/" + row.id); // 打开页面
|
||||||
|
},
|
||||||
|
// 详情
|
||||||
|
pageDetail(row) {
|
||||||
|
console.log(row)
|
||||||
|
if (!row) { // 如果没有选中行
|
||||||
|
this.$mk.msg("请选择行"); // 提示
|
||||||
|
return; // 返回
|
||||||
|
}
|
||||||
|
this.$mk.dialog.open({
|
||||||
|
height: 800,
|
||||||
|
width: 1200,
|
||||||
|
page: () => import(this.DetailVueComponent),
|
||||||
|
title: "详情",
|
||||||
|
dataId: row.id,
|
||||||
|
pageOptions: {
|
||||||
|
ApiUrl: this.DetailUrl,
|
||||||
|
ApiData: this.DetailUrlData,
|
||||||
|
FieldName: 'truck',
|
||||||
|
title: "车辆详情",
|
||||||
|
},
|
||||||
|
callback: ({success}) => {
|
||||||
|
success && this.initListData();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped lang="less">
|
||||||
|
.ant-btn {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,276 @@
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "TableView",
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "表格"
|
||||||
|
},
|
||||||
|
// th是否居中
|
||||||
|
thCenter: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
row: [
|
||||||
|
{
|
||||||
|
name: "选项",
|
||||||
|
value: "value",
|
||||||
|
height: 10
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataId: {}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
// 根据row元素数量计算宽度
|
||||||
|
thCenterStyle() {
|
||||||
|
return this.thCenter ? {textAlign: "center"} : {};
|
||||||
|
},
|
||||||
|
// 根据row元素的height计算高度
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
rowClass(l) {
|
||||||
|
return "row" + l
|
||||||
|
},
|
||||||
|
rowHeight(v) {
|
||||||
|
return {height: v.height * 40 + "px"};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="container">
|
||||||
|
<h1> {{ title }}</h1>
|
||||||
|
<div v-for="(item, index) in options" :key="index">
|
||||||
|
<div class="row" v-for="(value, key) in item" :key="key" :class="rowClass(value.row.length)">
|
||||||
|
<div class="cell" v-for="(v, k) in value.row" :key="k" :style="rowHeight(v)">
|
||||||
|
<span class="th" :style="thCenterStyle">
|
||||||
|
{{ v.name }}
|
||||||
|
</span>
|
||||||
|
<span class="td">
|
||||||
|
{{ v.value }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.container {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-top: 0px;
|
||||||
|
margin: 10px;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
padding: 5px 10px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
|
||||||
|
.cell {
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: 10px 10px 10px 10px;
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.th {
|
||||||
|
background: #f5f7fa;
|
||||||
|
border-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
background: #ffffff;
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row1 {
|
||||||
|
.th {
|
||||||
|
width: 12.5%*1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
width: 12.5%*7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row2 {
|
||||||
|
.th {
|
||||||
|
width: 12.5%*2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
width: 12.5%*6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row3 {
|
||||||
|
.th {
|
||||||
|
width: 12.5%*3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
width: 12.5%*5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row4 {
|
||||||
|
.th {
|
||||||
|
width: 12.5%*4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
width: 12.5%*4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row5 {
|
||||||
|
.th {
|
||||||
|
width: 12.5%*5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td {
|
||||||
|
width: 12.5%*3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
10
src/main.js
10
src/main.js
|
|
@ -15,9 +15,14 @@ import VXETable from 'vxe-table'
|
||||||
import 'vxe-table/lib/style.css'
|
import 'vxe-table/lib/style.css'
|
||||||
import VueCropper from 'vue-cropper'
|
import VueCropper from 'vue-cropper'
|
||||||
import {hiPrintPlugin} from 'vue-plugin-hiprint'
|
import {hiPrintPlugin} from 'vue-plugin-hiprint'
|
||||||
|
import application from './application';
|
||||||
|
import './application/mk/style/main.css';
|
||||||
|
|
||||||
|
Vue.prototype.$BASE_URL = process.env.VUE_APP_API_BASE_URL // 注入环境变量VUE_APP_API_BASE_URL
|
||||||
|
|
||||||
|
|
||||||
Vue.use(hiPrintPlugin)
|
Vue.use(hiPrintPlugin)
|
||||||
hiPrintPlugin.disAutoConnect();
|
hiPrintPlugin.disAutoConnect();
|
||||||
|
|
||||||
const router = initRouter(store.state.setting.asyncRoutes) // 初始化路由 加载动态路由
|
const router = initRouter(store.state.setting.asyncRoutes) // 初始化路由 加载动态路由
|
||||||
const i18n = initI18n('CN', 'US') // 初始化国际化 加载中英文 语言包
|
const i18n = initI18n('CN', 'US') // 初始化国际化 加载中英文 语言包
|
||||||
|
|
@ -31,9 +36,6 @@ Vue.use(VueCropper)
|
||||||
|
|
||||||
bootstrap({router, store, i18n, message: Vue.prototype.$message}) // 启动引导方法
|
bootstrap({router, store, i18n, message: Vue.prototype.$message}) // 启动引导方法
|
||||||
|
|
||||||
|
|
||||||
import application from './application';
|
|
||||||
import './application/mk/style/main.css';
|
|
||||||
Vue.use(application);
|
Vue.use(application);
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
|
|
|
||||||
|
|
@ -196,9 +196,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -227,9 +227,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -218,9 +218,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -202,9 +202,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -221,9 +221,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -197,9 +197,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -217,9 +217,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -216,9 +216,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -206,9 +206,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -209,9 +209,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -208,9 +208,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -216,9 +216,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -134,15 +134,15 @@ export default {
|
||||||
custom_id: [
|
custom_id: [
|
||||||
{message: '请输入客户id'}
|
{message: '请输入客户id'}
|
||||||
],
|
],
|
||||||
custom_name: [
|
// custom_name: [
|
||||||
{message: '请输入客户名称'}
|
// {message: '请输入客户名称'}
|
||||||
],
|
// ],
|
||||||
supplier_id: [
|
supplier_id: [
|
||||||
{message: '请输入供应商id'}
|
{message: '请输入供应商id'}
|
||||||
],
|
],
|
||||||
supplier_name: [
|
// supplier_name: [
|
||||||
{message: '请输入客户名称'}
|
// {message: '请输入客户名称'}
|
||||||
],
|
// ],
|
||||||
soil_quality_material_id: [
|
soil_quality_material_id: [
|
||||||
{message: '请输入物料品名id'}
|
{message: '请输入物料品名id'}
|
||||||
],
|
],
|
||||||
|
|
@ -152,6 +152,19 @@ export default {
|
||||||
warehousing_soil_quality_material_id: [
|
warehousing_soil_quality_material_id: [
|
||||||
{message: '请输入入库物料土质id'}
|
{message: '请输入入库物料土质id'}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
supplier_outbound_tonnage: [
|
||||||
|
{message: '请输入供应商出库吨位'}
|
||||||
|
],
|
||||||
|
customer_warehousing_tonnage: [
|
||||||
|
{message: '请输入客户入库吨位'}
|
||||||
|
],
|
||||||
|
driver_salary: [
|
||||||
|
{message: '请输入司机工资'}
|
||||||
|
],
|
||||||
|
driver_subsidy: [
|
||||||
|
{message: '请输入司机补贴'}
|
||||||
|
],
|
||||||
outbound_remark: [
|
outbound_remark: [
|
||||||
{message: '请输入出车备注'}
|
{message: '请输入出车备注'}
|
||||||
],
|
],
|
||||||
|
|
@ -227,18 +240,6 @@ export default {
|
||||||
total_price: [
|
total_price: [
|
||||||
{message: '请输入总价'}
|
{message: '请输入总价'}
|
||||||
],
|
],
|
||||||
supplier_outbound_tonnage: [
|
|
||||||
{message: '请输入供应商出库吨位'}
|
|
||||||
],
|
|
||||||
customer_warehousing_tonnage: [
|
|
||||||
{message: '请输入客户入库吨位'}
|
|
||||||
],
|
|
||||||
driver_salary: [
|
|
||||||
{message: '请输入司机工资'}
|
|
||||||
],
|
|
||||||
driver_subsidy: [
|
|
||||||
{message: '请输入司机补贴'}
|
|
||||||
],
|
|
||||||
|
|
||||||
// =============================== 表单校验 自动生成 End ===============================
|
// =============================== 表单校验 自动生成 End ===============================
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -228,9 +228,9 @@ export default {
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {
|
||||||
// 页面描述
|
// 页面描述
|
||||||
desc() {
|
// desc() {
|
||||||
return this.$t('pageDesc')
|
// return this.$t('pageDesc')
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
<template>
|
||||||
|
<div class="detail">
|
||||||
|
|
||||||
|
<!-- <div class="header">-->
|
||||||
|
<!-- <h1>详情</h1>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<a-descriptions
|
||||||
|
size="small"
|
||||||
|
:title="pageOptions.title"
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<a-descriptions-item label="编码">
|
||||||
|
{{ data.code }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="名称">
|
||||||
|
{{ data.name }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="车牌号">
|
||||||
|
{{ data.plate_number }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="车辆类型">
|
||||||
|
{{ data.type }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="负责人姓名">
|
||||||
|
{{ data.manager_name }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="负责人电话">
|
||||||
|
{{ data.manager_phone }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出车次数">
|
||||||
|
{{ data.out_count }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出车总公里数">
|
||||||
|
{{ data.out_distance }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="维修次数">
|
||||||
|
{{ data.repair_count }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="更换轮胎次数">
|
||||||
|
{{ data.change_tyre_count }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="加油次数">
|
||||||
|
{{ data.add_oil_count }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="加油总升数">
|
||||||
|
{{ data.add_oil_litre }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="车辆备注">
|
||||||
|
{{ data.remark }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
dataId: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
pageOptions: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
ApiUrl: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
ApiData: {
|
||||||
|
type: Object
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initDetailData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initDetailData() {
|
||||||
|
console.log("this.pageOptions.FieldName:", this.pageOptions.FieldName)
|
||||||
|
// this.dataId 转换为bigint
|
||||||
|
let dataId = this.$mk.toBigInt(this.dataId);
|
||||||
|
this.$zk.post({
|
||||||
|
url: this.pageOptions.ApiUrl,
|
||||||
|
data: {
|
||||||
|
id: dataId
|
||||||
|
},
|
||||||
|
loading: "加载中...",
|
||||||
|
useBigInt: true,
|
||||||
|
config: {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(a => {
|
||||||
|
this.data = a.data[this.pageOptions.FieldName];
|
||||||
|
}).catch((a) => {
|
||||||
|
this.$mk.error(a.msg, "aaa");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped lang="less">
|
||||||
|
.detail {
|
||||||
|
margin: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<basic-page-edit :desc="desc" :dataId="getDataId()" :options="pageOptions"></basic-page-edit>
|
<basic-page-edit :dataId="getDataId()" :options="pageOptions" @afterSave="afterSave"></basic-page-edit>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BASE_URL from '@/services/Middle/transport/Truck/api.js';
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
i18n: require('./i18n'),
|
// i18n: require('./i18n'),
|
||||||
components: {},
|
components: {},
|
||||||
props: {
|
props: {
|
||||||
pageMode: {
|
pageMode: {
|
||||||
|
|
@ -60,16 +59,16 @@ export default {
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// =============================== 接口地址 自动生成 Start ===============================
|
// =============================== 接口地址 自动生成 Start ===============================
|
||||||
TruckList: `${BASE_URL.BASE_URL}/Truck/v1/truck/list`, // 货车列表
|
TruckList: `${this.$BASE_URL}/Truck/v1/truck/list`, // 货车列表
|
||||||
TruckSearch: `${BASE_URL.BASE_URL}/Truck/v1/truck/search`, // 货车搜索
|
TruckSearch: `${this.$BASE_URL}/Truck/v1/truck/search`, // 货车搜索
|
||||||
TruckDetail: `${BASE_URL.BASE_URL}/Truck/v1/truck/detail`, // 货车详情
|
TruckDetail: `${this.$BASE_URL}/Truck/v1/truck/detail`, // 货车详情
|
||||||
TruckCreate: `${BASE_URL.BASE_URL}/Truck/v1/truck/create`, // 创建货车
|
TruckCreate: `${this.$BASE_URL}/Truck/v1/truck/create`, // 创建货车
|
||||||
TruckUpdate: `${BASE_URL.BASE_URL}/Truck/v1/truck/update`, // 更新货车
|
TruckUpdate: `${this.$BASE_URL}/Truck/v1/truck/update`, // 更新货车
|
||||||
TruckDelete: `${BASE_URL.BASE_URL}/Truck/v1/truck/detele`, // 删除货车
|
TruckDelete: `${this.$BASE_URL}/Truck/v1/truck/detele`, // 删除货车
|
||||||
TruckBatchDelete: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchDelete`, // 批量删除货车
|
TruckBatchDelete: `${this.$BASE_URL}/Truck/v1/truck/batchDelete`, // 批量删除货车
|
||||||
TruckBatchUpdate: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchUpdate`, // 批量更新货车
|
TruckBatchUpdate: `${this.$BASE_URL}/Truck/v1/truck/batchUpdate`, // 批量更新货车
|
||||||
TruckBatchCreate: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchCreate`, // 批量创建货车
|
TruckBatchCreate: `${this.$BASE_URL}/Truck/v1/truck/batchCreate`, // 批量创建货车
|
||||||
TruckBatchHandle: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchHandle`, // 批量处理货车
|
TruckBatchHandle: `${this.$BASE_URL}/Truck/v1/truck/batchHandle`, // 批量处理货车
|
||||||
|
|
||||||
// =============================== 接口地址 自动生成 End ===============================
|
// =============================== 接口地址 自动生成 End ===============================
|
||||||
},
|
},
|
||||||
|
|
@ -229,9 +228,11 @@ export default {
|
||||||
this.$forceUpdate()
|
this.$forceUpdate()
|
||||||
} else {
|
} else {
|
||||||
// 如果没有id参数,说明是新增模式
|
// 如果没有id参数,说明是新增模式
|
||||||
|
if (this.pageOptions.addModeItems.length > 0) {
|
||||||
this.addModeItems.forEach(item => {
|
this.addModeItems.forEach(item => {
|
||||||
this.pageOptions.formOptions.items.push(item);
|
this.pageOptions.formOptions.items.push(item);
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -246,6 +247,9 @@ export default {
|
||||||
dataId = 0;
|
dataId = 0;
|
||||||
}
|
}
|
||||||
return dataId;
|
return dataId;
|
||||||
|
},
|
||||||
|
afterSave(data) {
|
||||||
|
console.log("afterSave:", data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 监听属性
|
// 监听属性
|
||||||
|
|
|
||||||
|
|
@ -1,177 +1,78 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="page-body">
|
<div class="page-body">
|
||||||
|
<ZkTableList
|
||||||
<a-row type="flex">
|
:ListUrl="this.$data.actions.TruckSearch"
|
||||||
<a-col :flex="$mk.config.ui.searchFlex">
|
:ListUrlData="this.$data.zkSelectData"
|
||||||
<!-- 搜索区 -->
|
:ListFieldName="this.$data.zkSelectDataFieldName"
|
||||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
:DetailUrl="this.$data.actions.TruckDetail"
|
||||||
<template #date="{}">
|
:AddUrl="this.$data.actions.TruckCreate"
|
||||||
<a-form-item label="创建时间" :style="{ display: 'inline-block', width: 120 }">
|
:UpdateUrl="this.$data.actions.TruckUpdate"
|
||||||
</a-form-item>
|
:DeleteUrl="this.$data.actions.TruckBatchDelete"
|
||||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
:FormConfig="this.$data.zkSelectFormConfig"
|
||||||
<a-range-picker @change="onDateChange"/>
|
:Columns="this.$data.columns"
|
||||||
</a-form-item>
|
CreateRouter="/Truck/TruckCreate"
|
||||||
</template>
|
UpdateRouter="/Truck/TruckUpdate"
|
||||||
</vxe-form>
|
DetailVueComponent='@/pages/Middle/transport/Truck/Truck/Detail.vue'
|
||||||
</a-col>
|
>
|
||||||
<a-col :flex="$mk.config.ui.toolbarFlex">
|
</ZkTableList>
|
||||||
<!-- 工具条 -->
|
|
||||||
<mk-toolbar :isShowAdd="true" @toolbarClick="toolbarClick"></mk-toolbar>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
|
|
||||||
|
|
||||||
<vxe-toolbar ref="xToolbar" custom>
|
|
||||||
<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">
|
|
||||||
|
|
||||||
<!-- =============================== 表格列 自动生成 Start =============================== -->
|
|
||||||
|
|
||||||
<!-- =============================== 表格列 自动生成 End =============================== -->
|
|
||||||
|
|
||||||
<template #op="{ row }">
|
|
||||||
<div class="oplinks">
|
|
||||||
<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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import BASE_URL from '@/services/Middle/transport/Truck/api.js';
|
import ZkTableList from "@/components/zk/zkTableList";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TruckList',
|
name: 'TruckList',
|
||||||
i18n: require('./i18n'), // 国际化
|
i18n: require('./i18n'), // 国际化
|
||||||
props: {
|
components: {
|
||||||
pageMode: {
|
ZkTableList
|
||||||
type: String,
|
|
||||||
default: "edit"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
return {
|
||||||
const listFieldName = 'Truck';
|
zkSelectData: {
|
||||||
// 页面数据
|
page: 1,
|
||||||
var pageData = { // 页面数据变量
|
limit: 50,
|
||||||
|
order_bys: [
|
||||||
keyName: 'id', // 主键字段名
|
|
||||||
|
|
||||||
|
|
||||||
// 接口动作
|
|
||||||
actions: { // Api 接口地址
|
|
||||||
// =============================== 接口地址 自动生成 Start ===============================
|
|
||||||
TruckList: `${BASE_URL.BASE_URL}/Truck/v1/truck/list`, // 货车列表
|
|
||||||
TruckSearch: `${BASE_URL.BASE_URL}/Truck/v1/truck/search`, // 货车搜索
|
|
||||||
TruckDetail: `${BASE_URL.BASE_URL}/Truck/v1/truck/detail`, // 货车详情
|
|
||||||
TruckCreate: `${BASE_URL.BASE_URL}/Truck/v1/truck/create`, // 创建货车
|
|
||||||
TruckUpdate: `${BASE_URL.BASE_URL}/Truck/v1/truck/update`, // 更新货车
|
|
||||||
TruckDelete: `${BASE_URL.BASE_URL}/Truck/v1/truck/detele`, // 删除货车
|
|
||||||
TruckBatchDelete: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchDelete`, // 批量删除货车
|
|
||||||
TruckBatchUpdate: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchUpdate`, // 批量更新货车
|
|
||||||
TruckBatchCreate: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchCreate`, // 批量创建货车
|
|
||||||
TruckBatchHandle: `${BASE_URL.BASE_URL}/Truck/v1/truck/batchHandle`, // 批量处理货车
|
|
||||||
|
|
||||||
// =============================== 接口地址 自动生成 End ===============================
|
|
||||||
},
|
|
||||||
|
|
||||||
start_time: 0, // 开始时间
|
|
||||||
end_time: 0, // 结束时间
|
|
||||||
|
|
||||||
|
|
||||||
//搜索区
|
|
||||||
searchFormData: {
|
|
||||||
title: '',
|
|
||||||
desc: '',
|
|
||||||
},
|
|
||||||
// 搜索区配置
|
|
||||||
searchRules: [
|
|
||||||
{key: "title", mode: "like"},
|
|
||||||
{key: "plate_number", mode: "like"}
|
|
||||||
],
|
|
||||||
//搜索区
|
|
||||||
searchFormItems: [ // 子项
|
|
||||||
{field: 'title', title: '标题', span: 5, itemRender: {name: '$input', props: {placeholder: '请输入标题'}}},
|
|
||||||
{
|
{
|
||||||
field: 'plate_number',
|
column: "create_time",
|
||||||
title: '车牌号',
|
order: "desc"
|
||||||
span: 5,
|
|
||||||
itemRender: {name: '$input', props: {placeholder: '请输入车牌号'}}
|
|
||||||
},
|
},
|
||||||
{span: 8, slots: {default: 'date'}}, // 自定义列
|
|
||||||
{
|
|
||||||
align: 'right', 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
|
zkSelectDataFieldName: 'Truck',
|
||||||
ajax: {
|
zkSelectFormConfig: {
|
||||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
data: {
|
||||||
query: (options) => { // options 为当前表格的配置项
|
name: '',
|
||||||
const {page, sorts} = options; // 获取当前页码、每页条数、排序信息
|
code: '',
|
||||||
var params = {}; // 定义请求参数
|
plate_number: '',
|
||||||
params.page = page.currentPage; // 当前页码
|
create_time: 0
|
||||||
params.limit = page.pageSize; // 每页条数
|
},
|
||||||
params.order_bys = []; // 排序信息
|
items: [
|
||||||
params.search_rules = this.getSearchParms(); // 搜索信息
|
{
|
||||||
if (sorts) { // 如果有排序信息
|
field: 'name',
|
||||||
sorts.forEach((v) => { // 遍历排序信息
|
title: '名称',
|
||||||
params.order_bys.push({ // 添加排序信息
|
slots: {default: 'name_item'} // 自定义插槽
|
||||||
column: v.property, // 字段名
|
},
|
||||||
order: v.order // 排序方式
|
{
|
||||||
})
|
field: 'code',
|
||||||
});
|
title: '编码',
|
||||||
}
|
slots: {default: 'code_item'} // 自定义插槽
|
||||||
return this.loadData({params}); // 返回请求结果
|
},
|
||||||
}
|
{
|
||||||
}
|
field: 'create_time',
|
||||||
|
title: '时间',
|
||||||
|
slots: {default: 'create_time_item'} // 自定义插槽
|
||||||
|
},
|
||||||
|
{slots: {default: 'operate_item'}}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// 表格列配置
|
// 表格列配置
|
||||||
columns: [
|
columns: [
|
||||||
{type: 'checkbox', width: 50}, // 多选框
|
{type: 'seq', width: 60},
|
||||||
{type: 'seq', width: 30}, // 序号
|
{type: 'checkbox', width: 42},
|
||||||
|
|
||||||
|
|
||||||
// =============================== 表格列 自动生成 Start ===============================
|
// =============================== 表格列 自动生成 Start ===============================
|
||||||
|
|
||||||
|
|
||||||
{field: 'code', sortable: true, title: '编码', width: 120}, // 编码
|
|
||||||
{field: 'name', sortable: true, title: '名称', width: 120}, // 名称
|
{field: 'name', sortable: true, title: '名称', width: 120}, // 名称
|
||||||
|
{field: 'code', sortable: true, title: '编码', width: 120}, // 编码
|
||||||
{field: 'plate_number', sortable: true, title: '车牌号', width: 120}, // 车牌号
|
{field: 'plate_number', sortable: true, title: '车牌号', width: 120}, // 车牌号
|
||||||
{field: 'type', sortable: true, title: '车辆类型', width: 120}, // 车辆类型
|
{field: 'type', sortable: true, title: '车辆类型', width: 120}, // 车辆类型
|
||||||
{field: 'manager_name', sortable: true, title: '负责人姓名', width: 120}, // 负责人姓名
|
{field: 'manager_name', sortable: true, title: '负责人姓名', width: 120}, // 负责人姓名
|
||||||
|
|
@ -183,159 +84,39 @@ export default {
|
||||||
{field: 'add_oil_count', sortable: true, title: '加油次数', width: 100}, // 加油次数
|
{field: 'add_oil_count', sortable: true, title: '加油次数', width: 100}, // 加油次数
|
||||||
{field: 'add_oil_litre', sortable: true, title: '加油总升数', width: 120}, // 加油总升数
|
{field: 'add_oil_litre', sortable: true, title: '加油总升数', width: 120}, // 加油总升数
|
||||||
{field: 'remark', sortable: true, title: '车辆备注', width: 250}, // 车辆备注
|
{field: 'remark', sortable: true, title: '车辆备注', width: 250}, // 车辆备注
|
||||||
|
|
||||||
|
|
||||||
// =============================== 表格列 自动生成 Start ===============================
|
// =============================== 表格列 自动生成 Start ===============================
|
||||||
|
{title: '操作', fixed: 'right', slots: {default: 'op'}, width: 140}
|
||||||
|
],
|
||||||
|
|
||||||
|
// 接口动作
|
||||||
{title: '操作', slots: {default: 'op'}, width: 120}
|
actions: { // Api 接口地址
|
||||||
]
|
// =============================== 接口地址 自动生成 Start ===============================
|
||||||
|
TruckList: `${this.$BASE_URL}/Truck/v1/truck/list`, // 货车列表
|
||||||
|
TruckSearch: `${this.$BASE_URL}/Truck/v1/truck/search`, // 货车搜索
|
||||||
|
TruckDetail: `${this.$BASE_URL}/Truck/v1/truck/detail`, // 货车详情
|
||||||
|
TruckCreate: `${this.$BASE_URL}/Truck/v1/truck/create`, // 创建货车
|
||||||
|
TruckUpdate: `${this.$BASE_URL}/Truck/v1/truck/update`, // 更新货车
|
||||||
|
TruckDelete: `${this.$BASE_URL}/Truck/v1/truck/detele`, // 删除货车
|
||||||
|
TruckBatchDelete: `${this.$BASE_URL}/Truck/v1/truck/batchDelete`, // 批量删除货车
|
||||||
|
TruckBatchUpdate: `${this.$BASE_URL}/Truck/v1/truck/batchUpdate`, // 批量更新货车
|
||||||
|
TruckBatchCreate: `${this.$BASE_URL}/Truck/v1/truck/batchCreate`, // 批量创建货车
|
||||||
|
TruckBatchHandle: `${this.$BASE_URL}/Truck/v1/truck/batchHandle`, // 批量处理货车
|
||||||
|
// =============================== 接口地址 自动生成 End ===============================
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
|
||||||
pageData.actions.getList = pageData.actions.TruckList;
|
|
||||||
pageData.actions.delete = pageData.actions.TruckBatchDelete;
|
|
||||||
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); // 合并表格数据
|
|
||||||
|
|
||||||
return pageData; // 返回页面数据
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 计算属性
|
// 计算属性
|
||||||
computed: {
|
computed: {},
|
||||||
// 页面描述
|
|
||||||
desc() {
|
|
||||||
return this.$t('pageDesc')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 创建完成
|
// 创建完成
|
||||||
created() {
|
created() {
|
||||||
this.$nextTick(() => { // 在下次 DOM 更新循环结束之后执行延迟回调
|
|
||||||
// 将表格和工具栏进行关联
|
|
||||||
this.$refs.xGrid.connect(this.$refs.xToolbar) // 将表格和工具栏进行关联
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
// 挂载完成
|
// 挂载完成
|
||||||
onLoad() {
|
onLoad() {
|
||||||
|
|
||||||
},
|
},
|
||||||
// 动作
|
// 动作
|
||||||
methods: {
|
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("/Truck/TruckCreate"); // 打开页面
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 编辑
|
|
||||||
pageEdit(row) {
|
|
||||||
if (!row) { // 如果没有选中行
|
|
||||||
this.$mk.msg("请选择行"); // 提示
|
|
||||||
return; // 返回
|
|
||||||
}
|
|
||||||
this.$openPage("/Truck/TruckUpdate/" + 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') // 提交搜索
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
// 监听属性
|
// 监听属性
|
||||||
watch: {}
|
watch: {}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,15 @@ module.exports = {
|
||||||
messages: {
|
messages: {
|
||||||
CN: {
|
CN: {
|
||||||
pageDesc: '描述内容',
|
pageDesc: '描述内容',
|
||||||
|
editPageDesc: '描述内容',
|
||||||
},
|
},
|
||||||
HK: {
|
HK: {
|
||||||
pageDesc: '描述内容',
|
pageDesc: '描述内容',
|
||||||
|
editPageDesc: '描述内容',
|
||||||
},
|
},
|
||||||
US: {
|
US: {
|
||||||
pageDesc: 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.',
|
pageDesc: 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.',
|
||||||
|
editPageDesc: '描述内容',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue