接口调用

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_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) => {
@ -10,7 +10,12 @@ export const apiUpOffList = (data: any) => {
return post('/off/upOffList', data)
}
// 下架列表
// 详情
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'
// 登录接口
export const apiLogin = (data: any) => {
export const loginApi = (data: any) => {
return post('/zlpt-auth/login', data)
}

View File

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

View File

@ -2,4 +2,5 @@
@import './mixin.scss';
@import './common.module.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">
<script setup lang="ts">
import { loginApi } from 'http/api/myInfo'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
import { useStore } from 'store/main'
const userStore = useStore()
const router = useRouter()
const loginForm = ref({
username: '',
password: ''
})
<div class="login_title">
登录
const handlerLogin = async () => {
const res: any = await loginApi(loginForm.value)
console.log( '登录成功**',res)
if (res.code === 200) {
ElMessage({
showClose: true,
message: '登录成功',
type: 'success'
})
}
userStore.setToken(res.data.access_token)
//
router.push('/home')
}
</script>
<template>
<div class="login-container">
<div class="login-form">
<h3>机具租赁共享平台</h3>
<div class="form-container">
<div class="login-type">
<div class="active">账号登录</div>
<div>手机登录</div>
</div>
<el-form>
<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>
<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">
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import { apiLogin } from "http/api/myInfo"
const ruleFormRef: any = ref()
const loginForm = reactive({
username: "",
password: ""
})
<style lang="scss">
.login-container {
height: 100vh;
background-color: #125ab6;
display: flex;
align-items: center;
justify-content: center;
.login-form {
width: 500px;
height: 360px;
display: flex;
flex-direction: column;
const formRules = reactive<FormRules<any>>({
username: [
{ required: true, message: '请输入账号', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' }
]
})
h3 {
color: #fff;
font-size: 18px;
font-weight: bold;
text-align: center;
margin-bottom: 30px;
}
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
.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;
}
}
.active {
color: #3498db;
border-bottom: 1px solid #3498db;
}
}
.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;
}
}
}
}
})
}
</script>
<style scoped lang="scss">
$loginColor: "#002F7B";
.login_container {
width: 792px;
height: 545px;
background-color: #fff;
padding: 0 113px;
box-sizing: border-box;
box-shadow: -1px 4px 17px 2px rgba(216, 218, 224, 0.5);
border-radius: 12px;
}
.page_login {
width: 100vw;
height: 100vh;
background-color: #fff;
background-image: url('../../assets/img/loginBg1.png');
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
position: relative;
background-size: cover;
}
.top_title {
position: absolute;
left: 54px;
top: 32px;
display: flex;
justify-content: flex-start;
align-items: center;
position: absolute;
left: 0;
top: 0;
.top_logo {
width: 201px;
height: 128px;
}
.top_title_text {
color: #01357A;
font-size: 34px;
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;
color: #01357a;
}
:deep(.login_container) {
.el-form-item.is-error .el-input__wrapper {
box-shadow: none !important;
border: none !important;
}
}
</style>

View File

@ -1,61 +1,66 @@
<template>
<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-dialog v-model="addShow" :title="title" width="1200px" draggable :close-on-click-modal="false">
<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">
{{ form.companyName }}
{{ form.companyName }}
</el-form-item>
<el-form-item label="租赁范围:" prop="isEnable">
{{ form.leaseScope }}
{{ form.leaseScope }}
</el-form-item>
<el-form-item label="出场时间:" prop="enterprise">
{{ form.productionDate }}
{{ form.productionDate }}
</el-form-item>
<el-form-item label="装备名称:" prop="enterprise">
{{ form.devName }}
{{ form.devName }}
</el-form-item>
<el-form-item label="装备编号:" prop="isEnable">
{{ form.code }}
{{ form.code }}
</el-form-item>
<el-form-item label="装备类别:" prop="enterprise">
{{ form.parentDevType }}
{{ form.parentDevType }}
</el-form-item>
<el-form-item label="品牌:" prop="isEnable">
{{ form.brand }}
{{ form.brand }}
</el-form-item>
<el-form-item label="装备规格:" prop="enterprise">
{{ form.companyName }}
{{ form.companyName }}
</el-form-item>
<el-form-item label="装备位置:" prop="isEnable">
{{ form.specification }}
{{ form.specification }}
</el-form-item>
<el-form-item label="装备组别:" prop="enterprise">
{{ form.devTypeName }}
{{ form.devTypeName }}
</el-form-item>
<el-form-item label="租金:" prop="isEnable">
{{ form.monthLeasePrice}}
{{ form.monthLeasePrice }}
</el-form-item>
<el-form-item label="是否配备机手:" prop="enterprise">
{{ form.isOperator}}
{{ form.isOperator }}
</el-form-item>
<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 label="保险信息:" prop="enterprise">
{{ form.insureImageUrl}}
<el-button type="text" @click="attachFn(form.insureImageUrl)">{{ form.insureImageName }}</el-button>
</el-form-item>
<el-form-item label="工作时长:" prop="enterprise">
{{ form.workingHours}}
{{ form.workingHours }}
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancelFn">取消</el-button>
<el-button type="primary" @click="publishFn">
保存
<span class="dialog-footer" v-if="isAudit">
<el-button type="primary" @click="approveFn">通过</el-button>
<el-button type="danger" @click="rejectFn">
驳回
</el-button>
</span>
<span class="dialog-footer" v-else>
<el-button type="primary" @click="addShow = false">关闭</el-button>
</span>
</template>
</el-dialog>
</template>
@ -64,15 +69,17 @@
import type { FormInstance, FormRules } 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 addShow = ref(false)
let title = ref("审批详情")
const ruleFormRef: any = ref()
const form = reactive({
enterprise: '',
isEnable: ''
const isAudit = ref(false)
const form: any = reactive({
})
// const validatorLink = (rule: any, value: any, callback: any) => {
// if (linkReg.test(value)) {
@ -89,56 +96,97 @@ const formRules = reactive<FormRules<any>>({
})
const publishFn = () => {
if (!ruleFormRef) return
ruleFormRef.value.validate((valid: any) => {
if (valid) {
if (form.linkUrl && linkReg.test(form.linkUrl)) {
ElMessage({
type: 'warning',
message: "请输入正确格式的跳转链接"
})
}
console.log('submit!')
} else {
console.log('error submit!')
return false
const rejectCallBack = async (row: any, value: any) => {
console.log('editCallBack', row, value)
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 cancelFn = (formEl: FormInstance | undefined) => {
if (!ruleFormRef) return
ruleFormRef.value.resetFields()
addShow.value = false
const rejectFn = () => {
ElMessageBoxOpert(
'驳回原因',
'填写驳回原因',
'确定',
'取消',
(val: any) => {
if (!val) {
return '请填写类型模板'
}
},
'请填写类型模板',
rejectCallBack,
"row",
'textarea',
'dangerC'
)
}
const beforeChange = (ev: any) => {
return new Promise((resolve, reject) => {
resolve(true)
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 params= {
ids:val.maId+""
const initData = async (val: any) => {
const params = {
ids: val.maId
}
const res = await apiSelectInfo(params)
console.log("res=apiSelectInfo",res)
const res: any = await apiSelectInfo(params)
console.log("res=apiSelectInfo", res)
Object.assign(form, res.data[0])
}
const open = (val: any) => {
console.log("openopenopen",val)
console.log("openopenopen", val)
addShow.value = true
isAudit.value = false
initData(val)
}
const edit = () => {
const edit = (val: any) => {
isAudit.value = true
addShow.value = true
initData(val)
}
const attachFn = (url: any) => {
if (!url) {
return
}
window.open(url, "_blank")
}
defineExpose({
open,
edit
@ -146,4 +194,15 @@ defineExpose({
</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-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-form-item>

View File

@ -1,6 +1,6 @@
<template>
<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-table :data="tableListInfo.list" border style="width: 100%" show-overflow-tooltip
:max-height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 88px)'"
@ -28,20 +28,24 @@
</el-table-column>
<el-table-column label="状态" min-width="160">
<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 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 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 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 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>
</template>
</el-table-column>
@ -54,14 +58,14 @@
<el-button type="primary" size="small" @click.prevent="showFn(scope.row)">
查看
</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>
</el-table-column>
</el-table>
<div class="paination_out">
<Pagination :currentPage="paginationInfo.currentPage" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn">
<Pagination :currentPage="paginationInfo.pageNum" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn">
</Pagination>
</div>
</el-card>
@ -122,7 +126,7 @@ const exportFn = (val:any) => {
}
const auditFn = (row: any) => {
addComRef.value.open(row)
addComRef.value.edit(row)
}
const showFn = (row: any) => {
addComRef.value.open(row)
@ -158,6 +162,25 @@ const handleSelectionChange =(val:any)=>{
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)=>{
}

View File

@ -1,7 +1,7 @@
<template>
<el-card shadow="always" class="search_header_top_row1">
<el-form :inline="true" :model="filterForm" class="demo-form-inline">
<el-form :inline="true" :model="filterForm" class="demo-form-inline">
<!-- <el-form-item label="关键字">
<el-input v-model="filterForm.keyword" placeholder="请输入关键字" clearable />
</el-form-item> -->