合并qzc-dev3

master
秦子超 2024-06-07 09:39:05 +08:00
commit 05e38b8e05
14 changed files with 1098 additions and 1102 deletions

View File

@ -13,6 +13,7 @@ $http.beforeRequest = function (options) {
uni.showLoading({
title: '数据加载中'
})
<<<<<<< HEAD
if (options.url.indexOf('/my/') !== -1) {
if (options.url.indexOf('/getByUserId') !== -1){
options.header = {
@ -34,6 +35,11 @@ $http.beforeRequest = function (options) {
}
}
if (options.url.indexOf('/getLoginInfo') !== -1) {
=======
if (options.url.indexOf('/getLoginInfo') == -1) {
console.log('token',uni.getStorageSync('Gs-Token'))
>>>>>>> qzc-dev3
options.header = {
'gs-token': uni.getStorageSync('Gs-Token')
}

View File

@ -30,23 +30,23 @@
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/personInfo/personInfo",
"style":
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/modifyPassword/modifyPassword",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/login/login",
"style" :
{
"path" : "pages/personInfo/personInfo",
"style":
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/modifyPassword/modifyPassword",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/login/login",
"style" :
{
"navigationBarTitleText" : ""
}
@ -89,68 +89,93 @@
},
{
"path" : "pages/rain/rain",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"path" : "pages/rain/rain",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/rainDetail/rainDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"path" : "pages/rainDetail/rainDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/hdDetail/hdDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"path" : "pages/hdDetail/hdDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/skDetail/skDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"path" : "pages/skDetail/skDetail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
}
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path" : "pages/orderFeedback/orderFeedback",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/orderFeedback/orderInformation",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/addressBook/follow",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/addressBook/myDept",
"style" :
{
"navigationBarTitleText" : ""
}
}
],
"tabBar": {
"color": "#333333",
"selectedColor": "#eb4450",
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "/static/tabs/my2_icon@2x.png",
"selectedIconPath": "static/tabs/my2_icon@2x.png",
"text": "pages"
},
{
"pagePath": "pages/homeIndex/index",
"iconPath": "/static/tabs/首页@2x.png",
"selectedIconPath": "static/tabs/首页2@2x.png",
"text": "首页"
},
{
"pagePath": "pages/addressBook/addressBook",
"iconPath": "/static/tabs/my2_icon@2x.png",
"selectedIconPath": "static/tabs/my2_icon@2x.png",
"text": "通讯录"
},
{
"pagePath": "pages/mypage/mypage",
"iconPath": "/static/images/my1.png",

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,148 @@
<template>
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
<u-status-bar></u-status-bar>
<u-navbar
title="关注"
:autoBack="true"
:titleStyle="{
fontSize:'18px'
}"
:height='44'
:safeAreaInsetTop=true
leftIconSize='20'
leftIconColor='rgb(153, 153, 153)'
>
</u-navbar>
<div class="searchBar">
<u-search
placeholder="请输入姓名或手机号"
shape="square"
:showAction="false"
height="35"
v-model="keyword"
></u-search>
</div>
<div class="mybody">
<div :style="{display:'flex',alignItems:'center',height:'60px'}" v-for="(item,index) in getList">
<!-- <u--image :style="{margin:'0 30px'}" :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image> -->
<div class="personItemIcon"><text>{{item.userName.slice(0, 1)}}</text></div>
<div class="personItemRow_right">
<div class="personItemRow_right_top">
<div :style="{width:'100px'}"><text>{{item.userName}}</text></div>
<div :style="{flex:'1'}"><text>{{item.phone}}</text></div>
</div>
<div class="personItemRow_right_bottom">
<text :style="{fontSize:'12px',color:'rgba(0, 0, 0, 0.4)'}">{{item.duty}}</text>
</div>
</div>
<div class="personItemRow_right2">
<u-icon v-if="item.isMyAttendee" name="star-fill" color="#f5dc4d" size="24" @click="follow(false,item.userId)"></u-icon>
<u-icon v-if="!item.isMyAttendee" name="star" color="#f5dc4d" size="24" @click="follow(true,item.userId)"></u-icon>
<u-icon name="phone" size="24" :style="{margin:'3px 10px 0 10px'}" @click="callNum(item.phone)"></u-icon>
</div>
</div>
<div :style="{height:'100px'}"></div>
</div>
</view>
</template>
<script>
import moment from 'moment'
export default {
data() {
return {
keyword:'',
list:[]
};
},
computed: {
getList() {
if(this.keyword){
return [...this.list].filter(o=>o.userName.indexOf(this.keyword)!==-1)
}else{
return [...this.list]
}
}
},
methods: {
async getData () {
try {
const res = await uni.$http.get('/gunshiApp/xfflood/addressbook/my/attendee')
this.list = res.data.data
} catch (e) {
uni.$showMsg()
}
},
async follow (flag,id) {
let url = flag?'/gunshiApp/xfflood/addressbook/attendee/add':'/gunshiApp/xfflood/addressbook/attendee/cancel'
const params = {
addUserId:id
}
try {
const res = await uni.$http.post(url,params)
if(res.data.code === 200){
//
this.getData()
}
} catch (e) {
uni.$showMsg()
}
}
},
created() {
this.getData()
}
}
</script>
<style lang="scss" scoped>
.searchBar{
background-color: #ffffff;
margin-top: 44px;
height: 60px;
display: flex;
padding: 0 10px;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.mybody{
background-color: #ffffff;
margin: 5px 5px;
padding: 5px 0px;
height: calc( 100vh - 100px );
overflow: scroll;
}
.personItemIcon{
width: 40px;
height:40px;
background-color: rgb(53, 133, 249);;
border-radius: 20px;
margin: 0 20px;
text-align: center;
line-height: 40px;
color: #ffffff;
}
.personItemRow_right{
height: 100%;
flex: 1;
border-bottom: 1px solid #eee;
display: flex;
flex-direction: column;
justify-content: center;
}
.personItemRow_right2{
width: 100px;
height: 100%;
display: flex;
justify-content: flex-end;
border-bottom: 1px solid #eee;
}
.personItemRow_right_top{
margin-top: 5px;
display: flex;
justify-content: flex-start
}
</style>

View File

@ -0,0 +1,148 @@
<template>
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
<u-status-bar></u-status-bar>
<u-navbar
title="我的部门"
:autoBack="true"
:titleStyle="{
fontSize:'18px'
}"
:height='44'
:safeAreaInsetTop=true
leftIconSize='20'
leftIconColor='rgb(153, 153, 153)'
>
</u-navbar>
<div class="searchBar">
<u-search
placeholder="请输入姓名或手机号"
shape="square"
:showAction="false"
height="35"
v-model="keyword"
></u-search>
</div>
<div class="mybody">
<div :style="{display:'flex',alignItems:'center',height:'60px'}" v-for="(item,index) in getList">
<!-- <u--image :style="{margin:'0 30px'}" :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image> -->
<div class="personItemIcon"><text>{{item.userName.slice(0, 1)}}</text></div>
<div class="personItemRow_right">
<div class="personItemRow_right_top">
<div :style="{width:'100px'}"><text>{{item.userName}}</text></div>
<div :style="{flex:'1'}"><text>{{item.phone}}</text></div>
</div>
<div class="personItemRow_right_bottom">
<text :style="{fontSize:'12px',color:'rgba(0, 0, 0, 0.4)'}">{{item.duty}}</text>
</div>
</div>
<div class="personItemRow_right2">
<u-icon v-if="item.isMyAttendee" name="star-fill" color="#f5dc4d" size="24" @click="follow(false,item.userId)"></u-icon>
<u-icon v-if="!item.isMyAttendee" name="star" color="#f5dc4d" size="24" @click="follow(true,item.userId)"></u-icon>
<u-icon name="phone" size="24" :style="{margin:'3px 10px 0 10px'}" @click="callNum(item.phone)"></u-icon>
</div>
</div>
<div :style="{height:'100px'}"></div>
</div>
</view>
</template>
<script>
import moment from 'moment'
export default {
data() {
return {
keyword:'',
list:[]
};
},
computed: {
getList() {
if(this.keyword){
return [...this.list].filter(o=>o.userName.indexOf(this.keyword)!==-1)
}else{
return [...this.list]
}
}
},
methods: {
async getData () {
try {
const res = await uni.$http.get('/gunshiApp/xfflood/addressbook/my/department')
this.list = res.data.data
} catch (e) {
uni.$showMsg()
}
},
async follow (flag,id) {
let url = flag?'/gunshiApp/xfflood/addressbook/attendee/add':'/gunshiApp/xfflood/addressbook/attendee/cancel'
const params = {
addUserId:id
}
try {
const res = await uni.$http.post(url,params)
if(res.data.code === 200){
//
this.getData()
}
} catch (e) {
uni.$showMsg()
}
}
},
created() {
this.getData()
}
}
</script>
<style lang="scss" scoped>
.searchBar{
background-color: #ffffff;
margin-top: 44px;
height: 60px;
display: flex;
padding: 0 10px;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.mybody{
background-color: #ffffff;
margin: 5px 5px;
padding: 5px 0px;
height: calc( 100vh - 100px );
overflow: scroll;
}
.personItemIcon{
width: 40px;
height:40px;
background-color: rgb(53, 133, 249);;
border-radius: 20px;
margin: 0 20px;
text-align: center;
line-height: 40px;
color: #ffffff;
}
.personItemRow_right{
height: 100%;
flex: 1;
border-bottom: 1px solid #eee;
display: flex;
flex-direction: column;
justify-content: center;
}
.personItemRow_right2{
width: 100px;
height: 100%;
display: flex;
justify-content: flex-end;
border-bottom: 1px solid #eee;
}
.personItemRow_right_top{
margin-top: 5px;
display: flex;
justify-content: flex-start
}
</style>

View File

@ -244,6 +244,12 @@ const navList = [
key: 5,
icon: '../../static/tabs/yujing_icon@2x.png',
url:'/pages/forewarning/forewarning'
},
{
value: '调令反馈',
key: 5,
icon: '../../static/tabs/yujing_icon@2x.png',
url:'/pages/orderFeedback/orderFeedback'
}
]

View File

@ -27,8 +27,8 @@
data() {
return {
formData: {
username: '',
password: '',
username: 'mdx',
password: '1234567a',
checked: false,
},

View File

@ -0,0 +1,29 @@
<template>
<view>
<text>反馈{{record}}</text>
</view>
</template>
<script>
import moment from 'moment'
export default {
props:{
record:{
type: String,
required: true,
},
},
data() {
return {
};
},
methods: {
tabsChange(item) {
},
},
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,280 @@
<template>
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
<u-status-bar></u-status-bar>
<u-navbar
title="调令反馈"
:autoBack="true"
:titleStyle="{
fontSize:'18px'
}"
:height='44'
:safeAreaInsetTop=true
leftIconSize='20'
leftIconColor='rgb(153, 153, 153)'
>
<view
slot="right"
hover-class="is-hover"
class="searchBox_right_btn"
hover-stay-time=100
@click="myShow"
>
<u--image :src="'../../static/images/filter.png'" width="20px" height="20px"></u--image>
</view>
</u-navbar>
<u-tabs
:list="tabsOptions"
@click="tabsChange"
:scrollable=false
class="tabsClass"
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
lineColor="transparent"
itemStyle="height: 44px"
>
</u-tabs>
<div class="mybody">
<div class="countNum"><text>共4条信息</text></div>
<div v-for="(item,index) in list" class="listItem" @click="myNavigateTo(item)">
<div class="row1"><text>2024年调度令第03号</text></div>
<div class="row2">
<div><text>水库调度</text></div>
<div>
<text>刘明</text>
<text>2024-01-09 08:32:09</text>
</div>
</div>
</div>
<div :style="{height:'100px'}"></div>
</div>
<u-popup
:show="show"
mode="right"
:safeAreaInsetTop='true'
:closeOnClickOverlay='false'
@close="close"
@open="myShow">
<view :style="{padding:'10px',width:'250px'}">
<u-toast ref="uToast"></u-toast>
<text class="title">按类型</text>
<u-checkbox-group
placement="row"
v-model="check"
:style="{padding:'10px 0px 20px 0px'}"
>
<u-checkbox name="水库调洪" label="水库调洪" class="checkItem"></u-checkbox>
<u-checkbox name="人员转移" label="人员转移" class="checkItem"></u-checkbox>
</u-checkbox-group>
<text class="title">按时间</text>
<div :style="{display:'flex',marginTop:'10px'}">
<view
class="tmPicker"
@click="showStmPicker = true"
hover-class="is-hover"
hover-stay-time=100
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
</view>
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}"></text>
</div>
<div :style="{display:'flex',marginTop:'10px'}">
<view
class="tmPicker"
@click="showEtmPicker = true"
hover-class="is-hover"
hover-stay-time=100
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
</view>
<text :style="{width:'20%'}"></text>
</div>
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
<u-button
:style="{width:'80px',marginRight:'10px'}"
text="重置"
@click="reSet"
></u-button>
<u-button
:style="{width:'80px'}"
color="rgba(217, 0, 27, 1)"
type="primary"
text="确定"
@click="submit"
></u-button>
</div>
</view>
<u-datetime-picker
:show="showStmPicker"
v-model="stm"
mode="datetime"
closeOnClickOverlay
@confirm="showStmPicker = false"
@cancel="showStmPicker = false"
@close="showStmPicker = false"
>
</u-datetime-picker>
<u-datetime-picker
:show="showEtmPicker"
v-model="etm"
mode="datetime"
closeOnClickOverlay
@confirm="showEtmPicker = false"
@cancel="showEtmPicker = false"
@close="showEtmPicker = false"
>
</u-datetime-picker>
</u-popup>
</view>
</template>
<script>
import moment from 'moment'
const tabsOptions = [
{
name:'待执行',
},
{
name:'已执行',
},
]
export default {
data() {
return {
tabsOptions:tabsOptions,
show:false,
check:['水库调洪','人员转移'],
showStmPicker:false,
showEtmPicker:false,
stm:Number(moment(new Date()).add(-7,'days')),
etm:Number(new Date()),
list:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
};
},
computed: {
getStmStr() {
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
},
getEtmStr() {
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
},
},
methods: {
tabsChange(item) {
},
myShow() {
this.show = true
},
close() {
this.show = false
},
reSet() {
this.stm = Number(moment(new Date()).add(-7,'days'))
this.etm = Number(new Date())
this.check = ['水库调洪','人员转移']
},
async submit() {
this.close()
// try{
// const params = {
// }
// const res = await uni.$http.post('/gunshiApp/xfflood/current/situation/app/rv/warn',params)
// this.list = res.data.data
// this.close()
// }catch(e){
// //TODO handle the exception
// this.$refs.uToast.show({
// type: 'error',
// title: '',
// message: "",
// })
// setTimeout(()=>{
// this.close()
// },1000)
// }
},
myNavigateTo (record) {
uni.navigateTo({
url: '/pages/orderFeedback/orderInformation?obj='+JSON.stringify(record) //
});
}
},
}
</script>
<style lang="scss" scoped>
.myTitleStyle{
font-size: 30px;
background-color: red;
height: 200px;
}
.tabsClass{
background-color: #ffffff;
margin-top: 44px;
height: 44px;
padding: 0 40px;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.searchBox_right_btn{
width: 40px;
height: 40px;
border-radius: 5px;
display: flex;
align-items: center;
justify-content: center;
}
.is-hover{
background-color: #eee;
}
.checkItem{
margin-right: 10px;
}
.tmPicker{
width: 100%;
height: 30px;
border: 1px solid rgba(240, 240, 240, 1);
border-radius: 4px;
margin-right: 10px;
font-size: 14px;
display: flex;
justify-content: space-around;
align-items: center;
// padding-left: 10px;
}
.mybody{
background-color: #ffffff;
margin: 5px 5px;
padding: 5px 20px;
height: calc( 100vh - 100px );
overflow: scroll;
}
.countNum{
width: 100%;
text-align: right;
font-size: 13px;
}
.listItem{
width: 100%;
border-bottom: 1px solid #eee;
padding: 10px 0;
display: flex;
flex-direction: column;
}
.row1{
font-size: 14px;
font-weight: 700;
color: #333333;
width: 100%;
height: 30px;
line-height: 30px;
}
.row2{
font-size: 12px;
color: #999999;
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
align-items: center;
}
</style>

View File

@ -0,0 +1,155 @@
<template>
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
<u-status-bar></u-status-bar>
<u-navbar
title="2024年调度令05号"
:autoBack="true"
:titleStyle="{
fontSize:'18px'
}"
:height='44'
:safeAreaInsetTop=true
leftIconSize='20'
leftIconColor='rgb(153, 153, 153)'
>
<view
slot="right"
hover-class="is-hover"
class="searchBox_right_btn"
hover-stay-time=100
@click="myShow"
>
<u--image :src="'../../static/images/filter.png'" width="20px" height="20px"></u--image>
</view>
</u-navbar>
<u-tabs
:list="tabsOptions"
@click="tabsChange"
:scrollable=false
class="tabsClass"
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
lineColor="transparent"
itemStyle="height: 44px"
>
</u-tabs>
<div class="mybody">
<component :is="tabsVal" :record="record"></component>
<div :style="{height:'100px'}"></div>
</div>
</view>
</template>
<script>
import moment from 'moment'
import uniZl from './zl.vue';
import uniFk from './fk.vue'
const tabsOptions = [
{
name:'调度指令',
components:uniZl
},
{
name:'执行反馈',
components:uniFk
},
]
export default {
components: { uniZl, uniFk },
data() {
return {
tabsOptions:tabsOptions,
tabsVal:uniZl,
record:{}
};
},
onLoad(props){
const myRecord = JSON.parse(props.obj)
this.record = myRecord
},
methods: {
tabsChange(item) {
this.tabsVal = item.components
}
},
}
</script>
<style lang="scss" scoped>
.myTitleStyle{
font-size: 30px;
background-color: red;
height: 200px;
}
.tabsClass{
background-color: #ffffff;
margin-top: 44px;
height: 44px;
padding: 0 40px;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.searchBox_right_btn{
width: 40px;
height: 40px;
border-radius: 5px;
display: flex;
align-items: center;
justify-content: center;
}
.is-hover{
background-color: #eee;
}
.checkItem{
margin-right: 10px;
}
.tmPicker{
width: 100%;
height: 30px;
border: 1px solid rgba(240, 240, 240, 1);
border-radius: 4px;
margin-right: 10px;
font-size: 14px;
display: flex;
justify-content: space-around;
align-items: center;
// padding-left: 10px;
}
.mybody{
background-color: #ffffff;
margin: 5px 5px;
// padding: 5px 20px;
height: calc( 100vh - 100px );
overflow: scroll;
}
.countNum{
width: 100%;
text-align: right;
font-size: 13px;
}
.listItem{
width: 100%;
border-bottom: 1px solid #eee;
padding: 10px 0;
display: flex;
flex-direction: column;
}
.row1{
font-size: 14px;
font-weight: 700;
color: #333333;
width: 100%;
height: 30px;
line-height: 30px;
}
.row2{
font-size: 12px;
color: #999999;
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
align-items: center;
}
</style>

145
pages/orderFeedback/zl.vue Normal file
View File

@ -0,0 +1,145 @@
<template>
<view>
<div class="row">
<text class="lf"><text :style="{color:'red'}">*</text>调度令编号:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf"><text :style="{color:'red'}">*</text>调度令年度:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf"><text :style="{color:'red'}">*</text>执行单位:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf"><text :style="{color:'red'}">*</text>调度类型:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf">抄送单位:</text>
<div class="rf">
<u--input
border="surround"
v-model="wxdj"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf"><text :style="{color:'red'}">*</text>计划执行时间:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf">计划结束时间:</text>
<div class="rf">
<u--input
border="surround"
v-model="xz"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf">指令内容:</text>
<div class="rf">
<u--textarea
v-model="yjyj"
:disabled='true'
height=200
></u--textarea>
</div>
</div>
<div class="row">
<text class="lf">指令日期:</text>
<div class="rf">
<u--input
border="surround"
v-model="yjsj"
:disabled='true'
></u--input>
</div>
</div>
<div class="row">
<text class="lf">指令发起人:</text>
<div class="rf">
<u--input
border="surround"
v-model="yjsj"
:disabled='true'
></u--input>
</div>
</div>
</view>
</template>
<script>
import moment from 'moment'
export default {
props:{
record:{
type: String,
required: true,
},
},
data() {
return {
};
},
methods: {
tabsChange(item) {
},
},
}
</script>
<style lang="scss" scoped>
.row{
display: flex;
margin-top: 5px;
}
.lf{
width: 35%;
min-height: 40px;
text-align: right;
line-height: 38px;
padding-right: 10px;
}
.rf{
width: 65%;
min-height: 40px;
padding-right: 20px;
padding-top: 1px;
}
</style>

BIN
static/images/dept.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
static/images/deptItem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
static/images/follow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB