接口调用

This commit is contained in:
13218645326 2023-12-09 20:41:49 +08:00
parent 1f693138cf
commit 1ed8c71127
10 changed files with 297 additions and 255 deletions

1
env/.env.dev vendored
View File

@ -6,3 +6,4 @@ VITE_BUILD_MODE = 'dev'
VITE_API_URL = '/proxyApi' VITE_API_URL = '/proxyApi'
VITE_proxyTarget = 'http://10.40.92.16:9206' VITE_proxyTarget = 'http://10.40.92.16:9206'
# 9502 9206

View File

@ -1,4 +1,4 @@
import { post, get, detele } from '../index' import { post, get, detele,put } from '../index'
// 下架列表 // 下架列表
export const apiOffList = (data: any) => { export const apiOffList = (data: any) => {
@ -10,7 +10,12 @@ export const apiUpOffList = (data: any) => {
return post('/off/upOffList', data) return post('/off/upOffList', data)
} }
// 下架列表 // 详情
export const apiSelectInfo = (params: any) => { export const apiSelectInfo = (params: any) => {
return post(`/off/selectInfo`, params) return get(`/off/selectInfo`, params)
}
// 下架列表
export const apiOff = (params: any) => {
return post(`/off/edit`, params)
} }

View File

@ -1,6 +1,7 @@
import { post } from '../index' import { post } from '../index'
// 登录接口 // 登录接口
export const apiLogin = (data: any) => {
export const loginApi = (data: any) => {
return post('/zlpt-auth/login', data) return post('/zlpt-auth/login', data)
} }

View File

@ -2,7 +2,7 @@ export const useStore = defineStore('main', {
state: () => { state: () => {
return { return {
loadingFlag: false, //loading控制, loadingFlag: false, //loading控制,
token: 'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjFlMTk2Y2FmLWYyYjctNGI4Yi04OTZlLWNhMWJhMjIyMTQ2MyIsInVzZXJuYW1lIjoiYWRtaW4ifQ.5LLmWOPOJEAvIhtHKeSpFndcWyseQBmYUfyxLpUudguUSnb75lu8XNwfieM4sHut891GVXUNapK_TQePdmmT-g' token: "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjAxNTJmM2FjLTg5YzAtNDEyOS05YzhkLTgxM2RmMDAyYjE5MiIsInVzZXJuYW1lIjoiYWRtaW4ifQ.nbXUxyWEUJRvnBL2q0S7ROcvRCVbCnd2xn7A5nPmlYeEvGoFlM17I2e7iscDusqvSpQK5rE9ENQ8N0BWGllrYw"
} }
}, },
getters: {}, getters: {},

View File

@ -3,3 +3,4 @@
@import './common.module.scss'; @import './common.module.scss';
@import './nprogress.scss'; @import './nprogress.scss';
@import './common.scss'; @import './common.scss';
@import '../css/reset.css';

View File

@ -1,184 +1,136 @@
<template>
<div class="page_login">
<div class="top_title">
<div class="top_logo">
<img src="/src/assets/img/loginIcon.png" alt="">
</div>
<div class="gap_line"></div>
<div class="top_title_text">
南方电网机具租赁共享平台
</div>
</div>
<div class="login_container">
<div class="login_title">
登录
</div>
<el-form :model="loginForm" ref="ruleFormRef" :rules="formRules">
<el-form-item prop="username">
<el-input v-model.trim="loginForm.username" placeholder="请输入账号" clearable>
<template #prepend>
<img class="pre_icon" src="/src/assets/img/userIcon.png" />
</template>
</el-input>
</el-form-item>
<el-form-item name="phone" prop="password">
<el-input v-model.trim="loginForm.password" placeholder="请输入密码" clearable>
<template #prepend>
<img class="pre_icon" src="/src/assets/img/passwordIcon.png" />
<!-- 8 数字字母下划线 -->
</template>
</el-input>
</el-form-item>
</el-form>
<el-button type="primary" class="loginBtn" @click="handleLoginFn">
立即登陆
</el-button>
</div>
</div>
</template>
<script setup lang="ts"> <script setup lang="ts">
import type { FormInstance, FormRules } from 'element-plus' import { loginApi } from 'http/api/myInfo'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { apiLogin } from "http/api/myInfo" import { useRouter } from 'vue-router'
const ruleFormRef: any = ref() import { useStore } from 'store/main'
const loginForm = reactive({ const userStore = useStore()
username: "", const router = useRouter()
password: "" const loginForm = ref({
username: '',
password: ''
}) })
const formRules = reactive<FormRules<any>>({ const handlerLogin = async () => {
username: [ const res: any = await loginApi(loginForm.value)
{ required: true, message: '请输入账号', trigger: 'blur' } console.log( '登录成功**',res)
], if (res.code === 200) {
password: [ ElMessage({
{ required: true, message: '请输入密码', trigger: 'blur' } showClose: true,
] message: '登录成功',
type: 'success'
}) })
const handleLoginFn = () => {
if (!ruleFormRef) return
ruleFormRef.value.validate(async (valid: any) => {
if (valid) {
const res: any = await apiLogin(loginForm)
console.log('res===', res)
} else {
console.log('error submit!')
return false
} }
}) userStore.setToken(res.data.access_token)
//
router.push('/home')
} }
</script> </script>
<style scoped lang="scss"> <template>
$loginColor: "#002F7B"; <div class="login-container">
<div class="login-form">
<h3>机具租赁共享平台</h3>
.login_container { <div class="form-container">
width: 792px; <div class="login-type">
height: 545px; <div class="active">账号登录</div>
background-color: #fff; <div>手机登录</div>
padding: 0 113px; </div>
box-sizing: border-box;
box-shadow: -1px 4px 17px 2px rgba(216, 218, 224, 0.5);
border-radius: 12px;
}
.page_login { <el-form>
width: 100vw; <el-form-item>
<el-input v-model="loginForm.username" placeholder="账号" clearable />
</el-form-item>
<el-form-item>
<el-input
v-model="loginForm.password"
placeholder="密码"
clearable
type="password"
show-password />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handlerLogin"> </el-button>
</el-form-item>
<el-form-item class="forget-password">
<a href="">忘记密码</a>
<a href="">立即注册</a>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<style lang="scss">
.login-container {
height: 100vh; height: 100vh;
background-color: #fff; background-color: #125ab6;
background-image: url('../../assets/img/loginBg1.png');
background-repeat: no-repeat;
display: flex; display: flex;
align-items: center;
justify-content: center; justify-content: center;
align-items: center; .login-form {
flex-direction: column; width: 500px;
position: relative; height: 360px;
background-size: cover;
}
.top_title {
position: absolute;
left: 54px;
top: 32px;
display: flex; display: flex;
justify-content: flex-start; flex-direction: column;
align-items: center;
position: absolute;
left: 0;
top: 0;
.top_logo { h3 {
width: 201px; color: #fff;
height: 128px; font-size: 18px;
}
.top_title_text {
color: #01357A;
font-size: 34px;
font-weight: bold; font-weight: bold;
border-left: 1px solid #01357A;
padding-left: 20px;
}
}
:deep(.el-input-group__prepend) {
background-color: #fff;
border-color: #fff;
box-shadow: none;
}
:deep(.el-input__wrapper) {
box-shadow: none !important;
border: none !important;
.el-input__inner {
height: 85px;
font-size: 28px;
}
}
.pre_icon {
width: 30px;
.el-form-item__error {
left: 120px !important;
}
height: 30px;
}
:deep(.el-form-item__error) {
left: 80px !important;
}
.loginBtn {
display: block;
width: 100%;
height: 73px;
background-color: #002F7B;
font-size: 28px;
border-radius: 4px;
margin-top: 62px;
}
.login_title {
font-size: 32px;
font-weight: bold;
padding: 32px 0 52px;
text-align: center; text-align: center;
color: #01357a; margin-bottom: 30px;
} }
.form-container {
flex: 1;
display: flex;
flex-direction: column;
background-color: #c7dff4;
border-radius: 5px;
.login-type {
height: 40px;
margin-bottom: 40px;
display: flex;
color: #333;
div {
flex: 1;
height: 40px;
text-align: center;
line-height: 40px;
&:hover {
cursor: pointer;
}
}
:deep(.login_container) { .active {
.el-form-item.is-error .el-input__wrapper { color: #3498db;
box-shadow: none !important; border-bottom: 1px solid #3498db;
border: none !important; }
}
.el-form {
padding: 0 50px;
.el-input {
height: 37px;
}
.el-button {
width: 100%;
height: 37px;
}
.forget-password {
margin-bottom: 0;
}
.forget-password .el-form-item__content {
display: flex;
align-items: center;
justify-content: space-between;
}
}
}
} }
} }
</style> </style>

View File

@ -1,6 +1,7 @@
<template> <template>
<el-dialog v-model="addShow" :title="title" width="1200px" draggable :close-on-click-modal="false"> <el-dialog v-model="addShow" :title="title" width="1200px" draggable :close-on-click-modal="false">
<el-form :model="form" ref="ruleFormRef" :inline="true" label-width="102px" :rules="formRules" style="padding: 0 80px 0px 0;"> <el-form :model="form" ref="ruleFormRef" :inline="true" label-width="106px" :rules="formRules"
style="padding: 0 0px 0px 0;">
<el-form-item label="企业名称:" prop="enterprise"> <el-form-item label="企业名称:" prop="enterprise">
{{ form.companyName }} {{ form.companyName }}
</el-form-item> </el-form-item>
@ -39,10 +40,10 @@
{{ form.isOperator }} {{ form.isOperator }}
</el-form-item> </el-form-item>
<el-form-item label="检验信息:" prop="isEnable"> <el-form-item label="检验信息:" prop="isEnable">
{{ form.inspectImageUrl}} <el-button type="text" @click="attachFn(form.inspectImageUrl)">{{ form.inspectImageName }}</el-button>
</el-form-item> </el-form-item>
<el-form-item label="保险信息:" prop="enterprise"> <el-form-item label="保险信息:" prop="enterprise">
{{ form.insureImageUrl}} <el-button type="text" @click="attachFn(form.insureImageUrl)">{{ form.insureImageName }}</el-button>
</el-form-item> </el-form-item>
<el-form-item label="工作时长:" prop="enterprise"> <el-form-item label="工作时长:" prop="enterprise">
{{ form.workingHours }} {{ form.workingHours }}
@ -50,12 +51,16 @@
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer" v-if="isAudit">
<el-button @click="cancelFn">取消</el-button> <el-button type="primary" @click="approveFn">通过</el-button>
<el-button type="primary" @click="publishFn"> <el-button type="danger" @click="rejectFn">
保存 驳回
</el-button> </el-button>
</span> </span>
<span class="dialog-footer" v-else>
<el-button type="primary" @click="addShow = false">关闭</el-button>
</span>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
@ -64,15 +69,17 @@
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { apiSelectInfo } from "http/api/equip"
import { apiSelectInfo, apiOff } from "http/api/equip"
import { ElMessageBoxOpert } from 'utils/elementCom'
const emits = defineEmits(['send']) const emits = defineEmits(['send'])
const addShow = ref(false) const addShow = ref(false)
let title = ref("审批详情") let title = ref("审批详情")
const ruleFormRef: any = ref() const ruleFormRef: any = ref()
const form = reactive({ const isAudit = ref(false)
enterprise: '', const form: any = reactive({
isEnable: ''
}) })
// const validatorLink = (rule: any, value: any, callback: any) => { // const validatorLink = (rule: any, value: any, callback: any) => {
// if (linkReg.test(value)) { // if (linkReg.test(value)) {
@ -89,56 +96,97 @@ const formRules = reactive<FormRules<any>>({
}) })
const publishFn = () => { const rejectCallBack = async (row: any, value: any) => {
if (!ruleFormRef) return console.log('editCallBack', row, value)
ruleFormRef.value.validate((valid: any) => { const params = [{
if (valid) { maId: form.maId,
if (form.linkUrl && linkReg.test(form.linkUrl)) { id: form.creator,
applyCompany: form.companyName,
type: "1",
status: '1'
}
]
const res = await apiOff(params)
console.log("apiOff", res)
ElMessage({ ElMessage({
type: 'warning', type: 'success',
message: "请输入正确格式的跳转链接" message: "驳回成功"
}) })
}
console.log('submit!')
} else {
console.log('error submit!')
return false
}
})
}
const cancelFn = (formEl: FormInstance | undefined) => {
if (!ruleFormRef) return
ruleFormRef.value.resetFields()
addShow.value=false addShow.value=false
emits("send")
} }
const beforeChange = (ev: any) => {
return new Promise((resolve, reject) => {
resolve(true)
})
const rejectFn = () => {
ElMessageBoxOpert(
'驳回原因',
'填写驳回原因',
'确定',
'取消',
(val: any) => {
if (!val) {
return '请填写类型模板'
}
},
'请填写类型模板',
rejectCallBack,
"row",
'textarea',
'dangerC'
)
}
const approveFn = async () => {
const params = [
{
maId: form.maId,
id: form.creator,
applyCompany: form.companyName,
type: "1",
status: '1'
}
]
const res = await apiOff(params)
console.log("apiOff", res)
ElMessage({
type: 'success',
message: "审批成功"
})
addShow.value=false
emits("send")
} }
const initData = async (val: any) => { const initData = async (val: any) => {
const params = { const params = {
ids:val.maId+"" ids: val.maId
} }
const res = await apiSelectInfo(params) const res: any = await apiSelectInfo(params)
console.log("res=apiSelectInfo", res) console.log("res=apiSelectInfo", res)
Object.assign(form, res.data[0])
} }
const open = (val: any) => { const open = (val: any) => {
console.log("openopenopen", val) console.log("openopenopen", val)
addShow.value = true addShow.value = true
isAudit.value = false
initData(val) initData(val)
} }
const edit = () => { const edit = (val: any) => {
isAudit.value = true
addShow.value = true addShow.value = true
initData(val)
}
const attachFn = (url: any) => {
if (!url) {
return
}
window.open(url, "_blank")
} }
defineExpose({ defineExpose({
open, open,
edit edit
@ -146,4 +194,15 @@ defineExpose({
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
:deep(.el-form-item__content) {
width: 246px;
white-space: wrap;
}
</style>
<style>
.dangerC {
background-color: #F56C6C !important;
border: #F56C6C;
}
</style>

View File

@ -25,7 +25,7 @@
</el-form-item> </el-form-item>
<el-form-item > <el-form-item >
<el-button type="primary" :disabled="props.selectItemList.length==0" @click="auditBatchFn">批量审批</el-button> <el-button type="primary" :disabled="props.selectItemList.length==0" @click="auditBatchFn">批量审批</el-button>
<el-button type="primary" :disabled="props.selectItemList.length==0" @click="deleteBatchFn">批量下架</el-button> <!-- <el-button type="primary" :disabled="props.selectItemList.length==0" @click="deleteBatchFn">批量下架</el-button> -->
<el-button type="primary" @click="exportFn">导出</el-button> <el-button type="primary" @click="exportFn">导出</el-button>
</el-form-item> </el-form-item>

View File

@ -1,6 +1,6 @@
<template> <template>
<headerTop @search="searchFn" @reset="resetFn" @export="exportFn" @deleteBatch="deleteBatchFn" @auditBatch="auditBatchFn" :selectItemList="selectItemList"></headerTop> <headerTop @search="searchFn" @reset="resetFn" @export="exportFn" @deleteBatch="deleteBatchFn" @auditBatch="auditBatchFn" :selectItemList="selectItemList"></headerTop>
<addCom ref="addComRef"></addCom> <addCom ref="addComRef" @send="initTableList"></addCom>
<el-card shadow="always" class="content_body_row"> <el-card shadow="always" class="content_body_row">
<el-table :data="tableListInfo.list" border style="width: 100%" show-overflow-tooltip <el-table :data="tableListInfo.list" border style="width: 100%" show-overflow-tooltip
:max-height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 88px)'" :max-height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 88px)'"
@ -28,20 +28,24 @@
</el-table-column> </el-table-column>
<el-table-column label="状态" min-width="160"> <el-table-column label="状态" min-width="160">
<template #default="scope"> <template #default="scope">
<div class="todo_status_c" v-if="scope.row.v_status=='15'"> <div class="todo_status_c" v-if="scope.row.maStatus=='15'">
待上架审批 待上架
</div> </div>
<div class="pass_status_c" v-else-if="scope.row.v_status=='16'"> <div class="pass_status_c" v-else-if="scope.row.maStatus=='16'">
待租 待租
</div> </div>
<div class="pass_status_c" v-else-if="scope.row.v_status=='17'"> <div class="pass_status_c" v-else-if="scope.row.maStatus=='17'">
在租 在租
</div> </div>
<div class="reject_status_c" v-else-if="scope.row.v_status=='18'"> <div class="reject_status_c" v-else-if="scope.row.maStatus=='18'">
下架 下架
</div> </div>
<div class="pass_status_c" v-else-if="scope.row.v_status=='43'"> <div class="pass_status_c" v-else-if="scope.row.maStatus=='331'">
自有 待审批
</div>
<div class="pass_status_c" v-else-if="scope.row.maStatus=='332'">
上架驳回
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -54,14 +58,14 @@
<el-button type="primary" size="small" @click.prevent="showFn(scope.row)"> <el-button type="primary" size="small" @click.prevent="showFn(scope.row)">
查看 查看
</el-button> </el-button>
<el-button type="danger" size="small" @click.prevent="deleteRowFn(scope.row)"> <!-- <el-button type="danger" size="small" @click.prevent="deleteRowFn(scope.row)">
下架 下架
</el-button> </el-button> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="paination_out"> <div class="paination_out">
<Pagination :currentPage="paginationInfo.currentPage" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn"> <Pagination :currentPage="paginationInfo.pageNum" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn">
</Pagination> </Pagination>
</div> </div>
</el-card> </el-card>
@ -122,7 +126,7 @@ const exportFn = (val:any) => {
} }
const auditFn = (row: any) => { const auditFn = (row: any) => {
addComRef.value.open(row) addComRef.value.edit(row)
} }
const showFn = (row: any) => { const showFn = (row: any) => {
addComRef.value.open(row) addComRef.value.open(row)
@ -158,6 +162,25 @@ const handleSelectionChange =(val:any)=>{
selectItemList.value=val selectItemList.value=val
} }
const deleteBatchFn =()=>{
const selectList = selectItemList.value
console.log("selectList",)
}
const auditBatchFn =()=>{
const selectList = selectItemList.value
ElConfirmBeforeOpert(
'操作确认',
'是否确定下架?',
batchFn,
'确定',
'取消',
selectList
)
}
const batchFn=(ev:any)=>{
}