Commit 99747fd6 authored by 高宇's avatar 高宇

调整批注为滑入层;

parent 295de0f0
......@@ -28,11 +28,11 @@
"url": "/project"
},
{
"icon": "fa-book",
"icon": "fa-black-tie",
"isRouteShow": 1,
"title": "test",
"appName": portalName,
"url": "/test"
"title": "销售记录",
"appName": 'salesOrders',
"url": "/salesOrder"
}
],
homePage: {
......
import ElementApi from './apis/project'
import sales from './apis/sales'
const usingJSONP = process.env.NODE_ENV !== 'production'
const API_HOST = process.env.API_HOST
const API_PORT = process.env.API_PORT
......@@ -24,7 +25,7 @@ const option = {
let apis = {}
apis = Object.assign(apis, ElementApi)
apis = Object.assign(apis, sales)
export default {
option,
...apis
......
export default {
// 获取销售记录筛选
getSalesFilter: {
url: '/vue/sales-order/get-filter'
},
// 获取销售记录列表
getSalesList: {
url: '/vue/sales-order/list'
},
// 获取客户销售记录列表
getSalesClient: {
url: '/vue/sales-order/of-client'
},
// 销售记录条目列表
getSalesListItem: {
url: '/vue/sales-order/list-item'
},
// 获取新建销售记录 option
getSalesNewOptions: {
url: '/vue/sales-order/get-new'
},
// 获取销售记录条目新建
getSalesNewItem: {
url: '/vue/sales-order/get-new-item'
},
// 获取销售记录编辑信息
getSalesEdit: {
url: '/vue/sales-order/get-edit'
},
// 获取销售记录条目编辑信息
getSalesEditItem: {
url: '/vue/sales-order/get-edit-item'
},
// 保存销售记录编辑
saveSalesEdit: {
url: '/vue/sales-order/save-edit'
},
// 保存销售记录新建
saveSalesAdd: {
url: '/vue/sales-order/save-new'
},
// 保存销售记录条目编辑
saveSalesEditItem: {
url: '/vue/sales-order/save-edit-item'
},
// 保存销售记录条目新建
saveSalesAddItem: {
url: '/vue/sales-order/save-new-item'
},
// 删除销售记录
delSales: {
url: '/vue/sales-order/delete'
},
// 删除销售记录条目
delSalesItem: {
url: '/vue/sales-order/delete-item'
},
// 获取产品类别
getSalesComponent: {
url: '/vue/sales-order/get-product-component'
}
}
......@@ -74,30 +74,30 @@
v-click-outside="lmClose"
ref="leaveMessage"
:lmTemplate="lmTemplate"
:type="1">
:type="6">
</leave-message>
</div>
</div>
<side-popup ref="sidePopup" :title="operationTitle">
<component :is="operationPage" :ref="operationPage" @close="close"></component>
<component :is="operationPage" :ref="operationPage" @close="getList => {close(getList)}"></component>
</side-popup>
<operation-annotation ref="operationAnnotation" @update:list="getList()"></operation-annotation>
</section>
</template>
<script>
import ScheduleItem from '../common/scheduleItem'
import Pagenation from './schedulePagenation'
import ScheduleItem from './scheduleItem'
import Pagenation from '../common/schedulePagenation'
import clientHeader from '../common/clientHeader'
import clientForm from './projectListForm'
import clickOutside from '@/lib/bind'
import addProject from './operation/addProject'
import editProject from './operation/editProject'
import operationAnnotation from './operation/operationAnnotation'
import {
requestAPI,
api
} from '@/lib/commonMixin'
import operationAnnotation from './operation/operationAnnotation'
export default {
name: '',
components: {
......@@ -190,7 +190,12 @@
},
methods: {
editAnnotation (item) {
this.$refs.operationAnnotation.show(item)
this.operationPage = 'operationAnnotation'
this.operationTitle = '编辑商机批注'
// this.$refs.operationAnnotation.show(item)
this.$nextTick(() => {
this.$refs.sidePopup.show(this.$refs[this.operationPage].init(item))
})
},
leaveMessageSch (item) {
this.$refs.leaveMessage.btnShow(item)
......@@ -274,10 +279,12 @@
this.filter = res
})
},
close () {
close (getList) {
this.$refs.sidePopup.close()
if (getList) {
this.getList()
}
}
},
created () {
this.getFilter()
......
......@@ -6,7 +6,7 @@
:error-data="errorData">
<span slot="operationBtn">
<el-button type="primary" @click="saveProject" size="mini">保存</el-button>
<el-button @click="close" size="mini">关闭</el-button>
<el-button @click="close()" size="mini">关闭</el-button>
</span>
</operation-project>
</section>
......@@ -40,15 +40,15 @@
message: '保存成功!',
type: 'success'
})
this.close()
this.close(true)
}, error => {
error.msg.forEach(item => {
this.$set(this.errorData, item.name, item.error)
})
})
},
close () {
this.$emit('close')
close (getList) {
this.$emit('close', getList)
},
init () {
this.$refs.operationProject.initAdd()
......
......@@ -6,7 +6,7 @@
:error-data="errorData">
<span slot="operationBtn">
<el-button type="primary" @click="saveProject" size="mini">保存</el-button>
<el-button @click="close" size="mini">关闭</el-button>
<el-button @click="close()" size="mini">关闭</el-button>
</span>
</operation-project>
</section>
......@@ -40,24 +40,19 @@
message: '保存成功!',
type: 'success'
})
this.close()
this.close(true)
}, error => {
error.msg.forEach(item => {
this.$set(this.errorData, item.name, item.error)
})
})
},
close () {
this.$emit('close')
close (getList) {
this.$emit('close', getList)
},
init (id, clientId) {
this.$refs.operationProject.initEdit(id, clientId)
}
},
created () {
},
mounted () {
// this.$refs.operationProject.initEdit()
}
}
</script>
......
<template>
<section>
<el-dialog
title="编辑商机批注"
:visible.sync="formVisible"
:modal-append-to-body="false"
:close="cancel">
<el-form ref="form" :model="model" label-width="0">
<el-form-item>
<el-input v-model="model.comment" type="textarea" :rows="15" placeholder="请输入商机批注"></el-input>
</el-form-item>
<el-form-item style="text-align: center">
<el-button type="primary" @click="submit" size="mini">保存</el-button>
<el-button @click="close()" size="mini">关闭</el-button>
</el-form-item>
</el-form>
<div slot="footer" class="text-center">
<el-button size="small" @click="formVisible = false">取消</el-button><!--确定-->
<el-button size="small" type="primary" @click="submit">保存</el-button><!--取 消-->
</div>
</el-dialog>
<!--<div slot="footer" class="text-center">-->
<!--<el-button size="small" @click="formVisible = false">关闭</el-button>&lt;!&ndash;确定&ndash;&gt;-->
<!--<el-button size="small" type="primary" @click="submit">保存</el-button>&lt;!&ndash;取 消&ndash;&gt;-->
<!--</div>-->
</section>
</template>
......@@ -35,10 +35,12 @@
}
},
methods: {
cancel () {
close (getList) {
console.log(getList)
Object.keys(this.model).forEach(item => {
this.model[item] = ''
})
this.$emit('close', getList)
},
submit () {
// console.log(this.model.comment.replace(/\n/g, '\r\n'))
......@@ -55,18 +57,15 @@
type: 'success'
})
this.formVisible = false
this.$emit('update:list')
this.close(true)
}, () => {
this.$message.error('保存失败!')
})
},
show (model) {
console.log(model)
init (model) {
Object.keys(this.model).forEach(item => {
console.log(this.model[item])
this.model[item] = model[item]
})
this.formVisible = true
}
},
created () {
......
......@@ -73,7 +73,6 @@
<side-popup ref="sidePopup" :title="operationTitle">
<component :is="operationPage" :ref="operationPage" @close="close"></component>
</side-popup>
<operation-annotation ref="operationAnnotation" @update:list="getList()"></operation-annotation>
</section>
</template>
......@@ -82,9 +81,9 @@
requestAPI,
api
} from '@/lib/commonMixin'
import ScheduleItem from '../../common/scheduleItem'
import ScheduleItem from '../scheduleItem'
import clientHeader from '../../common/clientHeader'
import Pagenation from '../schedulePagenation'
import Pagenation from '../../common/schedulePagenation'
import clickOutside from '@/lib/bind'
import addProject from '../operation/addProject'
import editProject from '../operation/editProject'
......@@ -182,7 +181,12 @@
},
methods: {
editAnnotation (item) {
this.$refs.operationAnnotation.show(item)
this.operationPage = 'operationAnnotation'
this.operationTitle = '编辑商机批注'
// this.$refs.operationAnnotation.show(item)
this.$nextTick(() => {
this.$refs.sidePopup.show(this.$refs[this.operationPage].init(item))
})
},
leaveMessageSch (item) {
this.$refs.leaveMessage.btnShow(item)
......
<template>
<section>
<div class="content">
<client-header ref="clientHeader"
title="销售记录"
:title-span="6"
:model="form"
search-key="SalesOrderSearch"
key-code="keyword"
type="keyword"
button-title="新建销售记录 "
:add-new-user="addNewSales"
:search-keyword="searchKeyword"></client-header>
<client-form ref="clientForm"
:filter="filter"
@update:clientList="form =>{ updateForm(form)}"
:form-search-key="formSearchKey"></client-form>
<div class="page-body-content">
<div v-loading="loading">
<ScheduleItem
v-for="(item, key) in result.list"
:item="item"
:key="key"
@update:image="imgs => {setImage(imgs)}">
<span slot="opearate">
<el-button class="pull-right"
type="primary"
size="mini"
:disabled="!item.can_delete"
@click="delProject(item.id)">
<i class="fa fa-trash-o faa-shake"></i> 删除
</el-button>
<el-button class="pull-right"
type="primary"
size="mini"
:disabled="!item.can_update"
@click="editProject(item)">
<i class="fa fa-edit"></i> 编辑
</el-button>
<el-button class="pull-right"
type="primary"
size="mini"
@click.prevent.stop="leaveMessageSch(item)">
<span :class="['badge', {'badge-unread': item.unread > 0}]"
v-if="item.commentCount">{{item.commentCount.comment}}</span>
<i class="fa fa-commenting"></i> 留言
</el-button>
</span>
</ScheduleItem>
<div v-if="result.list.length === 0">
<el-card class="box-card">
未查询到数据!
</el-card>
</div>
</div>
<Pagenation
@update:pager="pager => {updatePage(pager)}"
:pager.sync="pagenation"
:total="totalcount">
</Pagenation>
<leave-message
v-click-outside="lmClose"
ref="leaveMessage"
:lmTemplate="lmTemplate"
:type="1">
</leave-message>
</div>
</div>
</section>
</template>
<script>
import clientHeader from '../common/clientHeader'
import clickOutside from '@/lib/bind'
import Pagenation from '../common/schedulePagenation'
import clientForm from './salesListForm'
import ScheduleItem from './scheduleItem'
import {
requestAPI,
api
} from '@/lib/commonMixin'
export default {
name: '',
components: {
clientHeader,
clientForm,
Pagenation,
ScheduleItem
},
directives: {
clickOutside
},
data () {
return {
lmTemplate: [
{
name: '客户名称',
value: 'client.name',
default: ''
},
{
name: '销售日期',
value: 'sales_date',
default: ''
},
{
name: '备注',
value: 'description',
default: ''
},
{
name: '客户经理',
value: 'salesRep.name',
default: ''
},
{
name: '录入人',
value: 'createdBy.name',
default: ''
},
{
name: '创建时间',
value: 'created_at',
default: ''
}
],
operationPage: '',
operationTitle: '',
result: {
list: []
},
form: {
'SalesOrderSearch[keyword]': ''
},
filter: [],
pagenation: {
page: 1
},
totalcount: 0,
loading: false,
formSearchKey: 'SalesOrder'
}
},
methods: {
leaveMessageSch (item) {
this.$refs.leaveMessage.btnShow(item)
},
lmClose () {
this.$refs.leaveMessage &&
this.$refs.leaveMessage.btnClose()
},
addNewSales () {
},
searchKeyword (search) {
this.updateForm(search)
},
updateForm (form) {
Object.assign(this.form, form)
this.getList()
},
getList () {
if (this.loading) {
return
}
this.loading = true
requestAPI(api.getSalesList, {
data: {
...this.form,
page: this.pagenation.page
}
}).then(res => {
this.result.list = res.list
// this.pagenation.page = res.pagenation.thispage
this.totalcount = res.pagenation.totalcount
// this.totalcount = 8
this.$el.querySelector('.page-body-content').scrollTo(0, 0)
}).finally(_ => {
this.loading = false
})
},
getFilter () {
requestAPI(api.getSalesFilter).then(res => {
this.filter = res
})
}
},
created () {
this.getFilter()
this.$nextTick(() => {
this.getList()
})
}
}
</script>
<style scoped lang="scss">
@include c('schedule-right') {
> .el-row {
> .el-col {
margin-bottom: 4px;
.el-button {
margin: 0 2px;
padding: 7px;
}
.date-time {
color: #649FD7;
}
}
}
.badge {
border-radius: 2px;
color: #333744;
background: #ffffff;
vertical-align: baseline;
display: inline;
padding: 2px 6px;
}
span.badge-unread {
&:hover {
border-color: #de321d
}
color: #fff;
background-color: #e54c3a;
border-color: #a32516
}
}
</style>
<template>
<div>
</div>
</template>
<script>
export default {
name: '',
data () {
return {}
},
methods: {},
created () {
}
}
</script>
<style scoped>
</style>
<template>
<div>
</div>
</template>
<script>
export default {
name: '',
data () {
return {}
},
methods: {},
created () {
}
}
</script>
<style scoped>
</style>
<template>
<div>
</div>
</template>
<script>
export default {
name: '',
data () {
return {}
},
methods: {},
created () {
}
}
</script>
<style scoped>
</style>
<template>
<div>
<el-row class="form-content">
<el-form size="mini" :model="clientForm" label-width="0" label-position="top">
<el-col :span="4" v-for="(item, key) in filter" :key="key">
<el-form-item>
<span slot="label" v-if="item.key !== 'Filter[sort]'">
<a @click.prevent="timeSort" v-if="item.key === 'Filter[name]'">
{{item.name}}
<i :class="['fa', setSortIcon()]"></i>
</a>
<span v-else>
{{item.name}}
</span>
</span>
<el-select clearable
v-model="clientForm[item.key]"
placeholder="请选择"
v-if="!item.itemKey && item.key !== 'Filter[sort]'" size="mini">
<el-option v-for="(option, optKey) in item.value"
:key="optKey"
:label="option.name"
:value="option.key">
<span style="font-size: 12px;">{{option.name}}</span>
</el-option>
</el-select>
<el-cascader
:ref="'elCasc' + key"
v-model="item.cascader"
:props="props"
clearable
change-on-select
v-if="item.itemKey"
:options="item.value"
@change="setCascader(item, key)"
></el-cascader>
</el-form-item>
</el-col>
</el-form>
</el-row>
</div>
</template>
<script>
import {findWhere} from '../../lib/viewHelper'
import $ from 'jquery'
const timeItem = ['period']
export default {
name: 'client-form',
data () {
return {
clientTimeForm: {},
clientTimeRange: {
from: '',
to: ''
},
clientForm: {},
props: {
label: 'name',
value: 'key',
children: 'child'
}
}
},
props: ['filter', 'formSearchKey'],
methods: {
setCascader (item, key) {
if (item.cascader.length === 1) {
this.clientForm[item.key] = item.cascader[0]
this.clientForm[item.itemKey] = ''
} else if (item.cascader.length === 2) {
this.clientForm[item.itemKey] = item.cascader[0]
this.clientForm[item.key] = item.cascader[1]
} else {
this.clientForm[item.itemKey] = ''
this.clientForm[item.key] = ''
}
},
setDefault (filter) {
filter.forEach(item => {
if (item.default) {
let keys = findWhere(item.value, item.default, 'key')
if (keys.node) {
if (keys.parentNode) {
this.clientForm[item.itemKey] = keys.parentNode.key
this.clientForm[item.key] = keys.node.key
item.cascader = [keys.parentNode.key, keys.node.key]
} else {
this.clientForm[item.itemKey] = ''
this.clientForm[item.key] = keys.node.key
item.cascader = [keys.node.key]
}
}
}
})
},
init (isCascader) {
this.$watch('clientForm', (val) => {
this.$emit('update:clientList', Object.assign({}, val, this.clientTimeForm))
}, {deep: true})
this.$watch('clientTimeForm', (val) => {
let perid = val[this.formSearchKey + '[period]']
this.$emit('update:clientList', Object.assign({}, {[this.formSearchKey + '[period]']: perid}, this.clientForm))
}, {deep: true})
let _this = this
if (isCascader) {
$(document).ready(() => {
$(document).on('mouseleave', '.el-cascader-menus', () => {
Object.keys(_this.$refs).forEach(item => {
_this.$refs[item][0].menuVisible = false
})
})
})
}
},
setSortIcon () {
if (this.clientForm['Filter[sort]'] === '') {
return 'fa-sort-amount-desc'
} else if (this.clientForm['Filter[sort]'] === 'DESC') {
return 'fa-sort-amount-desc'
} else {
return 'fa-sort-amount-asc'
}
},
timeSort () {
if (this.clientForm['Filter[sort]'] === '') {
this.clientForm['Filter[sort]'] = 'ASC'
} else if (this.clientForm['Filter[sort]'] === 'ASC') {
this.clientForm['Filter[sort]'] = 'DESC'
} else {
this.clientForm['Filter[sort]'] = 'ASC'
}
},
setSearchTime () {
let from = this.clientTimeRange.from
let to = this.clientTimeRange.to
this.$emit('update:clientList', Object.assign({}, {
[this.formSearchKey + '[from]']: from,
[this.formSearchKey + '[to]']: to
}, this.clientTimeForm, this.clientForm))
}
},
mounted () {
},
watch: {
'clientTimeRange.from' (val) {
if (new Date(val) >= new Date(this.clientTimeRange.to)) {
this.clientTimeRange.to = val
}
},
'clientTimeRange.to' (val) {
if (new Date(val) <= new Date(this.clientTimeRange.from)) {
this.clientTimeRange.from = val
}
},
'filter' (val) {
let isCascader = false
val.forEach(item => {
if (item.itemKey) {
this.$set(this.clientForm, item.itemKey, '')
this.$set(item, 'cascader', [])
isCascader = true
}
this.$set(this.clientForm, item.key, '')
})
this.$nextTick(() => {
this.init(isCascader)
this.setDefault(val)
})
},
'formSearchKey': {
handler (val) {
if (val !== '') {
timeItem.forEach(item => {
this.$set(this.clientTimeForm, val + '[' + item + ']', '')
})
}
},
immediate: true
}
}
}
</script>
<style scoped>
.form-content-time-top {
background: #FFF;
}
.form-content-time-top .el-form-item {
margin: 7px 0 9px;
}
.form-content-time-top .el-col {
padding: 0 15px;
}
</style>
<style>
.form-content-time-top .el-form-item__label {
font-size: .875rem;
font-weight: normal;
padding: 0 2px 0 0;
}
.form-content-time-top .el-radio-button__orig-radio:checked + .el-radio-button__inner {
color: #fff !important;
background-color: #333744 !important;
border-color: #282b35 !important;
box-shadow: -1px 0 0 0 #282b35;
}
.form-content-time-top .el-radio-button:first-child .el-radio-button__inner {
border-left: 1px solid #DCDFE6;
}
.form-content-time-top .el-radio-button__inner:hover {
border-color: #DCDFE6 !important;
}
.form-content-time-top .form-content-time-range .el-form-item .el-form-item__content{
display: flex;
font-size: 12px;
}
</style>
<template>
<section class="client-schedule-item">
<el-row class="client-schedule-row">
<el-col :span="4" :xs="24" class="client-schedule-left" :style="{'background-color': item.bgcolor}">
<el-row :gutter="10">
<el-col :span="24" class="entity-name">
<i class="fa fa-star" aria-hidden="true"></i>
<router-link :to="toView(item)" v-if="Object.keys(item.client).length > 0">&nbsp;{{ item.client.name }}
</router-link>
<span v-else>客户名称{{noneText}}</span>
</el-col>
<el-col :span="24" class="entity-name">
<i class="fa fa-th-list" aria-hidden="true"></i>
<span v-if="Object.keys(item.project).length > 0"> {{ item.project.name }} </span>
<span v-else>{{noneText}}</span>
</el-col>
<el-col :span="12" class="entity-name">
<img class="user-avatar rounded-circle" :src="item.createdBy.avatar.name">
<span class="black">{{ item.createdBy.name }}</span>
</el-col>
</el-row>
</el-col>
<el-col :span="20" :xs="24" class="client-schedule-right">
<el-row :gutter="10">
<el-col :span="6" :xs="24" class="show-picture">
销售日期:
<span class="date-time">
<router-link :to="{}">{{item.sales_date !== '' ? item.sales_date : noneText}}</router-link>
</span>
</el-col>
<el-col :span="6" :xs="24">
客户经理: <span v-if="Object.keys(item.salesRep).length > 0">{{item.salesRep.name}}</span><span v-else>{{noneText}}</span>
</el-col>
<el-col :span="6" :xs="24">
录入人: <span v-if="Object.keys(item.createdBy).length > 0">{{item.createdBy.name}}</span><span v-else>{{noneText}}</span>
</el-col>
<el-col :span="6" :xs="24">
创建时间: <span class="date-time">{{item.created_at !== '' ? item.created_at : noneText}}</span>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="6" :xs="24">
<span class="border border-danger text-danger rounded px-1">服务截止日期</span> :
<span>{{item.expire_date !== '' ? item.expire_date : noneText}}</span>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12" :xs="24">
<span class="border border-danger text-danger rounded px-1">备注</span> :
<span v-html="setBr(item.description)"></span>
</el-col>
<el-col :span="12" :xs="24">
<slot name="opearate">
</slot>
</el-col>
</el-row>
</el-col>
</el-row>
</section>
</template>
<script>
export default {
name: 'scheduleItem',
props: {
item: Object
},
data () {
return {
noneText: '(未设置)'
}
},
methods: {
setBr (text) {
if (text === '') {
return this.noneText
} else {
return text.replace(/\n/g, '<br />')
}
},
toView (item) {
let obj = {
app: 'project',
name: 'ofClient',
params: {
id: item.client_id
}
}
return obj
},
showImageViewer (images) {
this.$emit('update:image', images.map(i => 'https://beta.jinchangxiao.com' + i.attachment.name))
// this.$emit('update:image', ['https://beta.jinchangxiao.com/files/protected/a57be577deb434/2019/03/34cf2b53-3959-33fe-93af-98a50fd18c11.jpg'])
}
},
computed: {
isNullClient () {
return !this.item.client
},
isPublic () {
return !!this.item.is_public
}
},
mounted () {
}
}
</script>
<style scoped lang="scss">
.text-info {
color: #17a2b8 !important;
}
.border-info {
border-color: #17a2b8 !important;
}
.colRed {
color: red;
border: 1px solid red;
}
.colGreen {
color: green;
border: 1px solid green;
}
.colRed, .colGreen, .col {
border-radius: .25rem;
padding: 0 .25rem;
}
.rounded-circle {
border-radius: 50% !important;
}
.user-avatar {
width: 16px;
max-width: 16px;
height: 16px;
max-height: 16px;
}
@include c('schedule-item') {
margin-bottom: 10px;
font-size: 12px;
.border {
border: 1px solid #dee2e6;
}
.border-success {
border-color: #28a745 !important;
}
.border-danger {
border-color: #dc3545;
}
.text-success {
color: #28a745 !important;
}
.text-danger {
color: #E45744;
}
.rounded {
border-radius: .25rem !important;
}
.px-1 {
padding: 0 .25rem;
}
}
@include c('schedule-item:first-child') {
.client-schedule-left {
border-radius: 5px 0 0 0;
}
}
@include c('schedule-row') {
background-color: white;
display: flex;
flex-wrap: wrap;
}
@include c('schedule-left') {
background-color: #FF6A6A;
min-height: 100%;
padding: 10px 15px 6px;
> .el-row {
> .el-col {
margin-bottom: 4px;
}
}
.el-row div:first-child, .el-row div:first-child a, .entity-name, .entity-name a {
color: white;
}
.entity-name .black {
color: #000000;
}
span {
display: inline-block;
padding-left: 3px;
}
span.np {
padding-left: 0;
}
@include e('private') {
display: inline-block;
// border: 1px solid black;
padding-right: 5px;
border-radius: 5px;
width: 40px;
height: 20px;
}
}
@include c('schedule-right') {
height: 100%;
padding: 10px 15px 6px;
> .el-row {
> .el-col {
margin-bottom: 4px;
.el-button {
margin: 0 2px;
padding: 7px;
}
.date-time, .show-picture {
color: #649FD7;
}
.show-picture {
cursor: pointer;
}
}
}
.badge {
border-radius: 2px;
color: #333744;
background: #ffffff;
vertical-align: baseline;
display: inline;
padding: 2px 6px;
text-align: center;
}
span.badge-unread {
&:hover {
border-color: #de321d
}
color: #fff;
background-color: #e54c3a;
border-color: #a32516
}
@include e('item') {
display: flex;
flex-direction: column;
justify-content: space-around;
padding: 5px 0 5px 5px;
flex: 1;
}
@include e('status') {
color: red;
}
@include e('content') {
display: inline-block;
border: 1px solid red;
border-radius: 5px;
height: 20px;
padding: 0 5px 0 5px;
color: red;
}
}
</style>
<template>
<div>
</div>
</template>
<script>
export default {
name: '',
data () {
return {}
},
methods: {},
created () {
}
}
</script>
<style scoped>
</style>
import portal from 'vis-portal'
import ElementRoute from './routes/project'
import salesOrder from './routes/salesOrders'
let routes = []
let salesRours = []
const appName = 'project'
routes = [].concat(ElementRoute)
salesRours = [].concat(salesOrder)
let RouterInit = () => {
portal.createApp(appName, {}, app => {
app.mapRoute(routes)
})
portal.createApp('salesOrders', {}, app => {
app.mapRoute(salesRours)
})
}
export default RouterInit
import salesList from '../components/sales/list'
const projectTitle = '金畅逍BMS - '
const routes = [
{
path: '/salesOrder',
name: 'salesOrder',
component: salesList,
meta: {
title: projectTitle + '销售记录'
}
}
]
export default routes
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment