已修改64个文件
已删除122个文件
已添加7个文件
| | |
| | | |
| | | # 金川接口 |
| | | # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8030' |
| | | VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' |
| | | # VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036' |
| | | #后端本地 |
| | | #VITE_APP_PUBLIC_REQUEST_API = 'http://192.168.0.105:8029' |
| | | VITE_APP_PUBLIC_REQUEST_API = 'http://192.168.0.200:8036' |
| | |
| | | /* |
| | | * @Author: hqs elkers@163.com |
| | | * @Date: 2024-05-06 09:59:48 |
| | | * @LastEditors: Liuyi candymxq888@outlook.com |
| | | * @LastEditTime: 2024-08-14 09:16:12 |
| | | * @FilePath: \RuoYi-Vue3\src\api\login.js |
| | | * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | */ |
| | | import {publicRequest} from '@/utils/request' |
| | | |
| | | // 登录方法 |
| | | export function login(data) { |
| | | return publicRequest( |
| | | { |
| | | return publicRequest({ |
| | | url: '/admin/user/login', |
| | | headers: { |
| | | isToken: false, |
| | | }, |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | headers: { isToken: false }, |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | export function userDetail() { |
| | | return { |
| | | get: (id) => { |
| | | return publicRequest({ |
| | | url: `/admin/user/detail?userId=${id}`, |
| | | |
| | | // 验证码 |
| | | export function register(uuid) { |
| | | return publicRequest({ |
| | | url: `/admin/user/generate?uuid=${uuid}`, |
| | | method: 'get', |
| | | }); |
| | | }, |
| | | setPsw: (data) => { |
| | | return publicRequest({ |
| | | url: '/admin/user/changePassword', |
| | | method: 'post', |
| | | data |
| | | }); |
| | | }, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 获取本地ip |
| | | export function getIp() { |
| | | return publicRequest({ |
| | | url: 'admin/user/getIpAddress', |
| | | method: 'get', |
| | | }); |
| | | } |
| | |
| | | }) |
| | | }, |
| | | //删除菜单 |
| | | remove:(id) =>{ |
| | | remove:(menuId) =>{ |
| | | return publicRequest({ |
| | | url: `/admin/menu/remove?menuId=${id}`, |
| | | url: `/admin/menu/remove/${menuId}`, |
| | | method: 'post', |
| | | }) |
| | | }, |
| | |
| | | |
| | | // 分页组件 |
| | | import Pagination from '@/components/Pagination' |
| | | // 自定义表格工具组件 |
| | | import RightToolbar from '@/components/RightToolbar' |
| | | // 富文本组件 |
| | | import Editor from "@/components/Editor" |
| | | // 文件上传组件 |
| | | import FileUpload from "@/components/FileUpload" |
| | | // 图片上传组件 |
| | | import ImageUpload from "@/components/ImageUpload" |
| | | // 图片预览组件 |
| | | import ImagePreview from "@/components/ImagePreview" |
| | | // 自定义树选择组件 |
| | | import TreeSelect from '@/components/TreeSelect' |
| | | // 字典标签组件 |
| | | import DictTag from '@/components/DictTag' |
| | | //Echarts图表 |
| | | import EchartsArea from '@/components/EchartsArea' |
| | | |
| | | //自定义文件上传 |
| | | import UploadFile from "@/components/UploadFile" |
| | | //多张图片上传 |
| | | import UploadIcons from "@/components/UploadIcons" |
| | | |
| | | |
| | | //数据持久化 |
| | |
| | | app.config.globalProperties.handleTree = handleTree |
| | | app.config.globalProperties.addDateRange = addDateRange |
| | | app.config.globalProperties.selectDictLabel = selectDictLabel |
| | | app.config.globalProperties.selectDictLabels = selectDictLabels |
| | | app.config.globalProperties.selectDictLabels = selectDictLabels |
| | | |
| | | // 全局组件挂载 |
| | | app.component('EchartsArea', EchartsArea) |
| | | app.component('DictTag', DictTag) |
| | | app.component('Pagination', Pagination) |
| | | app.component('TreeSelect', TreeSelect) |
| | | app.component('FileUpload', FileUpload) |
| | | app.component('UploadFile', UploadFile) |
| | | app.component('UploadIcons', UploadIcons) |
| | | app.component('ImageUpload', ImageUpload) |
| | | app.component('ImagePreview', ImagePreview) |
| | | app.component('RightToolbar', RightToolbar) |
| | | app.component('Editor', Editor) |
| | | |
| | | |
| | | import { addActiveRoute } from '@/utils/index' |
| | |
| | | */ |
| | | import { createWebHashHistory, createRouter } from 'vue-router' |
| | | /* Layout */ |
| | | import Layout from '@/layout' |
| | | import Screen from '@/screen' |
| | | import Flow from '@/screen/flow.vue' |
| | | import Temp from '@/screen/temp.vue' |
| | | |
| | | /** |
| | | * Note: 路由配置项 |
| | |
| | | // 公共路由 |
| | | export const constantRoutes = [ |
| | | { |
| | | path: '/redirect', |
| | | component: Layout, |
| | | hidden: true, |
| | | children: [ |
| | | { |
| | | path: '/redirect/:path(.*)', |
| | | component: () => import('@/views/redirect/index.vue') |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | path: '/', |
| | | component: Layout, |
| | | redirect: '/user', |
| | | children: [ |
| | | { |
| | | path: '/userCenter', |
| | | component: () => import('@/views/userCenter.vue'), |
| | | name: 'userCenter', |
| | | meta: { title: '个人中心', icon: 'PhUserCircleFill', affix: true } |
| | | }, |
| | | ] |
| | | hidden: true, |
| | | redirect: '/user' |
| | | }, |
| | | { |
| | | path: '/login', |
| | | component: () => import('@/views/login'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/screen', |
| | | component: Screen, |
| | | redirect: '/overview', |
| | | children: [ |
| | | { |
| | | path: '/overview', |
| | | component: () => import('@/views/screen/overView/index'), |
| | | name: 'overview', |
| | | meta: { title: '总览'} |
| | | }, |
| | | { |
| | | path: '/irrigate', |
| | | component: () => import('@/views/screen/irrigate/index'), |
| | | name: 'irrigate', |
| | | meta: { title: '智慧灌溉'} |
| | | }, |
| | | { |
| | | path: '/revenue', |
| | | component: () => import('@/views/screen/revenue/index'), |
| | | name: 'revenue', |
| | | meta: { title: '营收管理'} |
| | | }, |
| | | { |
| | | path: '/facility-screen', |
| | | component: () => import('@/views/screen/facility/index'), |
| | | name: 'facility', |
| | | meta: { title: '设备管理'} |
| | | }, |
| | | { |
| | | path: '/statistics', |
| | | component: () => import('@/views/screen/statistics/index'), |
| | | name: 'statistics', |
| | | meta: { title: '统计分析'} |
| | | }, |
| | | { |
| | | path: '/alarm-screen', |
| | | component: () => import('@/views/screen/alarm/index'), |
| | | name: 'alarm', |
| | | meta: { title: '报警管理'} |
| | | }, |
| | | { |
| | | path: '/reports', |
| | | component: () => import('@/views/screen/reports/index'), |
| | | name: 'pump', |
| | | meta: { title: '泵站控制'} |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | path: "/:pathMatch(.*)*", |
| | |
| | | component: () => import('@/views/error/401'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/screen', |
| | | component: Screen, |
| | | hidden: true |
| | | } |
| | | ] |
| | | |
| | | // 流量大屏路由 |
| | | const FlowScreenRouter = [ |
| | | { |
| | | path: '/flow', |
| | | component: Flow, |
| | | redirect: '/flow/home', |
| | | children: [ |
| | | { |
| | | path: 'home', |
| | | component: () => import('@/views/screen/flow/home/index.vue') |
| | | } |
| | | ] |
| | | }, |
| | | ] |
| | | |
| | | // 温度大屏路由 |
| | | const TempScreenRouter = [ |
| | | { |
| | | path: '/temp', |
| | | component: Temp, |
| | | redirect: '/temp/home', |
| | | children: [ |
| | | { |
| | | path: 'home', |
| | | component: () => import('@/views/screen/temperature/home/index.vue') |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | |
| | | // 动态路由,基于用户权限动态去加载 |
| | |
| | | |
| | | const router = createRouter({ |
| | | history: createWebHashHistory(), |
| | | routes: constantRoutes, |
| | | routes: [...constantRoutes, ...FlowScreenRouter, ...TempScreenRouter], |
| | | scrollBehavior(to, from, savedPosition) { |
| | | if (savedPosition) { |
| | | return savedPosition |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="header"> |
| | | <div class="top">金川水电站生态流量监测系统 </div> |
| | | <div class="nav"> |
| | | <div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="content"> |
| | | <router-view></router-view> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import{ useRouter,useRoute } from 'vue-router' |
| | | |
| | | const router = useRouter() |
| | | const route = ref(useRoute()) |
| | | const btnList = ref([ |
| | | {name:'总览',url:'/flow/home'}, |
| | | {name:'生态流量',url:''}, |
| | | {name:'图像监测', url:''}, |
| | | {name:'设备管理',url:''}, |
| | | {name:'报警管理',url:''}, |
| | | {name:'报表管理',url:''}, |
| | | {name:'系统管理',url:'/user'}, |
| | | ]) |
| | | const navTo = (item) =>{ |
| | | router.push(item.url) |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .main{ |
| | | width: 100%; |
| | | height: 100%; |
| | | .header{ |
| | | width: 100%; |
| | | height: 14%; |
| | | .top{ |
| | | height: 60%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 38px; |
| | | font-weight: 700; |
| | | color: #fff; |
| | | } |
| | | .nav{ |
| | | display: flex; |
| | | height: 40%; |
| | | .plain{ |
| | | flex-grow: 1; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border: 1px solid #fff; |
| | | background-color: rgba(23, 108, 229, 0.3); |
| | | color: #fff; |
| | | font-size: 22px; |
| | | cursor: pointer; |
| | | } |
| | | .active{ |
| | | background-color: #91BDDB; |
| | | } |
| | | } |
| | | } |
| | | .content{ |
| | | width: 100%; |
| | | height: 86%; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="header"> |
| | | <div class="top"> |
| | | <div class="title">金川水电站生态流量监测系统</div> |
| | | <div class="time"> |
| | | <span>{{ nowTime.date }}</span> |
| | | <span>{{ nowTime.time }}</span> |
| | | </div> |
| | | <div class="user-image"> |
| | | <div> |
| | | <img src="../assets/images/screen/userImg.png" alt=""> |
| | | </div> |
| | | <div class="loginOut"> |
| | | <el-dropdown trigger="click"> |
| | | <img src="../assets/images/screen/loginOut.png" alt=""> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item> |
| | | <span @click="toUserDetail" >个人中心</span> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item divided> |
| | | <span @click="loginOut">退出登录</span> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | </div> |
| | | </div> |
| | | <div class="left-icon"><img src="../assets/images/screen/head-left.png" alt=""></div> |
| | | <div class="right-icon"><img src="../assets/images/screen/head-left.png" alt=""></div> |
| | | </div> |
| | | <div class="nav"> |
| | | <div class="nav-content"> |
| | | <div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="list"> |
| | | <router-link to="/temp" class="item">水温监测系统</router-link> |
| | | <router-link to="/flow" class="item">流量监测系统</router-link> |
| | | </div> |
| | | <div class="content"><router-view></router-view></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import{ useRouter,useRoute } from 'vue-router' |
| | | import {ElMessageBox} from "element-plus"; |
| | | import { removeToken } from '@/utils/auth' |
| | | |
| | | const router = useRouter() |
| | | const route = ref(useRoute()) |
| | | const loginOut = () =>{ |
| | | ElMessageBox.confirm('确定注销并退出系统吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then((e) => { |
| | | removeToken() |
| | | window.location.reload(); |
| | | |
| | | }).catch(() => { }); |
| | | } |
| | | const toUserDetail = () =>{ |
| | | router.push('/userCenter') |
| | | } |
| | | const btnList = ref([ |
| | | {name:'总览',url:'/overview'}, |
| | | {name:'生态流量',url:'/irrigate'}, |
| | | {name:'图像监测', url:'/dma'}, |
| | | {name:'设备管理',url:'/facility-screen'}, |
| | | {name:'报警管理',url:'/alarm-screen'}, |
| | | {name:'报表管理',url:'/reports'}, |
| | | {name:'系统管理',url:'/user'}, |
| | | ]) |
| | | const navTo = (item) =>{ |
| | | router.push(item.url) |
| | | } |
| | | //获取当前时间 |
| | | const nowTime = ref({}) |
| | | const now = new Date() |
| | | const getTime = (now) => { |
| | | // 获取年月日时分秒 |
| | | const year = now.getFullYear(); |
| | | const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的 |
| | | const day = String(now.getDate()).padStart(2, '0'); |
| | | const hours = String(now.getHours()).padStart(2, '0'); |
| | | const minutes = String(now.getMinutes()).padStart(2, '0'); |
| | | const seconds = String(now.getSeconds()).padStart(2, '0'); |
| | | |
| | | // 获取星期 |
| | | const weekdays = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]; |
| | | const weekday = weekdays[now.getDay()]; |
| | | |
| | | // 拼接成指定格式的字符串 |
| | | return nowTime.value = { |
| | | date:`${year}.${month}.${day} ${weekday}`, |
| | | time:`${hours}:${minutes}:${seconds}`, |
| | | } |
| | | } |
| | | getTime(now) |
| | | onMounted(()=>{ |
| | | setInterval(()=>{ |
| | | nowTime.value = getTime(new Date()) |
| | | },1000) |
| | | }) |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .main{ |
| | | background-image:url("../assets/images/screen/bcg.png"); |
| | | background-size: 100% 100%; |
| | | <style scoped lang="scss"> |
| | | .container{ |
| | | width: 100%; |
| | | height: 100%; |
| | | .header{ |
| | | width: 100%; |
| | | height: 14%; |
| | | .top{ |
| | | position: relative; |
| | | width: 100%; |
| | | height: 82px; |
| | | background-image: url("../assets/images/screen/head.png"); |
| | | background-size: 100% 100%; |
| | | .title{ |
| | | width: 916px; |
| | | height: 39px; |
| | | position: absolute; |
| | | left:calc(50% - 458px); |
| | | text-align: center; |
| | | font-weight: normal; |
| | | font-size: 36px; |
| | | color: #F9FBFF; |
| | | line-height: 70px; |
| | | letter-spacing: 9px; |
| | | text-shadow:0 0 3px rgba(255,255,255,0.7); |
| | | } |
| | | .time{ |
| | | position: absolute; |
| | | width: 200px; |
| | | top:5px; |
| | | left:26px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | line-height: 23px; |
| | | span{ |
| | | font-weight: 400; |
| | | font-size: 16px; |
| | | color: #83D9F3; |
| | | } |
| | | span:last-child{ |
| | | text-shadow:0 0 2px rgba(255,255,255,0.6); |
| | | } |
| | | } |
| | | .user-image{ |
| | | position: absolute; |
| | | width: 55px; |
| | | height:30px; |
| | | top:5px; |
| | | right:26px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .loginOut img{ |
| | | margin-top: 4px; |
| | | width:14px; |
| | | height:8px; |
| | | } |
| | | } |
| | | .left-icon{ |
| | | position: absolute; |
| | | top: 50%; |
| | | img{ |
| | | width: 452px; |
| | | height: 30px; |
| | | } |
| | | } |
| | | .right-icon{ |
| | | position: absolute; |
| | | top: 50%; |
| | | right: 0; |
| | | img{ |
| | | width: 459px; |
| | | height: 30px; |
| | | transform: scaleX(-1); |
| | | } |
| | | } |
| | | } |
| | | .nav{ |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | .nav-content{ |
| | | width: 1758px; |
| | | height: 50px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | font-weight: 400; |
| | | font-size: 17px; |
| | | color: #FFFFFF; |
| | | line-height: 50px; |
| | | .plain{ |
| | | width: 181px; |
| | | height: 50px; |
| | | background-image: url("../assets/images/screen/btnbg.png"); |
| | | text-align: center; |
| | | } |
| | | .active{ |
| | | background-image: url("../assets/images/screen/btnbg-active.png"); |
| | | } |
| | | } |
| | | padding: 100px; |
| | | .list{ |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 30px; |
| | | } |
| | | .content{ |
| | | width: 100%; |
| | | height: 86%; |
| | | .item{ |
| | | width: 300px; |
| | | height: 150px; |
| | | text-align: center; |
| | | line-height: 150px; |
| | | font-size: 28px; |
| | | color: #fff; |
| | | background-color: #1ab394; |
| | | box-shadow: 0 0 10px #1ab394; |
| | | border-radius: 10px; |
| | | } |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="header"> |
| | | <div class="top">金川水电站生态流量监测系统 </div> |
| | | <div class="nav"> |
| | | <div v-for="(item,index) in btnList" :key="index" @click="navTo(item)" class="plain" :class="item.url === route.path ? 'active' : ''">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="content"> |
| | | <router-view></router-view> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import{ useRouter,useRoute } from 'vue-router' |
| | | |
| | | const router = useRouter() |
| | | const route = ref(useRoute()) |
| | | const btnList = ref([ |
| | | {name:'总览',url:'/temp/home'}, |
| | | {name:'设备管理',url:''}, |
| | | {name:'实时监测', url:''}, |
| | | {name:'图形分析',url:''}, |
| | | {name:'汇总统计',url:''}, |
| | | {name:'报表管理',url:''}, |
| | | {name:'系统管理',url:'/user'}, |
| | | ]) |
| | | const navTo = (item) =>{ |
| | | router.push(item.url) |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .main{ |
| | | width: 100%; |
| | | height: 100%; |
| | | .header{ |
| | | width: 100%; |
| | | height: 14%; |
| | | .top{ |
| | | height: 60%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 38px; |
| | | font-weight: 700; |
| | | color: #fff; |
| | | } |
| | | .nav{ |
| | | display: flex; |
| | | height: 40%; |
| | | .plain{ |
| | | flex-grow: 1; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border: 1px solid #fff; |
| | | background-color: rgba(23, 108, 229, 0.3); |
| | | color: #fff; |
| | | font-size: 22px; |
| | | cursor: pointer; |
| | | } |
| | | .active{ |
| | | background-color: #91BDDB; |
| | | } |
| | | } |
| | | } |
| | | .content{ |
| | | width: 100%; |
| | | height: 86%; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | /** |
| | | * 是否系统布局配置 |
| | | */ |
| | | showSettings: true, |
| | | showSettings: false, |
| | | |
| | | /** |
| | | * 是否显示顶部导航 |
| | |
| | | actions: { |
| | | // 登录 |
| | | login(userInfo) { |
| | | const userName = userInfo.userName.trim() |
| | | const password = userInfo.password |
| | | // const code = userInfo.code |
| | | // const uuid = userInfo.uuid |
| | | return new Promise((resolve, reject) => { |
| | | login(userName, password).then(res => { |
| | | login(userInfo).then(res => { |
| | | |
| | | setToken(res.data.token) |
| | | this.token = res.token |
| | |
| | | |
| | | <script setup name="Menu"> |
| | | import alarmDefinition from "@/api/configuration/alarmDefinition/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup> |
| | | import alarmHistoryApi from "@/api/alarmApi/alarmHistory"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import user from "@/api/system/user.js"; |
| | | import waterMeterApi from "@/api/waterMeterApi/index.js"; |
| | | import {sysDictData} from "@/api/system/dict.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | import{ useRoute } from 'vue-router' |
| | | |
| | | const {proxy} = getCurrentInstance(); |
| | |
| | | |
| | | |
| | | const getFacilityList = async () => { |
| | | await facilityApi().search({limit: 10000, page: 1}).then((res) => { |
| | | await facilityApi().search({limit: 100, page: 1}).then((res) => { |
| | | console.log("设备列表" + res.data.list); |
| | | facilityList.value = res.data.list |
| | | }) |
| | | } |
| | | const getInformUserList = async () => { |
| | | await user().search({limit: 10000, page: 1}).then((res) => { |
| | | await user().search({limit: 100, page: 1}).then((res) => { |
| | | console.log("通知人员列表" + res.data.list); |
| | | informUserList.value = res.data.list |
| | | }) |
| | |
| | | |
| | | <script setup name="Menu"> |
| | | import commonParameters from "@/api/configuration/commonParameters/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <script setup name="Menu"> |
| | | import companySetting from "@/api/configuration/companySetting"; |
| | | import { sysDictData } from "@/api/system/dict"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <script setup name="Menu"> |
| | | import defaultAmountSetting from "@/api/configuration/defaultAmountSetting"; |
| | | import userClassify from "@/api/configuration/userClassify"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import invoiceTitle from "@/api/configuration/invoiceTitle"; |
| | | import { sysDictData } from "@/api/system/dict"; |
| | | import user from "@/api/system/user"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import { region } from "@/api/basicApi"; |
| | | import user from "@/api/system/user"; |
| | | import { PREURL } from "@/config/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup name="Menu"> |
| | | import userClassify from "@/api/configuration/userClassify"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <script setup name="Menu"> |
| | | import waterOtherFee from "@/api/configuration/waterOtherFee"; |
| | | import userClassify from "@/api/configuration/userClassify"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup name="Menu"> |
| | | import TieredCharging from "@/api/configuration/waterPrice"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <script setup> |
| | | import archivesApi from "@/api/archivesApi/index"; |
| | | import {areaApi} from "@/api/area/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <div class="bullshit__info"> |
| | | 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 |
| | | </div> |
| | | <router-link to="/index" class="bullshit__return-home"> |
| | | <router-link to="/" class="bullshit__return-home"> |
| | | 返回首页 |
| | | </router-link> |
| | | </div> |
| | |
| | | import {region} from "@/api/basicApi/index.js"; |
| | | import { onMounted } from "vue"; |
| | | import user from "@/api/system/user.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | const loading = ref(true); //加载状态 |
| | |
| | | const getUserList = async() =>{ |
| | | |
| | | loading.value = true; |
| | | let res = await user().search({limit:1000,page:1}) |
| | | let res = await user().search({limit:100,page:1}) |
| | | if(res.code == 200) { |
| | | loading.value = false; |
| | | areaUserList.value = res.data.list |
| | |
| | | <script setup> |
| | | import collectorApi from "@/api/facility/collector"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | import commonParameters from "@/api/configuration/commonParameters/index.js"; |
| | | import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; |
| | | import {PREURL} from '@/config/index' |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const route = useRoute(); |
| | | const preUrl = ref(PREURL); |
| | | const {proxy} = getCurrentInstance(); |
| | |
| | | |
| | | <script setup name="Menu"> |
| | | import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | --> |
| | | <script setup> |
| | | import facilityTypeApi from "@/api/facility/facilityType"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const route = useRoute(); |
| | | const { proxy } = getCurrentInstance(); |
| | |
| | | --> |
| | | <script setup> |
| | | import recordApi from "@/api/facility/record.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | <script setup> |
| | | import supplierApi from "@/api/waterMeterApi/supplier"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | import commonParameters from "@/api/configuration/commonParameters/index.js"; |
| | | import waterFacilityParameter from "@/api/configuration/facilityParameter/index.js"; |
| | | import {PREURL} from '@/config/index' |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const route = useRoute(); |
| | | const preUrl = ref(PREURL); |
| | | const {proxy} = getCurrentInstance(); |
| | |
| | | //查询监控点 |
| | | const areaList = ref(); |
| | | const getArea = async () => { |
| | | await areaApi().search({limit: 10000, page: 1}).then((res) => { |
| | | await areaApi().search({limit: 100, page: 1}).then((res) => { |
| | | areaList.value = res.data.list |
| | | }) |
| | | } |
| | |
| | | //查询供应商 |
| | | const supplierList = ref(); |
| | | const getSupplier = async () => { |
| | | await supplierApi().search({limit: 10000, page: 1}).then((res) => { |
| | | await supplierApi().search({limit: 100, page: 1}).then((res) => { |
| | | console.log("供应商" + res.data.list); |
| | | supplierList.value = res.data.list |
| | | }) |
| | |
| | | |
| | | <script setup name="Post"> |
| | | import { facilityExaminePlanApi } from "@/api/examine/plan/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | import user from "@/api/system/user"; |
| | | import {sysDictData} from "../../../api/system/dict.js"; |
| | | import facilityApi from "../../../api/facility/index.js"; |
| | |
| | | <script setup name="Post"> |
| | | import {facilityExamineRecordApi} from "@/api/examine/record/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | import facilityApi from "@/api/facility/index.js"; |
| | | const {proxy} = getCurrentInstance(); |
| | | /** |
| | |
| | | <script setup > |
| | | import {facilityMaintainRecordApi} from "@/api/maintain/record/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const {proxy} = getCurrentInstance(); |
| | | /** |
| | |
| | | import TieredCharging from "@/api/configuration/waterPrice"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import archivesApi from "@/api/archivesApi/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | /** |
| | | * 搜索相关 |
| | |
| | | import invoice from "@/api/financial/invoice"; |
| | | import { sysDictData } from "@/api/system/dict"; |
| | | import user from "@/api/system/user"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup > |
| | | import payRecord from "@/api/financial/payRecord"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup > |
| | | import payable from "@/api/financial/payable"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import recharge from "@/api/financial/recharge"; |
| | | import archivesApi from "@/api/archivesApi"; |
| | | import { sysDictData} from "@/api/system/dict"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup > |
| | | import payable from "@/api/financial/payable"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | import tradeRecord from "../../../api/financial/tradeRecord/index.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | <script setup > |
| | | import userBankAccount from "@/api/financial/userBankAccount"; |
| | | import user from "@/api/system/user"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | <script setup > |
| | | import userCapitalChange from "@/api/financial/userCapitalChange"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | /** |
| | | * 搜索相关 |
| | |
| | | import TieredCharging from "@/api/configuration/waterPrice"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import archivesApi from "@/api/archivesApi/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | import waterMeterTask from "@/api/financial/waterMeterTask/index.js"; |
| | | |
| | | /** |
| | |
| | | <template> |
| | | <div class="login"> |
| | | <div class="login-bcg1"></div> |
| | | <div class="contain"> |
| | | <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> |
| | | <h3 class="title">金川水电站生态流量监测系统</h3> |
| | | <el-form-item label="账 号" prop="userName"> |
| | | <el-input |
| | | style="height: 45px;" |
| | | v-model="loginForm.userName" |
| | | type="text" |
| | | auto-complete="off" |
| | | placeholder="账号" |
| | | > |
| | | <!-- <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> --> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="密 码" prop="password"> |
| | | <el-input |
| | | style="height: 45px;" |
| | | v-model="loginForm.password" |
| | | :type="isPassword" |
| | | size="large" |
| | | auto-complete="off" |
| | | placeholder="密码" |
| | | @keyup.enter="handleLogin" |
| | | > |
| | | <template #suffix> |
| | | <div @click="showPassword"><svg-icon :icon-class="eyeView"/></div> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-checkbox class="check-box" v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> |
| | | <el-form-item > |
| | | <el-button |
| | | :loading="loading" |
| | | size="large" |
| | | type="primary" |
| | | style="width:100%;" |
| | | @click.prevent="handleLogin" |
| | | > |
| | | <span v-if="!loading">登 录</span> |
| | | <span v-else>登 录 中...</span> |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <img src="../assets/images/login/login_icon.png"/> |
| | | <div class="login"> |
| | | <div class="login-bcg1"></div> |
| | | <div class="contain"> |
| | | <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form" |
| | | @keydown.enter="handleLogin"> |
| | | <h3 class="title">金川水电站生态流量监测系统</h3> |
| | | <el-form-item label="账号" prop="userName"> |
| | | <el-input |
| | | style="height: 45px;" |
| | | v-model="loginForm.userName" |
| | | type="text" |
| | | auto-complete="off" |
| | | placeholder="账号" |
| | | > |
| | | <!-- <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template> --> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="密码" prop="password"> |
| | | <el-input |
| | | style="height: 45px;" |
| | | v-model="loginForm.password" |
| | | :type="isPassword" |
| | | size="large" |
| | | auto-complete="off" |
| | | placeholder="密码" |
| | | > |
| | | <template #suffix> |
| | | <div @click="showPassword"> |
| | | <svg-icon :icon-class="eyeView"/> |
| | | </div> |
| | | </template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="验证码" prop="code"> |
| | | <div class="yzm-box"> |
| | | <el-input |
| | | style="height: 45px;" |
| | | v-model="loginForm.code" |
| | | size="large" |
| | | auto-complete="off" |
| | | placeholder="验证码" |
| | | > |
| | | </el-input> |
| | | <div class="yzm" @click="resetCode"> |
| | | <img v-if="codeUrl" :src="codeUrl" alt=""/> |
| | | <div v-else class="code-none">无法加载</div> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-checkbox class="check-box" v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;"> |
| | | 记住密码 |
| | | </el-checkbox> |
| | | <el-form-item> |
| | | <el-button |
| | | :loading="loading" |
| | | size="large" |
| | | type="primary" |
| | | style="width:100%;" |
| | | @click.prevent="handleLogin" |
| | | > |
| | | <span v-if="!loading">登 录</span> |
| | | <span v-else>登 录 中...</span> |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <img class="left-img" src="../assets/images/login/login_icon.png"/> |
| | | </div> |
| | | <!-- 底部 --> |
| | | <div class="footer"> |
| | | <span>苏州伦晗电子有限公司.</span> |
| | | </div> |
| | | </div> |
| | | <!-- 底部 --> |
| | | <div class="footer"> |
| | | <span>苏州伦晗电子有限公司.</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | // import { getCodeImg } from "@/api/login"; |
| | | import {onMounted} from 'vue'; |
| | | import Cookies from "js-cookie"; |
| | | import { encrypt, decrypt } from "@/utils/jsencrypt"; |
| | | import {encrypt, decrypt} from "@/utils/jsencrypt"; |
| | | import useUserStore from '@/store/modules/user'; |
| | | import usePermissionStore from '@/store/modules/permission'; |
| | | import { addActiveRoute } from '@/utils/index'; |
| | | import { setToken } from '@/utils/auth'; |
| | | import { useRouter, useRoute } from 'vue-router'; |
| | | import { login } from '@/api/login'; |
| | | import {addActiveRoute} from '@/utils/index'; |
| | | import {setToken} from '@/utils/auth'; |
| | | import {useRouter, useRoute} from 'vue-router'; |
| | | import {login, register, getIp} from '@/api/login'; |
| | | |
| | | const userStore = useUserStore() |
| | | const permissionStore = usePermissionStore() |
| | | const route = useRoute(); |
| | | const router = useRouter(); |
| | | const { proxy } = getCurrentInstance(); |
| | | const {proxy} = getCurrentInstance(); |
| | | const isPassword = ref('password'); |
| | | const eyeView = ref('eye') |
| | | |
| | | const showPassword = () =>{ |
| | | if(eyeView.value === 'eye'){ |
| | | const showPassword = () => { |
| | | if (eyeView.value === 'eye') { |
| | | eyeView.value = 'eye-open' |
| | | isPassword.value = 'text' |
| | | }else if(eyeView.value === 'eye-open'){ |
| | | } else if (eyeView.value === 'eye-open') { |
| | | eyeView.value = 'eye' |
| | | isPassword.value = 'password' |
| | | } |
| | | } |
| | | const loginForm = ref({ |
| | | userName: "", |
| | | password: "", |
| | | rememberMe: false |
| | | const loginForm = reactive({ |
| | | userName: "", |
| | | password: "", |
| | | code: '', |
| | | uuid: '', |
| | | machineCode: '', |
| | | rememberMe: false |
| | | }); |
| | | const codeUrl = ref(''); |
| | | const loginRules = { |
| | | userName: [{ required: true, trigger: "blur", message: "请输入您的账号" }], |
| | | password: [{ required: true, trigger: "blur", message: "请输入您的密码" }], |
| | | userName: [{required: true, trigger: "blur", message: "请输入您的账号"}], |
| | | password: [{required: true, trigger: "blur", message: "请输入您的密码"}], |
| | | code: [{required: true, trigger: "blur", message: "请输入您的验证码"}], |
| | | }; |
| | | const loading = ref(false); |
| | | const redirect = ref(undefined); |
| | | |
| | | watch(route, (newRoute) => { |
| | | redirect.value = newRoute.query && newRoute.query.redirect; |
| | | }, { immediate: true }); |
| | | }, {immediate: true}); |
| | | |
| | | /** |
| | | * 生成随机字符串uuid |
| | | * @param length 字符串的长度,默认11 |
| | | * @returns {string} |
| | | */ |
| | | function generateRandomString(length = 11) { |
| | | let charset = 'abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; |
| | | let values = new Uint32Array(length); |
| | | window.crypto.getRandomValues(values); |
| | | let str = ''; |
| | | for (let i = 0; i < length; i++) { |
| | | str += charset[values[i] % charset.length]; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 获取验证码 |
| | | */ |
| | | async function resetCode() { |
| | | loginForm.uuid = generateRandomString(11); |
| | | register(loginForm.uuid).then(res => { |
| | | codeUrl.value = res.data |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 获取电脑标识 |
| | | */ |
| | | async function getConputerId() { |
| | | const res = await getIp(); |
| | | loginForm.machineCode = res.data; |
| | | } |
| | | |
| | | //根据moduleCode获取相对应菜单 |
| | | const filterTreeMenus = (menus, userType) => { |
| | | let filteredMenu = []; |
| | | for (let item of menus) { |
| | | let filteredMenu = []; |
| | | for (let item of menus) { |
| | | filteredMenu.push(item); |
| | | if (item.children && item.children.length > 0) { |
| | | let filteredChildren = filterTreeMenus(item.children, userType); |
| | | if (filteredChildren.length > 0) { |
| | | item.children = filteredChildren; |
| | | } else { |
| | | delete item.children; |
| | | } |
| | | } |
| | | } |
| | | return filteredMenu; |
| | | if (item.children && item.children.length > 0) { |
| | | let filteredChildren = filterTreeMenus(item.children, userType); |
| | | if (filteredChildren.length > 0) { |
| | | item.children = filteredChildren; |
| | | } else { |
| | | delete item.children; |
| | | } |
| | | } |
| | | } |
| | | return filteredMenu; |
| | | } |
| | | |
| | | function handleLogin() { |
| | | proxy.$refs.loginRef.validate(valid => { |
| | | if (valid) { |
| | | loading.value = true; |
| | | proxy.$refs.loginRef.validate(valid => { |
| | | if (valid) { |
| | | loading.value = true; |
| | | |
| | | //记住密码 |
| | | if (loginForm.value.rememberMe) { |
| | | Cookies.set("userName", loginForm.value.userName, { expires: 30 }); |
| | | Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 }); |
| | | Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 }); |
| | | } else { |
| | | //移除 |
| | | Cookies.remove("userName"); |
| | | Cookies.remove("password"); |
| | | Cookies.remove("rememberMe"); |
| | | } |
| | | const userInfo = { |
| | | userName:loginForm.value.userName.trim(), |
| | | password: loginForm.value.password |
| | | } |
| | | login(userInfo).then(async(res) => { |
| | | loading.value = false; |
| | | setToken(res.data.token) |
| | | |
| | | //普通管理员筛除菜单、权限、数据字典,普通用户筛除系统管理 |
| | | if(res.data.userType == 2){ |
| | | res.data.menus.forEach((item,index) =>{ |
| | | if(item.id == '10001'){ |
| | | item.children.forEach((itemChild,childIndex) =>{ |
| | | if(itemChild.id == '10101' || itemChild.id == '10102' || itemChild.id == '1822894922704416770'){ |
| | | item.children.splice(childIndex,1) |
| | | } |
| | | }) |
| | | } |
| | | //记住密码 |
| | | if (loginForm.rememberMe) { |
| | | Cookies.set("userName", loginForm.userName, {expires: 30}); |
| | | Cookies.set("password", encrypt(loginForm.password), {expires: 30}); |
| | | Cookies.set("rememberMe", loginForm.rememberMe, {expires: 30}); |
| | | } else { |
| | | //移除 |
| | | Cookies.remove("userName"); |
| | | Cookies.remove("password"); |
| | | Cookies.remove("rememberMe"); |
| | | } |
| | | const userInfo = { |
| | | userName: loginForm.userName.trim(), |
| | | password: loginForm.password, |
| | | code: loginForm.code, |
| | | uuid: loginForm.uuid, |
| | | machineCode: loginForm.machineCode, |
| | | } |
| | | login(userInfo).then(async (res) => { |
| | | loading.value = false; |
| | | setToken(res.data.token) |
| | | |
| | | //普通管理员筛除菜单、权限、数据字典,普通用户筛除系统管理 |
| | | if (res.data.userType == 2) { |
| | | res.data.menus.forEach((item, index) => { |
| | | if (item.id == '10001') { |
| | | item.children.forEach((itemChild, childIndex) => { |
| | | if (itemChild.id == '10101' || itemChild.id == '10102' || itemChild.id == '1822894922704416770') { |
| | | item.children.splice(childIndex, 1) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } else if (res.data.userType == 3) { |
| | | res.data.menus.forEach((item, index) => { |
| | | if (item.id == '10001') { |
| | | res.data.menus.splice(index, 1) |
| | | } |
| | | }) |
| | | } |
| | | console.log(123123, res.data.menus) |
| | | let filteredMenus = filterTreeMenus(res.data.menus, 1) |
| | | console.log('filterTreeMenus菜单权限过滤', filteredMenus) |
| | | |
| | | permissionStore.setSidebarRouters(filteredMenus); |
| | | console.log('setSidebarRouters配置菜单路由项数据', permissionStore.sidebarRouters) |
| | | |
| | | addActiveRoute(permissionStore, router) |
| | | |
| | | localStorage.setItem('listPermission', JSON.stringify(res.data.listPermission)) |
| | | localStorage.setItem('id', JSON.stringify(res.data.id)) |
| | | localStorage.setItem('userType', JSON.stringify(res.data.userType)) |
| | | |
| | | router.push("/screen");//overview |
| | | }).catch(error => { |
| | | loading.value = false; |
| | | proxy.$modal.msgError('登录失败!') |
| | | }) |
| | | }else if(res.data.userType == 3){ |
| | | res.data.menus.forEach((item,index) =>{ |
| | | if(item.id == '10001'){ |
| | | res.data.menus.splice(index,1) |
| | | } |
| | | }) |
| | | } |
| | | console.log(123123,res.data.menus) |
| | | let filteredMenus = filterTreeMenus(res.data.menus, 1) |
| | | console.log('filterTreeMenus菜单权限过滤',filteredMenus) |
| | | |
| | | permissionStore.setSidebarRouters(filteredMenus); |
| | | console.log('setSidebarRouters配置菜单路由项数据', permissionStore.sidebarRouters) |
| | | |
| | | addActiveRoute(permissionStore, router) |
| | | |
| | | localStorage.setItem('listPermission',JSON.stringify(res.data.listPermission)) |
| | | localStorage.setItem('id',JSON.stringify(res.data.id)) |
| | | localStorage.setItem('userType',JSON.stringify(res.data.userType)) |
| | | |
| | | router.push("/user");//overview |
| | | }).catch(error => { |
| | | loading.value = false; |
| | | proxy.$modal.msgError('登录失败!') |
| | | }) |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function getCookie() { |
| | | const userName = Cookies.get("userName"); |
| | | const password = Cookies.get("password"); |
| | | const rememberMe = Cookies.get("rememberMe"); |
| | | loginForm.value = { |
| | | userName: userName === undefined ? loginForm.value.userName : userName, |
| | | password: password === undefined ? loginForm.value.password : decrypt(password), |
| | | rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) |
| | | }; |
| | | const userName = Cookies.get("userName"); |
| | | const password = Cookies.get("password"); |
| | | const rememberMe = Cookies.get("rememberMe"); |
| | | loginForm.userName = userName === undefined ? loginForm.userName : userName; |
| | | loginForm.password = password === undefined ? loginForm.password : password; |
| | | loginForm.rememberMe = rememberMe === undefined ? loginForm.rememberMe : rememberMe; |
| | | } |
| | | getCookie(); |
| | | |
| | | onMounted(() => { |
| | | getCookie(); |
| | | resetCode(); |
| | | getConputerId() |
| | | }) |
| | | </script> |
| | | |
| | | <style lang='scss' scoped> |
| | | |
| | | .login{ |
| | | position: relative; |
| | | .login { |
| | | position: relative; |
| | | // justify-content: center; |
| | | // align-items: center; |
| | | width: 100%; |
| | | height: 100%; |
| | | background-image: url("../assets/images/login/login_bcg.png"); |
| | | background-size: 100% 100%; |
| | | .login-bcg1{ |
| | | position: absolute; |
| | | height: 100%; |
| | | width:100%; |
| | | background-image: url("../assets/images/login/login_bcg1.png"); |
| | | background-size: 100% 100%; |
| | | } |
| | | .contain{ |
| | | position: absolute; |
| | | background-color: rgba(239, 245, 254, 0.75); |
| | | border-radius: 26px; |
| | | width: 76%; |
| | | height: 85%; |
| | | top: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | margin: auto; |
| | | } |
| | | img{ |
| | | position: absolute; |
| | | width:44%; |
| | | height: 62%; |
| | | top: 16%; |
| | | left:-4%; |
| | | } |
| | | .login-form { |
| | | position: absolute; |
| | | width: 38%; |
| | | height:75%; |
| | | right:5%; |
| | | top:10%; |
| | | border-radius: 10px; |
| | | background: #ffffff; |
| | | padding: 25px; |
| | | box-shadow: 0 0 10px 4px #c4d4f7; |
| | | |
| | | .title { |
| | | font-size: 40px; |
| | | margin: 10px 30px 100px; |
| | | text-align: center; |
| | | color: #000000; |
| | | .login-bcg1 { |
| | | position: absolute; |
| | | height: 100%; |
| | | width: 100%; |
| | | background-image: url("../assets/images/login/login_bcg1.png"); |
| | | background-size: 100% 100%; |
| | | } |
| | | .el-form-item{ |
| | | margin: 40px auto 20px; |
| | | width: 85%; |
| | | :deep(.el-form-item__label){ |
| | | line-height: 45px; |
| | | font-size: large; |
| | | font-weight: 500; |
| | | } |
| | | .el-button{ |
| | | height: 50px; |
| | | |
| | | .contain { |
| | | position: absolute; |
| | | background-color: rgba(239, 245, 254, 0.75); |
| | | border-radius: 26px; |
| | | width: 76%; |
| | | height: 85%; |
| | | top: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | margin: auto; |
| | | } |
| | | |
| | | .left-img { |
| | | position: absolute; |
| | | width: 44%; |
| | | height: 62%; |
| | | top: 16%; |
| | | left: -4%; |
| | | } |
| | | |
| | | .login-form { |
| | | position: absolute; |
| | | width: 42%; |
| | | height: 80%; |
| | | right: 5%; |
| | | top: 10%; |
| | | border-radius: 10px; |
| | | background: #ffffff; |
| | | padding: 25px; |
| | | box-shadow: 0 0 10px 4px #c4d4f7; |
| | | |
| | | .title { |
| | | font-size: 40px; |
| | | margin: 10px 20px 70px; |
| | | text-align: center; |
| | | color: #000000; |
| | | } |
| | | } |
| | | .check-box{ |
| | | width: 85%; |
| | | left: 50%; |
| | | transform:translate(-50%) ; |
| | | } |
| | | .el-form-item { |
| | | margin: 30px auto; |
| | | width: 85%; |
| | | |
| | | .yzm-box{ |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | :deep(.el-input){ |
| | | width: 60%; |
| | | } |
| | | .yzm{ |
| | | width: 35%; |
| | | display: flex; |
| | | align-items: center; |
| | | img{ |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | :deep(.el-form-item__label) { |
| | | line-height: 45px; |
| | | font-size: large; |
| | | font-weight: 500; |
| | | width: 80px; |
| | | } |
| | | |
| | | .el-button { |
| | | height: 50px; |
| | | } |
| | | } |
| | | |
| | | .check-box { |
| | | width: 85%; |
| | | left: 50%; |
| | | transform: translate(-50%); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .footer { |
| | | height: 40px; |
| | | line-height: 40px; |
| | | position: fixed; |
| | | bottom: 0; |
| | | width: 100%; |
| | | text-align: center; |
| | | color: #fff; |
| | | font-family: Arial; |
| | | font-size: 12px; |
| | | letter-spacing: 1px; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | position: fixed; |
| | | bottom: 0; |
| | | width: 100%; |
| | | text-align: center; |
| | | color: #fff; |
| | | font-family: Arial; |
| | | font-size: 12px; |
| | | letter-spacing: 1px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | |
| | | <script setup> |
| | | import meterReadingRecordApi from "@/api/meterReadingApi/meterReadingRecord"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const {proxy} = getCurrentInstance(); |
| | | |
| | |
| | | |
| | | <script setup> |
| | | import meterReadingRecordApi from "@/api/meterReadingApi/meterReadingRecord"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import {longitudeReg, latitudeReg} from "@/utils/regular"; |
| | | import {ref} from "vue"; |
| | | import {region} from "@/api/basicApi/index.js"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const route = useRoute(); |
| | | const {proxy} = getCurrentInstance(); |
对比新文件 |
| | |
| | | <template> |
| | | <div class="home"> |
| | | <div class="home-bg"></div> |
| | | <div class="home-c"> |
| | | <div class="point"> |
| | | <div class="point-address"></div> |
| | | <div class="point-message"> |
| | | <div class="video-box"> |
| | | <el-icon><VideoPlay /></el-icon> |
| | | </div> |
| | | <div class="info-box"> |
| | | <div class="info-t">水电站流量监测点</div> |
| | | <div class="info-sw">水位:<span>500</span>m</div> |
| | | <div class="info-ls">流速:<span>15</span>m/s</div> |
| | | <div class="info-ssls">瞬时流速:<span>150</span>m/s</div> |
| | | <div class="info-ljll"> |
| | | 累计流量: |
| | | <el-select |
| | | v-model="selectll" |
| | | class="m-2" |
| | | placeholder="Select" |
| | | size="small" |
| | | style="width: 240px" |
| | | > |
| | | <el-option |
| | | v-for="(item, idx) in liuliangOptions" |
| | | :key="idx" |
| | | :label="item.label" |
| | | :value="idx" |
| | | /> |
| | | </el-select> |
| | | <span>{{ liuliangOptions[selectll].value }}</span>m/s |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <script setup> |
| | | |
| | | import {ref} from "vue"; |
| | | |
| | | const selectll = ref(0) |
| | | |
| | | const liuliangOptions = [ |
| | | { label: '总计流量', value: 500 }, |
| | | { label: '日累计流量', value: 1000 }, |
| | | { label: '周累计流量', value: 10000 }, |
| | | { label: '月累计流量', value: 300000 }, |
| | | { label: '年累计流量', value: 3600000 }, |
| | | ] |
| | | |
| | | </script> |
| | | |
| | | |
| | | <style scoped lang="scss"> |
| | | .home{ |
| | | height: 100%; |
| | | .home-bg{ |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: url("@/assets/images/map-bg.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | z-index: -1; |
| | | } |
| | | .home-c{ |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | | .point{ |
| | | position: absolute; |
| | | left: 58%; |
| | | top: 30%; |
| | | .point-address{ |
| | | width: 35px; |
| | | height: 40px; |
| | | background: url("@/assets/images/point.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .point-message{ |
| | | width: 600px; |
| | | height: 200px; |
| | | background: url("@/assets/images/messageInfo-box.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | position: absolute; |
| | | left: -600px; |
| | | top: -100px; |
| | | padding: 30px 50px 30px 30px; |
| | | color: #fff; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 20px; |
| | | .video-box{ |
| | | flex-shrink: 0; |
| | | width: 200px; |
| | | height: 138px; |
| | | line-height: 138px; |
| | | text-align: center; |
| | | font-size: 38px; |
| | | background: #cccb40; |
| | | } |
| | | .info-box{ |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .info-t{ |
| | | font-size: 20px; |
| | | } |
| | | .info-ljll{ |
| | | display: flex; |
| | | align-items: center; |
| | | :deep(.el-select){ |
| | | width: 100px !important; |
| | | .el-select__wrapper{ |
| | | color: #fff; |
| | | background: transparent; |
| | | .el-select__selected-item{ |
| | | color: #fff; |
| | | } |
| | | .el-select__suffix .el-icon{ |
| | | color: #fff; |
| | | } |
| | | &:hover{ |
| | | box-shadow: none; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | span{ |
| | | display: inline-block; |
| | | padding: 0 10px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="home"> |
| | | <div class="home-bg"></div> |
| | | <div class="home-c"> |
| | | <div class="point"> |
| | | <div class="point-address"></div> |
| | | <div class="point-message"> |
| | | <div class="msg-t">电站尾水出口水温监测点</div> |
| | | <div class="num"> |
| | | <div class="item"> |
| | | <div class="item-t">水温:</div> |
| | | <div class="item-num"><span>10</span>°C</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="item-t">水位:</div> |
| | | <div class="item-num"><span>1000</span>m</div> |
| | | </div> |
| | | </div> |
| | | <div class="shebei"> |
| | | 监测设备: <span>监测设备运行正常(点击跳转)</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | |
| | | <style scoped lang="scss"> |
| | | .home{ |
| | | height: 100%; |
| | | .home-bg{ |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: url("@/assets/images/map-bg.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | z-index: -1; |
| | | } |
| | | .home-c{ |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | | .point{ |
| | | position: absolute; |
| | | left: 58%; |
| | | bottom: 10%; |
| | | .point-address{ |
| | | width: 35px; |
| | | height: 40px; |
| | | background: url("@/assets/images/point.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .point-message{ |
| | | width: 500px; |
| | | height: 200px; |
| | | background: url("@/assets/images/messageInfo-box.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | position: absolute; |
| | | left: -500px; |
| | | top: -100px; |
| | | padding: 30px 50px; |
| | | color: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .msg-t{ |
| | | font-size: 26px; |
| | | font-weight: bold; |
| | | } |
| | | .num{ |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 50px; |
| | | .item{ |
| | | display: flex; |
| | | align-items: center; |
| | | span{ |
| | | display: inline-block; |
| | | padding: 0 30px; |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | } |
| | | .shebei{ |
| | | span{ |
| | | color: #1ab394; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <script setup name="Post"> |
| | | import { sysDictType,sysDictData} from "@/api/system/dict"; |
| | | import { onMounted } from "vue"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | const loading = ref(true); //加载状态 |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="sort" label="排序"></el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" :fixed="right"> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
| | | <template #default="scope"> |
| | | <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" |
| | | v-has="['update',route]">修改 |
| | |
| | | async function getList(val) { |
| | | loading.value = true; |
| | | if (val) { |
| | | val.limit = 10000 |
| | | val.limit = 100 |
| | | } else { |
| | | val = {limit: 10000} |
| | | val = {limit: 100} |
| | | } |
| | | await menu().get(val).then((res) => { |
| | | menuList.value = proxy.handleTree(res.data.list, "id"); |
| | |
| | | import permission from "@/api/system/permission"; |
| | | import { DictType } from "@/api/system/dict"; |
| | | import menu from "@/api/system/menu"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import menu from "@/api/system/menu"; |
| | | import permission from "@/api/system/permission"; |
| | | import { useRoute } from "vue-router"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | let route = useRoute() |
| | |
| | | menuTreeListLength.value = countTreeNodes(menuTreeList.value) |
| | | |
| | | }) |
| | | await permission().search({limit:10000}).then((res) =>{ |
| | | await permission().search({limit:100}).then((res) =>{ |
| | | permissionList.value = res.data.list |
| | | }) |
| | | } |
| | |
| | | import { PREURL } from "@/config/index"; |
| | | import userClassify from "@/api/configuration/userClassify"; |
| | | import { sysDictData } from "@/api/system/dict"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | |
| | | //获取用户角色列表 |
| | | const getUserRole = async() =>{ |
| | | await role().search({limit:1000,page:1}).then((res) =>{ |
| | | await role().search({limit:100,page:1}).then((res) =>{ |
| | | roleSelectList.value = res.data.list |
| | | }) |
| | | } |
| | |
| | | <script setup> |
| | | import meterOperationApi from "@/api/waterMeterApi/meterOperation"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | <script setup> |
| | | import supplierApi from "@/api/waterMeterApi/supplier"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | import useWaterMeterApi from "@/api/waterMeterApi/useWaterMeter"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import {useRoute} from "vue-router"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const route = useRoute() |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | <script setup> |
| | | import verificationApi from "@/api/waterMeterApi/verification"; |
| | | import { nameReg ,phoneReg } from "@/utils/regular"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | |
| | | <script setup> |
| | | import waterModelApi from "@/api/waterMeterApi/waterModel"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | const {proxy} = getCurrentInstance(); |
| | | |
| | |
| | | import { ElMessage } from 'element-plus' |
| | | // import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import meterConstructionApi from '@/api/workOrderManage/meterConstructionApi/index'; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | // import billRecord from "@/api/financial/billRecord/index"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | import TieredCharging from "@/api/configuration/waterPrice"; |
| | | import {waterMeterAlterationApi} from '@/api/workOrderManage/waterMeterAlterationApi'; |
| | | import {PREURL} from '@/config/index'; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | //定义table数据 |
| | | const queryParams = ref({ |
| | |
| | | import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import { waterMeterChangeApi } from '@/api/workOrderManage/waterMeterChangeApi/index'; |
| | | import billRecord from "@/api/financial/billRecord/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import { waterMeterCloseAccountApi } from '@/api/workOrderManage/waterMeterCloseAccountApi/index'; |
| | | import billRecord from "@/api/financial/billRecord/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import { ElMessage } from 'element-plus' |
| | | // import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import { waterMeterMaintainRecordsApi } from '@/api/workOrderManage/waterMeterMaintainRecordsApi/index'; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | // import billRecord from "@/api/financial/billRecord/index"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | |
| | | import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import { waterMeterRepairApi } from '@/api/workOrderManage/waterMeterRepairApi'; |
| | | import { onMounted, reactive, ref } from 'vue' |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | //定义table数据 |
| | | const queryParams = ref({ |
| | | name: undefined, |
| | |
| | | import waterMeterApi from "@/api/waterMeterApi/index"; |
| | | import { waterMeterStopAccountApi } from '@/api/workOrderManage/waterMeterStopAccountApi/index'; |
| | | import billRecord from "@/api/financial/billRecord/index"; |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | /** |
| | |
| | | import accountApply from '@/views/workOrderManage/accountApply/index.vue' |
| | | import { waterMeterApplyApi } from '@/api/workOrderManage/waterMeterApplyApi/index' |
| | | import { ElMessage } from 'element-plus' |
| | | import setPostParams from "../../../utils/searchParams.js"; |
| | | import setPostParams from "@/utils/searchParams.js"; |
| | | |
| | | //定义变量内容 |
| | | const queryParams = ref({ |
| | |
| | | /* |
| | | * @Author: elkers dmhe0357 |
| | | * @Date: 2024-10-02 12:49:11 |
| | | * @LastEditors: Liuyi candymxq888@outlook.com |
| | | * @LastEditTime: 2024-11-09 09:44:02 |
| | | * @FilePath: \water-qinghe-web\vite.config.js |
| | | * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | */ |
| | | import { defineConfig, loadEnv } from 'vite' |
| | | import path from 'path' |
| | | import createVitePlugins from './vite/plugins' |