This commit is contained in:
parent
7f610e1dc7
commit
a44907040e
|
|
@ -49,8 +49,8 @@ export default {
|
|||
// 解构赋值 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 || {};
|
||||
|
||||
const { page, title, callback, pageMode, dataId,width = 800,height = 600 , pageOptions = {} ,showFooter } = options || {};
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.dataId = dataId;
|
||||
|
|
@ -68,7 +68,7 @@ export default {
|
|||
|
||||
// 处理回调
|
||||
handleCallback(e) {
|
||||
|
||||
|
||||
console.log(e);
|
||||
const { callback } = this;
|
||||
// 判断是否有回调函数
|
||||
|
|
|
|||
|
|
@ -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 JSONbig from 'json-bigint'
|
||||
|
||||
export default {
|
||||
|
||||
// 提交post请求 ,获取数据
|
||||
post: function ({ url, data, loading, config, useBigInt }) { // post请求
|
||||
post: function ({url, data, loading, config, useBigInt}) { // post请求
|
||||
|
||||
if (useBigInt) {
|
||||
config = config || {};
|
||||
|
|
@ -52,7 +51,7 @@ export default {
|
|||
|
||||
},
|
||||
|
||||
get: function ({ url, loading, config, useBigInt }) { // post请求
|
||||
get: function ({url, loading, config, useBigInt}) { // post请求
|
||||
|
||||
if (useBigInt) {
|
||||
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) {
|
||||
config = config || {};
|
||||
|
|
@ -108,6 +107,10 @@ export default {
|
|||
if (data.end_time && typeof (data.end_time) == "string") { // 如果结束时间是字符串
|
||||
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 => { // 发送请求
|
||||
if (!response) { // 如果没有返回
|
||||
reject && reject(response); // 返回错误
|
||||
|
|
@ -128,25 +131,25 @@ export default {
|
|||
return;
|
||||
}
|
||||
|
||||
if(
|
||||
if (
|
||||
rowFilters && // 如果有行过滤器
|
||||
rowFilters.length && // 如果行过滤器有数据
|
||||
listFieldName && // 如果列表字段名有数据
|
||||
result.data && // 如果返回的数据有数据
|
||||
result.data[listFieldName] && // 如果返回的数据中有列表字段名
|
||||
result.data[listFieldName].length // 如果返回的数据中的列表字段名有数据
|
||||
){
|
||||
console.log( JSON.stringify(result.data[listFieldName]))
|
||||
result.data[listFieldName] = result.data[listFieldName].filter((row)=>{
|
||||
for(let i =0;i<rowFilters.length;i++){
|
||||
) {
|
||||
console.log(JSON.stringify(result.data[listFieldName]))
|
||||
result.data[listFieldName] = result.data[listFieldName].filter((row) => {
|
||||
for (let i = 0; i < rowFilters.length; i++) {
|
||||
let f = rowFilters[i];
|
||||
if(!f(row)){
|
||||
if (!f(row)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
console.log( JSON.stringify(result.data[listFieldName]))
|
||||
console.log(JSON.stringify(result.data[listFieldName]))
|
||||
}
|
||||
// console.log(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 zkToolbar from "./components/zkToolbar.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>
|
||||
26
src/main.js
26
src/main.js
|
|
@ -1,23 +1,28 @@
|
|||
import Vue from 'vue' // 引入vue
|
||||
import App from './App.vue' // 引入App.vue
|
||||
import {initRouter} from './router' // 引入初始化路由方法
|
||||
import {initRouter} from './router' // 引入初始化路由方法
|
||||
import './theme/index.less' // 引入主题样式 less
|
||||
import Antd from 'ant-design-vue' // 引入ant-design-vue 组件库
|
||||
import Viser from 'viser-vue' // 引入viser-vue 用于图表
|
||||
// import '@/mock' // 引入mock模拟数据
|
||||
import store from './store' // 引入vuex store 实例
|
||||
import store from './store' // 引入vuex store 实例
|
||||
import 'animate.css/source/animate.css' // 引入animate.css 动画库
|
||||
import Plugins from '@/plugins' // 引入插件
|
||||
import {initI18n} from '@/utils/i18n' // 引入国际化方法
|
||||
import bootstrap from '@/bootstrap' // 引入启动引导方法
|
||||
import 'moment/locale/zh-cn' // 引入moment 本地化
|
||||
import 'moment/locale/zh-cn' // 引入moment 本地化
|
||||
import VXETable from 'vxe-table'
|
||||
import 'vxe-table/lib/style.css'
|
||||
import VueCropper from 'vue-cropper'
|
||||
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)
|
||||
hiPrintPlugin.disAutoConnect();
|
||||
hiPrintPlugin.disAutoConnect();
|
||||
|
||||
const router = initRouter(store.state.setting.asyncRoutes) // 初始化路由 加载动态路由
|
||||
const i18n = initI18n('CN', 'US') // 初始化国际化 加载中英文 语言包
|
||||
|
|
@ -31,14 +36,11 @@ Vue.use(VueCropper)
|
|||
|
||||
bootstrap({router, store, i18n, message: Vue.prototype.$message}) // 启动引导方法
|
||||
|
||||
|
||||
import application from './application';
|
||||
import './application/mk/style/main.css';
|
||||
Vue.use(application);
|
||||
|
||||
new Vue({
|
||||
router, // 注入路由
|
||||
store, // 注入vuex store
|
||||
i18n, // 注入国际化
|
||||
render: h => h(App), // 渲染App.vue
|
||||
router, // 注入路由
|
||||
store, // 注入vuex store
|
||||
i18n, // 注入国际化
|
||||
render: h => h(App), // 渲染App.vue
|
||||
}).$mount('#app') // 挂载到#app
|
||||
|
|
|
|||
|
|
@ -196,9 +196,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -227,9 +227,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -218,9 +218,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -202,9 +202,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -221,9 +221,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -197,9 +197,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -217,9 +217,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -216,9 +216,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -206,9 +206,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -209,9 +209,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -208,9 +208,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -216,9 +216,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// return this.$t('pageDesc')
|
||||
// }
|
||||
},
|
||||
|
||||
// 创建完成
|
||||
|
|
|
|||
|
|
@ -134,15 +134,15 @@ export default {
|
|||
custom_id: [
|
||||
{message: '请输入客户id'}
|
||||
],
|
||||
custom_name: [
|
||||
{message: '请输入客户名称'}
|
||||
],
|
||||
// custom_name: [
|
||||
// {message: '请输入客户名称'}
|
||||
// ],
|
||||
supplier_id: [
|
||||
{message: '请输入供应商id'}
|
||||
],
|
||||
supplier_name: [
|
||||
{message: '请输入客户名称'}
|
||||
],
|
||||
// supplier_name: [
|
||||
// {message: '请输入客户名称'}
|
||||
// ],
|
||||
soil_quality_material_id: [
|
||||
{message: '请输入物料品名id'}
|
||||
],
|
||||
|
|
@ -152,6 +152,19 @@ export default {
|
|||
warehousing_soil_quality_material_id: [
|
||||
{message: '请输入入库物料土质id'}
|
||||
],
|
||||
|
||||
supplier_outbound_tonnage: [
|
||||
{message: '请输入供应商出库吨位'}
|
||||
],
|
||||
customer_warehousing_tonnage: [
|
||||
{message: '请输入客户入库吨位'}
|
||||
],
|
||||
driver_salary: [
|
||||
{message: '请输入司机工资'}
|
||||
],
|
||||
driver_subsidy: [
|
||||
{message: '请输入司机补贴'}
|
||||
],
|
||||
outbound_remark: [
|
||||
{message: '请输入出车备注'}
|
||||
],
|
||||
|
|
@ -227,18 +240,6 @@ export default {
|
|||
total_price: [
|
||||
{message: '请输入总价'}
|
||||
],
|
||||
supplier_outbound_tonnage: [
|
||||
{message: '请输入供应商出库吨位'}
|
||||
],
|
||||
customer_warehousing_tonnage: [
|
||||
{message: '请输入客户入库吨位'}
|
||||
],
|
||||
driver_salary: [
|
||||
{message: '请输入司机工资'}
|
||||
],
|
||||
driver_subsidy: [
|
||||
{message: '请输入司机补贴'}
|
||||
],
|
||||
|
||||
// =============================== 表单校验 自动生成 End ===============================
|
||||
},
|
||||
|
|
|
|||
|
|
@ -228,9 +228,9 @@ export default {
|
|||
// 计算属性
|
||||
computed: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
// desc() {
|
||||
// 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>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/Middle/transport/Truck/api.js';
|
||||
|
||||
|
||||
export default {
|
||||
|
||||
i18n: require('./i18n'),
|
||||
// i18n: require('./i18n'),
|
||||
components: {},
|
||||
props: {
|
||||
pageMode: {
|
||||
|
|
@ -60,16 +59,16 @@ export default {
|
|||
|
||||
actions: {
|
||||
// =============================== 接口地址 自动生成 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`, // 批量处理货车
|
||||
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 ===============================
|
||||
},
|
||||
|
|
@ -229,9 +228,11 @@ export default {
|
|||
this.$forceUpdate()
|
||||
} else {
|
||||
// 如果没有id参数,说明是新增模式
|
||||
this.addModeItems.forEach(item => {
|
||||
this.pageOptions.formOptions.items.push(item);
|
||||
})
|
||||
if (this.pageOptions.addModeItems.length > 0) {
|
||||
this.addModeItems.forEach(item => {
|
||||
this.pageOptions.formOptions.items.push(item);
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
|
@ -246,6 +247,9 @@ export default {
|
|||
dataId = 0;
|
||||
}
|
||||
return dataId;
|
||||
},
|
||||
afterSave(data) {
|
||||
console.log("afterSave:", data);
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
|
|
|
|||
|
|
@ -1,341 +1,122 @@
|
|||
<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">
|
||||
<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 :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>
|
||||
|
||||
|
||||
<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"
|
||||
CreateRouter="/Truck/TruckCreate"
|
||||
UpdateRouter="/Truck/TruckUpdate"
|
||||
DetailVueComponent='@/pages/Middle/transport/Truck/Truck/Detail.vue'
|
||||
>
|
||||
</ZkTableList>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/Middle/transport/Truck/api.js';
|
||||
import ZkTableList from "@/components/zk/zkTableList";
|
||||
|
||||
export default {
|
||||
name: 'TruckList',
|
||||
i18n: require('./i18n'), // 国际化
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
}
|
||||
components: {
|
||||
ZkTableList
|
||||
},
|
||||
data() {
|
||||
|
||||
const listFieldName = 'Truck';
|
||||
// 页面数据
|
||||
var pageData = { // 页面数据变量
|
||||
|
||||
keyName: 'id', // 主键字段名
|
||||
|
||||
return {
|
||||
zkSelectData: {
|
||||
page: 1,
|
||||
limit: 50,
|
||||
order_bys: [
|
||||
{
|
||||
column: "create_time",
|
||||
order: "desc"
|
||||
},
|
||||
],
|
||||
},
|
||||
zkSelectDataFieldName: 'Truck',
|
||||
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: 'create_time',
|
||||
title: '时间',
|
||||
slots: {default: 'create_time_item'} // 自定义插槽
|
||||
},
|
||||
{slots: {default: 'operate_item'}}
|
||||
]
|
||||
},
|
||||
// 表格列配置
|
||||
columns: [
|
||||
{type: 'seq', width: 60},
|
||||
{type: 'checkbox', width: 42},
|
||||
// =============================== 表格列 自动生成 Start ===============================
|
||||
{field: 'name', sortable: true, title: '名称', width: 120}, // 名称
|
||||
{field: 'code', 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}
|
||||
],
|
||||
|
||||
// 接口动作
|
||||
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`, // 批量处理货车
|
||||
|
||||
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 ===============================
|
||||
},
|
||||
|
||||
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',
|
||||
title: '车牌号',
|
||||
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
|
||||
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: 30}, // 序号
|
||||
|
||||
|
||||
// =============================== 表格列 自动生成 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: '操作', slots: {default: 'op'}, width: 120}
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
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: {
|
||||
// 页面描述
|
||||
desc() {
|
||||
return this.$t('pageDesc')
|
||||
}
|
||||
},
|
||||
|
||||
// 计算属性
|
||||
computed: {},
|
||||
|
||||
// 创建完成
|
||||
created() {
|
||||
this.$nextTick(() => { // 在下次 DOM 更新循环结束之后执行延迟回调
|
||||
// 将表格和工具栏进行关联
|
||||
this.$refs.xGrid.connect(this.$refs.xToolbar) // 将表格和工具栏进行关联
|
||||
});
|
||||
},
|
||||
// 挂载完成
|
||||
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("/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') // 提交搜索
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
methods: {},
|
||||
// 监听属性
|
||||
watch: {}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
module.exports = {
|
||||
messages: {
|
||||
CN: {
|
||||
pageDesc: '描述内容',
|
||||
},
|
||||
HK: {
|
||||
pageDesc: '描述内容',
|
||||
},
|
||||
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.',
|
||||
|
||||
messages: {
|
||||
CN: {
|
||||
pageDesc: '描述内容',
|
||||
editPageDesc: '描述内容',
|
||||
},
|
||||
HK: {
|
||||
pageDesc: '描述内容',
|
||||
editPageDesc: '描述内容',
|
||||
},
|
||||
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.',
|
||||
editPageDesc: '描述内容',
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue