Browse Source

巡视任务管理、生产设备录入、监测设备管理。国际化设置

dev
wangxingyuan 10 months ago
parent
commit
dddd95cd38
19 changed files with 1565 additions and 580 deletions
  1. +1
    -0
      package.json
  2. +42
    -0
      src/lang/en/administration.json
  3. +18
    -0
      src/lang/en/equipment/entry.json
  4. +30
    -0
      src/lang/en/equipment/equipment.json
  5. +56
    -0
      src/lang/en/index.js
  6. +30
    -0
      src/lang/index.js
  7. +42
    -0
      src/lang/zh/administration.json
  8. +18
    -0
      src/lang/zh/equipment/entry.json
  9. +30
    -0
      src/lang/zh/equipment/equipment.json
  10. +55
    -0
      src/lang/zh/index.js
  11. +96
    -57
      src/layout/components/Navbar.vue
  12. +189
    -128
      src/layout/components/Settings/index.vue
  13. +4
    -1
      src/main.js
  14. +1
    -0
      src/store/getters.js
  15. +13
    -5
      src/store/modules/app.js
  16. +386
    -123
      src/views/administration/administration.vue
  17. +207
    -122
      src/views/equipment/entry.vue
  18. +346
    -144
      src/views/equipment/equipment.vue
  19. +1
    -0
      src/views/login.vue

+ 1
- 0
package.json View File

@ -57,6 +57,7 @@
"vue": "2.6.12",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-i18n": "^8.2.1",
"vue-meta": "2.4.0",
"vue-router": "3.4.9",
"vue-video-player": "^5.0.1",


+ 42
- 0
src/lang/en/administration.json View File

@ -0,0 +1,42 @@
{
"ProjectName": "Project name",
"RegionName": "Region name",
"PlanValidityPeriod": "Plan validity period",
"TaskStrategy": "Task strategy",
"ExecutionTaskCycle": "Execution task cycle",
"ImmediateExecution": "Immediate execution",
"issue": "issue",
"ReplicationTask": "Replication task",
"SetPlanObject": "Set Plan Object",
"SelectInspectionObject": "Select inspection object",
"PointSetting": "Point setting",
"name": "name",
"priority": "priority",
"TaskType": "Task Type",
"TaskExecutionMethod": "Task execution method",
"InspectionArea": "Inspection area",
"executeCycle": "execute cycle",
"RegularExecution": "Regular execution",
"PeriodicExecution": "Periodic execution",
"IntervalExecution": "Interval execution",
"ExecutionDate": "Execution date",
"WalkThrough": "Walk Through",
"timeSetting": "time setting",
"SelectByWeek": "Select by week",
"MonthlySelection": "Monthly selection",
"date": "date",
"time": "time",
"interval": "interval",
"executionTime": "execution time",
"intervalType": "interval type",
"hour": "hour",
"quantity":"quantity",
"nextStep":"nextStep",
"PreviousStep":"Previous step",
"region":"region",
"ToBeAdded":"To be added",
"Added":"Added",
"IsItEnabled":"Is it enabled",
"CopyTask":"Copy task",
"Copy":"Copy"
}

+ 18
- 0
src/lang/en/equipment/entry.json View File

@ -0,0 +1,18 @@
{
"SearchForDeviceName": "Search for device name",
"RightSidePrompt": "Please select any node on the left to add or edit production equipment",
"EquipmentName": "Equipment name",
"DeviceType": "Device Type",
"EquipmentNumber": "Equipment number",
"EquipmentNumberPrompt": "The equipment number is used for production review and must be consistent with the equipment number in the SCADA system",
"DisplaySorting": "Display sorting",
"physicalObject": "physical object ID",
"MonitoringIndexNumber": "Monitoring index number",
"EquipmentModel": "Equipment model",
"EquipmentManufacturer": "Equipment manufacturer",
"coordinate": "coordinate",
"suggestion": "suggestion",
"MaximumValue": "Maximum value",
"minimumValue": "minimum value",
"save":"save"
}

+ 30
- 0
src/lang/en/equipment/equipment.json View File

@ -0,0 +1,30 @@
{
"DeviceType": "Device Type",
"EquipmentName": "Equipment name",
"EquipmentCode": "Equipment code",
"Manufacturer": "Manufacturer",
"ModelSynchronization": "Model synchronization",
"VideoNVREncoding": "Video NVR encoding",
"MainSystemNumber": "Main system number",
"SubstationName": "Substation name",
"SubstationCode": "Substation code",
"areaName": "area name",
"UnitOfUse": "Unit of use",
"EquipmentSource": "Equipment source",
"dateOfManufacture": "date of manufacture",
"factoryNumber": "factory number",
"IsItARotatingWheel": "Is it a rotating wheel",
"UseType": "Use type",
"InstallationPosition": "Installation position",
"RelativeSpatialPosition": "Relative spatial position",
"BelongingRobot": "Belonging robot",
"ipAddress": "ip address",
"port": "port",
"user": "user",
"password": "password",
"thoroughfare": "thoroughfare",
"uploadPictures":"upload pictures",
"EquipmentModel":"Equipment model",
"mainSystem":"main system",
"VideoType":"Video type"
}

+ 56
- 0
src/lang/en/index.js View File

@ -0,0 +1,56 @@
// en.js
import administration from './administration.json'
import entry from './equipment/entry.json';
import equipment from './equipment/equipment.json';
export default {
routerIl8n: {
homePage: 'homePage'
},
navBar: {
IndividualCenter: 'Individual center',
LayoutSetting: 'Layout setting',
LogOut: 'Log out',
},
settings: {
ThemeStyleSetting: 'Theme style setting',
ThemeColor: 'Theme color',
title: 'Page style setting',
onTopNav: 'On TopNav',
onTagsViews: 'On Tags-Views',
immobilizationHeader: 'immobilization Header',
revealLogo: 'reveal Logo',
DynamicHeading: 'Dynamic heading',
SaveConfiguration: 'Save configuration',
ResetConfiguration: 'Reset configuration',
},
share: {
search: 'search',
reset: 'reset',
new: 'new',
delete: 'delete',
edit: 'edit',
addTo: 'add to',
cancel: 'cancel',
confirm: 'confirm',
export:'export',
import:'import',
PleaseEnter: 'Please enter',
StartTime: 'Start time',
EndTime: 'End time',
On: 'On',
Off: 'Off',
status: 'status',
operate: 'operate',
CreationTime: "Creation time",
PleaseChoose: 'Please choose',
to: 'to',
content:'content',
Yes:'Yes',
No:'No',
},
administration:administration,
entry:entry,
equipment:equipment
}

+ 30
- 0
src/lang/index.js View File

@ -0,0 +1,30 @@
// index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
import enLocale from './en/index'
import zhLocale from './zh/index'
Vue.use(VueI18n)
const messages = {
en_US: {
...enLocale,
...elementEnLocale
},
zh_CN: {
...zhLocale,
...elementZhLocale
}
}
const i18n = new VueI18n({
// 设置语言 选项 en | zh
locale: Cookies.get('language') || 'zh_CN',
// 设置文本内容
messages
})
export default i18n

+ 42
- 0
src/lang/zh/administration.json View File

@ -0,0 +1,42 @@
{
"ProjectName": "计划名称",
"RegionName": "区域名称",
"PlanValidityPeriod": "计划有效期",
"TaskStrategy": "任务策略",
"ExecutionTaskCycle": "执行任务周期",
"ImmediateExecution": "立即执行",
"issue": "下发",
"ReplicationTask": "复制任务",
"SetPlanObject": "设置计划对象",
"SelectInspectionObject": "选择巡检对象",
"PointSetting": "点位设置",
"name": "名称",
"priority": "优先级",
"TaskType": "任务类型",
"TaskExecutionMethod": "任务执行方式",
"InspectionArea": "巡检区域",
"executeCycle": "执行周期",
"RegularExecution": "定期执行",
"PeriodicExecution": "周期执行",
"IntervalExecution": "间隔执行",
"ExecutionDate": "执行日期",
"WalkThrough": "现场巡视",
"timeSetting": "时间设置",
"SelectByWeek": "按周选择",
"MonthlySelection": "按月选择",
"date":"日期",
"time":"时间",
"interval":"间隔",
"executionTime":"执行时间",
"intervalType":"间隔类型",
"hour":"小时",
"quantity":"数量",
"nextStep":"下一步",
"PreviousStep":"上一步",
"region":"区域",
"ToBeAdded":"待添加",
"Added":"已添加",
"IsItEnabled":"是否开启",
"CopyTask":"复制任务",
"Copy":"复制"
}

+ 18
- 0
src/lang/zh/equipment/entry.json View File

@ -0,0 +1,18 @@
{
"SearchForDeviceName":"搜索设备名称",
"RightSidePrompt":"请选择左侧任意节点,添加或编辑生产设备",
"EquipmentName":"设备名称",
"DeviceType":"设备类型",
"EquipmentNumber":"设备编号",
"EquipmentNumberPrompt":"设备编号用于生产复核,需与SCADA系统中的设备编号一致",
"DisplaySorting":"显示排序",
"physicalObject":"实物ID",
"MonitoringIndexNumber":"监控索引号",
"EquipmentModel":"设备型号",
"EquipmentManufacturer":"设备厂家",
"coordinate":"坐标",
"suggestion":"建议",
"MaximumValue":"最大值",
"minimumValue":"最小值",
"save":"保存"
}

+ 30
- 0
src/lang/zh/equipment/equipment.json View File

@ -0,0 +1,30 @@
{
"DeviceType": "设备类型",
"EquipmentName": "设备名称",
"EquipmentCode": "设备编码",
"Manufacturer": "生产厂家",
"ModelSynchronization": "模型同步",
"VideoNVREncoding": "视频NVR编码",
"MainSystemNumber": "主系统编号",
"SubstationName": "变电站名称",
"SubstationCode": "变电站编码",
"areaName": "区域名称",
"UnitOfUse": "使用单位",
"EquipmentSource": "设备来源",
"dateOfManufacture": "生产日期",
"factoryNumber": "出厂编号",
"IsItARotatingWheel": "是否转轮",
"UseType": "使用类型",
"InstallationPosition": "安装位置",
"RelativeSpatialPosition": "相对空间位置",
"BelongingRobot": "所属机器人",
"ipAddress": "ip地址",
"port": "端口",
"user": "用户",
"password": "密码",
"thoroughfare":"通道",
"uploadPictures":"上传图片",
"EquipmentModel":"设备型号",
"mainSystem":"主系统",
"VideoType":"视频类型"
}

+ 55
- 0
src/lang/zh/index.js View File

@ -0,0 +1,55 @@
import administration from './administration.json'
import entry from './equipment/entry.json';
import equipment from './equipment/equipment.json';
export default {
routerIl8n: {
homePage: '首页'
},
navBar: {
IndividualCenter: '个人中心',
LayoutSetting: '布局设置',
LogOut: '退出登录',
},
settings: {
ThemeStyleSetting: '主题风格设置',
ThemeColor: '主题颜色',
title: '系统布局配置',
onTopNav: '开启 TopNav',
onTagsViews: '开启 Tags-Views',
immobilizationHeader: '固定 Header',
revealLogo: '显示 Logo',
DynamicHeading: '动态标题',
SaveConfiguration: '保存配置',
ResetConfiguration: '重置配置',
},
share: {
search: '搜索',
reset: '重置',
new: '新增',
delete: '删除',
edit: '编辑',
addTo:'添加',
cancel: '取消',
confirm: '确定',
export:'导出',
import:'导入',
PleaseEnter: '请输入',
StartTime: '开始时间',
EndTime: '结束时间',
On: '开启',
Off: '关闭',
status: '状态',
operate: '操作',
CreationTime: "创建时间",
PleaseChoose: '请选择',
to: '至',
content:'内容',
Yes:'是',
No:'否',
},
administration:administration,
entry:entry,
equipment:equipment,
}

+ 96
- 57
src/layout/components/Navbar.vue View File

@ -1,44 +1,72 @@
<template>
<div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<hamburger
id="hamburger-container"
:is-active="sidebar.opened"
class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb
id="breadcrumb-container"
class="breadcrumb-container"
v-if="!topNav"
/>
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
<div class="right-menu">
<template v-if="device!=='mobile'">
<template v-if="device !== 'mobile'">
<!-- <search id="header-search" class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
</el-tooltip>
</el-tooltip> -->
<el-tooltip content="文档地址" effect="dark" placement="bottom">
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
</el-tooltip> -->
<el-dropdown
trigger="click"
class="international"
@command="handleSetLanguage"
style="top: -13px;"
>
<span>
<svg-icon class-name="international-icon" icon-class="language" style="font-size: 22px;"/>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :disabled="language === 'zh_CN'" command="zh_CN">
中文
</el-dropdown-item>
<el-dropdown-item :disabled="language === 'en_US'" command="en_US">
English
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<screenfull id="screenfull" class="right-menu-item hover-effect" />
<!-- <el-tooltip content="布局大小" effect="dark" placement="bottom">
<size-select id="size-select" class="right-menu-item hover-effect" />
</el-tooltip> -->
</template>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<el-dropdown
class="avatar-container right-menu-item hover-effect"
trigger="click"
>
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar">
<img :src="avatar" class="user-avatar" />
<i class="el-icon-caret-bottom" />
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link>
<!-- <router-link to="/user/profile">
<el-dropdown-item>{{ $t('navBar.IndividualCenter') }}</el-dropdown-item>
</router-link> -->
<el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
<span>{{ $t('navBar.LayoutSetting') }}</span>
</el-dropdown-item>
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
<span>{{ $t('navBar.LogOut') }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@ -47,16 +75,16 @@
</template>
<script>
import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import { mapGetters } from "vuex";
import Breadcrumb from "@/components/Breadcrumb";
import TopNav from "@/components/TopNav";
import Hamburger from "@/components/Hamburger";
import Screenfull from "@/components/Screenfull";
import SizeSelect from "@/components/SizeSelect";
import Search from "@/components/HeaderSearch";
import RuoYiGit from "@/components/RuoYi/Git";
import RuoYiDoc from "@/components/RuoYi/Doc";
// import { changeLanguage } from "@/api/login";
export default {
components: {
Breadcrumb,
@ -66,48 +94,59 @@ export default {
SizeSelect,
Search,
RuoYiGit,
RuoYiDoc
RuoYiDoc,
},
computed: {
...mapGetters([
'sidebar',
'avatar',
'device'
]),
...mapGetters(["sidebar", "avatar", "device"]),
setting: {
get() {
return this.$store.state.settings.showSettings
return this.$store.state.settings.showSettings;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'showSettings',
value: val
})
}
this.$store.dispatch("settings/changeSetting", {
key: "showSettings",
value: val,
});
},
},
topNav: {
get() {
return this.$store.state.settings.topNav
}
return this.$store.state.settings.topNav;
},
},
language() {
return this.$store.getters.language
}
},
methods: {
toggleSideBar() {
this.$store.dispatch('app/toggleSideBar')
this.$store.dispatch("app/toggleSideBar");
},
async logout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = '/index';
this.$confirm("确定注销并退出系统吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$store.dispatch("LogOut").then(() => {
location.href = "/index";
});
})
}).catch(() => {});
.catch(() => {});
},
handleSetLanguage(value) {
this.$i18n.locale = value
this.$store.dispatch('app/setLanguage', value)
this.$message({ message: '设置语言成功', type: 'success' })
window.location.reload();
return
changeLanguage(value).then(response => {
window.location.reload();
});
}
}
}
},
};
</script>
<style lang="scss" scoped>
@ -116,18 +155,18 @@ export default {
overflow: hidden;
position: relative;
background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08);
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
.hamburger-container {
line-height: 46px;
height: 100%;
float: left;
cursor: pointer;
transition: background .3s;
-webkit-tap-highlight-color:transparent;
transition: background 0.3s;
-webkit-tap-highlight-color: transparent;
&:hover {
background: rgba(0, 0, 0, .025)
background: rgba(0, 0, 0, 0.025);
}
}
@ -164,10 +203,10 @@ export default {
&.hover-effect {
cursor: pointer;
transition: background .3s;
transition: background 0.3s;
&:hover {
background: rgba(0, 0, 0, .025)
background: rgba(0, 0, 0, 0.025);
}
}
}


+ 189
- 128
src/layout/components/Settings/index.vue View File

@ -1,28 +1,70 @@
<template>
<el-drawer size="280px" :visible="visible" :with-header="false" :append-to-body="true" :show-close="false">
<el-drawer
size="370px"
:visible="visible"
:with-header="false"
:append-to-body="true"
:show-close="false"
>
<div class="drawer-container">
<div>
<div class="setting-drawer-content">
<div class="setting-drawer-title">
<h3 class="drawer-title">主题风格设置</h3>
<h3 class="drawer-title">{{ $t("settings.ThemeStyleSetting") }}</h3>
</div>
<div class="setting-drawer-block-checbox">
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
<img src="@/assets/images/dark.svg" alt="dark">
<div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
<div
class="setting-drawer-block-checbox-item"
@click="handleTheme('theme-dark')"
>
<img src="@/assets/images/dark.svg" alt="dark" />
<div
v-if="sideTheme === 'theme-dark'"
class="setting-drawer-block-checbox-selectIcon"
style="display: block"
>
<i aria-label="图标: check" class="anticon anticon-check">
<svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
<path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
<svg
viewBox="64 64 896 896"
data-icon="check"
width="1em"
height="1em"
:fill="theme"
aria-hidden="true"
focusable="false"
class=""
>
<path
d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"
/>
</svg>
</i>
</div>
</div>
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
<img src="@/assets/images/light.svg" alt="light">
<div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
<div
class="setting-drawer-block-checbox-item"
@click="handleTheme('theme-light')"
>
<img src="@/assets/images/light.svg" alt="light" />
<div
v-if="sideTheme === 'theme-light'"
class="setting-drawer-block-checbox-selectIcon"
style="display: block"
>
<i aria-label="图标: check" class="anticon anticon-check">
<svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
<path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
<svg
viewBox="64 64 896 896"
data-icon="check"
width="1em"
height="1em"
:fill="theme"
aria-hidden="true"
focusable="false"
class=""
>
<path
d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"
/>
</svg>
</i>
</div>
@ -30,139 +72,158 @@
</div>
<div class="drawer-item">
<span>主题颜色</span>
<theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
<span>{{ $t("settings.ThemeColor") }}</span>
<theme-picker
style="float: right; height: 26px; margin: -3px 8px 0 0"
@change="themeChange"
/>
</div>
</div>
<el-divider/>
<el-divider />
<h3 class="drawer-title">系统布局配置</h3>
<h3 class="drawer-title">{{ $t("settings.title") }}</h3>
<div class="drawer-item">
<span>开启 TopNav</span>
<span>{{ $t("settings.onTopNav") }}</span>
<el-switch v-model="topNav" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>开启 Tags-Views</span>
<span>{{ $t("settings.onTagsViews") }}</span>
<el-switch v-model="tagsView" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>固定 Header</span>
<span>{{ $t("settings.immobilizationHeader") }}</span>
<el-switch v-model="fixedHeader" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>显示 Logo</span>
<span>{{ $t("settings.revealLogo") }}</span>
<el-switch v-model="sidebarLogo" class="drawer-switch" />
</div>
<div class="drawer-item">
<span>动态标题</span>
<span>{{ $t("settings.DynamicHeading") }}</span>
<el-switch v-model="dynamicTitle" class="drawer-switch" />
</div>
<el-divider/>
<el-divider />
<el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
<el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
<el-button
size="small"
type="primary"
plain
icon="el-icon-document-add"
@click="saveSetting"
>{{ $t("settings.SaveConfiguration") }}</el-button
>
<el-button
size="small"
plain
icon="el-icon-refresh"
@click="resetSetting"
>{{ $t("settings.ResetConfiguration") }}</el-button
>
</div>
</div>
</el-drawer>
</template>
<script>
import ThemePicker from '@/components/ThemePicker'
import ThemePicker from "@/components/ThemePicker";
export default {
components: { ThemePicker },
data() {
return {
theme: this.$store.state.settings.theme,
sideTheme: this.$store.state.settings.sideTheme
sideTheme: this.$store.state.settings.sideTheme,
};
},
computed: {
visible: {
get() {
return this.$store.state.settings.showSettings
}
return this.$store.state.settings.showSettings;
},
},
fixedHeader: {
get() {
return this.$store.state.settings.fixedHeader
return this.$store.state.settings.fixedHeader;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'fixedHeader',
value: val
})
}
this.$store.dispatch("settings/changeSetting", {
key: "fixedHeader",
value: val,
});
},
},
topNav: {
get() {
return this.$store.state.settings.topNav
return this.$store.state.settings.topNav;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'topNav',
value: val
})
this.$store.dispatch("settings/changeSetting", {
key: "topNav",
value: val,
});
if (!val) {
this.$store.dispatch('app/toggleSideBarHide', false);
this.$store.commit("SET_SIDEBAR_ROUTERS", this.$store.state.permission.defaultRoutes);
this.$store.dispatch("app/toggleSideBarHide", false);
this.$store.commit(
"SET_SIDEBAR_ROUTERS",
this.$store.state.permission.defaultRoutes
);
}
}
},
},
tagsView: {
get() {
return this.$store.state.settings.tagsView
return this.$store.state.settings.tagsView;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'tagsView',
value: val
})
}
this.$store.dispatch("settings/changeSetting", {
key: "tagsView",
value: val,
});
},
},
sidebarLogo: {
get() {
return this.$store.state.settings.sidebarLogo
return this.$store.state.settings.sidebarLogo;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'sidebarLogo',
value: val
})
}
this.$store.dispatch("settings/changeSetting", {
key: "sidebarLogo",
value: val,
});
},
},
dynamicTitle: {
get() {
return this.$store.state.settings.dynamicTitle
return this.$store.state.settings.dynamicTitle;
},
set(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'dynamicTitle',
value: val
})
}
this.$store.dispatch("settings/changeSetting", {
key: "dynamicTitle",
value: val,
});
},
},
},
methods: {
themeChange(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'theme',
value: val
})
this.$store.dispatch("settings/changeSetting", {
key: "theme",
value: val,
});
this.theme = val;
},
handleTheme(val) {
this.$store.dispatch('settings/changeSetting', {
key: 'sideTheme',
value: val
})
this.$store.dispatch("settings/changeSetting", {
key: "sideTheme",
value: val,
});
this.sideTheme = val;
},
saveSetting() {
@ -179,82 +240,82 @@ export default {
"theme":"${this.theme}"
}`
);
setTimeout(this.$modal.closeLoading(), 1000)
setTimeout(this.$modal.closeLoading(), 1000);
},
resetSetting() {
this.$modal.loading("正在清除设置缓存并刷新,请稍候...");
this.$cache.local.remove("layout-setting")
setTimeout("window.location.reload()", 1000)
}
}
}
this.$cache.local.remove("layout-setting");
setTimeout("window.location.reload()", 1000);
},
},
};
</script>
<style lang="scss" scoped>
.setting-drawer-content {
.setting-drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, .85);
font-size: 14px;
line-height: 22px;
font-weight: bold;
}
.setting-drawer-content {
.setting-drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
line-height: 22px;
font-weight: bold;
}
.setting-drawer-block-checbox {
display: flex;
justify-content: flex-start;
align-items: center;
margin-top: 10px;
margin-bottom: 20px;
.setting-drawer-block-checbox {
display: flex;
justify-content: flex-start;
align-items: center;
margin-top: 10px;
margin-bottom: 20px;
.setting-drawer-block-checbox-item {
position: relative;
margin-right: 16px;
border-radius: 2px;
cursor: pointer;
.setting-drawer-block-checbox-item {
position: relative;
margin-right: 16px;
border-radius: 2px;
cursor: pointer;
img {
width: 48px;
height: 48px;
}
img {
width: 48px;
height: 48px;
}
.setting-drawer-block-checbox-selectIcon {
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 100%;
padding-top: 15px;
padding-left: 24px;
color: #1890ff;
font-weight: 700;
font-size: 14px;
}
.setting-drawer-block-checbox-selectIcon {
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 100%;
padding-top: 15px;
padding-left: 24px;
color: #1890ff;
font-weight: 700;
font-size: 14px;
}
}
}
}
.drawer-container {
padding: 20px;
font-size: 14px;
line-height: 1.5;
word-wrap: break-word;
.drawer-container {
padding: 20px;
font-size: 14px;
line-height: 1.5;
word-wrap: break-word;
.drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, .85);
font-size: 14px;
line-height: 22px;
}
.drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
line-height: 22px;
}
.drawer-item {
color: rgba(0, 0, 0, .65);
font-size: 14px;
padding: 12px 0;
}
.drawer-item {
color: rgba(0, 0, 0, 0.65);
font-size: 14px;
padding: 12px 0;
}
.drawer-switch {
float: right
}
.drawer-switch {
float: right;
}
}
</style>

+ 4
- 1
src/main.js View File

@ -42,7 +42,8 @@ import DictData from '@/components/DictData'
import VideoPlayer from 'vue-video-player'
import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css'
// 语言
import i18n from './lang'
// 全局方法挂载
Vue.prototype.getDicts = getDicts
@ -81,6 +82,7 @@ DictData.install()
*/
Vue.use(Element, {
i18n: (key, value) => i18n.t(key, value),
size: Cookies.get('size') || 'medium' // set element-ui default size
})
@ -90,5 +92,6 @@ new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})

+ 1
- 0
src/store/getters.js View File

@ -15,5 +15,6 @@ const getters = {
topbarRouters:state => state.permission.topbarRouters,
defaultRoutes:state => state.permission.defaultRoutes,
sidebarRouters:state => state.permission.sidebarRouters,
language: state => state.app.language,
}
export default getters

+ 13
- 5
src/store/modules/app.js View File

@ -1,5 +1,5 @@
import Cookies from 'js-cookie'
import { getConfigKey,getConfigByKeys } from "@/api/system/config";
import { getConfigKey, getConfigByKeys } from "@/api/system/config";
const state = {
sidebar: {
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
@ -7,7 +7,8 @@ const state = {
hide: false
},
device: 'desktop',
size: Cookies.get('size') || 'medium'
size: Cookies.get('size') || 'medium',
language: Cookies.get('language') || 'en'
}
const mutations = {
@ -40,6 +41,10 @@ const mutations = {
},
SET_SYSTEM_PARAMS: (state, systemParams) => {
state.systemParams = systemParams
},
SET_LANGUAGE: (state, language) => {
state.language = language
Cookies.set('language', language)
}
}
@ -59,10 +64,10 @@ const actions = {
toggleSideBarHide({ commit }, status) {
commit('SET_SIDEBAR_HIDE', status)
},
// 获取系统参数配置
getSystemParams ({ commit }) {
// 获取系统参数配置
getSystemParams({ commit }) {
return new Promise((resolve) => {
getConfigByKeys(["EXTRANET_ADDRESS", "EXTRANET_FTP_VIEW_ADDRESS", "INTRANET_FTP_VIEW_ADDRESS", "VIRTUAL_RTC_MEDIAURL", "EXTRANET_MEDIA_URL", "INTRANET_MEDIA_URL","VIRTUAL_FLV_MEDIAURL","INTRANET_FLV_MEDIA_URL","EXTRANET_FLV_MEDIA_URL"]).then((res) => {
getConfigByKeys(["EXTRANET_ADDRESS", "EXTRANET_FTP_VIEW_ADDRESS", "INTRANET_FTP_VIEW_ADDRESS", "VIRTUAL_RTC_MEDIAURL", "EXTRANET_MEDIA_URL", "INTRANET_MEDIA_URL", "VIRTUAL_FLV_MEDIAURL", "INTRANET_FLV_MEDIA_URL", "EXTRANET_FLV_MEDIA_URL"]).then((res) => {
const systemParams = {}
res.data.forEach((x) => {
systemParams[x.configKey] = x.configValue;
@ -75,6 +80,9 @@ const actions = {
});
resolve()
})
},
setLanguage({ commit }, language) {
commit('SET_LANGUAGE', language)
}
}


+ 386
- 123
src/views/administration/administration.vue View File

@ -1,40 +1,48 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form-item label="计划名称">
<!-- 计划名称 -->
<el-form-item :label="$t('administration.ProjectName')">
<el-input
v-model="queryParams.taskName"
placeholder="请输入计划名称"
:placeholder="
$t('share.PleaseEnter') + ' ' + $t('administration.ProjectName')
"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="区域名称">
<!-- 区域名称 -->
<el-form-item :label="$t('administration.RegionName')">
<el-input
v-model="queryParams.areaName"
placeholder="请输入区域名称"
:placeholder="
$t('share.PleaseEnter') + ' ' + $t('administration.RegionName')
"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<!-- 状态 -->
<el-form-item :label="$t('share.status')" prop="status">
<el-select
v-model="queryParams.isenable"
placeholder="状态"
:placeholder="$t('share.status')"
clearable
style="width: 240px"
>
<el-option label="开启" value="0"></el-option>
<el-option label="不开启" value="1"></el-option>
<el-option :label="$t('share.On')" value="0"></el-option>
<el-option :label="$t('share.Off')" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计划有效期">
<!-- 计划有效期 -->
<el-form-item :label="$t('administration.PlanValidityPeriod')">
<el-date-picker
v-model="queryParams.cycleStartTime"
type="date"
placeholder="计划有效期开始时间"
:placeholder="$t('share.StartTime')"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
@ -43,17 +51,18 @@
<el-date-picker
v-model="queryParams.cycleEndTime"
type="date"
placeholder="计划有效期结束时间"
:placeholder="$t('share.EndTime')"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="创建时间">
<!-- 创建时间 -->
<el-form-item :label="$t('share.CreationTime')">
<el-date-picker
v-model="queryParams.beginTime"
type="date"
placeholder="选择日期"
:placeholder="$t('share.StartTime')"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
@ -62,26 +71,28 @@
<el-date-picker
v-model="queryParams.endTime"
type="date"
placeholder="选择日期"
:placeholder="$t('share.EndTime')"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<!-- 按钮 -->
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>{{ $t("share.search") }}</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{
$t("share.reset")
}}</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- 新增 -->
<el-col :span="1.5">
<el-button
type="primary"
@ -89,10 +100,10 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button
>{{ $t("share.new") }}</el-button
>
</el-col>
<!-- 删除 -->
<el-col :span="1.5">
<el-button
type="danger"
@ -100,7 +111,7 @@
icon="el-icon-delete"
size="mini"
@click="handleDeleteAll"
>删除</el-button
>{{ $t("share.delete") }}</el-button
>
</el-col>
</el-row>
@ -110,22 +121,44 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="计划名称" prop="taskName" />
<!-- 计划名称 -->
<el-table-column
:label="$t('administration.ProjectName')"
prop="taskName"
/>
<!-- 计划有效期开始时间 -->
<el-table-column
label="计划有效期开始时间"
:label="$t('administration.PlanValidityPeriod') + $t('share.StartTime')"
prop="cycleStartTime"
:show-overflow-tooltip="true"
min-width="100px"
/>
<!-- 计划有效期结束时间 -->
<el-table-column
label="计划有效期结束时间"
:label="$t('administration.PlanValidityPeriod') + $t('share.EndTime')"
prop="cycleEndTime"
:show-overflow-tooltip="true"
min-width="100px"
/>
<el-table-column label="创建时间" prop="beginTime" />
<el-table-column label="区域名称" prop="areaName" />
<el-table-column label="任务策略" prop="roleSort" />
<el-table-column label="执行任务周期" prop="roleSort" />
<el-table-column label="状态" align="center">
<!-- 创建时间 -->
<el-table-column :label="$t('share.CreationTime')" prop="beginTime" />
<!-- 区域时间 -->
<el-table-column
:label="$t('administration.RegionName')"
prop="areaName"
/>
<!-- 任务策略 -->
<el-table-column
:label="$t('administration.TaskStrategy')"
prop="roleSort"
/>
<!-- 执行任务周期 -->
<el-table-column
:label="$t('administration.ExecutionTaskCycle')"
prop="roleSort"
/>
<!-- 状态 -->
<el-table-column :label="$t('share.status')" align="center">
<template slot-scope="scope">
<el-switch
v-model="scope.row.isenable"
@ -135,40 +168,45 @@
></el-switch>
</template>
</el-table-column>
<!-- 操作 -->
<el-table-column
label="操作"
:label="$t('share.operate')"
align="center"
class-name="small-padding fixed-width"
width="200"
>
<template slot-scope="scope" v-if="scope.row.roleId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit"
>立即执行</el-button
>
<el-button size="mini" type="text" icon="el-icon-edit"
>下发</el-button
>
<!-- 立即执行 -->
<el-button size="mini" type="text" icon="el-icon-edit">{{
$t("administration.ImmediateExecution")
}}</el-button>
<!-- 下发 -->
<el-button size="mini" type="text" icon="el-icon-edit">{{
$t("administration.issue")
}}</el-button>
<!-- 复制任务 -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleCopy(scope.row)"
>复制任务</el-button
>{{ $t("administration.ReplicationTask") }}</el-button
>
<!-- 编辑 -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>编辑</el-button
>{{ $t("share.edit") }}</el-button
>
<!-- 删除 -->
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row.taskId)"
>删除</el-button
>{{ $t("share.delete") }}</el-button
>
</template>
</el-table-column>
@ -181,9 +219,9 @@
/>
<el-dialog :title="title" :visible.sync="dialogTableVisible">
<el-steps :active="active" style="margin-bottom: 20px">
<el-step title="设置计划对象"></el-step>
<el-step title="选择巡检对象"></el-step>
<el-step title="点位设置"></el-step>
<el-step :title="$t('administration.SetPlanObject')"></el-step>
<el-step :title="$t('administration.SelectInspectionObject')"></el-step>
<el-step :title="$t('administration.PointSetting')"></el-step>
</el-steps>
<el-form
@ -193,19 +231,43 @@
:rules="rules"
>
<div v-if="dialogTableVisibleStep == 0">
<el-form-item label="名称" prop="taskName">
<el-input v-model="dialogForm.taskName"></el-input>
<!-- 名称 -->
<el-form-item :label="$t('administration.name')" prop="taskName">
<el-input
v-model="dialogForm.taskName"
:placeholder="$t('share.PleaseEnter') + $t('administration.name')"
></el-input>
</el-form-item>
<el-form-item label="优先级" prop="priority">
<el-select v-model="dialogForm.priority" placeholder="请选择优先级">
<el-option label="优先级1" value="1"></el-option>
<el-option label="优先级2" value="2"></el-option>
<el-option label="优先级3" value="3"></el-option>
<el-option label="优先级4" value="4"></el-option>
<!-- 优先级 -->
<el-form-item :label="$t('administration.priority')" prop="priority">
<el-select
v-model="dialogForm.priority"
:placeholder="$t('administration.priority')"
>
<el-option
:label="$t('administration.priority') + 1"
value="1"
></el-option>
<el-option
:label="$t('administration.priority') + 2"
value="2"
></el-option>
<el-option
:label="$t('administration.priority') + 3"
value="3"
></el-option>
<el-option
:label="$t('administration.priority') + 4"
value="4"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务类型" prop="type">
<el-select v-model="dialogForm.type" placeholder="请选择任务类型">
<!-- 任务类型 -->
<el-form-item :label="$t('administration.TaskType')" prop="type">
<el-select
v-model="dialogForm.type"
:placeholder="$t('administration.TaskType')"
>
<el-option
:label="item.patrolTypeName"
:value="item.patrolTypeId"
@ -214,14 +276,23 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务执行方式" prop="executionMode">
<!-- 任务执行方式 -->
<el-form-item
:label="$t('administration.TaskExecutionMethod')"
prop="executionMode"
>
<el-checkbox-group v-model="dialogForm.executionMode">
<el-checkbox label="0" name="type">现场巡视</el-checkbox>
<el-checkbox label="0" name="type">{{
$t("administration.WalkThrough")
}}</el-checkbox>
<!-- <el-checkbox label="现场巡视1" name="type"></el-checkbox> -->
</el-checkbox-group>
</el-form-item>
<!-- areaIdS -->
<el-form-item label="巡检区域" prop="areaIdS">
<!-- 巡检区域 -->
<el-form-item
:label="$t('administration.InspectionArea')"
prop="areaIdS"
>
<!-- :default-checked-keys="dialogForm.areaIdS" -->
<el-tree
:data="treeData"
@ -234,22 +305,30 @@
>
</el-tree>
</el-form-item>
<el-form-item label="执行周期">
<!-- 执行周期 -->
<el-form-item :label="$t('administration.executeCycle')">
<el-radio-group v-model="dialogForm.executionStatus">
<el-radio :label="1" :value="1">定时执行</el-radio>
<el-radio :label="2" :value="2">周期执行</el-radio>
<el-radio :label="4" :value="4">间隔执行</el-radio>
<el-radio :label="1" :value="1">{{
$t("administration.RegularExecution")
}}</el-radio>
<el-radio :label="2" :value="2">{{
$t("administration.PeriodicExecution")
}}</el-radio>
<el-radio :label="4" :value="4">{{
$t("administration.IntervalExecution")
}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 执行日期 -->
<el-form-item
label="执行日期"
:label="$t('administration.ExecutionDate')"
v-if="dialogForm.executionStatus == 1"
prop="fixedStartTime"
>
<el-date-picker
v-model="dialogForm.fixedStartTime"
type="datetime"
placeholder="选择日期时间"
:placeholder="$t('administration.ExecutionDate')"
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
@ -258,40 +337,68 @@
v-if="dialogForm.executionStatus == 2"
style="margin-bottom: 20px"
>
<div class="cycle2">时间设置</div>
<el-form-item label="计划有效期">
<div class="cycle2">{{ $t("administration.timeSetting") }}</div>
<!-- 计划有效期 -->
<el-form-item
:label="$t('administration.PlanValidityPeriod')"
prop="PlanValidityPeriod"
>
<el-date-picker
v-model="dialogForm.value1"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
range-separator="-"
:start-placeholder="$t('share.StartTime')"
:end-placeholder="$t('share.EndTime')"
>
</el-date-picker>
</el-form-item>
<el-form-item label="任务执行周期">
<!-- 执行任务周期 -->
<el-form-item
:label="$t('administration.ExecutionTaskCycle')"
prop="ExecutionTaskCycle"
>
<el-select
v-model="dialogForm.region"
placeholder="请选择活动区域"
:placeholder="
$t('share.PleaseChoose') +
$t('administration.ExecutionTaskCycle')
"
>
<el-option label="按周选择" value="shanghai"></el-option>
<el-option label="按月选择" value="beijing"></el-option>
<el-option
:label="$t('administration.SelectByWeek')"
value="shanghai"
></el-option>
<el-option
:label="$t('administration.MonthlySelection')"
value="beijing"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务执行时间">
<!-- 执行日期添加 -->
<el-form-item
:label="$t('administration.ExecutionDate')"
prop="ExecutionDate"
>
<el-button type="primary" @click="executionTimeBtn"
>添加{{ executionTimeButton }}/7</el-button
>{{ $t("share.addTo") }}{{ executionTimeButton }}/7</el-button
>
</el-form-item>
<el-table
:data="executionTimeData"
style="width: 80%; margin-left: 10%"
>
<el-table-column label="日期" align="center">
<!-- 日期 -->
<el-table-column
:label="$t('administration.date')"
align="center"
>
<template slot-scope="scope">
<el-select v-model="scope.row.day" placeholder="请选择">
<el-select
v-model="scope.row.day"
:placeholder="
$t('share.PleaseChoose') + $t('administration.date')
"
>
<el-option
:label="item.name"
:value="item.name"
@ -302,16 +409,28 @@
</el-select>
</template>
</el-table-column>
<el-table-column prop="name" label="时间" align="center">
<!-- 时间 -->
<el-table-column
prop="name"
:label="$t('administration.time')"
align="center"
>
<template slot-scope="scope">
<el-time-picker
v-model="scope.row.time"
placeholder="任意时间点"
:placeholder="
$t('share.PleaseChoose') + $t('administration.time')
"
>
</el-time-picker>
</template>
</el-table-column>
<el-table-column prop="address" label="操作" align="center">
<!-- 操作 -->
<el-table-column
prop="address"
:label="$t('share.delete')"
align="center"
>
<template slot-scope="scope">
<el-button
type="text"
@ -327,34 +446,52 @@
style="margin-bottom: 20px"
>
<!-- <div class="cycle2">时间设置</div> -->
<el-form-item label="间隔">
<!-- 间隔 -->
<el-form-item
:label="$t('administration.interval')"
prop="interval"
>
<el-date-picker
v-model="dialogForm.value1"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
range-separator="-"
:start-placeholder="$t('share.StartTime')"
:end-placeholder="$t('share.EndTime')"
>
</el-date-picker>
</el-form-item>
<el-form-item label="执行时间">
<!-- 执行时间 -->
<el-form-item
:label="$t('administration.executionTime')"
prop="executionTime"
>
<el-time-picker
v-model="dialogForm.value1"
placeholder="任意时间点"
:placeholder="
$t('share.PleaseChoose') + $t('administration.executionTime')
"
>
</el-time-picker>
</el-form-item>
<el-form-item label="间隔类型">
<!-- 间隔类型 -->
<el-form-item
:label="$t('administration.intervalType')"
prop="intervalType"
>
<el-select
v-model="dialogForm.region"
placeholder="请选择间隔类型"
:placeholder="
$t('share.PleaseChoose') + $t('administration.intervalType')
"
>
<el-option label="小时" value="小时"></el-option>
<el-option :label="$t('share.hour')" value="小时"></el-option>
</el-select>
</el-form-item>
<el-form-item label="间隔数量">
<!-- 数量 -->
<el-form-item
:label="$t('administration.quantity')"
prop="quantity"
>
<el-input-number
v-model="dialogForm.num"
:min="1"
@ -362,27 +499,31 @@
</el-form-item>
</div>
<el-form-item>
<el-button @click="resetForm('ruleForm')">取消</el-button>
<el-button type="primary" @click="submitForm(0)">下一步</el-button>
<el-button @click="resetForm('ruleForm')">{{
$t("share.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm(0)">{{
$t("administration.nextStep")
}}</el-button>
</el-form-item>
</div>
<!-- 选择巡检对象 -->
<div v-if="dialogTableVisibleStep == 1">
<div class="dialogTableVisibleStep1">
<div class="dialogTableVisibleStep1-content">
<div class="leftTotle">区域</div>
<div class="leftTotle">{{ $t("administration.region") }}</div>
<div
class="dialogTableVisibleStepQurey"
style="margin-bottom: 10px"
>
<el-input placeholder="请输入内容" v-model="input3"> </el-input>
<el-input :placeholder="$t('share.content')" v-model="input3">
</el-input>
<el-button
slot="append"
icon="el-icon-search"
type="primary"
></el-button>
</div>
<!-- \:default-checked-keys="selectTreeIds" -->
<el-tree
:data="selectTreeData"
show-checkbox
@ -400,15 +541,30 @@
v-model="transferValue"
:data="transferData"
:props="{ key: 'deviceId', label: 'deviceName' }"
:titles="['待添加', '已添加']"
:titles="[
$t('administration.ToBeAdded'),
$t('administration.Added'),
]"
></el-transfer>
</div>
</div>
<div style="margin-left: 80%; margin-top: 20px">
<el-button @click="returnCancel(0)">上一步</el-button>
<el-button type="primary" @click="submitForm(1)">下一步</el-button>
<div
style="
margin-left: 80%;
margin-top: 20px;
display: flex;
justify-content: flex-end;
"
>
<el-button @click="returnCancel(0)">{{
$t("administration.PreviousStep")
}}</el-button>
<el-button type="primary" @click="submitForm(1)">{{
$t("administration.nextStep")
}}</el-button>
</div>
</div>
<!-- 点位设置 -->
<div v-if="dialogTableVisibleStep == 2">
<el-tree
:data="pointSettingsTreeData"
@ -420,15 +576,22 @@
@check="pointSettingsTreeDataHandleCheckChange"
>
</el-tree>
<el-form-item label="是否开启" prop="isenable">
<el-form-item
:label="$t('administration.IsItEnabled')"
prop="isenable"
>
<el-radio-group v-model="dialogForm.isenable">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
<el-radio :label="0">{{ $t("share.Yes") }}</el-radio>
<el-radio :label="1">{{ $t("share.No") }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button @click="returnCancel(1)">上一步</el-button>
<el-button type="primary" @click="submitForm(2)">确定</el-button>
<el-button @click="returnCancel(1)">{{
$t("administration.PreviousStep")
}}</el-button>
<el-button type="primary" @click="submitForm(2)">{{
$t("share.confirm")
}}</el-button>
</el-form-item>
</div>
<!-- <span slot="footer" class="dialog-footer">
@ -440,15 +603,15 @@
<!-- 复制弹框 -->
<el-dialog
title="复制任务"
:title="$t('administration.CopyTask')"
:visible.sync="copyDialogVisible"
width="30%"
:before-close="handleClose"
>
<el-time-picker placeholder="任意时间点"> </el-time-picker>
<el-time-picker :placeholder="$t('share.PleaseChoose')+$t('administration.time')"> </el-time-picker>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="copyDialogVisible = false"
>复制</el-button
>{{ $t('administration.Copy') }}</el-button
>
</span>
</el-dialog>
@ -524,16 +687,39 @@ export default {
transferValue: [],
copyDialogVisible: false,
rules: {
taskName: [{ required: true, message: "请输入名称", trigger: "blur" }],
taskName: [
{
required: true,
message:
this.$t("share.PleaseEnter") + this.$t("administration.name"),
trigger: "blur",
},
],
priority: [
{ required: true, message: "请选择优先级", trigger: "blur" },
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.priority"),
trigger: "blur",
},
],
type: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.TaskType"),
trigger: "blur",
},
],
type: [{ required: true, message: "请选择任务类型", trigger: "blur" }],
executionMode: [
{
type: "array",
required: true,
message: "请选择任务执行方式",
message:
this.$t("share.PleaseChoose") +
this.$t("administration.TaskExecutionMethod"),
trigger: "change",
},
],
@ -541,17 +727,92 @@ export default {
{
type: "array",
required: true,
message: "请选择巡检区域",
message:
this.$t("share.PleaseChoose") +
this.$t("administration.InspectionArea"),
trigger: "change",
},
],
fixedStartTime: [
{ required: true, message: "请选择时间", trigger: "change" },
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.ExecutionDate"),
trigger: "change",
},
],
proDeviceTreeSelect: [],
isenable:[
{ required: true, message: "请选择启用状态", trigger: "change" },
]
isenable: [
{
required: true,
message: this.$t("share.PleaseChoose") + this.$t("share.status"),
trigger: "change",
},
],
PlanValidityPeriod: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.PlanValidityPeriod"),
trigger: "change",
},
],
ExecutionTaskCycle: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.ExecutionTaskCycle"),
trigger: "change",
},
],
ExecutionDate: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.ExecutionDate"),
trigger: "change",
},
],
interval: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.interval"),
trigger: "change",
},
],
executionTime: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.executionTime"),
trigger: "change",
},
],
intervalType: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.intervalType"),
trigger: "change",
},
],
quantity: [
{
required: true,
message:
this.$t("share.PleaseChoose") +
this.$t("administration.quantity"),
trigger: "change",
},
],
},
};
},
@ -728,8 +989,8 @@ export default {
this.pointSettingsTreeData = res.data;
});
}
if(type==2){
console.log(this.dialogForm)
if (type == 2) {
console.log(this.dialogForm);
}
}
});
@ -766,7 +1027,9 @@ export default {
handleUpdate(row) {
this.dialogTableVisible = true;
},
handleClose() {},
handleClose() {
this.copyDialogVisible = false;
},
},
};
</script>


+ 207
- 122
src/views/equipment/entry.vue View File

@ -4,43 +4,74 @@
<el-col :span="5">
<div class="grid-content">
<div class="operate-left">
<el-tooltip class="item" effect="dark" content="新增" placement="top-start">
<i class="el-icon-plus" @click="add" :class="addIcon?'addIcon':''"></i>
<el-tooltip
class="item"
effect="dark"
:content="$t('share.new')"
placement="top-start"
>
<i
class="el-icon-plus"
@click="add"
:class="addIcon ? 'addIcon' : ''"
></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<i class="el-icon-delete" @click="remove" :class="deleteIcon?'deleteIcon':''"></i>
<el-tooltip
class="item"
effect="dark"
:content="$t('share.delete')"
placement="top-start"
>
<i
class="el-icon-delete"
@click="remove"
:class="deleteIcon ? 'deleteIcon' : ''"
></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="导出" placement="top-start">
<i class="el-icon-download" ></i>
<el-tooltip
class="item"
effect="dark"
:content="$t('share.export')"
placement="top-start"
>
<i class="el-icon-download"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="导入" placement="top-start">
<el-tooltip
class="item"
effect="dark"
:content="$t('share.import')"
placement="top-start"
>
<i class="el-icon-upload2"></i>
</el-tooltip>
</div>
<el-input placeholder="搜索设备名称" v-model="queryParams" style="margin-bottom: 10px;"></el-input>
<el-input
:placeholder="$t('entry.SearchForDeviceName')"
v-model="queryParams"
style="margin-bottom: 10px"
></el-input>
<el-tree
:data="treeData"
:props="defaultProps"
@node-click="handleNodeClick"
ref="tree"
ref="tree"
>
<span slot-scope="{ node, data }" class="slot-node"">
<span slot-scope="{ node, data }" class="slot-node">
<template>
<i
class="el-icon-box"
v-if="data.areaName"
style="margin-right: 5px;"
style="margin-right: 5px"
></i>
<i
class="el-icon-takeaway-box"
v-if="data.powerMainEquFlag=='Yes'"
style="margin-right: 5px;color:#409eff"
v-if="data.powerMainEquFlag == 'Yes'"
style="margin-right: 5px; color: #409eff"
></i>
<i
class="el-icon-set-up"
v-if="data.powerMainEquFlag=='No'"
style="margin-right: 5px;color:#a9c52b"
v-if="data.powerMainEquFlag == 'No'"
style="margin-right: 5px; color: #a9c52b"
></i>
<span>{{ node.label }}</span>
</template>
@ -49,60 +80,139 @@
</div>
</el-col>
<el-col :span="19">
<el-empty description="右侧功能暂未开发" v-if="!show"></el-empty>
<el-empty
:description="$t('entry.RightSidePrompt')"
v-if="!show"
></el-empty>
<div class="grid-content-right" v-if="show">
<div class="titleName">{{ titleName }}</div>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="设备名称">
<el-input v-model="form.deviceName"></el-input>
<el-form
ref="ruleForm"
:model="form"
label-width="200px"
:rules="rules"
>
<el-form-item :label="$t('entry.EquipmentName')" prop="deviceName">
<el-input
v-model="form.deviceName"
:placeholder="
$t('share.PleaseEnter') + $t('entry.EquipmentName')
"
></el-input>
</el-form-item>
<el-form-item label="设备类型">
<el-select v-model="form.devicetypeId" placeholder="请选择">
<el-option :label="item.deviceTypeName" :value="item.deviceTypeId" v-for="item in deviceTypeData" :key="item.deviceTypeId"></el-option>
<el-form-item :label="$t('entry.DeviceType')" prop="devicetypeId">
<el-select
v-model="form.devicetypeId"
:placeholder="$t('share.PleaseEnter') + $t('entry.DeviceType')"
>
<el-option
:label="item.deviceTypeName"
:value="item.deviceTypeId"
v-for="item in deviceTypeData"
:key="item.deviceTypeId"
></el-option>
<!-- deviceTypeData -->
</el-select>
</el-form-item>
<el-form-item label="设备编号">
<el-input v-model="form.deviceCode"></el-input>
<span class="serial-number">设备编号用于生产复核需与SCADA系统中的设备编号一致</span>
<el-form-item
:label="$t('entry.EquipmentNumber')"
prop="deviceCode"
>
<el-input
v-model="form.deviceCode"
:placeholder="
$t('share.PleaseEnter') + $t('entry.EquipmentNumber')
"
></el-input>
<span class="serial-number">{{
$t("entry.EquipmentNumberPrompt")
}}</span>
</el-form-item>
<el-form-item label="显示排序">
<el-input-number v-model="form.orderNum" controls-position="right" :min="0"></el-input-number>
<el-form-item :label="$t('entry.DisplaySorting')">
<el-input-number
v-model="form.orderNum"
controls-position="right"
:min="0"
></el-input-number>
</el-form-item>
<el-form-item label="实物ID">
<el-input v-model="form.phyassetId"></el-input>
<el-form-item :label="$t('entry.physicalObject')">
<el-input
v-model="form.phyassetId"
:placeholder="
$t('share.PleaseEnter') + $t('entry.physicalObject')
"
></el-input>
</el-form-item>
<el-form-item label="监控索引号">
<el-input v-model="form.monitorIndexNo"></el-input>
<el-form-item :label="$t('entry.MonitoringIndexNumber')">
<el-input
v-model="form.monitorIndexNo"
:placeholder="
$t('share.PleaseEnter') + $t('entry.MonitoringIndexNumber')
"
></el-input>
</el-form-item>
<el-form-item label="设备型号">
<el-input v-model="form.deviceModel"></el-input>
<el-form-item :label="$t('entry.EquipmentModel')">
<el-input
v-model="form.deviceModel"
:placeholder="
$t('share.PleaseEnter') + $t('entry.EquipmentModel')
"
></el-input>
</el-form-item>
<el-form-item label="设备厂家">
<el-input v-model="form.manufacturer"></el-input>
<el-form-item :label="$t('entry.EquipmentManufacturer')">
<el-input
v-model="form.manufacturer"
:placeholder="
$t('share.PleaseEnter') + $t('entry.EquipmentManufacturer')
"
></el-input>
</el-form-item>
<el-form-item label="x坐标">
<el-input-number v-model="form.positionX" controls-position="right" :min="-20" :max="20" :step="0.1"></el-input-number>
<span class="number-title">(建议最小值-20最大值20)</span>
<el-form-item :label="'x' + $t('entry.coordinate')">
<el-input-number
v-model="form.positionX"
controls-position="right"
:min="-20"
:max="20"
:step="0.1"
></el-input-number>
<span class="number-title"
>({{ $t("entry.suggestion")+" " + $t("entry.minimumValue") }}-20
{{ $t("entry.minimumValue") }}20 )</span
>
</el-form-item>
<el-form-item label="y坐标">
<el-input-number v-model="form.positionY" controls-position="right" :min="66" :step="0.1"></el-input-number>
<span class="number-title">(建议66)</span>
<!-- 建议最小值-20最大值20 -->
<el-form-item :label="'y' + $t('entry.coordinate')">
<el-input-number
v-model="form.positionY"
controls-position="right"
:min="66"
:step="0.1"
></el-input-number>
<span class="number-title">({{ $t("entry.suggestion") }}66)</span>
</el-form-item>
<el-form-item label="z坐标">
<el-input-number v-model="form.positionZ" controls-position="right" :min="-6" :max="20" :step="0.1"></el-input-number>
<span class="number-title">(建议最小值-6最大值20)</span>
<el-form-item :label="'z' + $t('entry.coordinate')">
<el-input-number
v-model="form.positionZ"
controls-position="right"
:min="-6"
:max="20"
:step="0.1"
></el-input-number>
<span class="number-title"
>({{ $t("entry.suggestion")+" " + $t("entry.minimumValue") }}-6
{{ $t("entry.minimumValue") }}20 )</span
>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
<el-button type="primary" @click="onSubmit">{{
$t("entry.save")
}}</el-button>
</el-form-item>
</el-form>
</div>
</el-col>
</el-row>
</div>
@ -138,65 +248,38 @@ export default {
handerType: 0,
boolAdd: 1,
deviceId: "",
// powerMainEquFlag: "Yes",
// parentId: "",
// devicetypeName: "A",
// delFlag:0,
// ancestors:""
},
// form: {
// ancestors: "",
// areaId: 272,
// areaIdS: null,
// areaName: "",
// boolAdd: 1,
// createBy: "",
// createTime: null,
// delFlag: "0",
// deviceCode: "1233321234",
// deviceHigh: null,
// deviceId: "",
// deviceIdAll: null,
// deviceIdListAll: null,
// deviceLength: null,
// deviceModel: "type",
// deviceName: "6",
// deviceWidth: null,
// devicetypeId: 902,
// devicetypeName: "A",
// eqbookCode: null,
// handerType: 0,
// intallPosition: null,
// manufacturer: "123",
// monitorIndexNo: "index",
// oldAreaId: "",
// oldAreaName: null,
// oldDeviceId: null,
// oldParentId: null,
// orderNum: 1,
// params: {},
// parentId: "",
// parentName: "",
// patrolTaskList: null,
// phase: "O",
// phaseNum: "",
// phyassetId: "id",
// positionX: 0,
// positionY: 66,
// positionZ: 0,
// powerMainEquFlag: "No",
// remark: null,
// searchValue: null,
// stationNo: null,
// status: "0",
// updateBy: "",
// updateTime: null,
// },
show: false,
deleteIcon: true,
addIcon: true,
deviceTypeData: [],
deviceId: "",
rules: {
deviceName: [
{
required: true,
message:
this.$t("share.PleaseEnter") + this.$t("enrty.EquipmentName"),
trigger: "blur",
},
],
devicetypeId: [
{
required: true,
message:
this.$t("share.PleaseChoose") + this.$t("enrty.DeviceType"),
trigger: "change",
},
],
deviceCode: [
{
required: true,
message:
this.$t("share.PleaseEnter") + this.$t("enrty.EquipmentNumber"),
trigger: "blur",
},
],
},
};
},
mounted() {
@ -230,7 +313,7 @@ export default {
this.addIcon = false;
} else if (data.deviceName) {
this.show = true;
this.titleName = "编辑" + data.deviceName;
this.titleName = this.$t("share.edit") + " " + data.deviceName;
this.deleteIcon = false;
this.addIcon = true;
deviceQuery(data.deviceId).then((res) => {
@ -245,7 +328,7 @@ export default {
this.show = true;
},
remove() {
this.$confirm("是否确定删除","系统提示", {
this.$confirm("是否确定删除", "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
@ -263,25 +346,27 @@ export default {
});
},
onSubmit() {
// console.log(this.form)
// return
insertMainDeviceAndCommByDeviceType(this.form).then((res) => {
if (res.code == 200) {
this.$message({
type: "success",
message: "新增成功",
this.$refs["ruleForm"].validate((v) => {
if (v) {
insertMainDeviceAndCommByDeviceType(this.form).then((res) => {
if (res.code == 200) {
this.$message({
type: "success",
message: "新增成功",
});
// this.show = false;
this.form = {
orderNum: 0,
positionX: 0,
positionY: 66,
positionZ: 0,
handerType: 0,
boolAdd: 1,
deviceId: "",
};
this.init();
}
});
// this.show = false;
this.form = {
orderNum: 0,
positionX: 0,
positionY: 66,
positionZ: 0,
handerType: 0,
boolAdd: 1,
deviceId: "",
};
this.init();
}
});
},
@ -313,7 +398,7 @@ export default {
// color: #fff !important;
// }
.grid-content-right {
padding: 0 20%;
padding: 0 10%;
}
.titleName {
font-size: 26px;


+ 346
- 144
src/views/equipment/equipment.vue View File

@ -1,20 +1,35 @@
<template>
<div class="app-container">
<el-form :inline="true" :model="queryParams" class="demo-form-inline">
<el-form-item label="设备类型">
<el-select v-model="queryParams.region" placeholder="活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-form-item :label="$t('equipment.DeviceType')">
<el-select
v-model="queryParams.region"
:placeholder="$t('share.PleaseChoose') + $t('equipment.DeviceType')"
>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
<el-form-item label="设备名称">
<el-input v-model="queryParams.user" placeholder="审批人"></el-input>
<el-form-item :label="$t('equipment.EquipmentName')">
<el-input
v-model="queryParams.user"
:placeholder="$t('share.PleaseEnter') + $t('equipment.EquipmentName')"
></el-input>
</el-form-item>
<el-form-item label="设备编码">
<el-input v-model="queryParams.user" placeholder="审批人"></el-input>
<el-form-item :label="$t('equipment.EquipmentCode')">
<el-input
v-model="queryParams.user"
:placeholder="$t('share.PleaseEnter') + $t('equipment.EquipmentCode')"
></el-input>
</el-form-item>
<el-form-item label="生产厂家">
<el-input v-model="queryParams.user" placeholder="审批人"></el-input>
<el-form-item :label="$t('equipment.Manufacturer')">
<el-input
v-model="queryParams.user"
:placeholder="$t('share.PleaseEnter') + $t('equipment.Manufacturer')"
></el-input>
</el-form-item>
<el-form-item>
<el-button
@ -22,11 +37,11 @@
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>{{ $t("share.search") }}</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{
$t("share.reset")
}}</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
@ -37,7 +52,7 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button
>{{ $t("share.new") }}</el-button
>
</el-col>
<el-col :span="1.5">
@ -48,7 +63,7 @@
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button
>{{ $t("share.edit") }}</el-button
>
</el-col>
<el-col :span="1.5">
@ -59,7 +74,7 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button
>{{ $t("share.delete") }}</el-button
>
</el-col>
<el-col :span="1.5">
@ -68,7 +83,7 @@
icon="el-icon-upload2"
size="mini"
@click="handleExport"
>导入</el-button
>{{ $t("share.import") }}</el-button
>
</el-col>
<el-col :span="1.5">
@ -78,13 +93,13 @@
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>{{ $t("share.export") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-upload" size="mini"
>模型同步</el-button
>
<el-button type="primary" plain icon="el-icon-upload" size="mini">{{
$t("equipment.ModelSynchronization")
}}</el-button>
</el-col>
</el-row>
<el-table :data="tableData" style="width: 100%">
@ -94,91 +109,219 @@
align="center"
fixed="left"
/>
<el-table-column prop="date" label="设备名称" align="center" fixed="left">
<el-table-column
prop="date"
min-width="130px"
:label="$t('equipment.EquipmentName')"
align="center"
fixed="left"
>
</el-table-column>
<el-table-column prop="name" label="设备编码" align="center" fixed="left">
<el-table-column
prop="name"
min-width="130px"
:label="$t('equipment.EquipmentCode')"
align="center"
fixed="left"
>
</el-table-column>
<el-table-column
prop="address"
label="视频NVR编码"
min-width="150px"
:label="$t('equipment.VideoNVREncoding')"
align="center"
fixed="left"
>
</el-table-column>
<el-table-column
prop="address"
label="生产厂家"
min-width="110px"
:label="$t('equipment.Manufacturer')"
align="center"
fixed="left"
>
</el-table-column>
<el-table-column
prop="address"
label="主系统编号"
min-width="150px"
:label="$t('equipment.MainSystemNumber')"
align="center"
fixed="left"
>
</el-table-column>
<el-table-column prop="address" label="变电站名称" align="center">
<el-table-column
prop="address"
min-width="140px"
:label="$t('equipment.SubstationName')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="变电站编码" align="center">
<el-table-column
prop="address"
min-width="140px"
:label="$t('equipment.SubstationCode')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="区域名称" align="center">
<el-table-column
prop="address"
min-width="140px"
:label="$t('equipment.areaName')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="设备类型" align="center">
<el-table-column
prop="address"
min-width="110px"
:label="$t('equipment.DeviceType')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="使用单位" align="center">
<el-table-column
prop="address"
min-width="130px"
:label="$t('equipment.EquipmentModel')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="设备来源" align="center">
<el-table-column
prop="address"
min-width="110px"
:label="$t('equipment.UnitOfUse')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="生产日期" align="center">
<el-table-column
prop="address"
min-width="140px"
:label="$t('equipment.EquipmentSource')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="出厂编号" align="center">
<el-table-column
prop="address"
min-width="150px"
:label="$t('equipment.dateOfManufacture')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="是否转轮" align="center">
<el-table-column
prop="address"
min-width="130px"
:label="$t('equipment.factoryNumber')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="使用类型" align="center">
<el-table-column
prop="address"
min-width="150px"
:label="$t('equipment.IsItARotatingWheel')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="安装位置" align="center">
<el-table-column
prop="address"
min-width="100px"
:label="$t('equipment.UseType')"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
min-width="100px"
:label="$t('equipment.VideoType')"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
min-width="150px"
:label="$t('equipment.InstallationPosition')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="相对空间位置x" align="center">
<el-table-column
prop="address"
min-width="180px"
:label="$t('equipment.RelativeSpatialPosition') + ' x'"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="相对空间位置y" align="center">
<el-table-column
prop="address"
min-width="180px"
:label="$t('equipment.RelativeSpatialPosition') + ' y'"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="相对空间位置z" align="center">
<el-table-column
prop="address"
min-width="180px"
:label="$t('equipment.RelativeSpatialPosition') + ' z'"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="所属机器人" align="center">
<el-table-column
prop="address"
min-width="130px"
:label="$t('equipment.BelongingRobot')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="ip地址" align="center">
<el-table-column
prop="address"
min-width="100px"
:label="$t('equipment.ipAddress')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="端口" align="center">
<el-table-column
prop="address"
min-width="100px"
:label="$t('equipment.port')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="用户" align="center">
<el-table-column
prop="address"
:label="$t('equipment.user')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="密码" align="center">
<el-table-column
prop="address"
min-width="100px"
:label="$t('equipment.password')"
align="center"
>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="200px">
<el-table-column
:label="$t('share.operate')"
align="center"
fixed="right"
width="200px"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>{{ $t("share.edit") }}</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button size="mini" type="text" icon="el-icon-s-promotion"
>通道</el-button
>
<el-button size="mini" type="text" icon="el-icon-upload"
>上传图片</el-button
>{{ $t("share.delete") }}</el-button
>
<el-button size="mini" type="text" icon="el-icon-s-promotion">{{
$t("equipment.thoroughfare")
}}</el-button>
<el-button size="mini" type="text" icon="el-icon-upload">{{
$t("equipment.uploadPictures")
}}</el-button>
</template>
</el-table-column>
</el-table>
@ -200,222 +343,281 @@
:model="dialogForm"
class="demo-form-inline"
label-position="right"
label-width="110px"
label-width="190px"
>
<el-col span="6">
<el-form-item label="区域名称">
<el-col span="8">
<el-form-item :label="$t('equipment.areaName')">
<el-select
v-model="dialogForm.region"
placeholder="请选择区域"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.areaName')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备类型">
<el-col span="8">
<el-form-item :label="$t('equipment.DeviceType')">
<el-select
v-model="dialogForm.region"
placeholder="请选择类型"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.areaName')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备名称">
<el-col span="8">
<el-form-item :label="$t('equipment.EquipmentName')">
<el-input
v-model="dialogForm.region"
placeholder="请输入设备名称"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.EquipmentName')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备编码">
<el-col span="8">
<el-form-item :label="$t('equipment.EquipmentCode')">
<el-input
v-model="dialogForm.region"
placeholder="请输入设备编码"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.EquipmentCode')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备型号">
<el-col span="8">
<el-form-item :label="$t('equipment.EquipmentModel')">
<el-input
v-model="dialogForm.region"
placeholder="请输入设备型号"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.EquipmentModel')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="生产厂家">
<el-col span="8">
<el-form-item :label="$t('equipment.Manufacturer')">
<el-input
v-model="dialogForm.region"
placeholder="请输入生产"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.Manufacturer')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="主系统" class="mainSystem">
<el-col span="8">
<el-form-item
:label="$t('equipment.mainSystem')"
class="mainSystem"
>
<el-select
v-model="dialogForm.region"
placeholder="请选择主系统"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.mainSystem')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="使用单位">
<el-col span="8">
<el-form-item :label="$t('equipment.UnitOfUse')">
<el-input
v-model="dialogForm.region"
placeholder="请输入使用单位"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.UnitOfUse')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备来源">
<el-col span="8">
<el-form-item :label="$t('equipment.EquipmentSource')">
<el-input
v-model="dialogForm.region"
placeholder="请输入设备来源"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.EquipmentSource')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="生产日期">
<el-col span="8">
<el-form-item :label="$t('equipment.dateOfManufacture')">
<el-input
v-model="dialogForm.region"
placeholder="请输入生产日期"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.dateOfManufacture')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="出厂编号">
<el-col span="8">
<el-form-item :label="$t('equipment.factoryNumber')">
<el-input
v-model="dialogForm.region"
placeholder="请输入出厂编号"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.factoryNumber')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="是否转轮">
<el-col span="8">
<el-form-item :label="$t('equipment.IsItARotatingWheel')">
<el-select
v-model="dialogForm.region"
placeholder="请选择"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.IsItARotatingWheel')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="使用类型">
<el-col span="8">
<el-form-item :label="$t('equipment.UseType')">
<el-select
v-model="dialogForm.region"
placeholder="请选择使用类型"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.UseType')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="视频类型">
<el-col span="8">
<el-form-item :label="$t('equipment.VideoType')">
<el-select
v-model="dialogForm.region"
placeholder="请选择视频类型"
:placeholder="
$t('share.PleaseChoose') + $t('equipment.VideoType')
"
style="display: block; width: 100%"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="安装位置">
<el-col span="8">
<el-form-item :label="$t('equipment.InstallationPosition')">
<el-input
v-model="dialogForm.region"
placeholder="请输入安装位置"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.InstallationPosition')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="所属机器人">
<el-col span="8">
<el-form-item :label="$t('equipment.BelongingRobot')">
<el-input
v-model="dialogForm.region"
placeholder="请输入所属机器人"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.BelongingRobot')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="相对空间位置x">
<el-col span="8">
<el-form-item
:label="$t('equipment.RelativeSpatialPosition') + 'x'"
>
<el-input
v-model="dialogForm.region"
placeholder="请输入相对空间位置x"
:placeholder="
$t('share.PleaseEnter') +
$t('equipment.RelativeSpatialPosition') +
'x'
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="相对空间位置y">
<el-col span="8">
<el-form-item
:label="$t('equipment.RelativeSpatialPosition') + 'y'"
>
<el-input
v-model="dialogForm.region"
placeholder="请输入相对空间位置y"
:placeholder="
$t('share.PleaseEnter') +
$t('equipment.RelativeSpatialPosition') +
'y'
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="相对空间位置z">
<el-col span="8">
<el-form-item
:label="$t('equipment.RelativeSpatialPosition') + 'z'"
>
<el-input
v-model="dialogForm.region"
placeholder="请输入相对空间位置 z"
:placeholder="
$t('share.PleaseEnter') +
$t('equipment.RelativeSpatialPosition') +
'z'
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="ip地址">
<el-col span="8">
<el-form-item :label="$t('equipment.ipAddress')">
<el-input
v-model="dialogForm.region"
placeholder="请输入ip地址"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.ipAddress')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="端口">
<el-col span="8">
<el-form-item :label="$t('equipment.port')">
<el-input
v-model="dialogForm.region"
placeholder="请输入端口"
:placeholder="$t('share.PleaseEnter') + $t('equipment.port')"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="用户">
<el-col span="8">
<el-form-item :label="$t('equipment.user')">
<el-input
v-model="dialogForm.region"
placeholder="请输入用户"
:placeholder="$t('share.PleaseEnter') + $t('equipment.user')"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="密码">
<el-col span="8">
<el-form-item :label="$t('equipment.password')">
<el-input
v-model="dialogForm.region"
placeholder="请输入密码"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.password')
"
></el-input>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="视频NVR编码">
<el-col span="8">
<el-form-item :label="$t('equipment.VideoNVREncoding')">
<el-input
v-model="dialogForm.region"
placeholder="请输入视频NVR编码"
:placeholder="
$t('share.PleaseEnter') + $t('equipment.VideoNVREncoding')
"
></el-input>
</el-form-item>
</el-col>
@ -443,20 +645,20 @@ export default {
pageSize: 10,
},
tableData: [],
total: 20,
total: 1,
dialogVisible: false,
title: "新增",
dialogForm: {},
};
},
mounted() {
this.init()
// this.init();
},
methods: {
init() {
getList(this.queryParams).then((res) => {
console.log(res,11111)
if(res.code==200){
console.log(res, 11111);
if (res.code == 200) {
this.tableData = res.rows;
this.total = res.total;
}


+ 1
- 0
src/views/login.vue View File

@ -130,6 +130,7 @@ export default {
};
},
login () {
// localStorage.language=JSON.stringify('zh')
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });


Loading…
Cancel
Save