更新
This commit is contained in:
parent
f2a77b3ab8
commit
f2692ef3aa
|
@ -312,4 +312,4 @@
|
|||
background-color: #fff8e1;
|
||||
border-color: rgb(255, 245, 208);
|
||||
color: #f5a524;
|
||||
}
|
||||
}
|
46
src/components/BaseLink/index.vue
Normal file
46
src/components/BaseLink/index.vue
Normal file
|
@ -0,0 +1,46 @@
|
|||
<template>
|
||||
<el-link
|
||||
:style="style"
|
||||
:disabled="id == null || !checkPermi(permissions)"
|
||||
:underline="false"
|
||||
type="primary"
|
||||
v-on="$listeners"
|
||||
>
|
||||
{{ text | dv }}
|
||||
</el-link>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'BaseLink',
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
text: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: "small"
|
||||
},
|
||||
permissions: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
style() {
|
||||
return {
|
||||
fontSize: this.size === "mini" ? "12px" : null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
32
src/components/Business/Device/DeviceLink.vue
Normal file
32
src/components/Business/Device/DeviceLink.vue
Normal file
|
@ -0,0 +1,32 @@
|
|||
<template>
|
||||
<base-link :id="id" :text="text" :size="size" @click="handleClick" :permissions="['bst:device:query']"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseLink from '@/components/BaseLink/index.vue';
|
||||
export default {
|
||||
name: 'DeviceLink',
|
||||
components: {BaseLink},
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
text: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: "small"
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleClick() {
|
||||
if (this.id != null && this.checkPermi(['bst:device:query'])) {
|
||||
this.$router.push(`/view/device/${this.id}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
32
src/components/Business/Order/OrderLink.vue
Normal file
32
src/components/Business/Order/OrderLink.vue
Normal file
|
@ -0,0 +1,32 @@
|
|||
<template>
|
||||
<base-link :id="id" :text="text" :size="size" @click="handleClick" :permissions="['bst:order:query']"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseLink from '@/components/BaseLink/index.vue';
|
||||
export default {
|
||||
name: 'OrderLink',
|
||||
components: {BaseLink},
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
text: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: "small"
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick() {
|
||||
if (this.id != null && this.checkPermi(['bst:order:query'])) {
|
||||
this.$router.push(`/view/order/${this.id}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
32
src/components/Business/User/UserLink.vue
Normal file
32
src/components/Business/User/UserLink.vue
Normal file
|
@ -0,0 +1,32 @@
|
|||
<template>
|
||||
<base-link :id="id" :text="text" :size="size" @click="handleClick" :permissions="['system:user:query']"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseLink from '@/components/BaseLink/index.vue';
|
||||
export default {
|
||||
name: 'UserLink',
|
||||
components: {BaseLink},
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
text: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: "small"
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick() {
|
||||
if (this.id != null && this.checkPermi(['system:user:query'])) {
|
||||
this.$router.push(`/view/user/${this.id}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -137,6 +137,9 @@
|
|||
{{d.row[column.key]}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -176,7 +179,8 @@
|
|||
import { listAccount, delAccount } from "@/api/bst/account";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import { AccountType } from '@/utils/enums';
|
||||
import AccountEditDialog from './components/AccountEditDialog.vue';
|
||||
import AccountEditDialog from '@/views/bst/account/components/AccountEditDialog.vue';
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -188,7 +192,13 @@ export default {
|
|||
name: "Account",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['account_type'],
|
||||
components: { AccountEditDialog },
|
||||
components: { AccountEditDialog, UserLink },
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
AccountType,
|
||||
|
@ -248,6 +258,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
Object.assign(this.queryParams, this.query);
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -78,8 +78,12 @@
|
|||
<template v-if="column.key === 'id'">
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'agreementType'">
|
||||
<dict-tag :options="dict.type.agreement_type" :value="d.row[column.key]"/>
|
||||
<template v-else-if="column.key === 'title'">
|
||||
{{d.row.title | dv}}
|
||||
<dict-tag :options="dict.type.agreement_type" :value="d.row.agreementType" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.storeId" :text="d.row.userName"/>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
|
@ -182,6 +186,7 @@ import { $showColumns } from '@/utils/mixins';
|
|||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import Editor from "@/components/Editor/index.vue";
|
||||
import AreaRemoteSelect from "@/components/Business/Area/AreaRemoteSelect.vue";
|
||||
import UserLink from "@/components/Business/User/UserLink.vue";
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -193,59 +198,18 @@ export default {
|
|||
name: "Agreement",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['agreement_type'],
|
||||
components: {FormCol,Editor,AreaRemoteSelect},
|
||||
components: {FormCol,Editor,AreaRemoteSelect,UserLink},
|
||||
data() {
|
||||
return {
|
||||
span: 24,
|
||||
// 字段列表
|
||||
columns: [
|
||||
{
|
||||
key: 'id',
|
||||
visible: true,
|
||||
label: 'ID',
|
||||
minWidth: null,
|
||||
sortable: true,
|
||||
overflow: false,
|
||||
align: 'center',
|
||||
width: null
|
||||
},
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'title', visible: true, label: '标题', minWidth: "150", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'brief', visible: true, label: '简介', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
|
||||
{key: 'userName', visible: true, label: '商户', sortable: true, align: 'center'},
|
||||
{key: 'areaName', visible: true, label: '运营区', sortable: true, align: 'center'},
|
||||
//{key: 'storeId', visible: true, label: '商户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
//{key: 'areaId', visible: true, label: '运营区', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{
|
||||
key: 'title',
|
||||
visible: true,
|
||||
label: '标题',
|
||||
minWidth: null,
|
||||
sortable: true,
|
||||
overflow: false,
|
||||
align: 'center',
|
||||
width: null
|
||||
},
|
||||
{
|
||||
key: 'brief',
|
||||
visible: true,
|
||||
label: '简介',
|
||||
minWidth: null,
|
||||
sortable: true,
|
||||
overflow: false,
|
||||
align: 'center',
|
||||
width: null
|
||||
},
|
||||
|
||||
// {key: 'content', visible: true, label: '内容详情', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{
|
||||
key: 'agreementType',
|
||||
visible: true,
|
||||
label: '协议类型',
|
||||
minWidth: null,
|
||||
sortable: true,
|
||||
overflow: false,
|
||||
align: 'center',
|
||||
width: null
|
||||
},
|
||||
// {key: 'duration', visible: true, label: '展示时间', minWidth: null, sortable: false, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'createTime', visible: true, label: '创建时间', sortable: true, align: 'center'},
|
||||
],
|
||||
// 排序方式
|
||||
orderSorts: ['ascending', 'descending', null],
|
||||
|
|
|
@ -110,8 +110,14 @@
|
|||
<template v-else-if="column.key === 'areaTimeStart'">
|
||||
{{d.row.areaTimeStart | dv}} - {{d.row.areaTimeEnd | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'createName'">
|
||||
<user-link :id="d.row.createId" :text="d.row.createName" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'subArea'">
|
||||
<el-button type="text" size="mini" @click="handleSubArea(d.row)">
|
||||
<el-button type="text" size="small" @click="handleSubArea(d.row)">
|
||||
停车区({{d.row.parkingAreaCount | dv}})
|
||||
禁停区({{d.row.noParkingAreaCount | dv}})
|
||||
禁行区({{d.row.noRideAreaCount | dv}})
|
||||
|
@ -180,7 +186,7 @@
|
|||
import { listArea, delArea } from "@/api/bst/area";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import AreaCustomerServiceDialog from "@/views/bst/area/components/AreaCustomerServiceDialog.vue";
|
||||
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
prop: "createTime",
|
||||
|
@ -192,7 +198,8 @@ export default {
|
|||
mixins: [$showColumns],
|
||||
dicts: ['area_status'],
|
||||
components: {
|
||||
AreaCustomerServiceDialog
|
||||
AreaCustomerServiceDialog,
|
||||
UserLink
|
||||
},
|
||||
props: {
|
||||
query: {
|
||||
|
|
|
@ -97,9 +97,9 @@
|
|||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
{{d.row.userName | dv}}
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
<template v-if="d.row.remark">({{d.row.remark}})</template>
|
||||
<dict-tag :options="dict.type.area_join_type" :value="d.row.type" size="mini"/>
|
||||
<dict-tag :options="dict.type.area_join_type" :value="d.row.type" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'point'">
|
||||
<span>{{d.row[column.key] | fix2 | dv}} %</span>
|
||||
|
@ -107,6 +107,9 @@
|
|||
<template v-else-if="column.key === 'permissions'">
|
||||
<dict-tag :options="dict.type.area_join_permission" :value="d.row[column.key]" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'createName'">
|
||||
<user-link :id="d.row.createId" :text="d.row.createName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -156,6 +159,7 @@
|
|||
import { listAreaJoin, delAreaJoin } from "@/api/bst/areaJoin";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import AreaJoinEditDialog from './components/AreaJoinEditDialog';
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -167,7 +171,7 @@ export default {
|
|||
name: "AreaJoin",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['area_join_type', 'area_join_permission'],
|
||||
components: { AreaJoinEditDialog },
|
||||
components: { AreaJoinEditDialog, UserLink },
|
||||
data() {
|
||||
return {
|
||||
// 字段列表
|
||||
|
|
|
@ -79,6 +79,9 @@
|
|||
<template v-else-if="['beforeBalance', 'afterBalance'].includes(column.key)">
|
||||
{{d.row[column.key] | fix2 | dv}} 元
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -102,6 +105,7 @@
|
|||
import { listBalanceLog, getBalanceLog, delBalanceLog, addBalanceLog, updateBalanceLog } from "@/api/bst/balanceLog";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -113,7 +117,7 @@ export default {
|
|||
name: "BalanceLog",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['balance_log_bst_type'],
|
||||
components: {FormCol},
|
||||
components: {FormCol, UserLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
|
|
@ -86,13 +86,15 @@
|
|||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'reason'">
|
||||
{{d.row.reason | dv}}
|
||||
<dict-tag :options="dict.type.bonus_bst_type" :value="d.row.bstType" size="mini" style="margin-right: 4px;"/>
|
||||
<dict-tag :options="dict.type.bonus_status" :value="d.row.status" size="mini" style="margin-right: 4px;"/>
|
||||
<order-link v-if="BonusBstType.ORDER === d.row.bstType" :id="d.row.bstId" :text="d.row.reason" />
|
||||
<span v-else>{{d.row.reason | dv}}</span>
|
||||
<dict-tag :options="dict.type.bonus_bst_type" :value="d.row.bstType" size="mini" style="margin-left: 4px;"/>
|
||||
<dict-tag :options="dict.type.bonus_status" :value="d.row.status" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'arrivalName'">
|
||||
{{d.row.arrivalName | dv}}
|
||||
<dict-tag :options="dict.type.bonus_arrival_type" :value="d.row.arrivalType" size="mini" style="margin-right: 4px;"/>
|
||||
<user-link v-if="BonusArrivalType.userList().includes(d.row.arrivalType)" :id="d.row.arrivalId" :text="d.row.arrivalName"/>
|
||||
<span v-else>{{d.row.arrivalName | dv}}</span>
|
||||
<dict-tag :options="dict.type.bonus_arrival_type" :value="d.row.arrivalType" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'toBalance'">
|
||||
<boolean-tag :value="d.row.toBalance" size="mini"/>
|
||||
|
@ -142,7 +144,9 @@ import { listBonus, getBonus, delBonus, addBonus, updateBonus, payBonus } from "
|
|||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import BooleanTag from "@/components/BooleanTag/index.vue";
|
||||
import { BonusStatus } from "@/utils/enums";
|
||||
import { BonusStatus, BonusArrivalType, BonusBstType} from "@/utils/enums";
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
import OrderLink from '@/components/Business/Order/OrderLink.vue'
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -154,7 +158,7 @@ export default {
|
|||
name: "Bonus",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['bonus_status', 'bonus_arrival_type', 'bonus_bst_type'],
|
||||
components: {FormCol, BooleanTag},
|
||||
components: {FormCol, BooleanTag, UserLink, OrderLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
@ -163,7 +167,9 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
BonusArrivalType,
|
||||
BonusStatus,
|
||||
BonusBstType,
|
||||
// 金额颜色
|
||||
amountColor: {
|
||||
amount: null,
|
||||
|
|
|
@ -234,8 +234,8 @@
|
|||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'sn'">
|
||||
{{d.row.sn | dv}}
|
||||
| {{d.row.mac | dv}}
|
||||
<device-link :id="d.row.id" :text="d.row.sn" size="mini"/> |
|
||||
<device-link :id="d.row.id" :text="d.row.mac" size="mini"/>
|
||||
<device-sn :sn="d.row.sn"/>
|
||||
<br/>
|
||||
<dict-tag :options="dict.type.device_online_status" :value="d.row.onlineStatus" size="mini"/>
|
||||
|
@ -243,8 +243,9 @@
|
|||
<dict-tag :options="dict.type.device_iot_status" :value="d.row.iotStatus" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'mchName'">
|
||||
{{d.row.mchName | dv}}<br/>
|
||||
{{d.row.areaName | dv}}
|
||||
<i class="el-icon-office-building"/>
|
||||
<user-link :id="d.row.mchId" :text="d.row.mchName" size="mini"/><br/>
|
||||
<i class="el-icon-location"/>{{d.row.areaName | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'lockStatus'">
|
||||
<el-tooltip content="开锁:共享模块有开锁的信号输出;电门开:车子处于开锁可骑行状态" placement="top">
|
||||
|
@ -258,21 +259,31 @@
|
|||
<dict-tag :options="dict.type.device_iot_status" :value="d.row[column.key]" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'remainingPower'">
|
||||
{{d.row.remainingPower | fix2 | dv}} % <br/>
|
||||
{{d.row.voltage | fix2 | dv}} V ({{d.row.remainingPower | fix2 | dv}} %) <br/>
|
||||
{{d.row.remainEndurance | dv}} KM
|
||||
</template>
|
||||
<template v-else-if="column.key === 'vehicleNum'">
|
||||
<i class="el-icon-bicycle"/>
|
||||
{{d.row.vehicleNum | dv}}<br/>
|
||||
<i class="el-icon-tickets"/>
|
||||
{{d.row.modelName | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'voltage'">
|
||||
{{d.row.voltage | fix2 | dv}} V
|
||||
</template>
|
||||
<template v-else-if="column.key === 'music'">
|
||||
<dict-tag :options="dict.type.device_music" :value="d.row[column.key]" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'hardwareVersion'">
|
||||
{{d.row.hardwareVersion | dv}} | {{d.row.softwareVersion | dv}}
|
||||
{{d.row.hardwareVersion | dv}}<br/>
|
||||
{{d.row.softwareVersion | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'signalStrength'">
|
||||
<el-tooltip content="4G信号强度和卫星数量" placement="top">
|
||||
<span>
|
||||
<i class="el-icon-connection"/>
|
||||
{{d.row.signalStrength | dv}}<br/>
|
||||
<i class="el-icon-position"/>
|
||||
{{d.row.satellites | dv}}
|
||||
</span>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
|
@ -280,7 +291,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="400">
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="360">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
|
@ -417,6 +428,8 @@ import { DeviceStatus } from '@/utils/enums';
|
|||
import { $device } from '@/views/bst/device/mixins';
|
||||
import DeviceTransferDialog from '@/views/bst/device/components/DeviceTransferDialog.vue';
|
||||
import DeviceSn from '@/views/bst/device/components/DeviceSn.vue';
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
import DeviceLink from '@/components/Business/Device/DeviceLink.vue';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -428,7 +441,7 @@ export default {
|
|||
name: "Device",
|
||||
mixins: [$showColumns, $device],
|
||||
dicts: ['device_status', 'device_lock_status', 'device_iot_status', 'device_online_status', 'device_quality', 'device_music'],
|
||||
components: {FormCol, DeviceEditDialog, BooleanTag, DeviceTransferDialog, DeviceSn},
|
||||
components: {FormCol, DeviceEditDialog, BooleanTag, DeviceTransferDialog, DeviceSn, UserLink, DeviceLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
@ -442,17 +455,14 @@ export default {
|
|||
// 字段列表
|
||||
columns: [
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'sn', visible: true, label: '设备', minWidth: null, sortable: true, overflow: false, align: 'left', width: "220"},
|
||||
{key: 'sn', visible: true, label: '设备', minWidth: "150", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'vehicleNum', visible: true, label: '车辆', minWidth: null, sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'mchName', visible: true, label: '归属', minWidth: null, sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'hardwareVersion', visible: true, label: '版本', minWidth: null, sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'signalStrength', visible: true, label: '信号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'satellites', visible: true, label: '卫星', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'signalStrength', visible: true, label: '信号', minWidth: null, sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'lockStatus', visible: true, label: '锁状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'voltage', visible: true, label: '电压', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'remainingPower', visible: true, label: '续航', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'music', visible: false, label: '声音', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'remark', visible: true, label: '备注', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
|
||||
{key: 'orderNo', visible: false, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'createTime', visible: false, label: '创建', minWidth: null, sortable: true, overflow: false, align: 'center', width: "90"},
|
||||
],
|
||||
|
@ -614,17 +624,11 @@ export default {
|
|||
},
|
||||
// 管理员刷新
|
||||
handleRefresh(row) {
|
||||
this.$confirm('是否确认刷新设备【' + row.sn + '】?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
refreshDevice({ id: row.id }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success("操作成功,设备已刷新");
|
||||
this.getList(false);
|
||||
}
|
||||
})
|
||||
refreshDevice({ id: row.id }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success("操作成功,设备已刷新");
|
||||
this.getList(false);
|
||||
}
|
||||
})
|
||||
},
|
||||
// 一键入仓
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<i class="el-icon-user"></i>
|
||||
我的
|
||||
</div>
|
||||
<balance-panel v-if="userInfo" :balance="userInfo.balance" :waitBonus="userStat.bonus.waitAmount" :totalWithdraw="userStat.withdraw.successAmount"/>
|
||||
<balance-panel v-if="userInfo" :balance="userInfo.balance" :waitBonus="userStat.bonus.waitDivideAmount" :totalWithdraw="userStat.withdraw.successAmount"/>
|
||||
|
||||
<!-- 待办事项 -->
|
||||
<todo-list :stat="stat"/>
|
||||
|
|
|
@ -88,6 +88,9 @@
|
|||
<template v-else-if="['fullEndurance'].includes(column.key)">
|
||||
{{d.row[column.key]}} KM
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -135,7 +138,7 @@ import { listModel, delModel } from "@/api/bst/model";
|
|||
import { $showColumns } from '@/utils/mixins';
|
||||
import BooleanTag from '@/components/BooleanTag/index.vue';
|
||||
import ModelEditDialog from '@/views/bst/model/components/ModelEditDialog.vue';
|
||||
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
prop: "createTime",
|
||||
|
@ -147,7 +150,14 @@ export default {
|
|||
mixins: [$showColumns],
|
||||
components: {
|
||||
BooleanTag,
|
||||
ModelEditDialog
|
||||
ModelEditDialog,
|
||||
UserLink
|
||||
},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -155,7 +165,6 @@ export default {
|
|||
columns: [
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'name', visible: true, label: '名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
// {key: 'areaName', visible: true, label: '运营区', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'userName', visible: true, label: '所属用户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'fullVoltage', visible: true, label: '满电电压', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'lowVoltage', visible: true, label: '亏电电压', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
|
@ -200,6 +209,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
Object.assign(this.queryParams, this.query);
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -143,6 +143,9 @@
|
|||
<template v-if="column.key === 'id'">
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'no'">
|
||||
<order-link :id="d.row.id" :text="d.row.no" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'suitName'">
|
||||
{{d.row.suitName | dv}}<br/>
|
||||
<dict-tag :options="dict.type.suit_type" :value="d.row.suitType" size="mini"/>
|
||||
|
@ -173,36 +176,44 @@
|
|||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'useInfo'">
|
||||
<div v-if="d.row.duration != null">时长:{{toDescriptionFromSecond(d.row.duration).text | dv}}</div>
|
||||
<div v-if="d.row.distance != null">距离:{{d.row.distance / 1000 | fix2 | dv}} 公里</div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'time'">
|
||||
<div v-if="d.row.createTime != null">创建:{{d.row.createTime | dv}}</div>
|
||||
<div v-if="d.row.startTime != null">开始:{{d.row.startTime | dv}}</div>
|
||||
<div v-if="d.row.endTime != null">结束:{{d.row.endTime | dv}}</div>
|
||||
<div v-if="d.row.maxTime != null">超时:{{d.row.maxTime | dv}}</div>
|
||||
</template>
|
||||
|
||||
<template v-else-if="column.key === 'device'">
|
||||
<div v-if="d.row.deviceSn != null">SN:{{d.row.deviceSn | dv}}</div>
|
||||
<div v-if="d.row.deviceMac != null">MAC:{{d.row.deviceMac | dv}}</div>
|
||||
<div v-if="d.row.deviceVehicleNum != null">车牌:{{d.row.deviceVehicleNum | dv}}</div>
|
||||
<div v-if="d.row.deviceSn != null">SN:<device-link :id="d.row.deviceId" :text="d.row.deviceSn" size="mini"/></div>
|
||||
<div v-if="d.row.deviceMac != null">MAC:<device-link :id="d.row.deviceId" :text="d.row.deviceMac" size="mini"/></div>
|
||||
<div v-if="d.row.deviceVehicleNum != null">车牌:<device-link :id="d.row.deviceId" :text="d.row.deviceVehicleNum" size="mini"/></div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'payNo'">
|
||||
<div v-if="d.row.payNo != null">单号:{{d.row.payNo | dv}}</div>
|
||||
<div v-if="d.row.payTime != null">时间:{{d.row.payTime | dv}}</div>
|
||||
<div v-if="d.row.payChannelName != null">渠道:{{d.row.payChannelName | dv}}</div>
|
||||
<div v-if="d.row.payNo != null">{{d.row.payNo | dv}}</div>
|
||||
<div v-if="d.row.payTime != null">{{d.row.payTime | dv}}</div>
|
||||
<div v-if="d.row.payChannelName != null">{{d.row.payChannelName | dv}}</div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'use'">
|
||||
<div v-if="d.row.startAreaSubName != null">借车:{{d.row.startAreaSubName | dv}}</div>
|
||||
<div v-if="d.row.endAreaSubName != null">还车:{{d.row.endAreaSubName | dv}}</div>
|
||||
<div v-if="d.row.endReason != null">还车原因:{{d.row.endReason | dv}}</div>
|
||||
<div v-if="d.row.duration != null">
|
||||
<i class="el-icon-timer" />
|
||||
{{toDescriptionFromSecond(d.row.duration).text | dv}}
|
||||
</div>
|
||||
<div v-if="d.row.distance != null">
|
||||
<i class="el-icon-position" />
|
||||
{{d.row.distance / 1000 | fix2 | dv}} 公里
|
||||
</div>
|
||||
<div v-if="d.row.endReason != null">{{d.row.endReason | dv}}</div>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<div v-if="d.row.userName != null">用户:{{d.row.userName | dv}}</div>
|
||||
<div v-if="d.row.userPhone != null">手机:{{d.row.userPhone | dv}}</div>
|
||||
<div v-if="d.row.areaName != null">运营区:{{d.row.areaName | dv}}</div>
|
||||
<div v-if="d.row.userName != null">
|
||||
<i class="el-icon-user" />
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" size="mini"/>
|
||||
</div>
|
||||
<div v-if="d.row.userPhone != null">
|
||||
<i class="el-icon-phone" />
|
||||
<user-link :id="d.row.userId" :text="d.row.userPhone" size="mini"/>
|
||||
</div>
|
||||
<div v-if="d.row.areaName != null">
|
||||
<i class="el-icon-location"/>{{d.row.areaName | dv}}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
|
@ -269,6 +280,9 @@ import { OrderStatus } from "@/utils/enums";
|
|||
import OrderRefundDialog from "@/views/bst/order/components/OrderRefundDialog.vue";
|
||||
import OrderVerifyDialog from "@/views/bst/order/components/OrderVerifyDialog.vue";
|
||||
import { toDescriptionFromSecond } from '@/utils/date';
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
import DeviceLink from '@/components/Business/Device/DeviceLink.vue'
|
||||
import OrderLink from '@/components/Business/Order/OrderLink.vue'
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -280,7 +294,7 @@ export default {
|
|||
name: "Order",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['order_status', 'suit_type', 'order_return_type', 'order_return_mode', 'suit_rental_unit', 'suit_riding_rule'],
|
||||
components: {FormCol, OrderRefundDialog, OrderVerifyDialog},
|
||||
components: {FormCol, OrderRefundDialog, OrderVerifyDialog, UserLink, DeviceLink, OrderLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
@ -299,9 +313,8 @@ export default {
|
|||
{key: 'userName', visible: true, label: '用户', minWidth: "150", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'device', visible: true, label: '当前设备', minWidth: "150", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'totalFee', visible: true, label: '费用', minWidth: "230", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'useInfo', visible: true, label: '使用', minWidth: "130", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'time', visible: true, label: '时间', minWidth: "180", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'payNo', visible: true, label: '支付', minWidth: "180", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'payNo', visible: false, label: '支付', minWidth: "180", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'use', visible: true, label: '使用', minWidth: "180", sortable: false, overflow: false, align: 'left', width: null},
|
||||
{key: 'returnType', visible: true, label: '还车', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
|
||||
{key: 'mark', visible: false, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
|
|
|
@ -162,6 +162,9 @@
|
|||
<el-tab-pane label="支付信息" v-if="checkPermi(['bst:pay:list'])">
|
||||
<pay :query="{bstId: detail.id, bstType: PayBstType.ORDER}"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="退款信息" v-if="checkPermi(['bst:refund:list'])">
|
||||
<refund :query="{payBstId: detail.id, payBstType: PayBstType.ORDER}"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
|
||||
|
@ -183,6 +186,7 @@ import DeviceLocation from '@/views/bst/device/view/components/DeviceLocation.vu
|
|||
import OrderRefundDialog from '@/views/bst/order/components/OrderRefundDialog.vue'
|
||||
import OrderVerifyDialog from '@/views/bst/order/components/OrderVerifyDialog.vue'
|
||||
import { toDescriptionFromSecond } from '@/utils/date'
|
||||
import Refund from '@/views/bst/refund/index.vue'
|
||||
|
||||
export default {
|
||||
name: 'OrderView',
|
||||
|
@ -194,7 +198,8 @@ export default {
|
|||
Bonus,
|
||||
DeviceLocation,
|
||||
OrderRefundDialog,
|
||||
OrderVerifyDialog
|
||||
OrderVerifyDialog,
|
||||
Refund
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="orderDeviceList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
|
||||
<el-table size="mini" v-loading="loading" :data="orderDeviceList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<template v-for="column of showColumns">
|
||||
<el-table-column
|
||||
|
@ -107,32 +107,33 @@
|
|||
<template v-if="column.key === 'id'">
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'orderNo'">
|
||||
<order-link :id="d.row.orderId" :text="d.row.orderNo" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'deviceSn'">
|
||||
SN:{{d.row.deviceSn | dv}}
|
||||
<dict-tag :options="dict.type.order_device_type" :value="d.row.type" size="mini" style="margin-left: 4px;"/>
|
||||
<dict-tag :options="dict.type.order_device_status" :value="d.row.status" size="mini" style="margin-left: 4px;"/>
|
||||
<br/>
|
||||
MAC:{{d.row.deviceMac | dv}}<br/>
|
||||
车牌:{{d.row.deviceVehicleNum | dv}}
|
||||
{{d.row.deviceSn | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'type'">
|
||||
<dict-tag :options="dict.type.order_device_type" :value="d.row.type" size="mini" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'status'">
|
||||
<dict-tag :options="dict.type.order_device_status" :value="d.row.status" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'reason'">
|
||||
<dict-tag :options="dict.type.order_device_reason" :value="d.row.reason" size="mini"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'finishPicture'">
|
||||
<video v-if="d.row[column.key]" :src="d.row[column.key]" style="width: 50px; height: 50px; background-color: #000;" @click="handleVideo(d.row)"/>
|
||||
<video v-if="d.row[column.key]" :src="d.row[column.key]" style="width: 50px; height: 50px; background-color: #000; cursor: pointer;" @click="handleVideo(d.row)"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'returnMode'">
|
||||
<dict-tag :options="dict.type.order_return_mode" :value="d.row[column.key]" size="mini"/><br/>
|
||||
{{d.row.returnLon | dv }},{{d.row.returnLat | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'startTime'">
|
||||
开始:{{d.row.startTime | dv}}<br/>
|
||||
结束:{{d.row.endTime | dv}}
|
||||
{{d.row.startTime | dv}} ~ {{d.row.endTime | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'orderNo'">
|
||||
订单:{{d.row.orderNo | dv}} <br/>
|
||||
用户:{{d.row.orderUserName | dv}}<br/>
|
||||
手机号:{{d.row.orderUserPhone | dv}}
|
||||
<template v-else-if="column.key === 'deviceMchName'">
|
||||
<user-link :id="d.row.deviceMchId" :text="d.row.deviceMchName" size="mini"/>
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
|
@ -162,6 +163,8 @@
|
|||
import { listOrderDevice, getOrderDevice, delOrderDevice, addOrderDevice, updateOrderDevice } from "@/api/bst/orderDevice";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import OrderLink from '@/components/Business/Order/OrderLink.vue'
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -173,7 +176,7 @@ export default {
|
|||
name: "OrderDevice",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['order_device_type', 'order_device_reason', 'order_device_status', 'order_return_mode' ],
|
||||
components: {FormCol},
|
||||
components: {FormCol, OrderLink, UserLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
@ -188,9 +191,13 @@ export default {
|
|||
// 字段列表
|
||||
columns: [
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'deviceSn', visible: true, label: '车辆', minWidth: "150", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'orderNo', visible: true, label: '订单', minWidth: "150", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'startTime', visible: true, label: '时间', minWidth: null, sortable: false, overflow: false, align: 'center', width: "220"},
|
||||
{key: 'orderNo', visible: true, label: '订单', minWidth: null, sortable: true, overflow: false, align: 'left', width: "160"},
|
||||
{key: 'deviceSn', visible: true, label: 'SN', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'deviceMac', visible: true, label: 'MAC', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'deviceVehicleNum', visible: true, label: '车牌号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'type', visible: true, label: '类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'startTime', visible: true, label: '时间', minWidth: null, sortable: false, overflow: false, align: 'center', width: "260"},
|
||||
{key: 'deviceMchName', visible: true, label: '车辆归属', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'reason', visible: true, label: '换车原因', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'finishPicture', visible: true, label: '还车视频', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="payList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
|
||||
<el-table size="mini" v-loading="loading" :data="payList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<template v-for="column of showColumns">
|
||||
<el-table-column
|
||||
|
@ -124,10 +124,17 @@
|
|||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'description'">
|
||||
{{d.row.description | dv}}
|
||||
<order-link v-if="PayBstType.ORDER === d.row.bstType" :id="d.row.bstId" :text="d.row.description" size="mini" />
|
||||
<span v-else>{{d.row.description | dv}}</span>
|
||||
<dict-tag :options="dict.type.pay_bst_type" :value="d.row.bstType" size="mini" style="margin-left: 4px;"/>
|
||||
<dict-tag :options="dict.type.pay_status" :value="d.row.status" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'amount'">
|
||||
{{d.row.amount | fix2 | dv}} 元
|
||||
</template>
|
||||
<template v-else-if="['refunding', 'refunded'].includes(column.key)">
|
||||
<span style="color: red;">{{d.row[column.key] | fix2 | dv}} 元</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -151,6 +158,8 @@
|
|||
import { listPay, getPay, delPay, addPay, updatePay } from "@/api/bst/pay";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import OrderLink from '@/components/Business/Order/OrderLink.vue'
|
||||
import { PayBstType } from "@/utils/enums";
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -162,7 +171,7 @@ export default {
|
|||
name: "Pay",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['pay_status', 'pay_bst_type'],
|
||||
components: {FormCol},
|
||||
components: {FormCol, OrderLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
@ -171,6 +180,7 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
PayBstType,
|
||||
span: 24,
|
||||
// 字段列表
|
||||
columns: [
|
||||
|
@ -182,12 +192,12 @@ export default {
|
|||
{key: 'refunding', visible: true, label: '退款中', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'refunded', visible: true, label: '已退款', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'channelName', visible: true, label: '渠道', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'payTime', visible: true, label: '支付时间', minWidth: null, sortable: false, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'payTime', visible: true, label: '支付', minWidth: null, sortable: true, overflow: false, align: 'center', width: "90"},
|
||||
{key: 'account', visible: true, label: '支付账号', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
|
||||
{key: 'channelCost', visible: true, label: '渠道成本', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'ip', visible: true, label: '付款人IP', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'appName', visible: true, label: '应用', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'createTime', visible: true, label: '创建', minWidth: null, sortable: true, overflow: false, align: 'center', width: "90"},
|
||||
],
|
||||
// 排序方式
|
||||
orderSorts: ['ascending', 'descending', null],
|
||||
|
|
|
@ -69,6 +69,9 @@
|
|||
<template v-else-if="column.key === 'status'">
|
||||
<dict-tag :options="dict.type.real_name_status" :value="d.row[column.key]" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -110,6 +113,7 @@
|
|||
import { listRealName, getRealName, delRealName, addRealName, updateRealName } from "@/api/bst/realName";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -120,7 +124,7 @@ const defaultSort = {
|
|||
export default {
|
||||
name: "RealName",
|
||||
mixins: [$showColumns],
|
||||
components: {FormCol},
|
||||
components: {FormCol, UserLink},
|
||||
dicts: ['real_name_status'],
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -71,8 +71,17 @@
|
|||
<template v-if="column.key === 'id'">
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'status'">
|
||||
<dict-tag :options="dict.type.refund_status" :value="d.row[column.key]" />
|
||||
<template v-else-if="column.key === 'reason'">
|
||||
<order-link v-if="PayBstType.ORDER === d.row.payBstType" :id="d.row.payBstId" :text="d.row.reason" />
|
||||
<span v-else>{{d.row.reason | dv}}</span>
|
||||
<dict-tag :options="dict.type.refund_status" :value="d.row.status" size="mini" style="margin-left: 4px;"/>
|
||||
<dict-tag :options="dict.type.pay_bst_type" :value="d.row.payBstType" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'amount'">
|
||||
{{d.row[column.key] | fix2 | dv}} 元
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
|
@ -97,6 +106,9 @@
|
|||
import { listRefund, getRefund, delRefund, addRefund, updateRefund } from "@/api/bst/refund";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
import OrderLink from '@/components/Business/Order/OrderLink.vue';
|
||||
import { PayBstType } from '@/utils/enums';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -107,22 +119,28 @@ const defaultSort = {
|
|||
export default {
|
||||
name: "Refund",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['refund_status'],
|
||||
components: {FormCol},
|
||||
dicts: ['refund_status', 'pay_bst_type'],
|
||||
components: {FormCol, UserLink, OrderLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
PayBstType,
|
||||
span: 24,
|
||||
// 字段列表
|
||||
columns: [
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'reason', visible: true, label: '原因', minWidth: "200", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'amount', visible: true, label: '退款金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'no', visible: true, label: '退款编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'payNo', visible: true, label: '支付单号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'amount', visible: true, label: '退款金额', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'reason', visible: true, label: '原因', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'userId', visible: false, label: '操作人ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'userName', visible: true, label: '操作人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
],
|
||||
// 排序方式
|
||||
orderSorts: ['ascending', 'descending', null],
|
||||
|
@ -182,6 +200,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
Object.assign(this.queryParams, this.query);
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -130,6 +130,9 @@
|
|||
<template v-else-if="column.key === 'seconds'">
|
||||
{{toDescriptionFromSecond(d.row.seconds).text | dv}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -177,7 +180,7 @@ import { listSuit, delSuit } from "@/api/bst/suit";
|
|||
import { $showColumns } from '@/utils/mixins';
|
||||
import SuitEditDialog from '@/views/bst/suit/components/SuitEditDialog.vue';
|
||||
import { toDescriptionFromSecond } from '@/utils/date';
|
||||
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
prop: "orderNum",
|
||||
|
@ -188,14 +191,20 @@ export default {
|
|||
name: "Suit",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['suit_status', 'suit_rental_unit', 'suit_riding_rule', 'suit_type'],
|
||||
components: { SuitEditDialog },
|
||||
components: { SuitEditDialog, UserLink },
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 字段列表
|
||||
columns: [
|
||||
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'name', visible: true, label: '名称', minWidth: "200", sortable: true, overflow: false, align: 'left', width: null},
|
||||
{key: 'userName', visible: true, label: '运营商', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'userName', visible: true, label: '所属人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'depositAmount', visible: true, label: '预存', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'rentalUnit', visible: true, label: '租赁单位', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'instructions', visible: true, label: '说明', minWidth: null, sortable: true, overflow: true, align: 'center', width: null},
|
||||
|
@ -242,6 +251,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
Object.assign(this.queryParams, this.query);
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -32,16 +32,6 @@
|
|||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-has-permi="['bst:userApp:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
|
@ -84,6 +74,9 @@
|
|||
<template v-if="column.key === 'id'">
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -92,13 +85,6 @@
|
|||
</template>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-has-permi="['bst:userApp:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
|
@ -145,6 +131,7 @@
|
|||
import { listUserApp, getUserApp, delUserApp, addUserApp, updateUserApp } from "@/api/bst/userApp";
|
||||
import { $showColumns } from '@/utils/mixins';
|
||||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import UserLink from '@/components/Business/User/UserLink.vue';
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -155,7 +142,13 @@ const defaultSort = {
|
|||
export default {
|
||||
name: "UserApp",
|
||||
mixins: [$showColumns],
|
||||
components: {FormCol},
|
||||
components: {FormCol, UserLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
span: 24,
|
||||
|
@ -219,6 +212,7 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
Object.assign(this.queryParams, this.query);
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -163,6 +163,12 @@
|
|||
<template v-else-if="['amount', 'arrivalAmount'].includes(column.key)">
|
||||
{{d.row[column.key] | fix2 | dv}} 元
|
||||
</template>
|
||||
<template v-else-if="column.key === 'userName'">
|
||||
<user-link :id="d.row.userId" :text="d.row.userName" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'verifyUserName'">
|
||||
<user-link :id="d.row.verifyUserId" :text="d.row.verifyUserName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -210,6 +216,8 @@ import FormCol from "@/components/FormCol/index.vue";
|
|||
import WithdrawVerifyDialog from '@/views/bst/withdraw/components/WithdrawVerifyDialog.vue';
|
||||
import WithdrawAddDialog from '@/views/bst/withdraw/components/WithdrawAddDialog.vue';
|
||||
import { AccountType } from '@/utils/enums';
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
prop: "createTime",
|
||||
|
@ -220,7 +228,7 @@ export default {
|
|||
name: "Withdraw",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['account_type', 'withdraw_service_type', 'withdraw_status'],
|
||||
components: {FormCol, WithdrawVerifyDialog, WithdrawAddDialog},
|
||||
components: {FormCol, WithdrawVerifyDialog, WithdrawAddDialog, UserLink},
|
||||
props: {
|
||||
query: {
|
||||
type: Object,
|
||||
|
|
|
@ -72,30 +72,16 @@
|
|||
|
||||
<el-table v-loading="loading" :data="noticeList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="序号" align="center" prop="noticeId" width="100" />
|
||||
<el-table-column
|
||||
label="公告标题"
|
||||
align="center"
|
||||
prop="noticeTitle"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column label="公告类型" align="center" prop="noticeType" width="100">
|
||||
<el-table-column label="标题" align="left" prop="noticeTitle">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_notice_type" :value="scope.row.noticeType"/>
|
||||
{{scope.row.noticeTitle | dv}}
|
||||
<dict-tag :options="dict.type.sys_notice_type" :value="scope.row.noticeType" size="mini" style="margin-left: 4px;"/>
|
||||
<dict-tag :options="dict.type.sys_notice_status" :value="scope.row.status" size="mini" style="margin-left: 4px;"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_notice_status" :value="scope.row.status"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="createBy" width="100" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="创建者" align="center" prop="createBy" width="200" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
|
|
|
@ -137,6 +137,12 @@
|
|||
<el-tag :key="index" v-if="!isEmpty(role.roleName)" size="small" style="margin-right: 4px;">{{role.roleName}}</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="['nickName', 'userName', 'email'].includes(column.key)">
|
||||
<user-link :id="d.row.userId" :text="d.row[column.key]" />
|
||||
</template>
|
||||
<template v-else-if="column.key === 'agentName'">
|
||||
<user-link :id="d.row.agentId" :text="d.row.agentName" />
|
||||
</template>
|
||||
<template v-else>
|
||||
{{d.row[column.key]}}
|
||||
</template>
|
||||
|
@ -216,12 +222,14 @@ import UserFormDialog from '@/views/system/user/components/UserFormDialog'
|
|||
import DeptSelect from '@/components/Business/Dept/DeptSelect.vue'
|
||||
import { UserType, WithdrawServiceType } from '@/utils/enums'
|
||||
import BooleanTag from '@/components/BooleanTag/index.vue'
|
||||
import UserLink from '@/components/Business/User/UserLink.vue'
|
||||
|
||||
|
||||
export default {
|
||||
name: "User",
|
||||
mixins: [$showColumns],
|
||||
dicts: ['user_status', 'sys_user_sex', 'user_employ_status', 'withdraw_service_type'],
|
||||
components: {UserFormDialog, FormCol, DeptSelect, BooleanTag },
|
||||
components: {UserFormDialog, FormCol, DeptSelect, BooleanTag, UserLink},
|
||||
data() {
|
||||
return {
|
||||
WithdrawServiceType,
|
||||
|
|
|
@ -48,21 +48,39 @@
|
|||
|
||||
<el-card class="card-box" style="margin-top: 12px;" shadow="hover" v-if="detail.userId">
|
||||
<el-tabs>
|
||||
<el-tab-pane label="设备列表" lazy v-if="checkPermi(['bst:device:list'])">
|
||||
<el-tab-pane label="设备" lazy v-if="checkPermi(['bst:device:list'])">
|
||||
<device :query="{mchId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="运营区列表" lazy v-if="checkPermi(['bst:area:list'])">
|
||||
<el-tab-pane label="车辆型号" lazy v-if="checkPermi(['bst:model:list'])">
|
||||
<model :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="套餐" lazy v-if="checkPermi(['bst:suit:list'])">
|
||||
<suit :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="运营区" lazy v-if="checkPermi(['bst:area:list'])">
|
||||
<area-index :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="收入订单" lazy v-if="checkPermi(['bst:order:list'])">
|
||||
<order :query="{bonusUserId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="车辆出租记录" lazy v-if="checkPermi(['bst:orderDevice:list'])">
|
||||
<order-device :query="{deviceMchId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分成记录" lazy v-if="checkPermi(['bst:bonus:list'])">
|
||||
<bonus :query="{arrivalId: detail.userId, arrivalTypes: BonusArrivalType.userList()}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="提现记录" lazy v-if="checkPermi(['bst:withdraw:list'])">
|
||||
<withdraw :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="账变记录" lazy v-if="checkPermi(['bst:balanceLog:list'])">
|
||||
<balance-log :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="收款账户" lazy v-if="checkPermi(['bst:account:list'])">
|
||||
<account :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="用户APP" lazy v-if="checkPermi(['bst:userApp:list'])">
|
||||
<user-app :query="{userId: detail.userId}" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
</div>
|
||||
|
@ -83,7 +101,12 @@ import Device from '@/views/bst/device/index.vue'
|
|||
import AreaIndex from '@/views/bst/area/index.vue'
|
||||
import Order from '@/views/bst/order/index.vue'
|
||||
import BalanceLog from '@/views/bst/balanceLog/index.vue'
|
||||
|
||||
import UserApp from '@/views/bst/userApp/index.vue'
|
||||
import Suit from '@/views/bst/suit/index.vue'
|
||||
import Account from '@/views/bst/account/index.vue'
|
||||
import Model from '@/views/bst/model/index.vue'
|
||||
import OrderDevice from '@/views/bst/orderDevice/index.vue'
|
||||
import Withdraw from '@/views/bst/withdraw/index.vue'
|
||||
export default {
|
||||
name: 'UserView',
|
||||
components: {
|
||||
|
@ -97,7 +120,13 @@ export default {
|
|||
Device,
|
||||
Order,
|
||||
AreaIndex,
|
||||
BalanceLog
|
||||
BalanceLog,
|
||||
UserApp,
|
||||
Suit,
|
||||
Account,
|
||||
Model,
|
||||
OrderDevice,
|
||||
Withdraw
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
Loading…
Reference in New Issue
Block a user