master
xy 1 year ago
parent ccb7f05960
commit 42192dbeb5

@ -5,3 +5,4 @@ ENV='development'
VUE_APP_BASE_API=http://wuxiwuye.ali251.langye.net/
VUE_APP_UPLOAD_API=http://wuxiwuye.ali251.langye.net/api/admin/upload-file
VUE_APP_PREVIEW=http://view.ali251.langye.net:8012/onlinePreview

@ -4,6 +4,10 @@ NODE_ENV = production
ENV = 'staging'
# base api
VUE_APP_BASE_API=http://wuxiwuye.ali251.langye.net/
VUE_APP_UPLOAD_API=http://wuxiwuye.ali251.langye.net/api/admin/upload-file
VUE_APP_PREVIEW=http://view.ali251.langye.net:8012/onlinePreview
#VUE_APP_BASE_API=http://wuxiwuye.ali251.langye.net/
#VUE_APP_UPLOAD_API=http://wuxiwuye.ali251.langye.net/api/admin/upload-file
#VUE_APP_PREVIEW=http://view.ali251.langye.net:8012/onlinePreview
# base api
VUE_APP_BASE_API=http://192.168.221.31:9001/
VUE_APP_UPLOAD_API=http://192.168.221.31:9001/api/admin/upload-file
VUE_APP_PREVIEW=http://192.168.221.31:8012/onlinePreview

@ -0,0 +1 @@
<svg t="1718693042653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1516" width="200" height="200"><path d="M863.307169 1023.679132h-223.713088a63.918025 63.918025 0 0 1-63.918025-63.918026v-191.754075a63.918025 63.918025 0 0 0-127.83605 0v191.754075a63.918025 63.918025 0 0 1-63.918025 63.918026h-191.754076c-63.087091 6.008294-127.83605-67.721148-127.83605-111.856544V575.869447A65.164427 65.164427 0 0 1 19.84491 464.364453l108.660642-108.660643c0-1.022688-0.31959-2.013418-0.31959-3.195901v-223.713088a63.918025 63.918025 0 0 1 127.83605 0v99.072939L464.618487 19.207367a65.611853 65.611853 0 0 1 58.133444-18.088802 63.566476 63.566476 0 0 1 48.322027 18.440351l433.236375 433.236374a63.918025 63.918025 0 0 1-45.126126 109.267864v349.759434c0 44.135396-51.741641 111.856544-95.877038 111.856544m-341.961434-875.676945l-348.129524 348.353237h21.092948a62.831419 62.831419 0 0 0-2.26909 15.979506v319.590126a79.482064 79.482064 0 0 0 31.959013 63.918025h95.877038v-127.83605a65.164427 65.164427 0 0 1 1.757745-14.413515 96.036833 96.036833 0 0 1-1.629909-17.545498v-63.918025a95.877038 95.877038 0 0 1 95.877037-95.877037h191.754076a95.877038 95.877038 0 0 1 95.877037 95.877037v63.918025a96.036833 96.036833 0 0 1-1.757745 17.545498 65.164427 65.164427 0 0 1 1.757745 14.413515v127.83605h95.877038a79.482064 79.482064 0 0 0 31.959013-63.918025v-319.590126a62.831419 62.831419 0 0 0-2.26909-15.979506h38.350815z" fill="currentColor" p-id="1517"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -1,136 +1,138 @@
import {
login,
logout,
getInfo
} from '@/api/user'
import {
getToken,
setToken,
removeToken
} from '@/utils/auth'
import {
resetRouter
} from '@/router'
const getDefaultState = () => {
return {
token: getToken(),
name: '',
avatar: '',
roles: []
}
}
const state = getDefaultState()
const mutations = {
RESET_STATE: (state) => {
Object.assign(state, getDefaultState())
},
SET_TOKEN: (state, token) => {
state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ROLES: (state, roles) => {
state.roles = roles
}
}
const actions = {
// user login
login({
commit
}, userInfo) {
const {
username,
password
} = userInfo
return new Promise((resolve, reject) => {
login({
username: username.trim(),
password: password
}).then(response => {
console.log(response)
const {
data
} = response;
console.log(response.access_token)
commit('SET_TOKEN', response.access_token)
setToken(response.access_token)
resolve()
}).catch(error => {
reject(error)
})
})
},
// get user info
getInfo({
commit,
state
}) {
return new Promise((resolve, reject) => {
getInfo(state.token).then(response => {
if (!response) {
reject('身份验证失败请重新登录')
}
response["roles"] = ["admin"];
const {
roles,
name,
avatar
} = response
commit('SET_ROLES', roles)
commit('SET_NAME', name)
commit('SET_AVATAR', avatar)
resolve(response)
}).catch(error => {
reject(error)
})
})
},
// user logout
logout({
commit,
state
}) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
removeToken() // must remove token first
resetRouter()
commit('RESET_STATE')
resolve()
}).catch(error => {
reject(error)
})
})
},
// remove token
resetToken({
commit
}) {
return new Promise(resolve => {
removeToken() // must remove token first
commit('RESET_STATE')
resolve()
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
import {
login,
logout,
getInfo
} from '@/api/user'
import {
getToken,
setToken,
removeToken
} from '@/utils/auth'
import {
resetRouter
} from '@/router'
const getDefaultState = () => {
return {
token: getToken(),
name: '',
avatar: '',
roles: []
}
}
const state = getDefaultState()
const mutations = {
RESET_STATE: (state) => {
Object.assign(state, getDefaultState())
},
SET_TOKEN: (state, token) => {
state.token = token
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ROLES: (state, roles) => {
state.roles = roles
}
}
const actions = {
// user login
login({
commit
}, userInfo) {
const {
username,
password,
code
} = userInfo
return new Promise((resolve, reject) => {
login({
username: username.trim(),
password: password,
code
}).then(response => {
console.log(response)
const {
data
} = response;
console.log(response.access_token)
commit('SET_TOKEN', response.access_token)
setToken(response.access_token)
resolve()
}).catch(error => {
reject(error)
})
})
},
// get user info
getInfo({
commit,
state
}) {
return new Promise((resolve, reject) => {
getInfo(state.token).then(response => {
if (!response) {
reject('身份验证失败请重新登录')
}
response["roles"] = ["admin"];
const {
roles,
name,
avatar
} = response
commit('SET_ROLES', roles)
commit('SET_NAME', name)
commit('SET_AVATAR', avatar)
resolve(response)
}).catch(error => {
reject(error)
})
})
},
// user logout
logout({
commit,
state
}) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
removeToken() // must remove token first
resetRouter()
commit('RESET_STATE')
resolve()
}).catch(error => {
reject(error)
})
})
},
// remove token
resetToken({
commit
}) {
return new Promise(resolve => {
removeToken() // must remove token first
commit('RESET_STATE')
resolve()
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}

@ -84,7 +84,7 @@
v-for="item in /\/land/g.test($route.path) ? detail.id_asset_picture_files_land_id_relation : detail.id_asset_picture_files_house_id_relation"
>
<el-image
style="width: 100%; height: 100%"
style="width: 100%; height: 100%;max-width: 200px;"
:src="item.url"
:preview-src-list="
(/\/land/g.test($route.path) ? detail.id_asset_picture_files_land_id_relation : detail.id_asset_picture_files_house_id_relation).map(
@ -108,7 +108,7 @@
<template v-if="histories && histories.length > 0">
<Timeline>
<TimelineItem v-for="(item, index) in histories" :key="item.id">
<el-descriptions :column="1" size="mini" border :title="$moment(item.fashengshijian).format('YYYY-MM-DD HH:mm')" :label-style="{ 'width': '86px' }">
<el-descriptions :column="1" size="mini" border :title="$moment(item.fashengshijian).format('YYYY-MM-DD')" :label-style="{ 'width': '86px' }">
<el-descriptions-item>
<template slot="label">
<i class="el-icon-coordinate"></i>
@ -133,15 +133,20 @@
<el-descriptions-item>
<template slot="label">
<i class="el-icon-picture-outline"></i>
相关图片
文件目录
</template>
<div style="display: flex;flex-wrap: wrap;padding-top: 10px;">
<div style="display: flex;flex-direction: column; align-items: center;margin-right: 16px;" v-for="(img,index) in item.id_his_tupian_files_asset_history_id_relation" :key="img.id">
<el-image
style="height: 160px"
:src="img.url"
fit="contain"
></el-image>
<div style="display: flex;flex-direction: column; align-items: center;margin-right: 16px;cursor: pointer;"
v-for="(img,index) in item.id_his_tupian_files_asset_history_id_relation"
:key="img.id"
@click="open(img.url)">
<!-- <el-image-->
<!-- style="height: 160px"-->
<!-- :src="img.url"-->
<!-- fit="contain"-->
<!-- :preview-src-list="item.id_his_tupian_files_asset_history_id_relation.map(i => i.url)"-->
<!-- ></el-image>-->
<i class="el-icon-document" style="font-size: 24px;"></i>
<div style="color: #3477c6;padding: 10px 0;">{{ ++index }}. <span style="font-weight: 600;">{{ img.original_name }}</span></div>
</div>
</div>
@ -269,6 +274,37 @@
<div style="position:fixed;right: 40px;bottom: 80px;background: #fff;border-radius: 100%;width: 40px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 20px;cursor: pointer;" @click="print">
<Icon type="md-print" />
</div>
<div style="position:fixed;right: 40px;bottom: 30px;background: #fff;border-radius: 100%;width: 40px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 20px;cursor: pointer;" @click="isShowSearch = !isShowSearch">
<Icon type="md-search" />
</div>
<transition name="search-container">
<el-card v-show="isShowSearch" class="search-container">
<template #header>
<div style="display:flex;align-items: center;">
<p>搜索</p>
<i class="el-icon-close" style="margin-left: auto;" @click="isShowSearch = false"></i>
</div>
</template>
<template>
<div>
<Button size="small" type="success" ghost>资产</Button>
<Button size="small" type="info" ghost>文件</Button>
</div>
<el-input size="mini" style="margin-top: 4px;" placeholder="请输入名称" clearable>
<el-button type="primary" slot="append" icon="el-icon-search"></el-button>
</el-input>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</template>
</el-card>
</transition>
</div>
</template>
@ -284,6 +320,7 @@ export default {
name: "detail",
data() {
return {
isShowSearch: false,
showModal: false,
codeUri: "",
center: [120.283692, 31.614211],
@ -674,6 +711,42 @@ a:hover {
.el-image + .el-image {
margin-left: 6px;
}
.search-container-enter-active {
animation: slide-in-fwd-br 0.4s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
.search-container-leave-active {
animation: slide-out-fwd-br 0.6s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;
}
@keyframes slide-in-fwd-br {
0% {
transform: translateZ(-1400px) translateY(800px) translateX(1000px);
opacity: 0;
}
100% {
transform: translateZ(0) translateY(0) translateX(0);
opacity: 1;
}
}
@keyframes slide-out-fwd-br {
0% {
transform: translateZ(0) translateY(0) translateX(0);
opacity: 1;
}
100% {
transform: translateZ(600px) translateY(300px) translateX(400px);
opacity: 0;
}
}
.search-container {
min-width: 300px;
background: #fff;
position: fixed;
right: 100px;
bottom: 30px;
}
</style>
<style lang="scss">
.map-marker {

@ -38,7 +38,7 @@
<el-row :gutter="80" type="flex">
<el-col :span="12">
<div class="contract__title">
<h3>通知公告</h3>
<h3>系统通知</h3>
<div class="more" @click="$router.push('/notice')">
更多

@ -11,13 +11,18 @@
<div class="header-time">
<p>{{ time.format('YYYY年MM月DD日 HH:mm:ss') }}</p>
<p style="text-align: right">{{ time.format('dddd') }}</p>
<p>{{ time.format('dddd') }}</p>
</div>
<SvgIcon icon-class="home" style="color: #75f9e2;width: 45px;height: 45px;cursor: pointer;" @click.native="$router.back()"></SvgIcon>
</div>
</template>
<script>
import SvgIcon from "@/components/SvgIcon"
export default {
components: {
SvgIcon
},
data() {
return {
time: this.$moment(),
@ -52,7 +57,7 @@ export default {
font-weight: 600;
background: linear-gradient(to right, #1d413b, #75f9e2);
padding: 16px 100px;
transform: skewX(-45deg) translateX(-40px);
transform: skewX(-45deg) translateX(-80px);
position: relative;
& > p {
@ -85,6 +90,8 @@ export default {
font-size: 22px;
padding: 0 20px;
word-break: keep-all;
white-space: nowrap;
text-align: right;
}
}
</style>

@ -97,12 +97,8 @@
trigger: 'blur',
message: '请输入验证码',
validator: (rule, value, callback) => {
if (this.loginForm.username === 'admin') {
callback()
return
}
if (value.length !== 4) {
callback(new Error('码输入错误'))
callback(new Error('验证码输入错误'))
} else {
callback()
}
@ -137,16 +133,11 @@
async sendSms () {
if (this.isVer) return;
if (this.loginForm.username && this.loginForm.password) {
if (this.loginForm.username) {
this.msgLoading = true;
try {
const { access_token } = (await login(this.loginForm))
const { mobile } = (await getInfo(access_token))
this.temp.mobile = mobile;
this.temp.token = access_token;
await sendSms({
mobile,
token: access_token
username: this.loginForm.username
})
this.isVer = true;
this.verTime = 60;
@ -167,7 +158,7 @@
}
} else {
this.$message({
message: '请输入登录名和密码',
message: '请输入登录名',
type: 'warning'
})
}
@ -187,13 +178,7 @@
async handleLogin() {
this.$refs.loginForm.validate(async(valid) => {
if (valid) {
if (this.loginForm.username !== 'admin') {
await checkSms({
mobile: this.temp.mobile,
token: this.temp.token,
code: this.loginForm.code
})
}
this.loading = true
this.$store.dispatch('user/login', this.loginForm).then(() => {

Loading…
Cancel
Save